基于C++泛型编程的职工管理系统需要实现以下功能:
- 实现职工的基本信息,包括职工号、姓名、性别、部门等信息的录入、修改、删除和展示功能。
- 实现职工的信息的按职工号、姓名、性别、部门等关键字进行查询的功能。
- 实现职工信息的读取和保存功能,以便于程序下次运行时可以直接读取上次信息。
- 实现按职工号、姓名、性别、部门等关键字进行职工的自然排序的功能。
下面是对应的实现过程:
设计职工类
需要设计一个职工类,记录职工的相关信息。
class Worker
{
public:
int m_Id; // 职工号
string m_Name; // 姓名
int m_Sex; // 性别:0表示女,1表示男
int m_DeptId; // 部门编号
void showInfo(); // 显示个人信息
void showMenu(); // 显示菜单
};
设计员工数组类
员工数组类用于操作职工信息。在类中使用泛型来实现不同类型数据的数组操作。为了实现动态扩容,需要通过模板定义数组容量。
template <class T>
class WorkerArray
{
public:
WorkerArray(int capacity); // 构造函数
~WorkerArray(); // 析构函数
void add(T val); // 添加数据
void remove(T val); // 删除数据
void edit(T val); // 修改数据
void sort(); // 自然排序
void print(); // 显示数据
int m_CurLength; // 当前长度
int m_Capacity; // 总容量
T *p_DataArr; // 指向数据的指针
};
完成职工管理系统
在main函数中调用WorkerArray类来实现完整的职工管理系统。
int main()
{
WorkerArray<Worker> arr(100);
int select = 0;
while (true)
{
arr.showMenu();
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 8: // 自然排序
…
break;
case 0: // 退出系统
return 0;
break;
default:
system("cls");
break;
}
}
return 0;
}
以下是两条在职工管理系统中的示例说明:
示例1:添加职工
在职工管理系统中选择1,进入添加职工操作。输入职工信息后,调用了WorkerArray类中的add函数,把职工信息添加到职工数组中。
case 1: // 添加职工
{
cout << "请输入职工个数:" << endl;
int num = 0;
cin >> num;
if (num > 0)
{
for (int i = 0; i < num; i++)
{
int id;
string name;
int sex = 0;
int did = 0;
system("cls");
cout << "请输入第 " << i + 1 << " 个职工的信息:" << endl;
cout << "请输入职工号:" << endl;
cin >> id;
cout << "请输入姓名:" << endl;
cin >> name;
cout << "请输入性别(0/1):" << endl;
cin >> sex;
cout << "请输入岗位:" << endl;
cin >> did;
Worker worker;
worker.m_Id = id;
worker.m_Name = name;
worker.m_Sex = sex;
worker.m_DeptId = did;
arr.add(worker);
}
}
system("cls");
break;
}
示例2:按职工号查询职工信息
在职工管理系统中选择5,进入查询职工信息操作。在查询职工信息操作中,输入职工号后,调用了WorkerArray类中的print函数,从职工数组中查找职工信息并展示。
case 5: // 搜索职工信息
{
cout << "请输入搜索方式:" << endl;
cout << "1 -- 按职工号搜索" << endl;
cout << "2 -- 按姓名搜索" << endl;
cout << "3 -- 按性别搜索" << endl;
int select = 0;
cin >> select;
if (select == SEARCH_BY_ID)
{
int id;
cout << "请输入职工号:" << endl;
cin >> id;
int index = arr.getIndexById(id);
if (index == -1)
{
cout << "查无此人!" << endl;
}
else
{
arr.p_DataArr[index].showInfo();
}
}
system("cls");
break;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于C++泛型编程职工管理系统 - Python技术站