用c语言编写简单的餐厅点餐系统(带后台)

⽤c语⾔编写简单的餐厅点餐系统(带后台)
这应该是⽐较简单的c语⾔程序了,因为学校c语⾔结课结的早,我当时才学到结构体指针,所以我就把我当时能运⽤的知识点全⽤在这个程序上了。虽说这个程序对当时的我来说是天花板,但是当我继续学习,我逐渐发现这个程序能升级的点实在是太多了。但我也⼀直没去完善emmmm(其实就是懒)。所以就硬着头⽪把他发出来了。
代码涉及的知识点:顺序结构,选择分⽀结构,循环结构,数组,⾃定义函数,指针和结构体。
主要思路是:
定义的⼀个结构体数组,包含了三个成员,分别是菜品编号(serial_number),菜品名称(dishes_name[50]),和餐品价格(money)。定义⼀个结构体数组dishes[50],并给他赋值。然后再定义多个函数,使⽤多个printf分别输出交互后的页⾯。⽐如:开始的界⾯,命名为outside,欢迎界⾯,命名为welcome,菜单函数,命名为menu,等待函数,命名为waiting,账单函数,命名为bill,送客函数,命名为goodbye,后台函数,命名为backstage_welcome。这些是主函数需要的部分。
程序中多次设置可供goto使⽤的节点,⽤于使⽤后的返回,使程序更加完整。并合理使⽤清屏函数system("cls");,使程序保持简介的页⾯。
点餐系统的主要实现的功能是:
(1)点餐前输⼊桌号和⼈数
(2)菜单浏览功能
(3)输⼊选的菜单
(4)计算账单总⾦额;
(5)按点菜的顺序进⾏排序等功能;
(6)菜品信息的删除与修改;
难理解的知识点有:
在菜单函数中,输⼊的值为结构体地址,⽅便表格中数值引⽤。\t的作⽤是对齐,让界⾯更加整洁。\n是回车。struct menu* b中的b表⽰结构体struct menu的地址,b指向结构体的⾸地址,即结构体数组dishes[1],b+1指向结构体数组dishes[2],以此类推。->表⽰引⽤该地址下某⼀成员的值。⽤%d,%s输出结构体数组中对应的值。
在⾃定义账单函数中,⽤于输出菜品编号,名称,并计算总⾦额。NUM[50]中存放⽤户输⼊的菜品编号,struct menu* b⽤于输出菜单时对应菜品名称的调⽤,PAYMONEY⽤于输⼊主函数中已经计算好的总⾦额。然后再定义⼀个整型变量i,⽤于for循环计数。将i赋为0,执⾏后⾯的循环结构,if是判断结束循环的关键,循环到输⼊的数组int NUM[50]中的0后break结束本次循环,如果不是0,则持续输出菜单。循环结束后,输出总⾦额。
清屏函数在#include<conio.h>中。
实验问题
数组赋值问题应使⽤strcmp函数,⽽且不能调⽤结构体指针,因为结构体内的数组名就是他的⾸地址,再⽤地址会报错。
在使⽤清屏函数时,应该加⼀个getch或者scanf,防⽌还未输出就已经被清屏的情况。
解决了程序后台系统中,修改菜品名称时⽆法输⼊的问题,应加⼀⾏getch,把输⼊的回车吃掉。
代码如下:
1#include<stdio.h>
2#include<conio.h>
3#include<string.h>
4struct menu
5{
6 int serial_number;
7 char dishes_name[50];
8 int money;
9}dishes[50]={
9}dishes[50]={
10    {1,"⿇婆⾖腐",20},
11    {2,"鱼⾹鸡丝",25},
12    {3,"北京烤鸭",67},
13    {4,"乱炖",54},
14    {5,"海带丝",12},
15    {6,"⼟⾖丝",12},
16    {7,"可乐鸡翅",44},
17    {8,"分⽶鸡",77},
18    {9,"⽜⾁⾯",24},
19    {10,"葱油饼",5},
20    {11,"⽶饭",3}
21        };
22int outside(void)
23{
24 printf("--------------------------------\n");
25 printf("|                              |\n");
26 printf("|                              |\n");
27 printf("|                              |\n");
28 printf("|                              |\n");
29 printf("|                              |\n");
30 printf("|    欢迎来到餐厅点餐系统    |\n");
31 printf("|                              |\n");
32 printf("|                              |\n");
33 printf("|                              |\n");
34 printf("|                              |\n");
35 printf("|                              |\n");
36 printf("--------------------------------\n");
37}
38int welcome(int PEOPLENUMBER,int DESK)
39{
40 printf("--------------------------------\n");
41 printf("|                              |\n");
42 printf("|                              |\n");
43 printf("|                              |\n");
44 printf("|                              |\n");
45 printf("|                              |\n");
46 printf("|    第%d号的%d位客⼈,欢迎光临 |\n",PEOPLENUMBER,DESK);
47 printf("|                              |\n");
48 printf("|                              |\n");
49 printf("|                              |\n");
50 printf("|                              |\n");
51 printf("|                              |\n");
52 printf("--------------------------------\n");
53}
54
55int menu(struct menu* b)
56{
57 printf("------编号------名称-----价格---\n");
58 printf("|    %d\t      %s\t    %d\t  |\t\n",(b)->serial_number,(b)->dishes_name,(b)->money);
59 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+1)->serial_number,(b+1)->dishes_name,(b+1)->money);
60 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+2)->serial_number,(b+2)->dishes_name,(b+2)->money);
61 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+3)->serial_number,(b+3)->dishes_name,(b+3)->money);
62 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+4)->serial_number,(b+4)->dishes_name,(b+4)->money);
63 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+5)->serial_number,(b+5)->dishes_name,(b+5)->money);
64 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+6)->serial_number,(b+6)->dishes_name,(b+6)->money);
65 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+7)->serial_number,(b+7)->dishes_name,(b+7)->money);
66 printf("|    %d\t      %s\t    %d\t  |\t\n",(b+8)->serial_number,(b+8)->dishes_name,(b+8)->money);
67 printf("|    %d\t%s\t      %d\t  |\t\n",(b+9)->serial_number,(b+9)->dishes_name,(b+9)->money);
68 printf("|    %d\t%s\t      %d\t  |\t\n",(b+10)->serial_number,(b+10)->dishes_name,(b+10)->money);
69 printf("--------------------------------\n");
70
71}
72int waiting(void)
73{
74 printf("--------------------------------\n");
74 printf("--------------------------------\n");
75 printf("|                              |\n");
76 printf("|                              |\n");
77 printf("|                              |\n");
78 printf("|                              |\n");
79 printf("|                              |\n");
80 printf("|  已收到您的菜单,请等待上餐  |\n");
81 printf("|                              |\n");
82 printf("|                              |\n");
83 printf("|                              |\n");
84 printf("|                              |\n");
85 printf("|                              |\n");
86 printf("--------------------------------\n");
87}
88int bill(int NUM[50],struct menu* b,int PAYMONEY)
89{
90 printf("--------------------------------\n");
91 printf("|                              |\n");
92 printf("|                              |\n");
93 printf("|                              |\n");
94 printf("|                              |\n");
95 printf("|                              |\n");
96 printf("|        请查收您的账单        |\n");
97 printf("|      如有异议请联系服务员    |\n");
98 printf("|                              |\n");
99 printf("|                              |\n");
100 printf("|                              |\n");
101 printf("|                              |\n");
102 printf("--------------------------------\n");
103 int i;
104 for(i=0;;i++)
105 {
106  if(NUM[i]==0)
107  {
108  break;
109  }
科协论坛110  printf("  %d\t    %s\t  %d\t\n",NUM[i],(b+NUM[i]-1)->dishes_name,(b+NUM[i]-1)->money); 111 }
112 printf("总共为%d元\n",PAYMONEY);
113}
114int goodbye(void)
115{
116 printf("--------------------------------\n");
117 printf("|                              |\n");
118 printf("|                              |\n");
119 printf("|                              |\n");
120 printf("|                              |\n");
121 printf("|                              |\n");
122 printf("|        谢谢您的回顾        |\n");
123 printf("|                              |\n");
124 printf("|                              |\n");
成人性行为125 printf("|                              |\n");
126 printf("|                              |\n");
127 printf("|                              |\n");
128 printf("--------------------------------\n");
129}
130int backstage_welcome(void)
131{
132 printf("--------------------------------\n");
133 printf("|                              |\n");
134 printf("|    欢迎进⼊后台管理系统    |\n");
135 printf("|                              |\n");
136 printf("|                              |\n");
高速公路服务区设计137 printf("|        修改价格请输⼊1      |\n");
138 printf("|                              |\n");
139 printf("|        修改菜品请输⼊2      |\n");
139 printf("|        修改菜品请输⼊2      |\n");
140 printf("|                              |\n");
最大功率点跟踪
141 printf("|    退出管理员界⾯请输⼊3    |\n");
142 printf("|                              |\n");
称呼后缀
143 printf("|                              |\n");
144 printf("--------------------------------\n");
145}
146
147int main()
148{
149 start:
150 outside();
151 int desknumber,human;
152 int n,i,num[50],paymoney=0;
153 int keyword;
154 int change;
155 struct menu* pmenu=&dishes;
156 printf("请输⼊餐桌号(输⼊1009进⼊管理界⾯)");
157 scanf("%d",&desknumber);
158 if(desknumber==1009)
159 {
160  goto start_backstage;
161 }
162 printf("请输⼊就餐⼈数");
163 scanf("%d",&human);
164 system("cls");
165 welcome(human,desknumber);
166 printf("输⼊任意阿拉伯数字点击回车进⼊下⼀步");
167 scanf("%d");
168 system("cls");
169 menu(pmenu);
170 pmenu=&dishes;
171 printf("请输⼊想吃的菜的编号,可⼀次输⼊多个编号,每个编号后请输⼊“,”,最后以0结束\n"); 172 for(i=0;;i++)
173 {
174  scanf("%d,",&num[i]);
175  if(num[i]==0)
176  {
177  break;
178  }
179  else
180  {
181  paymoney+=((pmenu+num[i]-1)->money);
182  }
183 }
184 system("cls");
185 waiting();
186 start_to_bill:
187 printf("查看账单请输⼊1\n");
188 scanf("%d",&n);
189 system("cls");
190 start_to_pay:
191 if(n==1)
192 {
193  bill(num,pmenu,paymoney);
194 }nk
195 else
196 {
197  printf("输⼊有误,请重新输⼊\n");
198  goto start_to_bill;
199 }
200 printf("已经帮您联系服务员,服务员将很快到达,请您稍等\n");
201 printf("请服务员确认后输⼊密码(1111)\n");
202 scanf("%d",&keyword);
203 system("cls");
204 if(keyword==1111)
204 if(keyword==1111)
205 {
206  goodbye();
207  printf("请输⼊任意⼀个阿拉伯数字,重置点餐系统\n"); 208  scanf("%d");
209  system("cls");
210  goto start;
211 }
212 else
213 {
214  printf("输⼊错误,请重新输⼊\n");
215  goto start_to_pay;
216 }
217
218
219 start_backstage:
220 printf("请输⼊管理员密码(1111)");
221 scanf("%d",&keyword);
222 if(keyword!=1111)
223 {
224  printf("密码错误,随意输⼊⼀个阿拉伯数字返回");
225  scanf("%d");
226  system("cls");
227  goto start;
228 }
229 system("cls");
230 start_manage:
231 backstage_welcome();
232 scanf("%d",&change);
233 if(change==1)
234 {
235  int bianhao,changemoney;
236  printf("请输⼊菜品编号");
237  scanf("%d",&bianhao);
238  printf("\n请输⼊修改的价格\n");
239  scanf("%d",&changemoney);
240  (pmenu+bianhao-1)->money=changemoney;
241  printf("修改成功,输⼊任意阿拉伯数字返回管理员界⾯\n"); 242  scanf("%d");
243  system("cls");
244  goto start_manage;
245
246 }
247 else if(change==3)
248 {
249  system("cls");
250  goto start;
251 }
252 else if(change==2)
253 {
254  int bianhao;
255  char dish_name[50];
256  char *pname=&(pmenu+bianhao-1)->dishes_name; 257  printf("请输⼊菜品编号");
258  scanf("%d",&bianhao);
259  getchar();
260  printf("\n请输⼊修改的名称\n");
261  gets(dish_name);
262  strcpy(dishes[bianhao-1].dishes_name,dish_name); 263  //strcpy(pname,dish_name);
264  printf("修改成功,输⼊任意阿拉伯数字返回管理员界⾯\n"); 265  scanf("%d");
266  system("cls");
267  goto start_manage;
268 }
269 else

本文发布于:2024-09-22 01:01:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/361286.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结构   函数   菜品   程序   命名   数组   循环   菜单
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议