用C語言實現自動售貨機
自動售貨機
如圖所示的簡易自動售貨機,物品架1、2上共有10樣商品,按順序進行編號,分別為1-10。同時標有價格與名稱,- 一個編號對應一個可操作按鈕,供選擇商品使用。如果物架上的商品被用戶買走,儲物櫃中會自動取出商品送到物架上,保證物品架上一定會有商品.用戶可以一次投入較多錢幣,並可以選擇多樣商品,售貨機可以一次性將商品輸出並找零錢。
用戶購買方法:
(1)放入錢幣,用戶可以以此放入多個紙幣,面額可以是1元、2元、>5元、10元。售貨機會統計總金額並顯示。
(2)依次輸入要購買的產品,可購買多個產品,售貨機自動判斷餘額,若餘額不足,則找零後退出程序。
若需自主退出需按退出按鈕,程序中用輸入“-1表示”。
售貨機本著人性化原則,絕不會私吞用戶錢,也不會白送給用戶商
品。
因此在選擇貨物號時,要註意以下幾個點:
1.若什麼都不買,用戶投入的錢全部將退回;
2.若購買商品後還有餘額,但用戶自主退出程序,退回餘額;
3.若用戶購買貨物時餘額不足,將停止購買此商品,退回餘額
代碼如下:
4.錢正好花光,沒有餘額,結束程序。
#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);//輸出餘額 }
運行結果:
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。