一個簡單C語言點餐系統的學習心得


軟件工程綜合實踐專題個人博客第一次作業,這個系統來自https://blog.csdn.net/sinat_16590595/article/details/48245347,這是用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語言不再困難!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM