1、#include#include#include#include#include#define N 30#define M 3typedef struct student char number10;char name20;float scoreM;float aver;float total;STU;STU stuN;int n;void inputscore(void);void savescore(void);void avergescore(void);void total(void);void modifyscore(void);void lookscore(void);void s
2、earchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);void main() short int flag=0;menu();do flag=1;switch(getch() case1:inputscore();break; /*输入成绩*/case2:lookscore();break; /*查看成绩*/case3:searchscore();break; /*查找成绩*/case4:statistic();break; /*成绩统
3、计*/case5:modify();break; /*修改成绩*/case6:add();break; /*添加成绩*/case7:delscore();break; /*删除成绩*/case8:savescore();break; /*保存成绩*/case9:exit(0); /*退出程序*/default:printf(“输入有误n“);printf(“按任意键继续n“);getch();menu();while (flag=1);void menu(void)system(“cls“);printf(“n“);printf(“*欢迎进入学生成绩管理系统*n“);printf(“ 菜单 n
4、“);printf(“输入成绩-1n“);printf(“查看成绩及成绩排序-2n“);printf(“查询学生成绩-3n“);printf(“成绩统计-4n“);printf(“修改成绩-5n“);printf(“添加成绩-6n“);printf(“删除成绩-7n“);printf(“保存成绩-8n“);printf(“推出系统-9n“);printf(“*n“);printf(“请输入您的选择n“);/*输入各个同学的学生信息 (王超)*/void inputscore(void) int i,j;system(“cls“);printf(“请输入学生总数: n“);scanf(“%d“,
5、printf(“提示:* 输入学号时请输入由 1 位大写字母和 8 位数字组成的学号,如P01214000*n“); /*因二维表上下需要对正故有此要求*/for(i=0;iaver;printf(“该班级平均分为%4.2fn“,sum/n); /*平均分计算*/for(i=0;iaver=60)count+;printf(“该班级及格率为%4.2f%n“,count/n*100); /*及格率计算*/count=0.0;for(i=0;iaver=90)count+;printf(“该班级优秀率为%4.2f%n“,count/n*100); /*优秀率计算*/printf(“平均分低于 60
6、 的学生名单n“);for(i=0;in;i+)if(stui.aver60)printf(“%sn“,stui.name); /*统计不及格学生的名单*/*修改学生成绩 */void modify(void)char a10;int i,j;system(“cls“);printf(“请输入需要修改成绩的学生学号n“);scanf(“%s“,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(“名次t 学号tt 姓名t 高数t 物理tC 语言t 总分t 平均分n“);printf(“%dt%st%st“,i+1,stui.number,stu
7、i.name);for(j=0;jM;j+)printf(“%4.2ft“,stui.scorej);printf(“%4.2ft“,stui.total);printf(“%4.2ft“,stui.aver);printf(“n“);printf(“请重新输入该学生的学号 姓名:n“);scanf(“%s%s“,stui.number,stui.name);printf(“请重新输入学生成绩:n“);printf(“高数t 物理tC 语言n“);for(j=0;jM;j+)scanf(“%f“, /*找到该学生成绩后进行修改,跳出 for 循环*/printf(“修改成功n“);break;
8、else if (in-1)continue;elseprintf(“请确认该学生是否喂本班级学生!n“);/*添加学生成绩*/void add(void)int a,i,j;system(“cls“);printf(“请输入新增加的学生人数:n“);scanf(“%d“,n=n+a;for(i=n-a;in;i+)printf(“请输入学生%d 的学号 姓名:n“,i+1);scanf(“%s%s“,stui.number,stui.name);printf(“请输入学生成绩:n“);printf(“高数t 物理tC 语言n“);for(j=0;jM;j+)scanf(“%f“,printf
9、(“添加成功n“);/*删除学生成绩*/void delscore(void)int i,j,c;char m,a10;system(“cls“);printf(“请输入学生学号n“);scanf(“%s“,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(“名次t 学号tt 姓名t 高数t 物理tC 语言t 总分t 平均分n“);printf(“%dt%st%st“,i+1,stui.number,stui.name);for(j=0;jM;j+)printf(“%4.2ft“,stui.scorej);printf(“%4.2ft“,st
10、ui.total);printf(“%4.2f“,stui.aver);printf(“n“);c=i;break;elseprintf(“未找到该学生信息n“);printf(“是否删除该学生成绩(yn)n“);scanf(“%s“,if(m=y)for(i=c;in-1;i+)stui=stui+1; /*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/n=n-1; /*删除该学生信息后学生总数减一 */printf(“删除成绩成功n“);elseprintf(“删除成绩失败n“);/*保存学生成绩*/void savescore(void)FILE*fp;int i,flag=1;char m;system(“cls“);puts(“是否保存学生成绩(y/n)“);scanf(“%s“,if(m=y)if(fp=fopen(“score.dat“,“wb“)=NULL)printf(“文件打开失败n“);return;for(i=0;in;i+)if(fwrite(flag=0;if(flag=1)printf(“保存成功!n“);fclose(fp);elsereturn 0;