ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:295.24KB ,
资源ID:17170441      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-17170441.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计文件加密.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计文件加密.docx

1、C语言程序设计文件加密C语言程序设计课程设计报告 学期: 2014-2015(1) 班级: 计科14-1 学号: 19 11 组员姓名: 张浩 刘润龙 指导教师: 李竹林 完成日期: 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#include#defineN30/*文件名字符串数组大小*/#defineM30/*解密码字符串数组大小*/#defineE500/*数组大小*/voidmenu(void);/*主菜单*/voidinput(void);/*输入数据的函数*/voidjiami(void);/*对

5、输入数据加密的函数*/voidjiemi(void);/*对已加密内容进行解密的函数*/voidshow(void);/*显示内容的函数*/intjudge(void);/*判断就是否要继续的函数*/charcode=2011810063;/*设置进入解密系统所需的密码*/main()intnum;while(1) menu(); flushall();scanf(%d,&num);switch(num)case0:printf(n);exit(0);case1:system(cls);input();break;case2:system(cls);jiami();break;case3:sy

6、stem(cls);jiemi();break;case4:system(cls);show();break;case5:system(cls);count1();break;case6:system(cls);count2();break;default:printf(nt输入错误,请按规范重新输入!);break; getch();/*等待数据输入,使界面停留*/ voidmenu(void)printf(nnnnt*n);printf(t*n);printf(t*1-输入2-加密3-解密4-显示 0-退出*n);printf(t*n);printf(t*n);printf(nnt0、退出

7、系统。n);printf(t1、输入信息,并写入文本文件。n);printf(t2、对给定的文件进行加密。n);printf(t3、对给定的文件进行解密。n);printf(t4、显示文本文件的内容。n);printf(nt请选择(0-4):);voidinput(void)intn=1;FILE*fp;charc,fnameN;while(n)printf(n请输入文件名:n);scanf(%s,fname);if(fp=fopen(fname,w)=NULL)printf(文件打不开!n);exit(0); Elseprintf(请输入文件内容:(若结束请按ctrl+z)n);while(

8、c=getchar()!=EOF)/*输入文件的内容,以ctrl+z结束*/fputc(c,fp);fclose(fp); printf(文档输入并保存成功!n);printf(n若继续创建文档,请输Y或y、);n=judge();/*退出解密系统*/ voidjiami(void) intn=1;FILE*fp,*fp1;charc,fnameM;while(n)printf(n请输入要加密的文件名称:n);scanf(%s,fname);if(fp=fopen(fname,r)=NULL) printf(n无法打开文件!n若重新输入,请输Y或y、); n=judge(); /退出if(fp

9、1=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);/*加密后的文件名更改为原文件名*/printf(n文档加密并保存成功!n);printf(nn就是否继续加密?若继续请按Y或y、n);n=judge(); /*退出*/voidjiemi(void) intn=1

10、; FILE*fp,*fp1; charc,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)=NULL) printf(n文件打不开n); exit(0); if(fp1=fopen(jiemi、txt,w)=NULL) printf(无法打开文件!n); exit(0); while(c=fgetc(fp)!

11、=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输入密码有误!请重新输入、n); voidshow(void)intn=1; FILE*fp;charfnameM;while(n)printf(n请输入要显示的文件名称:); scanf(%s,fname);

12、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(若要继续显示文件,请按Y或y、);n=judge(); /*退出*/ 1、输入文件内容界面2、文件加密界面 (2)显示解密文件七、实验总结: 1、把程序写成小函数的集合,有助于程序编写、调试、维护与修改的方便。 2、在

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

14、再判断解密的文件及就是否继续解密其她文件。 8、通过这次的课程设计,我明白了,不管多么复杂的程序,其实都就是有许许多多的小集合体组成的,只要肯花时间,肯认真,在编写程序的实践中,终将会将一系列的问题解决,从而达到目的,提高自己的能力,实践就是检验真理的唯一标准!八、个人收获与体会:组员:张浩通过这次的作业我觉得最大的收获就是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都就是很有益处的。总之,做这份作业对于我们学习C语言有很大的帮助。在做课程设计时,由于运用了很多新知识,新的方法,还有

15、题目更加复杂,应用性更强,在编写过程中遇到了很多困难,幸好我们有团结的集体,通过大家的努力、配合,我们将问题逐个解决,最终成功的完成了作业,对c语言有了进一步理解,这对我们说意义就是相当重大的,在此感谢我组同学的支持与老师的帮助与指导。经过这次的学习、设计,我们学到了许多以前不懂的、难懂的知识。这真就是锻炼人的好机会,我很喜欢这种应用性的学习。我要感谢我的老师、我的伙伴,您们使我懂得了许多、许多。组员:刘润龙 在这次与同组人一起设计程序过程中,我深刻体会到一个人的力量就是渺小的,只有大家同心协力,才能完成好一项工作。在设计统计块时,开始遇到了不少困难。如:在写程序时,因为对数组,指针不熟悉,而出现了不少错误。经过学习,讨论,最后克服了这些困难。经过这次设计,我对数组,指针的知识与使用又上了一个台阶。数组与指针那么地方便,它真就是C语言的重点,精华所在。所以,在以后的学习中,我更应抓紧对指针的学习。 我想有了这样一次体验,在以后漫长的人生路上,我们在面对许多意想不到的困难与挫折时,我们会更从容的去面对。通过这次合作,我使自己的动手能力与与人沟通的能力得到了提高,这将使我在以后的的道路上走的更稳,收获更多。所以,我们应感谢老师的良苦用心。同时我也知道了我们随时都要培养自己的动手能力,只有这样,才能更好的适应这个日新月异的飞速发展的社会。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2