自动售货机
如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号,分别为1-10。同时标有价格与名称,- 一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品.用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。
用户购买方法:
(1)放入钱币,用户可以以此放入多个纸币,面额可以是1元、2元、>5元、10元。售货机会统计总金额并显示。
(2)依次输入要购买的产品,可购买多个产品,售货机自动判断余额,若余额不足,则找零后退出程序。
若需自主退出需按退出按钮,程序中用输入“-1表示”。
售货机本着人性化原则,绝不会私吞用户钱,也不会白送给用户商
品。
因此在选择货物号时,要注意以下几个点:
1.若什么都不买,用户投入的钱全部将退回;
2.若购买商品后还有余额,但用户自主退出程序,退回余额;
3.若用户购买货物时余额不足,将停止购买此商品,退回余额
代码如下:
4.钱正好花光,没有余额,结束程序。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#include<stdio.h> #define N 10 int sum=0; int sum1; typedef struct sell{ int num; char name[20]; int price; }sell; void main() { int i,c,s; int s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0; //记录商品购买数量 sell se[N]={{1, "Table-water" ,1},{2, "Table-water" ,1},{3, "Table-water" ,1},{4, "Coca-Cola" ,2},{5, "Milk" ,2}, {6, "Beer" ,3},{7, "Orange-Juice" ,3},{8, "Sprite" ,3},{9, "Oolong-Tea" ,4},{10, "Green-Tea" ,4}}; //售货机装入商品 do { printf ( "Please put in coins:" ); scanf ( "%d" ,&c); //投币 if (c==1||c==2||c==5||c==10) sum=sum+c; else if (c==-1) break ; else printf ( "error!\n" ); } while (c!=-1); printf ( "Total:%d yuan\n" ,sum); printf ( "Please select the goods serial number:" ); scanf ( "%d" ,&s); //选择商品号 se[-2].price =0; sum1=sum-se[s-1].price ; //第一个选的商品超过投币数 if (sum1<0||s==-1) printf ( "Not enough money!\n" ); else sum=sum1; while (sum>=0&&s!=-1) //什么都没买或者钱够但是不想买了 { if (sum>=0){ //钱花光了 for (i=0;i<3;i++) if (s==se[i].num ) s1++; for (i=3;i<N;i++) { if (s==se[i].num &&i==3) {s2++; break ;} else if (s==se[i].num &&i==4) {s3++; break ;} else if (s==se[i].num &&i==5) {s4++; break ;} else if (s==se[i].num &&i==6) {s5++; break ;} else if (s==se[i].num &&i==7) {s6++; break ;} else if (s==se[i].num &&i==8) {s7++; break ;} else if (s==se[i].num &&i==9) {s8++; break ;} } printf ( "There is still %d yuan left\n" ,sum ); printf ( "Please select the goods serial number:" ); scanf ( "%d" ,&s); sum1=sum-se[s-1].price ; //最后一个商品钱不够 if (sum1<0||s==-1) { printf ( "Not enough money!\n" ); break ;} sum=sum1; } else printf ( "Not enough money!\n" ); } /*输出已购买商品名及数量*/ if (s1!=0) printf ( "%s:%d\n" ,se[0].name ,s1); if (s2!=0) printf ( "%s:%d\n" ,se[3].name ,s2); if (s3!=0) printf ( "%s:%d\n" ,se[4].name ,s3); if (s4!=0) printf ( "%s:%d\n" ,se[5].name ,s4); if (s5!=0) printf ( "%s:%d\n" ,se[6].name ,s5); if (s6!=0) printf ( "%s:%d\n" ,se[7].name ,s6); if (s7!=0) printf ( "%s:%d\n" ,se[8].name ,s7); if (s8!=0) printf ( "%s:%d\n" ,se[9].name ,s8); if (sum>=0) printf ( "change:%d yuan\n" ,sum); //输出余额 } |
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_44868393/article/details/105919883