根据以下要求用C++编写代码,企业工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、增加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,快速打印出工资报表,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能: (1)对单位人员的变动进行处理。一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。 (2)对职工的工资进行计算、修改。可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算应发金额、应扣金额及实发金额等。  (3)查询统计功能。要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某部门工资数在某一范围的职工的工资情况等。 (4)报表打印功能。每月发放工资时,要求能够打印本月的工资表、随工资发给每个职工的工资条以及工资统计表。

时间: 2024-02-23 15:57:18 浏览: 21
以下是一个简单的企业工资管理系统的 C++ 代码示例,包括人员变动处理、工资计算、修改、查询统计和报表打印等功能。代码中使用了结构体来存储职工信息,使用文件来实现数据的存储和读取。 ```c++ #include <iostream> #include <string> #include <fstream> using namespace std; struct Employee{ string name; // 姓名 string id; // 工号 string dep; // 部门 double base_salary; // 基本工资 double bonus; // 奖金 double allowance; // 津贴 double tax; // 税金 double salary; // 实发工资 }; // 添加新员工 void add_employee(){ Employee new_emp; cout << "请输入新员工的姓名、工号、部门、基本工资、奖金和津贴:" << endl; cin >> new_emp.name >> new_emp.id >> new_emp.dep >> new_emp.base_salary >> new_emp.bonus >> new_emp.allowance; new_emp.tax = (new_emp.base_salary + new_emp.bonus + new_emp.allowance) * 0.1; new_emp.salary = new_emp.base_salary + new_emp.bonus + new_emp.allowance - new_emp.tax; ofstream outfile("employees.dat", ios::app | ios::binary); outfile.write((char*)&new_emp, sizeof(new_emp)); outfile.close(); cout << "新员工添加成功!" << endl; } // 删除员工 void delete_employee(){ string id; cout << "请输入要删除的员工工号:" << endl; cin >> id; ifstream infile("employees.dat", ios::binary); ofstream outfile("temp.dat", ios::binary); Employee emp; bool found = false; while (infile.read((char*)&emp, sizeof(emp))){ if (emp.id != id){ // 将非删除员工写入临时文件 outfile.write((char*)&emp, sizeof(emp)); } else { found = true; } } infile.close(); outfile.close(); remove("employees.dat"); // 删除原文件 rename("temp.dat", "employees.dat"); // 重命名临时文件 if (found){ cout << "员工删除成功!" << endl; } else { cout << "未找到该员工,请检查输入工号是否正确。" << endl; } } // 修改员工信息 void modify_employee(){ string id; cout << "请输入要修改的员工工号:" << endl; cin >> id; fstream file("employees.dat", ios::in | ios::out | ios::binary); Employee emp; bool found = false; while (file.read((char*)&emp, sizeof(emp)) && !found){ if (emp.id == id){ found = true; cout << "请输入修改后的员工姓名、工号、部门、基本工资、奖金和津贴:" << endl; cin >> emp.name >> emp.id >> emp.dep >> emp.base_salary >> emp.bonus >> emp.allowance; emp.tax = (emp.base_salary + emp.bonus + emp.allowance) * 0.1; emp.salary = emp.base_salary + emp.bonus + emp.allowance - emp.tax; file.seekp(-sizeof(emp), ios::cur); // 移动文件指针到当前记录的开始位置 file.write((char*)&emp, sizeof(emp)); // 写入修改后的记录 cout << "员工信息修改成功!" << endl; } } file.close(); if (!found){ cout << "未找到该员工,请检查输入工号是否正确。" << endl; } } // 统计部门工资总额 void total_salary(){ string dep; double total = 0; cout << "请输入要统计工资总额的部门名称:" << endl; cin >> dep; ifstream infile("employees.dat", ios::binary); Employee emp; while (infile.read((char*)&emp, sizeof(emp))){ if (emp.dep == dep){ total += emp.salary; } } infile.close(); cout << dep << "部门本月工资总额为:" << total << "元。" << endl; } // 打印工资表 void print_salary_table(){ string date; cout << "请输入工资表的日期(如2022年1月):" << endl; cin >> date; ofstream outfile("salary_table.txt"); outfile << "工资表 " << date << endl; outfile << "-------------------------------------------------------------------------------------" << endl; outfile << "姓名\t工号\t部门\t基本工资\t奖金\t津贴\t税金\t实发工资" << endl; ifstream infile("employees.dat", ios::binary); Employee emp; while (infile.read((char*)&emp, sizeof(emp))){ outfile << emp.name << "\t" << emp.id << "\t" << emp.dep << "\t" << emp.base_salary << "\t" << emp.bonus << "\t" << emp.allowance << "\t" << emp.tax << "\t" << emp.salary << endl; } infile.close(); outfile.close(); cout << "工资表已成功打印到 salary_table.txt 文件中。" << endl; } int main(){ int choice; while (true){ cout << "请选择要执行的操作:" << endl; cout << "1. 添加新员工" << endl; cout << "2. 删除员工" << endl; cout << "3. 修改员工信息" << endl; cout << "4. 统计部门工资总额" << endl; cout << "5. 打印工资表" << endl; cout << "0. 退出" << endl; cin >> choice; switch (choice){ case 1: add_employee(); break; case 2: delete_employee(); break; case 3: modify_employee(); break; case 4: total_salary(); break; case 5: print_salary_table(); break; case 0: return 0; default: cout << "无效的选择,请重新输入。" << endl; } } } ```

