学生成绩管理系统.docx
- 文档编号:6497609
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:20
- 大小:215.57KB
学生成绩管理系统.docx
《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统
学年论文
(课程论文、课程设计)
题 目:
学生成绩管理系统
作 者:
所在学院:
信息科学与工程学院
专业年级:
电子信息工程08-1班
指导教师:
盛琪
职 称:
讲师
2009年1月2日
大作业题目:
学生成绩管理系统
大作业目的:
(1)进一步熟悉C的语法知识和VC++环境;
(2)熟练掌握一些常用算法,如排序、查找,添加等;
(3)熟练掌握编程的技巧与方法以及编程的思想;
(4)动手操作熟悉并掌握C程序的编写与调试;
大作业要求:
设计一学生成绩管理系统,要求实现数据的录入、插入、删除、修改、查找、查询、排序、统计、显示等功能。
(1)数据结构:
学号、姓名、性别、年龄、3门课程成绩、总分、平均分。
(2)为用户提供友好的菜单选择界面,用户通过键入数字或者字母实现功能选择,进入相应的功能。
(3)功能:
a)数据录入——按顺序录入学生成绩。
b)删除记录——按学号查找要删除学生的信息并删除。
c)修改记录——按学号查找要删除学生的信息并修改。
d)查询记录——按学号等进行简单查询。
e)计算总分和平均分——做一个可被调用函数实现此功能并供其他函数调用。
f)排序:
可以按学号、姓名,总分,平均分,显示学生信息。
g)学生信息能以文件的形式保存,或读取。
h)
(1)对菜单界面;输出信息;提示信息;统计信息等等进行优化使界面更加友好,方便用户操作。
(2)在老师的指导下最终完成了编辑与排序函数并运行成功
i)退出
(4)用的对系统常量要求用符号常量进行规范,对于常功能和算法如排序要求做成自己的库函数,并使用头文件的方式实现分离编译。
(5)要求提供算法分析、程序流程图,对实验结果的处理包括程序调试结果、论及改进方案、实习体会等内容。
对于录入成绩范围作限定
printf("请输入学生的3门课成绩:
");
for(i=0;i { scanf("%d",&s[n].cj[i]); if((s[n].cj[i]<0]&&(s[n].cj[i]>100])) break; } 3大作业总体设计及源代码 1、总体设计 (设计思想): (1)将一个大的程序分解成几个小的程序段进行处理,即整个管系统的每一项菜单可以用一个函数表示,并在主函数中调用这些函数将其结合成一个整体,就是一个大的工程做起来简单化,这样以来使程序读起来更加清楚。 (2)而且对一个一个函数进行编写并调试可以更方便的检查出错误。 (3)对于要多次用到函数(计算;交换等等)单独做一个函数供其他函数调用能提高程序执行的效率。 (4)将用户界面做得更加友好化,更加便于操作。 (5)下面为函数体的大致结构: (根据此系统按照菜单等提示信息可实现对学生信息的管理。 ) 2、源代码 #include #include #defineM3 structstudent { intxh; charxm[20]; charxb; intnl; intcj[M]; intzf,pjf; }; structstudents[100]; intn=0; voidcalc(i) { intsum=0,j; for(j=0;j sum=sum+s[i].cj[j]; s[i].zf=sum; s[i].pjf=sum/M; } voidinput() { intlocate(intxh); intxh,i,sum; printf("\n请输入学生的学号: "); scanf("%d",&xh);getchar(); while(xh! =0) { if(locate(xh)! =-1) { printf("此学号已经存在! ! ! \n\n"); gotoabc; } s[n].xh=xh; printf("请输入学生的姓名: "); gets(s[n].xm); printf("请输入学生的性别: "); scanf("%c",&s[n].xb); printf("请输入学生的年龄: "); scanf("%d",&s[n].nl); sum=0; printf("请输入学生的3门课成绩: "); for(i=0;i { scanf("%d",&s[n].cj[i]); } calc(n); n++; abc: printf("\ninputxh: "); scanf("%d",&xh);getchar(); } } voidinsert() { inti,j; printf("请选择范围(0---%d): ",n); scanf("%d",&i); if(i<0||i>n) { printf("超出范围! ! ! \n",n); return; } for(j=n-1;j>=i;j--) { s[j+1].xh=s[j].xh; strcpy(s[j-1].xm,s[j].xm); s[j+1].xb=s[j].xb; s[j+1].nl=s[j].nl; s[j+1].cj[0]=s[j].cj[0]; s[j+1].cj[1]=s[j].cj[1]; s[j+1].cj[2]=s[j].cj[2]; } printf("请输入学生的学号: "); scanf("%d",&s[i].xh);getchar(); printf("请输入学生的姓名: "); gets(s[i].xm); printf("请输入学生的性别: "); scanf("%c",&s[i].xb); printf("请输入学生的年龄: "); scanf("%d",&s[i].nl); printf("请输入学生的3门课成绩: "); for(i=0;i scanf("%d",&s[i].cj[i]); calc(i); n=n+1; } voiddel() { intxh,i,j; intlocate(intxh); printf("inputxh: "); scanf("%d",&xh); i=locate(xh); if(i! =-1) { for(j=i+1;j { s[j-1].xh=s[j].xh; strcpy(s[j-1].xm,s[j].xm); s[j-1].xb=s[j].xb; s[j-1].nl=s[j].nl; s[j-1].cj[0]=s[j].cj[0]; s[j-1].cj[1]=s[j].cj[1]; s[j-1].cj[2]=s[j].cj[2]; } n=n-1; } else printf("删除失败! ! ! \n"); } intlocate(intxh) { inti,j; for(i=0;i if(s[i].xh==xh) { printf("%5d",s[i].xh); printf("%20s",s[i].xm); printf("%3c",s[i].xb); printf("%5d",s[i].nl); for(j=0;j printf("%5d",s[i].cj[j]); printf("%5d",s[i].zf); printf("%5d",s[i].pjf); printf("\n"); returni; } printf("没有找到此学号! ! ! \n"); return-1; } voiddisplay() { inti,j; printf("----------------------学生信息-------------------------\n"); printf("学号姓名性别年龄成绩1成绩2成绩3总分平均分\n"); for(i=0;i { printf("%7d",s[i].xh); printf("%8s",s[i].xm); printf("%8c",s[i].xb); printf("%8d",s[i].nl); for(j=0;j printf("%8d",s[i].cj[j]); printf("%8d",s[i].zf); printf("%8d",s[i].pjf); printf("\n"); printf("------------------------------------------------------------------------\n"); } } voidsave() { FILE*fp; inti; charfname[20]; printf("inputfname: "); gets(fname); fp=fopen(fname,"wb"); if(fp==NULL) { printf("不能打开文件! ! ! \n"); return; } for(i=0;i if(fwrite(&s[i],sizeof(structstudent),1,fp)! =1) { printf("无法写入! \n"); return; } printf("保存成功! ! ! \n"); fclose(fp); } voidload() { FILE*fp; charfname[20]; printf("inputfname: "); gets(fname); fp=fopen(fname,"rb"); if(fp==NULL) { printf("不能打开文件! ! ! \n"); return; } n=0; while(! feof(fp)) { if(fread(&s[n],sizeof(structstudent),1,fp)! =1) {break; } n++; } printf("打开成功! ! ! \n"); fclose(fp); } voidstas() { inta,b,c,d,e; inti; a=b=c=d=e=0; for(i=0;i { switch(s[i].pjf/10) { case0: case1: case2: case3: case4: case5: a++;break; case6: b++;break; case7: c++;break; case8: d++;break; case9: case10: e++;break; } } printf("<60%d%5.2f%%\n",a,a*100.0/n); printf("60--69%d%5.2f%%\n",b,b*100.0/n); printf("70--79%d%5.2f%%\n",c,c*100.0/n); printf("80--89%d%5.2f%%\n",d,d*100.0/n); printf("90--100%d%5.2f%%\n",e,e*100.0/n); } voidedit() { inti,xh,sum; printf("\ninput学号: "); scanf("%d",&xh);getchar(); i=locate(xh); if(i==-1)return; s[i].xh=xh; printf("xm: "); gets(s[i].xm); printf("xb: "); scanf("%c",&s[i].xb); printf("nl: "); scanf("%d",&s[i].nl); sum=0; printf("3门课成绩: "); scanf("%d%d%d",&s[i].cj[0],&s[i].cj[1],&s[i].cj[2]); calc(i); } voidswap(inta,intb) { intt; charxm[20]; charxb; t=s[a].xh;s[a].xh=s[b].xh;s[b].xh=t; strcpy(xm,s[a].xm);strcpy(s[a].xm,s[b].xm);strcpy(s[b].xm,xm); xb=s[a].xb;s[a].xb=s[b].xb;s[b].xb=xb; t=s[a].cj[0];s[a].cj[0]=s[b].cj[0];s[b].cj[0]=t; t=s[a].cj[1];s[a].cj[1]=s[b].cj[1];s[b].cj[1]=t; t=s[a].cj[2];s[a].cj[2]=s[b].cj[2];s[b].cj[2]=t; t=s[a].cj[0];s[a].cj[0]=s[b].cj[0];s[b].cj[0]=t; t=s[a].zf;s[a].zf=s[b].zf;s[b].zf=t; t=s[a].pjf;s[a].pjf=s[b].pjf;s[b].pjf=t; } voidsortbyxh() { inti,j; for(i=0;i for(j=0;j if(s[j].xh>s[j+1].xh) swap(j,j+1); } voidsortbyxm() { inti,j; for(i=0;i for(j=0;j if(strcmp(s[j].xm,s[j+1].xm)) swap(j,j+1); } voidsortbyzf() { inti,j; for(i=0;i for(j=0;j if(s[j].zf>s[j+1].zf) swap(j,j+1); } voidsortbypjf() { inti,j; for(i=0;i for(j=0;j if(s[j].pjf>s[j+1].pjf) swap(j,j+1); } voidsort() {inti; printf("1-------按学号排序\n"); printf("2-------按姓名排序\n"); printf("3-------按总分排序\n"); printf("4-------按平均分排序\n"); printf("请选择排序方法"); scanf("%d",&i); switch(i) { case1: sortbyxh();break; case2: sortbyxm();break; case3: sortbyzf();break; case4: sortbypjf();break; } } voidmain() { intc=1; while(c! =0) { printf("\n"); printf("**************菜单*******************\n"); printf("*1--录入*2--插入*\n"); printf("*3--删除*4--编辑*\n"); printf("*5--查找*6--排序*\n"); printf("*7--显示*11-统计*\n"); printf("*8--保存*9--读取*\n"); printf("*0--退出**\n"); printf("***************************************\n"); printf("inputyourchoice: "); scanf("%d",&c);getchar(); switch(c) { case1: input();break; case2: insert();break; case3: del();break; case4: edit();break; case5: {intxh; printf("inputxh: "); scanf("%d",&xh); locate(xh);break; } case6: sort();break; case7: display();break; case8: save();break; case9: load();break; case11: stas(); case0: break; } } } 3、调试结果 (1)实现成绩的录入 (2)实现了输出信息的优化 (3)对信息修改后的结果(编辑)。 (4)实现了信息的保存与读取 (5)实现了用不同方法按学号;姓名;总分等排序 此为对总分排序(其它雷同) (6)实现了查找功能 (7)优化并运行统计函数的结果 等等 4、总结 通过小学期的学习,使我进一步加深了对C语言的熟悉,对其语法知识有了进一步学习与练习,并掌握编程的一些技巧和方法以及它的思想。 熟悉了C的语法知识和VC++环境;掌握了如何对程序调试并从中发现错误并及时改正; 并且在老师的指导下掌握了C语言的一些基本算法(如: 排序的几种方法;查找功能;等等)以及对于编程内容的宏观掌握;学会怎样将程序优化提高效率。 学会了将一个较为庞大的程序进行分解成许多个小的程序块进行编写,并最终将其整合到一块(通过函数调用等形式实现) 通过亲身的操作,对程序的调试运行过程中,深切感受到了编程思想的重要性,了解到了对程序进行调试的重要性,并在调试过程中弥补许多平时学习所存在的漏洞。 而且清楚认识到了: 程序调试是需要很多经验和技巧的,这种经验的积累,也启发和帮助我们在写程序时避免一些常见错误。 最重要的是激发了我们编程的激情。 新疆大学课程论文(设计)、学年论文评分表 题目 学生成绩管理系统 作者 吉兵 专业年级 电信08-1班 指导教师 盛琪 指导教师评语及 评分建议 指导教师: 年月日 院 (部) 或 教 研 室 意 见 学院或教研室主任: 年月日 1.计一汉字造字程序,能生成自己的汉字字库,且能实现汉字的保存、读取、修改、删除等功能。 (字库可分为8x8,16x16,或24x24). 2.设计一程序显示bmp图形文件(2色,16色,256色),或其它的类型的图形文件,如: gif文件,jpeg,或tiff文件. 3.设计一画图程序,用户可以画出自己任意的所需要的图,可以实现图形文件的保存与读取(尽可能的以bmp形式)、修改、旋转(特定的角度),着色等功能。 4.试设计一个人喜爱的小游戏,如中国象棋对奕程序、扑克游戏等,能依据游戏自身的规则进行简单的对战。 hksq@
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)