11.自动售货系统程序编写 第一部分:规则

 

1.总体说明

考生需要模拟实现一个简单的自动售货系统,实现投币购买商品退币查询库存商品存钱盒信息的功能。

系统初始化时自动售货机中商品为6种商品, 商品的单价参见1.1规格说明,存钱盒内放置1元、2元、5元、10元钱币,商品数量和钱币张数通过初始化命令设置,参见2.1 系统初始化。

1.1 规格说明

1.商品:每种商品含名称、单价、数量三种属性。其中商品名不重复。考生不能修改商品名称和单价,初始化命令设置商品数量。这些信息在考试框架中定义,考上在实现功能代码时可直接调用。

                                 商品名称                            单价                              数量
                                     A1                               2                                 x
                                    A2                               3                                 x
                                    A3                               4                                 x
                                    A4                               5                                 x
                                    A5                               8                                 x
                                    A6                               6                                 x

2.存钱盒信息:有纸张面额、张数两种属性。初始化命令设置各种面额钱币张数。这些信息在考试框架中定义,考上在实现功能代码时可直接调用。

                                        钱币面额                                            张数
                                           10元                                               x
                                             5元                                               x
                                             2元                                               x
                                             1元                                               x

3.退币原则

1)根据系统存钱盒内钱币的信息,按照钱币数量最少的原则退币。 

2)如果零钱不足导致不能退币,则尽最大可能退币,以减少用户损失。

(例如:假设存钱盒内只有4张2元,无其他面额钱币。如果需要退币7元,系统因零钱不足无法退币,则继续尝试退币6元,最终系统成功退币3张2元,用户损失1元。

4.投币操作说明

每次投币成功,投入的钱币面额累加到投币余额。同时,本次投入的钱币放入存钱盒中,存钱盒响应的面额钱币增加。

5.投币余额

是指当前自动售货机中用户剩余的可购买商品的钱币总额。比如:投入2元面额的钱币,投币余额增加2元;购买一件2元的商品,投币余额减少2元。

6.投币余额约束:投币余额不能超过10元。

7.退币操作说明:

退币操作需要遵守退币原则;退币成功后,投币余额清零,同时扣除存钱盒相应的余额。

8.购买商品操作说明:

一次仅允许购买一件商品;购买商品成功后,自动售货机中对应的商品数量减一,投币余额扣除本次购买商品的价格。

2.操作说明

命令字与第一个参数间使用一个空格分隔,多条命令采用分号隔开。考试系统会对输入命令格式进行处理,考生不需要关注输入命令格式的合法性,只需要输入命令处理函数。

2.1 系统格式化

命令格式:

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-1S001: Initialization is successful初始化成功

2.2 投币

格式命令: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  10S002:  Pay success, balance = 10

约束说明:

  • 系统在任意阶段都可以投币
  • 一次投币只能投一张钱币
  • 同等条件下,错误代码优先级:E002 > E003 > E004 > E005;

2.3 购买商品

命令格式: 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.

2.4 退币

命令格式: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

2.5 查询

命令格式: 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

输入描述:

依照说明中的命令码格式输入命令。

输出描述:

输出执行结果。

3 示例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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值