C语言大作业封面模板.doc
C语言大作业 班级:10物理 学号: 姓名:崔文明 2013年6月20日#include<stdio.h> #include<string.h> #include<stdlib.h> #define M 3 typedef struct students char name20; char num15; float scoreM; float average; float total;MESSA; MESSA stu20;int S; void menu(void); void choose(void); void input(void); void savescore(void); void loadscore(void); void choosec(void); void average(void); void total(void); void name(void); void number(void); void show(void); void excellent(void); void passing(void); void personal(void); void Exit(); void main() menu(); choose(); void menu(void)system("CLS");printf("t * n");printf("t * 欢迎使用这个成绩管理系统 * n");printf("t * n");printf("t n");printf("t 请输入学生的分数.请按.1 n");printf("t 搜索学生分数 .请按.2 n");printf("t 搜索学生的优秀通过率.请按.3 n");printf("t 搜索学生的通过状况.请按.4 n");printf("t 搜索个人各门成绩分数.请按.5 n");printf("t 退出.请按.6 n"); printf("nt请选择:n"); void choose(void) int x,flag=0; while(flag=0) fflush(stdin); scanf("%d",&x); getchar(); switch(x) case 1:input();savescore();loadscore();menu();choose();flag=1;break; case 2:choosec();flag=1;break; case 3:excellent();flag=1;break; case 4:passing();flag=1;break; case 5:personal();flag=1;break; case 6:Exit();flag=1; default:printf("tSorry,your choose doesn't exist! please choose again!n"); void input(void) int flag=1,j,i;char k;float pp=0; for(i=0;flag=1;i+) printf("t请输入第N.%hd个学生的成绩信息:n",i+1); puts("姓名:"); fflush(stdin); gets(stui.name); fflush(stdin); puts("学号:"); fflush(stdin); gets(stui.num); puts("t分数:t语文t数学t英语"); for(j=0;j<M;j+) scanf("%f",&stui.scorej); puts("t你想要继续么?(Y/N)"); while(1) puts("t请选择."); fflush(stdin); scanf("%c",&k); if(k!='N'&&k!='Y') puts("t出错了,哈哈,再输一次吧!"); else if(k='N') flag=0;S=i;break; else break; for(i=0;i<=S;i+) for(j=0,stui.total=0.0;j<M;j+) stui.total+=stui.scorej; stui.average=stui.total/M; void savescore(void) int i,flag=1;FILE *fp;char m;puts("t你想要保存这些数据么?(Y/N)");while(1) fflush(stdin); scanf("%c",&m); if(m='Y') if(fp=fopen("D:score.txt","w")=NULL) printf("t对不起哦,无法打开这个表单.n"); exit(0); for(i=0;i<=S;i+) if(fwrite(&stui,sizeof(struct students),1,fp)!=1) puts("t对不起,表单书写错误了!"); flag=0; if(flag=1) for(i=0;i<=S;i+) printf("t好了,第N.%d个学生的数据已经被保存了哦!n",i+1); fclose(fp); break; else if(m!='N'&&m!='Y') puts("t对不起,你输入错误,请重新输入一次吧!"); else break; void loadscore(void) FILE *fp;char n;MESSA restu20;int i,j,flag=0; char read510="学号","姓名","语文","数学","英语" puts("t你想要立刻读取这些数据么?(Y/N)"); while(1) fflush(stdin); scanf("%c",&n); if(n='Y') if(fp=fopen("D:score.txt","r")=NULL) fprintf(stderr,"tOpen %s error!n","score.txt"); exit(0); for(i=0;i<=S;i+) fread(&restui,sizeof(struct students),1,fp); system("CLS"); puts("t成绩信息读取中."); printf("n"); printf("t$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$n"); printf("t$*$ $*$nt"); printf("$*$ "); for(i=0;i<5;i+) printf("%-10s",readi); printf(" $*$"); printf("n"); for(i=0;i<=S;i+) printf("t$*$ "); printf("%-10s%-10s",restui.num,restui.name); for(j=0;j<3;j+) printf("%-10.2f",restui.scorej); printf(" $*$n"); printf("t$*$ $*$"); printf("nt$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$n"); fclose(fp); break; else if(n='N') break; else printf("t对不起,出现错误了,再来一次吧,相信你会成功的!n"); puts("t输入任意键回到主菜单.n"); getchar(); getchar(); void choosec(void) int biao,i,flag=0;FILE *fp; if(fp=fopen("D:score.txt","r")=NULL) printf("t对不起,你无法输入任何成绩信息! 无法打开这个表单!nnn");printf("t输入任意键回到主菜单!n"); getchar();getchar(); menu(); choose(); for(i=0;i<=S;i+) fread(&stui,sizeof(struct students),1,fp); fclose(fp); system("CLS"); printf("t以下是第二个菜单:n"); printf("n"); printf("t%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$n"); printf("t%$ 按平均分由高到低.请按.1 %$n"); printf("t%$ 按总分由高到低.请按.2 %$n"); printf("t%$ 按学号降序.请按.3 %$n"); printf("t%$ 按姓名降序.请按.4 %$n"); printf("t%$ 回到主菜单.请按.5 %$n"); printf("t%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$n"); printf("nt请选择输入方式:n"); while(flag=0) fflush(stdin); scanf("%d",&biao); getchar(); switch(biao) case 1:flag=1;average();show();break; case 2:flag=1;total();show();break; case 3:flag=1;number();show();break; case 4:flag=1;name();show();break; case 5:flag=1;menu();choose();break; default:printf("t对不起,你的操作无法进行! 请重新做出正确操作!n"); void show(void) int i,j,n,flag=0; char head710="学号","姓名","语文","数学","英语","总分","平均分" system("CLS"); puts("t读取信息中."); printf("n"); printf("t$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$nnt"); for(i=0;i<7;i+) printf("%-10s",headi); printf("nt"); for(i=0;i<=S;i+) printf("%-10s%-10s",stui.num,stui.name); for(j=0;j<3;j+) printf("%-10.2f",stui.scorej); printf("%-10.2f",stui.total); printf("%-10.2f",stui.average); printf("nt"); printf("nt$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$n"); printf("nYou want :(1 or 2)n"); puts("t1.回到第二个菜单!n"); puts("t2.回到主菜单!n"); while(flag=0) fflush(stdin); scanf("%d",&n); getchar(); switch(n) case 1:flag=1;choosec();break; case 2:flag=1;menu();choose();break;default:printf("t出错了,请再次输入!n"); void average(void) int i,j,k;MESSA t; for(i=0;i<S;i+) k=i; for(j=i+1;j<=S;j+) if(stuk.average<stuj.average) k=j; if(k!=i) t=stuk; stuk=stui; stui=t; void total(void) int i,j,k;MESSA t; for(i=0;i<S;i+) k=i; for(j=i+1;j<=S;j+) if(stuk.total<stuj.total) k=j; if(k!=i) t=stuk; stuk=stui; stui=t; void number(void) int i,j,k;MESSA t; for(i=0;i<S;i+) k=i; for(j=i+1;j<=S;j+) if(strcmp(stuk.num,stuj.num)<0) k=j; if(k!=i) t=stuk; stuk=stui; stui=t; void name(void) int i,j,k;MESSA t; for(i=0;i<S;i+) k=i; for(j=i+1;j<=S;j+) if(strcmp(stuk.name,stuj.name)<0) k=j; if(k!=i) t=stuk; stuk=stui; stui=t; void excellent(void)int i,j,k,w,flag=0;float m;FILE *fp;char head2310="数学","语文","英语"if(fp=fopen("D:score.txt","r")=NULL) printf("t对不起,你无法输入任何信息! 找不到该表单!nnn");printf("t输入任意键回到主菜单!n"); getchar();getchar(); menu(); choose(); for(i=0;i<=S;i+) fread(&stui,sizeof(struct students),1,fp);fclose(fp);system("CLS");for(i=0;i<M;i+)printf("tThe excellent students in %s is following:n",head2i); for(j=0,k=0;j<=S;j+) if(stuj.scorei>=85.00) k+; printf("t%st%s",stuj.num,stuj.name); printf("t%.2fn",stuj.scorei);m=(k*1.0/(S+1)*100; printf("tThe excellent rate is %.2f%n",m);printf("nn");puts("t你想要继续操作么?n");printf("t1.离开系统!n");printf("t2.回到主菜单!n");printf("t3.回到第二个菜单!n"); puts("t请选择:n");while(flag=0) fflush(stdin); scanf("%d",&w); getchar(); switch(w) case 1:Exit();flag=1; case 2:menu();choose();flag=1;break; case 3:choosec();flag=1;break; default:printf("t对不起,操作无法进行! 请重新选择!n"); void passing(void) int i,j,k,w,flag=0;float m;FILE *fp; char head2310="数学","语文","英语" if(fp=fopen("D:score.txt","r")=NULL) printf("t对不起,你不能输入任何信息! 无法找到该表单!nnn");printf("t输入任意键回到主菜单!n"); getchar();getchar(); menu(); choose(); for(i=0;i<=S;i+)fread(&stui,sizeof(struct students),1,fp);fclose(fp);system("CLS"); for(i=0;i<M;i+) printf("tThe passing students in %s is following:n",head2i); for(j=0,k=0;j<=S;j+)if(stuj.scorei>=60.0) k+; printf("t%st%s",stuj.num,stuj.name); printf("t%.2fn",stuj.scorei); m=(k*1.0/(S+1)*100; printf("tThe passing rate is %.2f%n",m); printf("nn"); puts("t是否继续操作?n");printf("t1.离开系统!n");printf("t2.回到主菜单!n");printf("t3.回到第二个菜单!n"); puts("t请选择:n");while(flag=0) fflush(stdin); scanf("%d",&w); getchar(); switch(w) case 1:Exit();flag=1; case 2:menu();choose();flag=1;break; case 3:choosec();flag=1;break; default:printf("t对不起,你的操作无法进行! 请重新选择!n"); void personal(void)int i,j,f,w,flag=0;char b10,a;FILE *fp;char head3710="学号","姓名","语文","数学","英语","总分","平均分" if(fp=fopen("D:score.txt","r")=NULL) printf("t对不起,无法输入任何信息! 无法找到该表单!nnn");printf("t输入任意键回到主菜单!n"); getchar();getchar(); menu(); choose(); for(i=0;i<=S;i+) fread(&stui,sizeof(struct students),1,fp); fclose(fp); puts("t请输入你想要搜索的学生成绩信息:n"); puts("t学生成绩信息如下.n"); for(i=0;i<=S;i+) printf("t%s",stui.name); puts("tnYour choose is :n"); while(1) fflush(stdin); gets(b); for(i=0;i<=S;i+) if(strcmp(b,stui.name)=0) printf("t该生学生成绩信息%s?(Y/N)n",stui.name); f=i; fflush(stdin); scanf("%c",&a); if(a='Y') system("CLS"); puts("t成绩信息读取中."); printf("n"); printf("t*nnt"); for(i=0;i<7;i+) printf("%-10s",head3i); printf("nt"); printf("%-10s%-10s",stuf.num,stuf.name); for(j=0;j<3;j+) printf("%-10.2f",stuf.scorej); printf("%-10.2f",stuf.total); printf("%-10.2f",stuf.average); printf("n"); printf("t*n");break; else printf("t出错了,哈哈哈,重新选择吧!n");puts("t是否继续操作?n");printf("t1.离开系统!n");printf("t2.回到主菜单!n");printf("t3.回到第二个菜单!n"); puts("t请选择:n");while(flag=0) fflush(stdin); scanf("%d",&w); getchar(); switch(w) case 1:Exit();flag=1; case 2:menu();choose();flag=1;break; case 3:choosec();flag=1;break; default:printf("t对不起,操作无法进行! 请重新选择!n"); void Exit(void)system("CLS"); exit(0);