C语言实现学生成绩管理系统_第1页
C语言实现学生成绩管理系统_第2页
C语言实现学生成绩管理系统_第3页
C语言实现学生成绩管理系统_第4页
C语言实现学生成绩管理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、系统;第五天程序验收、答辩;撰写设计报 告。具体要求1 .课程设计报告按统一通用格式书写,具体内容如下:设计任务与要求总体方案与说明 软件主要模块的流程图源程序清单与注释问题分析与解决方案 (包括调式报告,即在调式过程中遇到的 主要问题、解决方法及改进设想);小结与体会附录: 源程序(必须有简单注释)使用说明参考资料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.2.2主函数流程图图2-1系统结构图主函数如图2-2所示73.系统调试与运行3.1 开发环境Visual C+6.0)Microsoft Windows XP3.2 程序调试3.2.1 主界面调试选择界面如图3-1所示武汉理工大学学生藤管理系疏制作者:武汉理工大学大学软件1121班钟伟息分分Jjlp夕.小列人刊出输按插按退请输入各操作对应的序号:2输出信息4孑痔号查找6按学

6、号删除8保存到文件图3-1选择界面截图3.2.2 成绩录入模块成绩录入界面 录入界面如图3-2所示清谕八各操小时内的序片; 1请输入新的记录,如果需要退胃当前菜单请输入-L 珞五 学考姓名但文期学英造如 1卜明现DE 3D 张三SE 70 55 2李四7S照67 3王五兆63四4手3月9E E7合4 5.%裁 57 88 03图3-2 成绩录入模块3.2.3成绩查询模块成绩查询界面如图3-3所示-E;Cia inexe73. Q219.067.72Q3,O76-0225.079-7239.081. 3244.0o o o o O 6.7.见4.9.5 6 9 GU 6000008,8*8,7.

7、8.7 5 6 8 8o o O 0 O59巳8.邑工8 7 5 9 8三四五明散张李王李苏12 3 4 5图3-3 成绩查询模块3.2.4成绩统计模块成绩统计界面如图3-4所示姓名一语文577205.073.0219.075.0225.0T9. 7239.06k 3244.0o o o o O 7.6sS-4.9. 6 5 9 5 6 o o o o O st8.8.,8+ 5 7 6 8 8 o o o G o 陶瓯弭密87. 四三五明散 李张王李苏 2 1-345按回车锥继续.图3-4 成绩统计模块4 .设计评价与修改在数据结构课程设计过程中,许多知识点都 没有学过,都要靠自己到课外的资

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

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

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

11、清华大学出版 社? 1995年6陈文博朱青衣数据结本与算法?机械工业出 版社? 1996年附录:程序代码#include <stdlib.h>#include <stdio.h>#include <string.h>#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;/*

12、输入信息子程序*/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

13、 95 89n");scanf("%d", &no);while(no != -1) data*len.no = no;scanf("%s %lf %lf %lf", data*, &data*len.Chinese, &data*len.math,&data*len.English);data*len.mark_ave=(data*len.Chinese+data*len.math+data*len.Engli sh)/3.0;data*len.mark_tot=data*len.Chinese

14、+data*len.math+data*len.Englis h;(*len)+;scanf("%d", &no);/*输出信息子程序*/void output(STUDENT *data, int len)int i;system("cls");printf("%8s","学号)printf("%8s","姓名)printf("%8s","语文)printf("%8s","数学)printf("%10s",

15、" 英语)printf("%12s",”平均分)printf("%10s"," 总分)putchar('n');for (i =0; i < 80; i+)putchar('=');putchar('n');for (i = 0; i< len; i+)printf("%8d", datai.no);printf("%8s", );printf("%8.1lf", datai.Chinese);p

16、rintf("%8.1lf", datai.math);printf("%10.1lf", datai.English);printf("%12.1lf", datai.mark_ave);printf("%10.1lf", datai.mark_tot);putchar('n');for (i =0; i < 80; i+)putchar('=');putchar('n');printf("接回车键继续.");getchar();getch

17、ar();/*排序子程序*/void sort(STUDENT *data, int len)int i,j,k;STUDENT temp;for (i=0; i<len-1; i+) for (k=i, j=i+1; j<len; j+)if (datak.mark_ave > 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: resu

18、lt=0;printf("%sn","请输入需要查找的学生的学号,退出当前菜单请输入-1.");scanf("%d”, &find_no);if (find_no = -1) return; /*exit the fine sub program*/ while( dataresult.no != find_no && result < len) result +;if (result >= len ) printf("%sn","未查询到相关信息)goto lab;else s

19、ystem("cls");printf("%sn","查询信息如下:");for (i =0; i < 80; i+)putchar('=');putchar('n');printf("%8s","学号)printf("%8s","姓名)printf("%8s","语文)printf("%8s","数学)printf("%10s"," 英语)prin

20、tf("%12s",”平均分)printf("%10s"," 总分)putchar('n');printf("%8d", dataresult.no);printf("%8s", );printf("%8.1lf", dataresult.Chinese);printf("%8.1lf", dataresult.math);printf("%10.1lf", dataresult.English);p

21、rintf("%12.1lf", dataresult.mark_ave);printf("%10.1lf", dataresult.mark_tot);putchar('n');for (i =0; i < 80; i+) putchar('=');putchar('n');goto lab;/*插入子程序*/void insert(STUDENT *data, int *len)int no, pos;double Chinese, math, English, mark_ave, mark_to

22、t;int i;char nameMAX_NAME;lab: printf("%sn","输入新的记录,退出当前菜单请输入 -1.");printf("%sn"," 格式:学号)printf("%sn","姓名语文数学英语)scanf("%d", &no);if (no = -1) return;data*len.no = no;scanf("%s %lf %lf %lf", name, &Chinese, &math, &

23、English); mark_ave=(Chinese+math+English)/3.0;mark_tot=Chinese+math+English;pos = 0;while (datapos.mark_ave < mark_ave) && (pos < *len)pos +;for (i = *len-1; i >= pos; i-) datai+1 = datai;datapos.no = no;strcpy(, name);datapos.Chinese = Chinese;datapos.math = math;datapo

24、s.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", &no);if (no = -1) return;while( (datapos.n

25、o != no) && (pos < *len) ) pos = pos +1;if (pos >= *len) printf("%sn","未找到需要删除的学生");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;/*

26、统计子程序*/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_ave <=79) no_79+;else if (datai.mark_ave <= 89) no_89+;else no_100+;.system(&

27、quot;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", "80-89");printf(&

28、quot;%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 (

29、i =0; i < 80; i+)putchar('=');putchar('n');printf("接回车键返回");getchar();getchar();/*显示信息子程序*/void paint()int i;system("cls");printf("%55sn","武汉理工大学华夏学院学生成绩管理系统n");printf("制作者:武汉理工大学华夏学院软件1121班钟伟n");for (i = 0; i < 80; i+) putchar(

30、'=');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<= 79; i+)putchar('=');putchar('n');printf("%sn"," 请输入各操作对应的序号:&qu

31、ot;);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","平均分)fprintf(fp,"%10sn"," 总分)fprintf(fp,"= =n");putchar('n');for (i = 0; i< len; i+)fprintf(fp,"%8d", datai.no);fprintf(fp,"%8s", );fprintf(fp,"%8.1lf", datai.Chinese);fprintf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论