您的位置:首页 > 理论基础

华为2017校招题:自动售货系统

2017-02-08 15:27 435 查看
描述:考生需要模拟实现一个简单的自动售货系统,实现投币、购买商品、退币、输出库存商品及存钱盒信息的功能.

1. 系统中存在以下商品与钱币:

三种商品:每种商品包含商品名称、单价、数量三种属性,分别为:名称为A1的商品单价为2元数量为5件;名称为A2的商品单价为3元数量为10件;名称为A3的商品单价为4元数量为14件

存钱盒信息存在以下三种面额1、2、5元的钱币,每种钱币包括面额、张数属性,分别为:1元的 5张;2元的 5张, 5元的 3张;

2. 系统退币原则:根据系统存钱盒内钱币的信息,按钱币总张数最少的原则进行退币,即使用户只投币不购买商品也按此原则退币。

3. 约束:考生不需要考虑命令的非法性,即不存在非法的命令的情况,例如系统中A1商品只有5件,不存在买第6件的情况,不存在买的商品总价超过投币总和的等情况。

4. 输入说明

系统接收到输入命令需要初始化系统,初始化系统中商品与钱币数量。命令字与参数间使用一个空格分隔,不同命令之间用逗号分隔。

1). 投币命令:命令格式:p 钱币面额,投币可以投入多次,只能投入1、2、5元面额的钱币。

2). 购买商品:命令格式:b 商品名称

一条购买命令仅能购买一件商品,可以多次购买;购买商品成功后,自动售货机中对应商品数量减1,存钱盒中金额相应的增加,全部购买完成需要按退币原则把多余的钱币退回。

例如:p 5,p 5,p 5,b A3,b A3,b A2

5. 输出说明

输出自动售货机中商品和存钱盒的信息,包含商品名称、数量,存钱盒面额、数量。根据商品名称的从小到大顺序进行排序,输出结果中商品名称与数量使用一个空格分开,

存钱盒根据钱币面额从小到大排序输出,钱币面额与数量使用一个空格分开,不同信息间使用逗号分开,商品信息与存钱盒信息使用分号分开。

例如,返回结果为:A1 5,A2 9,A3 12;1 5,2 3,5 6

运行时间限制:
无限制

内存限制:
无限制

输入:

投币命令、购买商品命令

输出:

自动售货机中商品和存钱盒的信息

样例输入:

p 5,p 5,p 5,b A3,b A3,b A2

样例输出:

A1 5,A2 9,A3 12;1 5,2 3,5 6

答案提示:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 华为 计算机