반응형
SMALL
#include <iostream>
#include <vector>
#include <map>
using namespace std;
// 메뉴 구조체
struct MenuItem {
string name;
int price;
};
// 주문 구조체
struct Order {
int tableNumber;
MenuItem menuItem;
};
// 전역 변수
vector<Order> orders;
map<int, string> tableStatus;
// 메뉴 초기화
vector<MenuItem> initMenu() {
vector<MenuItem> menu = {
{"그린샐러드", 18000},
{"치킨 샐러드", 19000},
{"찹스테이크", 32000},
{"티본스테이크", 30000},
{"치즈 파스타", 17000},
{"치즈피자", 15000}
};
return menu;
}
// 메뉴 출력
void printMenu() {
vector<MenuItem> menu = initMenu();
cout << "======================" << endl;
cout << " MENU " << endl;
cout << "======================" << endl;
for (int i = 0; i < menu.size(); i++) {
cout << i + 1 << ". " << menu[i].name << " : " << menu[i].price << endl;
}
cout << "======================" << endl;
}
// 테이블 상태 초기화
void initTableStatus(int numTables) {
for (int i = 1; i <= numTables; i++) {
tableStatus[i] = "empty";
}
}
// 테이블 상태 출력
void printTableStatus() {
cout << "======================" << endl;
cout << " TABLES " << endl;
cout << "======================" << endl;
for (auto const& table : tableStatus) {
int tableNumber = table.first;
string status = table.second;
cout << "Table " << tableNumber << ": " << status << endl;
}
cout << "======================" << endl;
}
// 주문 추가
void addOrder(int tableNumber, MenuItem menuItem) {
orders.push_back({ tableNumber, menuItem });
tableStatus[tableNumber] = "occupied";
}
// 주문 검색
void searchOrders(int tableNumber) {
bool found = false;
for (int i = 0; i < orders.size(); i++) {
if (orders[i].tableNumber == tableNumber) {
cout << orders[i].menuItem.name << " : " << orders[i].menuItem.price << endl;
found = true;
}
}
if (!found) {
cout << "테이블이 비어있습니다." << endl;
}
}
// 결제
void pay(int tableNumber) {
int total = 0;
for (int i = 0; i < orders.size(); i++) {
if (orders[i].tableNumber == tableNumber) {
cout << orders[i].menuItem.name << " : " << orders[i].menuItem.price << endl;
total += orders[i].menuItem.price;
}
}
if (total == 0) {
cout << "테이블이 비어있습니다." << endl;
return;
}
cout << "======================" << endl;
cout << " TOTAL: " << total << endl;
cout << "======================" << endl;
tableStatus[tableNumber] = "empty";
vector<Order>::iterator it = orders.begin();
while (it != orders.end()) {
if (it->tableNumber == tableNumber) {
it = orders.erase(it);
}
else {
++it;
}
}
cout << "테이블 " << tableNumber << " 결제가 완료되었습니다." << endl;
}
구현 기능은 아래와 같다.
- 1. 주문
- 주문 id는 횟수에 따라 증가
- 주문 한 내역은 테이블 번호를 기준으로 저장
- 2. 검색
- 테이블을 기준으로 검색
- id에 따라 나누어 표시
- 3. 결제
- 테이블을 기준으로 검색
- 전체 합산 금액 표시
- 합산 금액에 맞게 돈을 낼시 주문 목록에서 사라짐
- 4.종료
- 0번을 입력시 종료
반응형
LIST
'C & C++ > C++ 개인 공부' 카테고리의 다른 글
[C++] 가위바위보 게임 (0) | 2023.04.16 |
---|---|
[C++] 1일차 수업 정리 .2 (0) | 2023.03.09 |
[C++] 1일차 수업 정리 .1 (0) | 2023.03.09 |