实现公司管理系统【C++实战】(53)
生活随笔
收集整理的這篇文章主要介紹了
实现公司管理系统【C++实战】(53)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 需求分析
- 類架構設計
- 基類詳細設計
- 子類詳細設計
- 技術要點
- 代碼實現
- employee類
- employee.h
- employee.cpp
- manager類
- manager.h
- manager.cpp
- salemanager類
- salemanager.h
- salemanager.cpp
- salesman類
- salesman.h
- salesman.cpp
- technician類
- technician.h
- technician.cpp
- main.cpp
- 測試結果
需求分析
某小型公司,主要有四類人員:
經理、技術人員、推銷員和銷售經理。
現在需要存儲這些人員的姓名、編號、級別、當月薪水.計算月薪總額并顯示全部信息。
人員編號基數為 1000,每輸入一個人員信息編號順序加 1。
程序要有對所有人員提升級別的功能。本例中為簡單起見,所有人員的初始級別均為 1級。然后進行升級,經理升為 4 級,技術人員和銷售經理升為 3 級,推銷員仍為 1 級。
月薪計算辦法是: 經理拿固定月薪 8000 元;技術人員按每小時 100 元領取月薪; 推銷員的月薪按該推銷員當月銷售額的 4%提成;銷售經理既拿固定月薪也領取銷售提成,固定月薪為 5000 元,銷售提成為所管轄部門當月銷售總額的 5%。
類架構設計
基類詳細設計
子類詳細設計
技術要點
?繼承
?虛繼承
?虛函數
?純虛函數
?多態
?靜態數據成員
?二段式初始化
?虛析構
代碼實現
employee類
employee.h
#pragma once #include <iostream> using namespace std;class employee //基類 { public:employee(); virtual ~employee() {}virtual void init() = 0; //二段式初始化virtual void calSalary() = 0; //計算工資總額virtual void disinfor() = 0; //顯示全部信息virtual void promote() = 0; //升職protected:string _name; //姓名int _num; //編號int _level; //級別double _salary; //薪水static int _StartNumber;//起始編號 };employee.cpp
#include "employee.h"int employee::_StartNumber = 1000;employee::employee() { }manager類
manager.h
#pragma once #include "employee.h" class manager :virtual public employee { public:manager();virtual ~manager() {}virtual void init();virtual void calSalary(); //計算工資總額virtual void disinfor(); //顯示全部信息virtual void promote(); //升職protected:double _FixedSalary;};manager.cpp
#include "manager.h"manager::manager() {}void manager::init() {_FixedSalary = 8000;_num = _StartNumber++;_level = 1;cout << "請輸入經理的姓名:" << endl;cin >> _name; }void manager::calSalary() //計算工資總額 {_salary = _FixedSalary; }void manager::disinfor() //顯示全部信息 {cout << "====================================" << endl;cout << "經理名字: " << _name << endl;cout << "經理工號: " << _num << endl;cout << "經理級別: " << _level << endl;cout << "本月合計工資 : " << _salary << endl;cout << "====================================" << endl; }void manager::promote() //升職 {_level += 4; }salemanager類
salemanager.h
#pragma once #include "manager.h" #include "salesman.h" class salemanager :virtual public manager, virtual public salesman { public:salemanager();virtual ~salemanager() {}virtual void init();virtual void calSalary(); //計算工資總額virtual void disinfor(); //顯示全部信息virtual void promote(); //升職 };salemanager.cpp
#include "salemanager.h"salemanager::salemanager() { }void salemanager::init() {_FixedSalary = 5000;_num = _StartNumber++;_level = 1;_rate = 0.05;cout << "請輸入銷售經理的姓名:" << endl;cin >> _name;cout << "輸入本月銷售額: " << endl;cin >> saleAmount; }void salemanager::calSalary() //計算工資總額 {_salary = _FixedSalary + saleAmount * _rate; } void salemanager::disinfor() //顯示全部信息 {cout << "====================================" << endl;cout << "銷售經理名字: " << _name << endl;cout << "銷售經理工號: " << _num << endl;cout << "銷售經理級別: " << _level << endl;cout << "本月銷售額度 : " << saleAmount << endl;cout << "本月提成比率 : " << _rate << endl;cout << "本月固定工資 : " << _FixedSalary << endl;cout << "本月提成工資 : " << saleAmount * _rate << endl;cout << "本月合計工資 : " << _salary << endl;cout << "====================================" << endl; } void salemanager::promote() //升職 {_level += 3; }salesman類
salesman.h
#pragma once #include "employee.h"class salesman :virtual public employee { public:salesman();virtual ~salesman() {}virtual void init();virtual void calSalary(); //計算工資總額virtual void disinfor(); //顯示全部信息virtual void promote(); //升職protected:double saleAmount;double _rate; };salesman.cpp
#include "salesman.h"salesman::salesman() { }void salesman::init() {_rate = 0.04;_num = _StartNumber++;_level = 1;cout << "請輸入銷售員的姓名:" << endl;cin >> _name;cout << "輸入本月銷售額: " << endl;cin >> saleAmount; }void salesman::calSalary() //計算工資總額 {_salary = saleAmount * _rate; }void salesman::disinfor() //顯示全部信息{cout << "====================================" << endl;cout << "銷售員名字: " << _name << endl;cout << "銷售員工號: " << _num << endl;cout << "銷售員級別: " << _level << endl;cout << "本月銷售額度 : " << saleAmount << endl;cout << "本月提成比率 : " << _rate << endl;cout << "本月合計工資 : " << _salary << endl;cout << "====================================" << endl;}void salesman::promote() //升職{_level += 2;}technician類
technician.h
#pragma once #include "employee.h" class technician :public employee { public:technician();virtual ~technician() {}virtual void init();virtual void calSalary();virtual void disinfor();virtual void promote();protected:int _moneyPerHour;int _amountHour; };technician.cpp
#include "technician.h" technician::technician() {}void technician::init() {_num = _StartNumber++;_level = 1;_moneyPerHour = 100;cout << "請輸入技術人員的姓名:" << endl;cin >> _name;cout << "請輸入本月工作的小時數:" << endl;cin >> _amountHour; }void technician::calSalary() {_salary = _amountHour * _moneyPerHour; }void technician::disinfor() {cout << "====================================" << endl;cout << "技術員名字: " << _name << endl;cout << "技術員工號: " << _num << endl;cout << "技術員級別: " << _level << endl;cout <<"本月工作小時數: " << _amountHour << endl;cout <<"每個工作時工資: " << _moneyPerHour << endl;cout <<"本月合計工資 : " << _salary << endl;cout << "====================================" << endl; }void technician::promote() {_level += 3; }main.cpp
#include <iostream> #include "technician.h" #include "manager.h" #include "salesman.h" #include "salemanager.h" using namespace std;int main() {technician tech;tech.init();tech.promote();tech.calSalary();tech.disinfor();manager man;man.init();man.promote();man.calSalary();man.disinfor();salesman sman;sman.init();sman.promote();sman.promote();sman.disinfor();salemanager sm;sm.init();sm.promote();sm.calSalary();sm.disinfor();return 0; }測試結果
運行結果為:
總結
以上是生活随笔為你收集整理的实现公司管理系统【C++实战】(53)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是STL
- 下一篇: 朴素的串模式匹配(C语言实现)【串模式匹