相关推荐

最新推荐

recommend-type

汽车租赁信息管理系统源代码 c++.docx

一、为了方便公司管理各种型号的车辆,并实现以下功能: (1)对车辆进行租赁:先输入车牌号,然后输入车辆类别、品牌型号,并在库存中查找该车辆的相关信息,并进行租车。 (2)添加新的车辆信息:主要完成车辆信息...
recommend-type

学籍管理系统源代码 c++.docx

为了学校更加高效,快捷,方便的管理学生信息,并实现以下功能: (1)对学生信息进行录入:先输入学生的学籍,然后输入学生姓名,年龄,性别,籍贯,系别,专业,班级等,最后输入学生状态(入学)。 (2)对已录取...
recommend-type

C++ 学生成绩管理系统设计报告书

个人课程设计报告书(内含源码) ...可以对已有的学生信息进行修改。 (5)学生基本信息的删除。 (6)对该班各科成绩进行分析;对学生成绩进行统计(包括最高分,最低分,排序,平均成绩,及格率和需要补考的学生)
recommend-type

C++实现病人就医管理系统

主要为大家详细介绍了C++语言实现病人就医管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C++学校人员信息管理系统课程设计.doc

一个用C++写的学校人员管理系统,适合大一大二的课程设计,里面运用到了链表、文件读写等一些C++基本语法操作
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】增量式PID的simulink仿真实现

# 2.1 Simulink仿真环境简介 Simulink是MATLAB中用于建模、仿真和分析动态系统的图形化环境。它提供了一个直观的用户界面,允许用户使用块和连接线来创建系统模型。Simulink模型由以下元素组成: - **子系统:**将复杂系统分解成更小的、可管理的模块。 - **块:**代表系统中的组件,如传感器、执行器和控制器。 - **连接线:**表示信号在块之间的流动。 Simulink仿真环境提供了广泛的块库,涵盖了各种工程学科,包括控制系统、电子和机械工程。它还支持用户自定义块的创建,以满足特定仿真需求。 # 2. Simulink仿真环境的搭建和建模 ### 2.
recommend-type

训练集和测试集的准确率都99%,但是预测效果不好

即使训练集和测试集的准确率都很高,但是在实际的预测中表现不佳,可能会有以下几个原因: 1. 数据质量问题:模型训练和测试的数据可能存在问题,比如数据标签错误、数据集采样不均衡、数据集中存在异常值等问题,这些问题可能会导致模型在实际预测中表现不佳。 2. 特征工程问题:模型的特征工程可能存在问题,导致模型无法很好地捕捉数据的特征,从而影响预测效果。 3. 模型选择问题:模型的选择可能不合适,比如选择的模型太简单,无法很好地拟合数据,或者选择的模型太复杂,导致过拟合等问题。 4. 超参数调整问题:模型的超参数可能没有调整到最佳状态,需要进行调整。 针对以上可能的原因,可以采取相应的措施进
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。