900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > c语言文件加密解密单词统计 C语言文件加密解密及单词统计程序.doc

c语言文件加密解密单词统计 C语言文件加密解密及单词统计程序.doc

时间:2020-11-24 02:42:22

相关推荐

c语言文件加密解密单词统计 C语言文件加密解密及单词统计程序.doc

C语言文件加密解密及单词统计程序.doc

(10页)

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

15.9 积分

 高级语言程序设计 课程设计学 院 计算机工程学院 班 级 计 算1014 姓 名 学 号 成 绩 指导老师 汪志华 6 月 30 日高级语言程序设计课程设计报告一、 设计目的: 通过课程设计,学会把相关的理论知识和实际应用相结合,锻炼了独立实践的能力;学会了查阅与设计相关资料的能力。二、 设计内容:课题题目:使用C语言设计程序,产生如下界面,1-5对应不同功能,若不用汉字,可用拼音或英文表示。**************************************************************** ** 1--输入 2--加密 3--解密 4--显示 5—统计 0--退出 * * **************************************************************** 请选择(0--5):1. 退出系统。2. 输入信息,并写入数据文件。3. 对给定的文件进行加密。4. 对给定的文件进行解密。5. 显示文本文件的内容。6. 统计某单词在文件中出现的次数。三、 设计思想:(1)程序中由主函数中引用函数,实现了结构化设计的思想,保证思路清晰。程序中大量使用文件操作,配合各种复合语句的相互嵌套,使用自顶向下、逐步求精逐步开发设计。具体思想:1、采用main主函数构造框架,再实现各个函数的调用。在主函数中,利用switch语句实现对各个项目的的函数调用。并且利用到清屏函数实现调用函数后的界面的清洁性。这样程序具易读性,并且使用起来的界面效果较好。2、主函数中的各个调用函数的设计。gs、shuru、mi、、xianshi 、tongji分别实现主菜单调用、输入、加密、解密、显示、统计单词数的功能。2.1主菜单函数: void gs(void);显示基本菜单界面边界,不易使主函数看起来庞大,简单的打印输出即可设计。2.2输入函数: void shuru(void); 利用文件的操作,用getchar函数从键盘读取数据,再用fputc函数将数据存放到文件中即可实现。2.3加密解密函数: void mi(void);先读取原文件数据,将源文件数据经过特定条件转换后存放到另外一个文件(比如名为“jiami.txt”)中去。加密过程,即将读取(可使用fgetc函数)文件的字符根据特定表达式转化为另外字符实现加密。存到另一个文件(“123.txt”) 后关闭文件,最后利用remove、rename两个函数实现删除原文件,将另一个文件(“123.txt”)命名为原文件名。这样就剩一个加解密的文件。2.4显示函数 void show(void);利用文件的操作,用fgetc函数从文件读取数据,再用putchar函数将数据显示到屏幕即可实现。2.5计单词数函数 void tongji(void);从文件中读取字符串,存到数组中。接着从字符串中读取一个的英文单词,出来与要找的单词比较(可用strcmp函数),定义一个计数的变量实现单词出现次数。但是由于英文单词大写与小写都是同一个词,由此可以统一将所有字符用tolower函数转换为小写字母。在取单词过程中,可以利用islower函数判断取得的字符释是否是小字母。如果是则一直存到另一个字符数组,直到不是字母则可以暂停读取。获得的一个数组所代表的字符串就是读出的一个单词,马上将单词同统计的词比较计算。比较结束则继续读取下一个字符,重新存放字母到字符数组,一直做上面步骤到读取结束。最后显示打印要查找的单词总个数。(2)程序源文件#include#include#include#includevoid gs(void); //显示表头void shuru(FILE *,char []); //输入文本于所操作文件void mi(FILE *,int,char []); //加密和解密的函数void xianshi(FILE *); //显示文件中的内容void tongji(FILE *,int); //统计文件中的某个单词的总数main(){ int x; char m,name[20]; FILE *p; gs(); //显示刚开始时的表头 printf("请输入你选择的序号:\n"); scanf("%d",&x); while(x) { printf("请输入要操作的文件名(如:a.txt):\n"); scanf("%s",name); if(x!=1) //判断文件的打开方式 if((p=fopen(name,"r+"))==NULL) { printf("不能打开文件!\n"); exit(0); } if(x==1) if((p=fopen(name,"w"))==NULL) { printf("不能打开文件!\n"); exit(0); } switch(x) { case 1: shuru(p,name); break; case 2: mi(p,x,name); break; case 3: mi(p,x,name); break; case 4: xianshi(p); break; case 5: tongji(p,x); break; case 6: tongji(p,x); break; } flushall(); printf("继续选择?(y/n)\n"); scanf("%c",&m); if(m=='n') break; system("cls"); gs(); //对每次清屏后显示表头 printf("请输入你选择的序号:\n"); scanf("%d",&x); } exit(0);}void gs() //表头函数{ int i,j; for(i=1;i<=5;i++) { if(i==1||i==5) for(j=1;j<=78;j++) printf("*"); if(i==2||i==4) for(j=1;j<=78;j++) { if(j==1||j==78) printf("*"); else printf(" "); } if(i==3) printf("* 1--输入 2--加密 3--解密" " 4--显示 5--单词统计 6--各词统计 0--退出 *"); printf("\n"); }}void shuru(FILE *wj,char a[20]) { char c; printf("请输入文本:\n"); while((c=getchar())!=EOF) fputc(c,wj); fclose(wj);}void mi(FILE *wj,int i,char a[20]){ char c; FILE *mi; if((mi=fopen("123.txt","w+"))==NULL) { printf("不能打开文件!\n"); exit(0); } while(!feof(wj)) { fscanf(wj,"%c",&c); if(i==2) fputc(c+1,mi); if(i==3) fputc(c-1,mi); } if(i==2) printf("已成功加密!\n"); if(i==3) printf("已成功解密!\n"); fclose(wj); fclose(mi); flushall(); remove(a); rename("123.txt",a);}void xianshi(FILE *wj){ int i; char a[100]; for(i=0;!feof(wj);i++) { fscanf(wj,"%c",&a[i]); printf("%c",a[i]); } fclose(wj);}void tongji(FILE *wj,int y){ int i,j=0,k=0,l=0,n,m=0,e[20]={0},s; char b[20][50]={' '},c[20][50],d[100]={' '},f[50]; for(s=0;!feof(wj);s++) { fscanf(wj,"%c",&d[s]); d[s]=tolower(d[s]); } for(i=0;i

天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。