河南理工大学
计算机科学与技术学院课程设计报告
2010 — 2011学年第一学期
课程名称
设计题目
学生姓名
学号
专业班级
指导教师
2011 年01 月08 日
目录
●封面 (01)
●设计任务书 (03)
●功能设计 (03)
●结构流程图 (05)
●程序实现代码 (05)
●程序设计总结 (08)
●个人总结 (12)
●致谢 (13)
●参考文献 (13)
课程设计任务书
功能设计
●设计目的
本课程设计的目的是为了保证个人数据资料不被他人非法窃取使用,保护个人的隐私及重要文件!
●功能描述
本程序主要是对已知文件(为英文字符)通过一定的算法将其转换成非本身的其他英文字母以达到文件加密的目的。
整个系统由以下几大功能模块组成。
1.主控选择模块
此模块是主程序操作界面,供用户进行选择。
用户可选择执行
加密或解密操作。
2.加密模块
加密模块主要是完成对文件的加密操作。
从外部文件中读入任意一个文件并将它加密并显示出来!
3.解密模块
解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。
从外部文件中读入任意一个文件并将它解密并显示出来!
结构流程图
程序实现代码
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#define M 1000 //预设一个指定文件大小的数字M,方便以后改变
void main()
{
FILE *fp;
char ch,TEXT[M]; // M 的数值可以根据文件的大小随意改变
int ch1,n,key;
cout<<" 文件移位加密与解密
"<<endl;
cout<<"请将加密(解密)文件复制至“文件移位加密与解密”文件夹中,且该文件为纯文本格式。
"<<endl;
while(1)
{
cout<<"请输入文件名:"<<endl; //软件使用帮助和支持
cin>>TEXT;
if((fp=fopen(TEXT,"r"))==NULL)
{
cout<<"open file fail"<<endl;
exit(0);
}
cout<<"请输入密码:"<<endl;
cin>>key;
key=key%26;
cout<<"加密请输入1,解密请输入2:"<<endl;
cin>>n;
if(n==1) // n=1时,执行加密算法{
cout<<"加密结果:";
while((ch=fgetc(fp))!=EOF)
{
if(ch>='A'&& ch<='Z') // 加密文件内容为A-Z
{
ch=ch+key;
if(ch>'Z')
{
ch=ch-26;
}
}
if(ch>='a'&& ch<='z') //加密文件内容为a-z {
ch1=(int)ch+key;
if(ch1>122)
{
ch=(char)(ch1-26);
}
else ch=(char)ch1;
}
cout<<ch;
}
cout<<endl;
n=0;
fclose(fp);
}
else if(n==2) // n=2时,执行解密算法{
cout<<"解密结果:";
while((ch=fgetc(fp))!=EOF)
{
if(ch>='A'&& ch<='Z') // 解密文件内容为A-Z
{
ch=ch-key;
if(ch<'A')
ch=ch+26;
}
if(ch>='a'&& ch<='z') //解密文件内容为a-z {
ch=ch-key;
if(ch<'a')
ch=ch+26;
}
cout<<ch;
}
cout<<endl;
n=0;
fclose(fp);
}
cout<<endl;
cout<<endl;
cout<<endl;
cout<<" -·-·-感谢您的使用,欢迎再次使用-·-·-
"<<endl;
}
}
程序设计总结
文件移位解密:
1.运行程序后,如图示:
2.输入文件名(此程序附带文件默认为(un)code.txt),如图示:
3.输入密码,如图示:
4.选择解密,如图示:
文件移位加密
1.运行程序后,如图示:
2. 输入文件名(此程序附带文件默认为(un)code.txt),如图示:
3. 输入密码,如图示:
4.选择加密,如图示:
个人总结
正如早年瑞士联邦技术学院沃思博士所提出的那个著名的公式:“程序=算法+数据结构”,我在本次程序设计中深刻的体会到了算法的重要性。
当数次尝试确定算法后,对算法的高级语言实现变得同等重要。
在实际的编程过程中,那些语法错误多次影响到编译的通过,而这些错误正是我在平常学习中忽略的,比如运算符的优先级等。
通过此次程序设计,我将课本上的理论知识与实际有机的结合起来,既加深了自己对C++知识的理解和掌握,也锻炼了自己的分析解决实际问题的能力和创新意识。
由于受到自己专业知识的限制,这次设计的程序有很多缺陷,比如界面不够美观,功能不够完善等。
在接下来的学习生活中,我应该
加强专业知识的学习,力争自己有个大的提高。
致谢:
衷心感谢姜国权老师的指导
衷心感谢同学们的帮助
参考文献:
[1] 广树建王钰琪,新编C/C++程序设计教程, 华南理工大学出版社
[2] 贾宗璞许合利,C语言程序设计, 中国矿业大学出版社
[3] 郭继展郭勇苏辉,程序算法与技巧精选, 机械工业出版社。