11 自動售貨系統程式編寫 第一部分 規則

2021-10-09 02:12:48 字數 4821 閱讀 1060

考生需要模擬實現乙個簡單的自動售貨系統,實現投幣購買商品退幣查詢庫存商品存錢盒資訊的功能。

系統初始化時自動售貨機中商品為6種商品, 商品的單價參見1.1規格說明,存錢盒內放置1元、2元、5元、10元錢幣,商品數量和錢幣張數通過初始化命令設定,參見2.1 系統初始化。

1.商品:每種商品含名稱、單價、數量三種屬性。其中商品名不重複。考生不能修改商品名稱和單價,初始化命令設定商品數量。這些資訊在考試框架中定義,考上在實現功能**時可直接呼叫。

商品名稱

單價數量a12

xa23x

a34xa4

5xa58

xa66x

2.存錢盒資訊:有紙張面額、張數兩種屬性。初始化命令設定各種面額錢幣張數。這些資訊在考試框架中定義,考上在實現功能**時可直接呼叫。

錢幣面額

張數10元x5元

x2元x1元

x

3.退幣原則

1)根據系統存錢盒內錢幣的資訊,按照錢幣數量最少的原則退幣。 

2)如果零錢不足導致不能退幣,則盡最大可能退幣,以減少使用者損失。

