当前位置:   article > 正文

C++方式实现餐饮管理系统_课程设计餐厅管理系统c++

课程设计餐厅管理系统c++

1.main.cpp文件

  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. using namespace std;
  7. class Customer//顾客类
  8. {
  9. private:
  10. char table[20];//桌号
  11. int queues;//排队号码
  12. char dishes[20];//菜品
  13. int amount;//账户余额
  14. static int total;//顾客总数
  15. public:
  16. Customer();
  17. void order();//点菜函数
  18. void Printf();//输出顾客信息
  19. friend class LQueue;
  20. };
  21. class LQueue;
  22. class Menus//菜单类
  23. {
  24. private:
  25. int number;//菜单编号
  26. int price;//价格
  27. char dish_name[30];//菜名
  28. static int sums;//菜品总数
  29. public:
  30. void Set();//增加菜品
  31. void show();//显示菜品信息
  32. void correct_menus();//修改菜品
  33. void delete_menus();//删除菜品
  34. void renew_menus();//恢复菜单
  35. friend class LQueue;
  36. friend void Customer::order();
  37. };
  38. int Customer::total=0;
  39. int Menus::sums=5;
  40. struct QNode
  41. {
  42. Customer data;
  43. QNode *next;
  44. };
  45. class LQueue//队列类
  46. {
  47. private:
  48. QNode *front,*rear;//队头和队尾
  49. public:
  50. LQueue();
  51. void InLQueue();//增加顾客
  52. int EmptyLQueue();//判队空
  53. void OutLQueue();//删除队头元素
  54. void PrintQueue();//输出队伍信息
  55. void correct_customer(LQueue *L);//修改队伍信息
  56. void delete_customer(LQueue *L);//删除队伍元素
  57. ~LQueue();
  58. };
  59. int menu()
  60. {
  61. char i;
  62. puts("**********************主菜单**********************\t\n");
  63. puts("\t\t1.增加新菜品\n");
  64. puts("\t\t2.增加新顾客\n");
  65. puts("\t\t3.顾客结账\n");
  66. puts("\t\t4.显示顾客信息\n");
  67. puts("\t\t5.显示菜品信息\n");
  68. puts("\t\t6.修改顾客点菜信息\n");
  69. puts("\t\t7.修改菜品信息\n");
  70. puts("\t\t8.删除顾客\n");
  71. puts("\t\t9.删除菜品\n");
  72. puts("\t\t0.退出\n");
  73. puts("**************************************************\t\n");
  74. i=getchar();
  75. system("cls");
  76. return i;
  77. }
  78. int main()
  79. {
  80. LQueue L;
  81. Menus m;
  82. while(1)
  83. {
  84. switch(menu())
  85. {
  86. case'1':
  87. m.Set();
  88. break;
  89. case'2':
  90. L.InLQueue();
  91. break;
  92. case'3':
  93. L.OutLQueue();
  94. break;
  95. case'4':
  96. L.PrintQueue();
  97. break;
  98. case'5':
  99. m.show();
  100. break;
  101. case'6':
  102. L.correct_customer(&L);
  103. break;
  104. case'7':
  105. m.correct_menus();
  106. break;
  107. case'8':
  108. L.delete_customer(&L);
  109. break;
  110. case'9':
  111. m.delete_menus();
  112. break;
  113. case'0':
  114. m.renew_menus();
  115. return 0;
  116. }
  117. }
  118. return 0;
  119. }
  120. LQueue::LQueue()
  121. {
  122. rear=0;
  123. front=0;
  124. }
  125. void LQueue::PrintQueue()
  126. {
  127. QNode *p;
  128. p=front;
  129. if(p==NULL)
  130. {
  131. cout<<"队内无顾客!"<<endl;
  132. getchar();
  133. getchar();
  134. system("cls");
  135. return;
  136. }
  137. else
  138. cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
  139. while(p!=NULL)
  140. {
  141. p->data.Printf();
  142. p=p->next;
  143. }
  144. getchar();
  145. getchar();
  146. system("cls");
  147. }
  148. void LQueue::InLQueue()
  149. {
  150. QNode *p;
  151. p=new QNode;
  152. p->next=NULL;
  153. p->data.order();
  154. if(front==0)
  155. {
  156. front=p;
  157. rear=p;
  158. }
  159. else
  160. {
  161. rear->next=p;
  162. rear=p;
  163. }
  164. getchar();
  165. getchar();
  166. system("cls");
  167. }
  168. int LQueue::EmptyLQueue()
  169. {
  170. if(front==NULL&&rear==NULL)
  171. return 1;
  172. else
  173. return 0;
  174. }
  175. void LQueue::OutLQueue()
  176. {
  177. int i=0;
  178. QNode *p;
  179. Menus menu[50];
  180. if(EmptyLQueue()==1)
  181. {
  182. cout<<"队内无顾客!"<<endl;
  183. getchar();
  184. getchar();
  185. system("cls");
  186. return;
  187. }
  188. else
  189. {
  190. p=front;
  191. front=p->next;
  192. ifstream in("Menus.txt");
  193. while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
  194. {
  195. if(strcmp(p->data.dishes,menu[i].dish_name)==0)
  196. {
  197. p->data.amount-=menu[i].price;
  198. break;
  199. }
  200. i++;
  201. }
  202. cout<<"首位顾客点餐之后的信息:\n"<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
  203. cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl;
  204. }
  205. if(front==NULL)
  206. rear=front;
  207. getchar();
  208. getchar();
  209. system("cls");
  210. }
  211. void LQueue::correct_customer(LQueue *L)
  212. {
  213. int i=0,temp,numb,flag=0,flag1=0;
  214. QNode *p,*q;
  215. p=L->front;
  216. q=front;
  217. if(q==NULL)
  218. cout<<"队列中无顾客!"<<endl;
  219. else
  220. {
  221. cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
  222. while(q!=NULL)
  223. {
  224. q->data.Printf();
  225. q=q->next;
  226. }
  227. cout<<endl<<"请输入需要修改顾客的排队号码:"<<endl;
  228. cin>>numb;
  229. cout<<endl;
  230. Menus menu[50];
  231. cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
  232. ifstream in("Menus.txt");
  233. while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
  234. {
  235. cout<<" "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
  236. i++;
  237. }
  238. i=i-1;
  239. temp=i;
  240. cout<<endl;
  241. while(p!=NULL)
  242. {
  243. if(numb==p->data.queues)
  244. {
  245. cout<<"当前顾客信息为:"<<endl;
  246. cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
  247. cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl<<endl;
  248. flag1=1;
  249. while(flag==0)
  250. {
  251. i=temp;
  252. cout<<"请输入修改后的桌号、菜品、账户余额:"<<endl;
  253. cin>>p->data.table>>p->data.dishes>>p->data.amount;
  254. while(i>=0)
  255. {
  256. if(strcmp(menu[i].dish_name,p->data.dishes)==0)
  257. {
  258. flag=1;
  259. break;
  260. }
  261. else
  262. flag=0;
  263. i--;
  264. }
  265. if(flag==1)
  266. cout<<"输入成功!"<<endl;
  267. else
  268. cout<<"菜单中没有此菜!"<<endl;
  269. }
  270. break;
  271. }
  272. else
  273. p=p->next;
  274. }
  275. if(flag1==0)
  276. cout<<"队伍中无此号码!"<<endl;
  277. }
  278. getchar();
  279. getchar();
  280. system("cls");
  281. }
  282. void LQueue::delete_customer(LQueue *L)
  283. {
  284. int numb,flag=0;
  285. QNode *p,*q,*r;
  286. p=L->front;
  287. r=front;
  288. if(r==NULL)
  289. cout<<"队列中无顾客!"<<endl;
  290. else
  291. {
  292. cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
  293. while(r!=NULL)
  294. {
  295. r->data.Printf();
  296. r=r->next;
  297. }
  298. cout<<"请输入需要删除顾客的排队号码:"<<endl;
  299. cin>>numb;
  300. cout<<endl;
  301. while(p!=NULL)
  302. {
  303. if(numb==p->data.queues)
  304. {
  305. if(flag==0)
  306. {
  307. cout<<"此顾客信息为:"<<endl;
  308. cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
  309. cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl<<endl;
  310. L->front=p->next;
  311. }
  312. else
  313. {
  314. cout<<"此顾客信息为:"<<endl;
  315. cout<<"桌号"<<setw(10)<<"排队号码"<<setw(10)<<"菜名"<<setw(10)<<"账户余额"<<endl;
  316. cout<<p->data.table<<setw(10)<<p->data.queues<<setw(10)<<p->data.dishes<<setw(10)<<p->data.amount<<endl<<endl;
  317. q->next=p->next;
  318. }
  319. flag=1;
  320. break;
  321. }
  322. else
  323. {
  324. if(flag==0)
  325. q=L->front;
  326. else
  327. q=q->next;
  328. p=p->next;
  329. }
  330. flag++;
  331. }
  332. if(flag==0)
  333. cout<<"队伍中无此号码!"<<endl;
  334. }
  335. getchar();
  336. getchar();
  337. system("cls");
  338. }
  339. LQueue::~LQueue()
  340. {
  341. delete rear;
  342. }
  343. Customer::Customer()
  344. {
  345. total++;
  346. queues=total;
  347. cout<<"您当前的排队号码为:"<<queues<<endl;
  348. }
  349. void Customer::order()
  350. {
  351. int i=0,temp,flag=0;
  352. Menus menu[50];
  353. cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
  354. ifstream in("Menus.txt");
  355. while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
  356. {
  357. cout<<" "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
  358. i++;
  359. }
  360. i=i-1;
  361. temp=i;
  362. while(flag==0)
  363. {
  364. i=temp;
  365. cout<<"请输入该顾客桌号、菜品、账户余额:"<<endl;
  366. cin>>table>>dishes>>amount;
  367. while(i>=0)
  368. {
  369. if(strcmp(menu[i].dish_name,dishes)==0)
  370. {
  371. flag=1;
  372. break;
  373. }
  374. else
  375. flag=0;
  376. i--;
  377. }
  378. if(flag==1)
  379. cout<<"输入成功!"<<endl;
  380. else
  381. cout<<"菜单中没有此菜!"<<endl;
  382. }
  383. }
  384. void Customer::Printf()
  385. {
  386. cout<<table<<setw(10)<<queues<<setw(10)<<dishes<<setw(10)<<amount<<endl;
  387. }
  388. void Menus::show()
  389. {
  390. int i=0;
  391. Menus menu[50];
  392. cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
  393. ifstream in("Menus.txt");
  394. while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
  395. {
  396. cout<<" "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
  397. i++;
  398. }
  399. getchar();
  400. getchar();
  401. system("cls");
  402. }
  403. void Menus::Set()
  404. {
  405. sums++;
  406. cout<<"请分别输入所增加的菜名和价格:"<<endl;
  407. cin>>dish_name>>price;
  408. number=sums;
  409. ofstream out("Menus.txt",ios::app);
  410. out<<number<<" "<<dish_name<<" "<<price<<" "<<endl;
  411. cout<<"输入成功!"<<endl;
  412. out.close();
  413. getchar();
  414. getchar();
  415. system("cls");
  416. }
  417. void Menus::correct_menus()
  418. {
  419. int i=0,temp;
  420. char name[20];
  421. Menus menu[50];
  422. cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
  423. ifstream in("Menus.txt");
  424. while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
  425. {
  426. cout<<" "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
  427. i++;
  428. }
  429. cout<<endl<<"请输入想要修改的菜品名:"<<endl;
  430. cin>>name;
  431. temp=i;
  432. i=0;
  433. ofstream outf("Menus.txt",ios::trunc);
  434. while(1)
  435. {
  436. in>>menu[i].number>>menu[i].dish_name>>menu[i].price;
  437. if(strcmp(name,menu[i].dish_name)==0)
  438. {
  439. cout<<"请输入修改后的菜品编号、菜名、价格:"<<endl;
  440. cin>>menu[i].number>>menu[i].dish_name>>menu[i].price;
  441. outf<<endl;
  442. break;
  443. }
  444. i++;
  445. }
  446. ofstream out("Menus.txt",ios::app);
  447. for(i=0;i<temp;i++)
  448. out<<menu[i].number<<" "<<menu[i].dish_name<<" "<<menu[i].price<<endl;
  449. cout<<"输入成功!"<<endl;
  450. getchar();
  451. getchar();
  452. system("cls");
  453. }
  454. void Menus::delete_menus()
  455. {
  456. int i=0,temp,tempi;
  457. char name[20];
  458. Menus menu[50];
  459. cout<<"当前的菜品有:\n"<<"菜品编号"<<setw(10)<<"菜名"<<setw(10)<<"价格"<<endl;
  460. ifstream in("Menus.txt");
  461. while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
  462. {
  463. cout<<" "<<menu[i].number<<setw(15)<<menu[i].dish_name<<setw(7)<<menu[i].price<<endl;
  464. i++;
  465. }
  466. cout<<endl<<"请输入想要删除的菜品名:"<<endl;
  467. cin>>name;
  468. temp=i;
  469. i=0;
  470. ofstream outf("Menus.txt",ios::trunc);
  471. while(1)
  472. {
  473. in>>menu[i].number>>menu[i].dish_name>>menu[i].price;
  474. if(strcmp(name,menu[i].dish_name)==0)
  475. {
  476. tempi=i;
  477. outf<<endl;
  478. break;
  479. }
  480. i++;
  481. }
  482. ofstream out("Menus.txt",ios::app);
  483. for(i=0;i<temp;i++)
  484. {
  485. if(tempi==i)
  486. continue;
  487. out<<menu[i].number<<" "<<menu[i].dish_name<<" "<<menu[i].price<<endl;
  488. }
  489. cout<<"输入成功!"<<endl;
  490. getchar();
  491. getchar();
  492. system("cls");
  493. }
  494. void Menus::renew_menus()
  495. {
  496. int i=0,temp;
  497. Menus menu[50];
  498. ifstream in("Menus_renew.txt");
  499. while(in>>menu[i].number>>menu[i].dish_name>>menu[i].price)
  500. i++;
  501. temp=i;
  502. ofstream outf("Menus.txt",ios::trunc);
  503. ofstream out("Menus.txt",ios::app);
  504. for(i=0;i<temp;i++)
  505. out<<menu[i].number<<" "<<menu[i].dish_name<<" "<<menu[i].price<<endl;
  506. cout<<"谢谢使用本系统!"<<endl;
  507. }

2.Menus.txt文件

1 水煮肉片 18
2 鱼香肉丝 25
3 鱼头 16
4 刀拍黄瓜 16
5 鲍鱼 20

3.Menus_renew.txt

1 水煮肉片 18
2 鱼香肉丝 25
3 鱼头 16
4 刀拍黄瓜 16
5 鲍鱼 20
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/968398
推荐阅读
相关标签
  

闽ICP备14008679号