学生成绩分布统计

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

沈阳航空工业学院

课程设计任务书

院系:机械电子工程学院专业:机械设计极其自动化班级:6406103

学号:200604061099

题目:学生成绩分布统计

一、课程设计时间

2008年3月10日至2008年3月14日,共计1周,20学时。

二、课程设计内容

用C语言编写软件完成以下任务:

C语言期中考试成绩保存在文件file29.txt中,数据格式为:学号,姓名,成绩。请编程序完成菜单项所要求的功能。

三、课程设计要求

程序质量:

贯彻结构化的程序设计思想。. 用户界面友好,功能明确,操作方便。

用户界面中的菜单至少应包括“读取数据”、“按学号或姓名查询成绩”、“修改成绩”、“统计各分数段人数”、“退出”5项;分数段指不及格、及格、中等、良好、优秀5种成绩。

代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:

课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:

●封面

●课程设计任务书

●目录

●需求分析(分析题目的要求)

●程序流程图(总体流程图和主要功能模块流程图)

●核心技术的实现说明及相应程序段

●个人总结

●参考资料

●源程序及适当的注释

四、指导教师和学生签字

指导教师:________ 学生签名:________

目录

一、需求分析 (1)

二、程序流程图 (2)

三、核心技术的实现说明及相应程序段 (3)

四、个人总结 (7)

五、参考文献 (7)

六、源程序 (7)

一、需求分析

经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:读取数据(reads);按学号查找成绩(find1);按姓名查找成绩(find2);修改成绩(change);统计各分数段人数(count).

1、读取数据主要实现程序最初运行时学生数据的读取以方便后续功能的实现;

2、按学号查找成绩实现的功能是按照学号对学生的成绩和数据进行查询,要求输入正确学号实现该功能;

3、按姓名查找成绩按照题目要求按照姓名对同学的成绩进行查询,要求输入正确姓名实现该功能;

4、成绩修改通过学号的输入确定要修改的学生,输入修改后的成绩实现修改并改变学生成绩的等级;

5、统计个分数段人数能够对优、良、中。。。等分数段的人数进行正确统计,若有改动,显示修改后的;

除上面介绍的功能之外,程序还具有退出功能,可以

在程序的一次运行当中循环执行所有的功能,并根据需终止程序的执行。

每一个学生记录都包含学号、姓名、成绩,在程序当中,将学生记录类型定义为结构体类型,然后通过自定义reads()函数实现对file29.Txt中的数据进行读取。读取的信息在屏幕上打印,方便实行以后的功能。通过自定义函数find1()实现输入学号显示改学号对应同学的信息。自

定义函数find2

过自定义函数change(),通过输入的学号找到要修改学号的学生成绩,再输入修改后的成绩实现修改并打印出该学生该后的所有信息。对各分数段的成绩的统计是通过自定义的count()函数中的switch函数实现的。

退出,是在主函数中通过break跳出循环实现退出程

序。

二、程序流程图

图1 程序总体结构图

三、核心技术的实现说明及相应程序段

本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。

1、读取数据的函数reads():

关于读取数据,在此之前,先要定义相应的结构体,通过结构体调用文本中的数据,便于以后管理和使用。要正确设定文本的地址,为d:程序段如下:

#include

#include

#define N 25

struct student

{char num[25];

char name[25];

int score;

}stu[25];void reads()

{int i=0;

FILE *fp;

fp=fopen("d:\\file29.txt","r");

for(i=0;i<25;i++)

{fscanf(fp,"%s\t%s\t%d\n",stu[i].num,stu[i].name,&stu[i].score);

printf("%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score);

}fclose(fp);

}2、按照学号查询成绩:find1()

按学号查询,关键之处在于循环和条件嵌套,达到搜索的目的,会用到strcmp()函数来判断学号是否是与输入的相同。函数段如下:

void find1()

{

int i;

char a[25];

printf("请输入待查询的学生学号,按回车键确认:\n:");

scanf("%s",&a);

for(i=0;i<25;i++)

{if(strcmp(stu[i].num,a)==0)

printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].score);

}

}3、按姓名查询成绩:

与2基本相同.

void find2()

{

int i;

char b[10];

printf("请输入待查询的学生姓名,按回车键确认:\n");

scanf("%s",&b);

for(i=0;i<25;i++)

{

if(strcmp(stu[i].name,b)==0)

printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].score);

}

}

4、修改成绩change():

这个程序段主要应用还是for()循环和if()条件的嵌套来确定要修改的人的及其所对应的成绩。通过赋值,替换学生成绩。函数段如下:

void change()

{

int i,j;

char z[25];

printf("\n请输入要更改信息的学生学号,按回车键确认:");

scanf("%s",&z);

相关文档
最新文档