(例如:假設存錢盒內只有4張2元,無其他面額錢幣。如果需要退幣7元,系統因零錢不足無法退幣,則繼續嘗試退幣6元,最終系統成功退幣3張2元,使用者損失1元。

4.投幣操作說明

每次投幣成功,投入的錢幣面額累加到投幣餘額。同時,本次投入的錢幣放入存錢盒中,存錢盒響應的面額錢幣增加。

5.投幣餘額

是指當前自動售貨機中使用者剩餘的可購買商品的錢幣總額。比如:投入2元面額的錢幣,投幣餘額增加2元;購買一件2元的商品,投幣餘額減少2元。

6.投幣餘額約束:投幣餘額不能超過10元。

7.退幣操作說明:

退幣操作需要遵守退幣原則;退幣成功後,投幣餘額清零,同時扣除存錢盒相應的餘額。

8.購買商品操作說明:

一次僅允許購買一件商品;購買商品成功後,自動售貨機中對應的商品數量減一,投幣餘額扣除本次購買商品的**。

命令字與第乙個引數間使用乙個空格分隔,多條命令採用分號隔開。考試系統會對輸入命令格式進行處理,考生不需要關注輸入命令格式的合法性,只需要輸入命令處理函式。

命令格式:

r  a1  數量  -a2  數量  -a3  數量  -a4  數量  -a5  數量   -a6  數量  1  元張數  -2  元張數  -5  元張數  -10  元張數

引數名稱

引數說明

型別取值範圍

a1數量

商品a1的數量

整數[ 0 , 10 ]

a2數量

商品a2的數量

整數[ 0 , 10 ]

a3數量

商品a3的數量

整數[ 0 , 10 ]

a4數量

商品a4的數量

整數[ 0 , 10 ]

a5數量

商品a5的數量

整數[ 0 , 10 ]

a6數量

商品a6的數量

整數[ 0 , 10 ]

1元張數

面額1元錢幣張數

整數[ 0 , 10 ]

2元張數

面額2元錢幣張數

整數[ 0 , 10 ]

5元張數

面額5元錢幣張數

整數[ 0 , 10 ]

10元張數

面額10元錢幣張數

整數[ 0 , 10 ]

說明:商品和各種面額錢幣取值範圍只是作為初始化命令的限制,其它場景下不限制取值範圍;考試框架已經實現取值範圍的檢查,考生不需要關注。

功能說明:設定自動售貨機中商品數量和存錢盒中各種面額的錢幣張數。

約束說明:系統在任意階段均可執行r 初始化系統;考生不需要關注引數的合法性,不需要關注增加或缺少引數的場景。

輸出說明:輸出操作成功提示(執行完r 命令後系統自動輸出操作結果,考生不需要再次呼叫輸出函式)例:

命令輸出

含義r 6-5-4-3-2-1  4-3-2-1

s001: initialization is successful

初始化成功

格式命令:p  錢幣面額

功能說明:

(1) 如果投入非1元、2元、5元、10元錢幣面額(錢幣面額不考慮負數,字元等非正整數的情況),輸出 :

e002: denomination  error
(2) 如果存錢盒中1元和2元面額錢幣總額小於本次投入的錢幣面額,輸出:

e003: change is not enough, pay fall
但投入1元和2元面額錢幣不受此限制。

(3)如果投幣餘額大於10元,輸出:

e004:pay the balance is byond the scope biggest
(4) 如果自動售貨機中商品全部銷售完畢,投幣失敗,輸出:

e005:all the goods sold out
(5) 如果投幣成功,輸出:

s002:pay success, balance=x.
命令

輸出p  10

s002:  pay success, balance = 10

約束說明:

命令格式: b  商品名稱

功能說明:

(1) 如果購買的商品不在商品列表中:輸出 " e006:goods  does not exist ";

(2) 如果所購買的商品的數量為0,輸出:」 e007:the goods sold out ";

(3) 如果投幣餘額小於待購買商品**,輸出 「 e008: lack of balance ";

約束說明:

(1)一次購買操作僅能購買一件商品,可以多次購買。

(2)同等條件下,錯誤**優先順序:e006 > e007 > e008;

輸出說明:

如果購買成功,輸出:" s003: buy success, balance = x "; 例:

命令輸出

b  a1;

s003: buy success, balance = 8.

命令格式:c

功能說明:

(1)如果投幣餘額等於0,輸出:」 e009:work failure ";

(2)如果投幣餘額大於0,按照投幣原則進行「找零」,輸出投幣資訊;

約束說明:

(1)系統在任意階段都可以退幣。

(2)退幣方式必須按照 退幣原則 進行退幣。

輸出說明:如果退幣成功,按照 退幣原則 輸出退幣資訊。

例:退5元錢幣:

命令輸出

c;1 yuan coin number = 0

2 yuan coin number = 0

5 yuan coin number = 1

10 yuan coin number = 0

命令格式: q  查詢類別

功能說明:

(1)查詢自動售貨機中商品資訊,包括商品名稱、單價、數量。根據商品數量從大到小進行排序;商品數量相同時,按照商品名稱的先後順序進行排序。例如:a1的商品名稱先於a2的商品名稱,a2的商品名稱先於a3的商品名稱。

(2)查詢存錢盒資訊,包含各種面額錢幣張數。

(3)查詢類別如下表所示:

查詢型別

查詢內容

0查詢商品資訊

1查詢存錢盒資訊

如果「查詢類別」 引數錯誤,輸出:" e010: parameter error ".查詢類別錯誤時,不進行下面的處理;

輸出說明:

「查詢類別」為0時,輸出自動售貨機中所有商品資訊(商品名稱單價數量)例:

命令輸出

q  0 

a1  2   6

a2  3   5

a3  4   4

a4  5   3

a5  8   2

a6  6   0

「查詢類別」為1時,輸出存錢盒資訊(各種面額錢幣的張數),格式固定,例:

命令輸出

q  1

1   yuan coin number=4

2   yuan coin number=3

5   yuan coin nmuber=2

10 yuan coin number=1

輸入描述:

依照說明中的命令碼格式輸入命令。

輸出描述:

輸出執行結果。

輸入

r 1-1-1-1-1-1 10-5-2-1;p 1;q 1;

輸出s001:initialization is successful

s002:pay success,balance=1

1 yuan coin number=11

2 yuan coin number=5

5 yuan coin number=2

10 yuan coin number=1

Oracle部署第一部曲

1 無法用所有預設使用者登入sql plus 解決方案 執行 cmd 鍵入命令 sqlplus as sysdba 2 查詢資料庫中所有使用者 select username from dba users 3 查詢資料庫中所有表空間 select from sys.dba tablespaces 4...

Camera Link 標準解讀第一部

本篇將從物理介面 模式配置,傳輸協議 訊號時序,已經硬體設計和邏輯實現等方面介紹cameralink標準。camera link是一種序列通訊協議標準,基於national semiconductor介面channnel link 簡稱 c link,與2000年 在美國自動化冬夜學會aia的推動下...

魔鬼作坊第一部筆記

f1 沒有技能的時候是 0 有的時候是非 0 快速掃瞄 首次掃瞄 0 走幾步 降f2的技能放到 f1上 大於0 搜尋 重複上面的步驟 4 這樣的一般都是陣列 例如 mov eax,eax esi 4 搜尋eax的數值 動一下技能欄 就會顯 一些資料 是讀取 不是寫入的 要注意下 繼續搜 eax的 e...