C语言课程设计报告--学生成绩管理系统.doc
- .*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,XX,四门课程成绩(语文、数学、英语和计算机)等。主要功能:1 能按学期、按班级完成对学生成绩的录入、修改2 能按班级统计学生的成绩,求学生的总分及平均分3 能查询学生成绩,不及格科目及学生4 能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Studentint cls;char nam10;char num10;int chinese;int english;int puter;int math;stud1100,stud2100;int menu()char a;while(a>'7'|a<'0')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");printf("请选择(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",&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;i<n+1;i+) int s=studi-1.chinese+studi-1.math+studi-1.english+studi-1.puter;printf("%7d,%7s,%7s,%7d,%7d,%7d,%7d,%7d,%7dn",studi-1.cls,studi-1.num,studi-1.nam,studi-1.chinese,studi-1.math,studi-1.english,studi-1.puter,s,s/4);if(i>1 && i%10=0)system("pause");system("pause");/*查找学生显示其信息*/void Query(Student stud,int n)char nam20;printf(" 输入其XX:n"); scanf("%s",nam);int i=0;while(strcmp(studi.nam,nam)!=0&&i<n)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);printf(" 计算机:%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&&i<n) i+; if(i=n) printf("ttt没有发现该学生资料!n");return(n); for(j=i;j<n-1;j+) strcpy(studj.num,studj+1.num);strcpy(studj.nam,studj+1.nam); studj.cls=studj+1.cls;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&&i<n)i+;if(i=n)printf("ttt没有发现该学生的资料!n");printf("修改班级:n");scanf("%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;i<n;i+)printf(" %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(;i<number;)fscanf(fp,"%d%s%s%d%d%d%d%d%dn",&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",filename);if(fp=fopen(filename,"w+")=NULL)printf(" 无法翻开文件n");system("pause");return;fprintf(fp,"%dn",n); for(;i<n;)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+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(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(" 输入你要修改的学生的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(" 第二学期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;- . 可修编.