一、任务:实现UC1销售开单用例
任务A:实现POS系统销售开单功能(不包含支付)。
基本需求及逻辑如下:
(1) 开始一次新的销售,自动生成一个订单号,如so-20150403-001(或自定义编码规则);
(2) 选择客户(根据不同行业需求,也有可能客户告知编号或电话号码)。可用客户第1条记录(如编号0000的客户)作为散客(即不申请成为会员)的用户;
(3) 逐条录入商品条目(根据商品编号),并修改数量。(可根据不同行业需求,自行确定否可以任意更改价格或折扣计价等);
(4) 系统显示总金额;
(5) 确定(系统自动记录销售时间)并等待支付。(可根据行业需求,系统亦可实现挂账功能,即开始下一次销售,稍后可再次选择该笔销售进行支付))
任务B:按“课程设计文档模板”要求编写文档:
(1) 2.2 UC1用例模型(用例图和详述文本)(分析员完成)
(2) 2.3 UC1补充性规格说明(分析员完成)
(3) 4.2.1 输入设计(架构师完成)
二、要求:
(1)订单:产品为m:n关系,即1张订单里面有多个产品,1种产品可被多个订单包含。
(2) 客户:订单为1:n关系,即1个客户可有多张订单,但1个订单只属于1个客户
(3)建议学习并使用UI框架,可方便处理上述问题。
三、制品交付:
(1) 程序提交的项目git。
(2) 文档发表在项目经理blog。
(3) 为方便指导老师评价程序,程序运行界面截图和测试报告发表在项目经理blog(另写一篇,测试员完成)。
交付时间:细化迭代2时间为2周(第5、6周),截止日期4月16日(第6周星期四) 24:00。
制品反馈见blog评论和git的issue。(第7周的“周一见”)。
附:为方便交流和分享,提供该阶段数据库表参考。各组可根据结合自己题目分析字段需求,修改和扩展表的字段。
主键可自增或UUID。
SALEORDER 订单表
SALEORDERITEM 订单明细(订单-产品)表
-- ---------------------------- -- Table structure for `saleorder` -- ---------------------------- DROP TABLE IF EXISTS `saleorder`; CREATE TABLE `saleorder` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `SALEORDERNO` varchar(36) NOT NULL, `CUSTOMER_ID` int(11) NOT NULL, `TOTAL` double NOT NULL, `CREATDATETIME` datetime NOT NULL, `STATE` int(11) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `SALEORDERNO` (`SALEORDERNO`), KEY `CUSTOMER_ID` (`CUSTOMER_ID`) USING BTREE, CONSTRAINT `saleorder_ibfk_1` FOREIGN KEY (`CUSTOMER_ID`) REFERENCES `customer` (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for `saleorderitem` -- ---------------------------- DROP TABLE IF EXISTS `saleorderitem`; CREATE TABLE `saleorderitem` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `SALEORDER_ID` int(11) NOT NULL, `PRODUCT_ID` int(11) NOT NULL, `QUANTITY` double NOT NULL, `PRICE` double NOT NULL, PRIMARY KEY (`ID`), KEY `SALEORDER_ID` (`SALEORDER_ID`), KEY `PRODUCT_ID` (`PRODUCT_ID`), CONSTRAINT `saleorderitem_ibfk_2` FOREIGN KEY (`PRODUCT_ID`) REFERENCES `product` (`ID`), CONSTRAINT `saleorderitem_ibfk_1` FOREIGN KEY (`SALEORDER_ID`) REFERENCES `saleorder` (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;