人员类,编号,性别,工作日期,出生日期

设计一个程序,用于人事管理,要求可以对人员的基本情况进行修改。设计一个“人

员”类,包括有编号、性别、参加工作日期、出生日期,现在的日期等数据类型,其中“参加

工作日期、出生日期、现在的日期”为另一个“日期”类内嵌子对象,用成员函数实现对人员

信息的录入和显示,用函数Age()计算并输出人员的工龄和年龄,另设计一个函数实现

对人员的排序(按年龄由大到小进行排序)。输入的数据应保存至磁盘文件中。

 

代码如下:如有帮助,请采纳一下,谢谢。

#include <iostream>
#include <fstream>
using namespace std;
class People
{
private:
	int mId;
	char mSex;
	class Date
	{
	public:
		int year,mon,day;
	}mGzrq,mCsrq,mCurrent; //工作日期、出生日期、当前日期
public:
	People(){}
	void SetId(int id){mId = id;}
	void SetSex(char sex){mSex = sex;}
	void SetGzrq(int y,int m,int d){mGzrq.year = y;mGzrq.mon = m;mGzrq.day = d;}
	void SetCsrq(int y,int m,int d){mCsrq.year = y;mCsrq.mon = m;mCsrq.day = d;}
	void SetCurrent(int y,int m,int d){mCurrent.year = y;mCurrent.mon = m;mCurrent.day = d;}
	int Age()
	{
		//工龄
		int glyear,glmon;
		int nl;
		if(mCurrent.mon > mGzrq.mon)
		{
			glyear = mCurrent.year - mGzrq.year;
			glmon = mCurrent.mon - mGzrq.mon;
		}
		else
		{
			glyear = mCurrent.year - mGzrq.year -1;
			glmon = mCurrent.mon + 12 - mGzrq.mon;
		}
		//年龄
		if(mCurrent.mon > mCsrq.mon)
			nl = mCurrent.year - mCsrq.year;
		else
			nl = mCurrent.year - mCsrq.year -1;
		cout << "工龄:" << glyear << "年" << glmon << "月" << endl;
		cout << "年龄:" << nl << endl;

		return nl;
	}



	int getId(){return mId;}
	char getSex(){return mSex;}
	int getCsriYear(){return mCsrq.year;}
	int getCsriMon(){return mCsrq.mon;}
	int getCsriDay(){return mCsrq.day;}

	int getGzrqiYear(){return mGzrq.year;}
	int getGzrqMon(){return mGzrq.mon;}
	int getGzrqDay(){return mGzrq.day;}
};


void Sort(People pp[],int n)
{
	int i,j;
	People pt;
	for (i =0;i<n-1;i++)
	{
		for(j=0;j<n-1-i;j++)
		{
			if(pp[j].Age() <pp[j+1].Age())
			{
				pt = pp[j];
				pp[j] = pp[j+1];
				pp[j+1] = pt;
			}
		}
	}
}


int main()
{
	People pp[4];
	pp[0].SetId(1001);
	pp[0].SetSex('F');
	pp[0].SetCsrq(1988,1,1);
	pp[0].SetGzrq(2010,10,2);
	pp[0].SetCurrent(2021,6,21);

	pp[1].SetId(1002);
	pp[1].SetSex('F');
	pp[1].SetCsrq(1990,1,1);
	pp[1].SetGzrq(2013,10,2);
	pp[1].SetCurrent(2021,6,21);

	pp[2].SetId(1003);
	pp[2].SetSex('M');
	pp[2].SetCsrq(1970,1,1);
	pp[2].SetGzrq(2003,10,2);
	pp[2].SetCurrent(2021,6,21);

	pp[3].SetId(1004);
	pp[3].SetSex('F');
	pp[3].SetCsrq(1999,1,1);
	pp[3].SetGzrq(2018,10,2);
	pp[3].SetCurrent(2021,6,21);

	Sort(pp,4);

	ofstream os("a.txt");
	if (!os.is_open())
	{
		cout << "文件打开失败" <<endl;
		return 0;
	}
	for(int i =0;i<4;i++)
	{
		os << pp[i].getId() << "\t" << pp[i].getSex() << "\t" ;
		os<< pp[i].getCsriYear() << "\t" << pp[i].getCsriMon() << "\t" << pp[i].getCsriDay()<<"\t";
		os << pp[i].getGzrqiYear() << "\t" << pp[i].getGzrqMon() << "\t" << pp[i].getGzrqDay()<< endl;
	}
	os.close();

	return 0;
}