《C语言程序设计》报告书.docx

上传人:b****6 文档编号:6004123 上传时间:2023-01-02 格式:DOCX 页数:19 大小:172.27KB
下载 相关 举报
《C语言程序设计》报告书.docx_第1页
第1页 / 共19页
《C语言程序设计》报告书.docx_第2页
第2页 / 共19页
《C语言程序设计》报告书.docx_第3页
第3页 / 共19页
《C语言程序设计》报告书.docx_第4页
第4页 / 共19页
《C语言程序设计》报告书.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》报告书.docx

《《C语言程序设计》报告书.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》报告书.docx(19页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》报告书.docx

《C语言程序设计》报告书

淮海工学院计算机工程学院

课程设计报告

设计名称:

C语言课程设计

选题名称:

简单加密/解密程序

姓名:

学号:

专业班级:

软件工程

系(院):

计算机工程学院

设计时间:

2011.8.29~2011.9.9

设计地点:

软件工程实验室、教室

成绩:

指导教师评语:

 

签名:

年月日

1.课程设计目的

(1)巩固和加深学生对C语言的基本知识的理解和掌握;

(2)掌握C语言编程和程序调试的基本技能;

(3)利用C语言进行简单软件设计的基本思路和方法;

(4)提高运用C语言解决实际问题的能力;

(5)掌握书写程序设计说明文档的能力。

2.课程设计任务与要求:

任务

设计题目从任务书所列选题表中选取,每人1题。

要求:

1、在处理每个题目时,要求从分析题目的需求入手,进行合理的模块设计,定义正确函数和自定义数据类型(如结构体类型)、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。

前期准备工作完备与否直接影响到后序上机调试工作的效率。

在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。

2、设计的题目要求达到一定工作量(200行以上代码),并具有一定的深度。

3、程序设计语言推荐使用C,程序书写规范,源程序需加必要的注释并且缩进一致。

4、每位同学需提交可独立运行的程序;

5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);

6、课程设计实践作为培养学生动手能力的一种手段,单独考核。

3.课程设计说明书

一需求分析

