1、C语言程序设计C语言程序设计专 业: _电气工程与自动化 学 号: _ 姓 名: _ 课题名称: 学生成绩管理体系 重庆邮电大学 2012年6月4日C语言课程设计1、设计题目学生成绩管理设计2、 课程设计目的 了解软件工程中的一些系统分析、模板分析、代码设计的概念,利用C+实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等功能。3、 系统功能1录入每个学生的学号和各科考试成绩;2计算每门课程的总分和平均分;3计算每个学生的总分和平均分;4按每个学生的总分由高到低排
2、出名次表;5按每个学生的总分由低到高排出名次表;6按学号由小到大排出成绩表;7按学号查询学生排名及各科考试成绩;0. 退出系统。4、程序设计及个模板功能简述1、主体结构 #include-在程序中用到系统提供的标准函数库中的输入输出函数 #include-包含了的C语言标准库函数的定义 #include -process.h中提取需要的函数或其它库文件 #include -Windows程序的开头 2、主界面显示通过主函数显示程序的主界面,通过输入的数字不同,函数会进入不同功能的函数继续运行。5、源代码#include#include#include #include void main()
3、int x; void g1();void g2();void g3();void g4();void g5();void g6();void g7();void g0(); void menu(); while(1) system(cls); menu(); scanf(%d,&x); Sleep(300); system(cls); switch(x) case 1:g1();break;case 2:g2();break; case 3:g3();break;case 4:g4();break;case 5:g5();break;case 6:g6();break;case 7:g7()
4、;break;case 0:printf(nn 制作者:* nn 感谢使用!nnn);exit(0);printf(制作者:* n感谢使用!);break; default:printf(输入错误); printf(_n); system( PAUSE ); void menu() printf(*【成绩管理菜单】*n); printf(-n); printf( 1:成绩录入 n); printf( 2: 课程的总分和平均分 n); printf( 3学生的总分和平均 n ); printf( 4:按每个学生的总分由高到低排出名次表 n); printf( 5:按每个学生的总分由 n); pr
5、intf( 6:按学号由小到大排出成绩表n低到高排出名次表n); printf( 7:按学号查询学生排名及各 ); printf(n-n); printf( 0:退出系统); printf(n-n); printf(请输入选择:n); void g1( ) int n,i,x,y,z,stu30,mt30,en30,ph30; system(cls); FILE *fp; printf(请输入录入同学人数:); scanf(%d,&n); if(n=0)exit(1); for(i=0,x=0,y=0,z=0;i100|mtx100|eny100|phz0) printf(输入错误,请重新输入
6、); scanf(%d,&phz); /保存TXT fp=fopen(out.txt,wb); if(fp=NULL) printf(打开文件出错n); fprintf(fp,%d,n); for(i=0,x=0,y=0,z=0;in;i+,x+,y+,z+) fprintf(fp,%d %d %d %d ,stui,mtx,eny,phz); fclose(fp); printf(写入完毕!n);void g2() FILE* fp; int stu304; int i,j,n; /*以读写方式打开要读取的文件*/ fp = fopen(out.txt, rw); if (!fp) perr
7、or(cannot open file); /*从文件中读取数据到二维数组*/ fscanf(fp,%d,&n); for (i = 0; i n; i+) for (j = 0; j 4; j+) fscanf(fp, %d, &stuij); /输出列表 printf( 学号 数学 英语 物理n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); printf(n); /计算每门课程的总分和平均分 int EN=0,MT=0,PH=0; float ave_en,ave_mt,ave_ph; for(i=0;in
8、;i+) MT=stui1+MT; EN=EN+stui2; PH=PH+stui3; ave_mt=float(MT/n); ave_en=float(EN/n); ave_ph=float(PH/n); printf(数学总分%d英语总分%d物理总分%dn,MT,EN,PH); printf(数学平均分%.2f英语平均分%.2f物理平均分%.2fn,ave_mt,ave_en,ave_ph); getchar(); fclose(fp);void g3() FILE* fp; int stu304; int i,j,n; /*以读写方式打开要读取的文件*/ fp = fopen(out.t
9、xt, rw); if (!fp) perror(cannot open file); /*从文件中读取数据到二维数组*/ fscanf(fp,%d,&n); for (i = 0; i n; i+) for (j = 0; j 4; j+) fscanf(fp, %d, &stuij); /输出列表 printf( 学号 数学 英语 物理n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); printf(n); /计算每人的总分和平均分 int sum30=0; float ave30; for(i=0;in;i
10、+) for(j=1;j4;j+) sumi=sumi+stuij; avei=float(sumi/3); printf(学号为%d的同学总分为%d平均分为%.2fn,stui0,sumi,avei); getchar(); fclose(fp);void g4() FILE* fp; int stu304; int i, j,n; /*以读写方式打开要读取的文件*/ fp = fopen(out.txt, rw); if (!fp) perror(cannot open file); /*从文件中读取数据到二维数组*/ fscanf(fp,%d,&n); for (i = 0; i n;
11、i+) for (j = 0; j 4; j+) fscanf(fp, %d , &stuij); /输出列表 printf( 学号 数学 英语 物理n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); printf(n); /计算每人的总分和平均分 int sum30=0; float ave30; for(i=0;in;i+) for(j=1;j4;j+) sumi=sumi+stuij; avei=float(sumi/3); /按每个学生的总分由高到低排出名次表 int max=0,t=0,k,temp4;
12、 for(k=0;kn-1;k+) for(i=0;in-1-k;i+) if(sumisumi+1) t=sumi; sumi=sumi+1; sumi+1=t; for(j=0;j4;j+) tempj=stui+1j; stui+1j=stuij; stuij=tempj; printf(按每个学生的总分由高到低排出名次表:n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); printf( 总分%d , sumi); putchar(n); getchar(); fclose(fp);void g5() F
13、ILE* fp; int stu304; int i, j,n; /*以读写方式打开要读取的文件*/ fp = fopen(out.txt, rw); if (!fp) perror(cannot open file); /*从文件中读取数据到二维数组*/ fscanf(fp,%d,&n); for (i = 0; i n; i+) for (j = 0; j 4; j+) fscanf(fp, %d , &stuij); /输出列表 printf( 学号 数学 英语 物理n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , st
14、uij); printf(n); /计算每人的总分和平均分 int sum30=0; float ave30; for(i=0;in;i+) for(j=1;j4;j+) sumi=sumi+stuij; avei=float(sumi/3); /按每个学生的总分由低到高排出名次表 int max=0,t=0,k,temp4; for(k=0;kn-1;k+) for(i=0;in-1-k;i+) if(sumisumi+1) t=sumi; sumi=sumi+1; sumi+1=t; for(j=0;j4;j+) tempj=stui+1j; stui+1j=stuij; stuij=te
15、mpj; printf(按每个学生的总分由低到高排出名次表:n); for (i = n-1; i !=-1; i-) for (j =0; j4; j+) printf(%3d , stuij); printf(%d , sumi); putchar(n); getchar(); fclose(fp);void g6() FILE* fp;int stu304;int i, j,n;/*以读写方式打开要读取的文件*/fp = fopen(out.txt, rw);if (!fp) perror(cannot open file);/*从文件中读取数据到二维数组*/fscanf(fp,%d,&
16、n); for (i = 0; i n; i+)for (j = 0; j 4; j+)fscanf(fp, %d , &stuij);/输出列表printf( 学号 数学 英语 物理n);for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); printf(n);/按学号由小到大排出成绩表int min=0,t=0,k,s30=0; for(k=0;kn;k+) for(i=0;istui+10) for(j=0;j4;j+) sj=stuij; stuij=stuminj; stuminj=sj; printf(按学号由
17、小到大排出成绩表:n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); putchar(n);getchar();fclose(fp);void g7() FILE* fp; int stu304; int i, j,n; /*以读写方式打开要读取的文件*/ fp = fopen(out.txt, rw); if (!fp) perror(cannot open file); /*从文件中读取数据到二维数组*/ fscanf(fp,%d,&n); for (i = 0; i n; i+) for (j = 0; j
18、 4; j+) fscanf(fp, %d , &stuij); /输出列表 printf( 学号 数学 英语 物理n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); printf(n); /计算每人的总分和平均分 int sum30=0; float ave30; for(i=0;in;i+) for(j=1;j4;j+) sumi=sumi+stuij; avei=float(sumi/3); /按每个学生的总分由高到低排出名次表 int max=0,t=0,k,temp4; for(k=0;kn-1;k+)
19、 for(i=0;in-1-k;i+) if(sumisumi+1) t=sumi; sumi=sumi+1; sumi+1=t; for(j=0;j4;j+) tempj=stui+1j; stui+1j=stuij; stuij=tempj; printf(按每个学生的总分由高到低排出名次表:n); for (i = 0; i n; i+) for (j = 0; j 4; j+) printf(%6d , stuij); printf( 总分%3d 第%2d名 , sumi,i+1); putchar(n); /按学号查询学生排名及各科考试成绩 int m; printf(请输入学号:); scanf(%d,&m); for(i=0,j=0;in;i+) if(stuij=m) printf(n你所查询的学生%d排名第%d,数学,英语,物理成绩分别为:,m,i+1); for (j = 1; j 4; j+) printf(%3d , stuij); puts(n); getchar(); fclose(fp);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1