1、成绩管理系统课程设计报告 组员:星河 54110316 刘风 54110315 张宇 54110314 分工: 星河: 程序设计整体思路,模块划分 联系各种函数,形成一个完整的程序 按名称排序的函数 分段函数 界面 刘风: 相关成绩单的形成 文件的打开与关闭函数 作业的调试 寻找错误点 程序的特色设计 张宇: 按成绩排序(冒泡法) 界面优化; 以链表形式组织优秀成绩单和不及格成绩单 程序优化 关键代码的注释 各成员所完成的工作占全组工作的百分比: 星河:36% 刘风:32% 张宇:32% 程序划分: bad(),bad1(),divide(),good(),good1(),load(),mai
2、n(),open(),save(),sort1(),sort2(),sort3()各个函数; 各个函数功能: 主函数负责程序开始界面,用户可选择读入或成绩单; Bad函数负责不及格学生的查找,还有其输出,存入磁盘;Bad1函数负责单科不及格学生的查找,还有其输出,存入磁盘;good函数负责优秀学生的查找,还有其输出,存入磁盘;good1函数负责优秀学生的查找,还有其输出,存入磁盘;divide函数负责学生成绩的分段,还有其输出,存入磁盘;sort1函数负责按学号排序即原始成绩单的排序,还有其输出;sort2函数负责按姓名排序,选用选择法排序,还有其输出,存入磁盘;sort3函数负责按成绩排序,
3、选用冒泡法排序,还有其输出,存入磁盘;open函数负责打开文件,读入成绩单,进入系统,同时完成读入若干班级成绩单的功能;load函数负责各个功能的选择,贯穿整个程序;save函数负责存储各类成绩单到磁盘; 各函数调用关系:load函数贯穿程序前后,是各个调用函数的桥梁,其调用sort1(),sort2(),sort3(),bad(),bad1(),divide(),good(),good1(),open(),其又被各个函数调用;save函数被sort1(),sort2(),sort3()调用;主函数还调用open函数,还有其自身的调用; 设计思想: 总体思路:综合运用各个函数的调用关系,程序简
4、单明了,给同伴分配任务,获取各 个函数的编写思路,最终将程序串联起来,成为完整程序;最终调试通过,于第3次上机完成原始程序,后经多次改良,诸如文件名自定义、链表的组织、界面的优化等一系列工作,形成最终的程序。 各模块设计思想:综合运用各个函数的调用关系,避免繁琐拖沓的设计; 界面设计:为求界面美观,运用了输出函数,形成简洁的界面;同时舍弃了画面图形的设计,以求简明; 特色设计:程序相对简单,不是繁琐拖沓的作风,各函数分配合理; 用户自定义文件名等一系列功能,更人性化; 其中优秀和不及格成绩单以链表组织,并以链表输出; 完成了读入若干班级成绩单的功能,并增添单科成绩的查询; 界面简明,用户选择颇
5、多; 创建文件嵌入其中,可自行处理自己编写的文件; 运用不同存取文件方式,灵活多变,如二进制文件.; 以结构体形式保存数据,更加简练;#include#include#include#includevoid load();#define SIZE 30 /*宏定义*/#define level 90#define badlevel 60struct student_type /*创建结构体*/ char name20; int num; char sex; int math; int english; int chinese; int average; studSIZE;struct stud
6、ent_type temp;void save() /*save函数单独独立,多次调用,简洁明了*/ int i; char filename20; printf(); printf(请输入要存储的排序后成绩单的文件名:); scanf(%s,filename); /*用户自定义文件名*/ FILE*fp; if(fp=fopen(filename,w)=NULL) printf(cannot open filen); exit(0); for(i=0;iSIZE;i+) fprintf(fp,%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3d
7、n,studi.name,studi.num,studi.sex,studi.math,studi.english,studi.chinese,studi.average); fclose(fp); /*数据存入磁盘*/ printf(数据已储存入%sn,filename); void sort1() int i; for(i=0;iSIZE;i+) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studi.name,studi.num,studi.sex,studi.math,studi.english,studi.ch
8、inese,studi.average); save(); load(); void sort2() char b20; int p,q,k; for(p=0;pSIZE-1;p+) k=p; for(q=p+1;q0) /*选择法按姓名排序*/ temp=studk; studk=studq; studq=temp; printf(按姓名排序如下:n); for(k=0;kSIZE;k+) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,s
9、tudk.english,studk.chinese,studk.average); save(); load();void sort3() int i,k,a,r; bool flag; flag=true; printf(请你选择:1 升序 2 降序n); /*用户可选择的成绩单组织方式*/ scanf(%d,&a); printf(); switch(a) case 1 :while(flag) /*冒泡法排序*/ flag=false; for(i=0;istudi+1.average) temp=studi; studi=studi+1; studi+1=temp; flag=tru
10、e; ; printf(按平均成绩升序如下:n);break; case 2 :while(flag) /*冒泡排序*/ flag=false; for(i=0;iSIZE-1;i+) if(studi.averagestudi+1.average) temp=studi; studi=studi+1; studi+1=temp; flag=true; ; printf(按平均成绩降序如下:n); break; for(k=0;k0;i-=10) printf(%d%d的学生如下:n,i-10,i); /*输出循环设计,简洁*/ fprintf(fp,%d%d的学生如下:n,i-10,i);
11、for(k=0;kSIZE;k+) if(studk.averagei-10) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.english,studk.chinese,studk.average); fprintf(fp,%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.engl
12、ish,studk.chinese,studk.average); fclose(fp); printf(); printf(数据已储存入%sn,filename); load();void good() struct link /*链表形式组织优秀成绩单*/ char name20; int num; char sex; int math; int english; int chinese; int average; struct link *next; *top=NULL; struct link *p,*y; int k; char filename20; printf(请输入要存储的优
13、秀成绩单的文件名:); /*用户自定义文件名*/ scanf(%s,filename); printf(); FILE*fp; if(fp=fopen(filename,w)=NULL) printf(cannot open filen); exit(0); printf(优秀学生:n); fprintf(fp,优秀学生:n); for(k=0;k=level) p=(struct link*)malloc(sizeof(struct link); strcpy(p-name,studk.name);p-num=studk.num;p-sex=studk.sex;p-math=studk.ma
14、th;p-english=studk.english;p-chinese=studk.chinese;p-average=studk.average; p-next=top ; top=p; y=top; while(y!=NULL) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,y-name,y-num,y-sex,y-math,y-english,y-chinese,y-average); fprintf(fp,%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,y-
15、name,y-num,y-sex,y-math,y-english,y-chinese,y-average); y=y-next; /*以链表形式组织输出*/ fclose(fp); printf(); printf(数据已储存入%sn,filename); load();void bad() struct link /*链表形式组织优秀成绩单*/ char name20; int num; char sex; int math; int english; int chinese; int average; struct link *next; *top=NULL; struct link *
16、p,*y; int k; char filename20; printf(请输入要存储的不及格成绩单的文件名:); /*用户自定义文件名*/ scanf(%s,filename); printf(); FILE*fp; if(fp=fopen(filename,w)=NULL) printf(cannot open filen); exit(0); printf(不及格学生:n); fprintf(fp,不及格学生:n); for(k=0;kSIZE;k+) if(studk.averagename,studk.name);p-num=studk.num;p-sex=studk.sex;p-m
17、ath=studk.math;p-english=studk.english;p-chinese=studk.chinese;p-average=studk.average; p-next=top ; top=p; y=top; while(y!=NULL) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,y-name,y-num,y-sex,y-math,y-english,y-chinese,y-average); fprintf(fp,%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d
18、平均分:%-3dn,y-name,y-num,y-sex,y-math,y-english,y-chinese,y-average); y=y-next; /*以链表形式组织输出*/ fclose(fp); printf(); printf(数据已储存入%sn,filename); load();void good1() /*用户可以查询单科优秀的成绩单*/ int a,b,k; char filename20; printf(请输入要存储的单科优秀成绩单的文件名:);/*用户自定义文件名*/ scanf(%s,filename); printf(); FILE*fp; if(fp=fopen
19、(filename,w)=NULL) printf(cannot open filen); exit(0); printf(请你选择所要查询的科目:1 数学 2 英语 3 语文n); scanf(%d,&a); printf(); switch(a) case 1 : printf(数学优秀学生:n); fprintf(fp,数学优秀学生:n); for(k=0;k=level) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.e
20、nglish,studk.chinese,studk.average); fprintf(fp,%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.english,studk.chinese,studk.average); break; case 2 : printf(英语优秀学生:n); fprintf(fp,英语优秀学生:n); for(k=0;k=level) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d
21、语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.english,studk.chinese,studk.average); fprintf(fp,%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.english,studk.chinese,studk.average); break; case 3 : printf(语文优秀学生:n); fprintf(fp,语文
22、优秀学生:n); for(k=0;k=level) printf(%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.english,studk.chinese,studk.average); fprintf(fp,%-12s 学号:%d 性别:%c 数学:%-3d 英语:%-3d 语文:%-3d 平均分:%-3dn,studk.name,studk.num,studk.sex,studk.math,studk.english,studk.chinese,studk.average); break; printf(); fclose(fp);printf(数据已储存入%sn,filename);load();void bad1() /*用户可以查询单科不及格的成绩单*/ int a,b,k; char filename20; printf(请输入要存储的单科不及格成绩单的文件名:);/*用户自定义文件名*/ scanf(%s,filename); printf(); FIL
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2