




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件加密系统第一章课程设计目的和要求1.1设计目的通过课程设计,使学生了解高级程序设计语言的结构,逐渐培养学生的编程能力、用计算机解决实际问题的能力,掌握根本的程序设计过程和技巧,掌握根本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实根底。程序设计的主要任务是要求学生遵循软件开发过程的根本标准,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试程序及编写设计报告。本课程设计的目标:
1.稳固《高级语言程序设计》课程学习的内容和加深学生对根本知识的理解和掌握。
2.掌握编程和程序调试的根本技能。
3.掌握软件设计的方法。
4.提高运用程序设计解决实际问题的能力。5.培养独立思考、综合运用所学有关相应知识的能力。6.强化上机动手编程能力,闯过理论与实践相结合的难关!1.2设计要求1.分析课程设计题目的要求,根据所要求的程序功能,画出程序的流程图。对系统功能模块进行分析,写出详细设计说明文档。对程序源代码进行调试与测试,使其能正确运行。设计完成的软件要便于操作和使用。设计完成后提交课程设计报告。第二章课程设计任务内容2.1背景加密技术是电子商务采取的主要平安保密措施,是最常用的平安保密手段,利用技术手段把重要的数据变为乱码〔加密〕传送,到达目的地后再用相同或不同的手段复原〔解密〕。加密技术包括两个元素:算法和密钥。算法是将普通的文本〔或者可以理解的信息〕与一窜数字〔密钥〕的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。在平安保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯平安。2.2功能需求实现对文件的加密与解密,要求有图形用户界面。细那么如下:1.能够对一个文件进行加密。2.加密后生成一个新文件,并且原文件删除。3.能将加密生成的文件复原成原文件。4.能够统计文件中单词个数。第三章模块设计3.1系统模块包括四个模块:加密模块,解密模块,显示模块,统计单词模块图3-1系统模块图3.2主函数流程图在主函数中,利用switch语句实现对各个工程的函数调用。图3-2主函数流程图3.3函数流程图3.3.1加密函数流程图先读取原文件数据,将原文件称需经过特定条件转换后存放到另一个文件夹。加密过程,即将读取文件的字符根据加密公式转化为别的字符实现加密。但由于后面的解密重要判断是否已经是加密文件,所以在文件末尾做记号标记。存到另一文件夹后关闭文件,最后用remove,rename两个函数实现删除源文件,将加密后文件命名为原文件名,这样只剩下一个加密文件了。图3-3加密函数流程图解密函数流程图先判断是否已经加密,这时要利用加密函数中使用的标识符,可以用fseek函数读取文件末尾的标识符判断是否已加密。假设是那么解密,否那么不解密。图3-4解密函数流程图显示函数流程图 利用文件的操作,用fgetc函数从文件读取数据,再用putchar函数将数据显示到屏幕。图3-5显示函数流程图统计单词流程图从文件中读取字符串,存到数组中。接着从字符串中读取一个英文单词,出来与要统计的单词比拟〔strcmp函数〕,定义一个计数的变量实现记录单词出现的次数。 图3-6统计单词流程图第四章软件使用说明4.1进入界面输入0—5,实现不同功能。图4-1假设输入错误,重新输入。图4-24.2加密文件输入要加密文件名,文档内容。图4-3图4-4图4-54.3解密文件输入进入系统密码图4-6图4-7图4-8图4-9图4-104.4显示文件图4-114.5统计单词个数图4-12第五章课程设计心得与体会5.1关于对程序编写的心得这个程序看起来挺简单的,但对于对C语言还是初学者的我,还是显得有些难度的。在编写的过程中,由于粗心经常出现一些比拟简单的错误,比方遗漏逗号、双引号、小括号,以及工程名称,从而导致出现乱码。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起!但是,通过上网查询还有在老师、学长和同学的帮助下,我最终还是完成了程序的编写。5.2对于课程设计的心得体会经过三周的编程设计,我认识到编程是一项很慎密的工作,来不得一点马虎,否那么就会给编程工作带来很多不必要的麻烦。这次的课程设计加深了我对C语言的理解,并且提高了我查阅相关参考资料和独立分析解决问题以及自己上机动手的能力。课程设计为学生提供了一个既动手又动脑,独立实践的时机,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。应实际,实践编程的能力。附录1:参考文献1.谭浩强:C程序设计,清华大学出版社,2005年7月第三版2.谭浩强:C++程序设计,清华大学出版社,2004年6月第一版3.谭浩强,张基温,唐永炎:编著,C语言程序设计教程.北京:高等教育出版社,19924.谭浩强:C程序设计题解与上机指导〔第二版〕.北京:清华大学出版社1999附录2:程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include<conio.h>#defineM20/*宏定义文件名字符串数组大小*/#defineN20/*宏定义解密码字符串数组大小*/#defineW20/*宏定义单词字符串数组大小*/#defineF1000/*宏定义文件读取字符串数组大小*/#defineE3/*宏定义解密系统密码输入次数*/charmina[]="ulinchen";/*初始化解密系统进入密码*/voidmenu(void);/*主菜单*/voidshuru(void);/*输入*/voidjiami(void);/*加密*//*函数原型*/voidjiemi(void);/*解密*/voidshow(void);/*显示*/voidcount(void);/*统计单词数*/intjudge(void);/*是否继续判断函数*/main(){charnum;while(1){menu();/*显示主菜单*/scanf("%c",&num);/*输入数字0--5*/fflush(stdin);/*去除数据流,防止恶意输入字符串,直接操作以第一个字符后面字符串为名的文件*/switch(num)/*选择语句*/{case'0':/*选择0*/printf("\n");exit(0);case'1':/*选择1*/system("cls");shuru();/*输入*/printf("\n按任意键返回主菜单");break;case'2':/*选择2*/system("cls");jiami();/*加密*/printf("\n按任意键返回主菜单");break;case'3':/*选择3*/system("cls");jiemi();/*解密*/printf("\n按任意键返回主菜单");break;case'4':/*选择4*/system("cls");show();/*显示*/printf("\n按任意键返回主菜单");break;case'5':/*选择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--统计0--退出*\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;/*定义x=1,输入*/charch,fname[M];while(x){printf("\n\n键入要输入信息的文件名:");scanf("%s",fname);/*输入文件名*/if((fp=fopen(fname,"w"))==NULL)/*假设不能翻开*/{printf("存储空间缺乏!!!\n");exit(0);}else{printf("请输入文档的内容:(以Ctrl+z结束)\n");fflush(stdin);while((ch=getchar())!=EOF)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);if((fp=fopen(fname,"r"))==NULL){printf("\n此文件未能翻开,重新输入〔按Y〕?");fflush(stdin);x=judge();}else{if(!fseek(fp,-(long)sizeof(char),SEEK_END))pd=fgetc(fp);/*判断文件是否已进行加密步骤*/if(pd=='$'){printf("\n文件已使用本程序加密!!!");printf("重新输入要加密的文件名〔按Y〕?");x=judge();fclose(fp);}else{rewind(fp);if((fp1=fopen("jiami.txt","w"))==NULL){printf("存储空间缺乏!!!\n");exit(0);}printf("\n加密后的文档:\n\n");while((c=fgetc(fp))!=EOF){fputc(c+520,fp1);/*加密公式“c+520”*/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],mima[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);if((fp==fopen(fname,"r"))==NULL){printf("\n此文件未能翻开,重新输入〔按Y〕?");fflush(stdin);x=judge();}else{if(!fseek(fp,-(long)sizeof(char),SEEK_END))pd=fgetc(fp);if(pd!='$'){printf("\n文件未曾使用本程序加密!!!");printf("重新输入要加密的文件名〔按Y〕?");x=judge();fclose(fp);}else{rewind(fp);if((fp1=fopen("jiemi.txt","w"))==NULL){printf("存储空间缺乏!!!\n");exit(0);}printf("\n解密后的文档:\n\n");while((c=fgetc(fp))!='$'){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){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仁爱版九年级下册英语家长指导计划
- 经典诵读在企业培训中的应用心得体会
- 四年级学生阅读能力提升计划
- 土工合成材料在堤坝建设中的使用措施
- 小学社会责任教育工作计划
- 量化分析员服务合同
- 食品安全监测小组职责
- 铁路建设中的关键难点及应对措施
- 停车场物业管理的职责与流程
- 讯问答复协议
- 2025届河南省许昌市名校高三下学期第二次模拟考试英语试题(原卷版+解析版)
- 融资租赁 测试题及答案
- 2025中国储备粮管理集团有限公司贵州分公司招聘22人笔试参考题库附带答案详解
- 蛛网膜下腔出血介入术后护理
- 千川合同协议
- 制造业智能排产系统(课件)
- 婚前拆迁婚内协议书
- 常州文化测试试题及答案
- 会考地理综合题答题模板+简答题归纳-2025年会考地理知识点梳理
- 预防VTE质控汇报演讲
- 水泵工初级考试题及答案
评论
0/150
提交评论