学生成绩统计系统Word文件下载.docx
- 文档编号:18058538
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:7
- 大小:107.76KB
学生成绩统计系统Word文件下载.docx
《学生成绩统计系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生成绩统计系统Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
3)能按平均分统计各分数段的人数,并以分布图显示,如右图所示。
4)在此基础上,可进行文件操作。
I
II
<
60
70
80
90
≤100
三、系统分析和设计
函数的设计,其最终目的是要实现所需要的功能。
本例中,是用main函数调用两个子函数来实现的!
1)文件的建立:
要想实现对学生成绩的统计,首先要建立一个文件用来存放学生信息,要用到FILE文件指针fp1=fopen("
file1"
"
w+"
)
2)程序的设计:
学生的信息放在结构体数组structstudent_scores[N]中。
通过for循环,调用子函数getdata,从键盘接收学生信息(num,name,score[0],score[1],score[2],score[3]),并计算总分与平均分,返回学生信息returnst到调用处。
用fprintf函数向文件中逐一写入学生的信息,通过rewend(fp1)函数使文件指针回到文件头,用fscanf读学生信息,并显示在屏幕上。
同时根据所读学生信息,统计各分数段的人数s1++,s2++,s3++,s4++,s5++,然后调用一个子函数putsgraph用来输出图表!
四、结构图
主函数
五、流程图
六、源程序代码
#defineN8
#include<
stdio.h>
stdlib.h>
structstudent_score
{
longnum;
charname[20];
floatscore[4];
floattotal;
floataver;
}s[N];
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("
))==NULL)
{printf("
cannotopenfile%s\n"
fp1);
exit(0);
}
for(i=0;
i<
N;
i++)
s[i]=getdata(s[i],i);
fprintf(fp1,"
%-9ld%-10s%10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n"
s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].total,s[i].aver);
rewind(fp1);
floate,f,g,h,total,aver;
fscanf(fp1,"
%ld%s%f%f%f%f%f%f\n"
&
num,name,&
e,&
f,&
g,&
h,&
total,&
aver);
printf("
%-9ld%-20s%10.1f%10.1f\n"
num,name,total,aver);
if(aver<
60)s1++;
elseif(aver<
70)s2++;
80)s3++;
90)s4++;
=100)s5++;
fclose(fp1);
putsgraph(s1,s2,s3,s4,s5);
structstudent_scoregetdata(structstudent_scorest,intx)
inty;
printf("
\nEnterstudent%d\'
snum:
\n"
x+1);
scanf("
%ld"
st.num);
getchar();
\nEntername:
);
gets(st.name);
st.total=0;
\nEnter4scores:
for(y=0;
y<
4;
y++)
{
%f"
st.score[y]);
st.total+=st.score[y];
}
st.aver=st.total/4;
returnst;
intputsgraph(intsa,intsb,intsc,intsd,intse)
inti,j;
chargraph[16][80];
for(i=0;
16;
for(j=0;
j<
79;
j++)graph[i][j]='
'
;
graph[i][79]='
\0'
j++)
{graph[11][j]='
-'
graph[0][j]='
graph[15][j]='
for(j=3;
=15;
j+=4)
graph[12][j]='
'
graph[12][j+2]='
0'
graph[12][4]='
6'
graph[12][8]='
7'
graph[12][12]='
8'
graph[12][16]='
9'
graph[12][19]='
graph[12][20]='
='
graph[12][21]='
1'
graph[12][22]='
graph[12][23]='
for(i=10;
i>
(10-sa);
i--)
graph[i][4]='
I'
(10-sb);
graph[i][8]='
(10-sc);
graph[i][12]='
(10-sd);
graph[i][16]='
(10-se);
graph[i][22]='
puts(graph[i]);
七、测试数据
七软件说明
本程序采用宏定义方式定义学生人数,增加程序的通用性,文件的路径为fp1=fopen("
),当运行结束后,可在dos状态下,本程序基本实现了要求的内容:
能计算每个学生的总分和平均成绩,能按平均分统计各分数段的学生人数,并以分布图显示,在此基础上可以进行文件操作。
八小结与体会
此次课程设计,初步锻炼了我运用所学基础知识解决实际问题的能力,掌握软件开发的基本过程和基本方法,培养在软件开发中相互合作的团队意识。
通过此次课程设计,我对C语言有了更深入的了解,同时也促进了我对书本知识的深入学习,在设计的过程中遇到了这样那样的问题。
这些问题促进了我对于知识点的深入挖掘。
也让我懂得了程序设计要:
细心,耐心,恒心并用。
否则,一个小小的字符,也可能让程序功亏一篑。
其实,不仅是做程序,做任何事情都要有强烈的责任心,和良好的态度。
九参考资料
谭浩强,《C程序设计教程》,清华大学出版社,2007年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 统计 系统
