##枫光组:王枫,何天光
##收银机:
###设计模式: 本项目采用MVP思想设计项目架构,这样做可以使各个模块之间的依赖关系尽量地减小
1、定义好商品仓库的数据格式 ---模拟数据库
2、定义好购物清单需要打印的内容
实现对Model层的数据结构进行逻辑操作:
商品信息录入;
设置商品打折信息;
向购物清单中加入购买的商品;
计算购物清单上的商品价钱;
输出购物清单任务;
清空购物产生的相关数据。
通过调用Presenter层的输出购物清单的任务获取Model层相关数据给以输出,以达到购物清单的输出要求。
###测试代码块: 整个项目的代码的编写严格按照TDD的思想,所以除了Model层的代码没有对应的测试类,其他都是通过测试驱动开发的。每个类都只做了一件事情。然后通过Gradle自动化构建后,push到远程仓库,再通过Travis-Ci远程服务器进行自动集成测试。
###测试说明: 1、导入商品信息的数据格式应该为:条形码 商品名字 单位 类别 价格 打折信息。首先对导入数据进行测试完全是否导入,导入的时候要保证数据没有重复。 2、扩展了加入商品信息和删除商品信息已经修改商品信息,处理了这些过程中可能出现的异常。在修改数据的时候,格式应该为“条形码 标签 值 标签 值 标签 值 ......” 3、插入打折信息,扩展了对打折信息的修改,有利于后期功能的扩展。 4、在测试订单生成中加入了@After来清除每次测试产生的底层数据。 5、订单的输入格式应该是['ITEM000001', 'ITEM000001', 'ITEM000001', 'ITEM000001','ITEM000001','ITEM000003-2', 'ITEM000005','ITEM000005', 'ITEM000005' ]这样的题目给定的Json格式数据。ITEM000003-2表示商品条形码是:ITEM000003,商品数量是2. 6、测试了扩展功能,增加,删除;其中增加的输入可以是ITEM000001或者ITEM000003-8,分别表示增加条形码为ITEM000001的一个商品和条形码为ITEM000003的8商品。删除的数据格式可以是ITEM000001-2和ITEM000003或者ITEM000005-ALL,分别表示删除2个条形码为ITEM000001的商品,1个条形码为ITEM000003的商品,以及所有的条形码为ITEM000005的商品。 7、计算购物清单价格的时候,测试的时候要提前导入商品信息,结束后要清除底层产生的临时数据。 8、计算购物清单价格的时候,测试了各种打折的,以及没有打折的情况。 9、在最后的view中printBill中有一个完整的程序运行的流程。
###特别提醒: 买二增一在此解读为买三免一!!!(因为在题目中出现了一个例子,买二赠一的商品,最后买了5个商品。)
###备注:程序编码使用的是UTF-8编码格式。