模擬自動販賣機的程式

 
 
 
這個程式應該是目前我寫過最大的Python的視窗程式,雖然大但是卻沒做什麼事情,只是控制幾個不起眼的按鈕,跳出幾個設定的視窗介面。這個程式比較令人頭大的是販賣機的"找錢系統",應為販賣機只能給付一定數量的銅板和紙鈔,而且所找回的金額只能由特定面額的紙鈔與銅板來給付,所以比較麻煩。關於視窗介面我們是使用Boa Constructor這個工具軟體來協助建立,利用這個工具幫我們產生販賣機的使用者介面,並完成所有的程式設計。目前已經初步完成這個程式,功能上大致是正常的,"找錢系統"應該能正常工作,程式的進入點是MainApp.py,請點選MainApp.py這個程式執行(因為太多檔案,怕有人不知主程式是哪一個,在此說明),尚須改進的地方:


 
  • 改善購物的控制流程:當使用者在選擇要購買的商品時,系統不要將商品的總量做變動,而是等到消費者將商品購買完畢之後在變動商品的總量,會遭遇的問題點,在消費者購物中,如何知道該商品是否還有庫存,如果已經沒有該項商品,應該不准使用者購買,而目前商品的目前的庫存數量與商品的總量是相同的,所以只要檢查總量是否為0,就可以知道消費這是否可以購買。更改後商品總量在消費者購物確認後才扣除。
  • 關於無法找零的問題:當使用者購物之後無法退幣時,目前我們的程式將這樣的事件當作是販賣機"吃錢"事件,當這個事件發生時,機器會終止所有的服務,禁止使用者再投幣進行交易,並且要求使用者按下服務鈴,以通知系統管理人員前往處理。系統應該修正為當消費者按下完成交易的按鈕後,機器自動判斷是否能找零,如果無法找零,系統不給消費者商品(商品總量不扣除),並且將原先投入的金額退還給消費者,結束交易。這件事情很容易做到,只要當消費者按下結束交易的按鈕後,在呼叫def moneyProcess(self, money)這個函式。例如:如果使用者要退$7,撰寫程式下方紅字部分
    ok = self.moneyProcess(7)當ok = 0時表示無法找零,撰寫應該處理的程式碼,當ok=1表示販賣機有辦法退給消費者零錢,交易正常完成。
  • 關於服務鈴部分:目前服務鈴在任何時候的可以被按下,為避免使用者誤按,應該選擇是當時機才能被按下。
  • 關於消費者的消費帳單:應該要顯示消費者所給付的總共金額
  • 關於商品價格方面:可以考慮在商品數量設定的地方同時設定該商品的價格
    資料結構:
    商品數量資訊設定 --> self.item={'COKE':0, 'BOTL':0, 'ICTA':0, 'POTC':0, 'CHOC':0}
    商品價格資訊設定 --> self.itemMoney={'COKE':13, 'BOTL':8, 'ICTA':11, 'POTC':19, 'CHOC':24}

    商價格變動時,按鈕上的價格應隨之變動。並且當商品的總量為0時,按鈕應出現售完的字樣
  • 其他bug修正
程式執行畫面
 

 
其他說明:程式一開始的所有設定值都是0,所以無論消費者如何投幣都無法購買商品,請按登入管理系統以便設定商品數量以及銅板和紙鈔的數量,登入密碼為12345,結束設定後可以登出。
 
 

全站熱搜

CJY0503 發表在 痞客邦 留言(0) 人氣()