C++實現員工工資管理系統【面向對象 文件讀寫】

C/C++實現員工工資管理系統【面向對象 文件讀寫】

課程學期作業,c/c++分別實現員工工資管理系統,c++包含面向對象操作以及文件讀寫,有詳細的word文檔描述,代碼、測試數據以及運行截圖。適合剛接觸過c/c++面向對象的大一大二學生。

博主大一時分別用c和c++以面向過程和麪向對象的方式實現了員工工資管理系統,二者的功能需求差不多,主要是實現方式不同,這裏是c++介紹,文末附上了c++實現的打包文件。

1.系統功能需求描述

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

2.系統設計

2.1 系統數據分析

該軟件用於管理某公司的銷售員、技術員、經理和銷售經理4類人員信息,人員信息包括:工號、姓名、性別、入職日期(計算工齡)、崗位、部門、當月工資等,各數據項含義如下:

  •  工號:表示員工的工號,需要能區分4類不同的人員。
  •  姓名:表示員工的姓名。
  •  性別:表示員工的性別。
  • 入職日期:表示員工的入職日期,包括年、月、日3個數據分量,是一個類,用於計算工齡。
  •  崗位:表示員工所負責的崗位,枚舉型。
  •  部門編號:表示員工所屬的部門。
  •  底薪:表示員工每月的固定底薪,只有經理和銷售經理有該項。
  •  工時:表示技術員每月的工作時長。
  •  每小時工資:表示技術員工作一小時的報酬。
  •  銷售額:表示銷售員的銷售額,或銷售經理所轄部門的銷售總額。
  •  當月工資:表示員工的月工資。

2.2 系統功能模塊設計

“員工工資管理”系統模塊結構圖:
在這裏插入圖片描述

2.3 類的抽象與類間關係

在這裏插入圖片描述

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 系統運行界面

主控模塊運行界面
在這裏插入圖片描述
部門管理模塊運行界面
在這裏插入圖片描述
基本資料數據維護運行界面
在這裏插入圖片描述
基本工資數據運行界面
在這裏插入圖片描述
查詢數據運行界面
在這裏插入圖片描述
分頁顯示運行界面
在這裏插入圖片描述
排序模塊運行界面:
在這裏插入圖片描述
統計模塊運行界面
在這裏插入圖片描述

測試數據和代碼以及詳細的報告說明已經打包好了
鏈接稍後附上
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章