1、9 退出系统。3:主要函数之间的调用关系及各自功能:主要函数的函数原型void inputscore(void);void savescore(void);void avergescore(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);i.在菜单界面输入1,调用函数inputscore()实现输入学生成绩信息功能。ii
2、.在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算。iii.在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能。iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生。v.在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能vi.在菜单界面输入6,调用add()函数实现添加学生成绩。vii.在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。viii.在菜单
3、界面输入8,调用savescore()函数将学生成绩信息保存。ix.在菜单界面输入9,退出成绩管理系统。开始输入指令19输入成绩查询成绩成绩统计修改成绩添加成绩删除成绩保存成绩显示成绩123456789退出三 程序运行效果截图1 主菜单2 输入成绩3 查看成绩4 查询成绩5统计成绩6修改成绩7 添加成绩8 删除成绩9保存成绩四 个人总结整个程序主要运用了课本上的基础知识,并未有太大创新,通过for循环,循环输入学生成绩。在学生成绩排序中运用选择法,同时实现学生名次的确定。在删除指定学生成绩时,先确定信息存储位置即其在结构体数组中的序号,通过结构体变量的整体赋值将从指定位置以后的学生信息赋给前一
4、个结构体变量,并将学生总数n减1,实现删除学生成绩信息。源代码#includestdlib.hstring.hprocess.hconio.h#define N 30#define M 3typedef struct student char number10; char name20; float scoreM; float aver; float total;STU;STU stuN;int n;void total(void);void main() short int flag=0; menu(); do flag=1; switch(getch() case 1 : inputsco
5、re();break; /*输入成绩*/ case 2 lookscore(); /*查看成绩*/3 searchscore(); /*查找成绩*/4 statistic(); /*成绩统计*/5 modify(); /*修改成绩*/6 add(); /*添加成绩*/7 delscore(); /*删除成绩*/8 savescore(); /*保存成绩*/9exit(0); /*退出程序*/ default : printf(输入有误n); printf(按任意键继续n getch(); menu(); while (flag=1);void menu(void) system(clsn*欢迎
6、进入学生成绩管理系统*n 菜单 n输入成绩-1n查看成绩及成绩排序-2n查询学生成绩-3n成绩统计-4n修改成绩-5n添加成绩-6n删除成绩-7n保存成绩-8n退出系统-9n*n请输入您的选择n/*输入各个同学的学生信息(王超)*/void inputscore(void) int i,j;请输入学生总数: scanf(%d,&n);提示:*输入学号时请输入由1位大写字母和8位数字组成的学号,如P01214000*n /*因二维表上下需对正故有此要求*/ for(i=0;in;i+) printf(请输入学生%d的学号 :,i+1); scanf(%s%s,stui.number,stui.n
7、ame);请输入学生成绩:高数t物理tC语言n for(j=0;jstuk.aver) k=j; if(k!=j) t=stuk; stuk=stui; stui=t; 名次t学号ttt高数t物理tC语言t总分t平均分n%dt%st%st,i+1,stui.number,stui.name); printf(%4.2ft,stui.scorej);,stui.total);%4.2f,stui.aver);/*通过输入学号查找学生成绩*/void searchscore(void) char a10; int i,j;请输入需查询的学生学号n%s,a); if(strcmp(a,stui.nu
8、mber)=0) printf( for(j=0;printf( break; /*找到该学生成绩信息后跳出for循环*/ else未找到该学生信息n/*统计学生成绩信息,平均分及格率,优秀率*/void statistic(void) STU *p=stu;int i,j; float count=0.0,sum=0.0; sum+=(p+i)-aver;该班级平均分为%4.2fn,sum/n); /*平均分计算*/ if(p+i)-aver=60) count+;该班级及格率为%4.2f%n,count/n*100); /*及格率计算*/ count=0.0;=90) count+;该班级
9、优秀率为%4.2f%n /*优秀率计算*/平均分低于60的学生n if(stui.aver60)%sn,stui.name); /*统计不及格学生*/*修改学生成绩*/void modify(void)请输入需要修改成绩的学生学号n请重新输入该学生的学号 :请重新输入学生成绩: scanf(/*找到该学生成绩后进行修改,跳出for循环*/修改成功n else请确认该学生是否为本班学生!/*添加学生成绩*/void add(void) int a,i,j;请输入新增加的学生人数:a); n=n+a; for(i=n-a;添加成功n/*删除学生成绩*/void delscore(void) int
10、 i,j,c; char m,a10;请输入学生学号n c=i;是否删除该学生成绩(y/n)nm); if(m=y) for(i=c; stui=stui+1; /*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/ n=n-1; /*删除该学生信息后学生总数减一*/ printf(删除成绩成功n删除成绩失败n/*保存学生成绩*/void savescore(void) FILE *fp; int i,flag=1; char m; puts(是否保存学生成绩(y/n) if(m= if(fp=fopen(score.dat,wb)=NULL)文件打开失败n return; for(i=0; if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(保存失败n flag=0; if(flag=1)保存成功! fclose(fp); return;