C语言实现学生成绩管理系统.docx

上传人:苏美尔 文档编号:11695841 上传时间:2021-08-31 格式:DOCX 页数:20 大小:92.49KB
返回 下载 相关 举报
C语言实现学生成绩管理系统.docx_第1页
第1页 / 共20页
C语言实现学生成绩管理系统.docx_第2页
第2页 / 共20页
C语言实现学生成绩管理系统.docx_第3页
第3页 / 共20页
C语言实现学生成绩管理系统.docx_第4页
第4页 / 共20页
C语言实现学生成绩管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C语言实现学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言实现学生成绩管理系统.docx(20页珍藏版)》请在三一文库上搜索。

1、学号102128121武汉理工大学华夏学院课程设计报告书课程名称:数据结构题 目:用C语言实现成绩统计程序的设计系名:信息工程系专业班级:软件工程1121姓名:指导教师:黄启荃2013年6月2 8日课程设计任务书设计题目:用C语言实现成绩统计程序的设计设计目的1 .巩固和加深课堂所学知识、学会分析研究数据对象的特性及数据的组织方法;2 .选择合适的数据的逻辑结构和存储结构以及相应操作,实现一个班的成绩统计3 .提高程序设计能力、加强查阅、运用资料的能力、算法分析与程序设计素质培养设计任务(在规定的时间内完成下列任务)问题描述给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组

2、 成,要求设计算法:(1)输入每个人的各门课程的成绩,计算每人的平均成绩;(2)按平均成绩的高低次序,打印出出个人的名次,平均成绩相同的为同一名次;(3)按名次列出每个学生的姓名和各科成绩;基本要求学生的考试成绩必须通过键盘输入,且需对输出进行格式控制;算法提示可以用选择排序、冒泡排序等多种排序算法求解;具体要完成的任务是:A.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。B.写出规范的课程设计报告书;时间安排:6月24日28日第一天布置题目,确定任务、查找相关资料第二天第四天功能分析,编写程序,调试程序、运行系统;第五天程序验收、答辩;撰写设计报告。具体要求1 .课程设计

3、报告按统一通用格式书写,具体内容如下:设计任务与要求总体方案与说明软件主要模块的流程图源程序清单与注释 问题分析与解决方案(包括调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想)小结与体会附录:源程序(必须有简单注释)使用说明参考资料2每位学生应独立完成各自 的任务且每天至少在设计室工作半天;指导教师签名:2013年6月22日教研室主任(或责任教师)签名:2013年6月24日1 .设计题目及要求1.1 设计题目用C语言实现成绩统计程序的设计。1.2 具体任务对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输 入、输出、查询、删除、排序、统计、退出.将学生的

4、成绩信息进行记录,信息内容包含:(1 )学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信 息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学 习相关开发工具和应用软件,熟悉系统建设过程。2 .系统设计思想2.1 系统设计思想在编写成绩统计管理系统程序的过程中运用结构体,把问题中所涉及的变量定义在结构体中, 利用函数来管理学生成绩,循环语句控制所选择的选择界面,case语句进行选择。然后利用相关变 量函数把学生成绩记录卜来,利用循环语句再回到选择界面,利用查找函数,统计函数来查找统计 学生成绩,利用冒泡排序法来对学生平均成绩进行排

5、序。然后按成绩高低对学生进行排名。2.2 系统算法设计2.2.1 系统模块结构图系统结构如图2-1所示图2-1系统结构图2.2.2主函数流程图主函数如图2.2所示开始int num; char name20;屈 score3; float average;输入选择操作t=4t=1t=2t=3查找 7.输入7人俞出7 .L信息/息/择排序法/1/排序平均数/记载相应模块并进行处理结束-1,插入数/保存文件按学号/删除/输出平均分/成绩 /图2-2主函数流程图3 .系统调试与运行3.1 开发环境Visual C+6.0 , Microsoft Windows XP3.2 程序调试3.2.1 主界面

6、调试 选择界面如图3-1所示图3-1选择界面截图322成绩录入模块成绩录入界面录入界面如图3-2所示_I; E:CicHbinwvztemp.exe1 一 | 回卜冏输入台操作对应的序号:1、输入新的记录,如果需要退出当前菜单请愉入-1. 格式:姓名语文数学英语Til I 小明93 95 89张三85 78 56李四78 58 67主五58 68 99李明98 87 54 5苏散87 88 69图3-2成绩录入模块323成绩查询模块成绩查询界面如图3.3所示图3-3成绩查询模块324成绩统计模块 成绩统计界面如图3.4所示图3-4成绩统计模块4.设计评价与修改在数据结构课程设计过程中,许多知识

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

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

