struct student s; n=load(); do {do {k=-1;
printf(\输入查找学号! NO.:\
scanf(\ /*输入要修改的数据的学号*/ printf_face(); /*调用显示数据结构项目函数*/ for(i=0;i {k=i; /*找到要修改的记录*/ printf_one(k);break; /*调用显示一个记录的函数*/ } if(k==-1) {printf(\不存在! 请重新输入\ printf(\是否确定?\\n\\t1).是 2).否且返回 [ ]\\b\\b\ scanf(\ } } while(k==-1&&w1==1); /*如果w1不等于1则直接返回*/ w4=0;w3=0; if(k!=-1) /*k不等于-1表示找到,如果找到则选择操作*/ {printf(\请选择:\\n\\t1).查找另一个数据 2).修改 3).删除 4).返回目录 [ ]\\b\\b\ scanf(\ switch(w2) {case 2:w3=modify_data(k,n);break; /*调用修改数据函数*/ case 3:{printf(\是否确定?\\n\\t1).是 2).否且返回 [ ]\\b\\b\ scanf(\ if(w4==1) stu[k].ave=0; /*表示删除*/ break; } } if(w3==1||w4==1) {save(n); printf(\★成功★ ^-^.\ printf(\请选择:\\n\\t1).查找另一个数据 2).返回 [ ]\\b\\b\ scanf(\ 16 } } } while(w2==1); teacher(); return 0; } /****************插入模块****************/ insert() /*插入模块*/ {int i,j,n,c; struct student s; n=load(); puts(\输入一个数据.\\n\ do {input(n); /*输入到第n个记录,即插入到最后*/ printf_face(); printf_one(n); printf(\是否确定?\\n\\n\\t1).是\\t2).取消重输\\t3).不保存返回 scanf(\ if(c==1) {for(j=0;j if(stu[i].ave>stu[i-1].ave) {s=stu[i-1];stu[i-1]=stu[i];stu[i]=s;} save(n+1); printf_back(); } else if(c!=2) teacher(); } while(c==2); return 0; } /****************排序模块(按平均成绩)****************/ void sift(RecNode r[],int t,int w) /*用筛选法调整堆*/ {int i,j; RecNode x; i=t; x=r[i]; j=2*i+1; [ ]\\b\\b\ 17 while(j<=w) {if((j if(x.key>r[j].key) {r[i]=r[j];i=j;j=2*j+1;} else break; } r[i]=x; } void heapsort(RecNode r[],int n) /*堆排序*/ {int i; RecNode x; for(i=n/2-1;i>=0;i--) sift(r,i,n-1); for(i=n-1;i>0;i--) {x=r[0];r[0]=r[i]; r[i]=x; sift(r,0,i-1);} } /****************排序模块(按平均成绩)****************/ order() /*排序模块(按平均成绩)*/ {int i,j,k,n; struct student s; n=load(); for(i=0;i for(j=i+1;j if(stu[j].ave 18 /*****************统计模块*******************/ void fenduantongji() { int k,u,n,i,w1=1,x; int a,b,c,d,e; a=0;b=0;c=0;d=0;e=0; printf(\英语 2.数学 3.C语言 4.管理学 5.信检 6.体育 7.近代史 8.线性代数\\n\ printf(\请输入要统计的科目:\scanf(\if(u<=8) {n=u; x=load(); for(i=0;i else if(k<90&&k>=80) b=b+1; else if(k<80&&k>=70) c=c+1; else if(k<70&&k>=60) d=d+1; else if(k>=0&&k<60) e=e+1; } } } printf(\学生成绩在 90~100 间有:\\n %d\\n\printf(\学生成绩在 80~89 间有 :\\n %d\\n\printf(\学生成绩在 70~79 间有 :\\n %d\\n\printf(\学生成绩在 60~69 间有 :\\n %d\\n\printf(\低于60的有:\\n %d\\n\ printf(\是否继续?\\n\\n\\t1).是 2).否 [ ]\\b\\b\ scanf(\ if(w1==1) fenduantongji(); else teacher(); } 19 menu(); /****************教师界面****************/ teacher() /*教师界面*/ {int n,w1; do {system(\ /*清屏*/ puts(\ puts(\输入新数据\ puts(\添加数据\ puts(\修改数据\ puts(\删除数据\ puts(\浏览全部\ puts(\学号查询\ puts(\插入数据\ puts(\按平均分排序\ puts(\分段统计\ puts(\退出\ puts(\返回主界面\ puts(\ printf(\请选择序号:(1-11): [ ]\\b\\b\ scanf(\ if(n<1||n>11) /*对选择的数字作判断*/ {w1=1;getchar();} else w1=0; } while(w1==1); /*选择功能*/ switch(n) {case 1:enter();break; /*输入模块*/ case 2:add();break; /*追加模块*/ case 3:modify();break; /*修改模块*/ case 4:del();break; /*删除模块*/ case 5:browse();break; /*浏览模块*/ case 6:search();break; /*查找模块*/ case 7:insert();break; /*插入模块*/ case 8:order();break; /*排序模块*/ case 9:fenduantongji();break;/*统计模块*/ 20