《小学生教学辅助系统V60.docx》由会员分享,可在线阅读,更多相关《小学生教学辅助系统V60.docx(25页珍藏版)》请在三一办公上搜索。
1、小学生教学辅助系统V60#include<stdio.h>#include<stdlib.h>#include<string.h>#define NUM_N 30#define N 100#define SCORE_N 7#define COURSE_N 4typedef struct studentchar nameNUM_N;int scoreSCORE_N;float averstudent;STUDENT;int Input(STUDENT stu,int n);int refernum(STUDENT stu,int n);int refername(STUD
2、ENT stu,int n);void Print(STUDENT stu,int n);void High(STUDENT stu,STUDENT b,int n);void Down(STUDENT stu,STUDENT b,int n);void Score(STUDENT stu,STUDENT b,int n);void SortString(STUDENT stu,STUDENT b,int n);void Sum(STUDENT stu,int n,int coursesum);void Count(STUDENT stu,int n,int countCOURSE_N);vo
3、id Printf(STUDENT stu,int n,float avercourse,int coursesum);void Average(STUDENT stu,int n,float avercourse,int coursesum);void Writetofile(STUDENT stu,FILE *fp,int n);void Readfromfile(FILE *fp,int n);void mainint coursesumCOURSE_N=0,countNUM_NCOURSE_N=0;float avercourseNUM_N;int i,j,p,n,op,ret=0;
4、char answer=y;FILE *fp;STUDENT stuNUM_N;STUDENT bNUM_N;Menu:;system(cls);printf( *欢迎使用学生成绩管理系统V4.0*n);printf(n);printf( 使用菜单如下n);printf(n);printf( 1.输入每个学生的姓名、学号和考试成绩n);printf( 2.计算每门课程的总分和平均分n);printf( 3.计算每个学生的总分和平均分n);printf( 4.按每个学生的总分由高到低排出名次表n);printf( 5.按每个学生的总分由低到高排出名次表n);printf( 6.按学号由小到大排出
5、成绩表n);printf( 7.按姓名字典顺序排出成绩表n);printf( 8.按学号查询学生排名及其考试成绩n);printf( 9.按姓名查询学生排名及其考试成绩n);printf(10.按优、良、中、及格、重考对每门课程分别统计人数及其所占比例n);printf(11.输出每个学生的学号、考试成绩,课程总分和平均分n);printf(12.将每个学生的记录信息写入文件n);printf(13.从文件中读出每个学生的记录信息并显示n);printf( 0.退出n);printf(n);read:;printf(请输入你的选择:n);scanf(%d,&op);if(op!=1&op!=1
6、3&ret=0)printf(请先输入成绩、学号!);ret+;goto read;else ret+;goto start;doanswer=n;printf(请输入你的选择:n);scanf(%d,&op);start:;switch(op)case 1:n=Input(stu,n);break;case 2:printf(计算每门课程的总分和平均分n);Sum(stu,n,coursesum);for(i=0;i<3;i+)printf(课程%d总分=%dn,i,coursesumi);Average(stu,n,avercourse,coursesum);for(i=0;i<3
7、;i+)printf(课程%d平均分%fn,i,avercoursei);break;case 3:printf(计算每个学生的总分和平均分n);Sum(stu,n,coursesum);for(i=0;i<n;i+)printf(学生%d总分=%dn,i+1,stui.score4);Average(stu,n,avercourse,coursesum);for(i=0;i<n;i+)printf(学生%d平均分=%fn,i+1,stui.averstudent);break;case 4:printf(按每个学生的总分由高到低排出名次表n);Sum(stu,n,coursesum)
8、;High(stu,b,n);Print(stu,n);break;case 5:printf(按每个学生的总分由低到高排出名次表n);Sum(stu,n,coursesum);Down(stu,b,n);Print(stu,n);break;case 6:printf(按学号由小到大排出成绩表n);Score(stu,b,n);Print(stu,n);break;case 7:printf(按姓名的字典顺序排出成绩表n);Sum(stu,n,coursesum);SortString(stu,b,n);printf(姓名 学号 数学 英语 物理 总分n);for(i=0;i<n;i+)
9、puts(stui.name);for(j=0;j<5;j+)printf(%6ld,stui.scorej);printf(n);break;case 8:Sum(stu,n,coursesum);High(stu,b,n);printf(按学号查询学生排名及其考试成绩n); i=refernum(stu,n);if(i!=-1)printf(姓名 学号 数学 英语 物理 总分 名次n);for(j=0;j<5;j+)printf(%6ld,stui.scorej);printf(%6ldn,i+1);else printf(查无此人n);break;case 9:printf(按姓
10、名查询学生排名及其考试成绩n);Sum(stu,n,coursesum);High(stu,b,n);i=refername(stu,n);if(i!=-1)printf(姓名 学号 数学 英语 物理 总分 名次n);printf(%s,stui.name);for(j=0;j<5;j+)printf(%6ld,stui.scorej);printf(%6ldn,i+1);else printf(查无此人n);break;case 10:printf(按优、良、中、及格、重考对每门课程分别统计人数及其所占比例n);Count(stu,n,count);printf( 优秀 良好 中等 及格
11、 不及格n);printf(数学);for(i=9;i>4;i-)printf(%6ld,counti1);printf(n英语);for(i=9;i>4;i-)printf(%6ld,counti2);printf(n物理);for(i=9;i>4;i-)printf(%6ld,counti3);printf(n);break;case 11:printf(输出每个学生的学号、考试成绩,课程总分和平均分n);Sum(stu,n,coursesum);Average(stu,n,avercourse,coursesum);Printf(stu,n,avercourse,course
12、sum);break;case 12:printf(将每个学生的记录信息写入文件n);Sum(stu,n,coursesum);Average(stu,n,avercourse,coursesum);Writetofile(stu,fp,n);break;case 13:printf(文件中读出每个学生的记录信息并显示n);Readfromfile(fp,n);break;case 0:if(op=0) goto end;break; printf(do you want to go on?);scanf(%c%c,&p,&answer); if(answer=n|answer=N) goto
13、 end;else goto Menu;while(op!=0);end:;printf(感谢使用,下次再见!n); /输入函数int Input(STUDENT stu,int n)int i;printf(总人数:n);scanf(%d,&n);while (n>30) printf(人数小于30n);printf(总人数:n);scanf(%d,&n);printf(姓名 学号 MT EN PHn);for(i=0;i<n;i+)scanf(%s %d %d %d %d,&stui.name,&stui.score0,&stui.score1,&stui.score2,&stui
14、.score3);return(n);/输出函数void Print(STUDENT stu,int n)int i,j;printf(姓名 学号 数学 英语 物理 总分n);for(i=0;i<n;i+)printf(%s,stui.name);for(j=0;j<5;j+)printf(%6ld,stui.scorej);printf(n);/计算总值函数void Sum(STUDENT stu,int n,int coursesum)int i,j;for(j=1;j<4;j+)coursesumj-1=0;for(i=0;i<n;i+)coursesumj-1=cour
15、sesumj-1+stui.scorej;for(i=0;i<n;i+)stui.score4=0;for(j=1;j<4;j+)stui.score4=stui.score4+stui.scorej;/计算平均值void Average(STUDENT stu,int n,float avercourse,int coursesum)int i;for (i=0;i<3;i+)avercoursei=(float)coursesumi/n;stui.averstudent=(float)stui.score4/3;/按总分由高到低排名void High(STUDENT stu,S
16、TUDENT b,int n)int i,k=0;dofor(i=0;i<n-1;i+)if (stui.score4<stui+1.score4)bi=stui;stui=stui+1;stui+1=bi;k+;while(k<n);/按学生成绩由低到高排列void Down(STUDENT stu,STUDENT b,int n)int i,k=0;dofor(i=0;i<n-1;i+)if (stui.score4>stui+1.score4)bi=stui;stui=stui+1;stui+1=bi;k+;while(k<n);/按学号由小到大排列void Sc
17、ore(STUDENT stu,STUDENT b,int n)int i,k=0;dofor(i=0;i<n-1;i+)if (stui.score0>stui+1.score0)bi=stui;stui=stui+1;stui+1=bi;k+;while(k<n);/按姓名的字典顺序排出成绩表void SortString(STUDENT stu,STUDENT b,int n)int i,j;for(i=0;i<n-1;i+)for(j=i+1;j<n;j+)if(strcmp(stuj.name,stui.name)<0)bi=stui;stui=stui+1;
18、stui+1=bi;/按学号查询学生排名及其各科考试成绩int refernum(STUDENT stu,int n)int i=0,t,num1;printf(请输入筛选学号:);scanf(%d,&num1);doif(i<=n)if(stui.score0=num1) return i;t=1;else t=0;i+;else t=1;return -1;while(t=0);/按姓名查询学生排名及其各科考试成绩int refername(STUDENT stu,int n)int i=0,j,t;char prtNUM_N;printf(输入待查找姓名n);scanf(%c,&j)
19、;gets(prt);doif(i<=n)if(strcmp(stui.name,prt)=0) return i;t=1;else t=0;i+;else t=1;return -1;while(t=0);/按优、良、中、及格、重考对每门课程分别统计人数及其所占比例void Count(STUDENT stu,int n,int countCOURSE_N)int a,i,j;for(j=1;j<4;j+)for(i=0;i<n;i+)a=stui.scorej/10;countaj+;for(j=1;j<4;j+)count9j=count10j+count9j;count
20、5j=count5j+count4j+count3j+count2j+count1j+count0j;/输出每个学生的学号、考试成绩,课程总分和平均分void Printf(STUDENT stu,int n,float avercourse,int coursesum)int i,j;printf(姓名 学号 数学 英语 物理 总分 平均分n);for(i=0;i<n;i+)printf(%s,stui.name);for(j=0;j<5;j+)printf(%6ld,stui.scorej);printf( %f,stui.averstudent);printf(n);/将每个学生
21、的记录信息写入文件void Writetofile(STUDENT stu,FILE *fp,int n)int i;if(fp=fopen(student.txt,w)=NULL)printf(Failure to open student.txtn);exit(0);for (i=0;i<n;i+)fprintf(fp,%s%6ld%6ld%6ld%6ld%6ld %lfn,stui.name,stui.score0,stui.score1,stui.score2,stui.score3,stui.score4,stui.averstudent);fclose(fp);printf(文
22、件录入完成n);/从文件中读出每个学生的记录信息并显示void Readfromfile(FILE *fp,int n)STUDENT bN;int i;if(fp=fopen(student.txt,rb)=NULL)printf(尚未生成此文件n);exit(0);for (i=0;!feof(fp);i+)fscanf(fp,%s%6ld%6ld%6ld%6ld%6ld %f,&bi.name,&bi.score0,&bi.score1,&bi.score2,&bi.score3,&bi.score4,&bi.averstudent);n=i;fclose(fp);/printf(finsh!n);/printf(%dn,n);/printf(%dn,i);for(i=0;i<n-1;i+)printf(%s%6ld%6ld%6ld%6ld%6ld %fn,bi.name,bi.score0,bi.score1,bi.score2,bi.score3,bi.score4,bi.averstudent);