c语言课程设计学生成绩管理系统七大功能模块
- 格式:doc
- 大小:887.00 KB
- 文档页数:25
1 中 国 地 质 大 学 本科生课程论文封面
课程名称 c语言课程设计 教师姓名 陈伟涛 本科生姓名 本科生学号 20111000013 本科生专业 安全工程 所在院系 工 程 类别: 本 科 生 日期: 2013 - 1 - 12 2
课程设计评语 对课程论文的评语:
平时成绩: 课程论文成绩: 总 成 绩: 评阅人签名: 注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。 3
目 录 课程设计评语 ...................................................................................................................................... 2 目 录.................................................................................................................................................... 3 1. 课程论文题目 .......................................................................................................................... 4 2. 程序设计思路 .......................................................................................................................... 4 3. 功能模块图 .............................................................................................................................. 5 4. 数据结构设计 .......................................................................................................................... 7 5. 算法设计 .................................................................................................................................. 8 6. 程序代码 ................................................................................................................................ 13 7. 程序运行结果 ........................................................................................................................ 20 8. 编程中遇到的困难及解决方法 ............................................................................................ 23 9. 总结心得及良好建议 ............................................................................................................ 24 10. 致谢 .................................................................................................................................... 25 4
1. 课程论文题目 学生成绩管理系统: 【要求】 设计“学生成绩管理系统”,实现学生成绩的录入、显示、查找、添加、保存以及成绩排序等功能模块。要求功能选择用菜单实现,数据输入和结果输出要求用文件存放。 原始数据文件格式(具体数据自行编写): 学号 姓名 英语 c语言 高等数学 平均成绩 1 张三 75 85 80 80 2 李四 ... ... ... ...
2. 程序设计思路 【思考】 (1) 需求分析 由于要录入、读取、保存学生成绩信息,因而要实现文件的输入输出功能;要求用户可以查询各个学生的成绩,并且可以添加学生成绩信息等,因而要提供查找和添加功能;另外,还应该提供键盘式选择菜单以实现功能选择。
(2) 总体设计 可以将这个系统的设计分为数据输入、数据显示、数据查找、成绩排序、保存数据、读取数据、数据插入7个模块。
(3) 数据结构 把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干学生信息用结构体数组。 5
3. 功能模块图 【输入学生数据模块】:
【显示学生数据模块】: 【查询信息模块】: 6
【数据排序模块】: 【数据保存模块】: 【数据读取模块】: 7
【数据插入模块】: 4. 数据结构设计 结构体{ 成员表列: {
While Menue Switch
print search order save read insert input
判断 Yes No 8
把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干学生信息用结构体数组。用while循环控制功能菜单的选择,swith中设置相应的功能模块函数调用,调用完一个函数后然后返回while进行判断,结果为真则进行功能菜单的选择,如果条件为假则终止函数。
5. 算法设计 (1) 总体设计 把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干个学生的信息用结构体数组。将要实现的功能分为一个一个的函数模块,需实现哪个供的语句时就调用该功能语句。而要实现菜单式的功能选择又需要while中嵌套swith语句,即调用完一个函数后进行while判断,while中的条件控制语句如果为真,则执行功能选项,然后进行swith判断,符合case几的选项就调用相应的函数,然后再进行while判断,直到不符合条件是跳出循环,结束函数。这样就实现了函数的菜单式功能选择并得到相应的结果。 (2) 各个功能模块的设计 各个函数功能模块实现不同的功能,且互相不影响。加入需同时实现二个或两个以上的函数就同时调用函数,这与函数模块之间互相独立互不影响不矛盾,而且这样写思路清晰,程序可读性高,不易出错,能够插入你想要的模块功能而不影响其他的函数和整体。 (3) 输入数据模块具体算法 首先是声明结构体,然后定义结构体数组,确定需输入学生的个数,即结构体数组的长度,数组的每一个元素都包含结构体中的所有成员,即一个学生的所有信息。 用for循环遍历分别输入每一个学生的: 学号、姓名、英语成绩、c语言成绩、高等数学成绩,计算平均成绩。循环结束完后即完成了数据的录入操作。代码如下: 9
void input(struct Student sdu[]) { int i; printf("请录入学生信息:学号 姓名 英语 c语言 高等数学(数据之间用空格隔开): \n"); for(i=0;i{ scanf("%d %s %f %f %f", &sdu[i].num, sdu[i]. name, &sdu[i].Eng, &sdu[i].c, &sdu[i].math); sdu[i].aver=(sdu[i].Eng+sdu[i].c+sdu[i].math)/3; } } (4) 学生信息输出模块具体算法 输出学生数据跟输入学生信息类似,用for循环遍历结构体中的每一个成员,设置输出格式,就能完成每一个学生信息的输出显示功能。代码如下: void print(struct Student sdu[]) {int i; for(i=0;i{ printf("%3d %8s %8.1f %8.1f %8.1f %10.1f\n", sdu[i].num, sdu[i]. name, sdu[i].Eng, sdu[i].c, sdu[i].math, sdu[i].aver); } }
(5)学生信息查询模块具体算法 查询原理是,根据学生的学号查询。定义一个变量接收要查询学生的学号,然后用for循环中嵌套if语句遍历查找结构体成员中的学号成员,如果查到相等的学号,执行输出语句,输出该学生的所有信息,最后执行break终止循环。如果未找到匹配的学号则N值>=N,此时执行提示语句,“无该学生信息!”,最后结束循环到功能选择菜单。代码如下: void search(struct Student sdu[]) { inti,num_get; printf("请输入要查询的学生的学号: ");