C++实现员工工资管理系统【面向对象 文件读写】

C/C++实现员工工资管理系统【面向对象 文件读写】

课程学期作业,c/c++分别实现员工工资管理系统,c++包含面向对象操作以及文件读写,有详细的word文档描述,代码、测试数据以及运行截图。适合刚接触过c/c++面向对象的大一大二学生。

博主大一时分别用c和c++以面向过程和面向对象的方式实现了员工工资管理系统,二者的功能需求差不多,主要是实现方式不同,这里是c++介绍,文末附上了c++实现的打包文件。

1.系统功能需求描述

C++实现员工工资管理系统【面向对象 文件读写】_第1张图片C++实现员工工资管理系统【面向对象 文件读写】_第2张图片C++实现员工工资管理系统【面向对象 文件读写】_第3张图片C++实现员工工资管理系统【面向对象 文件读写】_第4张图片C++实现员工工资管理系统【面向对象 文件读写】_第5张图片C++实现员工工资管理系统【面向对象 文件读写】_第6张图片

2.系统设计

2.1 系统数据分析

该软件用于管理某公司的销售员、技术员、经理和销售经理4类人员信息,人员信息包括:工号、姓名、性别、入职日期(计算工龄)、岗位、部门、当月工资等,各数据项含义如下:

  •  工号:表示员工的工号,需要能区分4类不同的人员。
  •  姓名:表示员工的姓名。
  •  性别:表示员工的性别。
  • 入职日期:表示员工的入职日期,包括年、月、日3个数据分量,是一个类,用于计算工龄。
  •  岗位:表示员工所负责的岗位,枚举型。
  •  部门编号:表示员工所属的部门。
  •  底薪:表示员工每月的固定底薪,只有经理和销售经理有该项。
  •  工时:表示技术员每月的工作时长。
  •  每小时工资:表示技术员工作一小时的报酬。
  •  销售额:表示销售员的销售额,或销售经理所辖部门的销售总额。
  •  当月工资:表示员工的月工资。

2.2 系统功能模块设计

“员工工资管理”系统模块结构图:
C++实现员工工资管理系统【面向对象 文件读写】_第7张图片

2.3 类的抽象与类间关系

C++实现员工工资管理系统【面向对象 文件读写】_第8张图片

3.类代码的设计

日期类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);	//设置部门销售经理空与否
};

4.系统实现

4.1 程序文件模块

“员工工资管理”系统的程序文件模块的划分。
 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类的相关功能。

4.2 系统运行界面

主控模块运行界面
C++实现员工工资管理系统【面向对象 文件读写】_第9张图片
部门管理模块运行界面
C++实现员工工资管理系统【面向对象 文件读写】_第10张图片
基本资料数据维护运行界面
C++实现员工工资管理系统【面向对象 文件读写】_第11张图片
基本工资数据运行界面
C++实现员工工资管理系统【面向对象 文件读写】_第12张图片
查询数据运行界面
C++实现员工工资管理系统【面向对象 文件读写】_第13张图片
分页显示运行界面
C++实现员工工资管理系统【面向对象 文件读写】_第14张图片
排序模块运行界面:
C++实现员工工资管理系统【面向对象 文件读写】_第15张图片
统计模块运行界面
C++实现员工工资管理系统【面向对象 文件读写】_第16张图片

测试数据和代码以及详细的报告说明已经打包好了
链接
急得话私信我邮箱,可以的话点个赞。谢谢
C++实现员工工资管理系统【面向对象 文件读写】_第17张图片

你可能感兴趣的:(学期管理系统,员工工资管理系统)