《》学生成绩分布统计Word格式.docx
- 文档编号:15329265
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:12
- 大小:61.36KB
《》学生成绩分布统计Word格式.docx
《《》学生成绩分布统计Word格式.docx》由会员分享,可在线阅读,更多相关《《》学生成绩分布统计Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
C语言期中考试成绩保存在文件file29.txt中,数据格式为:
学号,姓名,成绩。
请编程序完成菜单项所要求的功能。
三、课程设计要求
1.程序质量:
贯彻结构化的程序设计思想。
.用户界面友好,功能明确,操作方便。
用户界面中的菜单至少应包括“读取数据”、“按学号或姓名查询成绩”、“修改成绩”、“统计各分数段人数”、“退出”5项;
分数段指不及格、及格、中等、良好、优秀5种成绩。
代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩:
六、教师评语:
源程序及适当的注释
________学生签名:
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段4
四、个人总结7
五、参考文献8
六、源程序8
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:
读取数据;
按学号查找成绩;
按姓名查找成绩;
修改成绩;
统计各分数段人数
1、读取数据主要实现程序最初运行时学生数据的读取以方便后续功能的实现;
2、按学号查找成绩实现的功能是按照学号对学生的成绩和数据进行查询,要求输入正确学号实现该功能;
3、按姓名查找成绩按照题目要求按照姓名对同学的成绩进行查询,要求输入正确姓名实现该功能;
4、成绩修改通过学号的输入确定要修改的学生,输入修改后的成绩实现修改并改变学生成绩的等级;
5、统计个分数段人数能够对优、良、中。
。
等分数段的人数进行正确统计,若有改动,显示修改后的;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需终止程序的执行。
每一个学生记录都包含学号、姓名、成绩,在程序当中,将学生记录类型定义为结构体类型,然后通过自定义read()函数实现对file29.Txt中的数据进行读取。
读取的信息在屏幕上打印,方便实行以后的功能。
通过自定义函数serch1()实现输入学号显示改学号对应同学的信息。
自定义函数serch2()实现输入姓名查到该学生的成绩。
通过自定义函数change(),通过输入的学号找到要修改学号的学生成绩,再输入修改后的成绩实现修改并打印出该学生该后的所有信息。
对各分数段的成绩的统计是通过自定义的tj()函数中的switch函数实现的。
退出,是在主函数中通过break跳出循环实现退出程序。
二、程序流程图
否是
否是
否是
三、核心技术的实现说明及相应程序段
本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,添加数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。
1、读取数据的函数read():
关于读取数据,在此之前,先要定义相应的结构体,通过结构体调用文本中的数据,便于以后管理和使用。
要正确设定文本的地址,为d:
程序段如下:
structst
{
charnum[20];
charnam[20];
intmark;
}std[25];
voidread()
inti;
FILE*fp;
fp=fopen("
D:
\\file29.txt"
"
r"
);
for(i=0;
i<
25;
i++)
fscanf(fp,"
%s\t%s\t%d\n"
std[i].num,std[i].nam,&
std[i].mark);
printf("
std[i].num,std[i].nam,std[i].mark);
}fclose(fp);
}
2、按照学号查询成绩:
serch1()
按学号查询,关键之处在于循环和条件嵌套,达到搜索的目的,会用到strcmp()函数来判断学号是否是与输入的相同。
函数段如下:
voidserch1()
{intj;
charx[3];
请输入您要查询的学号\n:
"
scanf("
%s"
&
x);
for(j=0;
j<
j++)
if(strcmp(std[j].num,x)==0)
%d\n"
std[j].mark);
3、按姓名查询成绩:
与2基本相同,不做过多解释。
函数段:
voidserch2()
{inta;
chary[10];
请输入您要查询的姓名\n:
y);
for(a=0;
a<
a++)
if(strcmp(std[a].nam,y)==0)
std[a].mark);
4、修改成绩change():
这个程序段主要应用还是for()循环和if()条件的嵌套来确定要修改的人的及其所对应的成绩。
通过赋值,替换学生成绩。
voidchange()
{charz[3];
intb,c;
请输入要修改人的学号\n:
z);
for(b=0;
b<
b++)
if(strcmp(std[b].num,z)==0)
请输入改后的成绩\n"
%d"
c);
std[b].mark=c;
std[b].num,std[b].nam,std[b].mark);
5、分数段人数统计tj():
实现人说统计有很多种方法。
而对于分数段的统计,最简洁的莫属for()循环和switch()的嵌套。
通过循环实现对所有同学的成绩的引入,再通过判断来确定他所在的分数段,最后通过自增运算实现人数的统计。
voidtj()
{intd=0,e=0,f=0,h=0,n=0,k;
for(k=0;
k<
k++)
switch(std[k].mark/10)
case10:
case9:
d++;
break;
case8:
e++;
case7:
f++;
case6:
h++;
default:
n++;
优:
%d\n良:
%d\n中:
%d\n及格:
%d\n不及格:
d,e,f,h,n);
6、最后的是主函数,主函数主要通过循环和判断的套用实现题目对菜单的要求,和对自定义函数的调用。
四、个人总结
本次的课程设计,给了我独自面对了超出自己想象和能力的问题的,有一开始的茫然和退缩,到后来勇于面对和解决问题。
我觉得自己成长了很多。
C语言确实是很难的科目,我遇到的问题也是很难的问题。
但是,经过自己努力,最终还是解决了问题。
而且,我也学会了分析,来把复杂问题简单化,可以先分析出我要完成课题所需要的模块,我确定的是5个,然后分别用5个自定义函数来解决问题。
然而如此大的程序对与新手的我在查找错误时必定会遇到不小的麻烦。
于是我想到了一个模块一个模块解决问题。
这样,我的效率要比周围的同学高很多。
可以提前答辩,并且答的很顺利。
五、参考文献
1C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include<
stdio.h>
string.h>
intj;
inta;
charz[3];
intd=0,e=0,f=0,h=0,n=0,k;
voidmain()
intm;
do
********欢迎使用成绩查询系统********\n"
按“1”,读取数据\n"
按“2”,按学号查询成绩\n"
按“3”,按姓名查询成绩\n"
按“4”,修改成绩\n"
按“5”,统计各分数段人数\n"
按“6”,完成退出\n请输入您想要的功能选项
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 分布 统计