用C語(yǔ)言實(shí)現(xiàn)自動(dòng)售貨機(jī)
自動(dòng)售貨機(jī)
如圖所示的簡(jiǎn)易自動(dòng)售貨機(jī),物品架1、2上共有10樣商品,按順序進(jìn)行編號(hào),分別為1-10。同時(shí)標(biāo)有價(jià)格與名稱(chēng),- 一個(gè)編號(hào)對(duì)應(yīng)一個(gè)可操作按鈕,供選擇商品使用。如果物架上的商品被用戶(hù)買(mǎi)走,儲(chǔ)物柜中會(huì)自動(dòng)取出商品送到物架上,保證物品架上一定會(huì)有商品.用戶(hù)可以一次投入較多錢(qián)幣,并可以選擇多樣商品,售貨機(jī)可以一次性將商品輸出并找零錢(qián)。

用戶(hù)購(gòu)買(mǎi)方法:
(1)放入錢(qián)幣,用戶(hù)可以以此放入多個(gè)紙幣,面額可以是1元、2元、>5元、10元。售貨機(jī)會(huì)統(tǒng)計(jì)總金額并顯示。
(2)依次輸入要購(gòu)買(mǎi)的產(chǎn)品,可購(gòu)買(mǎi)多個(gè)產(chǎn)品,售貨機(jī)自動(dòng)判斷余額,若余額不足,則找零后退出程序。
若需自主退出需按退出按鈕,程序中用輸入“-1表示”。
售貨機(jī)本著人性化原則,絕不會(huì)私吞用戶(hù)錢(qián),也不會(huì)白送給用戶(hù)商
品。
因此在選擇貨物號(hào)時(shí),要注意以下幾個(gè)點(diǎn):
1.若什么都不買(mǎi),用戶(hù)投入的錢(qián)全部將退回;
2.若購(gòu)買(mǎi)商品后還有余額,但用戶(hù)自主退出程序,退回余額;
3.若用戶(hù)購(gòu)買(mǎi)貨物時(shí)余額不足,將停止購(gòu)買(mǎi)此商品,退回余額
代碼如下:
4.錢(qián)正好花光,沒(méi)有余額,結(jié)束程序。
#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;//記錄商品購(gòu)買(mǎi)數(shù)量
?? ?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}}; ?//售貨機(jī)裝入商品
?? ?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); ?//選擇商品號(hào)
?? ?se[-2].price =0;
?? ?sum1=sum-se[s-1].price ; ?//第一個(gè)選的商品超過(guò)投幣數(shù)
?? ?if(sum1<0||s==-1) printf("Not enough money!\n");
?? ?else?? ??? ?sum=sum1;
?? ?
?? ?while(sum>=0&&s!=-1) ? ?//什么都沒(méi)買(mǎi)或者錢(qián)夠但是不想買(mǎi)了
?? ?{
?? ??? ?
?? ??? ?if(sum>=0){ ? ? ? ? ? ? ?//錢(qián)花光了
?? ??? ??? ?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 ; ? //最后一個(gè)商品錢(qián)不夠
?? ??? ??? ??? ?if(sum1<0||s==-1) {printf("Not enough money!\n");break;}
?? ??? ??? ??? ?sum=sum1;
?? ??? ??? ??? ?
?? ??? ?}
?? ??? ?else printf("Not enough money!\n");
?? ??? ?
?? ?}
?? ?/*輸出已購(gòu)買(mǎi)商品名及數(shù)量*/
?? ?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);//輸出余額
?? ?
}運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)總結(jié)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
C語(yǔ)言time.h庫(kù)函數(shù)的具體用法
C語(yǔ)言的time.h頭文件提供了一系列的函數(shù)和工具,用于處理時(shí)間和日期相關(guān)的操作,本文主要介紹了C語(yǔ)言time.h庫(kù)函數(shù)的具體用法,感興趣的可以了解一下2023-12-12
C語(yǔ)言使用openSSL庫(kù)DES模塊實(shí)現(xiàn)加密功能詳解
這篇文章主要介紹了C語(yǔ)言使用openSSL庫(kù)DES模塊實(shí)現(xiàn)加密功能,簡(jiǎn)單講解了DES加密的相關(guān)概念,并結(jié)合實(shí)例形式分析了DES加密的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
用C語(yǔ)言實(shí)現(xiàn)鏈?zhǔn)綏=榻B
大家好,本篇文章主要講的是用C語(yǔ)言實(shí)現(xiàn)鏈?zhǔn)綏=榻B,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽2021-12-12
c語(yǔ)言函數(shù)棧幀的創(chuàng)建和銷(xiāo)毀過(guò)程詳解
我們知道c語(yǔ)言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實(shí)main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過(guò)本文給大家分享c語(yǔ)言函數(shù)棧幀的創(chuàng)建和銷(xiāo)毀過(guò)程,一起看看吧2021-08-08
OpenCV + MFC實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別
這篇文章主要為大家詳細(xì)介紹了OpenCV + MFC實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄完整流程
這篇文章主要為大家介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄的完整流程,每個(gè)環(huán)節(jié)都有完整代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02
C語(yǔ)言實(shí)現(xiàn)超市管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)超市管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07

