《C语言程序设计》报告书文档格式.docx
《《C语言程序设计》报告书文档格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》报告书文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
年月日
1.课程设计目的
(1)巩固和加深学生对C语言的基本知识的理解和掌握;
(2)掌握C语言编程和程序调试的基本技能;
(3)利用C语言进行简单软件设计的基本思路和方法;
(4)提高运用C语言解决实际问题的能力;
(5)掌握书写程序设计说明文档的能力。
2.课程设计任务与要求:
任务
设计题目从任务书所列选题表中选取,每人1题。
要求:
1、在处理每个题目时,要求从分析题目的需求入手,进行合理的模块设计,定义正确函数和自定义数据类型(如结构体类型)、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。
2、设计的题目要求达到一定工作量(200行以上代码),并具有一定的深度。
3、程序设计语言推荐使用C,程序书写规范,源程序需加必要的注释并且缩进一致。
4、每位同学需提交可独立运行的程序;
5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
3.课程设计说明书
一需求分析
设计一个文件加密/解密程序,主要功能是支持简单的替换加密/解密,支持凯撒加密法(参见XX百科词条:
凯撒加密法
二概要设计
三详细设计
/*函数到时*/
#include<
stdio.h>
stdlib.h>
time.h>
#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"
Pressanykeytoexit!
getchar();
exit(0);
}
Pleaseinputthekey:
%d"
&
n);
/*输入加密密码*/
Pleaseinputtheoutfile:
outfile);
/*输入加密后文件的文件名*/
if((out=fopen(outfile,"
w"
Cannotopentheoutfile!
fclose(in);
while(!
feof(in))/*加密*/
fputc(encrypt(fgetc(in),n),out);
\nEncryptisover!
fclose(in);
fclose(out);
Sleep
(1);
}
2'
/*输入需要解密的文件名*/
/*输入解密密码(可以为加密时候的密码)*/
n=26-n;
/*输入解密后文件的文件名*/
feof(in))
\nDecryptisover!
3'
for(i=1;
i<
=25;
i++)/*暴力破解过程,在察看信息正确后,可以按'
Q'
或者'
q'
退出*/
rewind(in);
rewind(out);
===============================================================================\n"
Theoutfileis:
while(!
{
ch1=encrypt(fgetc(in),26-i);
putchar(ch1);
fputc(ch1,out);
}
\n===============================================================================\n"
Thecurrentkeyis:
%d\n"
i);
/*显示当前破解所用密码*/
Press'
toquitandotherkeytocontinue......\n"
ch1=getchar();
if(ch1=='
||ch1=='
)/*按'
时退出*/
logo();
printf("
\nGoodBye!
fclose(in);
fclose(out);
Sleep(3);
exit(0);
\nForcedecryptisover!
menu();
ch0=getchar();
}
printf("
}
/*头文件*/
windows.h>
/调用函数*/
externcharencrypt(charch,intn)/*加密函数,把字符向右循环移位n*/
while(ch>
A'
&
ch<
Z'
return('
+(ch-'
+n)%26);
a'
z'
returnch;
externvoidmenu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/
\n==============================================================================="
\n1.Encryptthefile"
\n2.Decryptthefile"
\n3.Forcedecryptfile"
\n4.Quit\n"
Pleaseselectaitem:
return;
externvoidlogo()
四设计与调试分析
在做加密/解密程序设计时,我选用凯撒加密法和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语言程序设计,把基础的知识都看了一遍,特别看了书上的文件的这一节的内容,因为我们这组要做的课程设计是文件的加密和解密,稍微有点熟悉以后,就开始了我们这么课程的设计。
一开始我们是想整个程序都是自己编出来的,可是编写的过程中,遇到了很多的问题,有好多的程序凭我们还是编写不出来的,后来在网上查找了一些文件加密解密方面的资料,为我们的编写的程序做了一些补充。
网上有很多这方面的资料,很丰富,给我们的课程设计提供了很多方便。
虽然有些网上的东西不能全部照搬照抄,但是可以用来借鉴一下,对我们程序的设计编写也有很大的帮助。
众人拾柴火焰高,通过大家和网络的力量,能借鉴的尽量借鉴,然后再修改完善,增加自己的功能,做出自己的特色。
就这样,我们的程序设计完成了。
虽然,还有的地方不是很完善,但是心里面还是很高兴,这里面有我们的劳动成果。
通过这次课程设计,我学到了很多东西,在完成设计的过程中也遇到了很多问题,通过不断地查资料,向同学请教,使得大部分问题都得到了解决,并且在解决的过程中我也学到了很多的东西。
而且在设计的过程中,让我学到了怎样和他人一起完成一件任务,以及在完成的过程中如何沟通。
设计是要在一定的时间内完成的,在完成这个设计时,时间显然还是有些紧迫的,我想是没有合理安排好时间和开始态度不对所致。
做完后,觉得合理安排时间很重要,否则,可能因为时间仓促而把原来可以做好的东西做的不好,应合理安排时间给各个环节。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
通过这次课程通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。
同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
______________________________________________________________________________________________________________________________