#include int m; //全局变量存放学生个数 struct student //定义结构体 { char id[10]; char name[10]; float Chinese; float English; float Math; }; //变量声明 voidluru(struct student message[100]); voidxianshi(struct student message[100]); voidpaixu(struct student message[100]); void save(struct student message[100]); voidxiugai(struct student message[100]); voidtongji(struct student message[100]); //主函数 int main() { struct student message[100]; //定义结构体数组存放数据 intxuan; printf(\"1.成绩录入\2.成绩显示\3.成绩保存\\n4.成绩排序\5.成绩修改\6.成绩统计\\n7.退出系统\\n\"); while(1) { printf(\"请选择功能选项:\"); scanf(\"%d\",&xuan); //输入功能选项 while(xuan>7||xuan<1) //输入了非功能选项的代号则重新输入 { printf(\"输入错误,请从新输入:\"); scanf(\"%d\",&xuan); } switch(xuan) //调用各函数实现各个功能选项,并递归调用主菜单函数 { case 1:luru(message);break; case 2:xianshi(message);break; case 3:save(message);break; case 4:paixu(message);break; case 5:xiugai(message);break; case 6:tongji(message);break; case 7:exit(0); //退出系统 } } } voidluru(struct student message[100]) /*录入信息*/ { inti,ch; FILE *fp; if((fp=fopen(\"information.txt\",\"wb\"))==NULL) { printf(\"不能打开此文件!\\n\"); exit(0); } printf(\"请输入学生个数:\"); scanf(\"%d\",&m); for(i=0;i scanf(\"%s\",message[i].name); printf(\"请输入语文成绩:\"); scanf(\"%f\",&message[i].Chinese); printf(\"请输入英语成绩:\"); scanf(\"%f\",&message[i].English); printf(\"请输入数学成绩:\"); scanf(\"%f\",&message[i].Math); } printf(\"录入结束!!\\n\"); printf(\"按任意键继续\"); ch=getchar(); //接受回车字符 ch=getchar(); //按任意键继续运行程序 printf(\"1.成绩录入\2.成绩显示\3.成绩保存\\n4.成绩排序\5.成绩修改\6.成绩统计\\n7.退出系统\\n\"); } voidxianshi(struct student message[100]) /*显示信息*/ { inti,ch; FILE *fp; //课本335,…………定义一个指向文件的指针变量fp fp=fopen(\"information.txt\",\"r\"); //fscanf(fp1,\"%d\课本344,fscanf,fprintf函数的读写对象不是终端而是文件, //调用方式:fscanf(文件指针,格式字符串,输出列表); for(i=0;i ssage[i].English,message[i].Math); } printf(\"按任意键继续\"); ch=getchar(); ch=getchar(); printf(\"1.成绩录入\2.成绩显示\3.成绩保存\\n4.成绩排序\5.成绩修改\6.成绩统计\\n7.退出系统\\n\"); } voidpaixu(struct student message[100]) /*成绩排序*/ { FILE *fp; inti,j,ch; fp=fopen(\"information.txt\",\"r\"); for(i=0;i struct student t; 的相互交换 printf(\"语文成绩排序如下:\\n\"); for(i=0;i message[i]=message[j]; message[j]=t; } xianshi(message); printf(\"数学成绩排序如下:\\n\"); for(i=0;i message[i]=message[j]; message[j]=t; } xianshi(message); printf(\"英语成绩排序如下:\\n\"); for(i=0;i message[i]=message[j]; message[j]=t; //定义一个中间变量以便学生数据 } xianshi(message);//还原为学号排序 for(i=0;i t=message[i]; message[i]=message[j]; message[j]=t; } printf(\"按任意键继续\"); ch=getchar(); ch=getchar(); printf(\"1.成绩录入\2.成绩显示\3.成绩保存\\n4.成绩排序\5.成绩修改\6.成绩统计\\n7.退出系统\\n\"); } /*文件保存*/ void save(struct student message[100]) { FILE *fp; intch,i; if((fp=fopen(\"information.txt\",\"wb\"))==NULL) //新建一个文件 { printf(\"不能打开文件!\\n\"); } for(i=0;i fclose(fp);//关闭文件 printf(\"文件保存完毕!\"); printf(\"按任意键继续\"); ch=getchar(); ch=getchar(); printf(\"1.成绩录入\2.成绩显示\3.成绩保存\\n4.成绩排序\5.成绩修改\6.成绩统计\\n7.退出系统\\n\"); } voidxiugai(struct student message[100]) /*成绩修改*/ { FILE *fp; inti,k,ch; fp=fopen(\"information.txt\",\"r\"); for(i=0;i charc,a[10]=\"111111\",b[10],num[100]; //设初始密码为111111 printf(\"请输入密码(111111):\\n\"); scanf(\"%s\",&b); while(strcmp(a,b)!=0) { printf(\"密码错误,请重新输入:\"); scanf(\"%s\",&b); } printf(\"请输入要修改成绩的学生的学号:\"); scanf(\"%s\",&num); for(i=0;i printf(\"请输入该生语文成绩:\"); scanf(\"%f\",&message[i].Chinese); printf(\"请输入该生数学成绩:\"); scanf(\"%f\",&message[i].Math); printf(\"请输入该生英语成绩:\"); scanf(\"%f\",&message[i].English); } } printf(\"1.继续修改.\\n2.返回主菜单.\\n请选择:\"); c=getchar(); scanf(\"%d\",&k); if(k==1) xiugai(message); printf(\"按任意键继续\"); ch=getchar(); ch=getchar(); printf(\"1.成绩录入\2.成绩显示\3.成绩保存\\n4.成绩排序\5.成绩修改\6.成绩统计\\n7.退出系统\\n\"); } voidtongji(struct student message[100]) /*成绩统计*/ { int i,j,n1=0,n2=0,n3=0,ch; float a=0,b=0,c=0; FILE *fp; fp=fopen(\"information.txt\",\"r\"); for(i=0;i printf(\"统计情况如下:\\n\"); for(i=0;i t=message[i]; //结构体数组元素整体代换,即学生数据整体代换 message[i]=message[j]; message[j]=t; } printf(\"语文成绩最高的学生信息为:\\n\"); printf(\"学号\姓名\语文\英语\数学\\n\"); printf(\"%s\%s\%3.1f\%3.1f\%3.1f\\\n\",message[0].id,message[0].name,message[0].Chinese,message[0].English,message[0].Math); for(i=0;i message[i]=message[j]; message[j]=t; } printf(\"数学成绩最高的学生信息为:\\n\"); printf(\"学号\姓名\语文\英语\数学\\n\"); printf(\"%s\%s\%3.1f\%3.1f\%3.1f\\\n\",message[0].id,message[0].name,message[0].Chinese,message[0].English,message[0].Math); printf(\"英语成绩排序如下:\\n\"); for(i=0;i message[i]=message[j]; message[j]=t; } printf(\"英语成绩最高的学生信息为:\\n\"); printf(\"学号\姓名\语文\英语\数学\\n\"); printf(\"%s\%s\%3.1f\%3.1f\%3.1f\\\n\",message[0].id,message[0].name,message[0].Chinese,message[0].English,message[0].Math); for(i=0;i a=a/m;b=b/m;c=c/m; printf(\"语文平均分为:%3.2f\\n数学平均分为:%3.2f\\n英语平均分为:%3.2f\\n\",a,b,c); for(i=0;i n1=n1+1; if(message[i].Math>b) n2=n2+1; if(message[i].English>b) n3=n3+1; } printf(\"超过语文成绩平均分的同学有%d位\\n超过数学成绩平均分的同学有%d位\\n超过英语成绩平均分的同学有%d位\\n\",n1,n2,n3); printf(\"按任意键继续\"); ch=getchar(); ch=getchar(); printf(\"1.成绩录入\2.成绩显示\3.成绩保存\\n4.成绩排序\5.成绩修改\6.成绩统计\\n7.退出系统\\n\"); } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- pqdy.cn 版权所有 赣ICP备2024042791号-6
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务