C语言实现学生成绩标准管理系统.doc
《C语言实现学生成绩标准管理系统.doc》由会员分享,可在线阅读,更多相关《C语言实现学生成绩标准管理系统.doc(22页珍藏版)》请在咨信网上搜索。
学号 武汉理工大学华夏学院 课程设计汇报书 课程名称: 数据结构 题 目:用C语言实现成绩统计程序设计 系 名: 信息工程系 专业班级: 软件工程1121 姓 名: 指导老师: 黄启荃 年 6月 28日 课程设计任务书 设计题目:用C语言实现成绩统计程序设计 设计目标 1.巩固和加深课堂所学知识、学会分析研究数据对象特征及数据组织方法; 2.选择适宜数据逻辑结构和存放结构和对应操作,实现一个班成绩统计 3. 提升程序设计能力、加强查阅、利用资料能力、算法分析和程序设计素质培养 ; 设计任务 (在要求时间内完成下列任务) 〔问题描述〕给出n个学生m门课程考试成绩信息,每条信息由姓名、课程代号和分数组成,要求设计算法: (1)输入每个人各门课程成绩,计算每人平均成绩; (2)按平均成绩高低次序,打印出出个人名次,平均成绩相同为同一名次; (3)按名次列出每个学生姓名和各科成绩; 〔基础要求〕 学生考试成绩必需经过键盘输入,且需对输出进行格式控制; 〔算法提醒〕能够用选择排序、冒泡排序等多个排序算法求解; 具体要完成任务是: A. 编制完成上述问题C语言程序、进行程序调试并能得出正确运行结果。 B. 写出规范课程设计汇报书; 时间安排:6月24日---28日 第一天 部署题目,确定任务、查找相关资料 第二天~第四天 功效分析,编写程序,调试程序、运行系统; 第五天 程序验收、答辩;撰写设计汇报。 具体要求 1. 课程设计汇报按统一通用格式书写,具体内容以下: ① 设计任务和要求 ② 总体方案和说明 ③ 软件关键模块步骤图 ④ 源程序清单和注释 ⑤ 问题分析和处理方案(包含调式汇报,即在调式过程中碰到关键问题、处理方法及改善设想); ⑥ 小结和体会 附录:① 源程序(必需有简单注释) ② 使用说明 ③ 参考资料 2.每位学生应独立完成各自任务且天天最少在设计室工作半天; 指 导 教 师 签 名: 年 6月 22日 教研室主任(或责任老师)署名: 6月 24日 1.设计题目及要求 1.1设计题目 用C语言实现成绩统计程序设计。 1.2具体任务 对学生信息(包含学号、语文、数学、英语、平均分)进行管理,包含学生成绩信息输入、输出、查询、删除、排序、统计、退出.将学生成绩信息进行统计,信息内容包含:(1)学生学号(2)学生姓名(3)学生成绩。假设,现搜集到了一个班学生全部成绩信息,要求用C语言编写一个简单成绩管理系统,可进行录入、查询、修改和浏览等功效。学习相关开发工具和应用软件,熟悉系统建设过程。 2.系统设计思想 2.1 系统设计思想 在编写成绩统计管理系统程序过程中利用结构体,把问题中所包含变量定义在结构体中,利用函数来管理学生成绩,循环语句控制所选择选择界面,case语句进行选择。然后利用相关变量函数把学生成绩统计下来,利用循环语句再回到选择界面,利用查找函数,统计函数来查找统计学生成绩,利用冒泡排序法来对学生平均成绩进行排序。然后按成绩高低对学生进行排名。 2.2 系统算法设计 2.2.1系统模块结构图 系统结构图2-1所表示 图2-1 系统结构图 结束 开始 菜单显示 菜单选择 输入 退出 输出 保留 查找 排序 统计 插入 删除 2.2.2主函数步骤图 主函数图2-2所表示 结束 判定输入数 int num; char name[20];int score[3]; float average; 开始 输入选择操作 t=4 t=2 t=1 插入数据 查找 t=3 输出信息 输入 信息 选择排序法排序平均数 保留文件 按学号删除 输出平均分成绩 记载对应模块并进行处理 图2-2 主函数步骤图 3.系统调试和运行 3.1开发环境 Visual C++6.0,Microsoft Windows XP 3.2程序调试 3.2.1主界面调试 选择界面图3-1所表示 图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.心得和体会 回顾起此次课程设计,我感慨颇多,从拿到题目到完成整个编程,从理论到实践,在整整一个礼拜日子里,能够学到很多很多东西,同时不仅能够巩固了以前所学过知识,而且学到了很多在书本上所没有学到过知识。经过这次课程设计使我们知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己实际动手能力和独立思索能力。在设计过程中碰到问题,能够说得是困难重重,这毕竟第一次做,难免会碰到过多种多样问题,同时在设计过程中发觉了自己不足之处,对以前所学过知识了解得不够深刻,掌握得不够牢靠,比如说结构体。经过这次课程设计以后,一定把以前所学过知识熟悉了,此次课程设计结束了,我们经过这次实践学到了很多知识。学到了设计一个简单系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题能力,同时也使我们了解到团体合作可贵.编写程序是件细心活,稍不留神就会犯错,这就必需要求我们对待事情要认真!在编写程序过程中,错误不停出现,不一样类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能中途而废。 每一次课程设计全部是一次对自己曾经学习知识检验,经过每次实践,使自己认识之前不足和缺点,利于以后更正和以后学习发展方向,期望每一次课程设计全部能有一个很好提升 参考文件 [1]詹春华 李小艳 黄启荃•《计算机应用基础》•科学出版社 .5 [2]詹春华 杨沙•《C语言程序设计》•科学出版社.8 [3]谭浩强·C语言程序设计·北京·清华大学出版社,1月。 [4]徐孝凯 魏荣•《数据结构》•机械工业出版社•1996年 [5]徐孝凯•《数据结构简明教程》•清华大学出版社•1995年 [6]陈文博 朱青•《数据结构和算法》•机械工业出版社•1996年 附录:程序代码 #include <stdlib.h> #include <stdio.h> #include <string.h> #define MAXN 35 #define MAX_NAME 256 typedef struct student //学生信息 { int no; char name[MAX_NAME]; double Chinese; double math; double English; double mark_ave; double mark_tot; } STUDENT; /*-----------输入信息子程序---------*/ void input(STUDENT *data, int *len) { int no; putchar('\n'); printf("%s\n", "请输入新统计,假如需要退出目前菜单请输入-1."); printf("%s\n", "格式:\n学号\n"); printf("%s\n", "姓名 语文 数学 英语"); putchar('\n'); printf("如:\n"); printf("1\n"); printf("小明 93 95 89\n"); scanf("%d", &no); while(no != -1) { data[*len].no = no; scanf("%s %lf %lf %lf", 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"); printf("%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", data[i].no); printf("%8s", data[i].name); printf("%8.1lf", data[i].Chinese); printf("%8.1lf", data[i].math); printf("%10.1lf", data[i].English); printf("%12.1lf", data[i].mark_ave); printf("%10.1lf", data[i].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; i<len-1; i++) { for (k=i, j=i+1; j<len; j++) if (data[k].mark_ave > data[j].mark_ave) k=j; if (k != i) { temp = data[i]; data[i] = data[k]; data[k] = temp; } } } /*--------------------搜索子程序-----------------------*/ void find(STUDENT *data, int len) { int find_no, result ; int i; lab: result=0; printf("%s\n", "请输入需要查找学生学号,退出目前菜单请输入 -1."); scanf("%d", &find_no); if (find_no == -1) return; /*exit the fine sub program*/ while( data[result].no != find_no && result < len) result ++; if (result >= len ) { printf("%s\n", "未查询到相关信息"); goto lab; } else { system("cls"); printf("%s\n", "查询信息以下:"); 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("%8d", data[result].no); printf("%8s", data[result].name); printf("%8.1lf", data[result].Chinese); printf("%8.1lf", data[result].math); printf("%10.1lf", data[result].English); printf("%12.1lf", data[result].mark_ave); printf("%10.1lf", data[result].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_tot; int i; char name[MAX_NAME]; lab: printf("%s\n", "输入新统计,退出目前菜单请输入-1."); printf("%s\n", "格式:学号"); printf("%s\n", " 姓名 语文 数学 英语"); scanf("%d", &no); if (no == -1) return; data[*len].no = no; scanf("%s %lf %lf %lf", name, &Chinese, &math, &English); mark_ave=(Chinese+math+English)/3.0; mark_tot=Chinese+math+English; pos = 0; while ((data[pos].mark_ave < mark_ave) && (pos < *len) ) pos ++; for (i = *len-1; i >= pos; i--) data[i+1] = data[i]; data[pos].no = no; strcpy(data[pos].name, name); data[pos].Chinese = Chinese; data[pos].math = math; data[pos].English = English; data[pos].mark_ave = mark_ave; data[pos].mark_tot = mark_tot; (*len)++; goto lab; } /*-------------删除子程序--------------*/ void delete_item(STUDENT *data, int *len) { int no, i, pos; lab: pos=0; printf("%s\n", "输入需要删除学生学号,退出目前菜单请输入-1."); scanf("%d", &no); if (no == -1) return; while( (data[pos].no != no) && (pos < *len) ) pos = pos +1; if (pos >= *len) { printf("%s\n", "未找到需要删除学生"); goto lab; } else { for (i = pos+1;i < *len; i++) data[i-1] = data[i]; *len = *len -1; if (*len == 0) { printf("%s\n", "没有任何统计,请按回车键返回."); 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 (data[i].mark_ave <=59) no_59++; else if (data[i].mark_ave <=69) no_69++; else if (data[i].mark_ave <=79) no_79++; else if (data[i].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", "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 paint() { int i; system("cls"); printf("%55s\n", "武汉理工大学华夏学院学生成绩管理系统\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("%s\n", "请输入各操作对应序号:"); } 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,"%10s\n", "总分"); fprintf(fp,"========================================================================\n"); putchar('\n'); for (i = 0; i< len; i++) { fprintf(fp,"%8d", data[i].no); fprintf(fp,"%8s", data[i].name); fprintf(fp,"%8.1lf", data[i].Chinese); fprintf(fp,"%8.1lf", data[i].math); fprintf(fp,"%10.1lf", data[i].English); fprintf(fp,"%12.1lf", data[i].mark_ave); fprintf(fp,"%10.1lf\n", data[i].mark_tot); } fprintf(fp,"========================================================================\n"); fclose(fp); printf("文件已保留到\"成绩统计表.txt\""); getchar();getchar(); } /*-----------主程序--------------*/ void main() { STUDENT data[MAXN]; 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(data, &len); break; case '7': stat(data, len); break; case '8': save(data, len); break; default: if (ctrl_ch != '\n') printf("%s\n", "输入错误!"); break; } if (ctrl_ch != '\n') paint(); scanf("%c", &ctrl_ch); } } 设计过程中质疑(或答辩)记载: 1.提问:数据在程序中是怎样存放? 答:数据是以数组形式存放在结构体数组中。 2.提问:怎样实现由用户自己选择学生个数和科目数? 答:经过改变宏定义所定义数目来改变,或经过输入语句来由用户自己确定。 指导老师评语: 署名: 7 月 1 日- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 学生 成绩 标准 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文