ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一个简单C语言点餐系统的学习心得

2019-03-04 12:53:02  阅读:289  来源: 互联网

标签:菜单 int 学习心得 C语言 break 菜品 点餐 price1 输入


首先附上源代码:

 1 #include <stdio.h>
 2 
 3 void main_munu(){
 4     //打印主菜单
 5     char a[6][20]={"菜单","凉菜","热销菜","主食","饭后甜点","饮料"};
 6     int i;
 7     printf("%s\n",a[0]);
 8     for(i=1;i<6;i++)
 9     {
10         printf("\t%d.%s\n",i,a[i]);
11     }
12     printf("\t0.点餐结束\n");
13 }
14 
15 void menu_liangcai(){
16     //凉菜类打印
17     char a[3][20]={"木耳辣根","姜汁皮蛋","肉丝苦菊"};//定义字符数组,存放菜名
18     printf("请具体选择菜品:\n");
19     for (int i = 0; i < 3; i ++) {
20         printf("\t\t%d.%s\n",i+1,a[i]);
21     }
22     printf("\t\t0.返回上层菜单\n");
23 }
24 
25 void menu_rexiao(){
26     //热销菜打印
27     char a[3][20]={"葱烧排骨","麻婆豆腐","香辣小河虾"};//定义字符数组,存放菜名
28     printf("请具体选择菜品:\n");
29     for (int i = 0; i < 3; i ++) {
30         printf("\t\t%d.%s\n",i+1,a[i]);
31     }
32     printf("\t\t0.返回上层菜单\n");
33 }
34 
35 void menu_zhushi(){
36     // 主食类打印
37     char a[3][20]={"香肠焖饭","海鲜炒面","玉米馒头"};//定义字符数组,存放菜名
38     printf("请具体选择菜品:\n");
39     for (int i = 0; i < 3; i ++) {
40         printf("\t\t%d.%s\n",i+1,a[i]);
41     }
42     printf("\t\t0.返回上层菜单\n");
43 }
44 
45 void menu_tiandian(){
46     //甜点类打印
47     char a[3][20]={"草莓冰淇淋","懒人布丁","香橙果冻"};//定义字符数组,存放菜名
48     printf("请具体选择菜品:\n");
49     for (int i = 0; i < 3; i ++) {
50         printf("\t\t%d.%s\n",i+1,a[i]);
51     }
52     printf("\t\t0.返回上层菜单\n");
53 }
54 
55 void menu_yinliao(){
56     //饮料类打印
57     char a[3][20]={"倾橙汁恋","可口可乐","秘制凉茶"};//定义字符数组,存放菜名
58     printf("请具体选择菜品:\n");
59     for (int i = 0; i < 3; i ++) {
60         printf("\t\t%d.%s\n",i+1,a[i]);
61     }
62     printf("\t\t0.返回上层菜单\n");
63 }

