1、#include#include/* strcmp 函数原型包含 */#define N 100/*定义最大学生人数为 100*/struct student /*学生结构体定义 */char no11; /*学号,10 位*/char name10;/*姓名,3 个汉字*/float score5;/*储存 5 门功课的成绩*/float ave;/*储存平均分 */int year;/*入学年*/stuN;int num;int panduani(int); /*通过 i 的值,判断信息要查找的信息是否存在*/void output(); /*输出学生成绩函数(公共函数) */void i
2、nit(); /*系统初始化函数*/void newfile(); /*建立新的数据文件*/void read1(); /*从数据文件中读取数据*/void weihu(); /*维护界面函数*/void new1(); /*新增一个学生成绩函数*/void xiugai(); /*修改学生成绩*/int xgcj(int); /*修改成绩*/void delete1(); /*删除学生信息函数*/void tongji(); /*统计界面函数*/void tongji1(); /*计算每个学生平均分*/void tongji2(); /*计算每门课程的平均分*/void paixu1();
3、/*排序函数*/void paino(); /*按学号排序*/void paiave(); /*按平均分排序*/void paidkcj(); /*按单科成绩排序*/void change(int,int); /*交换结构体数组中的两个记录 */void outputx(int); /*选择输出单科成绩 徐修楼编*/void find1(); /*查找界面函数*/int find(char sno); /*按学号查找*/int findname(char cname);/*按姓名查找 */void findyear(int cyear); /*按入学年查找*/void save(); /*保存
4、文件*/void stop(); /*停顿函数*/void stop() /*停顿函数 (公共函数)*/printf(“Press Any Key To Continue.n“);getch();void output() /*输出学生成绩函数(公共函数)*/int i,j;printf(“=n“);printf(“XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDiann“);printf(“=n“);for(i=0;i=1printf(“nPai Xu Hou Wei:n“); /*“排序后为:”*/output();void paiave
5、() /*按平均分排序 */ /*按平均分从高到低冒泡法排序*/int i,j;struct student temp;tongji1(); /*计算平均成绩 */for(i=0;i=1for(i=0;inum;i+)for(j=0;jnum-1-i;j+)if(stuj.scorekstuj+1.scorek)change(j,j+1);outputx(k);else printf(“nXuan Zen You Wu,Qing Chong Xuan!nn“);stop();void change(int i,int j) /*交换结构体数组中的两个记录*/struct student tem
6、p;temp=stui;stui=stuj;stuj=temp;void outputx(int k) /*选择输出单科成绩 */char xueke510=“Cyuyan“,“Gaoshu“,“Wuli“,“Dianlu“,“Modian“;char (*p)10; /*定义一个指向包含 10 个字符型元素的一维数组的指针变量*/int i;p=xueke;printf(“ntPai Xu Hou Wei:n“);printf(“t=n“);printf(“tXueHao XingMing RuXueNian %s Pai Mingn“,p+k);printf(“t=n“);for(i=0;
7、inum;i+)printf(“t%-11s% -10s%-11d%-6.1f%5dn“,stui.no,stui.name,stui.year,stui.scorek,i+1);void find1() /*查找界面函数*/char c4;char cno11,cname10;int i,j,cyear;while(1)clrscr();printf(“ttt*n“);printf(“ttt* Cha Zhao *n“);printf(“ttt* 1. An Xue Hao *n“); /*按学号查找*/printf(“ttt* 2. An Xing Ming *n“); /*按姓名查找*/
8、printf(“ttt* 3. An Ru Xue Nian *n“); /*按入学年查找*/printf(“ttt* ESC. Fan Hui *n“); /*返回*/printf(“ttt*n“);printf(“tttQing Xuan Ze:n“);/*请选择:*/c4=getch();if(c4=27) break;switch(c4)case 1:printf(“Shu Ru Xue Hao:n“);/*“输入学号:”*/gets(cno);i=find(cno);panduani( i);break;case 2:printf(“Shu Ru Xing Ming:n“);/*“输
9、入姓名:”*/gets(cname);i=findname(cname);panduani(i);break;case 3:printf(“Shu Ru RU Xue Nian:n“);/*“输入入学年”*/scanf(“%d“,findyear(cyear);stop();break;default:printf(“Xuan Zen You Wu,Qing Chong Xuan!n“);/*“选择有误,请重选!”*/int findname(char cname) /*按姓名查找 */int i;for(i=0;inum;i+)if(strcmp(stui.name,cname)=0) /*
10、判断两个字符串相等*/return i; /*查找成功*/return -1; /*查找失败*/void findyear(int cyear)int i,j,flag=0;for(i=0;inum;i+)if(stui.year=cyear) flag=1;break;if(flag=0)printf(“Yao Cha Zhao De Xue Sheng Bu Cun Zain“);stop(); elseprintf(“Cha Zhao Dao De Xue Sheng Xin Xi Wei:n“);/*“查找到的学生信息为:”*/printf(“XueHao XingMing RuXue
11、Nian C GaoShu DaWu DianLu MoDiann“);printf(“=n“);for(i=0;inum;i+)if(stui.year=cyear) /*判断两个数值相等*/printf(“%-11s% -10s%-11d“,stui.no,stui.name,stui.year);for(j=0;j5;j+)printf(“% -7.1f“,stui.scorej);printf(“n“);int panduani(int i) /*通过 i 的值,判断信息要查找的信息是否存在*/int j;if(i=-1)printf(“Yao Cha Zhao De Xue Shen
12、g Bu Cun Zain“);/*要查找的学生不存在*/stop();elseprintf(“Cha Zhao Dao De Xue Sheng Xin Xi Wei:n“);/*“查找到的学生信息为:”*/printf(“XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDiann“);printf(“=n“);printf(“%-11s% -10s%-11d“,stui.no,stui.name,stui.year);for(j=0;j5;j+)printf(“% -7.1f“,stui.scorej);printf(“n“);stop()
13、;void save() /*保存文件*/int i;FILE *fp;if(fp=fopen(“stu.dat“,“wb“)=NULL) /*创建二进制文件*/printf(“Chuang Jian Shi Bai! Qing Chong Xin Yun Xing Cheng Xu.n“); /*显示“创建文件失败,请重新运行程序”*/exit(0); /*终止程序*/for(i=0;inum;i+)fwrite( /*将 I+1 名学生成绩写入文件*/fclose(fp);void main() /*主控菜单*/char c;init();while(1)clrscr();printf(“
14、nnnttt*n“);printf(“ttt* MAIN MENU *n“);printf(“ttt* 1. Wei Hu *n“); /*维护*/printf(“ttt* 2. Tong Ji *n“); /*统计*/printf(“ttt* 3. Pai Xu *n“); /*排序*/printf(“ttt* 4. Cha Zhao *n“); /*查找*/printf(“ttt* ESC. SAVE /*存盘退出*/printf(“ttt*n“);printf(“tttQing Xuan Ze:n“);/*请选择:*/c=getch();switch(c)case 1:weihu();break;case 2:tongji();break;case 3:paixu1();break;case 4:find1();break;case 27:save();exit(0);break;default:printf(“Xuan Zen You Wu,Qing Chong Xuan!n“);/*“选择有误,请重选!”*/