c++职工管理系统

需求

总体思路:

除主函数外,再创建两个cpp文件:

1.职工类:

1.图示

抽象类(父类):worker

子类:employee,manager,boss

2.思路

运用到了多态的知识:父类指针指向子类对象,如:

worker* wk=new employee(int id,string name,int did);

因为后续要用数组维护职工信息,而数组只能存放相同数据类型的变量。如果想用一个数组存放三种职工的信息,显然不可行。不过用一个数组就可以存放所有的父类指针,再用父类指针指向三种子类对象,就间接实现了用一个数组存放职工信息。

3.代码部分

抽象类(父类):

class Worker
{
public:
	virtual void showInfo()=0;
	virtual string GetDID()=0;

	int m_id;
	string m_name;
	int m_did;
};

子类.h(定义部分,以员工为例)

class Employee :public Worker
{
public:
	Employee(int id,string name,int did);
	void showInfo();
	string GetDID();
};

子类.cpp(函数实现)

Employee::Employee(int id, string name, int did)
{
	m_id = id;
	m_name = name;
	m_did = did;
}
void Employee::showInfo()
{
	cout << "职工编号:" << this->m_id << "    "
		<< "职工姓名:" << this->m_name << "    "
		<< "职工岗位:" << this->GetDID() << endl;
}
string Employee::GetDID()
{
	return "员工";
}

2.管理类:

1.图示

2.菜单界面

菜单部分单独写一个展示菜单的函数:void show_menu();     //使用cout输出即可

主函数部分:让用户输入选择,再使用switch语句,执行对应操作(具体操作先空着,函数先不做实现)

	int select=0;

	while (1)
	{
		wm.show_menu();
		cout << "请输入您的选择:" << endl;
		cin >> select;

		switch (select)
		{
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		case 6:
			break;
		case 7:
			break;
		case 0:
			break;
		default:
			system("cls");
			break;
		}

3.创建管理类

class workManager
{
public:
	//构造函数
	workManager();
	//析构函数
	~workManager();

	//显示菜单
	void show_menu();
	
	//0.退出系统
	void exit_sys();
	//1.添加职工
	void add_emp();
	//2.显示职工
	void show_emp();
	//3.删除离职员工
	void del_emp();
	//4.修改职工信息
	void modify_emp();
	//5.查找职工
	void find_emp();
	//6.按照职工编号重新排序
	void sort_emp();
	//7.清空职工
	void clear_emp();

	int EmpNum;  //职工人数
	Worker** EmpArr; //职工数组指针
};

4. 0-退出系统

void workManager::exit_sys()
{
	cout << "欢迎下次使用!" << endl;
	system("pause");
	exit(0);
}

5. 1-添加职工

总体思路:

①让用户输入要添加的人数,计算新的总人数

②根据新人数,开辟新空间

③将原有数据,放到新空间

④添加新的职工信息

⑤修改原指针指向

void workManager::add_emp()
{
	cout << "请输入您要添加的职工人数:" << endl;
	int addNum;
	cin >> addNum;

	if (addNum > 0)
	{
		//开辟新空间
		int allNum = this->EmpNum + addNum;
		Worker** newArr = new Worker * [allNum];
		//把旧空间数据搁进来
		if (this->EmpArr!=NULL)
		{
			for (int i=0;i<this->EmpNum;i++)
			{
				newArr[i] = this->EmpArr[i];
			}
		}
		//添加新成员
		for (int i=0;i<addNum;i++)
		{
			int id;
			string name;
			int did;

			cout << "请输入第" << i + 1 << "个职工的编号:" << endl;
			cin >> id;
			cout << "请输入第" <&l
【员工管理系统】 问题描述:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。 基本要求:排序:按不同关键字,对所有员工的信息进行排序;查询:按特定条件查找员工;更新,按编号对某个员工的某项信息进行修改;插入,加入新员工的信息;删除,按编号删除已离职的员工的信息。 选作内容:实现图形用户界面。 通过链表实现 数据结构: #include #include #include #include #include using namespace std; typedef struct workers{ char name[15];//姓名 char department[18];//单位 char gender;//性别 unsigned int age;//年龄 unsigned long long telephone;//电话 unsigned long wage;//工资 unsigned long num;//职工号 struct workers *next; }*Linklist,Lnode; void frist_print() { printf("\t\t⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ \n\n"); printf("\t\t\t欢迎进入员工管理系统\n"); } void menu() { printf("\n\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\t\t \t ◎1.创建员工信息\t \n"); printf("\t\t \t ◎2.插入员工信息\t \n"); printf("\t\t \t ◎3.修改员工信息\t \n"); printf("\t\t \t ◎4.删除员工信息\t \n"); printf("\t\t \t ◎5.查询员工信息\t \n"); printf("\t\t \t ◎6.员工信息排序\t \n"); printf("\t\t \t ◎7.显示员工信息\t \n"); printf("\t\t \t ◎8.员工工资情况\t \n"); printf("\n\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("注意:输入均以回车作为结束\n"); printf("please choise 1--8:\t "); //putchar(12); } void Inset(Linklist Head){ Linklist s,L; unsigned int agee; unsigned long wagee,numm;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值