收藏 分销(赏)

电子系c语言程序设计加密解密.doc

上传人:1587****927 文档编号:1362618 上传时间:2024-04-24 格式:DOC 页数:24 大小:218.11KB
下载 相关 举报
电子系c语言程序设计加密解密.doc_第1页
第1页 / 共24页
电子系c语言程序设计加密解密.doc_第2页
第2页 / 共24页
电子系c语言程序设计加密解密.doc_第3页
第3页 / 共24页
电子系c语言程序设计加密解密.doc_第4页
第4页 / 共24页
电子系c语言程序设计加密解密.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、课程设计报告课程设计名称: C语言程序设计指导教师: 学 生: 学 号: 学 院: 电子信息工程学院 完成时间: 2011年9月27日 嘉应学院电子信息工程学院C语言课程设计说明书 目录1 需求分析12总体设计23详细设计33.1 换位加密流程图33.2 换位解密流程图33.3 替代加密流程图33.4 替代解密流程图34调试与测试45测试结果56附录61 需求分析问题描述(实验指导书中已经给出) 数据的输入和输出;要求使用文件操作。文件(明文,仅限于英文字母)存放在某一已知文本文件中,加密后的文件(密文)存放在另一文件中。换位加密和解密:加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进

2、行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文;凯撒加密和解密:加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文;统计单词的个数;退出。212总体设计(程序设计总流程图,可以画带流程线的流程图)此处只需要写出一个流程图就可以了,就是总的那个流程图,请规范的画图。不需要分出2.1和2.2.byebye()miwentongji()mingwentongji()caesarde()caesaren()transpde()transpen();caidan()welcome()开始 3详细设计(各模块功能说明,

3、如函数功能、入口及出口参数说明,函数调用关系描述等这块大家问题最多了,这里不是写程序代码,而是写流程图里面各个主要函数的作用,函数之间关系的说明。以第1题为例,此处应为:3.1 换位加密流程图流程图(对流程图加以说明。可以把关键语句放在此处,加以注释说明) 建立mingwen.txt和miwen.txt文件输入密钥n输入明文到数组rk=strlen(r)j 计算数组r长度fputc(ri,mingwen) 将明文存放到mingwen.txt文件中 for i=0 to k关闭并保存mingwen.txt文件打开mingwen.txt文件space(h,r) 将明文去空格并放到数组h中m=str

4、len(h) 计算数组h长度 m%n=0 是 否 hang=m/n hang=m/n+1 j=0 for i=0 to hang for i=m to hang*n for j=0 to n hi=a+j j+ for i=0 to hangzlij=hzz+zlij=hzz+for j=o to n z=0fputc(zlji,miwen)z+输出hezfor j=0 to hang hez=zljifor i=0 to nfclose() 关闭并保存mingwen.txt文件fclose() 关闭并保存miwen.txt文件清屏 返回菜单3.2 换位解密流程图流程图(对流程图加以说明。可以

5、把关键语句放在此处,加以注释说明) 建立mingwen.txt和miwen.txt文件输入密钥n输入明文到数组rk=strlen(r)j 计算数组r长度fputc(ri,miwen) 将密文存放到miwen.txt文件中 for i=0 to k关闭并保存miwen.txt文件打开miwen.txt文件space(h,r) 将明文去空格并放到数组h中m=strlen(h) 计算数组h长度 m%n=0 是 否 hang=m/n hang=m/n+1 j=0 for i=0 to n for i=m to hang*n for j=0 to hang hi=a+j j+ for i=0 to nz

6、lij=hzz+zlij=hzz+for j=o to hang z=0fputc(zlji,mingwen)z+输出hezfor j=0 to n hez=zljifor i=0 to hangfclose(mingwen) 关闭并保存mingwen.txt文件fclose(miwen) 关闭并保存miwen.txt文件清屏 返回菜单3.3 替代加密流程图流程图(对流程图加以说明。可以把关键语句放在此处,加以注释说明)建立mingwen.txt和miwen.txt文件ch=getchar() 接收回车字符Ch=getchar() 开始输入明文ch=getchar()fputc(ch,ming

7、wen) 将明文放到mingwen.txt文件中当ch!=nfclose(mingwen) 关闭并保存mingwen.txt文件输入密钥 i直到!(i=0&iZ&chz是 否 (ch=a&ch=A&ch=0&iZ&chz是 否 (ch=a&ch=A&ch=Z) 是 否 fclose(mingwen) 关闭并保存mingwen.txt文件fclose(miwen); 关闭并保存miwen.txt文件清屏 返回菜单4调试与测试(调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施)调试程序,描述测试过程中遇到的问题和解决办法1. 文件操作时打开的文件应该及时关闭,不然不会保存,

8、在下次打开时就读不到以前存放在该文件里面的数据,而编译时却不会提示有错误。2. .函数调用时,被调函数必须在前面声明或者写在调用函数的上面,不然在编译时也不会提示错误,程序却不能执行。3. 空格的去除;采用指针的方法将去除空格的字符串放到另一个数组中4. 菜单函数的容错;用default:system(cls); caidan();实现。5. 加密解密后返回主菜单;在每个函数后面加ch=getchar();ch=getchar();system(cls);caidan();第一个h=getchar()接收回车字符,第二个ch=getchar()使屏幕上的显示暂停,并实现返回主菜单的操作。 5测

9、试结果(用几组测试数据进行测试算法设计的正确性,要包括测试数据和运行结果)。此处需要给出你输入的源码,以及程序运行后出来的结果,可以适当的截图。1:换位加密源码:Ce shi jie guo密钥:4运行结果:Cigejusiohea2换位解密源码:Cigejusiohea 密钥:4运行结果:Ceshijieguoa3凯撒加密源码:Ce shi jie guo 密钥:4运行结果:Gi wlm nmi kys4:凯撒解密源码:Gi wlm nmi kys密钥:4运行结果:Ce shi jie guo5. 明文统计6. 密文统计6附录(源程序清单和结果:源程序要加注释)此处需要些出你的源程序代码,以

10、及对主要代码的一些功能或作用说明。#include#include#includechar a=mingwen.txt,b=miwen.txt;welcome() /欢迎界面printf(nnnnnnnnntt*nn);printf(ttt简朴寨加密解密欢迎您nn);printf(tt*n);printf(nnnnnnttttttt电信101班陈仁波n);byebye() /退出界面printf(nnnnnnnnntt*n);printf(tt*nn);printf(tttt欢迎使用nn);printf(tt*n);printf(tt*n);tuichu() /退出菜单char tc;prin

11、tf(nnnnnnnnntt*nn);printf(tttt 确定退出?nn);printf(ttt 确定请按Y, 取消请按Nnn);printf(tt*n);tc=getchar();tc=getchar();if(tc=n|tc=N)system(cls);caidan();else if(tc=y|tc=Y)system(cls);byebye();elsesystem(cls);tuichu();char *space(char *a,char *b)/ 去空格 char *c = a; int n =0; while (*b!=0) if (*b!= ) *c = *b; n+; c

12、+; b+; *c=0; transpen() /换位加密FILE *mingwen,*miwen;int i,j,n,m,k,z=0,hang;char ch;char r1000,h100,zl1010,he100;if(mingwen=fopen(a,w+)=NULL)printf(不能打开文件n);exit(0);if(miwen=fopen(b,w+)=NULL)printf(不能打开文件n);exit(0);printf(请输入密钥n);scanf(%d,&n);printf(请输入明文n);ch=getchar();gets(r);k=strlen(r);for(i=0;ik;i

13、+)fputc(ri,mingwen);fclose(mingwen);if(mingwen=fopen(a,r)=NULL)printf(不能打开文件n);exit(0);space(h,r);m=strlen(h); if(m%n=0)hang=m/n;for(i=0;ihang;i+)for(j=0;jn;j+)zlij=hz;z+;elsehang=m/n+1;j=0;for(i=m;i(hang*n);i+)hi=a+j;j+;for(i=0;ihang;i+)for(j=0;jn;j+)zlij=hz;z+;z=0;for(i=0;in;i+)for(j=0;jhang;j+)he

14、z=zlji;printf(%c,hez);z+;fputc(zlji,miwen);printf(n);fclose(mingwen);fclose(miwen);printf(nn);printf(密文请查看miwen.txtnnn按enter键返回主菜单n);ch=getchar();system(cls);caidan();transpde() /换位解密FILE *mingwen,*miwen;int i,j,n,m,k,z=0,hang;char ch;char r1000,h100,zl1010,he100;if(mingwen=fopen(a,w+)=NULL)printf(不

15、能打开文件n);exit(0);if(miwen=fopen(b,w+)=NULL)printf(不能打开文件n);exit(0);printf(请输入密钥n);scanf(%d,&n);printf(请输入密文n);ch=getchar();gets(r);k=strlen(r);for(i=0;ik;i+)fputc(ri,miwen);fclose(miwen);if(mingwen=fopen(b,r)=NULL)printf(不能打开文件n);exit(0);space(h,r);m=strlen(h); if(m%n=0)hang=m/n;for(i=0;in;i+)for(j=0

16、;jhang;j+)zlij=hz;z+;elsehang=m/n+1;j=0;for(i=m;i(hang*n);i+)hi=a+j;j+;for(i=0;in;i+)for(j=0;jhang;j+)zlij=hz;z+;z=0;for(i=0;ihang;i+)for(j=0;j=0&i=a&ch=A&chZ&chz)ch=ch-26;fputc(ch,miwen);printf(%c,ch);ch=fgetc(mingwen);fclose(mingwen);fclose(miwen);printf(nn);printf(密文请查看miwen.txtnnn按enter键返回主菜单n);

17、ch=getchar();ch=getchar();system(cls);caidan();caesarde() /凯撒解密FILE *mingwen,*miwen;char ch;int i;if(mingwen=fopen(a,w+)=NULL)printf(不能打开文件n);exit(0);if(miwen=fopen(b,w+)=NULL)printf(不能打开文件n);exit(0);printf(请输入密文n);ch=getchar();ch=getchar();while(ch!=n)fputc(ch,miwen);ch=getchar();fclose(miwen);dopr

18、intf(请输入密钥(026)n);scanf(%d,&i);while(!(i=0&i=a&ch=A&ch=Z)ch=ch-i;if(ch=a-i|chA)ch=ch+26;fputc(ch,mingwen);printf(%c,ch);ch=fgetc(miwen);fclose(mingwen);fclose(miwen);printf(nn);printf(明文请查看mingwen.txtnnn按enter键返回主菜单n);ch=getchar();ch=getchar();system(cls);caidan();mingwentongji() /统计明文单词个数FILE *ming

19、wen ;char ch;int i=1;if(mingwen=fopen(a,r)=NULL)printf(不能打开文件n);exit(0);ch=fgetc(mingwen);while(ch!=EOF) if(ch= ) i+;ch=fgetc(mingwen);printf(明文中有%d个单词。n,i);printf(按enter键返回主菜单n);ch=getchar();ch=getchar();system(cls);caidan();miwentongji() /统计密文单词个数FILE *miwen ;char ch;int i=1;if(miwen=fopen(b,r)=NU

20、LL)printf(不能打开文件n);exit(0);ch=fgetc(miwen);while(ch!=EOF)if(ch= )i+;ch=fgetc(miwen);printf(密文中有%d个单词。n,i);printf(按enter键返回主菜单n);ch=getchar();ch=getchar();system(cls);caidan();caidan() /菜单函数char a;printf(nnnn);printf(tttt1.换位加密nn);printf(tttt2.换位解密nn);printf(tttt3.凯撒加密nn);printf(tttt4.凯撒解密nn);printf(

21、tttt5.明文统计nn);printf(tttt6.密文统计nn);printf(tttt7.退 出nn);printf(ttt请输入您要操作的项目编号n);a=getchar();switch(a)case1:system(cls); transpen();break;case2:system(cls);transpde();break;case3:system(cls);caesaren();break;case4:system(cls);caesarde();break;case5:system(cls);mingwentongji();break;case6:system(cls);miwentongji();break;case7:system(cls);tuichu(); break;default:system(cls); caidan();void main() /主函数char ch;welcome();printf(按enter键继续n);ch=getchar();system(cls);caidan();

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      联系我们       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号  |  icp.png浙ICP备2021020529号-1 浙B2-2024(办理中)  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服