- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
编号: 00
一、题目:
设置成绩等级
二、设计思路
1、总体设计
分析程序的功能
输入100名以内的学生信息,计算学生各科成绩总和和学生成绩等级,然后按分数由高到低输出,再根据输入顺序输出学生成绩。
系统总体结构:
输出学生等级的过程有这几部分构成:输入学生人数,输入学生信息,按总分排序,计算成绩等级,按分由高到低输出学生成绩,按输入顺序输出学生成绩。总
共六个步骤:
模块
函数名称
输入学生信息按总分排序
Struct studentsort
计算成绩等级
lev
输入学生人数5
通过结构体structstudent结构数组stu[i]输入学生信息
NUM
S1
S2
S3
S4
112093
90
80
75
83
112094
65
75
85
85
112095
80
90
95
87
112096
86
87
96
67
112097
81
82
83
89
计算4门学科的学习成绩总和然后用排序函数sort排序(需要调用函数),排序完了之后根据各等级人数所占的百分比计算出人数(需四舍五入)用lev函数计算出成绩等级(需调用函数)。
通过输入流输出按分数由于高到低的输出学生成绩。
通过第二个结构数组stu1[i],将结构数组stu[i]中的成绩等级赋给stu1[i],之后通过输出流输出按输入顺序输出学生成绩。
第1页/共8页
编号: 00
最 后 输 出 结 果 如 图 所 示 :
2、各功能模块的设计:说明各功能模块的实现方法1)结构体structstudent模块
先定义结构体类型student,然后将学生信息NUMS1S2S3S4数据汇集起来,
并输入
NUM
S1
S2
S3
S4
112093
90
80
75
83
112094
65
75
85
85
112095
80
90
95
87
112096
86
87
96
67
112097
81
82
83
89。、
通过该结构体structstudent定义了两个结构体数组stu[i]和stu1[i]。结构体数组stu[i]存储学生信息和用来通过计算总分排序并计算出学生的成绩等级,结构数组stu1[i]存储学生成绩和用来实现记录输入的学生信息并接受stu[i].flag赋值记录学生成绩等级。
代码参见structstudent结构体。
第2页/共8页
编号: 00
排序函数sort模块
先声明sort函数,通过stu[i].sum累加器计算出学生四门课的成绩总和,然后调用sort函数对学生的总体成绩排序,在主函数后面定义sort函数,其函数中采用了冒泡法排序的。
代码参见sort函数。
设置成绩等级函数lev模块
先声明成绩等级函数lev,然后在学生成绩排序完成之后,进行成绩等级计算,调用lev函数,计算出’A’’B’’C’’D’。在主函数之后定义lev函数,主要是四舍五入的计算,设定了两个数据类型,intxdouble y,x代表学生人数,y代表各成绩等级人数所占总体的百分比数。
if(x*y-int(x*y)=0.5)returnint(x*y)+1;
else
returnint(x*y);从而实现四舍五入代码参见lev函数。
创新设计部分
扩大了学生的学科数目,由三科扩大到了四科并且自学了文件操作,将学生人数和信息存入一个文本文件,通过复制,在输入时通过粘贴就解决了。
3、设计中的主要困难及解决方案
困难(1)自学结构体类型、结构数字来输入学生成绩的信息(学号、三门课成绩)。
困难(2)按总分排序学生信息,再根据各等级所占人数比例输出学生等级,并且算出的人数要四舍五入。
困难(3)先按总分由高到低输出学生成绩,之后再输出之前按输入的顺序输出学生成绩。
4、你所设计的程序最终完成的功能
说明你编制的程序能完成的功能
能够根据输入的学生信息计算出学生各科成绩的总和,并进行由高到低排序,和输出学生的成绩等级。也能输出按输入的顺序输出学生的成绩
准备的测试数据及运行结果
第3页/共8页
编号: 00
三程序清单
voidmain(){int
voidmain()
{
inti,j,k,l;intn;
cout请您输入学生人数endl;cinn;
student*q;q=stu1;
cout按照总分由高到低的输出学生成绩\n;//第一次输出
coutNUM
S1
S2
S3
S4
SUM
FLAGendl;
for(i=0;in;i++)
coutstu[i].num\tstu[i].s[0]\tstu[i].s[1]\tstu[i].s
[2]\tstu[i].s[3]
文档评论(0)