职工信息管理系统
一、实验内容
 设计一个职工信息管理案例,实现不同类别职工的工资数据。职工的种类包括:正式职工和临时工。定义一个基本的职工类,基本信息包括:编号、姓名、性别、年龄、家庭住址、基本职务工资。派生出正式职工类,增加的属性包括:岗位津贴、养老金、住房公积金、所得税、医疗保险、实发工资;临时工增加的属性包括:奖金、所得税、实发工资。
- 正式职工:实发工资=基本职务工资 + 岗位津贴-养老金-住房公积金-所得税-医疗保险-所得税;
 - 临时工:实发工资=基本职务工资 + 奖金-所得税;
 
基本功能与技术要求
数据文件管理功能:创建新文件、打开文件、保存文件。
计算与统计功能:完成记录中相关数据的统计;
- 能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:工资总额、平均值)
 - 计算每个职工的实发工资,排序输出。
 
记录管理功能:记录的管理采用链表或者指针数组实现。
- 输入/添加/插入记录,并保存到数据文件中。
 - 查询、显示记录,根据用户要求按所给编号、姓名、工资等记录关键字排序,查询一个或多个相关联记录的各项信息。
 - 修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。
 - 删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。
 
二、代码说明
2.1 类与函数功能
main:
 主要实现功能选择,运用 flag 变量,用户输入,进入 swith 选择对应功能,在程序的开始和结束及时读取和写入文件,及时更新用户信息。
print:
 主要负责打印出不同功能下所要对应的界面,有以下函数:
打印选择功能界面:
void printFunction();
 
打印功能一对应界面:
void printFunction1();
 
打印功能一用户选择的数据:
void printFunction1(listpoint1 *head, int i);void printFunction1(listpoint2 *head, int i);
 
打印功能二对应界面:
void printFunction2(listpoint1 *head1, listpoint2 *head2);
 
打印功能三对应界面:
void printFunction3();
 
打印功能四选择界面,以及需要操作的员工类型界面:
void printFunction4(string s);
 
打印功能四选择查询方式界面:
void printFunction4();
 
打印功能五选择更改信息界面:
void printFunction5(listpoint1 *head);void printFunction5(listpoint2 *head);
 
打印功能六选择删除方式界面:
void printFunction6();
 
function:
 主要负责对员工进行操作的一些函数,其中的函数有以下几个:
建立正式员工对应链表:
typedef struct listpoint1 {
    fullTimeEmployee *e;
    bool fireEmployee = false;
    struct listpoint1 *next;
    struct listpoint1 *last;
} listpoint1;
 
建立临时员工对应链表:
typedef struct listpoint2 {
    temporaryEmployee *e;
    bool fireEmployee = false;
    struct listpoint2 *next;
    struct listpoint2 *last;
} listpoint2;
 
增加正式员工和临时员工:
void addEmployee(listpoint1 *head);void addEmployee(listpoint2 *head);
 
写入文件:
void writeCsv(fullTimeEmployee e);void writeCsv(temporaryEmployee e);
 
读取 CSV 文件:
void readCsv(listpoint1 *temp);void readCsv(listpoint2 *temp);
 
对员工进行排序:
void update(listpoint1 *temp);void update(listpoint2 *temp);
 
输出员工总工资:
void printWages(listpoint1 *temp, int i);void printWages(listpoint2 *temp, int i);
 
打印单个员工工资:
void printEmployee(listpoint1 *temp);void printEmployee(listpoint2 *temp);
 
打印即将被操作的员工全部信息:
void print(listpoint1 *flag);
void print(listpoint2 *flag);
打印全部员工信息:
void printEmployees(listpoint1 *head);
void printEmployees(listpoint2 *head);
 
按不同方式查找员工:
listpoint1* findEmplpoyee(listpoint1 *head, int i);listpoint2* findEmplpoyee(listpoint2 *head, int i);
 
打印全部查询到的正式员工或临时员工:
void printEmplpoyee(int i, int j, listpoint1 *head1, listpoint2 *head2);
 
更改员工信息:
void changeEmplpoyee(int i,listpoint1 *head1,listpoint2 *head2);
 
删除员工:
void deleteEmplpoyee(int i, int j, listpoint1 *head1, listpoint2 *head2);
 
保存员工信息:
void saveEmployee(listpoint1 *head);void saveEmployee(listpoint2 *head);employee:
 
主要员工类,包含了员工的一些基本信息,:
普通员工类:
class employee {
private:
    int num = 0;             //职工编号  
    string name = "";        //职工姓名  
    string gender = "";      //性别  
    int age = 0;             //年龄  
    string address = "";     //家庭住址  
    int wages = 0;           //基本职务工资
public:
    void setNum(int _num);
    void setName(string _name);
    void setGender(string _gender);
    void setAge(int _age);
    void setAddress(string _address);
    void setWages(int _wages);
    void set();
    int getNum();
    string getName();
    string getGender();
    int getAge();
    string getAddress();
    int getWages();
    employee();
};
 
派生出正式员工类:
class fullTimeEmployee : public employee {
private:
    int moreMoney1 = 0;  //岗位津贴  
    int moreMoney2 = 0;  //养老金  
    int moreMoney3 = 0;  //住房公积金  
    int moreMoney4 = 0;  //所得税  
    int moreMoney5 = 0;  //医疗保险  
    int sumMoney = 0;    //实发工资
public:
    void setMoney1(int _moreMoney1);
    void setMoney2(int _moreMoney2);
    void setMoney3(int _moreMoney3);
    void setMoney4(int _moreMoney4);
    void setMoney5(int _moreMoney5);
    void setSumMoney();
    void set();
    int getMoney1();
    int getMoney2();
    int getMoney3();
    int getMoney4();
    int getMoney5();
    int getSumMoney();
    fullTimeEmployee();
    fullTimeEmployee(int i);
};
 
派生出临时员工类:
class temporaryEmployee : public employee {
    int moreMoney1 = 0;   //奖金  
    int moreMonry2 = 0;   //所得税  
    int sumMoney = 0;     //实发工资
public:
    void setMoney1(int _moreMoney1);
    void setMoney2(int _moreMoney2);
    void setSumMoney();
    void set();
    int getMoney1();
    int getMoney2();
    int getSumMoney();
    temporaryEmployee();
    temporaryEmployee(int i);
};
 
2.2 运行截图
开始界面:

功能一功能选择界面:

功能一工资总额输出界面:

功能一平均工资输出界面:

功能二输出界面:

功能三选择截图:

增加正式员工:

增加临时员工:

功能四查询数据(例 按编号查询):


功能五修改数据:


功能六删除选择删除方式:

功能七显示所有员工:

♻️ 资源

大小: 2.36MB
 ➡️ 资源下载:https://download.csdn.net/download/s1t16/87249013



















