C语言课程设计实习报告学号:201505987姓名:廖伯龙班级:数学1502指导老师:何黎霞完成日期:2016.06.161学生成绩管理系统一、摘要二、系统设计、实现与测试数据1.系统设计2.系统实现3.测试数据三、结论四、附录2一、摘要通过课程设计,我对C语言有了更深刻的理解,让我们把学到的理论应用于具体的实践中,锻炼了我们各方面的能力,从而让我们更快提高。通过一些简单函数的叠加构成了一个简易的学生管理系统。本系统具有以下几个功能:计算平均分,创建成绩表和成绩条,查询优等生和不及格学生名单等。二、系统设计、实现与数据测试1、系统设计本系统通过读取两个记事本文件数据,保存在相应的结构体当中,通过函数创建菜单,根据菜单提示,用户可以自行选择系统的功能,可实现计算平均分及加权平均分,创建成绩单和成绩条,查询优等生和不及格学生名单以及每门课各分数段的人数等功能。(1)、功能流程图主要功能创建学生成绩表和成绩条计算平均分及加权平均分查询优等生和不及格学生名单显示每门课各分数段人数显示学生成绩等级32、系统实现与测试数据(1)、原始文件sx150209.txt和sx02KC.txt43、测试数据与功能实现代码测试:5菜单:6优等生名单:7各科平均分:每科各分数段人数:8学生成绩等级:学生成绩表:9三、结论通过本次课程设计,我明白了C语言编程并不是简单的事情,认为理所应当正确的代码却在调试时出现了错误,在编写程序时应理解C语言的规则并按照它的规则来写程序,这样才能写出正确的程序。另外,结构体、函数以及指针在单独学习时并不觉得难,但在写程序中一起用到时遇到了许多困难,通过长时间的分析将问题细细划分与同学讨论,最终完成了代码的编写,同时也体会到了完成编程时的喜悦。四:附录源代码:#defineM20#defineN5#includestdio.h#includestdlib.h#includemath.hstructstudent//结构体:学生{intxuehao;charname[10];intscore[N];intmingci;floatjqave;}st[M];structkecheng//结构体:课程{intnum;charkcname[10];floatxuefen;floatave;intfsdrs[N];}course[N];10voidread1()//函数:读文件1{inti,j;charstr1[100];FILE*fp;if((fp=fopen(c:\\sx150209.txt,r))==NULL){printf(Can'topenthefile!\n);exit(0);}fgets(str1,100,fp);for(i=0;iM;i++){fscanf(fp,%d%s,&st[i].xuehao,st[i].name);for(j=0;jN;j++)fscanf(fp,%d,&st[i].score[j]);}fclose(fp);}voidread2()//函数:读文件2{inti;charstr2[100];FILE*fp;if((fp=fopen(C:\\sx02KC.txt,r))==NULL){printf(Can'topenthefile!\n);exit(0);}fgets(str2,100,fp);for(i=0;iN;i++)fscanf(fp,%d%s%f,&course[i].num,course[i].kcname,&course[i].xuefen);fclose(fp);}voidjqave()//函数:求加权平均分{inti,j;floats=0,sum;for(j=0;jN;j++)s=s+course[j].xuefen;for(i=0;iM;i++)11{sum=0;for(j=0;jN;j++)sum=sum+st[i].score[j]*course[j].xuefen;st[i].jqave=sum/s;}}voidmingci()//函数:求名次{inti,j;for(i=0;iM;i++){st[i].mingci=1;for(j=0;jM;j++)if(st[i].jqavest[j].jqave)st[i].mingci++;}}voidkcave()//函数:求课程平均分{inti,j;floatsum;printf(英语C语言数学物理毛概\n);for(i=0;iN;i++){sum=0.0;for(j=0;jM;j++)sum=sum+st[j].score[i];course[i].ave=sum/M;printf(%-7.2f,course[i].ave);//}printf(\n\n\n);}voidfsdrs()//函数:求每门课各分数段人数{inti,j,k;printf(60分以下60~6970~7980~8990分以上\n);for(j=0;jN;j++){course[j].fsdrs[0]=course[j].fsdrs[1]=course[j].fsdrs[2]=course[j].fs12drs[3]=course[j].fsdrs[4]=0;for(i=0;iM;i++){if(st[i].score[j]60)course[j].fsdrs[0]++;elseif(st[i].score[j]=60&&st[i].score[j]69)course[j].fsdrs[1]++;elseif(st[i].score[j]=70&&st[i].score[j]79)course[j].fsdrs[2]++;elseif(st[i].score[j]=80&&st[i].score[j]89)course[j].fsdrs[3]++;elsecourse[j].fsdrs[4]++;}}printf(英语);for(k=0;kN;k++)printf(%8d,course[0].fsdrs[k]);printf(\n);printf(C语言);for(k=0;kN;k++)printf(%8d,course[1].fsdrs[k]);printf(\n);printf(数学);for(k=0;kN;k++)printf(%8d,course[2].fsdrs[k]);printf(\n);printf(物理);for(k=0;kN;k++)printf(%8d,course[3].fsdrs[k]);printf(\n);printf(毛概);for(k=0;kN;k++)printf(%8d,course[4].fsdrs[k]);printf(\n);}voidwritemc()//函数:新建文件(名次){inti,j;FILE*fp;13if((fp=fopen(C:\\MC150209.txt,w))==NULL){printf(failtobuildanewfile!\n);exit(0);}fprintf(fp,名次学号姓名英语C语言数学物理毛概加权平均分\n);printf(名次学号姓名英语C语言数学物理毛概加权平均分\n);for(i=0;iM;i++){fprintf(fp,%3d%8d%8s,st[i].mingci,st[i].xuehao,st[i].name);printf(%3d%8d%8s,st[i].mingci,st[i].xuehao,st[i].name);for(j=0;jN;j++){fprintf(fp,%4d,st[i].score[j]);printf(%4d,st[i].score[j]);}fprintf(fp,%6.2f\n,st[i].jqave);printf(%6.2f\n,st[i].jqave);}printf(该文件已写入到C:\\MC150209.txt中\n\n);fclose(fp);}voidwritekc()//函数:新建文件(课程){inti,j;FILE*fp;if((fp=fopen(C:\\KC150209.txt,w))==NULL){printf(failtobuildanewfile!\n);exit(0);}fprintf(fp,编号课程名称课程学分课程平均分优秀良好中等及格不及格\n);printf(编号课程名称课程学分课程平均分优秀良好中等及格不及格\n);for(i=0;iN;i++){fprintf(fp,%3d%10s%7.1f%9.1f,course[i].num,course[i].kcname,course[i].xuefen,course[i].ave);printf(%3d%10s%7.1f%9.1f%,course[i].num,course[i].kcname,course[i].14xuefen,course[i].ave);for(j=4;j=0;j--){fprintf(fp,%6d,course[i].fsdrs[j]);printf(%6d,course[i].fsdrs[j]);}fprintf(fp,\n);printf(\n);}printf(该文件已写入到C:\\KC150209.txt中\n\n);fclose(fp);}voidwritecjt()//函数:新建文件(成绩条){inti,j;FILE*fp;if((fp=fopen(C:\\CJT150209.txt,w))==NULL){printf(failtobuildanewfile!\n);exit(0);}for(i=0;iM;i++){fprintf(fp,名次学号姓名英语C语言数学物理毛概加权平均分\n);printf(名次学号姓名英语C语言数学物理毛概加权平均分\n);fprintf(fp,%3d%8d%8s,st[i].mingci,st[i].xuehao,st[i].name);printf(%3d%8d%8s,st[i].mingci,st[i].xuehao,st[i].name);for(j=0;jN;j++){fprintf(fp,%7d,st[i].score[j]);printf(%7d,st[i].score[j]);}fprintf(fp,%8.2f\n\n\n,st[i].jqave);printf(%8.2f\n\n\n,st[i].jqave);}fclose(fp);}voidbjgmd()//函数:显示不及格名单{inti,j,k;15printf(不及格学生学号姓名课程名称课程学分分数\n);for(i=0;iM;i++){for(j=0;jN;j++)if(st[i].score[j]60){printf(%8d%10s%10s%5.1f%4d\n,st[i].xuehao,st[i].name,course[j].kcname,course[j].xuefen,st[i].score[j]);break;}for(k=j+1;kN;k++)if(st[i].score[k]60)printf(%10s%5.1f%4d\n,course[k].kcname,course[k].xuefen,st[i].score[k]);}}voidydsmd()//函数:显示优等生名单{inti,j;printf(名次学号姓名英语C语言数学物理毛概加权平均分\n);for(i=0;iM;i++){if(st[i].jqave=90||st[i].mingci=3){printf(%3d%8d%8s,st[i].mingci,st[i].xuehao,st[i].name);for(j=0;jN;j++)printf(%4d,st[i].score[j]);printf(%6.2f\n,st[i].jqave);}for(j=0;jN;j++)if(st[i].jqave=85&&st[i].jqave9