设计一个程序,用于人事管理,要求可以对人员的基本情况进行修改。设计一个“人
员”类,包括有编号、性别、参加工作日期、出生日期,现在的日期等数据类型,其中“参加
工作日期、出生日期、现在的日期”为另一个“日期”类内嵌子对象,用成员函数实现对人员
信息的录入和显示,用函数Age()计算并输出人员的工龄和年龄,另设计一个函数实现
对人员的排序(按年龄由大到小进行排序)。输入的数据应保存至磁盘文件中。
设计一个程序,用于人事管理,要求可以对人员的基本情况进行修改。设计一个“人
员”类,包括有编号、性别、参加工作日期、出生日期,现在的日期等数据类型,其中“参加
工作日期、出生日期、现在的日期”为另一个“日期”类内嵌子对象,用成员函数实现对人员
信息的录入和显示,用函数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;
}