
 { return worker.id == id; }),
workers.end());
}
void modifyWorkerById(int id, const Worker& updatedWorker) {
for (auto& worker : workers) {
if (worker.id == id) {
worker = updatedWorker;
break;
}
}
}
double calculateAverageSalary(const std::string& department) const {
double sum = 0;
int count = 0;
for (const auto& worker : workers) {
if (worker.department == department) {
sum += worker.total_salary;
count++;
}
}
return count > 0 ? sum / count : 0;
}
double calculatePercentageOfTitle(const std::string& title) const {
return static_cast<double>(titleCount[title]) / workers.size();
}
void displayWorkerTable() const {
std::cout << std::setw(10) << "ID" << std::setw(15) << "Name"
<< std::setw(15) << "Department" << std::setw(15) << "Title"
<< std::setw(15) << "Basic Salary" << std::setw(15) << "Overtime Salary"
<< std::setw(15) << "Bonus" << std::setw(15) << "Total Salary\n";
for (const auto& worker : workers) {
std::cout << std::setw(10) << worker.id << std::setw(15) << worker.name
<< std::setw(15) << worker.department << std::setw(15) << worker.title
<< std::setw(15) << worker.basic_salary << std::setw(15)
<< worker.overtime_salary << std::setw(15) << worker.bonus
<< std::setw(15) << worker.total_salary << '\n';
}
}
private:
void incrementTitleCount(const std::string& title) {
titleCount[title]++;
}
};
int main() {
WorkerDatabase db;
// 添加职工记录
db.addWorker(Worker(1, "Alice", "IT", "Engineer", 5000, 1000, 500));
db.addWorker(Worker(2, "Bob", "HR", "Manager", 8000, 1500, 1000));
// 查询职工
try {
Worker alice = db.findWorkerById(1);
std::cout << "Found Alice: " << alice.name << ", Total Salary: "
<< alice.total_salary << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
// 排序职工
db.sortWorkersByTotalSalary();
db.displayWorkerTable();
return 0;
}
这段代码定义了一个Worker类用于表示职工信息,以及一个WorkerDatabase类来管理职工数据库。我已实现了一些基础功能,如添加职工、查找职工、排序职工、计算平均工资等。你可以在此基础上继续开发其他功能,例如部门职工分析和输出职工信息表。
如果你在实现过程中遇到任何具体问题,比如如何读取和写入文件、如何处理用户输入、如何优化排序算法等,都可以随时向我提问。记住,编程是一个渐进的过程,多实践、多查阅资料,你会逐渐熟练起来的。祝你好运!