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

Posted 一斜夕阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单C语言点餐系统的学习心得相关的知识,希望对你有一定的参考价值。

首先附上源代码:

 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语言不再困难!

 

以上是关于一个简单C语言点餐系统的学习心得的主要内容,如果未能解决你的问题,请参考以下文章

大学计算机学习心得体会

编程心得

gdbmake/makefile学习心得

学习上的思考与心得

布吉岛队——第三次小组讨论

Java学习心得02