1、include
2、 //定义经过控制台进行数据输入和输出 #define N //最多人数人 #define M 3 //统计成绩 typedef struct student //定义类型 { char number[10];
3、 //保留全部些人学号 char name[20]; //保留学生姓名 char sex[10]; //保留性别 float score[M]; //保留全部课程成绩
4、 float aver; //保留每个人平均成绩 float total; //总计成绩 }STU; STU stu[N]; int n; void inputscore(void); //学生成绩新建 void savescore(void);
5、 //学生成绩保留 void avergescore(void); //学生平均成绩 void total(void); //学生成绩总计 void modifyscore(void); //学生成绩修改 v
6、oid lookscore(void); //学生成绩查看 void searchscore(void); //学生成绩查询 void statistic(void); //学生成绩统计 void add(void);
7、 //学生成绩添加 void modify(void); //学生成绩修改 void delscore(void); //学生成绩删除 void menu(void); //学生成绩菜单 void main() { short int f
8、lag=0; menu(); do { flag=1; switch(getch()) { case '1' : inputscore();break; //在菜单界面输入1,调用i函数nputscore()实现输入学生成绩信息功效 case '2' : lookscore();break; //在菜单界面输入2,调用函数lookscore()实现学生成绩按平均分高低排序输出,同时lookscore()函数调用avregescore()函数实现各个学生平均分计算 case '3' : searchscore();break;
9、 //在菜单界面输入3,调用searchscore()函数实现经过学号查找学生成绩信息功效 case '4' : statistic();break; //在菜单界面输入4,调用statistic()函数输出每一门课程最高分,平均分和不及格人员 case '5' : modify();break; //在菜单界面输入5,调用modify()函数实现经过学号修改学生成绩功效 case '6' : add();break; //在菜单界面输入6,调用add()函数实现添加学生成绩 case '7' : delscore();break;
10、 //在菜单界面输入7,调用delscore()函数实现删除指定学生成绩 case '8' : savescore();break; //在菜单界面输入8,调用savescore()函数将学生成绩信息保留 case '9' :exit(0); break; //在菜单界面输入9,退出成绩管理系统 default : printf("输入有误\n"); } printf("按任意键继续\n"); getch(); //按任意键继续,起到暂停作用,函数头文件conio.h已经定义过 menu();
11、 // 菜单 }while (flag==1); } void menu(void) { system("cls"); //清屏 printf("\n"); printf(" ★★★★★★★欢迎进入学生成绩管理系统★★★★★★★\n"); printf(" 菜单 \n"); printf(" ☆输入成绩--------------------
12、1\n"); printf(" ☆查看成绩及成绩排序---------------------------2\n"); printf(" ☆查询学生成绩---------------------------------3\n"); printf(" ☆成绩统计-------------------------------------4\n"); printf(" ☆修改成绩-------------------
13、5\n"); printf(" ☆添加成绩-------------------------------------6\n"); printf(" ☆删除成绩-------------------------------------7\n"); printf(" ☆保留成绩-------------------------------------8\n"); printf(" ☆退出系统--------
14、9\n"); printf(" ★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf(" 请输入您选择(1~9)\n"); } /***************输入各个同学学生信息******************************/ void inputscore(void) //输入成绩 { int i,j; system("cls");
15、 //清屏专用,以下出现位置作用相同
printf(" 已经转到输入成绩菜单\n");
printf("请输入学生总数:\n");
scanf("%d",&n);
printf("提醒:输入学号时请输入9位学生编号:图书借阅证上学号\n"); //因二维表上下需对正故有此要求
for(i=0;i 16、"请输入第%d位学生学号:\n",i+1);
scanf("%s",stu[i].number); //输入学生学号
printf("姓名:\n");
scanf("%s",stu[i].name); //输入学生名字
printf("请输入该学生性别\n");
scanf("%s",stu[i].sex); //输入性别
printf("请输入学生成绩:\n");
printf("高数分\t英语分\tC语言分\n");
f 17、or(j=0;j 18、tu[i].total=0;
for(j=0;j 19、for(j=0;j 20、
avergescore();
system("cls"); // 清屏专用
printf(" 已经转到查看成绩及成绩排序菜单\n");
for(i=0;i 21、C语言分\t总分\t平均分\n");
for(i=0;i 22、/
void searchscore(void)
{ char a[10]; //定义数组a类型可输入数字,字母或字符
int i,j;
system("cls"); //清屏
printf(" 已经转到查询学生成绩菜单\n");
printf("请输入需查询学生学号\n");
scanf("%s",a);
for(i=0;i 23、
{ printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n");
printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex);
for(j=0;j 24、 //找到该学生成绩信息后跳出for循环
}
else
printf("未找到该学生信息\n");
}
}
/*******统计学生成绩信息,计算出每一门课最高分****************/
void statistic()
{
int i,j=0,k=0,c1;
char str[2];
float average[M],sum=0; printf("没有可被查找统计\n"); //
system("cls");
if(M==0) //假如没有输入成绩则输出没有可查找统计
25、
printf("没有可被查找统计\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科成绩 1.高数\t2.英语\t3.C语言\n");
scanf("%d",&c1);
printf("\t一共有%d个统计\n",M); /*总共统计数*/
switch(c1)
{
case 1: //用来判定高数最高分,平均分,输出不及格人员名单
for(i=0;i 26、 {
sum+=stu[i].score[0];
if(stu[k].score[0]>stu[i].score[0]) k=i;
if(stu[j].score[0] 27、");
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[k].number,stu[k].name,stu[k].score[0]);
printf("\t高数平均分是 %5.2f\n",average[0]);
printf("平均分低于60分学生组员名单\n");
for(i=0;i 28、/ 用来判定英语最高分,平均分,输出不及格人员名单
for(i=0;i 29、j].name,stu[j].score[1]);
printf("\t英语最低分是:\n");
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[k].number,stu[k].name,stu[k].score[1]);
printf("\t英语平均分是 %5.2f\n",average[1]);
printf("平均分低于60分学生组员名单\n");
for(i=0;i 30、ame);
}
break;
case 3: //用来判定C语言最高分,平均分,输出不及格人员名单
for(i=0;i 31、 /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[j].number,stu[j].name,stu[j].score[2]);
printf("\tC语言最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[k].number,stu[k].name,stu[k].score[2]);
printf("\tC语言平均分是 %5.2f\n",average[2]);
printf("平均分低于60分学生组员名单\n");
for 32、i=0;i 33、stic();
else break;
}
}
}
/***************修改学生成绩*****************/
void modify(void)
{
char a[10];
int i,j;
system("cls");
printf(" 已经转到修改成绩菜单\n");
printf("请输入需要修改成绩学生学号\n");
scanf("%s",a);
for(i=0;i 34、mber)==0)
{ printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n");
printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex);
for(j=0;j 35、"请重新输入该学生姓名:\n");
scanf("%%s",stu[i].number);
printf("\n");
scanf("%s",stu[i].name);
printf("请输入该学生性别\n");
scanf("%s",stu[i].sex);
printf("请重新输入该学生成绩:\n");
printf("高数分\t英语分\tC语言分\n");
for(j=0;j 36、成功\n");
break; //找到该学生成绩后进行修改,跳出for循环
}
else
printf("请确定该学生是否为该校学生!\n");
}
}
/*****************添加学生成绩********************/
void add(void)
{
int a,i,j; //i定义为学生,j为学生分数,a代表加入学生数量
system("cls");
printf(" 已经转到添加成绩菜单\n 37、");
printf("请输入新增加学生人数:\n");
scanf("%d",&a);
n=n+a;
for(i=n-a;i 38、"高数分\t英语分\tC语言分\n");
for(j=0;j 39、");
printf("请输入学生学号\n");
scanf("%s",a);
for(i=0;i 40、rintf("%4.2f\t",stu[i].total);
printf("%4.2f",stu[i].aver);
printf("\n");
c=i;
break;
}
else
printf("未找到该学生信息\n");
}
printf("是否删除该学生成绩(y/n)\n");
scanf("%s",&m);
if(m=='y')
{
for(i=c;i 41、存放位置
n=n-1; //删除该学生信息后学生总数减一
printf("删除成绩成功\n");
}
else
printf("删除成绩失败\n");
}
/******************保留学生成绩************************/
void savescore(void)
{
FILE *fp; //定义指针
int i,flag=1;
char m;
system("cls");
printf(" 42、 已经转到保留成绩菜单\n");
puts("是否保留学生成绩(y/n)");
scanf("%s",&m);
if(m=='y')
{ if((fp=fopen("score.dat","wb"))==NULL) //从文件score中打开
{ printf("文件打开失败\n");
return;
}
for(i=0;i






