1、学生成绩管理系统C语言课程设计源代码#include#include#include#include #include struct chengji /* 成绩结构体*/ int point; char subject20; ; struct student /* 学生结构体*/ int w; char name20; int number; struct chengji cheng30; float sum; float average; stu40; void pjun(); /*按平均分排序*/ void pfen(); /*按总分排序*/ void addnew(); /*录入学生成绩
2、*/ void pall(); /*显示所有成绩*/ void check(); /*查询菜单*/ void pnum(); /*按学号排序*/ void pjing(); /*精确查找*/*/ /*主菜单*/ main() char choose; while(1) printf(ntt*); printf(ntt* 欢迎使用成绩管理系统 *); printf(ntt* *); printf(ntt* 请选择 *); printf(ntt* 1. 录入学生成绩 *); printf(ntt* 2. 查询学生成绩 *); printf(ntt* 3. 清屏 *); printf(ntt* 0.
3、 退出程序 *); printf(ntt* *); printf(ntt*); printf(nn); printf(请选择:); scanf(%c,&choose);getchar(); switch(choose) case 1: addnew(); break; case 2: check(); break; case 3: system(cls); break; case 0: exit(0); break; default: printf(输入错误,请从新输入!nn); /*/ /*录入学生成绩*/ void addnew() int n,m,i,p; float sum; floa
4、t average; FILE *file; sum=0.00000; average=0.00000; if(c:student.dat,rb)=NULL) file = fopen(c:student.dat, wb+); /* 创建一个文件*/ printf(请输入需要录入的学生人数: ); scanf(%d,&n); for(i=0;in;i+) printf(输入第%d个同学信息:n,i+1); printf(姓名:); scanf(%s,&stui.name); printf(学号:); scanf(%d,&stui.number); printf(输入科目个数: ); scanf
5、(%d,&m); stui.w=m; printf(按科目(回车)成绩(回车)的顺序输入: n); /* 录入成绩*/ for(p=0;pm;p+) scanf(%s,&stui.chengp.subject); scanf(%d,&stui.chengp.point); stui.sum=stui.sum+stui.chengp.point; stui.average=stui.sum/m; /* printf(总分%f , 平均分%fn ,stui.sum,stui.average);*/ fwrite(&stui,sizeof(stu),1,file); /* 把stu写入文件*/ fc
6、lose(file); /* 关闭文件*/ fflush(stdin); system(cls); /*/ /*查询菜单*/void check() while(1) char choose; printf(ntt*); printf(ntt* 查询菜单 *); printf(ntt* *); printf(ntt* 请选择 *); printf(ntt* 1. 按学号排列 *); printf(ntt* 2. 按总分排列 *); printf(ntt* 3. 按平均分排列 *); printf(ntt* 4. 精确查询 *); printf(ntt* 5. 显示所有学生成绩 *); prin
7、tf(ntt* 6. 清屏 *); printf(ntt* 0. 返回 *); printf(ntt*); printf(nn); printf(请选择:); scanf(%c,&choose);getchar(); switch(choose) case 1: pnum(); break; case 2: pfen(); break; case 3: pjun(); break; case 4: pjing(); break; case 5: pall(); break; case 6: system(cls); break; case 0: main(); break; /*/ /*显示所
8、有成绩*/ void pall() int i=0,m; FILE *file; if(c:student.dat,rb)=NULL) printf(Open error!n); getch(); exit(0); fread(&stui,sizeof(stu),1,file); while(feof() /* 循环整个文件*/ printf(姓名-学号-总分-平均分n); printf(%s %5d %10.1f %8.1fn,stui.name,stui.number,stui.sum,stui.average); printf( 科目-成绩n); for(m=0;m0;j-) for(i
9、=0;istui+1.number) /*对比学号,对换stu*/ bm=stui; /*交换位置*/ stui=stui+1; stui+1=bm; for(i=0;in;i+) /* 交换后从新排序*/ printf(姓名-学号-总分-平均分n); printf(%s %5d %10.1f %8.1fn,stui.name,stui.number,stui.sum,stui.average); printf( 科目-成绩n); for(m=0;m0;j-) for(i=0;ij;i+) if(stui.sumstui+1.sum) bm=stui; stui=stui+1; stui+1=
10、bm; for(i=0;in;i+) printf(姓名-学号-总分-平均分n); /*显示到屏幕*/ printf(%s %5d %10.1f %8.1fn,stui.name,stui.number,stui.sum,stui.average); printf( 科目-成绩n); for(m=0;m0;j-) for(i=0;ij;i+) if(stui.averagestui+1.average) bm=stui; stui=stui+1; stui+1=bm; for(i=0;in;i+) printf(姓名-学号-总分-平均分n); printf(%s %5d %10.1f %8.1
11、fn,stui.name,stui.number,stui.sum,stui.average); printf( 科目-成绩n); for(m=0;mstui.w;m+) printf(%40s %d n,stui.chengm.subject,stui.chengm.point); fclose(file); fflush(stdin); /*/ /*精确查找*/ void pjing() int n; int i=0; int m; FILE *file; if(c:student.dat,rb)=NULL) printf(Open error); getch(); exit(0); pr
12、intf(请输入要查询的学生的学号:); scanf(%d,&n);getchar(); fread(&stui,sizeof(stu),1,file); while(feof() if(n=stui.number) /*输出对应的学号的学生成绩*/ printf(姓名-学号-总分-平均分n); printf(%s %5d %10.1f %8.1fn,stui.name,stui.number,stui.sum,stui.average); printf( 科目-成绩n); for(m=0;mstui.w;m+) printf(%40s %d n,stui.chengm.subject,stui.chengm.point); break; i+; fread(&stui,sizeof(stu),1,file); fclose(file); fflush(stdin); /*结束*/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1