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
struct Student
{char name[20];
int no;
int math;
int program;
int english;
int chinese;
int aver;
}stu[100],t;
int num=0;
int menu()
{
int a;
char s[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("Enter you choice(0~6):");
scanf("%s",s);
a=atoi(s);
}
while (a<0 || a>6);
return a;
}
int enter()
{
int i=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].e nglish+stu[num].chinese)/4;
num=num+1;
printf("是否继续输入?(y/n):\n");
if(getch()=='y'||getch()=='Y')
enter();
else
return(0);
}
void save()
{
;
int i;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("The fire can not open\n");
return;
}
for(i=0;i if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1) { printf("The wirte error\n"); return; } printf("数据保存成功\n"); system("pause"); fclose(fp); } void sort() { int i, j, k; int sort_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); } } else if(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); } } else if(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); } } else if(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); } } else if(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); } } else if(sort_no==6) // 返回上层 { return; } else { printf("错误的排序方式!\n"); return; } } void list() { int i; 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); } } void search() { char NAME[20]; int search_no; int no,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) {