C语言程序设计-文件加密_第1页
C语言程序设计-文件加密_第2页
C语言程序设计-文件加密_第3页
C语言程序设计-文件加密_第4页
C语言程序设计-文件加密_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计课程设计报告学期: 2014-2015(1)班级:计科14-1学号:10603140140391060314014041组员姓名:张浩刘润龙指导教师:李竹林完成日期:2014 年12 月文件加密与解密一 、设计目的:通过对文件的加密保护与解密,使我们能更好的掌握好高级语言程序,从而了解对程序设计的基本概念和方法,进而学会利用C语言解决一般应用问题,并为后续的专业学习奠定基础。同时增强同学们之间的团队合作精神,使我们更好的融入社会,将来成为社会有用之才!二 、 设计内容:将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密

2、时移动相反。例如:加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向 后移动5位(注:z后接a)可得到密文(乱码)fghijkl ;对该文件解密:文件内容为fghijk1 ,密钥为5,则有 fghijk1 每个字母向前移动5位(注a后接z),可得到原文abcdef。三 、设计安排:第一阶段:选择课程设计的题目第二阶段:搜寻有关课程设计的资料,查阅相关的书籍第三阶段:开始编写C语言程序第四阶段:完成C语言程序的编写,开始撰写 C语言课程设 计报告 第五阶段:完成C语言课程设计报告的撰写四 、组员分工:文件的加密、解密程序部分由张浩同学负责。课程设计报告,资料查询和程序调试修

3、改由刘润龙同学负责,最后共同总结学习体会与心得。五 、总体方案的设计思想及说明:1. 主要思想:为由总到分,由上到下的逐级分配任务的思想。通过主函数调用各个被调用的函数, 再由被调用函数通过多个循环嵌套的使用实现各自的功能,最终达到程序的要求。2. 程序说明:( 1)主函数其中包括:输入函数input(), 加密函数jiami(), 解密函数jiemi() ,显示函数show(), 。( 2)输入函数中:while(c=getchar()!=EOF) 的使用能提示使用者结束的命令,并且通过fputc(c,fp) 把一个字符c 写到由文件指针fp 指定的磁盘文件上。( 3) 加密函数中:先定义两

4、个指针,将输入的文件内容通过fputc(c+1,fp1) ;进行加密并保存到fp1 所指定的文件上。( 4)解密函数中:在进入解密系统时,需先输入解密密码,然后在打开文件进行文件里内容解密。根据加密时对每个文件内容的加密操作,所以解密时只需按照相同方法反操作即可。六 、源程序:#include #include #include#include#define N 30 #define M 30 #define E 500 void menu(void); void input(void); void jiami(void); void jiemi(void); void show(void);

5、 int judge(void);#include/* 文件名字符串数组大小* /* 解密码字符串数组大小*/* 数组大小*/* 主菜单 */* 输入数据的函数*/* 对输入数据加密的函数*/* 对已加密内容进行解密的函数*/* 显示内容的函数*/* 判断是否要继续的函数*/char code=2011810063; /* 设置进入解密系统所需的密码*/ main()int num;while(1)menu();flushall();scanf(%d, &num);switch(num)case 0:printf(n);exit(0);case 1: system(cls);input();b

6、reak;case 2: system(cls);jiami();break;case 3: system(cls);jiemi();break;case 4: system(cls);show();break;case 5: system(cls);count1();break;case 6: system(cls);count2();break;default:printf(nt 输入错误,请按规范重新输入!);break;getch();/*等待数据输入,使界面停留*/ void menu(void)printf(nnnnt*n);printf(t*n);printf(t* 1- 输入

7、2-加密3-解密4-显示0-退出*n);printf(t*n);printf(t*n);printf(nnt 0. 退出系统。n);printf(t 1. 输入信息,并写入文本文件。n);printf(t 2. 对给定的文件进行加密。n);printf(t 3. 对给定的文件进行解密。n);printf(t 4. 显示文本文件的内容。n);printf(nt 请选择(0-4):); void input(void) int n=1;FILE *fp;char c, fnameN;while(n)printf(n 请输入文件名:n);scanf(%s,fname);if (fp=fopen(fn

8、ame,w) = NULL)printf( 文件打不开!n);exit(0);Elseprintf( 请输入文件内容:(若结束请按ctrl+z)n);while(c=getchar()!=EOF) /* 输入文件的内容,以ctrl+z 结束 */fputc(c,fp); fclose(fp);printf( 文档输入并保存成功!n);printf(n 若继续创建文档,请输 Y 或 y.);n=judge();/*退出解密系统*/void jiami(void)int n=1;FILE *fp,*fp1;char c,fnameM;while(n) printf(n 请输入要加密的文件名称:n)

9、;scanf(%s,fname);if (fp=fopen(fname,r) = NULL)printf(n 无法打开文件!n 若重新输入,请输Y 或 y.);n=judge();/退出if (fp1=fopen(jiami.txt,w)=NULL)printf( 无法打开文件!n);exit(0);while(c=fgetc(fp)!=EOF)/* 按 ctrl+z 结束 */fputc(c+1,fp1); / 加密putchar(c+1);fclose(fp1);fclose(fp);remove(fname);/*删除被加密的原文件*/*/rename(jiami.txt,fname);

