C语言加密解密程序设计报告
C语言加密解密程序设计报告本文简介:昆明理工大学《计算机程序设计基础》课程综合实践型教学课题报告课题名称:文章加密组长:学号041003017姓名杨彦凯组员:学号041003008姓名廖源学号041003071姓名杨麟飞学号041003007姓名张振喜学号041003030姓名杨达辉学院:建筑工程学院专业班级:土木工程(1)班指导教师
C语言加密解密程序设计报告本文内容:
昆明理工大学
《计算机程序设计基础》课程
综合实践型教学课题报告
课题名称:文章加密
组长:
学号041003017姓名杨彦凯
组员:
学号041003008姓名廖源
学号041003071姓名杨麟飞
学号041003007姓名张振喜
学号041003030姓名杨达辉
学院:建筑工程学院
专业班级:土木工程(1)班
指导教师:付湘琼
昆明理工大学计算中心
2005年6月20日
昆明理工大学计算中心
《计算机程序设计基础》课程综合实践型教学课题报告
课程名称:C程序设计
学院:建筑工程学院
专业班级:土木工程(1)班
学号
姓名
小组编号
所选题号
自评小组工作量
(1—6)
自评分数
分数
041003017
杨彦凯
01
90
88
041003008
廖源
02
90
88
041003071
杨麟飞
03
95
95
041003007
张振喜
04
80
80
041003030
杨达辉
05
80
80
设计说明与功能描述(基本思路及关键语句说明)
该程序的主要功能是对英文文章加密、解密、统计字数并对文章进行保存。
为了对一篇英文文章进行加密处理,解密处理,原文显示,统计文章的单词数句数并对文章以文件形式进行保存我和我的同仁设计了这一款软件系统。
以下是对该系统的一些实际功能所做的描述:
1,显示原文功能,该功能中做了lisr()函数,在该功能中主要是用了puts()函数来显示两个核心数组中的内容:
2、统计字数和句数,为该功能设计了tongji()函数,在该功能模块中使用了指针,使用指针指向核心数组的首地址,然后对顺次增加的地址取其值,并对其做相应的处理,详细的说明见后面的说明。
3、加密功能模块,为其设计了jiami()函数,在该功能模块中主要是对每一个核心数组的具体字符做了处理,被处理后的文章看起来像一堆乱码,无法辨认其为何物。
4.解密功能模块,为该功能设计了jiemi()函数,在该设计中做了针对jiami()块做的处理,使得系统能够针对核心数组做连续的处理。
5、集成功能模块,为其设计了menubr()函数,用printf()函数做了菜单选项和欢迎界面
6、在主函数数中,先对核心数组进行录入之后,各个被调函数才可对其做相应得处理
7、函数及其相应得变量:
menubar();
list()
tongji
()
变量int
w、s
jiami()变量char
VI,VIP
jiemi()变量VI
VIP
8、定义全局得核心数组并对其指针取地址
组长签名:杨彦凯
2005
年6月20日
教师评语
文档和程序完成较好。
教师签名:
付湘琼
2005
年
6月
26
日
正文内容:
一、
问题描述
文章加密、解密程序主要解决的问题是:将可以看懂的字母转换成不能看懂的东西,以此来实现其加密的功能:同时我们也加入了文章单词数及句子数的统计,解决了一些人对这方面的需要。
二、
问题分析
本程序是通过调用六个子函数来实现其功能,其流程图如下图所示
入口
输入文章内容
判断分类
加密
(a[i]>101
charp1=name;
charp2=Wenzhang;
//
函数原型说明,定义6个功能模块函数和一个主函数
//
一般将主函数定义放在程序前部,其他函数定义放在主函数之后,因此要先说明函数原型
//
函数原型说明可帮助读者理解程序的结构和功能
char
Menubar();
//
主菜单函数,返回菜单选项字符
void
List();
//
显示所有记录文本
void
Save(int
n);
//保存文件
void
Jiami();
//文本加密
void
Jiemi();
//文本解密
void
Tongji();
//统计字数
//
主函数,程序运行入口。进行功能选项判定并引用相应的功能函数
//
在无限循环中引用函数Menubar()显示菜单,并返回菜单选项
void
main()
{
int
yyk=0;
char
ch1;
int
yyk1=0;
char
ch2;
int
count=1;
printf(“请输入文章名,输入
#
并按回车结束。\n“);
while
((ch1=getchar())!=
#
)
{
name[yyk1++]=ch1;
}
name[yyk1]=
\0
;
printf(“请输入英文文章(本系统只支持英文格式且不要缩写)输入
#
并按回车结束。\n“);
while
((ch2=getchar())!=
#
)
{if(yyk>30000)
{printf(“文章太长,超出30000字符部分的内容将被忽略!\n“);
break;
}
Wenzhang[yyk++]=ch2;
}
Wenzhang[yyk]=
\0
;
for(;;)
//
无限循环,选择0
退出循环
{
switch(Menubar())
//
调用主菜单函数,按返回值选择功能函数
{
//
选择功能1至4,查询并显示记录
case
1
:
List();
break;
//
显示原文
case
2
:
Tongji()
;
break;
//
字数统计
case
3
:
Jiami();
break;
//
文件加密
case
4
:
Jiemi();
break;
//
文件解密
case
5
:
Save(count);
break;
//文件保存
case
0
:
exit(0);
//
跳出循环,终止程序运行
}
//
switch语句结束
}
//
for循环结束
}
//
main()函数结束
//
主菜单函数,由main()函数引用,返回菜单选项字符供main()的switch语句判定
//
使用printf()函数显示菜单项,用sacnf()函数接收选项字符
//
while条件限定选项的合法性,非法字符则重新输入
char
Menubar()
{
char
c=
0
;
printf(“\n#########################
文本加密解密管理软件
#################################\n\n“);
printf(“文
1.
显示文件文本原样***
\n“);
printf(“本
2.
字数统计***
\n“);
printf(“加
3.
文件加密***
\n“);
printf(“密
4.
文件解密******************
\n“);
printf(“解
5.
文件保存*************\n“);
printf(“密
0.
退出系统*********************\n“);
printf(“系*************
\n“);
printf(“统*********************
\n“);
printf(“\n#####################################################################################\n“);
printf(“\n
请输入选项(0-5):“);
//
提示输入选项
do{
scanf(“%c“,//
输入选择项,为1个字符
}while(!(c>=
0
//当条件满足p+1这个地址取值不是26个字母时,执行w自加1
}
}
printf(“\n总单词数为%d\n“,w);
//结束for循环后打印s,w的最后结果
printf(“总句数为%d\n“,s);
}
//加密
void
Jiami()
{
char
VI,VIP;
int
i=0;
printf(“请输入加密密码:“);
scanf(“%d“,while(Wenzhang[i])
{
if
(Wenzhang[i]>=32
else
Wenzhang[i]=Wenzhang[i];
i++;
}
printf(“\n\n解密后的文章内容如下:\n\n“);
puts(Wenzhang);
printf(“\n\n“);
}
else
printf(“密码错误!请重新输入“);
}
五、
个人收获和体会:
(1)
组长:
组长
041003017
杨彦凯
通过这个大作业,我最深的感受就是团结。在紧张的学期末复习阶段,每个同学都埋头苦干,想在考试中取得好成绩,但是这个大作业却要我们共同完成,合作分工,这给我们团结就是力量的感受就更深了。
社会是复杂的,多元化的。只靠一个人的能力想成功完成一件事是艰难的。所以我们必须学会交流并相互帮助。这次合作我们遇到了许多的困难。时间的紧迫,知识的不足,给我很大的压力。最终我还是还是完成了任务。培养了我的吃苦耐劳的精神和面对困难如何调整自己的心情。人生不可能一帆风顺的,总会有一些困难。不要在困难面前低头,要坚强面对。
这次语言程序设计弥补了我们的不足,提高了我们的动手能力。从根本上认识到学习的目的是服务于社会。
团结就是力量是我这次最真切的感受,团队合作精神——VERY
VERY
IMPORTANT!
(2)组员:
组员02
041003008
廖源
在这次和同组人一起设计程序过程中,我深刻体会到一个人的力量是渺小的,只有大家同心协力,才能完成好一项工作。在设计统计块时,开始遇到了不少困难。例如:统计单词的逻辑思维是什么?这是困扰我最多的问题。又如:在写程序时,因为对数组,指针不熟悉,而出现了不少错误。经过学习,讨论,最后克服了这些困难。经过这次设计,我对数组,指针的知识和使用又上了一个台阶。数组和指针那么地方便,它真是C语言的重点,精华所在。所以,在以后的学习中,我更应抓紧对指针的学习。
经过这次的学习、设计,我们学到了许多以前不懂的、难懂的知识。这真锻炼人的好机会,我很喜欢这种应用性的学习。我要感谢我的老师、我的伙伴,你们使我懂得了许多、许多!
组员03
041003071
杨麟飞
很高兴能有这样一个机会和同学一起完成一项任务,这其中有各种各样的问题,但通过大家一起讨论,并在老师的耐心辅导下,最终把那些问题都解决了。从中我学到了如何应对困难,如何与人合作。在最终完成作业的那一刻,我们心中都非常的高兴。
我想有了这样一次体验,在以后漫长的人生路上,我们在面对许多意想不到的困难与挫折时,我们会更从容的去面对。通过这次合作,我使自己的动手能力和与人沟通的能力得到了提高,这将使我在以后的的道路上走的更稳,收获更多。所以,我们应感谢老师的良苦用心。本来我还不太赞成这种做法,但现在,我知道了,这是对的,是值的我们用心去做的。
同时我也知道了我们随时都要培养自己的动手能力,只有这样,才能更好的适应这个日新月异的飞速发展的社会。
组员04
041003007
张振喜
C语言的确不太容易学,再加上我们是双语课,课本又是英文的,刚开始接触的时候,的确很抵触,尽管自己英语不赖,但还是总以为自己学不好,毕竟嘛,刚接触新事物不是那么容易的事情,后来学了几节课,觉得也没什么,就是要记的东西比较多,每天都有新内容,记一记就可以了,但当老师布置了几个小作业之后,问题就出现了,单独拿出来每个东西我都略知一二,而让我把它们连接起来,做一个程序,那就难了,每次都是老师写好我们超,一两次之后,通过对比,我发现这些程序之间有好多东西,都是共同的,变化的指示针对不同问题的处理方法,当然这要通过数学运算来完成,困难之处就是怎样把一个个问题用数学的方法表示出来,怎样表示更简便而矣,我的数学还可以,这对我来说不成问题,因此我的信心又恢复了。
这个大作业使我体会到团结的力量,以一个人的能力和精力是不可能在这么短的时
内这么圆满的完成任务,人多就是好办事,但我不以为然,我们几个人团结协作可以充分证明,我们中国人不是窝里横,是可以团结起来的。”
虽然在工作中我们有分歧,有争吵但我们都很好的解决了问题,增进了友谊,锻炼了团结协作能力,受益匪浅。其中第一部分和第二部分有点难易失调,是我和组长共同完成,更加体现出了分工和协作的优点和重要性。
我对自己在这份作业中的表现特别满意,提出了很多很好的建议,事实表明那些建议确实起到了很好的作用。也加深了我对”==”和”if”等的理解和操作,从实践中了解和体会到了C++的魅力和作用,也让我体会到大学学的东西的重要性,大学并不像某些人说的那样竟学些没用的东西,像上学期学的网叶制作我到现在还收益匪浅。
学习就应该这样,理论到实践中去,我觉得老师的决定很英明。我也从这份作业中了解到了中国和外国的差距,体会到中国大学生的实践能力差这一点,一班学的是中文版,明显要跟我们的实践能力差很多,而我们跟他们的理论也要差很多,从很小的一点就反映出了教育体制对学生的影响,值得反省。
组员05
041003030
杨达辉
通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。总之,做这份作业对于我们学习C语言有很大的帮助。
在做大作业时,由于运用了很多新知识,新的方法,还有题目更加复杂,应用性更强,在编写过程中
遇到了很多困难,幸好我们有团结的集体,通过大家的努力、配合,我们将问题逐个解决,最终成功的完成了作业,由于担任组长,我的领导能力得到了锻炼,对c语言有了进一步理解,这对我们工科学生来说意义是相当重大的,在此感谢同学的支持和老师的帮助和指导。