设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[19]。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数。在测试程序中声明people类的对象数组(要求使用动态内存分配生成对象数组),录入数据并显示相关信息。注:输出信息时先通过拷贝构造函数生成第一个员工的副本并输出其相关信息,然后再输出所有员工的相关信息。 【输入形式】先输入员工人数,再依次输入每个员工的信息。 【输出形式】输出信息时先通过拷贝构造函数生成第一个员工的副本并输出其相关信息,然后再输出所有员工的相关信息。
时间: 2023-05-27 12:07:42 浏览: 96
#include<iostream>
#include<cstring>
using namespace std;
class Date{
private:
int year, month, day;
public:
Date(int y=0, int m=0, int d=0){year=y, month=m, day=d;}
void set(int y, int m, int d){year=y, month=m, day=d;}
void print(){cout<<year<<"-"<<month<<"-"<<day;}
};
class People{
private:
char name[11];
char number[7];
char sex[3];
char id[19];
Date birthday;
public:
People(char *n="", char *num="", char *s="", char *i="", Date b=Date(1900,1,1)){
strcpy(name,n);
strcpy(number,num);
strcpy(sex,s);
strcpy(id,i);
birthday=b;
}
People(const People &p){
strcpy(name,p.name);
strcpy(number,p.number);
strcpy(sex,p.sex);
strcpy(id,p.id);
birthday=p.birthday;
}
void set(char *n, char *num, char *s, char *i, Date b){
strcpy(name,n);
strcpy(number,num);
strcpy(sex,s);
strcpy(id,i);
birthday=b;
}
inline void print(){
cout<<name<<" "<<number<<" "<<sex<<" "<<id<<" ";
birthday.print();
cout<<endl;
}
~People(){}
};
int main(){
int n;
cin>>n;
People *p=new People[n];
char name[11], number[7], sex[3], id[19];
int year, month, day;
for(int i=0;i<n;i++){
cin>>name>>number>>sex>>id>>year>>month>>day;
p[i].set(name,number,sex,id,Date(year,month,day));
}
People first(p[0]);
first.print();
for(int i=0;i<n;i++){
p[i].print();
}
delete []p;
return 0;
}
阅读全文