要求如下:
一班有10名学生,一学期有5门课程,编写程序实现如下功能:
(1)录入每名学生的各科成绩
(2)求出每名学生的平均成绩和总分
(3)求每门课程的平均分、及格率、最高成绩和最低成绩
(4)输出总成绩前5名的学生学号、各科成绩和总分
(5)输出各科补考学生的学号和成绩
要求:
(1)编制一主函数来实现功能菜单的显示和各功能函数的调用;
(2)程序设计各步骤的相关文档齐全、清晰。
(3)在所有数据输入处理之前提供必要的提示
(4)完成方式:以实训报告的形式提交(书面:A4文稿)。
实训报告包含整个开发过程的全部相关文档。
具体开发过程:
1、系统结构设计:设计软件的各个模块的功能和函数名。
(1)主函数:显示功能菜单,调用功能模块
(2)成绩输入函数:input_score
输入学生的各科成绩
(3)求出每名学生的平均成绩和总分函数:stu_ave
(4)求每门课程的平均分、及格率、最高成绩和最低成绩函数:cour_ave
(5)求前5名函数:sort
输出总成绩前5名的学生学号、各科成绩和总分
(6)补考名单函数:bukao
输出各科补考学生的学号和成绩
2、数据结构设计:设计软件中用到的各数组、变量、指针变量的名称和类型。
(1)score[10][5] 存放学生成绩
(2)stu[10][3] 存放学生学号、总分、平均分
(3)course[5][10]存放课程名称
(4)courave[5] 存放各科平均成绩
3、函数详细设计:各功能函数的具体实现
(1)设计函数原型
(2)设计流程图
(3)代码设计
4、程序调试:
(1)调试各模块
(2)整个程序联调
5、输入数据测试系统
要求写出测试的数据以及程序运行的结果
#include<iostream.h>
#include<string.h>
void input_score(double *a);
double all_score(double b[]),ave_score(double c[]);
void cour_ave(double d[]);
void main()
{
double score[10][5]={0},stu[10][3],course[5][10];
for(int i=0;i<10;i++)
{
cout<<"输入第"<<i+1<<"个学生的成绩:";
input_score(score[i]);
}
for(i=0;i<10;i++)
{
stu[i][1]=all_score(score[i]);
stu[i][2]=ave_score(score[i]);
}
for(i=0;i<10;i++)
{
cout<<"学号为"<<i+1<<"的学生总成绩为:"<<stu[i][1]<<" ";
cout<<"平均成绩为:"<<stu[i][2]<<" ";
cout<<endl;
}
for(i=0;i<5;i++)
{
for(int j=0;j<10;j++)
course[i][j]=score[j][i];
}
for(i=0;i<5;i++)
{
cout<<"第"<<i+1<<"门课程的平均分为:";
cour_ave(course[i]);
}
}
void input_score(double *a)
{
for(int i=0;i<5;i++)
{
cin>>*a;
a=a+1;
}
}
double all_score(double b[])
{
double s=0;
for(int i=0;i<5;i++)
s+=b[i];
return s;
}
double ave_score(double c[])
{
double ave=0;
ave=all_score(c)/5;
return ave;
}
void cour_ave(double d[])
{
double m=0,n=0,max=0,min=0;
for(int i=0;i<10;i++)
{
n+=d[i];
if(d[i]>=60)
m++;
}
for(i=0;i<10;i++)
{
if(max<d[i])max=d[i];
}
min=max;
for(i=0;i<10;i++)
{
if(min>d[i])min=d[i];
}
cout<<(double)n/10<<"及格率为: "<<(double)m/10<<"最高成绩为:"<<max<<"最低成绩为:"<<min<<endl;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
虽然还有有一点东西没有给你弄完,但是这个程序还是花了我一个下午的时间!毕竟我也是一个菜鸟,其中你要求的存放各科平均成绩的数组我没有放在数组courave【5】中,这就需要你自己弄了,还有就是补考的内容也没弄,我不知道你需要什么形式的输入补考内容,那个排序前五名随便在百度一下应该都有程序中就没有给你表示出来了,其余的自己应该弄的出来,如果需要程序中某些算法可以给我留言。