西电c语言课程设计报告Word文档格式.docx
《西电c语言课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《西电c语言课程设计报告Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
![西电c语言课程设计报告Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/a3106bdf-8df5-4b5c-bba9-fcbcac6a97aa/a3106bdf-8df5-4b5c-bba9-fcbcac6a97aa1.gif)
菜单设计、加密解密主程序、密码修改功能、最终调试。
2初步设计
将每个分块下发给组员,组员进行粗略的程序编译,再根据各分块难度不同增减任务量。
3编写代码
组员将各自代码编译完成,并确保独立运行成功。
4程序整合、调试
将各分块整合,编译运行,尝试输入多组数据,测试结果是否与预期相同。
如果不同,那么查找问题并修改代码。
最终形成合格的程序。
3.功能模块图
3.数据结构设计
没开数据结构课不会写。
。
现学现写也来不及了〒_〒
4.算法设计
同4。
6.程序代码
#include<
stdio.h>
string.h>
conio.h>
stdlib.h>
//清屏函数的头文件
voidf1(void);
//主界面函数
voidrode(int);
//返回菜单函数
intsystem(constchar*string);
//清屏函数声明
voidf2(void);
//声明f2
voidf3(void);
voidf4(void);
//开始时得解开密码函数
intmima=123456,n;
//全局变量
voidmain()
{
inta,i,b;
a=mima;
b=3;
printf("
此程序设置了初始密码!
请输入6位数字密码:
\n"
);
for(i=0;
i<
3;
i++)//三次输入密码机会
{
scanf("
%d"
&
n);
if(a==n)//密码输入正确
进入\n"
system("
cls"
//清屏函数
f1();
//调用f1函数
}
else//密码输入错误
if(b-1==0)
exit(0);
//退出
密码好像不太对哦,就剩下%d次机会了!
b-1);
b=b-1;
}
voidf1()//主界面函数
chars;
//定义S,即操作选项
******************************文本加密软件**************************\n"
*************************************************\n"
**作者**\n"
**肖峰**\n"
**许云松**\n"
**黄辉**\n"
**平措朗杰**\n"
*请从下面的菜单中选择你要进行的操作*\n"
*a.文件加密*\n"
*b.文件解密*\n"
*c.更改密码*\n"
*z.退出系统*\n"
s=getche();
if(s=='
a'
)
system("
//清屏
f2();
//调用函数f2
b'
f3();
//调用函数f3
c'
f4();
//调用函数f4
z'
//退出系统
voidrode(intk)//返回菜单函数
charc;
//定义c,即操作选项
接下来你希望干什么啊\n"
a.继续当前菜单\nb.回到主菜单\n"
c=getch();
if(c=='
f1();
{
if(k==2)
f2();
if(k==3)
f3();
if(k==4)
f4();
}
voidf2()
FILE*fp1,*fp2;
charf1[20],f2[20],p[6];
registercharch;
inti=0,j;
输入加密文件:
"
%s"
f1);
if((fp1=fopen(f1,"
r"
))==NULL)
printf("
\n文件无法打开!
请返回"
rode
(2);
else
\n输入密钥:
p);
j=strlen(p);
\n输入加密后的文件:
f2);
if((fp2=fopen(f2,"
w"
while(j>
=0)
ch=fgetc(fp1);
while(!
feof(fp1))
fputc(ch^p[i>
=j?
i=0:
i++],fp2);
ch=fgetc(fp1);
j--;
加密成功!
fclose(fp1);
fclose(fp2);
rode
(2);
voidf3()
输入解密文件:
rode(3);
}
\n输入解密后的文件:
while(j>
解密成功!
rode(3);
voidf4()
intpas,ch,h=3,t,j;
重置密码前必须验证原密码。
请输入6位数字原密码:
for(j=0;
j<
j++)//三次输入密码机会
scanf("
t);
if(mima==t)//密码输入正确
while
(1)
{
while
(1)
{
printf("
请输入新密码:
scanf("
pas);
if(pas>
99999&
&
pas<
1000000)//密码为六位数
break;
else//密码非六位数
{
printf("
输入格式不正确,请输入六位数字\n"
continue;
}
}
printf("
请再次输入新密码:
scanf("
ch);
if(pas==ch)//两次新密码输入一致
break;
//跳出循环
else//两次新密码输入不一致
两次新密码输入不一致\n"
continue;
}
printf("
恭喜你,密码修改成功\n"
mima=pas;
//修改全局变量密码
rode(4);
//调用rode函数
else//密码输入错误
if(h-1==0)
exit(0);
抱歉,密码错误,您还有%d次机会:
h-1);
h=h-1;
7.程序运行结果
挺成功的,完全符合标准
8.编程中遇到的困难及解决方法
按时间顺序来说吧。
1思考不周全,比如忘记必须是六位密码,忘记设置变量等。
2整合的困难,因为组员各自负责自己的分块,单独运行成功,但放到整个函数中会碰到变量形式、名称不统一,没有考虑与主函数的衔接等,方法就是一点点改…
3细节不注意,导致修改特别困难,比如字符输入选择了getchar而不是gerche,因为对getchar理解不够,直到昨天晚上才找到了问题。
还有套用函数调用时,没有将调用语句放到整个函数最后,导致运行调用函数后,这个函数后边的语句也运行了,诸如此类,数不胜数。
9.总结心得及建议
通过这个简单的程序,我们认识到了自己所学浅薄,基础很差,加上没有经验,搞得一团糟,从这个程序身上,我们体会到了细心的重要,体会到了修改程序的枯燥,走出了编程的第一步。
建议么,人傻还是要多读书啊,多学学知识才能在广大程序员中占位脚跟!
10.组内成员分工和贡献评价
分工:
黄辉:
提出大体思路,设计主菜单,参与程序修改。
许云松:
编写密码修改程序,参与程序修改,写总结报告。
肖峰:
编写加密解密程,参与程序修改。
平措朗杰:
编写次菜单程序。
贡献评价(百分比):
32%
30%
8%