模擬肯德基快餐店的收銀系統-模擬打印小票的功能
2023-09-02 10:02:51
歡樂點
一、題目名稱:模擬麥當勞收銀系統
二、題目內容:
朋友們應當都去肯德基或麥當勞吃過快餐吧?請朋友們參考麥當勞官網的信息模擬麥當勞快餐店的收銀系統,合理使用C++或Java或結合設計模式(2種以上)起碼實現系統的以下功能:
1.正常餐品結算和找零。
2.基本套餐結算和找零。
3.使用讓利劵訂購餐品結算和找零。
4.可在一定時間段參與店內活動(自行設計或參考官網信息)。
5.模擬復印小票的功能(講到文件中)。
基本要求:
1.程序設計風格良好,控制臺界面友好,最多四人一組完成任務。
2.實現功能測試代碼,確保程序的強壯性。
3.畫出使用的設計模式圖。
增強要求:
1.實現可視化界面(使用MFC)。
2.實現會員儲值卡功能,完成儲值卡消費。
實現當日營業額和餐品銷量估算和統計,用數據庫記錄。
三、算法設計:
四、代碼
1.點餐系統代碼
#include
#include
#include
using namespace std;
class Food
{
protected:
string name;
double price;
int num;
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
virtual void set_name(string name)
{
this->name = name;
}
virtual string get_name()
{
return name;
}
virtual void set_price(double price)
{
this->price = price;
}
virtual double get_price()
{
return price;
}
virtual void set_num(int num)
{
this->num = num;
}
virtual int get_num()
{
return num;
}
};
class Hamburger :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Snack :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Drink :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Set :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Factory
{
public:
virtual Food* food() = 0;
};
class Factory_Hamburger :public Factory
{
public:
Food* food()
{
return new Hamburger;
}
};
class Factory_Snack :public Factory
{
public:
Food* food()
{
return new Snack;
}
};
class Factory_Drink :public Factory
{
public:
Food* food()
{
return new Drink;
}
};
class Factory_Set :public Factory
{
public:
Food* food()
{
return new Set;
}
};
class xiaopiao
{
public:
virtual void output() = 0;
} ;
class H1 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "巨無霸--" << num << "份" <<endl;
outfile << "巨無霸--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class H2 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "雙層吉士漢堡--" << num << "份" <<endl;
outfile << "雙層吉士漢堡--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class H3 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "麥辣雞腿漢堡--" << num << "份" <<endl;
outfile << "麥辣雞腿漢堡--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class S1 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "大薯條--" << num << "份" <<endl;
outfile << "大薯條--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class S2 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "麥樂雞--" << num << "份" <<endl;
outfile << "麥樂雞--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class D1 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "可口可樂--" << num << "份" <<endl;
outfile << "可口可樂--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class D2 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "七喜--" << num << "份" <<endl;
outfile << "七喜--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class D3 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "橙汁--" << num << "份" <<endl;
outfile << "橙汁--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class SET1 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "巨無霸超值套餐--" << num << "份" <<endl;
outfile << "巨無霸超值套餐--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class SET2 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "雙層吉士漢堡超值套餐--" << 1 << "份" <<endl;
outfile << "雙層吉士漢堡超值套餐--" << 1 << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
//運用策略模式簡化
class Context
{
public:
Context(xiaopiao *p) : pStrategy(p)
{
}
void Interface()
{
pStrategy->output();
}
private:
xiaopiao *pStrategy;
};
class collect
{
private:
public:
void main_menu()
{
cout << "---------------------" << endl;
cout << "歡迎進入肯德基點餐系統!" << endl;
cout << "---------------------" << endl;
cout << "請問你選擇單點(1)或者套餐(2):" << endl;
}
void single_menu()
{
cout << "---------------------" << endl;
cout << "請選擇您要點的產品: " << endl;
cout << "主食: " << endl;
cout << " 1.巨無霸 --17元 " << endl;
cout << " 2.雙層吉士漢堡--15元 " << endl;
cout << " 3.麥辣雞腿漢堡--15元 " << endl;
cout << "配餐: " << endl;
cout << " 4.大薯條 --11元 " << endl;
cout << " 5.麥樂雞 --9元 " << endl;
cout << "飲料: " << endl;
cout << " 6.可口可樂 --7元 " << endl;
cout << " 7.七喜 --7元 " << endl;
cout << " 8.橙汁 --10元 " << endl;
cout << "若點餐結束,請輸入0以結束點餐!" << endl;
}
void set_menu()
{
cout << "---------------------" << endl;
cout << "請選擇您要點的套餐: " << endl;
cout << " 1.巨無霸超值套餐 --25元" << endl;
cout << " (包含巨無霸一份、大薯條一份、可口可樂一份)" << endl;
cout << " 2.雙層吉士漢堡超值套餐 --23元" << endl;
cout << " (包含雙層吉士漢堡一份、大薯條一份、可口可樂一份)" << endl;
cout << "若點餐結束,請輸入0以結束點餐!" << endl;
}
void menu()
{
main_menu();
int choose;
int hamburger[3], snack[2], drink[3],set[2];
for (int i = 0; i < 3; i++) { hamburger[i] = 0; drink[i] = 0; }
for (int i = 0; i < 2; i++) { snack[i] = 0; set[i] = 0; }
cin >> choose;
if (1 == choose)
{
single_menu();
int ch,flag=1;
while(flag)
{
cout << "請輸入對應商品的序號:" ;
cin >> ch;
switch (ch)
{
case(0):
{
flag = 0;
break;
}
case(1):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
hamburger[0] = number;
break;
}
case(2):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
hamburger[1] = number;
break;
}
case(3):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
hamburger[2] = number;
break;
}
case(4):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
snack[0] = number;
break;
}
case(5):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
snack[1] = number;
break;
}
case(6):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
drink[0] = number;
break;
}
case(7):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
drink[1] = number;
break;
}
case(8):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
drink[2] = number;
break;
}
default:
{
cout << "請輸入正確的序號!" << endl;
break;
}
}
}
}
else if (2 == choose)
{
set_menu();
int ch, flag = 1;
while (flag)
{
cout << "請輸入對應商品的序號:";
cin >> ch;
switch (ch)
{
case(0):
{
flag = 0;
break;
}
case(1):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
set[0] = number;
break;
}
case(2):
{
cout << "請輸入需要幾份?:";
int number;
cin >> number;
set[1] = number;
break;
}
default:
{
cout << "請輸入正確的序號!" << endl;
break;
}
}
}
}
//生成漢堡工廠類
Factory_Hamburger* fac_h = new Factory_Hamburger();
//生成具體的漢堡類
Food* hamburger1 = fac_h->food();
Food* hamburger2 = fac_h->food(
免責聲明:部分文章信息來源于網絡以及網友投稿,本站只負責對文章進行整理、排版、編輯,出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其內容的真實性,如本站文章和轉稿涉及版權等問題,請作者在及時聯系本站,我們會盡快為您處理。
相關文章
熱門資訊
-
∨
-
聯系我們
-
在線客服
-
工作時間:工作日10:00-18:30
-
服務熱線:18211520804
13824170721 - 微信咨詢
- QQ咨詢
-
-
留言咨詢
-
關注我們掃一掃關注,獲取最新資訊。
-
回到頂部
留言咨詢
×
掃一掃關注,獲取最新資訊。