课程设计报告课程名称C语言程序设计课题名称班级成绩管理系统专业电子信息班级0802班学号32姓名董霄宇指导教师肖伟平罗敬肖彬2009年6 月19 日湖南工程学院课程设计任务书课程名称C语言程序设计课题班级成绩管理系统专业班级电子信息0802班学生姓名董霄宇学号32指导老师肖伟平罗敬肖彬审批任务书下达日期2009 年 6 月19 日任务完成日期2009年6 月30日一、设计内容与设计要求1.设计内容:班级成绩管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。
2) 建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;3) 班级成绩管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)成绩显示:完成班级全部学生成绩的显示;(3)成绩录入:完成新增一个学生的成绩记录,并重新计算学生的平均成绩;(4)成绩修改:按学号修改一个学生的学习成绩,并重新计算学生的平均成绩;(5)成绩排序:按学生平均成绩进行排序;(6)成绩统计:①统计并显示每门课程的平均成绩;②统计并显示超过某门课程平均分的人数以及学生记录;4) 说明:(1)要求将修改后的数据写入到一个新的数据文件nwejck.txt中。
(2)对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。
5) 班级成绩管理系统采用一个结构体数组,学生成绩数据库结构如下:int xh /*学号*/char name[10] /*姓名*/int yy /*英语*/int mat /*数学*/int jsj /*计算机*/int wl /*物理*/int zf /*总分*/注意:学号不重复,且数据库应有10条或以上的记录。
6) 要求:⑴要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;⑵要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;⑶设计报告的完整格式应包括以下部分的内容:①设计总体思路;②程序及各个模块说明;③总体模块框图;④各个程序模块说明;⑤程序流程图;⑥程序清单;⑦课程设计总结与体会(不少于400字)。
⑷上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。
二、进度安排第 18 周星期五 8:00——12:00星期日 15:00——18:00第 19 周星期一 19:00—— 22:00星期三 8:00——12:00星期四 14:30—— 17:30附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录一.需求分析---------------------------------------7 (1)程序功能--------------------------------------7 (2)输入输出要求----------------------------------7二.总体设计----------------------------------------7三.模块功能详细设计分析----------------------------8四.调试分析及体会----------------------------------9五.部分运行界面截取图------------------------------11 六.流程图-----------------------------------------17 七.心得体会---------------------------------------18 八..附件------------------------------------------201.源程序-----------------------------------------20 2.参考书目---------------------------------------27九.评分表------------------------------------------28一.需要分析:(1)程序功能该程序是一个实现对班级成绩管理的系统。
包括显示,添加,删除,修改,排序,查找,统计及退出等功能。
输入学生的学号、姓名及成绩对其进行存储,在存储后可以对学生的成绩按学号和姓名进行查寻。
该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。
系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。
(2)输入输出要求学号输入只能用数字输入,姓名输入只能用字符,且最长为10个字符。
此程序在BC2.0下运行通过。
二.总体设计:(1) 抽象数据类型定义学生成绩数据库结构:数据库{学号: int( )姓名: char(10)英语: int()数学: int()计算机: int()物理: int()总分: int()平均分:flaot()名次:int()}(2)程序的模块及其功能和关系该程序由9个模块组成,由主函数调用计算,显示,添加,删除,修改,排序,查找,统计及其退出等模块.下面将介绍每个模块的功能及与他们之间的关系.模块图如下:(3)主函数分析主函数主要由一个switch()开关语句构成,开关语句在一个无限循环体里,开关语句里的开关是调用主菜单显示函数的返回值。
除最后一个语句是强制结束整个程序的语句外,其它case都是调用相应的函数,完成相应的功能。
各调用情况如下: case1:调用显示函数 case 2:调用追加函数、case 3:调用修改函数、case 4:调用删除函数、case 5:调用查询函数、 case 6:调用排序函数、 case 7:调用退出函数,主函数将保证每调用完一个函数之后又调用显示函数,然后按任意键又重新回到主菜单,以便用户进行下一次的操作。
三.模块功能详细设计分析<1>班级成绩显示模块:Void Disp( )这个模块的主要功能是用来计算每个人的平均分并显示班级中所有人各科相对应的成绩,平均分,总分及名次。
在主菜单中选择“1”就可以进入这个模块界面。
这个功能的实现是用了一个for循环来完成的。
通过这个循环printf()函数依次输出每一个人的学号,姓名,各科成绩,平均分,总分,名次。
最后在界面上显示所有人的信息因此我们可以浏览所有人的信息。
〈2〉班级成绩追加模块:Void Appe()本模块的主要功能是添加一个人的记录。
在主菜单中键入“2”,就进入次模块。
由多个for 循环控制。
在for循环中包括printf和scanf函数,依照提示依次输入:学号,姓名,各科成绩。
再调用显示函数Disp( )。
<3>班级成绩修改模块:void Modi( )本模块的主要功能是按学号查找相应的记录,然后系统判断学号是否存在,如果不存在将提示用户,如果存在再根据提示语句,用户可以按要求修改记录中除学号,姓名以外的指定内容,可按照用户要求修改对应成绩,可由用户自行控制修改人数,并重新显示。
在主菜单中键入“3”就可以进入这个模块。
此模块是通过for循环语句控制实现的。
如果输入的信息不存在系统就提示信息提醒。
<4>班级成绩删除模块:Void Dele( )此模块的主要功能是用来删除班级成绩管理中的信息。
可按指定学号,姓名删除记录并重新显示。
在主菜单中选择输入“4”,就可以进入这个模块的界面。
这个模块的设计是通过if和for循环语句控制实现的。
如果输入的信息不存在系统就提示信息提醒。
<5>.班级成绩查询模块:void Query()这个模块可以按学号查询;然后系统判断所输入信息是否存在,如果存在将显示该人的各科成绩,平均分,总分及名次。
这个模块是通过if和for循环语句控制实现的。
如果输入的信息不存在系统就提示信息提醒。
<6> 班级成绩排序模块:Void Sort( )该模块先由计算模块算出每个人的平均分及名次,再通过对名次的排序。
运用双重for循环嵌套及if语句进行排序。
<7>班级成绩退出模块:void Quit()任意键退出程序.四.程序调试分析1.在显示函数里应该含有计算函数,否则显示的信息中平均分,总分及名次都为零。
2.在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,但是不方便退出,后来用了一个输入函数输入要输入的学生信息的个数,在用循环控制,这样就方便多了。
3.输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录。
4.在程序调试的时候,出现函数名变成未定义字符,经过分析后发现是没有在程序的前面些程序包含的语句,加上前面的头文件包含后就没有这个错误了.5.在程序中需要输入的项太多,故在每个输入项前应加一个提示输入项,提示用户输入正确的信息。
五.部分运行界面截取图1 、显示模块运行截面图运行程序菜单框图中选则1,按回车。
运行结果如下图:2、追加模块运行截面图运行程序菜单框图中选则2,按回车.按照提示输入信息,运行结果如下图:3、修改模块运行截面图运行程序菜单框图中选则3,按回车.按照提示输入信息,结果如图:4、删除模块运行截面图运行程序菜单框图中选则4,按回车.按照提示输入信息,运行结果如下图:5、查询模块运行截面图运行程序菜单框图中选则5,按回车.按照提示输入信息,运行结果如下图6、排序模块运行截面图运行程序菜单框图中选则6,按回车.按照提示输入信息,运行结果如下图六、流程图1、总体设计流程图七.心得体会课程设计这一周感受颇深。