成绩管理系统课程设计报告.docx
- 文档编号:23043676
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:25
- 大小:19.60KB
成绩管理系统课程设计报告.docx
《成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《成绩管理系统课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
成绩管理系统课程设计报告
◆组员:
星河54110316
刘风54110315
张宇54110314
◆分工:
星河:
程序设计整体思路,模块划分
联系各种函数,形成一个完整的程序
按名称排序的函数
分段函数
界面
刘风:
相关成绩单的形成
文件的打开与关闭函数
作业的调试
寻找错误点
程序的特色设计
张宇:
按成绩排序(冒泡法)
界面优化;
以链表形式组织优秀成绩单和不及格成绩单
程序优化
关键代码的注释
◆各成员所完成的工作占全组工作的百分比:
星河:
36%
刘风:
32%
张宇:
32%
◆程序划分:
bad(),bad1(),divide(),good(),good1(),load(),main(),open(),save(),sort1(),sort2(),sort3()各个函数;
◆各个函数功能:
主函数负责程序开始界面,用户可选择读入或成绩单;
Bad函数负责不及格学生的查找,还有其输出,存入磁盘;
Bad1函数负责单科不及格学生的查找,还有其输出,存入磁盘;
good函数负责优秀学生的查找,还有其输出,存入磁盘;
good1函数负责优秀学生的查找,还有其输出,存入磁盘;
divide函数负责学生成绩的分段,还有其输出,存入磁盘;
sort1函数负责按学号排序即原始成绩单的排序,还有其输出;
sort2函数负责按姓名排序,选用选择法排序,还有其输出,存入磁盘;
sort3函数负责按成绩排序,选用冒泡法排序,还有其输出,存入磁盘;
open函数负责打开文件,读入成绩单,进入系统,同时完成读入若干班级成绩单的功能;
load函数负责各个功能的选择,贯穿整个程序;
save函数负责存储各类成绩单到磁盘;
◆各函数调用关系:
load函数贯穿程序前后,是各个调用函数的桥梁,其调用sort1(),sort2(),sort3(),bad(),bad1(),divide(),good(),good1(),open(),其又被各个函数调用;
save函数被sort1(),sort2(),sort3()调用;主函数还调用open函数,还有其自身的调用;
◆设计思想:
总体思路:
综合运用各个函数的调用关系,程序简单明了,给同伴分配任务,获取各个函数的编写思路,最终将程序串联起来,成为完整程序;最终调试通过,于第3次上机完成原始程序,后经多次改良,诸如文件名自定义、链表的组织、界面的优化等一系列工作,形成最终的程序。
各模块设计思想:
综合运用各个函数的调用关系,避免繁琐拖沓的设计;
界面设计:
为求界面美观,运用了输出函数,形成简洁的界面;同时舍弃了画面图形的设计,以求简明;
特色设计:
程序相对简单,不是繁琐拖沓的作风,各函数分配合理;
用户自定义文件名等一系列功能,更人性化;
其中优秀和不及格成绩单以链表组织,并以链表输出;
完成了读入若干班级成绩单的功能,并增添单科成绩的查询;
界面简明,用户选择颇多;
创建文件嵌入其中,可自行处理自己编写的文件;
运用不同存取文件方式,灵活多变,如二进制文件......;
以结构体形式保存数据,更加简练;
#include
#include
#include
#include
voidload();
#defineSIZE30/*宏定义*/
#definelevel90
#definebadlevel60
structstudent_type/*创建结构体*/
{
charname[20];
intnum;
charsex;
intmath;
intenglish;
intchinese;
intaverage;
}stud[SIZE];
structstudent_typetemp;
voidsave()/*save函数单独独立,多次调用,简洁明了*/
{
inti;
charfilename[20];
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("请输入要存储的排序后成绩单的文件名:
");
scanf("%s",filename);/*用户自定义文件名*/
FILE*fp;
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
for(i=0;i fprintf(fp,"%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3dn",stud[i].name,stud[i].num,stud[i].sex,stud[i].math,stud[i].english,stud[i].chinese,stud[i].average); fclose(fp);/*数据存入磁盘*/ printf("数据已储存入%s\n",filename); } voidsort1() { inti; for(i=0;i printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",stud[i].name,stud[i].num,stud[i].sex,stud[i].math,stud[i].english,stud[i].chinese,stud[i].average); save(); load(); } voidsort2() { charb[20]; intp,q,k; for(p=0;p { k=p; for(q=p+1;q { if(strcmp(stud[k].name,stud[q].name)>0)/*选择法按姓名排序*/ { temp=stud[k]; stud[k]=stud[q]; stud[q]=temp; } } } printf("按姓名排序如下: \n"); for(k=0;k printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3dn",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud[k].chinese,stud[k].average); save(); load(); } voidsort3() { inti,k,a,r; boolflag; flag=true; printf("请你选择: 1升序2降序\n");/*用户可选择的成绩单组织方式*/ scanf("%d",&a); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); switch(a) { case1: while(flag)/*冒泡法排序*/ { flag=false; for(i=0;i if(stud[i].average>stud[i+1].average) { temp=stud[i]; stud[i]=stud[i+1]; stud[i+1]=temp; flag=true;} }; printf("按平均成绩升序如下: \n");break; case2: while(flag)/*冒泡排序*/ { flag=false; for(i=0;i if(stud[i].average { temp=stud[i]; stud[i]=stud[i+1]; stud[i+1]=temp; flag=true; } }; printf("按平均成绩降序如下: \n");break; } for(k=0;k printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud[k].chinese,stud[k].average); save(); load(); } voiddivide() { charfilename[20]; printf("请输入要存储的分段后成绩单的文件名: ");/*用户自定义文件名*/ scanf("%s",filename); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); FILE*fp; if((fp=fopen(filename,"w"))==NULL) { printf("cannotopenfile\n"); exit(0); } inti,k; for(i=100;i>0;i-=10) { printf("%d~%d的学生如下: \n",i-10,i);/*输出循环设计,简洁*/ fprintf(fp,"%d~%d的学生如下: \n",i-10,i); for(k=0;k { if(stud[k].average<=i&&stud[k].average>i-10) { printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); fprintf(fp,"%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); } } } fclose(fp); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("数据已储存入%s\n",filename); load(); } voidgood() { structlink/*链表形式组织优秀成绩单*/ { charname[20]; intnum; charsex; intmath; intenglish; intchinese; intaverage; structlink*next; }*top=NULL; structlink*p,*y; intk; charfilename[20]; printf("请输入要存储的优秀成绩单的文件名: ");/*用户自定义文件名*/ scanf("%s",filename); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); FILE*fp; if((fp=fopen(filename,"w"))==NULL) { printf("cannotopenfile\n"); exit(0); } printf("优秀学生: \n"); fprintf(fp,"优秀学生: \n"); for(k=0;k { if(stud[k].average>=level) { p=(structlink*)malloc(sizeof(structlink));strcpy(p->name,stud[k].name);p->num=stud[k].num;p->sex=stud[k].sex;p->math=stud[k].math;p->english=stud[k].english;p->chinese=stud[k].chinese;p->average=stud[k].average; p->next=top;top=p; } } y=top; while(y! =NULL) { printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",y->name,y->num,y->sex,y->math,y->english,y->chinese,y->average); fprintf(fp,"%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",y->name,y->num,y->sex,y->math,y->english,y->chinese,y->average); y=y->next; }/*以链表形式组织输出*/ fclose(fp); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("数据已储存入%s\n",filename); load(); } voidbad() { structlink/*链表形式组织优秀成绩单*/ { charname[20]; intnum; charsex; intmath; intenglish; intchinese; intaverage; structlink*next; }*top=NULL; structlink*p,*y; intk; charfilename[20]; printf("请输入要存储的不及格成绩单的文件名: ");/*用户自定义文件名*/ scanf("%s",filename);printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); FILE*fp; if((fp=fopen(filename,"w"))==NULL) { printf("cannotopenfile\n"); exit(0); } printf("不及格学生: \n"); fprintf(fp,"不及格学生: \n"); for(k=0;k { if(stud[k].average { p=(structlink*)malloc(sizeof(structlink));strcpy(p->name,stud[k].name);p->num=stud[k].num;p->sex=stud[k].sex;p->math=stud[k].math;p->english=stud[k].english;p->chinese=stud[k].chinese;p->average=stud[k].average;p->next=top;top=p; } } y=top; while(y! =NULL) { printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",y->name,y->num,y->sex,y->math,y->english,y->chinese,y->average); fprintf(fp,"%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平均分: %-3d\n",y->name,y->num,y->sex,y->math,y->english,y->chinese,y->average); y=y->next; }/*以链表形式组织输出*/ fclose(fp); printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("数据已储存入%s\n",filename); load(); } voidgood1()/*用户可以查询单科优秀的成绩单*/ { inta,b,k; charfilename[20]; printf("请输入要存储的单科优秀成绩单的文件名: ");/*用户自定义文件名*/ scanf("%s",filename); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); FILE*fp; if((fp=fopen(filename,"w"))==NULL) { printf("cannotopenfile\n"); exit(0); } printf("请你选择所要查询的科目: 1数学2英语3语文\n"); scanf("%d",&a); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); switch(a) { case1: printf("数学优秀学生: \n"); fprintf(fp,"数学优秀学生: \n"); for(k=0;k { if(stud[k].math>=level) { printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平 均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); fprintf(fp,"%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %- 3d平均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); } } break; case2: printf("英语优秀学生: \n"); fprintf(fp,"英语优秀学生: \n"); for(k=0;k { if(stud[k].english>=level) { printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平 均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); fprintf(fp,"%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %- 3d平均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); } } break; case3: printf("语文优秀学生: \n"); fprintf(fp,"语文优秀学生: \n"); for(k=0;k { if(stud[k].chinese>=level) { printf("%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %-3d平 均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); fprintf(fp,"%-12s学号: %d性别: %c数学: %-3d英语: %-3d语文: %- 3d平均分: %-3d\n",stud[k].name,stud[k].num,stud[k].sex,stud[k].math,stud[k].english,stud [k].chinese,stud[k].average); } } break; } printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); fclose(fp); printf("数据已储存入%s\n",filename); load(); } voidbad1()/*用户可以查询单科不及格的成绩单*/ { inta,b,k; charfilename[20]; printf("请输入要存储的单科不及格成绩单的文件名: ");/*用户自定义文件名*/ scanf("%s",filename); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); FIL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成绩管理系统 课程设计 报告