-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathWaiter.cpp
79 lines (69 loc) · 2.11 KB
/
Waiter.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "Waiter.h"
#include "FoodMenu.h"
#include "Person.h"
#include <string>
using std::string;
double CWaiter::m_dAllSalary = 0;
unsigned short CWaiter::m_unWaiterCount=0;
CWaiter::CWaiter(const unsigned short &unNumber,
const double &dSalary,
const string & strName/* ="" */,
const string & strSex/* ="" */,
const double & dAchievement/* =0 */)
:m_unNumber(unNumber),CPerson(strName,strSex){
this->m_dSalary = dSalary;
this->m_dAchievement = 0;
this->pNextWaiter = NULL;
CWaiter::m_dAllSalary += dSalary;
this->m_unWaiterCount++;
}
unsigned short CWaiter::GetNumber()const{
return this->m_unNumber;
}
double CWaiter::GetAchievement()const{
return this->m_dAchievement;
}
double CWaiter::GetSalary()const{
return this->m_dSalary;
}
bool CWaiter::AddBoardMenuItem(CBoard *pBoard,
CFoodMenu *pFood,
const unsigned &uShare){
register CBoardMenu * current,**ppBoardMenu=&pBoard->m_pBoardMenu;
while((current = *ppBoardMenu)!=NULL){
ppBoardMenu = ¤t->m_pNextBoardFood;
}
CBoardMenu * pNewFood = new CBoardMenu;
if(NULL == pNewFood)
return false;
pNewFood->m_Food.m_uFoodType = pFood->m_Food.m_uFoodType;
pNewFood->m_Food.m_strFoodName = pFood->m_Food.m_strFoodName;
pNewFood->m_Food.m_dPrice = pFood->m_Food.m_dPrice;
pNewFood->m_uShare = uShare;
pNewFood->m_dMoney = pNewFood->m_Food.m_dPrice * pNewFood->m_uShare;
pNewFood->m_NextFood=NULL;
pNewFood->m_unWaiterNumber = this->GetNumber();
pNewFood->m_pNextBoardFood = current;
*ppBoardMenu = pNewFood;
//Ôö¼Ó·þÎñÔ±Òµ¼¨
this->m_dAchievement += pNewFood->m_dMoney ;
pBoard->AddConsume(pNewFood->m_dMoney);
return true;
}
bool CWaiter::DelBoardMenuItem(CBoard * pBoard){
register CBoardMenu * current = pBoard->m_pBoardMenu,*p=NULL;
if(NULL == current)
return false;
p = current;
while(current->m_pNextBoardFood !=NULL){
p = current;
current = current->m_pNextBoardFood;
}
p->m_pNextBoardFood = NULL;
if(p == current){
pBoard->m_pBoardMenu = NULL;
}
pBoard->RedConsume(current->m_dMoney);
delete current;
return true;
}