学生成绩管理系统 高质量C语言程序.docx
- 文档编号:29852535
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:27
- 大小:74.29KB
学生成绩管理系统 高质量C语言程序.docx
《学生成绩管理系统 高质量C语言程序.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统 高质量C语言程序.docx(27页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统高质量C语言程序
学生成绩管理系统
摘要:
学生成绩管理系统是学校不可或缺的一个组成部分,随着计算机技术的逐渐发展,计算机在教育系统中的应用得到了巨大的发展。
教务管理正在逐步迈向管理信息现代化。
但是我国的教务管理信息化水平还处在初级阶段,主要表现在对学生的成绩管理、学生的课程管理还是采用原有的人工管理方式。
学校的规模不断扩大,学生数量急剧增加,有关学生的各种数据也成倍增长。
面对庞大的信息量,这时的人工管理几乎无法实现,在这种情况下用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有教务管理系统来提高学生成绩管理工作的效率。
过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量和减少人为的错误。
本次我们组选的就是学生成绩管理系统,要实现对学生成绩、课程的相关管理。
关键词:
成绩管理、C语言项目、程序设计、程序分析
1.设计目的和要求
1.1目的
1.2要求
2.总体设计
2.1模块设计
2.2类的分析与设计
3.详细设计
3.1修改数据功能模块设计
3.1.1详细功能描述
3.1.2设计思想
3.1.3主要代码
3.2删除数据功能模块设计
3.2.1详细功能描述
3.2.2设计思想
3.2.3主要代码
3.3增加数据功能模块设计
3.3.1详细功能描述
3.3.2设计思想
3.3.3主要代码
4.调试分析
4.1修改数据功能
4.2删除数据功能
4.3增加数据功能
5.总结
6.答辩记录
7.教师意见
1、设计目的和要求
1.1目的
以本班同学的高等数学、大学物理、C语言、大学英语的成绩为基础,建立一个可以实现以下功能的学生成绩管理系统。
1.2要求
A.信息维护
信息数据以文件形式保存,要求能够实现对学生信息数据的维护,其中包括增加、删除以及修改学生信息。
B.信息查询
要求能够能够实现按学生姓名和学号两种方式查询学生各课成绩。
C.成绩统计
输入任意课程名和一个分数段,统计该课程在该分数段的学生信息。
D.成绩排序
对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果。
2、总体设计
2.1模块设计
根据设计目的和要求,我们首先将程序分成四个模块,分别为信息维护、信息查询、成绩统计及成绩排序。
而在各个主模块中,我们又将其分成若干个小模块,从而实现程序设计的要求。
其中,模块设计如下:
信息维护—1、增加学生信息2、删除学生信息3、修改学生信息;信息查询--1、按学号查询2、按姓名查询;成绩统计;成绩排序—1、按高数排序2、按大物排序3、按C语言排序4、按英语排序。
所以最终实现的功能有:
1、增加学生信息2、删除学生信息3、修改学生信息4、按学号查询成绩5、按姓名查询成绩6、成绩按某门课程某个分数段统计7、成绩按某门课程排序。
一个方便学校使用的学生成绩管理系统,这个系统的功能比较完善。
使用类内函数和主函数中的switch语句实现多分支选择结构,进而实现该系统的各项功能。
该系统能实现7项功能。
设计本次实验所用到的知识点有:
类、指针、数组,构造函数,动态内存分配,switch语句、if语句、while()语句等。
2.2类的分析与设计
student类中的构造函数是来实现当类生成对象时用于对数据的初始化。
例如stud[].name是对学生姓名的初始化,stud[].math是对学生高等数学成绩的初始化,而stud[].Clanguage是对学生c语言成绩的初始化。
而student类将有内在联系的,成组出现的学生姓名,学号,各科成绩结合在一起,形成一种组合型数据结构。
3.详细设计
3.1修改数据功能模块设计
3.1.1详细功能描述
该部分是用来修改已录入的学生的数据信息。
3.1.2设计思想
我们采用通过学号修改的方法来修改已录入的学生的数据信息。
当输入学生学号后,系统会提示“请选择您要修改的内容:
”同时给出要修改的选项,包括姓名高数、大物、c语言、英语、及退出供您选择。
当做出选择后,会得到“请输入新数据”的提示。
该部分通过if语句、switch语句和while语句实现其功能。
3.1.3主要代码
voidxiugai(structStudent_typestud[])/*修改*/
{
inti=0,choice;
intu;
printf("请输入您要修改的学生的学号:
\n");
scanf("%s",&u);
for(i=0;i { printf("请选择您要修改的内容: \n"); printf("----------------------\n"); printf("|姓名请按1|\n"); printf("|高数请按2|\n"); printf("|大物请按3|\n"); printf("|c语言请按4|\n"); printf("|英语请按5|\n"); printf("|退出请按0|\n"); printf("+----------------------+\n"); printf("请输入您的选择: "); scanf("%d",&choice); switch(choice) { case0: break; case1: printf("请输入新姓名: "); scanf("%s",stud[i].name); break; case2: printf("请输入新的高数分数: "); scanf("%d",&stud[i].math); break; case3: printf("请输入新的大物分数: "); scanf("%d",&stud[i].physic); break; case4: printf("请输入新的c语言分数: "); scanf("%d",&stud[i].Clanguage); break; case5: printf("请输入新的英语分数: "); scanf("%d",&stud[i].English); break; default: printf("\n无效选项! "); break; }break; } printf("修改成功\n"); for(i=0;i { printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English);} } 3.2删除数据功能模块设计 3.2.1详细功能描述 该部分是用来删除已录入的学生的数据信息。 3.2.2设计思想 我们采用按姓名查找,删除一条记录的方法实现删除功能。 首先,输入要删除记录的名字,然后通过if语句和strcmp函数找到对应的数据,最后借用strcpy函数一一将下一数据的值覆盖到上一个数据,从而实现删除数据的的功能。 该部分通过if语句和strcmp函数以及strcpy函数实现其功能。 3.2.3主要代码 voidshanchu()/*按姓名查找,删除一条记录*/ { chars[10]; intj,i=0; printf("输入要删除记录的姓名: "); scanf("%s",s); for(i=0;i {if(strcmp(stud[i].name,s)==0) { for(j=i;j { { stud[j].num=stud[j+1].num; strcpy(stud[j].name,stud[j+1].name); stud[j].physic=stud[j+1].physic; stud[j].math=stud[j+1].math; stud[j].Clanguage=stud[j+1].Clanguage; stud[j].English=stud[j+1].English; } } } } printf("DeleteSuccessed! \n"); saved(); for(i=0;i { printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English);} } 3.3增加数据功能模块设计 3.3.1详细功能描述 该部分是用来新增学生的数据信息。 3.3.2设计思想 首先设计一个save函数,先打开文件数据库,能够实现保存并关闭文件后,通过fread写入一组数据,从而达到新增数据的目的。 3.3.3主要代码 voidsave() { FILE*fp;inti; if((fp=fopen("chengjidan.dat","ab"))==NULL) { printf("canopenfile\n"); return; } if(fwrite(&stud[SIZE],sizeof(structStudent_type),1,fp)! =1) printf("filewriteerror\n"); fclose(fp); printf("添加成功\n"); for(i=0;i { fread(&stud[i],sizeof(structStudent_type),1,fp); printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English); } } voidzengjia() { printf("请输入新学生信息\n"); scanf("%s%d%d%d%%d%d",stud[SIZE].name,&stud[SIZE].num,&stud[SIZE].math,&stud[SIZE].physic,&stud[SIZE].Clanguage,&stud[SIZE].English); save(); } 4、调试分析 4.1修改数据功能 修改数据功能如下图: 4.2删除数据功能 删除数据功能如下图: 4.3增加数据功能 增加数据功能如下图: 5、总结 本学生成绩管理系统能够实现增加,修改,删除记录的信息维护功能、按姓名,学号查询学生成绩信息功能、某一课程在某一分数段的统计功能及某一课程的排序功能。 编好程序,运行完毕后,我们也发现了一些缺陷。 比如,修改只能通过输入学号对该记录数据组进行修改,而删除也只做了输入学号删除记录的设定。 当然,缺憾是补课避免的。 总体上来讲,计算机综合课程设计上完了,完成了一个基本的学生成绩管理系统,从系统需求分析、数据库设计开始到系统的设计实施,逐步熟悉了c语言程序设计。 在组长的带领下我们经过了好几周的时间反复编写和调试程序,从课本和网上查阅相关资料,终于完成了整个课程设计。 过程中,也遇到不少困难,如编程逻辑把握不住,经验太少,不太善于调试程序等。 不过我们还是一步一步的自己动手做,不会的地方参考别人的程序自己再试着写或请教老师,在此过程中收获多多。 6、答辩记录 7、教师意见 附录: #include #include #include #defineSIZE5 structStudent_type { charname[10]; intnum; intmath; intphysic; intClanguage; intEnglish; } stud[SIZE]; intweihuxuanze() { inti; printf("*1.增加学生信息*"); printf("\t*2.删除学生信息*\n"); printf("*3.修改学生信息*"); printf("*请选择你所需的功能的序号*\n"); scanf("%d",&i); returni;} voidsaved() { FILE*fp; inti; if((fp=fopen("chengjidan.dat","wb"))==NULL) { printf("canopenfile\n"); return; } for(i=0;i if(fwrite(&stud[i],sizeof(structStudent_type),1,fp)! =1) printf("filewriteerror\n"); fclose(fp); } voidsave() { FILE*fp;inti; if((fp=fopen("chengjidan.dat","ab"))==NULL) { printf("canopenfile\n"); return; } if(fwrite(&stud[SIZE],sizeof(structStudent_type),1,fp)! =1) printf("filewriteerror\n"); fclose(fp); printf("添加成功\n"); for(i=0;i { fread(&stud[i],sizeof(structStudent_type),1,fp); printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English); } } voidzengjia() { printf("请输入新学生信息\n"); scanf("%s%d%d%d%%d%d",stud[SIZE].name,&stud[SIZE].num,&stud[SIZE].math,&stud[SIZE].physic,&stud[SIZE].Clanguage,&stud[SIZE].English); save(); } voidxiugai(structStudent_typestud[])/*修改*/ { inti=0,choice; intu; printf("请输入您要修改的学生的学号: \n"); scanf("%s",&u); for(i=0;i { printf("请选择您要修改的内容: \n"); printf("----------------------\n"); printf("|姓名请按1|\n"); printf("|高数请按2|\n"); printf("|大物请按3|\n"); printf("|c语言请按4|\n"); printf("|英语请按5|\n"); printf("|退出请按0|\n"); printf("+----------------------+\n"); printf("请输入您的选择: "); scanf("%d",&choice); switch(choice) { case0: break; case1: printf("请输入新姓名: "); scanf("%s",stud[i].name); break; case2: printf("请输入新的高数分数: "); scanf("%d",&stud[i].math); break; case3: printf("请输入新的大物分数: "); scanf("%d",&stud[i].physic); break; case4: printf("请输入新的c语言分数: "); scanf("%d",&stud[i].Clanguage); break; case5: printf("请输入新的英语分数: "); scanf("%d",&stud[i].English); break; default: printf("\n无效选项! "); break; }break; } printf("修改成功\n"); for(i=0;i { printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English);} } voidshanchu()/*按姓名查找,删除一条记录*/ { chars[10]; intj,i=0; printf("输入要删除记录的姓名: "); scanf("%s",s); for(i=0;i {if(strcmp(stud[i].name,s)==0) { for(j=i;j { { stud[j].num=stud[j+1].num; strcpy(stud[j].name,stud[j+1].name); stud[j].physic=stud[j+1].physic; stud[j].math=stud[j+1].math; stud[j].Clanguage=stud[j+1].Clanguage; stud[j].English=stud[j+1].English; } } } } printf("DeleteSuccessed! \n"); saved(); for(i=0;i { printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English);} } voidpaixu_math(structStudent_typestud[])/*按高树成绩排序*/ {inti,j,k=0,p,q,r,w; doubley; charx[10]; intt; for(i=0;i {k=i; for(j=i+1;j if(stud[j].math>stud[k].math) { k=j; p=stud[i].physic;stud[i].physic=stud[k].physic;stud[k].physic=p; q=stud[i].math;stud[i].math=stud[k].math;stud[k].math=q; r=stud[i].English;stud[i].English=stud[k].English;stud[k].English=r; w=stud[i].Clanguage;stud[i].Clanguage=stud[k].Clanguage;stud[k].Clanguage=w; t=stud[i].num;stud[i].num=stud[k].num;stud[k].num=t; strcpy(x,stud[i].name); strcpy(stud[i].name,stud[k].name); strcpy(stud[k].name,x); } } for(i=0;i { printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English);} } voidpaixu_physic(structStudent_typestud[])/*按大物成绩排序*/ {inti,j,k=0,p,q,r,w; doubley; charx[10]; intt; for(i=0;i {k=i; for(j=i+1;j if(stud[j].physic>stud[k].physic) { k=j; p=stud[i].physic;stud[i].physic=stud[k].physic;stud[k].physic=p; q=stud[i].math;stud[i].math=stud[k].math;stud[k].math=q; r=stud[i].English;stud[i].English=stud[k].English;stud[k].English=r; w=stud[i].Clanguage;stud[i].Clanguage=stud[k].Clanguage;stud[k].Clanguage=w; t=stud[i].num;stud[i].num=stud[k].num;stud[k].num=t; strcpy(x,stud[i].name); strcpy(stud[i].name,stud[k].name); strcpy(stud[k].name,x); } } for(i=0;i { printf("%-10s%8d%4d%4d%4d%4d\n",stud[i].name,stud[i].num,stud[i].math,stud[i].physic,stud[i].Clanguage,stud[i].English);} } voidpaixu_Clanguage(structStudent_typestud[])/*按C语言成绩排序*/ {inti,j,k=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生成绩管理系统 高质量C语言程序 学生 成绩管理系统 质量 语言 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)