C语言课程设计报告书张杉Word下载.docx
- 文档编号:15292275
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:18
- 大小:21.10KB
C语言课程设计报告书张杉Word下载.docx
《C语言课程设计报告书张杉Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告书张杉Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
掌握C语言函数的定义方法,函数的声明及函数的调用过程。
掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。
二、实验内容:
(1)运用结构体数组编辑一个简单的学生成绩管理系统,使之能够完成学生成绩的创建、添加,查询、修改,删除、统计、排序等操作,并对文件进行保存和读取。
(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。
直到编译成功为止。
(3)执行运行操作,逐一对每个模块进行调试。
直到全部程序运行成功为止。
(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。
三、需求分析:
(1)根据学生成绩管理的需要,建立一个“学生信息管理系统”,系统具有输入、查询、修改、删除、统计、排序等基本功能;
以方便对成绩的各项管理操作。
每一条记录包括一个学生的学号、姓名、性别,年龄,生日,成绩。
系统的各个功能模块都用函数的形式来实现;
可以将学生成绩信息保存在文件中,并从文件中读取出来。
有一个清晰美观界面来调用各个功能。
本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。
本程序分为7个模块,分别为创建学生资料;
添加学生的资料;
查询学生的成绩;
修改学生的资料;
删除学生的资料;
统计学生的成绩;
对学生的资料进行排序。
本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。
本程序的使用特别方便,每做完一个模块,下面都有提示信息。
使用环境为Win-Tc。
(2)创建该学生成绩管理系统目的就是能够对学生基本信息进行创建、追加、查询、修改、删除、统计、排序等功能,这样可以简化许多人工做起来很复杂的问题。
譬如:
“排序”,有了此程序只需将信息输入,计算机就可自动执行,省时、省力。
另外,它还可以重复使用,方便、快捷。
(3)该学生基本信息管理系统是在WIN-TC中文简体环境下运行。
该系统要测试的数据如下:
1.输入模块:
(输入5个学生的信息)
Numbernamesexagebirthdayscore
1am2060
2bm2070
3cf2080
2.追加模块:
(再加1个信息)
4df2090
3.查询模块:
(查询GULI的基本信息)
1(按学号即可查询)或a(按姓名也可查询)
4.修改模块:
(修改b的成绩)
(输入)1(修改number)(输入)2(修改name)(输入)3(修改sex)(输入)4(修改age)(输入)5(修改birthday)(输入)6(修改score)
5.删除模块:
(删除c的基本信息):
06(输入学号即可删除)
6.统计模块:
可统计各分数的人数。
7.排序模块:
按成绩进行排序。
四、概要设计
(1)主函数结构图:
(2)数据类型:
结构体类型
structdate/*结构体类型*/
{intyear;
/*结构体变量,用来定义生日中的年*/
……};
structstudent_type/*结构体类型*/
{intnum;
/*结构体变量,用来定义学号*/
charname[10];
/*结构体数组,用来定义姓名*/
……
structdatebirth;
/*结构体中的结构体*/
};
(3)模块功能详细说明:
1.录入模块:
此模块可以连续输入20个学生的资料,若学生数少于20,则可以在输入学号处输入0便可退出此模块,并把输入的信息保存到e:
\\score.txt文件中。
2.输出模块:
此模块分两页输出二十名同学的信息。
3.添加模块:
输入要添加的学生信息。
4.删除模块:
输入要删除的同学学号,然后删除。
5.查询模块:
此模块中使用者可以用三种方式查询学生成绩。
分别为
(1)按学号查询
(2)按姓名查询。
6.修改模块:
此模块中可以修改一门科的成绩也可以同时修改四门科的成绩。
修改完毕后输入y可以继续修改,输入n则退出此模块。
7.删除模块:
此模块中用到的删除原理为覆盖要删除的学生的资料。
过程简述,先输入要删除的学生的学号,系统找到此学生的信息后给它复制下一个学生的信息,给下一个学生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生的信息为止。
然后文件中的学生总数减一。
8.统计模块:
统计一个分数的人数。
9.排序模块:
此模块用的方法为冒泡法。
五、详细设计及运行结果
(1)各个模块的程序流程图加模块:
添加模块:
删除模块:
排序模块:
(2)函数之间相互调用的图示:
(3)主要函数之间相互调用如下:
六、调试情况,设计技巧及体会
1.测试数据:
输入合法数据
输入非法数据
Numnamesexagebirthdayscore
1Am2050
2Bf2160
3Cm2070
程序显示出现错误,不能正常输入
2.调试情况:
(1).刚开始时,输入的成绩不能保存在文件中,所有数据都是一次性的。
后来知道是没在主程序中加保存模块,添加后就可以了。
但调试中又发现在添加模块中加入数据还是不能保存,在老师的帮助下发现问题出现在sum值上,我的添加后sum值不变,导致天价的数据不能保存。
我在程序中加了sum++;
使每次添加数据后,sum也随之添加。
问题就解决了。
(2).删除模块是最头疼的,调试了n多次才成功,问题也出现在sum值上。
(3).其他问题也就在粗心或者简单的错误,印象不是很深刻。
3.自我评价:
在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能。
本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。
本程序分为8个模块,分别为
(1)录入学生资料。
((3)添加学生的资料(4)查询学生的成绩(5)修改学生的资料(6)删除学生的资料(7)统计学生的成绩(8)对学生的资料进行排序。
此程序的不足之处在学生基本信息方面还不够完善,另一方面就是在运行此程序时,需要执行操作的提示语不够具体和完善.
改进方法:
可以在学生基本信息的结构体中添加更多的学生信息,使得学生信息更加完善,此外,还可以在编程时加一些必要的提示语,用printf(“”);
语句直接可输入.
4.感受:
经过两周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识。
要成功编一套程序,不仅需要有一个整体的思路,更重要的是对基础知识把握一定要扎实。
通过编程,对我发现了很多知识上的漏洞和不足,也得到了用诸多C语言解决实际问题的宝贵经验。
相信在以后的学习生活包括考试中一定会有很大帮助。
当然我的成绩也离不开老师的热心帮助,不管是粗心造成的错误还是正需本身的错误,老师都耐心给我讲解调试,知道成功运行。
我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。
七、源程序清单:
#include"
stdio.h"
string.h"
#defineMAX20
#definePAGE10
#definePRINT1printf("
\n"
#definePRINT2printf("
numnamesexagebirthdayscore\n"
#definePRINT3printf("
%d%s%c%d%d-%d-%d%d\n"
student[i].num,student[i].name,student[i].sex,student[i].age,student[i].birth.year,student[i].birth.month,student[i].birth.date,student[i].score)
#definePRINT4printf("
*******************************************************************\n"
intsum;
/*date*/
structdate
intmonth;
intdate;
};
/*studentstructtype*/
structstudent_type
intsex;
intage;
intscore;
}student[MAX];
/*stonemessage*/
save_message(intsum)
{
FILE*fp;
inti;
if((fp=fopen("
e:
\\score.txt"
"
wb"
))==NULL)
{
printf("
thefileyoureadiswrong1\n"
);
return;
}
for(i=0;
i<
sum;
i++)
if(fwrite(&
student[i],sizeof(structstudent_type),1,fp)!
=1)
thefileyouwriteiswrong!
\n"
fclose(fp);
}
/*inputmessage*/
input_message()
{inti=0;
system("
cls"
\n\ninputstudentmessage\n"
PRINT1;
do
{printf("
NO.%dstudent\n"
i+1);
\nstudentnumber(****):
"
scanf("
%d"
&
student[i].num);
if(student[i].num==0)break;
\nstudentname:
%s"
student[i].name);
\nstudentsex(m/f):
getchar();
%c"
student[i].sex);
\nstudentage:
student[i].age);
\nstudentbirthday(yyyy-mm-dd):
%d-%d-%d"
student[i].birth.year,&
student[i].birth.month,&
student[i].birth.date);
\nstudentsorce:
student[i].s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告书