课程学期作业,c/c++分别实现员工工资管理系统,c++包含面向对象操作以及文件读写,有详细的word文档描述,代码、测试数据以及运行截图。适合刚接触过c/c++面向对象的大一大二学生。
博主大一时分别用c和c++以面向过程和面向对象的方式实现了员工工资管理系统,二者的功能需求差不多,主要是实现方式不同,这里是c++介绍,文末附上了c++实现的打包文件。
该软件用于管理某公司的销售员、技术员、经理和销售经理4类人员信息,人员信息包括:工号、姓名、性别、入职日期(计算工龄)、岗位、部门、当月工资等,各数据项含义如下:
日期类Date
class Date
{
private:
int year;
int month;
int day;
public:
int GetWorkAge();
int GetYear(); //获取入职的年
int GetMonth(); //获取入职的月
int GetDay(); //获取入职的日
void SetDate(int y, int m, int d); //设置年月日
Date(); //三个构造函数
Date(int y, int m, int d);
Date(const Date & another);
void operator=(const Date & another); //重载等号运算符
friend istream & operator>>(istream & in, Date another); //重载输入运算符
};
员工类Employee
class Employee
{
protected:
Date date; //入职日期
int ID; //工号
string name; //姓名
string gender; //性别
enum workpost job; //岗位
int section_ID; //部门编号
double salary; //当月工资
public:
static int EmpID; //静态成员变量记录ID的最大编号
Employee();
Employee(int id); //用工号来初始化临时对象
Employee(string n, string g, enum workpost j, int S_ID, int y, int m, int d); //增加一个员工
Employee(int id, string n, string g, enum workpost j, int S_ID, int y, int m, int d, double sal); //初始化一个员工
void ReviseData(string n, string g, enum workpost j, int S_ID, int y, int m, int d); //修改员工基本资料
void ShowBasicData(); //显示员工基本资料
void ShowData();
int GetSecID(); //获取员工部门编号
int GetID(); //获取员工工号
double GetSalary(); //获取员工工资
string GetName(); //获取员工姓名
string GetGender(); //获取员工性别
Date GetDate(); //获取入职日期
void SetID(int id); //重新更换岗位后设置id不变
void SetName(string na);
void SetGender(string ge);
void SetJob(enum workpost j);
void SetSectionID(int sec_id);
void SetDate(Date date);
bool operator==(const Employee& another); //用于比较工号是否相同的员工
virtual void CalculateSalary(); //计算当月工资
经理类Manager
class Manager :
virtual public Employee
{
protected:
double basic_salary; //底薪
public:
Manager(string n, string g, enum workpost j, int S_ID, int y, int m, int d);
Manager(int id, string n, string g, enum workpost j, int S_ID, int y, int m, int d, double BS, double sal);
void AddData(double b_s);
void ReviseData(double b_s);
void DeleteData();
void ShowData();
void SetBaseSalary(double BS);
double GetBaseSalary();
virtual void CalculateSalary(); //计算当月工资
};
技术员类Date
class Technician :
public Employee
{
private:
double work_hour; //工时
double payment_perhour; //每小时工资
public:
Technician(string n, string g, enum workpost j, int S_ID, int y, int m, int d);
Technician(int id, string n, string g, enum workpost j, int S_ID, int y, int m, int d, double WH, double PP, double sal);
void AddData(double w_h, double p_p);
void ReviseData(double w_h, double p_p);
void DeleteData();
void ShowData();
void SetHoursPay(double WH, double PP);
double GetWorkHour();
double GetPaymentPerhour();
virtual void CalculateSalary(); //计算当月工资
};
销售员类Salesman
class Salesman :
virtual public Employee
{
protected:
double sales;
public:
Salesman(string n, string g, enum workpost j, int S_ID, int y, int m, int d);
Salesman(int id, string n, string g, enum workpost j, int S_ID, int y, int m, int d, double sales, double sal);
void AddData(double sales);
void ReviseData(double sales);
void DeleteData();
void ShowData();
void SetSales(double sales);
double GetSales();
virtual void CalculateSalary(); //计算当月工资
};
销售经理类Salesmanager
class SalesManager :
public Salesman, public Manager
{
public:
SalesManager(string n, string g, enum workpost j, int S_ID, int y, int m, int d);
SalesManager(int id, string n, string g, enum workpost j, int S_ID, int y, int m, int d, double BS, double sales, double sal);
void AddData(double b_s);
void ReviseData(double b_s);
void DeleteData();
void ShowData();
virtual void CalculateSalary(); //计算当月工资
};
部门类Section
class Section
{
private:
int section_ID; //部门编号
string name; //部门名称
bool is_possession; //判断部门是否有销售经理
public:
static int current_num; //静态成员变量表示当前的最高的部门编号
Section();
Section(string name);
Section(int sec_id, string na, bool b);
Section(const Section & another);
void SetSecName(string na); //设置部门名称
int GetSecID(); //获得部门编号
string GetSecName(); //获得部门名称
bool IsPossession(); //判断部门有无销售经理
void IsPossession(bool b); //设置部门销售经理空与否
};
“员工工资管理”系统的程序文件模块的划分。
MyClass.h: 实体类定义文件,定义Date、Employee、Technician、Salesman、Manager、Salesmanager、Section七个类的结构。
MyClass.cpp: 实体类实现文件,定义Date、Employee、Technician、Salesman、Manager、Salesmanager、Section七个类的成员函数。
Interface.h: 界面类定义文件,定义interface类的结构。
Interface.cpp: 界面类实现文件,定义interface类的成员函数。
main.cpp: 主控模块,程序入口,用于调用interface类的相关功能。
主控模块运行界面
部门管理模块运行界面
基本资料数据维护运行界面
基本工资数据运行界面
查询数据运行界面
分页显示运行界面
排序模块运行界面:
统计模块运行界面