C语言实现学生成绩管理解决方法系统.doc

上传人:一*** 文档编号:808907 上传时间:2019-07-16 格式:DOC 页数:17 大小:248.50KB
返回 下载 相关 举报
C语言实现学生成绩管理解决方法系统.doc_第1页
第1页 / 共17页
C语言实现学生成绩管理解决方法系统.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《C语言实现学生成绩管理解决方法系统.doc》由会员分享,可在线阅读,更多相关《C语言实现学生成绩管理解决方法系统.doc(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、学号102128121 武武汉汉理理工工大大学学华华夏夏学学院院课课程程设设计计报报告告书书课程名称:课程名称: 数据结构 题题 目目:用用 C C 语言实现成绩统计程序的设计语言实现成绩统计程序的设计 系系 名:名: 信息工程系信息工程系 专业班级:专业班级: 软件工程软件工程 11211121 姓姓 名:名: 指导教师指导教师: 黄启荃黄启荃 20132013 年 6 6月 2828日课程设计任务书设计题目:用 C 语言实现成绩统计程序的设计设计目的1.巩固和加深课堂所学知识、学会分析研究数据对象的特性及数据的组织方法; 2.选择合适的数据的逻辑结构和存储结构以及相应操作,实现一个班的成绩

2、统计 3. 提高程序设计能力、加强查阅、运用资料的能力、算法分析与程序设计素质培养 ;设计任务 (在规定的时间内完成下列任务)问题描述给出 n 个学生的 m 门课程的考试成绩信息,每条信息由姓名、课程代号与分 数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出出个人的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 基本要求 学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 算法提示可以用选择排序、冒泡排序等多种排序算法求解;具体要完成的任务是:A. 编制完成上述问题的 C 语言程序、进行程序调

3、试并能得出正确的运行结果。B. 写出规范的课程设计报告书;时间安排:6 月 24 日-28 日第一天布置题目,确定任务、查找相关资料第二天第四天功能分析,编写程序,调试程序、运行系统;第五天程序验收、答辩;撰写设计报告。具体要求1. 课程设计报告按统一通用格式书写,具体内容如下: 设计任务与要求 总体方案与说明 软件主要模块的流程图 源程序清单与注释 问题分析与解决方案(包括调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想) ; 小结与体会 附录: 源程序(必须有简单注释) 使用说明 参考资料 2每位学生应独立完成各自的任务且每天至少在设计室工作半天;指 导 教 师 签 名: 201

4、3 年 6 月 22 日教研室主任(或责任教师)签名: 2013 年 6 月 24 日1.1.设计题目及要求设计题目及要求1.11.1 设计题目设计题目 用 C 语言实现成绩统计程序的设计。 1.21.2 具体任务具体任务 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息 输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含: (1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有 成绩信息,要求用 C 语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览 等功能。学习相关开发工具和应用软件,熟悉系统建

5、设过程。2.2.系统设计思想系统设计思想2.12.1 系统设计思想系统设计思想在编写成绩统计管理系统程序的过程中运用结构体,把问题中所涉及的变量定义在结构体中,利用函数来管理学生成绩,循环语句控制所选择的选择界面,case 语句进行选择。然后利用相关变量函数把学生成绩记录下来,利用循环语句再回到选择界面,利用查找函数,统计函数来查找统计学生成绩,利用冒泡排序法来对学生平均成绩进行排序。然后按成绩高低对学生进行排名。2.22.2 系统算法设计系统算法设计 2.2.12.2.1 系统模块结构图系统模块结构图系统结构如图系统结构如图 2-12-1 所示所示2.2.2.2.结束开始菜单显示菜单选择输

6、入退 出输 出保 存查 找排 序统 计插 入删 除2 2 主函数流程图主函数流程图主函数如图主函数如图 2-22-2 所示所示t=3开始int num; char name20;int score3; float average;输入选择操作t=1t=4t=2判断输入数结束输入 信息输出 信息选择排序法 排序平均数图图 2-12-1 系统结构图系统结构图查找插入数 据保存文件图图 2-22-2 主函数流程图主函数流程图3.3.系统调试与运行系统调试与运行3.13.1 开发环境开发环境 Visual C+6.0,Microsoft Windows XP 3.23.2 程序调试程序调试 3.2.1

7、3.2.1 主界面主界面调试调试选择界面如图选择界面如图 3-13-1 所示所示按学号 删除输出平均分 成绩记载相应模块并进行处理图图 3-13-1 选择界面截图选择界面截图3.2.23.2.2 成绩录入模块成绩录入模块成绩录入界面成绩录入界面录入界面如图录入界面如图 3-23-2 所示所示图图 3-23-2 成绩录入模块成绩录入模块3.2.33.2.3 成绩查询模块成绩查询模块 成绩查询界面如图成绩查询界面如图 3-33-3 所示所示图图 3-33-3 成绩查询模块成绩查询模块3.2.43.2.4 成绩统计模块成绩统计模块成绩统计界面如图成绩统计界面如图 3-43-4 所示所示图图 3-43

8、-4 成绩统计模块成绩统计模块4.4.设计评价与修改设计评价与修改在数据结构课程设计过程中,许多知识点都没有学过,都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是窗中出现混乱,要经过自己一遍遍的调试与修改,和老师同学的帮助下逐渐改进完善,最后才渐渐的成型。运行的也基本达到所需要的运算要求。5.5.心得与体会心得与体会回顾起此次课程设计,我感慨颇多,从拿到题目到完成整个编程,从理论到实践,在整整一个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得

9、了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体。通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力,同

10、时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。每一次的课程设计都是一次对自己曾经学习知识的检验,通过每次的实践,使自己认识之前的不足与缺点,利于以后的改正与今后学习的发展方向,希望每一次的课程设计都能有一个很好的提高参考文献参考文献1詹春华 李小艳 黄启荃计算机应用基础科学出版社 2011.52詹春华 杨沙C 语言程序设计科学出版社 2011.83谭浩强 C语言程序设计 北京 清华大

11、学出版社, 2000年1月。4徐孝凯 魏荣数据结构机械工业出版社1996 年5徐孝凯数据结构简明教程清华大学出版社1995 年6陈文博 朱青数据结构与算法机械工业出版社1996 年附录:程序代码附录:程序代码#include #include #include #define MAXN 35 #define MAX_NAME 256 typedef struct student /学生信息 int no; char nameMAX_NAME; double Chinese; double math; double English; double mark_ave; double mark_to

12、t; STUDENT; /*-输入信息子程序-*/ void input(STUDENT *data, int *len) int no; putchar(n);printf(“%sn“, “请输入新的记录,如果需要退出当前菜单请输入-1.“); printf(“%sn“, “格式:n 学号n“); printf(“%sn“, “姓名 语文 数学 英语“); putchar(n); printf(“如:n“); printf(“1n“); printf(“小明 93 95 89n“); scanf(“%d“, while(no != -1) data*len.no = no; scanf(“%

13、s %lf %lf %lf“, data*len.name, data*len.mark_ave=(data*len.Chinese+data*len.math+data*len.English)/3. 0;data*len.mark_tot=data*len.Chinese+data*len.math+data*len.English; (*len)+; scanf(“%d“, /*-输出信息子程序-*/ void output(STUDENT *data, int len) int i; system(“cls“);printf(“%8s“, “学号“);printf(“%8s“, “姓名

14、“);printf(“%8s“, “语文“);printf(“%8s“, “数学“);printf(“%10s“, “英语“);printf(“%12s“, “平均分“);printf(“%10s“, “总分“);putchar(n);for (i =0; i dataj.mark_ave) k=j; if (k != i) temp = datai; datai = datak; datak = temp; /*-搜索子程序-*/ void find(STUDENT *data, int len) int find_no, result ;int i; lab: result=0;print

15、f(“%sn“, “请输入需要查找的学生的学号,退出当前菜单请 输入 -1.“);scanf(“%d“, if (find_no = -1) return; /*exit the fine sub program*/while( dataresult.no != find_no goto lab;else system(“cls“);printf(“%sn“, “查询信息如下:“);for (i =0; i = pos; i-)datai+1 = datai;datapos.no = no;strcpy(datapos.name, name);datapos.Chinese = Chinese

16、;datapos.math = math;datapos.English = English;datapos.mark_ave = mark_ave;datapos.mark_tot = mark_tot;(*len)+;goto lab; /*-删除子程序-*/ void delete_item(STUDENT *data, int *len) int no, i, pos; lab: pos=0;printf(“%sn“, “输入需要删除的学生的学号,退出当前菜单请输 入-1.“);scanf(“%d“, if (no = -1) return;while( (datapos.no !=

17、no) goto lab;else for (i = pos+1;i *len; i+)datai-1 = datai;*len = *len -1;if (*len = 0) printf(“%sn“, “没有任何记录,请按回车键返回.“);getchar();getchar();return;goto lab; /*-统计子程序-*/ void stat(STUDENT *data, int len) int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0;int i;for (i = 0;i len; i+) if (datai.mark_ave

18、 =59) no_59+;else if (datai.mark_ave =69) no_69+; else if (datai.mark_ave =79) no_79+; else if (datai.mark_ave = 89) no_89+; else no_100+; system(“cls“);for (i =0; i 80; i+)putchar(=); putchar(n);printf(“%10s“, “分数“);printf(“%10s“, “0-59“);printf(“%10s“, “60-69“);printf(“%10s“, “70-79“);printf(“%10s

19、“, “80-89“);printf(“%10s“, “90-100“);putchar(n);putchar(n);printf(“%10s“, “学生“);printf(“%10d“, no_59);printf(“%10d“, no_69);printf(“%10d“, no_79);printf(“%10d“, no_89);printf(“%10d“, no_100);putchar(n);for (i =0; i 80; i+)putchar(=);putchar(n);printf(“按回车键返回“);getchar();getchar(); /*-显示信息子程序-*/ void

20、 paint() int i; system(“cls“);printf(“%55sn“, “武汉理工大学华夏学院学生成绩管理系统n“);printf(“ 制作者:武汉理工大学华夏学院软件 1121 班钟伟 n“);for (i = 0; i 80; i+)putchar(=);putchar(n);printf(“ 1 输入信息 2 输出 信息n“);printf(“ 3 按平均分排序 4 按学 号查找n“);printf(“ 5 插入 6 按学 号删除n“);printf(“ 7 按平均分输出统计信息 8 保存 到文件n“);printf(“ 0 退出n“); for (i = 0; i=

21、 79; i+)putchar(=);putchar(n);printf(“%sn“, “请输入各操作对应的序号:“); void save(STUDENT *data, int len)/将数据保存到文件 int i; FILE *fp; fp=fopen(“成绩统计表.txt“,“w“); fprintf(fp,“%8s“, “学号“);fprintf(fp,“%8s“, “姓名“);fprintf(fp,“%8s“, “语文“);fprintf(fp,“%8s“, “数学“);fprintf(fp,“%10s“, “英语“);fprintf(fp,“%12s“, “平均分“);fprin

22、tf(fp,“%10sn“, “总分“);fprintf(fp,“= =n“);putchar(n);for (i = 0; i len; i+)fprintf(fp,“%8d“, datai.no);fprintf(fp,“%8s“, datai.name);fprintf(fp,“%8.1lf“, datai.Chinese);fprintf(fp,“%8.1lf“, datai.math);fprintf(fp,“%10.1lf“, datai.English);fprintf(fp,“%12.1lf“, datai.mark_ave);fprintf(fp,“%10.1lfn“, da

23、tai.mark_tot);fprintf(fp,“= =n“); fclose(fp); printf(“文件已保存到“成绩统计表.txt“); getchar();getchar(); /*-主程序-*/ void main() STUDENT dataMAXN;int len = 0;char ctrl_ch;paint();scanf(“%c“, while (ctrl_ch != 0) switch(ctrl_ch) case 1: input(data, break; case 2: output(data, len); break; case 3: sort(data, len)

24、; break; case 4: find(data, len); break; case 5: insert(data, break; case 6: delete_item(data, break; case 7: stat(data, len); break; case 8: save(data, len); break; default: if (ctrl_ch != n) printf(“%sn“, “输入错误!“); break;if (ctrl_ch != n) paint();scanf(“%c“, 设计过程中质疑(或答辩)记载: 1提问:数据在程序中是怎样存储的?答:数据是以数组的形式存储在结构体数组中。 2提问:怎样实现由用户自己选择学生个数和科目数?答:通过改变宏定义所定义的数目来改变,或者通过输入语句来由用户自己 确定。指导教师评语:签名:2013 年 7 月 1 日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com