学生成绩统计系统

上传人:简****9 文档编号:110301137 上传时间:2019-10-29 格式:DOC 页数:13 大小:213KB
返回 下载 相关 举报
学生成绩统计系统_第1页
第1页 / 共13页
学生成绩统计系统_第2页
第2页 / 共13页
学生成绩统计系统_第3页
第3页 / 共13页
学生成绩统计系统_第4页
第4页 / 共13页
学生成绩统计系统_第5页
第5页 / 共13页
点击查看更多>>
资源描述

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

1、目录一、问题描述1二、基本要求1三、系统分析和设计2四、结构图2五、流程图2六、源程序代码6七、测试数据8八、软件说明11九、小结与体会 11十、参考资料 11C语言课程设计实验报告一 、问题描述编辑一个学生成绩统计软件二 、基本要求1) 每条记录由学号、姓名、若干门课程的成绩组成;2) 能计算每个学生的总分和平均分并显示;3) 能按平均分统计各分数段的人数,并以分布图显示,如右图所示。4) 在此基础上,可进行文件操作。IIII III II III IIIII60708090100三 、系统分析和设计 函数的设计,其最终目的是要实现所需要的功能。本例中,是用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(fp1)函数使文件指针回到文件头,用fscanf读学生信息,并显示在屏幕上。同时根据所读学生信息,统计各分

3、数段的人数s1+,s2+,s3+,s4+,s5+,然后调用一个子函数putsgraph用来输出图表! 四、结构图主函数struct student_score getdata(struct student_score st ,int x)int putsgraph(int sa,int sb, int sc,int sd,int se)调用返回返回调用五、流程图#define N 5#include#includestruct student_score sNfp1=fopen(file1,w+)开始真i=0iNsi=getdata(si,i);从键盘输入学生信息并计算总分与平均分假返回学生信

4、息,i+;i=0iNfprintf向文件输入学生信息:学号,各门成绩,总分,平均分真i+;假Rewind(fp1)i=0iNfscanf读取学生信息假fclose(fp1);printf学生num,name,total,aver.并用s1+,s2+,s3+,s4+,s5+.统计各分数段人数i+调用putsgraph(s1,s2,s3,s4,s5);char graph1680;i=0i16真j=0j=0j79graphi79=0;i+假真graphij= ;j+假j79graph11j=-;graph0j=-;graph15j=-;真j+;假给graph12 赋值:60 70 80 90 (1

5、0-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-) graphi20=I;将柱状图信息赋给graphii=0i16puts(graphi);假结束i+;六、源程序代码#define N 8#include#includestruct student_scorelong num;char name20;float score4;float total;float aver

6、;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);for(i=0;iN;i+)si=getdata(si,i);for(i=0;iN;i+)fprintf(fp1,%-9ld%-

7、10s%10.1f%10.1f%10.1f%10.1f%10.1f%10.1fn,si.num,si.name,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,&h,&total,&aver);printf(%-9ld%-20s%10.1f%10.1fn,num,name,total,av

8、er);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); scanf(%ld,&st.num); getchar(); printf(nEnter name:n); get

9、s(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+) graphij= ; graphi79=0; for(j=0;j79;j+) gr

10、aph11j=-; 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-se);i-) graphi22=I; for(i

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

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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