先定义一个Person类,包含数据成员姓名、性别和出生日期,以该类为基类,派生出学生类和职工类。在学生类中增加数据成员学号、成绩:在职工类中增加数据成员职工号和工资。其中,出生日期是日期类的对象。要求计算学生的平均成绩和职工的平均工资。
时间: 2023-05-31 15:05:49 浏览: 75
代码如下:
```c++
#include<iostream>
#include<string>
using namespace std;
class Date{
public:
Date(int y=1990,int m=1,int d=1):year(y),month(m),day(d){}
void display(){
cout<<year<<"-"<<month<<"-"<<day<<endl;
}
private:
int year,month,day;
};
class Person{
public:
Person(string n="Tom",char s='M',int y=1990,int m=1,int d=1):
name(n),sex(s),birthday(y,m,d){}
void display(){
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"birthday:";
birthday.display();
}
private:
string name;
char sex;
Date birthday;
};
class Student:public Person{
public:
Student(string n="Tom",char s='M',int y=1990,int m=1,int d=1,int num=1001,float score=80):
Person(n,s,y,m,d),num(num),score(score){}
void display(){
Person::display();
cout<<"num:"<<num<<endl;
cout<<"score:"<<score<<endl;
}
static void average_score(Student stu[],int n){
float sum=0;
for(int i=0;i<n;i++){
sum+=stu[i].score;
}
cout<<"average score:"<<sum/n<<endl;
}
private:
int num;
float score;
};
class Worker:public Person{
public:
Worker(string n="Tom",char s='M',int y=1990,int m=1,int d=1,string id="0001",float salary=5000):
Person(n,s,y,m,d),id(id),salary(salary){}
void display(){
Person::display();
cout<<"id:"<<id<<endl;
cout<<"salary:"<<salary<<endl;
}
static void average_salary(Worker worker[],int n){
float sum=0;
for(int i=0;i<n;i++){
sum+=worker[i].salary;
}
cout<<"average salary:"<<sum/n<<endl;
}
private:
string id;
float salary;
};
int main(){
Student stu[3]={
Student("Tom",'M',1990,1,1,1001,80),
Student("Lily",'F',1991,2,2,1002,90),
Student("Jack",'M',1992,3,3,1003,85)
};
Worker worker[3]={
Worker("Bob",'M',1980,1,1,"0001",6000),
Worker("Amy",'F',1981,2,2,"0002",8000),
Worker("Lucy",'F',1982,3,3,"0003",7000)
};
for(int i=0;i<3;i++){
stu[i].display();
}
Student::average_score(stu,3);
for(int i=0;i<3;i++){
worker[i].display();
}
Worker::average_salary(worker,3);
return 0;
}
```
输出结果为:
```
name:Tom
sex:M
birthday:1990-1-1
num:1001
score:80
name:Lily
sex:F
birthday:1991-2-2
num:1002
score:90
name:Jack
sex:M
birthday:1992-3-3
num:1003
score:85
average score:85
name:Bob
sex:M
birthday:1980-1-1
id:0001
salary:6000
name:Amy
sex:F
birthday:1981-2-2
id:0002
salary:8000
name:Lucy
sex:F
birthday:1982-3-3
id:0003
salary:7000
average salary:7000
```