1、- .*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,XX,四门课程成绩(语文、数学、英语和计算机)等。主要功能:1 能按学期、按班级完成对学生成绩的录入、修改2 能按班级统计学生的成绩,求学生的总分及平均分3 能查询学生成绩,不及格科目及学生4 能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include#include#include#includestruct Studentint cls;char nam10;char num10;int chinese;int english;int puter;int math;stud11
2、00,stud2100;int menu()char a;while(a7|a0)system(cls);printf( 欢送使用学生成绩管理系统 n);printf( 制作人:章建 n);printf(* 学生成绩管理系统 *n);printf( 1.输入学生成绩n);printf( 2.输出学生成绩n);printf( 3.查找并显示学生成绩n);printf( 4.按XX查找,修改学生资料n);printf( 5.显示所有学生n);printf( 6.查找并删除学生信息n);printf( 7.从文件读取数据n);printf( 0.储存学生资料并退出系统n);printf(*n);pr
3、intf(请选择(0-7)n);a=getchar();return(a-0);/*/int Input(Student stud,int n) /输入数据(第一学期)。int i=0;char sign,x10;for(;sign !=n&sign !=N;)printf( XX:);scanf(%s,studn+i.nam);printf( 班级:);scanf(%d,&studn+i.cls);printf( 学号:);scanf(%s,studn+i.num);printf( 语文:);scanf(%d,&studn+i.chinese);printf( 数学:);scanf(%d,&
4、studn+i.math);printf( 英语:);scanf(%d,&studn+i.english);printf( 计算机:);scanf(%d,&studn+i.puter);gets(x);printf(还有要输入的信息吗?(y/n);scanf(%c,&sign);i+;return(n+i);/*输出数据*/void Display(Student stud, int n)int i;printf( 班级 学号 XX 语文 数学 英语 计算机 总分 平均分n);for(i=1;i1 & i%10=0)system(pause);system(pause);/*查找学生显示其信息
5、*/void Query(Student stud,int n)char nam20;printf( 输入其XX:n); scanf(%s,nam);int i=0;while(strcmp(studi.nam,nam)!=0&in)i+;if(i=n)printf(ttt没有发现该学生的资料!n);return;printf( 学号:%sn,studi.num);printf( 班级:%dn,studi.cls);printf( 语文:%dn,studi.chinese);printf( 英语:%dn,studi.english);printf( 数学:%dn,studi.math);pri
6、ntf( 计算机:%dn,studi.puter);/*删除学生信息*/int Delete(Student stud,int n)char s20;int i=0,j;printf( 请输入要删除的学生的XX:n);scanf(%s,s);while(strcmp(studi.nam,s)!=0&in) i+; if(i=n) printf(ttt没有发现该学生资料!n);return(n); for(j=i;jn-1;j+) strcpy(studj.num,studj+1.num);strcpy(studj.nam,studj+1.nam); studj.cls=studj+1.cls;
7、studj.chinese=studj+1.chinese;studj.math=studj+1.math;studj.english=studj+1.english; studj.puter=studj+1.puter; printf( 当前信息已删除成功!); return(n-1); /*修改信息*/int Revise(Student stud,int n)int i=0;char na10;scanf(%s,na);while(strcmp(studi.nam,na)!=0&in)i+;if(i=n)printf(ttt没有发现该学生的资料!n);printf(修改班级:n);sca
8、nf(%d,&studi.cls);printf(修改学号:n);scanf(%s,studi.num);printf(修改语文成绩:n);scanf(%d,&studi.chinese);printf(修改英语成绩:n);scanf(%d,&studi.english);printf(修改数学成绩:n);scanf(%d,&studi.math);printf(修改计算机成绩:n);scanf(%d,&studi.puter);printf(修改成功n);return(n);/*显示学生*/void show(Student stud,int n) for(int i=0;in;i+)pri
9、ntf( %sn,studi.nam);system(pause);/*从文件读取数据*/int AddfromText(Student stud, int n) int i=0,number,x=0,y=0;FILE *fp;char filename20;printf( 输入文件名:);scanf(%s,filename);if(fp=fopen(filename,rb)=NULL)printf( 无法翻开文件);system(pause);return(n);fscanf(fp,%d,&number);for(;inumber;)fscanf(fp,%d%s%s%d%d%d%d%d%dn
10、,&studn+i.cls,&studn+i.num,&studn+i.nam,&studn+i.chinese,&studn+i.math,&studn+i.english,&studn+i.puter,&x,&y);i+;n+=number;fclose(fp);printf( 读入成功!);system(pause);return(n);/*将所有记录写进文件*/void WritetoText(Student stud,int n) int i=0;FILE *fp;char filename20;printf( 将资料输入文件n);printf( 输入文件名n);scanf(%s,f
11、ilename);if(fp=fopen(filename,w+)=NULL)printf( 无法翻开文件n);system(pause);return;fprintf(fp,%dn,n); for(;in;)fprintf(fp,%-8d%-8s%-8s%-5d%-5d%-5d%-5d%-5d%-5dn,studi.cls,studi.num,studi.nam,studi.chinese,studi.math,studi.english,studi.puter,studi.chinese+studi.math+studi.english+studi.puter,(studi.chinese
12、+studi.math+studi.english+studi.puter)/4);i+;fclose(fp);/*主函数调用*/void main()int n1=0,n2=0;for(;)switch(menu()case 1:int t;printf( 输入学生资料n);printf( 输入学期);scanf(%d,&t);if(t=1)n1=Input(stud1,n1);else if(t=2)n2=Input(stud2,n2);break;case 2:printf( 输出所有学生资料n);if(n1!=0)printf( 第一学期n);Display(stud1,n1);if(
13、n2!=0)printf( 第二学期n);Display(stud2,n2);break;case 3:int r;printf( 查找学生n);printf( 请输入学期n);scanf(%d,&r);if(r=1)Query(stud1,n1);else if(r=2)Query(stud2,n2);system(pause);break;case 4:int p;printf( 修改学生资料n);printf( 请输入学期n);scanf(%d,&p);if(p=1)printf( 输入你要修改的学生的XX:);n1=Revise(stud1,n1);else if(p=2)printf
14、( 输入你要修改的学生的XX:);n2=Revise(stud2,n2);system(pause);break;case 5:printf( 显示所有学生:n);if(n1!=0)printf( 第一学期n);show(stud1,n1);if(n2!=0)printf( 第二学期n);show(stud2,n2);system(pause);break; case 6:printf( 查找并删除学生信息n);int o;printf( 请输入学期:);scanf(%d,&o);if(o=1)printf( 第一学期n);n1=Delete(stud1,n1);if(o=2)printf(
15、第二学期n);n2=Delete(stud2,n2);system(pause);break;case 7:printf( 从文件中读入数据n);printf( 读取第一学期的文件n);n1=AddfromText(stud1,n1);printf( 读取第二学期的文件n);n2=AddfromText(stud2,n2);break;case 0:printf( 将所有资料写入文件n);if(n1!=0)printf( 存储第一学期学生资料n);WritetoText(stud1,n1);if(n2!=0)printf( 存储第二学期学生资料n);WritetoText(stud2,n2);printf( 输入成功n);int b;printf( 请确定是否退出系统n);printf( 0.退出系统n);printf( 1.返回n); scanf(%d,&b);if(b=0)printf( 谢谢使用n);system(pause);exit(0);system(pause);break;- . 可修编.
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100