10、/* 加密后的文件名更改为原文件名printf(n 文档加密并保存成功!n);printf(nn 是否继续加密?若继续请按Y 或y.n);n=judge();/*退出*/void jiemi(void)int n=1;FILE *fp,*fp1;char c, fnameM,code1M;while(n)printf(n 请输入进入解密系统所需密码:);scanf(%s,code1);if(strcmp(code1,code)=0)/*比较字符串大小是否相等*/while(n)printf(n 请输入要解密的文件名:);scanf(%s,fname);if (fp=fopen(fname,r)

11、 = NULL)printf(n 文件打不开n);exit(0);if (fp1=fopen(jiemi.txt,w)=NULL) printf( 无法打开文件!n);exit(0);while(c=fgetc(fp)!=EOF)fputc(c-1,fp1);/*解密*/putchar(c-1);fclose(fp1);fclose(fp);remove(fname);/*删除被解密的原文件*/rename(jiemi.txt,fname); /*解密后的文件名更改为原文件名*/printf(n 是否继续解密?若继续请按Y 或y.);n=judge();/*退出 */else printf(n

12、 输入密码有误!请重新输入.n);void show(void)int n=1;FILE *fp;char fnameM;while(n)printf(n 请输入要显示的文件名称:);scanf(%s,fname);if (fp=fopen(fname,r)=NULL)printf(n 文件打不开,若要继续输入请按Y 或y.);n=judge(); /* 继续 */Elseprintf(n%s 的内容是:nn,fname);while(!feof(fp)/* 判断是否是文件末尾*/putchar(fgetc(fp); /*显示文件内容*/printf(n);fclose (fp);printf

13、(若要继续显示文件,请按Y或y)n=judge();/* 退出 */1.输入文件内容界面m D:Microsoft Visual c +- +CommonMSDev98BinDebugl请输入文件名;1 _tKt请输入文件内容; 若结束请按f青1Qcan you can a can as a canner can can a can殳档输入并保存成功?若继续创建文档,请输Y或山一2 .文件加密界面 , D:Mrcrosoft Vis,ual c-n+CommonM5Dev98BinDebugl.exe青输入要加密的文件名称:Ltxtlbo?2pv?db&*h*dbn!l)t?b*dboof s

14、*ribo!dhD*h? dhciS攵档加害并保存成功?曷否继续加密?若继续请按Y或山一4 .文件解密时的界面*1 D:Mierosoft Visual c+ + CommcnMSDev58BinDebtig 1 .e,输入进入解密系统所需密科二1输入密码有误,请重新输入.一请输入进入解密系统所需密码:201181.63青输入要解密的文件名can you cam a can as a canner can can a can是否维续解密?若继续请按y或y-一-5 .文件显不时的界面(1).显示加密文件,DAMicrosoft Visual c-i-+CommoriMSDv8Bin0ebugl.

15、exe青输入要显示的文件名称:L七乂七l.bt的内容是:dbGT2pvdhD?tMbo!bt?b!dl30of!dhofdbo!h!dbo 若要继续显示文件,请按Y或不.(2)显示解密文件1_ I D:Micrcscft Visual c+CommoriMSDev98BinDbugl.exe言输入要显示的文件名称L-txt的内容是:an you can a can as a cannep CAn can a can音要继续显示文件,请按y或见七、实验总结:1 .把程序写成小函数的集合,有助于程序编写、调试、维护和修改的方便。2 .在相关性不是很大的语句之间可以使用空行隔开,有利于区分各个语句的

16、具体作用,在修改程序时起到一定的作用,提高了程序的可读性。3 .在switch语句中未加getch();使得界面不会停留,直接跳回主菜单界面。4 .在输入文件时,语句scanf(%s,fname);中的%s误写成%6导致输入错误。5 .在对文件操作时需要注意关闭文件的操作,假如没有关闭,将会使在运行程 序之时,不能对文件进行删除或者重命名的操作。导致一些未知错误。6 .要及时使用清屏函数清除键盘缓冲区的文件及数据流,否则会导致不必要的错误。7 .在编写解密程序时,要注意使用两个 while进行嵌套,使得在判断是否输入 密码正确后,再判断解密的文件及是否继续解密其他文件。8 .通过这次的课程设计

17、,我明白了,不管多么复杂的程序,其实都是有许许多 多的小集合体组成的,只要肯花时间,肯认真,在编写程序的实践中,终将会将 一系列的问题解决,从而达到目的,提高自己的能力,实践是检验真理的唯一标 准!八、个人收获与体会:组员:张浩通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透 彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来, 这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。总 之,做这份作业对于我们学习 C语言有很大的帮助。在做课程设计时,由于运用了很多新知识,新的方法,还有题目更加复杂, 应用性更强,在编写过程中遇到了很多困难,幸好我们有团结的集体,通过大家 的努力、配合,我们将问题逐个解决,最终成功的完成了作业,对 c语言有了进 一步理解,这对我们说意义是相当重大的,在此感谢我组同学的支持和老师的帮助和指导。经过这次的学习、设计,我们学到了许多以前不懂的、难懂的知识。这真是 锻炼人的好机会,我很喜欢这种应用性的学习。我要感谢我的老师、我的伙伴, 你们使我懂得了许多、许多。组员:刘润龙在这次和同组人一起设计程序过程中,我深刻体会到一个人的力量是渺小的,只有大家同心协力,才能完成好一项工作。在设计统计块时,开始遇到了不少困难。如:在写程序时,因为对数组,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论