(1)在打印菜单信息的过程中,采用了数组的方法,利用了for循环来打印输出各级菜单的菜品,同时通过顾客输入编号来控制要点的菜品。

 1 int main(int argc, const char * argv[]) {
 2     printf("***** 法克招牌快餐店 *****\n");
 3     printf(" *****  欢迎您点餐 *****\n");
 4     int M;//定义用户选择的分类代号为M;
 5     int n;//定义用户输入子菜单下的菜品代号为n;
 6     int x[5][3] = {0};//定义每类菜品被点数量
 7     int price1[5][3] = {0};//每种菜品的价格总价
 8     int price[5][3] = {{12,15,13},{25,20,30},{5,5,10},{6,5,3},{3,4,5}};//定义每样菜品单价
 9     int total = 0;//定义所有菜品总价 初始化为0;
10     char name[5][3][20] = {{"木耳辣根","姜汁皮蛋","肉丝苦菊"},{"葱烧排骨","麻婆豆腐","香辣小河虾"},{"香肠焖饭","海鲜炒面","玉米馒头"},{"草莓冰淇淋","懒人布丁","香橙果冻"},{"倾橙汁恋","可口可乐","秘制凉茶"}};
11     while (1) {
12         main_munu();
13         scanf("%d",&M);//接收用户输入的菜品分类代号
14         if (M == 0) {
15             break;
16         }
17         switch (M) {
18             case 1:
19             {
20                 menu_liangcai();
21                 while (1) {
22                     scanf("%d",&n);
23                     if (n == 0) {
24                         //如果输入为0,跳出循环(程序中表现为:跳出本菜单下的菜品选择);
25                         break;
26                     }
27                     //统计 每样菜品总价格 与被点次数
28                     price1[0][n-1] += price[0][n-1];
29                     x [0][n-1] ++; 
30                 }
31             }
32                 if(n == 0)break;//如果输入为0,结束选菜;
33             case 2:
34             {
35                 menu_rexiao();
36                 while (1) {
37                     scanf("%d",&n);
38                     if (n == 0) {
39                         //如果输入为0,跳出循环(程序中表现为:跳出本菜单下的菜品选择);
40                         break;
41                     }
42                     price1[1][n-1]+=price[1][n-1];
43                     x[1][n-1]++;
44                 }
45             }
46                 if(n == 0)break;//如果输入为0,结束选菜;
47             case 3:
48             {
49                 menu_zhushi();
50                 while (1) {
51                     scanf("%d",&n);
52                     if (n == 0) {
53                         //如果输入为0,跳出循环(程序中表现为:跳出本菜单下的菜品选择);
54                         break;
55                     }
56                     price1[2][n-1] += price[2][n-1];
57                     x[2][n-1]++;
58                 }
59             }
60                 if(n == 0)break;//如果输入为0,结束选菜;
61             case 4:
62             {
63                 menu_tiandian();
64                 while (1) {
65                     scanf("%d",&n);
66                     if (n == 0) {
67                         //如果输入为0,跳出循环(程序中表现为:跳出本菜单下的菜品选择);
68                         break;
69                     }
70                     price1[3][n-1] += price[3][n-1];
71                     x[3][n-1]++;
72                 }
73             }
74                 if(n == 0)break;//如果输入为0,结束选菜;
75             case 5:
76             {
77                 menu_yinliao();
78                 while (1) {
79                     scanf("%d",&n);
80                     if (n == 0) {
81                         //如果输入为0,跳出循环(程序中表现为:跳出本菜单下的菜品选择);
82                         break;
83                     }
84                     price1[4][n-1] += price[4][n-1];
85                     x[4][n-1]++;
86                 }
87             }
88                 
89                 if(n == 0)break;//如果输入为0,结束选菜;
90         }
91         
92     }
93     

(2)通过数组x[5][3]、price1[5][3]、price[5][3]分别记录了每类菜品被点数量、每种菜品的价格总价、每样菜品单价。在从键盘输入菜品的编号后通过switch语句来控制点餐的进程,再利用数组x[5][3]、price1[5][3]来记录顾客点餐信息。,最后在经过统计累加起来得到顾客点餐信息以及总价格total。顾客在主菜单输入“0”结束点餐,在子菜单中输入“0”返回上一级菜单。

 1 //打印相关信息
 2     printf("菜名\t\t\t单价(元)\t数量\t总价格(元)\n-----------------------------------\n");
 3     for (int i = 0; i < 5; i++) {
 4         for (int j = 0; j < 3; j++) {
 5             if (price1[i][j] != 0) {//用价格判断顾客是否选择 确认打印
 6                 printf("%s\t\t%3d\t\t%3d\t%3d\n",name[i][j],price[i][j],x[i][j],price1[i][j]);
 7                 total += price1[i][j];//计算总价格
 8             }
 9         }
10     }
11     printf("总价格:\t\t\t\t\t%3d\n",total);
12     printf("祝您用餐愉快,期待您的下次光临!\n");
13     return 0;
14 }

(3)通过两个for语句控制打印出顾客点餐信息。

这个系统的优点有很多:一、这个系统代码的思路很清楚,层层递进;二、亮点是通过数组控制点餐的数量和价格,在顾客每一次选择菜品之后,都会进行数组的更新,在计算总价的时候,无疑方便了很多;三、在最后打印了顾客的点菜信息,符合现实中的实际情况。

缺点就是在点菜的时候不能直接选择要点的菜品的数量,只能返回到上一级菜单中再点一次,这样操作起来有点麻烦。

在深入了解了这个简单的点餐系统之后,我从中学到了很多知识点,也有点明白了“实践是检验真理的唯一标准”这句话。我觉得在编程之前,要把自己的想法写在纸上,如果是简单一点的程序不需要这样,如果程序比较复杂,就写下来,这样可以让思路更加清晰。良好的编程习惯是学好C语言的重要因素,只有勤动手,多动脑才能学好C语言,光说不练是不行的。

学习C语言需要的是坚持下去的毅力,认真对待每次错误的耐心,还有孜孜不倦的努力。拥有一个良好的心态,相信自己,你就会发现学好C语言不再困难!

 

标签:菜单,int,学习心得,C语言,break,菜品,点餐,price1,输入
来源: https://www.cnblogs.com/duanjs815/p/10469962.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有