程序设计及应用课程设计.docx

上传人:b****3 文档编号:10314651 上传时间:2023-05-25 格式:DOCX 页数:11 大小:597.92KB
下载 相关 举报
程序设计及应用课程设计.docx_第1页
第1页 / 共11页
程序设计及应用课程设计.docx_第2页
第2页 / 共11页
程序设计及应用课程设计.docx_第3页
第3页 / 共11页
程序设计及应用课程设计.docx_第4页
第4页 / 共11页
程序设计及应用课程设计.docx_第5页
第5页 / 共11页
程序设计及应用课程设计.docx_第6页
第6页 / 共11页
程序设计及应用课程设计.docx_第7页
第7页 / 共11页
程序设计及应用课程设计.docx_第8页
第8页 / 共11页
程序设计及应用课程设计.docx_第9页
第9页 / 共11页
程序设计及应用课程设计.docx_第10页
第10页 / 共11页
程序设计及应用课程设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

程序设计及应用课程设计.docx

《程序设计及应用课程设计.docx》由会员分享,可在线阅读,更多相关《程序设计及应用课程设计.docx(11页珍藏版)》请在冰点文库上搜索。

程序设计及应用课程设计.docx

程序设计及应用课程设计

 

程序设计及应用课程设计

2015~2016学年第三学期

 

院(系)信息工程与自动化学院

专业自动化

学号201510401308

班级自动化153

学生姓名张超

设计时间2016年9月5日

指导教师线岩团

1.设计题目:

题目7:

文件加密

文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。

加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计。

要求:

(1)对文件的字符根据加密算法,实现文件加密。

(2)对操作给出必要的提示。

(3)对存在的file1.txt文件,必须先打开,后读写,最后关闭。

加密后的文件放在file2.txt。

(4)解密文件保存在file3.txt中。

2.设计目的:

文件的传输会有明文和密文的区别,明文发送是不安全的,易遭到黑客拦截。

现要求编写一个程序实现文本文件的加密和解密操作。

3.要求:

(1)用户可选择是“加密文件”还是“解密文件”操作;

(2)加密文件:

用户输入明文文件名(待加密文件,该文件必须在磁盘存在)和密文文件名(加密后目标文件),系统能够打开明文源文件,每次读取源文件单个字节(直至读到文件结束),并与用户输入的密钥通过异或运算进行加密,加密后存入目标文件中;

(3)解密文件:

用户输入密文文件名(待解密文件,该文件必须在磁盘存在)和明文文件名(解密后目标文件),系统能够打开密文源文件,每次读取源文件单个字节(直至读到文件结束),并与用户输入的密钥通过异或运算进行解密,解密后存入目标文件中。

一、设计思路和分析过程

/*采用结构化程序设计思想,把系统的功能划分为哪几个模块,为实现每个功能模块设计了哪些函数及函数的作用说明*/

程序分为三个模块:

主函数菜单模块、“加密文件”模块、“解密文件”模块。

“加密文件”模块对应voidfun1()、“解密文件”模块对应fun2()。

Fun1()实现“加密文件”,根据要加密文件内容与key异或得到加密文件,并保存的第二个程序中去形成新的加密文件。

fun2()计算“解密文件”,根据要解密文件内容与key异或得到解密文件,并保存的第二个程序中去形成新的解密后的文件。

二、程序流程图

三、程序代码

#include

voidfun1()

{

FILE*fp1,*fp2;

charkey,ch;

charfilename1[50],filename2[50];

printf("Pleaseinputorginalfilenamen:

");

menu21:

gets(filename1);

if((fp1=fopen(filename1,"rt"))==NULL)

{

printf("%sopenError!

",filename1);gotomenu21;

}

printf("Pleaseinputtargetfilenamen:

");

menu22:

gets(filename2);

if((fp2=fopen(filename2,"wt+"))==NULL)

{

printf("%sopenError!

",filename2);gotomenu22;

}

printf("Pleaseinputkey:

");

getche(key);

printf("\n");

while((ch=fgetc(fp1))!

=EOF)

{

ch=ch^key;

fputc(ch,fp2);

}

fclose(fp1);

fclose(fp2);

printf("Decryptionsuccess!

\n");

}

voidfun2()

{

FILE*fp1,*fp2;

charkey,ch;

charfilename1[50],filename2[50];

printf("Pleaseinputorginalfilenamen:

");

menu21:

gets(filename1);

if((fp1=fopen(filename1,"rt"))==NULL)

{

printf("%sopenError!

",filename1);gotomenu21;

}

printf("Pleaseinputtargetfilenamen:

");

menu22:

gets(filename2);

if((fp2=fopen(filename2,"wt+"))==NULL)

{

printf("%sopenError!

",filename2);gotomenu22;

}

printf("Pleaseinputkey:

");

getche(key);

printf("\n");

while((ch=fgetc(fp1))!

=EOF)

{

ch=ch^key;

fputc(ch,fp2);

}

fclose(fp1);

fclose(fp2);

printf("Decryptionsuccess!

\n");

}

voidfun3()

{

FILE*fp;

charch,filename[50];

printf("Pleaseenterthefilename:

");

gets(filename);

if((fp=fopen(filename,"r"))==NULL)

{

printf("Can'topenthisfile!

");

exit(0);}

ch=fgetc(fp);

while(ch!

=EOF)

{

putchar(ch);ch=fgetc(fp);

}

fclose(fp);

}

main()

{

menu:

printf("Plasechooseaoption:

\n");

printf("1.Encryptionafile.\n");

printf("2.Decryptionafile.\n");

printf("3.Opentheencryptionfile.\n");

printf("0.Exittheapplication.\n");

switch(getch())

{

case'1':

fun1();break;

case'2':

fun2();break;

case'3':

fun3();break;

case'0':

exit(0);

}

gotomenu;

}

四、程序的调试过程及运行结果

最后的key无法获取,使得其加密的后文件,并未加密,而是实现复制功能。

发生错误的原因:

(1)由于把gets(filenmaen1);输成了getc(filenmaen1);

(2)由于把getche(key);输成了getch(key);

 

1.程序目录:

2.文件加密:

 

3.文件解密

4.打开加密文件

5.加密解密text文件

五、课程设计总结

经过2个礼拜的程序设计学习,很大程度上的让我更深刻的理解的C语言在实际上的运用,及其灵活。

尤其在文件的存储和结构体模块,大大加强了我对概念和小细节的理解和把握。

同时也让我知道的编程的艰辛,以后的路任重而道远。

总之,这次课程设计让我收益非浅。

对我将来的学习很有帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 政史地

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

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