0
点赞
收藏
分享

微信扫一扫

C++小作业-设计一个用于人事管理的People(人员)类

三次方 2022-04-13 阅读 47

一、问题描述

【问题描述】设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[19]。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数。在测试程序中声明people类的对象数组(要求使用动态内存分配生成对象数组),录入数据并显示相关信息。注:输出信息时先通过拷贝构造函数生成第一个员工的副本并输出其相关信息,然后再输出所有员工的相关信息。

【输入形式】先输入员工人数,再依次输入每个员工的信息。

【输出形式】输出信息时先通过拷贝构造函数生成第一个员工的副本并输出其相关信息,然后再输出所有员工的相关信息。

【样例输入】

员工人数:2

姓名:张山

编号:1001

性别(男/女):男

出生日期(年 月 日):1998 01 01

身份证号:510215199801010888

姓名:李四

编号:1002

性别(男/女):女

出生日期(年 月 日):1999 02 02

身份证号:500213199902020666

【样例输出】

 姓名:张山

编号:1001

性别:男

出生日期:1998年1月1日

身份证号:510215199801010888

姓名:张山

编号:1001

性别:男

出生日期:1998年1月1日

身份证号:510215199801010888

姓名:李四

编号:1002

性别:女

出生日期:1999年2月2日

身份证号:500213199902020666

二、代码实现

#include <iostream>
using namespace std;
#include <cstring>

class Date {
	private:
		int year, month, day;
	public:
		//构造函数,带默认形参值
		Date(int year = 0, int month = 0, int day = 0) {
			this->year = year;
			this->month = month;
			this->day = day;
		}

		void setDate() {
			cin >> year >> month >> day;
		}
		//内联函数
		inline void showDate() {
			cout << year << "年" << month << "月" << day << "日";
		}

		~Date() {}
};

class People {
	private:
		char name[11];
		char number[7];
		char sex[4];
		char id[19];
		Date birthday;//日期类内嵌子对象
	public:
		//无参构造函数
		People() {}
		//带参构造函数;组合类的构造函数初始化y,m,d
		People(char na[], char num[], char se[], int y, int m, int d, char i[]): birthday(y, m, d) {
			strcpy(name, na);
			strcpy(number, num);
			strcpy(sex, se);
			strcpy(id, i);

		}
		//拷贝构造函数
		People(People &p) {
			strcpy(name, p.name);
			strcpy(number, p.number);
			strcpy(sex, p.sex);
			strcpy(id, p.id);
			birthday = p.birthday;
		}

		//录入人员信息
		void input() {
			cout << "姓名:";
			cin >> name;
			//cout << endl;
			cout << "编号:";
			cin >> number;
			//cout << endl;
			cout << "性别(男/女):";
			cin >> sex;
			//cout << endl;
			cout << "出生日期(年 月 日):";
			birthday.setDate();
			//cout << endl;
			cout << "身份证号:";
			cin >> id;
			//cout << endl;


		}
		//展示人员信息
		void showPeople() {
			cout << endl;
			cout << "姓名:" << name << endl;
			cout << "编号:" << number << endl;
			cout << "性别:" << sex << endl;
			cout << "出生日期:";
			birthday.showDate();
			cout << endl;
			cout << "身份证号:" << id;
		}
		~People() {}
};

int main() {
	int n;//员工数
	cout << "员工人数:";
	cin >> n;
	//cout << endl;
	//动态对象数组
	People *p;
	p = new People[n];
	for (int i = 0; i < n; i++) {
		p[i].input();

	}
	//拷贝一份
	People p1(p[0]);
	p1.showPeople();
	for (int i = 0; i < n; i++) {
		p[i].showPeople();
	}
	delete[] p;//释放由new分配的内存空间
	return 0;
}
举报

相关推荐

c++实现一个日期类

0 条评论