C语言课程设计报告学生成绩管理系统.docx
- 文档编号:17911487
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:17
- 大小:124.09KB
C语言课程设计报告学生成绩管理系统.docx
《C语言课程设计报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生成绩管理系统.docx(17页珍藏版)》请在冰点文库上搜索。
C语言课程设计报告学生成绩管理系统
机电工程学院
中南大学
本科生C语言课程设计
题目学生成绩管理系统
一、课程设计
题目:
学生成绩管理系统
给出n个学生的4门考试的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。
对学生的考试成绩进行有关统计:
按某一科分数或平均分数高低次序,列出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计
程序要有的功能:
1.输入学生成绩
2.保存成绩
3.学生成绩排序
4.学生成绩查询
5.学生成绩清单
6.退出管理系统
程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:
“数据不存在”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要继续输入。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
四、设计任务
将程序分为六个方面:
1.输入学生成绩、2.保存成绩、3.学生成绩排序、4.学生成绩查询、5.学生成绩清单、6.退出管理系统。
每个人负责两个方面的程序,其中侯蒙召负责1、2两个程序,杨天静负责3、4两个,张振陆负责5、6两个,最后交由组长侯蒙召组合整理,形成现在的总的程序。
流程图:
四、详细设计
源程序:
#include
#include
#include
#include
structStudent
{charname[20];
intno;
intmath;
intprogram;
intenglish;
intchinese;
intaver;
}stu[100],t;
intnum=0;
intmenu()
{
inta;
chars[20];
system("cls");
/*程序介绍*/
printf("欢迎使用学生成绩管理系统,该系统包括以下几项功能,请根据提示做相应操作\n");
printf("1->输入学生成绩\n");
printf("2->保存成绩\n");
printf("3->学生成绩排序\n");
printf("4->学生成绩查询\n");
printf("5->学生成绩清单\n");
printf("6->退出管理系统\n");/*选择操作*/
printf("\n");
printf("请选择要进行操作的编号:
\n");
do{
printf("Enteryouchoice(0~6):
");
scanf("%s",s);
a=atoi(s);
}
while(a<0||a>6);
returna;
}
intenter()
{
inti=0;
printf("请输入学生信息\n");
printf("NO.:
");
scanf("%d",&stu[num].no);
printf("姓名:
");
scanf("%10s",stu[num].name);
printf("数学:
");
scanf("%4d",&stu[num].math);
printf("程序设计:
");
scanf("%4d",&stu[num].program);
printf("英语:
");
scanf("%4d",&stu[num].english);
printf("语文:
");
scanf("%4d",&stu[num].chinese);
stu[num].aver=(stu[num].math+stu[num].program+stu[num].english+stu[num].chinese)/4;
num=num+1;
printf("是否继续输入?
(y/n):
\n");
if(getch()=='y'||getch()=='Y')
enter();
else
return(0);
}
voidsave()
{
FILE*fp;
inti;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("Thefirecannotopen\n");
return;
}
for(i=0;i if(fwrite(&stu[i],sizeof(structStudent),1,fp)! =1) { printf("Thewirteerror\n"); return; } printf("数据保存成功\n"); system("pause"); fclose(fp); } voidsort() { inti,j,k; intsort_no; printf("1--按数学成绩排\n"); printf("2--按程序设计成绩排\n"); printf("3--按英语成绩排\n"); printf("4--按语文成绩排\n"); printf("5--按平均分成绩排\n"); printf("6--返回主菜单\n"); scanf("%d",&sort_no); if(sort_no==1)//数学成绩排序 { for(i=0;i { k=i; for(j=i+1;j if(stu[j].math>stu[k].math) k=j; { t=stu[k]; stu[k]=stu[i]; stu[i]=t; } } printf("学号姓名数学程序英语语文平均分\n"); for(i=0;i { printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } } elseif(sort_no==2)//程序设计成绩排序 { for(i=0;i { k=i; for(j=i+1;j { if(stu[j].program>stu[k].program) k=j; } t=stu[k]; stu[k]=stu[i]; stu[i]=t; } printf("学号姓名数学程序英语语文平均分\n"); for(i=0;i { printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } } elseif(sort_no==3)//英语成绩排序 { for(i=0;i { k=i; for(j=i+1;j { if(stu[j].english>stu[k].english) k=j; } t=stu[k]; stu[k]=stu[i]; stu[i]=t; } printf("学号姓名数学程序英语语文平均分\n"); for(i=0;i { printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } } elseif(sort_no==4)//语文绩排序 { for(i=0;i { k=i; for(j=i+1;j { if(stu[j].chinese>stu[k].chinese) k=j; } t=stu[k]; stu[k]=stu[i]; stu[i]=t; } printf("学号姓名数学程序英语语文平均分\n"); for(i=0;i { printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } } elseif(sort_no==5)//平均分排序 { for(i=0;i { k=i; for(j=i+1;j { if(stu[j].aver>stu[k].aver) k=j; } t=stu[k]; stu[k]=stu[i]; stu[i]=t; } printf("学号姓名数学程序英语语文平均分\n"); for(i=0;i { printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } } elseif(sort_no==6)//返回上层 { return; } else { printf("错误的排序方式! \n"); return; } } voidlist() { inti; printf("学生成绩清单\n"); printf("学号姓名数学程序英语语文平均分\n"); for(i=0;i { printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } } voidsearch() { charNAME[20]; intsearch_no; intno,i; printf("请选择以下的方式对学生数据进行查询: \n"); printf("1->学号查询\n"); printf("2->姓名查询\n"); printf("3->返回主菜单\n"); printf("请选择要进行查询内容的编号: \n"); scanf("%d",&search_no); if(search_no==1) { printf("请输入要查询的学号\n"); scanf("%d",&no); for(i=0;i { if(no==stu[i].no) { printf("学号姓名数学程序英语语文平均分\n"); printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } else printf("数据不存在"); return; } } elseif(search_no==2) { printf("请输入要查询的姓名\n"); scanf("%s",NAME); for(i=0;i { if(strcmp(NAME,stu[i].name)==0) { printf("学号姓名数学程序设计英语语文平均分\n"); printf("%4d%5s%5d",stu[i].no,stu[i].name,stu[i].math); printf("%5d%5d%4d%4d\n",stu[i].english,stu[i].chinese,stu[i].program,stu[i].aver); } else printf("数据不存在"); return; } } else return; } voidmain() { menu(); while (1) { switch(menu()) {case1: { enter(); break; } case2: { save(); break; } case3: { sort(); system("pause"); break; } case4: { search(); system("pause"); break; } case5: { list(); system("pause"); break; } case6: { printf("baibai! \n"); exit(0); break; } } } } 五、程序使用说明、测试分析及结果 程序的主要功能: 1->输入学生成绩 2->保存成绩 3->学生成绩排序 4->学生成绩查询 5->学生成绩清单 6->退出管理系统 输入程序对应功能的相应序号,选择相应功能,然后根据提示继续。 例如: 想要输入学生的相关信息,输入1,然后根据提示输入学生相关信息,再输入2,保存学生信息。 2、对应测试结果与分析: 程序运行当中,通过选择对应的功能序号来实现所需功能。 对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示: “数据不存在”。 当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。 3、每个模块设计和调试时存在问题的思考 输入完相应的数据后,程序不会自动作出相应的提示,询问用户是否要保存数据。 在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。 4、运行界面(截图) (图1) (图2) 5、主界面设计如下: 欢迎使用学生成绩管理系统,该系统包含以下几种功能,请根据提示做相关操作 1->输入学生成绩 2->保存成绩 3->学生成绩排序 4->学生成绩查询 5->学生成绩清单 6->退出管理系统 请选择要进行的编号: Enteryourchoice(1~6): 六、课程设计总结 通过此次《数据结构》课程设计,我初步掌握了程序设计的基本方法,也学会了怎样去借鉴别人的方法和经验,知道如何怎样通过查找资料和整合处理这些资料来解决问题,这为以后的大学毕业设计论文打下了一个初步的基础。 同时也享受了一种成功的喜悦,在这为期一周的课程设计当中,我从开始确定论文题目,然后是上网和上图书馆查找资料,编写C++语言原程序,然后是进行编译,这个环节是一个非常需要对问题认真的态度和足够的耐心,常常会因为一小点的错误而在编译失败与再次修改的漫漫循环之路中,但失败的越多,对人的考验就越多,在编译运行成功之后的享受成功的喜悦也就越多。 另外在调试程序的过程中不断的思考和运用已经学到的知识,这对于自己是有很大的提高的。 由于所学的知识不多,自己的编程经验不足,仍存在一些错误按现有的知识水平有些东西暂时还无法解决,还有待于在以后的学习中不断提高和改进!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 学生 成绩管理系统