#include"stdio.h" #include"stdlib.h" #include"string.h" #include"math.h" struct student { char xh[12]; char name[20]; char sex[20]; int yw; int sx; int yy; int zf; }; void menu() { printf("\n\n\n"); printf("\t\t|----------------学生管理系统---------------|\n"); printf("\t\t|\t 0 退出 |\n"); printf("\t\t|\t 1 学生信息录入 |\n"); printf("\t\t|\t 2 学生成绩查询 |\n"); printf("\t\t|\t 3 显示全部学生成绩 |\n"); printf("\t\t|\t 4 查看各个分数段成绩的人数 |\n"); printf("\t\t|\t 5 学生各科成绩分析 |\n"); printf("\t\t|\t 6 删除指定学生信息 |\n"); printf("\t\t|\t 7 修改指定学生信息 |\n"); printf("\t\t|-------------------------------------------|\n"); printf("\n"); } void chenjifenxi(); void add(); void search(); void printall(); void score_section(); void del(); void modify(); int main() { menu(); int n; printf(" 请输入数字0-7: "); scanf("%d",&n); while(n) { switch(n) { case 0:break; case 1:add();break; case 2:search();break; case 3:printall();break; case 4:score_section();break; case 5:chenjifenxi();break; case 6:del();break; case 7:modify();break; default:printf("输入错误"); } menu(); printf("如果想继续查询请按0-7,否者按0退出"); scanf("%d",&n); } return 0; } void add() { struct student boy[20]; FILE *fp; int a=1; int i=0,flag=0; fp=fopen("student.txt","a+"); if(fp==NULL) { printf("打开失败"); } while(a==1) { printf("请输入学号"); scanf("%s",boy[i].xh); printf("请输入姓名"); scanf("%s",boy[i].name); printf("请输入性别"); scanf("%s",boy[i].sex); printf("请输入语文"); scanf("%d",&boy[i].yw); printf("请输入数学"); scanf("%d",&boy[i].sx); printf("请输入英语"); scanf("%d",&boy[i].yy); boy[i].zf=boy[i].yw+boy[i].yy+boy[i].sx; fprintf(fp,"%s %s %s %d %d %d %d",boy[i].xh,boy[i].name,boy[i].sex,boy[i].yw,boy[i].sx,boy[i].yy,boy[i].zf); fprintf(fp,"\n"); i++; printf("如果想继续输入,请输入1,否则按任意键 :"); scanf("%d",&a); if(a==0) { break; } } fclose(fp); } void search() { FILE *fp; char ch[20]; int i=0,flag=0; struct student boy[50]; fp=fopen("student.txt","ab+"); if(fp==NULL) { printf("打开失败"); } printf("请输入你想要查询的学号或者姓名: "); scanf("%s",&ch); while(!feof(fp)) { fscanf(fp,"%s%s%s%d%d%d%d",boy[i].xh,boy[i].name,boy[i].sex,&boy[i].yw,&boy[i].sx,&boy[i].yy,&boy[i].zf); i++; } for(int j=0;j<50;j++) { if((strcmp(ch,boy[j].xh)==0)||(strcmp(ch,boy[j].name)==0)) { printf("学号: %s \n名字: %s \n性别: %s \n语文: %d \n数学: %d \n英语: %d \n总分: %d",boy[j].xh,boy[j].name,boy[j].sex,boy[j].yw,boy[j].sx,boy[j].yy,boy[j].zf); flag=1; } } if(flag==0) { printf("查无此人"); } fclose(fp); } void printall() { FILE *fp; int i=0,k=0,j,a,b,flag; struct student boy[50]; struct student gilr; fp=fopen("student.txt","r"); if(fp==NULL) { printf("打开失败"); } while(!feof(fp)) { fscanf(fp,"%s%s%s%d%d%d%d",boy[i].xh,boy[i].name,boy[i].sex,&boy[i].yw,&boy[i].sx,&boy[i].yy,&boy[i].zf); i++; k++; } printf("想按照总分排序输出请按1\n想按照语文成绩排序请按2\n想按照数学成绩排序请按3\n想按照英语成绩排序请按4\n"); scanf("%d",&flag); if(flag==1) { for(a=0;a=60){ b++; } if(boy[j].sx<60){ c++; } if(boy[j].sx>=60){ d++; } if(boy[j].yy<60){ e++; }if(boy[j].yy>=60){ f++; } } printf("语文低于60分有%d人\n语文大于60分有%d人\n数学低于60分有%d人\n数学大于60分有%d人\n英语低于60分有%d人\n英语大于60分有%d人\n",a,b,c,d,e,f); fclose(fp); } void chenjifenxi() { FILE *fp; struct student boy[50]; int i=0,k=0,ywmax,ywmin,sxmax,sxmin,yymax,yymin,ywavg,sxavg,yyavg; double ywsum=0,sxsum=0,yysum=0,ywpass=0,sxpass=0,yypass=0; fp=fopen("student.txt","r"); if(fp==NULL) { printf("打开失败"); } while(!feof(fp)) { fscanf(fp,"%s%s%s%d%d%d%d",boy[i].xh,boy[i].name,boy[i].sex,&boy[i].yw,&boy[i].sx,&boy[i].yy,&boy[i].zf); i++; k++; } ywmax=boy[0].yw; ywmin=boy[1].yw; sxmax=boy[0].sx; sxmin=boy[1].sx; yymax=boy[0].yy; yymin=boy[1].yy; for(int j=0;jywmax) { ywmax=boy[j].yw; } if(boy[j].ywsxmax) { sxmax=boy[j].sx; } if(boy[j].sxyymax) { yymax=boy[j].yy; } if(boy[j].yy=60) { ywpass++; } if(boy[a].sx>=60) { sxpass++; } if(boy[a].yy>=60) { yypass++; } } printf("语文最高分:%d 语文最低分:%d 语文平均分:%.2f\n数学最高分:%d 数学最低分:%d 数学平均分:%.2f\n英语最高分:%d 英语最低分:%ld 英语平均分:%.2f\n",ywmax,ywmin,ywsum/(k-1),sxmax,sxmin,sxsum/(k-1),yymax,yymin,yysum/(k-1)); printf("语文及格率 %.2f%% \n数学及格率 %.2f%% \n英语及格率 %.2f%%\n",(ywpass/(k-1))*100,(sxpass/(k-1))*100,(yypass/(k-1))*100); printf("语文总分:%.0f 数学总分:%.0f 英语总分:%.0f",ywsum,sxsum,yysum); fclose(fp); } void del() { FILE *fp; int i=0,k=0,z,x,j,flag=0; char s[12]; struct student boy[50]; fp=fopen("student.txt","r"); if(fp==NULL) { printf("打开失败"); } while(!feof(fp)) { fscanf(fp,"%s%s%s%d%d%d%d",boy[i].xh,boy[i].name,boy[i].sex,&boy[i].yw,&boy[i].sx,&boy[i].yy,&boy[i].zf); i++; k++; } fclose(fp); printf("请输入想要删除的学号"); scanf("%s",s); for(j=0;j