学生成绩统计系统

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生成绩统计系统

集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

目录

一、问题描述 (1)

二、基本要求 (1)

三、系统分析和设计 (2)

四、结构图 (2)

五、流程图 (2)

六、源程序代码 (6)

七、测试数据 (8)

八、软件说明 (11)

九、小结与体会 (11)

十、参考资料 (11)

C语言课程设计实验报告

一、问题描述

编辑一个学生成绩统计软件

二、基本要求

1)每条记录由学号、姓名、若干门课程的成绩组成;

2)能计算每个学生的总分和平均分并显示;

3)能按平均分统计各分数段的人数,并以分布图显示,如右图所

示。

4)在此基础上,可进行文件操作。

三、系统分析和设计

函数的设计,其最终目的是要实现所需要的功能。本例中,是用main函数调用两个子函数来实现的!

1)文件的建立:

要想实现对学生成绩的统计,首先要建立一个文件用来存放学生信息,要用到FILE文件指针fp1=fopen("file1","w+")

2)程序的设计:

学生的信息放在结构体数组struct student_score s[N]中。

通过for循环,调用子函数getdata,从键盘接收学生信息(num,name,score[0],score[1],score[2],score[3]),并计算总分与平均分,返回学生信息return st到调用处。用fprintf函数向文件中逐一写入学生的信息,通过rewend(fp1)函数使文件指针回到文件头,用fscanf读学生信息,并显示在屏幕上。同时根据所读学生信息,统计各分数段的人数s1++,s2++,s3++,s4++,s5++,然后调用一个子函数putsgraph用来输出图表!

四、结构图

主函数

五、流程图

六、源程序代码

#define N 8

#include

#include

struct student_score

{

long num;

char name[20];

float score[4];

float total;

float aver;

}s[N];

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 %s\n",fp1);

exit(0);}

for(i=0;i

s[i]=getdata(s[i],i);

for(i=0;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].tot al,s[i].aver);

rewind(fp1);

{

long num;

char name[20];

float e,f,g,h,total,aver;

for(i=0;i

{

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++;

else if(aver<70) s2++;

else if(aver<80) s3++;

else if(aver<90) 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%d\'s num:\n",x+1);

scanf("%ld",&st.num); getchar();

printf("\nEnter name:\n");

gets();

st.total=0;

printf("\nEnter 4 scores:\n");

for(y=0;y<4;y++)

{

scanf("%f",&st.score[y]);

getchar();

st.total+=st.score[y];

}

st.aver=st.total/4;

return st;

}

int putsgraph(int sa, int sb,int sc,int sd,int se)

相关文档
最新文档