文本文件加密技术1.docx
- 文档编号:11007856
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:24
- 大小:498.64KB
文本文件加密技术1.docx
《文本文件加密技术1.docx》由会员分享,可在线阅读,更多相关《文本文件加密技术1.docx(24页珍藏版)》请在冰点文库上搜索。
文本文件加密技术1
《C语言程序设计》
题目文本文件加密技术1
指导教师:
姓名:
学号:
班级:
专业:
计算机科学与技术
地点:
时间:
7月1日至7月5日
一、内容
本程序可实现对文件的加密与解密,要求有图形用户界面。
细则如下:
1.能够对一个文件进行加密。
2.加密后生成一个新文件,并且原文件删除。
3.能将加密生成的文件还原成原文件。
4.能够统计文件中单词个数。
二、上机环境
操作系统:
WINXP
开发工具:
VC6.0
三、函数调用关系图
系统模块图
主函数流程图
四、各函数功能说明
1.voidmenu(void);主菜单
2.voidshuru(void);输入
3.voidjiami(void);加密
4.voidjiemi(void);解密
5.voidshow(void);显示
6.voidcount(void);统计单词数
7.intjudge(void);是否继续判断函数
5、算法描述或流程图
加密函数流程图
解密函数流程图
显示函数流程图
统计单词流程图
六、程序运行效果图
输入0—5,实现不同功能。
图4-1
若输入错误,重新输入。
图4-2
加密文件
输入要加密文件名,文档内容。
图4-3
图4-4
图4-5
解密文件
输入进入系统密码
图4-6
图4-7
图4-8
图4-9
图4-10
显示文件
图4-11
统计单词个数
图4-12
七、总结
1.对界面的要求应该尽量人性化,做到以让用户看懂为原则。
2.对于文件的使用,要分清wb,r,r+,ab,ab+,w,rb等的区别,为信息的存储做好充分准备,否则有可能会使刚输入的信息被抹掉覆盖。
3.遇到问题应尽快解决,否则会越积越多。
不懂得要不断追问,真正搞懂问题的本质。
为什么?
应该成为你的口头禅。
不要认为别人比你学得好,你不好意思问。
其实询问的过程也是互相学习的过程。
所以,不耻下问不是一句空话。
要经常和程序做的不错的同学学习,进行学术交流。
计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。
4.勇于实践,有些东西在课本上的并不能很好的被接受,反而在实践中如果遇到了并出错了,将会给你带来意想不到的收获。
所以,不要怕犯错,犯错的过程就是学习和改进的过程。
5.在使用循环语句时,一定要注意观察循环语句到达的判断语句的范围,并且分清是那些语句被包含在循环语句中,这样可以使使用界面
变得更加简便和方便。
从现在开始,在写程序时就要养成良好的习惯。
不要漏掉书中任何一个练习题,全部做完并记录下解题思路。
买几本参考书,把书上的程序例子亲手输入到电脑上实践,只有亲自输入程序才会留下印象然后发现解决问题。
6.对事不对人就事论事,明智、真诚、虚心地讨论问题,提出创新方案。
7.编程过程中要把不懂得和易犯错的地方,顺手写在语句后,用标识符括起来,有利于以后分析和观看程序。
8.对于一些较大的程序,最好把它分成几个程序块进行编写,这样才会提高效率,并且不容易混乱。
9.要站在用户的角度思考问题,尽量保证满足每个不同用户对此类程序的需求。
10.当一个程序编完并且运行成功时,不要忘记完善,把程序把给别人看看,让他们发现你没有发现的问题,毕竟自己的思维会产生定式。
这里,就体现了团结协作的作用,几个人如果都能做到这点,那么,就相当于改了几个不同的程序,那么收获不止一点了。
程序在调试的时候出了很多问题,让我认识到了自己对一些基本知识理解的不足。
不过经过不懈的努力,加上老师的耐心指点和同学们的帮助,我在规定时间内完成了本次程序设计。
虽然在运行过程中遇到了“火车车次能不能一样”的问题,但是最终想明白了。
不过由于课程设计的时间较短,还有很多我想要加入的函数功能没有加入,所以程序功能也不是很完备,如果有时间我相信能做的更好!
8、参考文献
李春葆.曾平.喻丹丹.C语言程序设计教程(第二版)清华大学出版社,2011
9、程序清单
#include
#include
#include
#include
#include
#defineM20
#defineN20
#defineW20
#defineF1000
#defineE3
charmima[]="yu123";
voidmenu(void);
voidshuru(void);
voidjiami(void);
voidjiemi(void);
voidshow(void);
voidcount(void);
intjudge(void);
main()
{
charnum;
while
(1)
{
menu();
scanf("%c",&num);
fflush(stdin);
switch(num)
{
case'0':
printf("\n");
exit(0);
case'1':
system("cls");
shuru();
printf("\n按任意键返回主菜单");
break;
case'2':
system("cls");
jiami();
printf("\n按任意键返回主菜单");
break;
case'3':
system("cls");
jiemi();
printf("\n按任意键返回主菜单");
break;
case'4':
system("cls");
show();
printf("\n按任意键返回主菜单");
break;
case'5':
system("cls");
count();
printf("\n按任意键返回主菜单");
break;
default:
printf("\n\t\t输入错误,请重新输入。
(按任意键返回主菜单)");
break;
}
getch();
fflush(stdin);
system("cls");
}
}
voidmenu(void)
{
printf("\n\n");
printf("\t********************************************************\n");
printf("\t**\n");
printf("\t*1输入2加密3解密4显示5统计*\n");
printf("\t**\n");
printf("\t********************************************************\n");
printf("\n\n");
printf("\t0.退出系统。
\n");
printf("\t1.输入信息,并写入数据文件。
\n");
printf("\t2.对给定的文件进行加密。
\n");
printf("\t3.对给定的文件进行解密。
\n");
printf("\t4.显示文本文件的内容。
\n");
printf("\t5.统计某单词在文件中出现的次数。
\n");
printf("\n\n");
printf("\t请选择(0--5):
");
}
voidshuru(void)
{
FILE*fp;
intx=1;
charch,fname[M];
while(x)
{
printf("\n\n键入要输入信息的文件名:
");
scanf("%s",fname);
if((fp=fopen(fname,"w"))==NULL)
{printf("存储空间不足!
!
!
\n");
exit(0);
}
else
{
printf("请输入文档的内容:
(以#结束)\n");
fflush(stdin);
while((ch=getchar())&&ch!
='#')
fputc(ch,fp);
fclose(fp);
}
printf("\n文档输入并保存成功!
");
printf("继续创建文件并输入信息?
(按Y继续)");
x=judge();
}
}
voidjiami(void)
{
FILE*fp,*fp1;
charc,pd,fname[M];
intx=1;
while(x)
{
printf("\n\n键入要加密的文件名称:
");
scanf("%s",fname);
fp=fopen(fname,"r");
if(fp==NULL)
{
printf("\n此文件未能打开,重新输入(按Y)?
");
fflush(stdin);x=judge();
}
else
{
pd=fgetc(fp);/*判断文件是否已进行加密步骤*/
if(pd=='$')
{
printf("\n文件已使用本程序加密!
!
!
");
printf("重新输入要加密的文件名(按Y)?
");
x=judge();
fclose(fp);
}
else
{
puts("**************");
rewind(fp);
fp1=fopen("jiami.txt","w");
if((fp1)==NULL)
{
printf("存储空间不足!
!
!
\n");
exit(0);
}
printf("\n加密后的文档:
data.txt\n\n");
while((c=fgetc(fp))!
=EOF)
{
fputc(c+520,fp1);
putchar(c+520);
}
fclose(fp);
fclose(fp1);
fp1=fopen("jiami.txt","a");
fputc('$',fp1);
fclose(fp1);
remove(fname);
rename("jiami.txt",fname);
printf("\n\n文档加密并保存成功!
");
printf("继续加密文件?
(按Y继续)");
x=judge();
}
}
}
}
voidjiemi(void)
{
FILE*fp,*fp1;
charc,pd,fname[M],mm[N];
intx=1,y=1,z=0;
while(y)
{
system("cls");
printf("\n\n请输入进入解密系统的密码:
");
scanf("%s",mm);
if(strcmp(mm,mima)==0)
{
y=0;
while(x)
{
fflush(stdin);
printf("\n\n键入要解密的文件名称:
");
scanf("%s",fname);
fp==fopen(fname,"r");
if(fp==NULL)
{
printf("\n此文件未能打开,重新输入(按Y)?
");
fflush(stdin);
x=judge();
}
else
{
fp=fopen(fname,"r");
fp1=fopen("jiemi.txt","w");
if(fp1==NULL)
{
printf("存储空间不足!
!
!
\n");
exit(0);
}
printf("\n解密后的文档:
\n\n");
while((c=fgetc(fp))&&c!
='$')
{
fputc(c-520,fp1);
putchar(c-520);
}
x=0;
fclose(fp);
fclose(fp1);
remove(fname);
rename("jiemi.txt",fname);
printf("\n\n文档解密并保存成功!
");
printf("继续解密文件?
(按Y继续)");
x=judge();
}
}
}
else
{
printf("\n\n密码输入有误!
\n");
printf("\n重新输入密码?
(按Y重新输入)\n");
y=judge();
z++;
if(z==E)
{
printf("\n对不起,您输入错误次数太多,请仔细回想密码!
\n");
y=0;
}
}
}
}
voidshow(void)
{
FILE*fp;
charfname[M];
intx=1;
while(x)
{
printf("\n\n键入要显示的文件名称:
");
scanf("%s",fname);
if((fp=fopen(fname,"r"))==NULL)
{
printf("\n此文件未能打开,重新输入(按Y)?
");
x=judge();
}
else
{
printf("\n%s的内容是:
\n\n",fname);
while(!
feof(fp))
putchar(fgetc(fp));
printf("\n");
fclose(fp);
printf("\n继续显示文件(按Y继续)?
");
x=judge();
}
}
}
voidcount(void)
{
charfname[M],word[W],
str[F],
nword[M];
inti=0,j,z=0,count=0,x=1,t;
FILE*fp;
while(x)
{
printf("\n\n键入要查找单词的文件名称:
");
scanf("%s",fname);
if((fp=fopen(fname,"r"))==NULL)
{
printf("\n此文件未能打开,重新输入(按Y)?
");
x=judge();
}
else
{
while(!
feof(fp))
str[i++]=fgetc(fp);
printf("\n键入要统计个数的单词:
");
scanf("%s",word);
t=strlen(word);
for(j=0;j word[j]=tolower(word[j]); for(j=0;j { if(isalpha(str[j])) { str[j]=tolower(str[j]); nword[z++]=str[j]; } elseif(z! =0) { nword[z]='\0'; if(strcmp(word,nword)==0) count++; z=0; } } fclose(fp); printf("\n文档中有%s的单词数为: %d\n",word,count); count=0; i=0; printf("\n继续统计单词个数(按Y继续? "); x=judge(); } } } intjudge(void) { charch; fflush(stdin); scanf("%c",&ch); if(ch=='y'||ch=='Y') return1; else return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本文件 加密 技术