收藏 分销(赏)

C语言实现学生成绩标准管理系统.doc

上传人:精**** 文档编号:2993291 上传时间:2024-06-12 格式:DOC 页数:22 大小:228.04KB
下载 相关 举报
C语言实现学生成绩标准管理系统.doc_第1页
第1页 / 共22页
C语言实现学生成绩标准管理系统.doc_第2页
第2页 / 共22页
C语言实现学生成绩标准管理系统.doc_第3页
第3页 / 共22页
C语言实现学生成绩标准管理系统.doc_第4页
第4页 / 共22页
C语言实现学生成绩标准管理系统.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

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

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

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

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

5、1系统模块结构图 系统结构图2-1所表示图2-1 系统结构图结束开始 菜单显示菜单选择输入退出输出保留查找排序统计插入删除2.2.2主函数步骤图 主函数图2-2所表示结束判定输入数 int num; char name20;int score3;float average;开始 输入选择操作t=4t=2t=1插入数据查找t=3输出信息输入信息选择排序法排序平均数保留文件按学号删除输出平均分成绩记载对应模块并进行处理图2-2 主函数步骤图3.系统调试和运行3.1开发环境Visual C+6.0,Microsoft Windows XP3.2程序调试 3.2.1主界面调试 选择界面图3-1所表示图

6、3-1 选择界面截图3.2.2成绩录入模块成绩录入界面 录入界面图3-2所表示 图3-2 成绩录入模块3.2.3成绩查询模块成绩查询界面图3-3所表示 图3-3 成绩查询模块3.2.4成绩统计模块成绩统计界面图3-4所表示图3-4 成绩统计模块4.设计评价和修改在数据结构课程设计过程中,很多知识点全部没有学过,全部要靠自己到课外资料中去查找。在用时候难免出现这么那样错误。如开始设计出来菜单不是预想那样,而是窗中出现混乱,要经过自己一遍遍调试和修改,和老师同学帮助下逐步改善完善,最终才逐步成型。运行也基础达成所需要运算要求。5.心得和体会回顾起此次课程设计,我感慨颇多,从拿到题目到完成整个编程,

7、从理论到实践,在整整一个礼拜日子里,能够学到很多很多东西,同时不仅能够巩固了以前所学过知识,而且学到了很多在书本上所没有学到过知识。经过这次课程设计使我们知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己实际动手能力和独立思索能力。在设计过程中碰到问题,能够说得是困难重重,这毕竟第一次做,难免会碰到过多种多样问题,同时在设计过程中发觉了自己不足之处,对以前所学过知识了解得不够深刻,掌握得不够牢靠,比如说结构体。经过这次课程设计以后,一定把以前所学过知识熟悉了,此次课程设计结束了,我们经过这次实践学到了很

8、多知识。学到了设计一个简单系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题能力,同时也使我们了解到团体合作可贵.编写程序是件细心活,稍不留神就会犯错,这就必需要求我们对待事情要认真!在编写程序过程中,错误不停出现,不一样类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能中途而废。每一次课程设计全部是一次对自己曾经学习知识检验,经过每次实践,使自己认识之前不足和缺点,利于以后更正和以后学习发展方向,期望每一次课程设计全部能有一个很好提升参考文件1詹春华 李小艳 黄启荃计算机应用基础科学出版社

9、 .52詹春华 杨沙C语言程序设计科学出版社.83谭浩强C语言程序设计北京清华大学出版社,1月。4徐孝凯 魏荣数据结构机械工业出版社1996年5徐孝凯数据结构简明教程清华大学出版社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

10、;double mark_tot; 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, &no);while(no != -1) data*len.no = no;scanf(%s %lf %lf %lf,

11、data*len.name, &data*len.Chinese, &data*len.math,&data*len.English);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, &no);/*-输出信息子程序-*/void output(STUDENT *data, int len) int i;system(cls); pri

12、ntf(%8s, 学号); printf(%8s, 姓名); printf(%8s, 语文); printf(%8s, 数学); printf(%10s, 英语); 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, datai.name); printf(%8.1lf, datai.Chinese); printf(%8.1lf, datai.

13、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(); getchar();/*-排序子程序-*/void sort(STUDENT *data, int len) int i,j,k; STUDENT temp; for (i=0; ilen-1; i+) for (k=i

14、, j=i+1; j 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; printf(%sn, 请输入需要查找学生学号,退出目前菜单请输入 -1.); scanf(%d, &find_no); if (find_no = -1) return; /*exit the fine sub program*/ while( data

15、result.no != find_no & result = len ) printf(%sn, 未查询到相关信息); goto lab; else system(cls); printf(%sn, 查询信息以下:); for (i =0; i 80; i+) putchar(=); putchar(n); printf(%8s, 学号); printf(%8s, 姓名); printf(%8s, 语文); printf(%8s, 数学); printf(%10s, 英语); printf(%12s, 平均分); printf(%10s, 总分); putchar(n); printf(%8

16、d, dataresult.no); printf(%8s, dataresult.name); printf(%8.1lf, dataresult.Chinese); printf(%8.1lf, dataresult.math); printf(%10.1lf, dataresult.English); printf(%12.1lf, dataresult.mark_ave); printf(%10.1lf, dataresult.mark_tot); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); goto lab; /*

17、-插入子程序-*/void insert(STUDENT *data, int *len) int no, pos;double Chinese, math, English, mark_ave, mark_tot;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,

18、&Chinese, &math, &English); mark_ave=(Chinese+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; datapo

19、s.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.no != no) & (pos = *len) printf(%sn, 未找到需要删除学生); goto lab;

20、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 =59) no_

21、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, 80-89); printf(%10s, 9

22、0-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 paint() int i;system(cls); print

23、f(%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= 79; i+) putchar(=); putchar(n); printf(%sn, 请输入各

24、操作对应序号:);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(f

25、p,%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, datai.mark_tot); fprintf(fp,=n);fclose(fp);printf(文件已保留到成绩统计表.txt);getchar();getchar();/*-主程

26、序-*/void main() STUDENT dataMAXN; int len = 0; char ctrl_ch; paint(); scanf(%c, &ctrl_ch); while (ctrl_ch != 0) switch(ctrl_ch) case 1: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(d

27、ata, &len);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, &ctrl_ch); 设计过程中质疑(或答辩)记载:1提问:数据在程序中是怎样存放? 答:数据是以数组形式存放在结构体数组中。2提问:怎样实现由用户自己选择学生个数和科目数? 答:经过改变宏定义所定义数目来改变,或经过输入语句来由用户自己确定。指导老师评语: 署名: 7 月 1 日

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服