C语言实现学生成绩管理系统.docx
- 文档编号:10391706
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:23
- 大小:90.46KB
C语言实现学生成绩管理系统.docx
《C语言实现学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言实现学生成绩管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
C语言实现学生成绩管理系统
学号
武汉理工大学华夏学院
课程设计报告书
课程名称:
数据结构
题目:
用C语言实现成绩统计程序的设计
系名:
信息工程系
专业班级:
软件工程1121
姓名:
指导教师:
黄启荃
2013年6月28日
课程设计任务书
设计题目:
用C语言实现成绩统计程序的设计
设计目的
1.巩固和加深课堂所学知识、学会分析研究数据对象的特性及数据的组织方法;
2.选择合适的数据的逻辑结构和存储结构以及相应操作,实现一个班的成绩统计
3.提高程序设计能力、加强查阅、运用资料的能力、算法分析与程序设计素质培养;
设计任务(在规定的时间内完成下列任务)
〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法:
(1)输入每个人的各门课程的成绩,计算每人的平均成绩;
(2)按平均成绩的高低次序,打印出出个人的名次,平均成绩相同的为同一名次;
(3)按名次列出每个学生的姓名和各科成绩;
〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制;
〔算法提示〕可以用选择排序、冒泡排序等多种排序算法求解;
具体要完成的任务是:
A.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。
B.写出规范的课程设计报告书;
时间安排:
6月24日---28日
第一天
布置题目,确定任务、查找相关资料
第二天~第四天
功能分析,编写程序,调试程序、运行系统;
第五天
程序验收、答辩;撰写设计报告。
具体要求
1.课程设计报告按统一通用格式书写,具体内容如下:
①设计任务与要求
②总体方案与说明
③软件主要模块的流程图
④源程序清单与注释
⑤问题分析与解决方案(包括调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);
⑥小结与体会
附录:
①源程序(必须有简单注释)②使用说明③参考资料
2.每位学生应独立完成各自的任务且每天至少在设计室工作半天;
指导教师签名:
2013年6月22日
教研室主任(或责任教师)签名:
2013年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所示
t=4
t=2
t=1
t=3
图2-2主函数流程图
3.系统调试与运行
3.1开发环境
VisualC++6.0,MicrosoftWindowsXP
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]詹春华李小艳黄启荃?
《计算机应用基础》?
科学出版社2011.5
[2]詹春华杨沙?
《C语言程序设计》?
科学出版社2011.8
[3]谭浩强·C语言程序设计·北京·清华大学出版社,2000年1月。
[4]徐孝凯魏荣?
《数据结构》?
机械工业出版社?
1996年
[5]徐孝凯?
《数据结构简明教程》?
清华大学出版社?
1995年
[6]陈文博朱青?
《数据结构与算法》?
机械工业出版社?
1996年
附录:
程序代码
#include
#include
#include
#defineMAXN35
#defineMAX_NAME256
typedefstructstudent//学生信息
{
intno;
charname[MAX_NAME];
doubleChinese;
doublemath;
doubleEnglish;
doublemark_ave;
doublemark_tot;
}STUDENT;
/*-----------输入信息子程序---------*/
voidinput(STUDENT*data,int*len)
{
intno;
putchar('\n');
printf("%s\n","请输入新的记录,如果需要退出当前菜单请输入-1.");
printf("%s\n","格式:
\n学号\n");
printf("%s\n","姓名语文数学英语");
putchar('\n');
printf("如:
\n");
printf("1\n");
printf("小明939589\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);
}
}
/*---------------输出信息子程序---------------*/
voidoutput(STUDENT*data,intlen)
{
inti;
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 { 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(); } /*--------------排序子程序------------*/ voidsort(STUDENT*data,intlen) { inti,j,k; STUDENTtemp; for(i=0;i for(k=i,j=i+1;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; } } } /*--------------------搜索子程序-----------------------*/ voidfind(STUDENT*data,intlen) { intfind_no,result; inti; lab: result=0; printf("%s\n","请输入需要查找的学生的学号,退出当前菜单请输入-1."); scanf("%d",&find_no); if(find_no==-1)return;/*exitthefinesubprogram*/ while(data[result].no! =find_no&&result if(result>=len){ printf("%s\n","未查询到相关信息"); gotolab; } 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'); gotolab; } } /*-----------------插入子程序-------------*/ voidinsert(STUDENT*data,int*len) { intno,pos; doubleChinese,math,English,mark_ave,mark_tot; inti; charname[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 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)++; gotolab; } /*-------------删除子程序--------------*/ voiddelete_item(STUDENT*data,int*len) { intno,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","未找到需要删除的学生"); gotolab; } 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; } gotolab; } } /*---------------统计子程序------------*/ voidstat(STUDENT*data,intlen) { intno_59=0,no_69=0,no_79=0,no_89=0,no_100=0; inti; for(i=0;i if(data[i].mark_ave<=59)no_59++; elseif(data[i].mark_ave<=69)no_69++; elseif(data[i].mark_ave<=79)no_79++; elseif(data[i].mark_ave<=89)no_89++; elseno_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(); } /*---------------显示信息子程序------------*/ voidpaint() { inti; 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","请输入各操作对应的序号: "); } voidsave(STUDENT*data,intlen)//将数据保存到文件 { inti; 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 { 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(); } /*-----------主程序--------------*/ voidmain() { STUDENTdata[MAXN]; intlen=0; charctrl_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(dat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 学生 成绩管理系统