设计一个文件加密/解密程序,主要功能是支持简单的替换加密/解密,支持凯撒加密法(参见XX百科词条:

凯撒加密法

二概要设计

三详细设计

/*函数到时*/

#include

#include

#include

#include"h.h"

externcharencrypt(charch,intn);

externvoidmenu();

externvoidlogo();

voidmain()

{

inti,n;

charch0,ch1;

FILE*in,*out;

charinfile[20],outfile[20];

logo();

Sleep(3);/*等待3秒*/

menu();

ch0=getchar();

while(ch0!

='4')

{

if(ch0=='1')

{

printf("\nPleaseinputtheinfile:

");

scanf("%s",infile);/*输入需要加密的文件名*/

if((in=fopen(infile,"r"))==NULL)

{

printf("Cannotopentheinfile!

\n");

printf("Pressanykeytoexit!

\n");

getchar();

exit(0);

}

printf("Pleaseinputthekey:

");

scanf("%d",&n);/*输入加密密码*/

printf("Pleaseinputtheoutfile:

");

scanf("%s",outfile);/*输入加密后文件的文件名*/

if((out=fopen(outfile,"w"))==NULL)

{

printf("Cannotopentheoutfile!

\n");

printf("Pressanykeytoexit!

\n");

fclose(in);

getchar();

exit(0);

}

while(!

feof(in))/*加密*/

{

fputc(encrypt(fgetc(in),n),out);

}

printf("\nEncryptisover!

\n");

fclose(in);

fclose(out);

Sleep

(1);

}

if(ch0=='2')

{

printf("\nPleaseinputtheinfile:

");

scanf("%s",infile);/*输入需要解密的文件名*/

if((in=fopen(infile,"r"))==NULL)

{

printf("Cannotopentheinfile!

\n");

printf("Pressanykeytoexit!

\n");

getchar();

exit(0);

}

printf("Pleaseinputthekey:

");

scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/

n=26-n;

printf("Pleaseinputtheoutfile:

");

scanf("%s",outfile);/*输入解密后文件的文件名*/

if((out=fopen(outfile,"w"))==NULL)

{

printf("Cannotopentheoutfile!

\n");

printf("Pressanykeytoexit!

\n");

fclose(in);

getchar();

exit(0);

}

while(!

feof(in))

{

fputc(encrypt(fgetc(in),n),out);

}

printf("\nDecryptisover!

\n");

fclose(in);

fclose(out);

Sleep

(1);

}

if(ch0=='3')

{

printf("\nPleaseinputtheinfile:

");

scanf("%s",infile);/*输入需要解密的文件名*/

if((in=fopen(infile,"r"))==NULL)

{

printf("Cannotopentheinfile!

\n");

printf("Pressanykeytoexit!

\n");

getchar();

exit(0);

}

printf("Pleaseinputtheoutfile:

");

scanf("%s",outfile);/*输入解密后文件的文件名*/

if((out=fopen(outfile,"w"))==NULL)

{

printf("Cannotopentheoutfile!

\n");

printf("Pressanykeytoexit!

\n");

fclose(in);

getchar();

exit(0);

}

for(i=1;i<=25;i++)/*暴力破解过程,在察看信息正确后,可以按'Q'或者'q'退出*/

{

rewind(in);

rewind(out);

printf("===============================================================================\n");

printf("Theoutfileis:

\n");

printf("===============================================================================\n");

while(!

feof(in))

{

ch1=encrypt(fgetc(in),26-i);

putchar(ch1);

fputc(ch1,out);

}

printf("\n===============================================================================\n");

printf("Thecurrentkeyis:

%d\n",i);/*显示当前破解所用密码*/

printf("Press'Q'toquitandotherkeytocontinue......\n");

printf("===============================================================================\n");

ch1=getchar();

if(ch1=='q'||ch1=='Q')/*按'Q'或者'q'时退出*/

{

logo();

printf("\nGoodBye!

\n");

fclose(in);

fclose(out);

Sleep(3);

exit(0);

}

}

printf("\nForcedecryptisover!

\n");

fclose(in);

fclose(out);

Sleep

(1);

}

menu();

ch0=getchar();

}

logo();

printf("\nGoodBye!

\n");

Sleep(3);

}

/*头文件*/

#include

#include

#include

#include

/调用函数*/

#include

#include

#include

#include

externcharencrypt(charch,intn)/*加密函数,把字符向右循环移位n*/

{

while(ch>='A'&&ch<='Z')

{

return('A'+(ch-'A'+n)%26);

}

while(ch>='a'&&ch<='z')

{

return('a'+(ch-'a'+n)%26);

}

returnch;

}

externvoidmenu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/

{

printf("\n===============================================================================");

printf("\n1.Encryptthefile");

printf("\n2.Decryptthefile");

printf("\n3.Forcedecryptfile");

printf("\n4.Quit\n");

printf("===============================================================================\n");

printf("Pleaseselectaitem:

");

return;

}

externvoidlogo()

{

return;

}

四设计与调试分析

在做加密/解密程序设计时,我选用凯撒加密法和ROT13加密法,因为凯撒加密法的偏移量是3,而ROT13加密法的偏移量是13,二者十分相似,但对于凯撒加密法来说,26个英文字母的排列是最好的例子,也很易懂,对于ROT13来说,0—9是最好的例子,所以二者结合,可以将加密/解密的程序完整化.而且用凯撒加密法和ROT13加密法可以很方便定义数据类型,自定义数据类型是一个文件的开头,引导整个程序的开始,所以我们结合C程序设计教程,可以很容易自定义数据类型,并且编写程序。

五用户手册

运行程序之前,先在主函数所在的文件夹中创建3个文本文件:

文本1(1.txt),文本2(2.txt),文本3(3.txt)。

⑴选择1,回车,在所弹出的对话框中输入文本1.txt,回车,再输入所设的加密密码。

如图

⑵在上一步所执行的程序基础上,打回车,会弹出以下对话框。

⑶在上一步弹出的对话框中输入3,回车,再输入文本3.txt,回车,最后在出现的对话框中输入123。

如图

⑷在上一步完成后,继续打回车,就会弹出如下对话框

⑸输入Q,回车,弹出对话框如下

 

⑹按任意键退出/结束程序。

六测试成果

4.课程设计心得

上个学期我们学习了C语言这门课程,这个学期,学校就开设了课程设计,让我们学以致用,更加熟悉C语言的应用过程。

刚开始拿到课程设计的题目的时候,根本就是无从下手。

对于拿到的这份报告书也是一头雾水,中间有很多环节都不知道是什么意思。

而且,在上个学期学习C语言的时候,觉得自己学习的也不是很好,有很多中间的知识都没有理解得很透彻,懵懵懂懂的,最后也是为了应付期末考试,并没有真正地理解C语言中的某些语法的应用什么的,所以就很害怕最后会交不出作业。

听了老师的讲解,回来了以后就翻书,复习上个学期所学的C语言程序设计,把基础的知识都看了一遍,特别看了书上的文件的这一节的内容,因为我们这组要做的课程设计是文件的加密和解密,稍微有点熟悉以后,就开始了我们这么课程的设计。

一开始我们是想整个程序都是自己编出来的,可是编写的过程中,遇到了很多的问题,有好多的程序凭我们还是编写不出来的,后来在网上查找了一些文件加密解密方面的资料,为我们的编写的程序做了一些补充。

网上有很多这方面的资料,很丰富,给我们的课程设计提供了很多方便。

虽然有些网上的东西不能全部照搬照抄,但是可以用来借鉴一下,对我们程序的设计编写也有很大的帮助。

众人拾柴火焰高,通过大家和网络的力量,能借鉴的尽量借鉴,然后再修改完善,增加自己的功能,做出自己的特色。

就这样,我们的程序设计完成了。

虽然,还有的地方不是很完善,但是心里面还是很高兴,这里面有我们的劳动成果。

通过这次课程设计,我学到了很多东西,在完成设计的过程中也遇到了很多问题,通过不断地查资料,向同学请教,使得大部分问题都得到了解决,并且在解决的过程中我也学到了很多的东西。

而且在设计的过程中,让我学到了怎样和他人一起完成一件任务,以及在完成的过程中如何沟通。

设计是要在一定的时间内完成的,在完成这个设计时,时间显然还是有些紧迫的,我想是没有合理安排好时间和开始态度不对所致。

做完后,觉得合理安排时间很重要,否则,可能因为时间仓促而把原来可以做好的东西做的不好,应合理安排时间给各个环节。

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

通过这次课程通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。

同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!

同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

 

______________________________________________________________________________________________________________________________

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

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1