实现公司员工的管理,设计employee类,包含员工基本信息:编号,姓名,性命,出生日期和职务等。出生日期使用自定义的date类,employee类有可能从外部访问类成员的友元函数,程序基本功能有:1职工信息的录入,2职工信息的显示3.用对象数组保存已输入的职工对象4.可以修改人员的基本信息5.可以通过编号或姓名进行人员查询2.
时间: 2023-06-23 08:08:46 浏览: 156
好的,我可以为您提供一个简单的employee类的实现,包含员工基本信息的编号、姓名、性别、出生日期和职务,以及相应的成员函数和友元函数。
```cpp
#include <iostream>
#include <string>
using namespace std;
class Date {
private:
int year, month, day;
public:
Date(int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d) {}
friend ostream& operator<<(ostream& os, const Date& date);
};
ostream& operator<<(ostream& os, const Date& date) {
os << date.year << "-" << date.month << "-" << date.day;
return os;
}
class Employee {
private:
int id;
string name;
char gender;
Date birthday;
string position;
public:
Employee(int i = 0, const string& n = "", char g = 'M', const Date& b = Date(), const string& p = "") :
id(i), name(n), gender(g), birthday(b), position(p) {}
friend ostream& operator<<(ostream& os, const Employee& employee);
friend istream& operator>>(istream& is, Employee& employee);
void modify();
bool match(const string& keyword) const;
};
ostream& operator<<(ostream& os, const Employee& employee) {
os << employee.id << "\t" << employee.name << "\t" << employee.gender << "\t" << employee.birthday << "\t" << employee.position;
return os;
}
istream& operator>>(istream& is, Employee& employee) {
is >> employee.id >> employee.name >> employee.gender >> employee.birthday.year >> employee.birthday.month >> employee.birthday.day >> employee.position;
return is;
}
void Employee::modify() {
cout << "Please input the new information: " << endl;
cout << "Name: ";
cin >> name;
cout << "Gender (M/F): ";
cin >> gender;
cout << "Birthday (yyyy-mm-dd): ";
cin >> birthday;
cout << "Position: ";
cin >> position;
}
bool Employee::match(const string& keyword) const {
return name.find(keyword) != string::npos || position.find(keyword) != string::npos;
}
int main() {
const int MAX_EMPLOYEES = 100;
Employee employees[MAX_EMPLOYEES];
int count = 0;
while (true) {
cout << "Please choose an operation:" << endl;
cout << "1. Add an employee" << endl;
cout << "2. Display all employees" << endl;
cout << "3. Modify an employee's information" << endl;
cout << "4. Search employees by name or position" << endl;
cout << "0. Exit" << endl;
int choice;
cin >> choice;
switch (choice) {
case 0:
cout << "Goodbye!" << endl;
return 0;
case 1:
if (count == MAX_EMPLOYEES) {
cout << "The maximum number of employees has been reached." << endl;
} else {
cout << "Please input the information of the new employee: " << endl;
cin >> employees[count];
count++;
}
break;
case 2:
if (count == 0) {
cout << "No employee information found." << endl;
} else {
cout << "ID\tName\tGender\tBirthday\tPosition" << endl;
for (int i = 0; i < count; i++) {
cout << employees[i] << endl;
}
}
break;
case 3:
if (count == 0) {
cout << "No employee information found." << endl;
} else {
cout << "Please input the ID of the employee to modify: ";
int id;
cin >> id;
bool found = false;
for (int i = 0; i < count; i++) {
if (employees[i].id == id) {
employees[i].modify();
found = true;
break;
}
}
if (!found) {
cout << "No employee with ID " << id << " found." << endl;
}
}
break;
case 4:
if (count == 0) {
cout << "No employee information found." << endl;
} else {
cout << "Please input the keyword to search: ";
string keyword;
cin >> keyword;
bool found = false;
cout << "ID\tName\tGender\tBirthday\tPosition" << endl;
for (int i = 0; i < count; i++) {
if (employees[i].match(keyword)) {
cout << employees[i] << endl;
found = true;
}
}
if (!found) {
cout << "No employee matching \"" << keyword << "\" found." << endl;
}
}
break;
default:
cout << "Invalid choice." << endl;
break;
}
}
return 0;
}
```
以上是一个简单的员工管理程序,可以实现基本的员工信息的录入、显示、修改和查询。您可以根据需要进行修改和扩展。
阅读全文