一道c++程序题,不是很难,但是就是有点乱,求高手解答哦。

实验作业-简单课程成绩管理学生成绩管理系统一、题目描述:编写一个学生成绩管理程序,实现对学生成绩的指标性统计和条件查询。题目要求实现两门课程的成绩管理,每门课的成绩分别均... 实验作业-简单课程成绩管理学生成绩管理系统
一、 题目描述:
编写一个学生成绩管理程序,实现对学生成绩的指标性统计和条件查询。题目要求实现两门课程的成绩管理,每门课的成绩分别均由键盘输入,两个数据之间用空格隔开,以-1表示成绩输入结束,每门课程成绩单独占一行(每门课不超过100人)。示例:
88 99 98 88 90 -1
69 90 12 33 44 -1
输入成绩后,要求程序对成绩进行指标性统计,具体的指标包括:
1)单门课程的平均分,最高分,最低分、及格率(>=60)及优秀率(>=85)
2)所有成绩的平均分,最高分,最低分、及格率(>=60)及优秀率(>=85)
统计结果不直接输出。
程序能够接收查询指令,并根据查询指令输出相应的结果
查询的格式为,<课程号><[指标号] [指标号]…><#>
课程号:1,2,0 (分别表示:课程1、课程2、综合)
指标号:A,M,L ,P,E(分别表示:平均分,最高分,最低分、及格率及优秀率)
例如:
1 A M L #表示要查询课程1的平均分,最高分,最低分。
0 P #表示要查询所有成绩中的最高分和最低分。
查询命令中的字符以空格隔开,以#结束。
可能有多个查询,每个查询占一行。
以单独一个“-1”表示查询结束。

对应每个查询,输出其结果,占一行,输出的数据之间以一个空格隔开。及格率和优秀率四舍五入输出百分比的整数值。平均成绩四舍五入输出整数值。
题目中不要求对非法输入数据做判断,默认输入数据全部为合法输入。

NOTE: 要求程序中尽量使用函数来实现程序的功能模块,要求至少使用两个函数,其中一个函数用来实现对单门课程的指标统计,另一个函数实现处理查询指令,在主函数中调用相应的功能函数,使主函数简洁。

测试样例:
11 60 55 66 77 -1
22 45 86 45 65 67 78 70 90 72 -1
0 A M L P #
-1

输出样例:
61 90 11 67%

二、 要求及评分标准
1. 编码规范
要求遵循良好的程序设计风格来设计和编写程序。基本编码规范:
1) 标识符的命名要到达顾名思义的程度;
2) 提供全面、清晰、准确的注释;
3) 程序版面要求:
不同功能块用空行分隔;一般一个语句一行;语句缩进整齐、层次分明。

2. 评分标准
序号 评分项目 权重(%)
1. 基本功能需求
程序可运行 30
结果正确 30
2. 编程风格
标识符命名 5
程序注释 5
程序版面 5
3. 结构化设计
控制结构的使用 5
函数的使用 10
4. 实验小结
设计过程描述 5
总结 5
总分 100
要使用两次函数哦
展开
 我来答
JANEWANGgreat
推荐于2016-08-14 · TA获得超过175个赞
知道小有建树答主
回答量:358
采纳率:0%
帮助的人:196万
展开全部
终于完成了!哈哈。选我最佳答案哦!
#include "iostream.h"
int cj[2][100];
void sr();//输入
void cx();//查询
void ck();//查看
int main()
{
while(1)
{
cout<<"欢迎使用成绩查询系统!"<<endl;
cout<<"1.输入\n2.查询\n3.查看";
int menu;
cin>>menu;
switch(menu)
{
case 1:sr();break;
case 2:cx();break;
case 3:ck();break;
}
}
return 0;
}
void sr()
{
int where=-1;
do
{
where++;
cin>>cj[0][where];
if(where>=100)
{
cout<<"太多了!\n";
break;
}
}while(cj[0][where]>=0);
where=-1;
do
{
where++;
cin>>cj[1][where];
if(where>=100)
{
cout<<"太多了!\n";
break;
}
}while(cj[1][where]>=0);
return;
}
void cx(){
int kc;char zb[5];
cin>>kc>>zb;
kc-=1;
for(int where=0;where<5&&zb[where]!='#';where++)
{
int i=0,s,j;
switch(zb[where])
{
case 'A':
s=0;
for(i=0;i<100&&cj[kc][i]>=0;i++)
s+=cj[kc][i];
cout<<"平均分:"<<s/i<<endl;
break;
case 'M':
s=cj[kc][0];
for(i=0;i<100&&cj[kc][i]>=0;i++)
{
if(cj[kc][i]>=s)
s=cj[kc][i];
}
cout<<"最高分:"<<s<<endl;
break;
case 'L':
s=100;
for(i=0;i<100&&cj[kc][i]>=0;i++)
{
if(cj[kc][i]<s)
s=cj[kc][i];
}
cout<<"最低分:"<<s<<endl;
break;
case 'P':
s=j=0;
for(i=0;i<100&&cj[kc][i]>=0;i++)
{
if(cj[kc][i]>=60)
s++;
else
j++;
}
cout<<"及格率:"<<(int)(s*100/(s+j))<<"%"<<endl;
break;
case 'E':
s=j=0;
for(i=0;i<100&&cj[kc][i]>=0;i++)
{
if(cj[kc][i]>=85)
s++;
else
j++;
}
cout<<"优秀率:"<<(int)(s*100/(s+j))<<"%"<<endl;
break;
}
}
return;
}
void ck(){
cout<<"课程1:";
for(int i=0;i<100&&cj[0][i]>=0;i++)
cout<<cj[0][i]<<" ";
cout<<endl<<"课程2:";
for(int j=0;j<100&&cj[1][j]>=0;j++)
cout<<cj[1][j]<<" ";
cout<<endl;
return;
}//查看
信念相信
2012-11-23
知道答主
回答量:31
采纳率:0%
帮助的人:10.3万
展开全部
题目不难,关键是梳理整体架构和思路,然后再着手开始!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vin_c_ent
2012-11-10
知道答主
回答量:64
采纳率:0%
帮助的人:14.1万
展开全部
那么麻烦的问题...才10分...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式