9、要求我们对待事情要认真!在编写程序的过 程中,错误不断出现,不同的类型(如少写了 一个符号,写错了字母,用错了函数等 等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。每一次的课程设计都是一次对自己曾经学习知识的检验,通过每次的实 践,使自己认识之前的不足与缺点,利于以后的改正与今后学习的发展方向, 希望每一次的课程设计都能有一个很好的提高参考文献詹春华李小艳黄启荃?计算机应用基础?科学出版社2011.52詹春华杨沙?C语言程序设计?科学出版社2011.83谭浩强-C语言程序设计.北京.清华大学出版社,2000年1月。4徐孝凯魏荣?数据结构?机械工业出版社? 1996年5徐

10、孝凯?数据结构简明教程?清华大学出版社? 1995年6陈文博朱青?数据结构与算法?机械工业出版社? 1996年附录:程序代码#include #include #include #define MAXN 35#define MAX_NAME 256typedef struct student /学生信息int no;char nameMAX_NAME;double Chinese;double math;double English;double mark_ave;double mark_tot; STUDENT;/*输入信息子程序/void input(STUDENT *data, int

11、*len)int no;putchar(n);printf(%sn请输入新的记录,如果需要退出当前菜单请输入-1J); printf(%snH,n 格式:n 学号n);printf(sn” J姓名语文数学英语)putchar(n);printf(如:n);printf(n1nn);printf(小明 93 95 89nH);scanf(,%dn, &no);while(no != -1) data*len.no = no; scanf(%s %lf %lf %lf,J data*len.name, &data*len.Chinese, &data*len.math,&data*len.Engl

12、ish);data*len.mark_ave=(data*len.Chinese+data*len.math+data*len .English)/3.0 5data*len.mark_tot=data*len.Chinese+data*len.math+data*len .English; (*len)+; scanf(%dH, &no); ) ) /*输出信息子程序/void output(STUDENT *data, int len) (int i;system(cls,); ,1/ D/ )z )/ 号咨文i子 学姓语数n);力语均英平printf(n%8s,n print. %8s“

13、J printf(%8s,n printf(H%8s,n printff%1Os,n printf(H%12s,nprintf(%1Os,n 总分) putchar(n); for (i =0; i 80; i+) putchar(=); putcharfXn1); for (i = 0; i len; i+) printf(%8cT, datai.no); printf(%8s, datai.name); printf(%8.1lfH, datai.Chinese); printf(%8.1 If, datai.math); printf(%10.1lfn, datai.English);

14、printf(H%12.1 If1, datai.mark_ave); printfC1%1 0.1 If, datai.mark_tot); putchar(n); ) for (i =0; i 80; i+)putchar( =f); putchar(W); printf(按回车键继续 J); getchar(); getchar(); ) /*排序子程序*/void sort(STUDENT *data, int len)(int ij,k;STUDENT temp;for (i=0; ilen-1; i+) for (k=i, j=i+1; j dataj.mark_ave) k=j;

15、 if (k != i) temp = datai; datai = datak; datak = temp;/*搜索子程序*/void find(STUDENT *data5 int len)int find_no, result;int i;lab: result=0;printf(sn, 请输入需要查找的学生的学号,退出当前菜单请输入-1);scanf(cT, &find_no);if (find_no = -1) return; /*exit the fine sub program*/while( dataresult.no != find no & result = len ) p

16、rintf(sn, ”未查询到相关信息) goto lab;)else system(cls); printf(%snH,n 查询信息如下:);for (i =0; i 80; i+) putchar(=);putchar(n);printf(“8s” J 学号”);printf(8s“,“ 姓名”);printf。8s语文”);print.%8s”, ” 数学 );printf(”10s1 英语);printf(,%12sn,H 平均分”);printf(10s 总分”);putchar(n);printf(%8d, dataresult.no);printf(8s”,dataresult.

17、name); printf(8,1lf, dataresult.Chinese); printfCS.I If, dataresult.math); printf(%10.1lf, dataresult.English); printf(%12.1lfH, dataresuIt.mark_ave); printf(%10.1 If, dataresult.mark_tot); putchar(n);for (i =0; i 80; i+) putchar(=,); putchar(fn);goto lab;)/插入子程序*/void insert(STUDENT *data, int *len

18、) (int no, pos; double Chinese, math, English, mark_ave, mark_tot; int i; char nameMAX_NAME;lab: printf(sn, ”输入新的记录,退出当前菜单请输入-1/1);printf(sn 格式:学号”);printf(sn, ” 姓名 语文 数学 英语 H); scanf(M%dM3 &no); if (no=-1) return; data*len.no = no;scanf(H%s %lf %lf %lfM, name, &Chinese, &math, &English);mark_ave=(C

19、hinese+math+English)/3.0;mark_tot=Chinese+math+English;pos = 0;while (datapos.mark_ave mark_ave) & (pos = pos; i-) datai+1 = datai;datapos.no = no;strcpy(datapos.name, name); datapos.Chinese = Chinese;datapos.math = math; datapos.English = English;datapos.mark_ave = mark_ave; datapos.mark_tot = mark

20、_tot; (*len)+; goto lab;/*删除子程序*/void delete_item(STUDENT *data, int *len) (int no, i, pos;lab: pos=0;printf(%sn; 输入需要删除的学生的学号,退出当前菜单请输入-1);scanf(cT, &no);if (no = -1) return;while( (datapos.no != no) & (pos = *len) printf(sn, ”未找到需要删除的学生”);goto lab;)else for (i = pos+1 ;i *len; i+)datai-1 = datai;*

21、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 =59) no_59+;else if (datai.mark_ave =69) no_69+;else if (datai.mark_a

22、ve =79) no_79+;else if (datai.mark_ave = 89) no_89+;else no_100+; system(HclsM);for (i =0; i 80; i+)putchar(=);putchar(rT);printf(n%10s,n 分数”);printf(n%10sn, H0-59n);printf(n%10sM, n60-69n);printf(H%10sM, n70-79n);printf(H%10s, n80-89H);printf(H%10s, n90-100n);putchar(n);putcharCn); printf(“%10s“,“学

23、生);printf(n%10dn3 no_59); printf(H%1 OdM, no_69); printf(H%10d, no_79);printf(H%10d no_89); printf(%10dn, no_100);putchar(n);for (i =0; i 80; i+)putchar(=);putchar(n);printf(“按回车键返回);getchar();getchar();)/* 显示信息子程序 7 void paint()int i;system( cis”);printf(”55sn: ”武汉理工大学华夏学院学生成绩管理系统n“);printf(制作者:武汉理

24、工大学华夏学院软件1121班钟伟 n“);for (i = 0; i 80; i+) putchar(=);putchar(n);printf(H 1 出信息 nH);printf(n3学号查找n);printf(n5学号删除n);printf(H7存到文件nH);printf(n0for (i = 0; i= 79; i+) putchar(=);putchar(fn);输入信息2按平均分排序制4插入6按平均分输出统计按信息退出俏;按保姓名”); 语文”); 数学”);英语) 平均分”);printf(sn, ”请输入各操作对应的序号:”);)void save(STUDENT *data,

25、 int len)/将数据保存到文件inti; FILE *fp;fp=fopen(成绩统计表fprintf(fp,8s, “ 学号”);fprintf(fpJ%8sn, fprintf(fp,%8sH, fprintf(fp,%8sn, fprintf(fpJ,%10s,5 fprintf(fp,%12s,5 fprintf(fpJ%10sn”J 总分”);fprintf(fp,nputchar(n);for (i = 0; i len; i+)(fprintf(fp5,%8d,J datai.no); fprintf(fp,%8sH, datai.name);fprintf(fp,n%8.

26、1 lfH, datai.Chinese); fprintf(fp,%8.1lfH, datai.math);fprintf(fp,H%10.1 lfH, datai.English);fprintf(fp5n%12.11f, datai.mark_ave); fprintf(fp,%10.1lfnn, datai.mark_tot);1 fprin 廿(fpj= =);fclose(fp);printf(文件已保存到 ”成绩统计表.txtm,); getchar();getchar();)/*主程序*/void main()STUDENT dataMAXN;int len = 0;char

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1