学生成绩统计系统

上传人:ni****g 文档编号:505723205 上传时间:2022-12-31 格式:DOCX 页数:9 大小:292.85KB
返回 下载 相关 举报
学生成绩统计系统_第1页
第1页 / 共9页
学生成绩统计系统_第2页
第2页 / 共9页
学生成绩统计系统_第3页
第3页 / 共9页
学生成绩统计系统_第4页
第4页 / 共9页
学生成绩统计系统_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《学生成绩统计系统》由会员分享,可在线阅读,更多相关《学生成绩统计系统(9页珍藏版)》请在金锄头文库上搜索。

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

2、的!1)文件的建立:要想实现对学生成绩的统计, 首先要建立一个文件用来存放学生信息,要用到 FILE 文件指针 fp1=fopen(file1,w+)2)程序的设计:学生的信息放在结构体数组struct student_score sN 中。通过 for 循环, 调用子函数getdata, 从键盘接收学生信息 ( num,name, score0,score1,score2,score3) ,并计算总分与平均分,返回学生信息 return st 到调用处。 用 fprintf 函数向文件中逐一写入学生的信息,通过rewend(fpl)函数使文件指针回到文件头,用fscanf读学生信息,并显示在

3、屏幕上。 同时根据所读学生信息,统计各分数段的人数s1+,s2+,s3+,s4+,s5+*然后调用一个子函数 putsgraph用来 输出图表!四、结构图主函数五、流程图#define N 5#includer#includ暨stdlib.h struct student_score sNfp1=fopen(file1,w+)调用 putsgraph(s1,s2,s3,s4,s5);printf 学生 num,name,total,aver.并用 s1+,s2+,s3+,s4+,s5+.统计各分数段人数六、源程序代码#define N 8#include#includestruct stude

4、nt_scorelong num;char name20;float score4;float total;float aver;sN;void main()FILE *fp1;struct student_score getdata(struct student_score st,int x);int putsgraph(int sa, int sb,int sc,int sd,int se);int i,s1=0,s2=0,s3=0,s4=0,s5=0;if(fp1=fopen(file1,w+)=NULL)printf(cannot open file %sn,fp1);exit(0);

5、for(i=0;iN;i+)si=getdata(si,i);for(i=0;iN;i+)fprintf(fp1,%-9ld%-10s%10.1f%10.1f%10.1f%10.1f%10.1f%10.1fn,si.num,si.n ame,si.score0,si.score1,si.score2,si.score3,si.total,si.aver);rewind(fp1);long num;char name20;float e,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,

6、&h,&total,&aver);printf(%-9ld%-20s%10.1f%10.1fn,num,name,total,aver);if(aver60)s1+;else if(aver70)s2+;else if(aver80)s3+;else if(aver90)s4+;else if(aver=100)s5+;fclose(fp1);putsgraph(s1,s2,s3,s4,s5);struct student_score getdata(struct student_score st,int x) int y;printf(nEnter student%ds num:n,x+1)

7、;scanf(%ld,&st.num); getchar();printf(nEnter name:n);gets(st.name);st.total=0;printf(nEnter 4 scores:n);for(y=0;y4;y+)scanf(%f,&st.scorey);getchar();st.total+=st.scorey;st.aver=st.total/4;return st;int putsgraph(int sa, int sb,int sc,int sd,int se)int i,j;char graph1680;for(i=0;i16;i+)for(j=0;j79;j+

8、) graphij= ;graphi79=0;for(j=0;j79;j+) graph11j=-;graph0j=-;graph15j=-;for(j=3;j=15;j+=4)graph12j=;graph12j+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-s

9、e);i-)graphi22=I;for(i=0;i16;i+)puts(graphi);七、测试数据七 软件说明本程序采用宏定义方式定义学生人数, 增加程序的通用性, 文件的路径为fp1=fopen(file1,w+),当运行结束后,可在 dos状态下,本程序基本实现了要求的内容: 能计算每个学生的总分和平均成绩,能按平均分统计各分数段的学生人数, 并以分布图显示, 在此基础上可以进行文件操作。八 小结与体会此次课程设计,初步锻炼了我运用所学基础知识解决实际问题的能力,掌握软件开发的基本过程和基本方法 ,培养在软件开发中相互合作的团队意识。通过此次课程设计,我对C 语言有了更深入的了解,同时也促进了我对书本知识的深入学习,在设计的过程中遇到了这样那样的问题。这些问题促进了我对于知识点的深入挖掘。也让我懂得了程序设计要:细心,耐心,恒心并用。否则,一个小小的字符,也可能让程序功亏一篑。其实,不仅是做程序, 做任何事情都要有强烈的责任心, 和良好的态度。九 参考资料谭浩强,C程序设计教程,清华大学出版社,2007年

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号