C++初学初练类与对象构造函数与析构函数之人员信息录入简单代码

本文通过实例代码讲解如何使用C++设计一个People类,包含编号、性别、出生日期(内嵌Date类)和身份证号等属性。讨论了构造函数、析构函数、拷贝构造函数、内联成员函数、带默认参数的成员函数以及类的聚集操作在人员信息管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目名称:

  设计一个用于人事管理的 People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。

  其中"出生日期"定义为一个"日期"类内嵌子对象。

  用成员函数实现对人员信息 的录入和显示。

  要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数、聚集。

构思过程(可用文字、流程图、UML图等方式表达):

题目要求设计一个内嵌日期子对象的人员管理类,则应写一个人员管理类和日期类,并写出题目中要求的构造函数、析构函数、复制构造函数、内联成员函数、带缺省形参值的成员函数和聚集。

#include <iomanip>
#include <iostream>
#include <string>
using namespace std;

class Date
{
public:
	Date(int,int,int);
	int getYear();
	int getMonth();
	int getDay();
private:
	int year;
	int month;
	int day;
};
Date::Date(int Year,int Month,int Day):year(Year),month(Month),day(Day)
{
	year=Year;
	month=Month;
	day=Day;
}
int Date::getYear()
{
	return year;
}
int Date::getMonth()
{
	return month;
}
int Date::getDay()
{
	return day;
}

class Staff
{
public:
	Staff(int,string,char,int,int,int,int);
	Staff(Staff &s);
	void msgShow();
	int getNumber();
	string getName();
	char getGender();
	int getId();
	~Staff(){};
private:
	int number;
	string name;
	char gender;
	int id;
	Date d;
};
Staff::Staff(int Number,string Name,char Gender,int Id,int Year=0,int Month=0,int Day=0)
	:number(Number),name(Name),gender(Gender),d(Year,Month,Day)
{}
int Staff::getNumber()
{
	return number;
}
string Staff::getName()
{
	return name;
}
char Staff::getGender()
{
	return gender;
}
int Staff::getId()
{
	return id;
}
Staff::Staff(Staff &s):d(s.d.getYear(),s.d.getMonth(),s.d.getDay())
{
	number=s.getNumber();
	name=s.getName();
	gender=s.getGender();
	id=s.getId();
}
void Staff::msgShow()
{
	cout<<"工号:	"<<getNumber()<<endl;
	cout<<"姓名:	"<<getName()<<endl;
	cout<<"性别:	"<<getGender()<<endl;
	cout<<"身份证号:"<<getId()<<endl;
	cout<<"出生年月:	"<<d.getYear()<<"	"<<d.getMonth()<<"	"<<d.getDay()<<"	"<<endl;
}

void msgSet()
{
	int inu,iid,iye,imo,ida;
	char cge;
	string sna;
	cout<<"请输入工号:	";
	cin>>inu;
	cout<<"请输入名字:	";
	cin>>sna;
	cout<<endl;
	cout<<"请输入性别(男性输入M,女性输入F):	";
	cin>>cge;
	cout<<"请输入身份证号:	";
	cin>>iid;
	cout<<"请输入出生年月日(中间用空格隔开):	";
	cin>>iye>>imo>>ida;
	Staff s(inu,sna,cge,iid,iye,imo,ida);
	s.msgShow();
}
int main()
{
    for(int i=0;i<10000;i++)
	{
		cout<<"请输入第"<<i+1<<"个员工信息"<<endl;
	   msgSet();
	   cout<<endl;
	}
	return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值