完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数。

仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据:

   int ID;//教师工号
Student stu[100];//学生数组
int count;//学生数目,最多不超过100
float cpp_average;//班级cpp平均分

增加以下成员函数:

  Teacher类的参数化构造函数
void Add (Student & stu1)//在学生数组中增加一个学生记录
void average();//计算当前班级cpp平均成绩cpp_average
void print()//输出当前班级学生的信息
//其中学生记录中cpp_score和cpp_grade输出保留一位小数
//当前班级cpp_average输出保留一位小数;
//输出格式如下:
//第一行:教师工号 教师姓名 班级学生数 cpp_average
//第二行至第count+1行每一行输出一个学生的信息,每一行格式
// 学生学号 学生姓名 cpp_grade
//cpp_grade保留一位小数

生成上述类并编写主函数,根据输入的教师基本信息,建立一个教师对象,根据输入的每一条学生基本信息,建立一个学生对象,计算学生cpp总评成绩并且加入学生数组中,由教师对象计算班级cpp平均成绩,并输出班级学生的全部信息。

输入格式: 测试输入包含一个测试用例,该测试用例的第一行输入教师的基本信息(教师姓名 教师工号 年龄),第二行开始输入班级内学生信息,每个学生基本信息占一行(学生姓名 学号 年龄 cpp成绩 cpp考勤),最多不超过100行,当读入0时输入结束。

输入样例:

Mike 901 30

Bob 10001 18 75.9 4

Anna 10003 19 87.0 5

0

输出样例:

901 Michale 2 82.3

10001 Bob 76.3

10003 Anna 88.3

#include<iostream>
#include<string>
#include<iomanip>
using namespace std; class Person {
protected:
string name;//姓名
int age;//年龄
public:
Person(){};
Person (string a, int b) : name(a), age (b){};
void display () {cout<<name<<":"<<age<<endl;}
};
//学生类
class Student : public Person{
int ID;//学号
float cpp_score;//cpp上机成绩
float cpp_count;//cpp上机考勤
float cpp_grade;//cpp总评成绩
public:
void operator = (Student &a){
name = a.name;
age = a.age;
ID = a.ID;
cpp_score = a.cpp_score;
cpp_count = a.cpp_count;
cpp_grade = a.cpp_grade;
//cout<<name<<ID<<cpp_grade<<"hello ";
}
float getGrade(){return cpp_grade;}
Student():Person(){};
void display(){cout<<ID<<" "<<name<<" "<<setiosflags(ios::fixed)<<setprecision()<<cpp_grade<<endl;}
Student(string a, int b , int c ,float d ,float e) :
Person(a,b), ID(c) , cpp_score(d) , cpp_count(e) {cpp_grade = cpp_score * 0.9 + cpp_count * ;}
};
//教师类
class Teacher : public Person{
int ID;//教师工号
Student stu[];
int count;
float cpp_average;
public:
Teacher(string a, int b, int c) : Person(a,b), ID(c){};
void setCount(int a){count= a;}
void Add (Student & stu1){
stu[count-] = stu1;
};
void average(){
float ans=;
for(int i=;i<count;i++)
{
ans += stu[i].getGrade();
}
cpp_average = ans/count;
};
void print(){
cout<<ID<<" "
<<name<<" "
<<count<<" "
<<setiosflags(ios::fixed)<<setprecision()
<<cpp_average<<endl;
for(int i=;i<count;i++)
{
stu[i].display();
}
};
};
int main()
{ string name;
int age, num,count;
float score;
//教师
cin>>name>>num>>age;
Teacher ok(name , age, num);
int sum=;
//学生
cin>>name;
while(name[]!='')
{
sum++;
cin>> num>> age>> score >> count;
Student hello(name, age, num, score, count);
ok.setCount(sum);
ok.Add( hello );
cin>>name;
}
ok.average();
ok.print(); return ;
}

最新文章

  1. JavaScript中的继承
  2. SQL性能优化常见措施(Lock wait timeout exceeded)
  3. SharePoint 2013 定制搜索显示模板
  4. PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂
  5. jQuery get() 函数
  6. git pull错误
  7. 用Join子句进行分组联接
  8. 机器学习&amp;数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)
  9. java笔记--关于克隆技术
  10. UDP 打洞 原理解释
  11. Ultra Edit常用正则表达式
  12. Install GTK in Ubuntu
  13. linux无法umount解决方案
  14. PHP获取文件扩展名的多种方法
  15. [转]前端CSS规范整理
  16. centos7修改网卡名称
  17. 微信授权、获取用户openid-纯前端实现——jsonp跨域访问返回json数据会报错的纯前端解决办法
  18. python oracle 查询返回字典
  19. 中国移动物联网平台数据转发 c# 控制台程序
  20. 查看和杀死进程ps

热门文章

  1. java线程——线程局部变量
  2. 吴裕雄--天生自然 JAVASCRIPT开发学习: 错误 - throw、try 和 catch
  3. Go-方法-接口-异常处理-错误处理
  4. Eclipse换DarkestDark主题之后,无法使用快捷键
  5. App的布局管理
  6. 基于ssh开发彩票购买系统的设计与实现毕业设计
  7. 操作实践,git本地分支执行rebase,让主干分支记录更简洁
  8. javaweb学习——session和Cookie实现购物车功能
  9. aws ec2 安装Elastic search 7.2.0 kibana 并配置 hanlp 分词插件
  10. PAT Advanced 1081 Rational Sum (20) [数学问题-分数的四则运算]