课程设计报告格式.docx
《课程设计报告格式.docx》由会员分享,可在线阅读,更多相关《课程设计报告格式.docx(29页珍藏版)》请在冰点文库上搜索。
![课程设计报告格式.docx](https://file1.bingdoc.com/fileroot1/2023-6/20/cb454af4-5526-4714-92e4-2c7702092f79/cb454af4-5526-4714-92e4-2c7702092f791.gif)
课程设计报告格式
浙江传媒学院
课程设计(实训)报告
学院电子信息专业电子科学与技术
班级10电科
(2)学号100706234
姓名张莉课题班级档案管理系统
指导教师裘姝平报告成绩______________
日期:
2011年10月21日
目录
一、引言………………………………………………………………………1
1.1课程设计目的………………………………………………………………1
1.2课程设计要求………………………………………………………………1
二、设计题目分析……………………………………………………………1
2.1题目简介……………………………………………………………………1
2.2设计要求……………………………………………………………………1
三、课程设计内容……………………………………………………………2
3.1总体设计……………………………………………………………………2
3.2详细设计……………………………………………………………………3
3.3调试与测…………………………………………………………………17
四、设计心得与总结……………………………………………………………20
五、建议与评阅意见……………………………………………………………21
一、引言
1.1课程设计目的
(1)熟练掌握C语言的基本知识和技能
(2)基本掌握结构化程序设计的思路和方法
(3)熟练掌握数组的用法和用文件存储数据的方法
(4)能够利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题
(5)培养创新能力和良好的思维能力。
1.2课程设计要求
1.学生从以下八个题目中任选一题。
要求每个学生能够独立思考。
并按时完成课程设计所要求的所有内容。
2.要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务,分析过程和算法,给出程序流程图和全部源程序,并作出总结。
3.设计报告的完整格式应包含以下内容:
a)设计总体思路
b)主程序各个模块说明
c)总体模块框图
d)各个程序模块说明
e)程序流程图
f)程序清单
g)心得体会
二、设计题目分析
2.1题目简介
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
2.2设计要求
1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
学号、姓名、性别、年龄、备注。
2、本系统显示这样的菜单:
请选择系统功能项:
a.学生基本信息录入
b.学生基本信息显示
c.学生基本信息保存
d.学生基本信息删除
e.学生基本信息修改(要求先输入密码)
f.学生基本信息查询
(1)按学号查询
(2)按姓名查询
(3)按性别查询
(4)按年龄查询
g.退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生基本信息保存到文件中。
5、进入系统之前要先输入密码。
三、课程设计内容
3.1总体设
3.1.1程序模块组成
主函数:
intmain()
显示函数:
intmydisplay();
显示主菜单函数:
intmyprint();
输入函数:
intmycreate();
查询函数:
intmysearch();
intsch_id(FILE*fp);
intsch_name(FILE*fp);
(sch_num与sch_name函数被mysearch调用)
修改函数:
intmymodify();
删除函数:
intmydelete();
intdel_id(FILE*fp);
intdel_name(FILE*fp);
(del_num(与del_name函数被mydelete调用)
3.1.2各个函数的主要功能
输入函数:
随时输入数据。
显示函数:
显示各个函数和数据。
查询函数:
方便学生查找自己的信息。
删除函数:
方便工作人员修改学生信息。
修改函数:
修改学生错误信息。
3.1.3各个模块功能
ⅰ.显示模块:
通过设计一个模块,来实现学生信息的显示。
以便于浏览学生的信息。
ⅱ.输入模块:
通过设计一个模块,当要加入新的学生的信息的时候,来实现新学生信息的加入。
.查询模块:
通过设计一个模块,这个模块可以按学生的学号、姓名来查询学生所有的信息,并显示学生的所有信息,以便查询者阅读。
.删除模块:
通过设计一个模块,当输入一个学生的学号或者姓名的时候,可以通过这个模块,将输入学号或者姓名的学生的所有信息从数据库中删除出去。
以后,这个学生的信息将不再会出现再数据库中。
.修改模块:
通过设计一个模块,当某个人的信息发生变化的时候,可以通过修改模块来进行修改。
修改模块时一具有多级子菜单的摸块。
使用十分的方便、灵活。
3.1.4总体框架
3.2详细设计
3.2.1采用c语言定义相关类型
学生信息包括:
学号,姓名,性别、年龄
structstudent/*定义数据结构*/
{
charid[10];/*学号*/
charname[10];/*姓名*/
charsex[10];/*性别*/
charage[5];/*年龄*/
charadd[100];/*备注*/
}
3.2.2总流程图
3.3调试与测试
运行后的界面
输入1后显示的界面
选择1,进入如下界面
进行录入工作至终止
选择2显示学生基本信息
继续选择3,按照提示进行操作,出现如下界面
点4进行信息的修改,按照提示进行操作,出现如下界面
选择5进行信息的删除
选择0退出系统,显示如下界面
四、设计心得与体会
一周的实践,让我心力憔悴,对于编程,我一直对自己没有信心,似乎我对这个没有天分,也许对于别的同学而言,实践周是放松的一周,是最轻松快乐的一周,可对于我而言却是最累的一周,是一种煎熬,就像在炼狱,我经受着百般折磨,不过这也是后话,所有的煎熬,在自己编出程序的时候就变得渺小无谓了。
雨后彩虹,从炼狱到天堂,也是不错的体验。
,
经过上一个学期对《C语言程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。
通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
通过本项课程设计也培养了我独立思考、综合运用所学有关相应知识的能力,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!
由于C语言是近年在国内外得到迅速推广应用的一种语言。
C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。
通过这次的c语言程序设计更加了解了c语言的好处和其可用性!
在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!
在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!
在设计过程中的一次次设计错误增加了我放弃的想法!
不过经过自己的努力终于完成了课程设计!
完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!
只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!
也让我懂得了要想成功首先就必须有很强的自信心!
懂得了自己以后要在做任何事情时都要自信!
当自己都不相信自己能够成功时还可能会获得成功吗?
在C语言程序设计的过程中也知道了自己在以前的学习中有很大的不足导致在设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!
都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!
为以后的工作打下良好的知识基础和技能基础!
五、建议
在一周的实践中,我自己学到了不少知识,短短的5天,感觉自己成熟了很多。
经历了好多精神上的折磨,陷入编程无进展的苦闷,内心的焦急,编完程后,出现错误,却找不到错误的根源,那真的是度日如年,心如急焚。
在实践中我觉得有以下问题需要完善:
1、老师做好监督工作。
2、学生要有良好的自制力。
3、同学间要相互帮助,对于问题要进行讲解,而不只是给出答案。
七、评阅意见
教师签名:
年月日
参考书目:
[1]江宝钏,陈叶芳,贾晓雯,陈金飚,管博,《c语言程序设计》.,清华大学出版社,北京,2009年
[2]XX老师
附录
源代码
#include
#include
#include
#include
#defineN100
structstudent
{
charid[10];
charname[10];
charsex[10];
charage[5];
charadd[100];
};
/*以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分*/
intmydisplay();
intmyprint();
intmycreate();
intmysearch();
/*sch_num与sch_name函数被mysearch调用*/
intsch_id(FILE*fp);
intsch_name(FILE*fp);
intmymodify();
intmydelete();
/*del_num(与del_name函数被mydelete调用*/
intdel_id(FILE*fp);
intdel_name(FILE*fp);
intmain()
{boolCheck(charpas[6]);
intchoose;
charyes_no;
do
{
myprint();/*显示主菜单*/
printf("");
scanf("%d",&choose);
switch(choose)
{
case1:
mycreate();break;/*创建*/
case2:
mydisplay();break;/*显示*/
case3:
mysearch();break;/*查找*/
case4:
mymodify();break;/*修改*/
case5:
mydelete();break;/*删除*/
case0:
break;
default:
printf("\n%d为非法选项\n",choose);
}
if(choose==0)
break;
printf("\n要继续选择吗(Y/N)?
\n");
do
{
yes_no=getch();
}while(yes_no!
='Y'&&yes_no!
='y'&&yes_no!
='N'&&yes_no!
='n');
}while(yes_no!
='Y'||yes_no!
='y');
return0;
}
intmyprint()/*显示菜单界面*/
{
printf("\n\n\n\n\n\n\n");
printf("-------------------\n");
printf("请输入选项的编号(0-5):
\n");
printf("1--学生基本信息录入\n");
printf("2--学生基本信息显示\n");
printf("3--学生基本信息查询\n");
printf("4--学生基本信息修改\n");
printf("5--学生基本信息删除\n");
printf("0--退出系统\n");
printf("--------------------\n");
return0;
}
intmycreate()
{
inti=1;
structstudenttemp;
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return0;
}
printf("\n请输入第一个记录:
\n");
printf("学号:
");
do
{
gets(temp.id);
}while(strcmp(temp.id,"")==0);
printf("姓名:
");
gets(temp.name);
printf("性别:
");
gets(temp.sex);
printf("年龄:
");
gets(temp.age);
printf("备注:
");
gets(temp.add);
while(temp.id[0]!
='#'&&temp.name[0]!
='#'&&temp.sex[0]!
='#'&&temp.age[0]!
='#'&&temp.add[0]!
='#')
{
fprintf(fp,"%10s%10s%10s%10s%20s\n",temp.id,temp.name,temp.sex,temp.age,temp.add);
i++;
printf("\n请输入第%d个记录\n",i);
printf("学号(用#结束输入):
");
do
{
gets(temp.id);
}while(strcmp(temp.id,"")==0);
printf("姓名:
");
gets(temp.name);
printf("性别:
");
gets(temp.sex);
printf("年龄:
");
gets(temp.age);
printf("备注:
");
gets(temp.add);
}
fclose(fp);
}
intmydisplay()
{
intn=0;
structstudenttemp;
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return0;
}
printf("学号姓名性别年龄备注\n");
while(feof(fp)==0)
{
fscanf(fp,"%10s%10s%10s%10s%20s\n",&temp.id,&temp.name,&temp.sex,&temp.age,&temp.add);
printf("%10s%10s%10s%10s%20s\n",temp.id,temp.name,temp.sex,temp.age,temp.add);
n++;
}
if(n==0)
printf("\n文件中无记录!
\n");
else
printf("\n文件中共有%d个记录!
\n",n);
fclose(fp);
}
intmysearch()
{
charc;
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return0;
}
printf("\n按学号查询
(1),还是按姓名查询
(2)?
");
getchar();
scanf("%c",&c);
if(c=='1')
sch_id(fp);
else
if(c=='2')
sch_name(fp);
else
printf("\n非法字符!
\n");
fclose(fp);
}
intsch_id(FILE*fp)
{
intflag=0,n=0;
chartempid[10];
structstudenttemp;
printf("\n请输入要查询记录的学号:
");
getchar();
gets(tempid);
while(feof(fp)==0)
{
fscanf(fp,"%10s%10s%10s%10s%20s\n",&temp.id,temp.name,temp.sex,temp.age,temp.add);
if(strcmp(tempid,temp.id)==0)
{
if(flag==0)
printf("学号姓名性别年龄备注\n");
printf("%10s%10s%10s%10s%20s\n",temp.id,temp.name,temp.sex,temp.age,temp.add);
flag=1;
}
n++;
}
if(n==0)
printf("\n文件中无记录!
\n");
else
if(flag==0)
printf("\n文件中无此人!
\n");
return0;}
intsch_name(FILE*fp)
{
intflag=0,n=0;
chartempname[10];
structstudenttemp;
printf("\n请输入要查询记录的姓名:
\n");
getchar();
gets(tempname);
while(feof(fp)==0)
{
fscanf(fp,"%10s%10s%10s%10s%20s\n",&temp.id,&temp.name,&temp.sex,&temp.age,&temp.add);
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf("学号姓名性别年龄备注\n");
printf("%10s%10s%10s%10s%20s\n",temp.id,temp.name,temp.sex,temp.age,temp.add);
flag=1;
}
n++;
}
if(n==0)
printf("\n文件中无记录!
\n");
else
if(flag==0)
printf("\n文件中无此人!
\n");
return0;}
intmymodify()
{
charc;
intn=0;
structstudent*find,temp,*p,record[100];/*最多100个记录*/
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return0;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%10s%10s%10s%10s%20s\n",p->id,p->name,p->sex,p->age,p->add);
p++;
n++;
}
fclose(fp);
if(n==0)
{
printf("\n文件中无记录!
\n");
return0;
}
printf("\n请输入要修改的学号:
");
getchar();
gets(temp.id);
for(p=record;pif(strcmp(temp.id,p->id)==0)
{
find=p;/*find记录修改记录的位置*/
break;
}
if(p==record+n)
{
printf("\n无此人!
\n");
return0;
}
do
{
printf("\n请输入正确的学号:
");
do
{
gets(temp.id);
}while(strcmp(temp.id,"")==0);
printf("请输入正确的姓名:
");
gets(temp.name);
printf("请输入正确的性别:
");
gets(temp.sex);
printf("请输入正确的年龄:
");
gets(temp.age);
printf("请输入正确的备注:
");
gets(temp.add);
for(p=record;pif((strcmp(temp.id,p->id)==0)&&(p!
=find))
{
printf("\n学号重复,要继续输入吗(Y/N)?
");
do
{
c=getch();
}while(c!
='Y'&&c!
='y'&&c!
='N'&&c!
='n');
putchar('\n');
break;
}
if(p==record+n)
{
*find=temp;
break;
}
}while(c=='Y'||c=='y');
fp=fopen("d:
\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return0;
}
for(p=record;pfprintf(fp,"%10s%10s%10s%10s%20s\n",p->id,p->name,p->sex,p->age,p->add);
fclose(fp);
}
intmydelete()
{
charc;
FILE*fp;
fp=fopen("d:
\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");
return0;
}
printf("\n按学号删除
(1),还是按姓名删除
(2)?
");
getchar();
c=getch();
if(c=='1')
del_id(fp);
elseif(c=='2')
del_name(fp);
else
printf("\n非法字符!
\n");
f