程序设计及应用课程设计
1.设计题目:
题目:文件加密
文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计。
要求:
〔1〕对文件的字符根据加密算法,实现文件加密。
〔2〕对操作给出必要的提示。
〔3〕 对存在的文件,必须先翻开,后读写,最后关闭。加密后的文件放在。
〔4〕解密文件保存在中。
2.设计目的:
文件的传输会有明文和密文的区别,明文发送是不安全的,易遭到黑客拦截。现要求编写一个程序实现文本文件的加密和解密操作。
3.要求:   
〔1〕用户可选择是“加密文件〞还是“解密文件〞操作;
〔2〕加密文件:用户输入明文文件名〔待加密文件,该文件必须在磁盘存在〕和密文文件名〔加密后目标文件〕,系统能够翻开明文源文件,每次读取源文件单个字节〔直至读到文件完毕〕,并与用户输入的密钥通过异或运算进展加密,加密后存入目标文件中;
〔3〕解密文件:用户输入密文文件名〔待解密文件,该文件必须在磁盘存在〕和明文文件名〔解密后目标文件〕,系统能够翻开密文源文件,每次读取源文件单个字节〔直至读到文件完毕〕,并与用户输入的密钥通过异或运算进展解密,解密后存入目标文件中。
一、    设计思路和分析过程
/*采用构造化程序设计思想,把系统的功能划分为哪几个模块,为实现每个功能模块设计了哪些函数及函数的作用说明*/
fopen和open区别
程序分为三个模块:主函数菜单模块、“加密文件〞模块、“解密文件〞模块。
“加密文件〞模块对应void fun1()、“解密文件〞模块对应fun2()。
Fun1()实现“加密文件〞,根据要加密文件内容与key异或得到加密文件,并保存的第二个程序中去形成新的加密文件。
fun2()计算“解密文件〞,根据要解密文件内容与key异或得到解密文件,并保存的第二个程序中去形成新的解密后的文件。
二、程序流程图
三、程序代码
#include<stdio.h>
void fun1()
{
FILE *fp1,*fp2;
char key,ch;
char filename1[50],filename2[50];
printf(" Please input orginal filenamen:");
menu21:  gets(filename1);
if((fp1=fopen(filename1,"rt"))==NULL)
{
printf("%s open Error!",filename1);goto menu21;
}
printf(" Please input target filenamen:");
menu22:  gets(filename2);
if((fp2=fopen(filename2,"wt+"))==NULL)
{
printf("%s open Error!",filename2);goto menu22;
}
printf(" Please input key:");
getche(key);
printf("\n");
while((ch=fgetc(fp1))!=EOF)
{
ch=ch^key;
fputc(ch,fp2);
}
fclose(fp1);
fclose(fp2);
printf("Decryption success!\n");
}
void fun2()
{
FILE *fp1,*fp2;
char key,ch;
char filename1[50],filename2[50];
printf(" Please input orginal filenamen:");
menu21:  gets(filename1);
if((fp1=fopen(filename1,"rt"))==NULL)
{
printf("%s open Error!",filename1);goto menu21;
}