学生成绩统计系统_第1页
学生成绩统计系统_第2页
学生成绩统计系统_第3页
学生成绩统计系统_第4页
学生成绩统计系统_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录问题描述1二、根本要求1三、系统分析和设计2四、结构图2五、流程图2六、源程序代码6七、测试数据8八、软件说明11九、小结与体会11十、参考资料11C语言课程设计实验报告一、问题描述编辑一个学生成绩统计软件二、根本要求1每条记录由学号、姓名、假设干门课程的成绩组成;2能计算每个学生的总分和平均分并显示;3能按平均分统计各分数段的人数,并以分布图显示,如右图所示.4在此根底上,可进行文件操作.IIIIIIIIIIIIIIII60708090100三、系统分析和设计函数的设计,其最终目的是要实现所需要的功能.本例中,是用main函数调用两个子函数来实现的!1)文件的建立:要想实现对学生成绩的统

2、计,首先要建立一个文件用来存放学生信息,要用到FILE文件指针fp1=fopen(file1,w+)2)程序的设计:学生的信息放在结构体数组structstudent_scoresN中.通过for循环,调用子函数getdata,从键盘接收学生信息(num,name,score0,score1,score2,score3D,并计算总分与平均分,返回学生信息returnst到调用处.用fprintf函数向文件中逐一写入学生的信息,通过rewend(fp1)函数使文件指针回到文件头,用fscanf读学生信息,并显示在屏幕上.同时根据所读学生信息,统计各分数段的人数s1+,s2+,s3+,s4+,s5

3、+然后调用一个子函数putsgraph用来输出图表!四、结构图主函数五、流程图开始#defineN5#include1#includ1structstudent_scoresNfp1=fopen(file1,w+)调用putsgraph(s1,s2,s3,s4,s5);printf学生num,name,total,aver.并用s1+,s2+,s3+,s4+,s5+.统计各分数段人数六、源程序代码#defineN8#include#includestructstudent_score(longnum;charname20;floatscore4;floattotal;floataver;sN;

4、voidmain()(FILE*fp1;structstudent_scoregetdata(structstudent_scorest,intx);intputsgraph(intsa,intsb,intsc,intsd,intse);inti,s1=0,s2=0,s3=0,s4=0,s5=0;if(fp1=fopen(file1,w+)尸NULL)printf(cannotopenfile%sn,fp1);exit(0);for(i=0;iN;i+)si=getdata(si,i);for(i=0;iN;i+)fprintf(fp1,%-9ld%-10s%10.1f%10.1f%10.1f

5、%10.1f%10.1f%10.1fn,si.num,,si.score0,si.score1,si.score2,si.score3,si.total,si.aver);rewind(fp1);longnum;charname20;floate,f,g,h,total,aver;for(i=0;iN;i+)fscanf(fp1,%ld%s%f%f%f%f%f%fn,&num,name,&e,&f,&g,&h,&total,&aver);printf(%-9ld%-20s%10.1f%10.1fn,num,name,total,aver);if(aver60)s1+;elseif

6、(aver70)s2+;elseif(aver80)s3+;elseif(aver90)s4+;elseif(aver=100)s5+;fclose(fp1);putsgraph(s1,s2,s3,s4,s5);)structstudent_scoregetdata(structstudent_scorest,intx)(一一inty;printf(nEnterstudent%dsnum:n,x+1);scanf(%ld,&st.num);getchar();printf(nEntername:n);gets();st.total=0;printf(nEnter4scores:n

7、);for(y=0;y4;y+)(scanf(%f,&st.scorey);getchar();st.total+=st.scorey;)st.aver=st.total/4;returnst;)intputsgraph(intsa,intsb,intsc,intsd,intse)(inti,j;chargraph1680;for(i=0;i16;i+)(for(j=0;j79;j+)graphij=;graphi79=0;)for(j=0;j79;j+)graph11j=-;graph0j=-;graph15j=-;)for(j=3;j=15;j+=4)graph12j=;graph12j+

8、2=0;graph124=6;graph128=7;graph1212=8;graph1216=9;graph1219=(10-sa);i-)graphi4=I;for(i=10;i(10-sb);i-)graphi8=I;for(i=10;i(10-sc);i-)graphi12=I;for(i=10;i(10-sd);i-)graphi16=I;for(i=10;i(10-se);i-)graphi22=I;for(i=0;i16;i+)puts(graphi);七、测试数据七软件说明本程序采用宏定义方式定义学生人数,增加程序的通用性,文件的路径为fp1=fopen(file1,w+),当运行结束后,可在dos状态下,本程序根本实现了要求的内容:能计算每个学生的总分和平均成绩,能按平均分统计各分数段的学生人数,并以分布图显示,在此根底上可以进行文件操作.八小结与体会此次课程设计,初步锻炼了我运用所学根底知识解决实际问题的水平,掌握软件开发的根本过程和根本方法,培养在软件开发中相互合作的团队意识.通过此次课程设计,我对C语言有了更深入的了解,同时也促进了我对书本知识的深入学习,在设计的过程中遇到了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论