题目描述
合理设计一个类,该类需要对数据成员进行合法性验证、初始化、修改、获取、输出等基本操作外,还应能完成其他一些合理的功能操作(可以自行思考设计)。并在程序合适的位置中生成该类的对象,并让所设计的功能发挥作用。可以参考以下提示,选择一个参考项或自己进行拟定一个抽象的事物进行单个类的设计。
目的
1) 巩固类的定义,成员变量、成员方法的定义;
2) 巩固类的对象的定义,对象对成员变量、成员方法的访问;
要求
在main函数定义并使用对象、指针及引用三种方法完成完成员工的信息显示,并使用拷贝构造函数。
参考设计
参考1:员工类
数据成员:姓名,年龄,性别,身份证,工号,入职时间。
成员函数:显示员工信息,修改入职时间。
程序流程图
参考代码
// CStaff 员工类
#pragma once
#include <string>
using namespace std;
class CStaff
{
private:
string m_nName;//姓名
string m_nAge;//年龄
string m_nGender;//性别
string m_nID;//身份证
string m_nNumber;//工号
string m_nEnTime;//入职时间
string m_nPosition;//职位
public:
CStaff();
CStaff(string Name, string Age, string Gender, string ID, string Number, string EnTime, string Position);
void SetAllinformation(string Name, string Age, string Gender, string ID, string Number, string EnTime, string Position);
void SetName(string nName);
void SetAge(string Age);
void SetGender(string Gender);
void SetID(string ID);
void SetNumber(string Number);
void SetTime(string EnTime);
void SetPosition(string Position);
string ShowInformation();
~CStaff();
};
//员工类实现
#include "CStaff.h"
#include <bits/stdc++.h>
CStaff::CStaff()
{
}
CStaff::CStaff(string Name, string Age, string Gender, string ID, string Number, string EnTime, string Position)
{
this->m_nName = Name;
this->m_nAge = Age;
this->m_nGender = Gender;
this->m_nID = ID;
this->m_nNumber = Number;
this->m_nEnTime = EnTime;
this->m_nPosition = Position;
}
void CStaff::SetAllinformation(string Name, string Age, string Gender, string ID, string Number, string EnTime, string Position)
{
this->m_nName = Name;
this->m_nAge = Age;
this->m_nGender = Gender;
this->m_nID = ID;
this->m_nNumber = Number;
this->m_nEnTime = EnTime;
this->m_nPosition = Position;
}
void CStaff::SetName(string nName)
{
this->m_nName = nName;
}
void CStaff::SetAge(string Age)
{
this->m_nAge = Age;
}
void CStaff::SetGender(string Gender)
{
this->m_nGender = Gender;
}
void CStaff::SetID(string ID)
{
this->m_nID = ID;
}
void CStaff::SetNumber(string Number)
{
this->m_nNumber = Number;
}
void CStaff::SetTime(string EnTime)
{
this->m_nEnTime = EnTime;
}
void CStaff::SetPosition(string Position)
{
this->m_nPosition = Position;
}
string CStaff::ShowInformation()
{
cout << "姓名:" << this->m_nName << endl << "年龄:" << this->m_nAge << endl << "性别:" << this->m_nGender << endl << "身份证号:" << this->m_nID << endl << "工号:" << this->m_nNumber << endl << "入职时间:" << this->m_nEnTime << endl;
return string();
}
CStaff::~CStaff()
{
}
//主函数
#include "CStaff.h"
#include <bits/stdc++.h>
#include "CCompany.h"
//"小明",20,"男", "12345678987654321","512020xxxx","2020-09-01"
//= new CStaff(nName, nAge, nGender, nID, nNumber, nEnTime, nPosition)
using namespace std;
string nName;//姓名
string nAge;//年龄
string nGender;//性别
string nID;//身份证
string nNumber;//工号
string nEnTime;//入职时间
string nPosition;//职位
int main()
{
CCompany Future;
int s;
int ChangeInformation(int s, CStaff & staff);
cout << "请输入姓名: "; cin >> nName;
cout << "请输入年龄: "; cin >> nAge;
cout << "请输入性别: "; cin >> nGender;
cout << "请输入身份证号: "; cin >> nID;
cout << "请输入工号: "; cin >> nNumber;
cout << "请输入入职时间: "; cin >> nEnTime;
cout << "请输入职位:"; cin >> nPosition;
cout << endl;
CStaff* staff = new CStaff();//指针
//CStaff staff(nName, nAge, nGender, nID, nNumber, nEnTime, nPosition);//用对象
staff->SetAllinformation(nName, nAge, nGender, nID, nNumber, nEnTime, nPosition);
cout << "该员工信息为:" << endl;
staff->ShowInformation();
cout << endl;
cout << "如需修改信息请输入:1,退出输入:0" << endl;
cin >> s;
if (s) {
ChangeInformation(s, *staff);
cout << endl;
cout << "修改后的信息为:" << endl;
staff->ShowInformation();
}
delete staff;
return 0;
}
int ChangeInformation(int s, CStaff& staff)
{
if (s) {
cout << "修改:" << endl << "1.姓名" << endl << "2.年龄" << endl << "3.性别" << endl << "4.身份证" << endl << "5.工号" << endl << "6.入职时间" << endl << "7.职位" << endl;
int t;
cin >> t;
cout << "请输入:";
switch (t) {
case 1:cin >> nName; staff.SetName(nName); break;
case 2:cin >> nAge; staff.SetAge(nAge); break;
case 3:cin >> nGender; staff.SetGender(nGender); break;
case 4:cin >> nID; staff.SetID(nID); break;
case 5:cin >> nNumber; staff.SetNumber(nNumber); break;
case 6:cin >> nEnTime; staff.SetTime(nEnTime); break;
case 7:cin >> nPosition; staff.SetPosition(nPosition); break;
default:printf("error\n"); break;
}
}
else {
return 0;
}
}
运行结果
说明
个人能力有限,仅供参考,共同学习!