c语言大作业学生成绩系统.docx
- 文档编号:7141137
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:21
- 大小:156.86KB
c语言大作业学生成绩系统.docx
《c语言大作业学生成绩系统.docx》由会员分享,可在线阅读,更多相关《c语言大作业学生成绩系统.docx(21页珍藏版)》请在冰豆网上搜索。
c语言大作业学生成绩系统
学年论文
(学生成绩管理系统)
题 目:
学生成绩管理系统
作 者:
所在学院:
专业年级:
指导教师:
职 称:
2015年5月27日
参考文献…………………………………………………………………………………………………………………………………..20
基本信息
姓名
学号
班级
课程名称
任课老师
学期
得分
引言
管理信息系统正在向着网络化、智能化和集成化等趋势发展。
学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。
学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,查询,保存以及退出几方面的功能,是现实问题的迫切要求。
本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。
达到提高学生成绩管理效率的目的。
与传统管理方法相比有明显的优点:
查找方便,可靠性高,保密性好,成本低。
彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。
提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。
同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。
学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。
目前各个高校的基本情况是:
每次考试结束,老师们都要统计大量的学生成绩,这些数据的归档、统计工作任务重,统计结束后往往错误百出。
工作量之大,查阅,维护都有不同程度的问题存在。
所以,学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,查询,保存以及退出等几方面的功能,是现实问题的迫切要求。
学院在教学这一部分主要是由教务处对课程、对学生、对学生成绩进行合理地安排以及统筹计划,以及让教务处在最短的时间段把学生的成绩核算出来,提高教务处的办事效率。
同时,能够随时对学生、学生成绩进行各种查询和统计,以及很好地对系统进行维护。
本课程设计主要运用C语言中的结构体、数组、文件等数据结构设计一个简单的管理系统应用程序。
本程序设计出了学生成绩管理系统的基本功能,用C语言编程的学生成绩管管理系统,要求实现学生成绩管系统中,录入成绩、查询成绩(按学号查找和按名字查找)保存和退出系统等功能。
下面具体的介绍本程序的基本功能:
第1章程序说明和基本功能
1.1程序说明
1)成绩录入功能
可以保存每个学生的多门课成绩;
成绩一边录入,一边统计每个学生各门课程的总成绩;
录入成绩的时候自动保存,不必手动保存。
2)成绩查询功能
提供“按学号查询”和“按姓名查询”等两种查询。
用户看自己的情况可以调选进行有关的成绩查询;
如果查询成功的话,分别输出学生的“学号”、“姓名”、“各门课程的成绩”、“各门课程的总成绩”和“平均成绩”;
如果查询失败,输出“没有这个同学”并返回查询界面;
如果再不想查询输入“0”可以返回主页面。
3)建立文件功能
存储文件使用指定文件名;
自动保存输入记录在文件里面;
如果已有文件,不保存文件。
4)退出功能
该功能用使用完后退出程序。
1.2整体功能
1)可以随时添加、检索、保存、退出。
(注:
学号和姓名是随机输入的)
2)默认的学生总数40,课程总数10。
这两个数字看情况可以改。
3)是学号可由11位字符(11位数字)组成的。
4)使姓名可由20位字符组成的。
5)使课程名称可由20位字符组成的。
6)学生成绩按照学生总数和课程总数确定。
7)录入学生成绩的时候,一边录入成绩,一边计算机自动计算总成绩和平均成绩。
8)将输出学生信息和成绩栏,例如
姓名学号英语C语言数字电路总成绩平均成绩
xxxx1010112222496908527190.3
9)使用菜单实现功能的正确的选择。
10)所有节点信息和成绩都是动态生成。
1.3测试程序
应列出测试大纲对程序进行测试;
应保证测试用例测试到程序的各种边缘情况.
1.4课程设计的总体设计(包含的功能模块)
1)函数声明部分和全局变量定义部分:
#defineMAXN40
#defineMAXM11
chardaris_ismi[MAXM][12];
charokuxnumuri[MAXN][11];
charismi[MAXN][20];
floatdaris_natijisi[MAXN][MAXM];
floatomumiynatijisi[MAXN];
intm,n;
voidkirguzux();
voidtakxurux();
voidsaklax();
voidqikinix();
2)成绩录入功能:
voidkirguzux();
3)成绩查找功能:
voidtakxurux();
4)成绩保存功能:
voidsaklax();
5)退出功能:
voidqikinix();
1.5各模块(函数)的功能介绍,设计描述
1)模块的功能介绍:
2)主函数:
voidmain()
3)成绩录入:
voidkirguzux();
4)成绩查找:
voidtakxurux();
5)按学号查找:
voidtakxurux1();
6)按姓名查找:
voidtakxurux2();
7)成绩保存:
voidsaklax();
8)退出功能:
voidqikinix();
1.6数组设计描述
#defineMAXN40
#defineMAXM11
chardaris_ismi[MAXM][12];
charokuxnumuri[MAXN][11];
charismi[MAXN][20];
floatdaris_natijisi[MAXN][MAXM];
floatomumiynatijisi[MAXN];
intm,n;
这是一个二维数组,其中MAXN表示班级人数的最大值,MAXM表示课程门数的最大值,ismi表示学生的姓名,okuxnumuri表示学生的学号,daris_ismi表示每门课程的名称,daris_natijisi表示学生每门课程的成绩,omumiynatijisi表示学生每门课程的总成绩,n表示我们当前输入的学生人数,m表示我们当前输入的课程门数
。
第2章系统总体设计
本系统设计的函数是由一个主函数几个子函数组成的。
首先构思大局编出一个主函数,然后根据要实现的功能逐步细分设计,分别解决输入、查找、保存、退出功能的子函数编程中遇到的问题。
首先通过结构体的定义,确定成绩管理系统的项目和大小。
首先通过输入函数添加信息,然后再逐步编写和验证其它功能。
显示函数的设计利用C语言的循环功能依次输出信息。
查找是用一个字符串比较得出两个相同的字符串的方法找出用户要查找的人,for循环和while循环在这此设计中也起了很大的作用。
2.1概要设计
系统功能模块图如图1所示:
图1系统功能模块图
2.2主函数
主函数部分,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图2所示:
2.3输入成绩
将结构体数组分成几个数组分别对每个数组赋值,用for循环对不同地址的数组分别赋值。
其流程图如图3所示:
2.4查询成绩
查询成绩功能的流程图如图4所示:
假
图4查询成绩函数流程图
2.5保存功能
保存功能的流程图如图5所示:
2.6退出功能
退出功能用于退出当前程序,按4键便会退出系统
即流程图如图6所示:
第3章实验结果
3.1录入成绩
请输入全班人数:
2↙
请输入课程门数:
2↙
请输入2门课程名称:
第1门课程名称:
英语↙
第2门课程名称:
C语言↙
请输入2个学生的数据:
请输入第1个学生的数据:
学号:
2563011111↙
姓名:
xxxxxxxx↙
2门课程的成绩:
英语:
98↙
C语言:
97↙
请输入第2个学生的数据:
学号:
201542112111↙
姓名:
xxxxxxxx↙
2门课程的成绩:
英语:
94↙
C语言:
93↙
输入成功。
3.2查询成绩
选1:
请输入要查询的学号:
1425522222↙
学号:
14255522555555
姓名:
xxxxxxxx
英语:
98
C语言:
97
总成绩:
195.00
平均成绩:
97.50
<如果>25442111444↙
没有这个同学。
选2:
请输入你要查询的姓名:
xxxxxxx↙
学号:
14252525255253
姓名:
xxxxxxx
英语:
94
C语言:
93
总成绩:
187.00
平均成绩:
93.50
<如果>麦麦提↙
没有这个同学。
选0:
返回主页面。
3.3成绩保存
请输入文件名:
信息安全13-2↙
保存完毕。
这次的课程设计总体来说,比前段时期的C语言综合实验难度大了好多,而且综合性更强,少了综合实验是老师给我们提供的那些函数,所有的函数都要自己去想,自己去找,翻阅好多的书,上机自己动手体验,极大的促进了自己的动手能力及独立思考能力,总体上完成了自己感想的基本功能,有待改进的地方就是未能设置很好的界面。
第4章程序运行结果截图
图7主函数的运行结果
图8成绩查询功能的运行结果
图9成绩保存功能的运行结果
图10退出功能的运行结果
程序源代码
#include
#include
#include
#defineMAXN40//班里的最多人数
#defineMAXM10//最多课程门数
chardaris_ismi[MAXM][12];//保存所有课程的名称
charokuxnumuri[MAXN][11];//保存学号
charismi[MAXN][20];//保存姓名
floatdaris_natijisi[MAXN][MAXM];//保存全班所有课程名称
floatomumiynatijisi[MAXN];//保存总成绩
intm,n;//全局变量n,m保存全班实际人数和课程数
voidkirguzux();
voidtakxurux();
voidsaklax();
voidqikinix();
voidmain();
voidkirguzux()//输入成绩
{
inti,j;
printf("\n\n\n");
printf("\t\t请输入全班人数:
");
scanf("%d",&n);
printf("\t\t请输入课程门数:
");
scanf("%d",&m);
printf("\t\t请输入%d门课程名称:
\n",m);
for(j=0;j { printf("\t\t第%d门课程名称: ",j+1); scanf("%s",&daris_ismi[j]); } printf("\n\t\t请输入%d个学生的数据: \n",n); for(i=0;i { printf("\n\t\t请输入第%d个学生的数据: \n",i+1); printf("\t\t学号: "); scanf("%s",&okuxnumuri[i]); printf("\t\t姓名: "); scanf("%s",ismi[i]); printf("\n\t\t%d门课程的成绩: \n",m); omumiynatijisi[i]=0;//边输入边统计总成绩 for(j=0;j { printf("\t\t%s: ",daris_ismi[j]); scanf("%f",&daris_natijisi[i][j]); omumiynatijisi[i]=omumiynatijisi[i]+daris_natijisi[i][j]; } } printf("\n\n\n\t\t\t输入成功。 \n"); } voidtakxurux()//查询成绩 { intj; inttakxurux1(); inttakxurux2(); inttallax,izdax; while (1) { printf("\n\n\n\n\n"); printf("\t>>>>>>>>>>>>信息安全13-2班学生成绩管理系统<<<<<<<<<<<<\n\n\n"); printf("\t\t*****************************************\n"); printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t\t1.------按学号查询\n"); printf("\t\t2.------按姓名查询\n"); printf("\t\t0.------返回\n"); printf("\t\t_____________________\n"); printf("\t\t*****************************************\n"); printf("\n\t\t请输入您的选择编号: "); scanf("%d",&tallax); switch(tallax) { case1: izdax=takxurux1();break; case2: izdax=takxurux2();break; case0: return; } if(izdax! =-1) { printf("\n\n\t*******************************************"); printf("\n\n\t\t学号: %5s\n\n",okuxnumuri[izdax]); printf("\t\t姓名: %5s\n",ismi[izdax]); for(j=0;j { printf("\n\t\t%s: ",daris_ismi[j]); printf("%12.1f\n",daris_natijisi[izdax][j]); } printf("\n\t\t总成绩: %10.2f",omumiynatijisi[izdax]); printf("\n\n\t\t平均成绩: %10.2f",omumiynatijisi[izdax]/m); } else printf("\n\n\n\t\t\t没有这个同学。 \n\n\n"); } } inttakxurux1()//按学号查询 { inti; chars_okuxnumuri[11]; printf("\n\t\t请输入要查询的学号: "); scanf("%s",s_okuxnumuri); for(i=0;i if(strcmp(okuxnumuri[i],s_okuxnumuri)==0) break; if(i returni; elsereturn-1; } inttakxurux2()//按姓名查询 { inti; chars_ismi[20]; printf("\n\t\t请输入要查询的姓名: "); scanf("%s",s_ismi); for(i=0;i<=n;i++) if(strcmp(ismi[i],s_ismi)==0) break; if(i returni; elsereturn-1; } voidsaklax()//保存成绩 { FILE*fp; charwenjianming[20]; inti,j; printf("\n\n\n\n\n"); printf("\t\t\t请输入文件名: "); scanf("%s",wenjianming); if((fp=fopen(wenjianming,"w"))==NULL) { printf("\n\n\n\n\n"); printf("\t\t\t文件无法保存。 \n"); return; } fprintf(fp,"%d%d",n,m); for(j=0;j fprintf(fp,"%s",daris_ismi[j]); for(i=0;i { fprintf(fp,"%s%s",okuxnumuri[i],ismi[i]); for(j=0;j fprintf(fp,"%5.1f",daris_natijisi[i][j]); } fclose(fp); printf("\n\n\n\n\n"); printf("\t\t\t保存完毕。 \n"); } voidqikinix()//退出 { printf("\n\n\n\n\n"); printf("\t\t>>>>>>信息安全13-2班学生成绩管理系统<<<<<<\n\n\n"); printf("\n\t\t**************************************\n"); printf("\t\t******************************************\n"); printf("\t\t**\t\t\t\t\t**"); printf("\n\t\t**\t\t谢谢您的使用。 \t**\n"); printf("\t\t**\t\t\t\t\t**"); printf("\n\t\t******************************************\n"); printf("\t\t**************************************\n\n\n\n"); exit(0); } voidmain() { inttallax; while (1) { printf("\n\n\n"); printf("\t************信息安全13-2班学生成绩管理系统************\n\n"); printf("\t\t||-----------------------------------------------------------------||\n"); printf("\t\t|| (1)成绩录入||\n"); printf("\t\t||-----------------------------------------------------------------||\n"); printf("\t\t|| (2)成绩查询||\n"); printf("\t\t||-----------------------------------------------------------------||\n"); printf("\t\t||(3)成绩保存||\n"); printf("\t\t||-----------------------------------------------------------------||\n"); printf("\t\t||(4)退出||\n"); printf("\t\t||-----------------------------------------------------------------||\n"); printf("\n\t\t\t您好! 请输入您的选择: "); scanf("%d",&tallax); if(tallax>=1&&tallax<=4) { switch(tallax) { case1: kirguzux();break; case2: takxurux();break; case3: saklax();break; case4: qikinix();break; } } else { printf("\n\n\n\n\n\t\t**************************************\n"); printf("\t\t******************************************\n"); printf("\t\t**\t\t\t\t\t**"); printf("\n\t\t**\t输入错误,请重新输入! \t**\n"); printf("\t\t**\t\t\t\t\t**"); printf("\n\t\t******************************************\n"); printf("\t\t**************************************\n"); } } } 总结 这次的课程设计总体来说,比前段时期的C语言综合实验难度大了好多,而且综合性更强,少了综合实验是老师给我们提供的那些函数,所有的函数都要自己去想,自己去找,翻阅好多的书,上机自己动手体验,极大的促进了自己的动手能力及独立思考能力,总体上完成了自己感想的基本功能,有待改进的地方就是未能设置很好的界面。 这就只能靠自己的上机经验来分析判断错误的所在了。 所以程序的调试是一个技巧性很强的工作,它可能比编一个程序耗时更多。 由此可看出上机实践的重要性。 在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。 不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。 谢谢给我指点迷津的老师。 紧紧张张的一周实习即将过去,从刚开始的不只如何下手到最后看到自己的程序按自己的想法运行,心里时不时的有一种喜悦。 通过这一周的实习,我认识到书上和老师教的内容是有限的,要想掌握更多的知识我们必须多动脑,多思考,不断地靠自己去学习,同时我们还应向他人请教,从而了解更多自己不知道的知识。 回头看来,编写这个程序并不像原来想像的那么难,我们要相信自己,无论做什么事,只要我们仔细的思考了,认真的去做了,我们就一定能做好。 通过这周的编程我发现了自己的一些不足,在编写时经常犯一些低级错误,由于自己的马虎而浪费了不少时间。 在不知如何进行的时候有一种不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业 学生 成绩 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)