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

软件工程综合实践专题个人博客第一次作业,这个系统来自https://blog.csdn.net/sinat_16590595/article/details/48245347,这是用c语言编写的一个点餐系统。

首先附上源代码:

1 #include

2

3 voidmain_munu(){4 //打印主菜单

5 char a[6][20]={"菜单","凉菜","热销菜","主食","饭后甜点","饮料"};6 inti;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 voidmenu_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 voidmenu_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 voidmenu_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 voidmenu_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 voidmenu_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语言不再困难!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值