面包店销售系统的用户主要是顾客、收银员和经理。
面包店销售系统的简单用例分析——处理销售:顾客携带所购商品到达收银台;收银员使用面包店的POS系统记录每件商品;系统连续显示累计总额,并逐行显示细目;顾客输入支付信息,系统对支付信息进行验证和记录;系统更新库存信息;顾客从系统中得到购物小票,然后携带商品离开。查询与制作报表:经理可以使用系统进行业务查询和制作销售报表。
基本目标是开发出一个实现基本功能的交互性好的正确的面包店销售系统。
基本功能包括基础数据、业务功能、权限、查询与报表。
系统预期功能:
系统管理
(1) 用户:用户增删改查
(2) 权限:对用户进行授权
基础数据
(1) 产品类别:产品类别增删改
(2) 产品:产品增删改查
(3) 客户:客户增删改查
销售管理
(1) 开单:生成销售订单——录入商品条目
(2) 收银:生成支付单——修改库存——打印小票
(2) 退货:选择订单——选择商品——生成退货单——退款
查询
(1) 按名称查找某商品,并能查看它的库存数
(2) 按客户& 销售时间查询订单
统计报表
(1) 统计每月销售总金额 (数字或图形报表)
(2) 按“产品类别”统计“起止时间”内销售金额,有小计和总计(数字报表)
项目进度安排:采用迭代开发过程,2个星期1个迭代,共6个迭代。
控制措施:严格按照老师要求的进度进行,由项目经理监督项目进度进行,每次迭代前做好工作说明及分工说明,不拖拉,按时提交资料。
软件架构文档(SAD)描述了软件类的宏观组织结构。
好的接口设计是有利于团队开发。首先,架构师根据需求分析列出要实现的接口方法。然后团队通过实现接口而达到开发的目的。
设计原则:
1)接口设计基本原则:高层模块不应该依赖低层模块;抽象不应该依赖细节;细节应该依赖抽象
2)接口的职责单一:根据具体业务需求进行设计,尽量做到接口职责单一。例如,将goods的增加、删除、更新等操作封装在一个接口
3)接口要尽量小,接口要高内聚:一个接口只服务于业务逻辑
4)具体设计:DAO层和Service层中的业务逻辑的实现类都要通过实现相应接口方法来实现其具体的操作。如图:dao包中为接口类,dao.impl包中为实现相应接口的具体类
1)java类的命名是使用帕斯卡命名法,以英文方式命名,使得命名规范简洁容易理解。单字之间不以空格断开或连接号(-)、底线(_)连结,第一个单字首字母采用大写字母,后续单字的首字母亦用大写字母。如,GoodsTypeDAO.java和GoodsDAO.java
2)DAO层的所有的类都是以”DAO”结尾;Service层的所有的类都是”Service”结尾;Action层的所有的类都是以”Action”结尾,以便于一目了然。此外,所有的接口类都是以”I”作为首字母,去掉接口类的首字母”I”则成为其实现类的命名。如,接口类:IGoodsService.java,其实现类命名为:GoodsService.java
3)实现类的命名要包含业务逻辑的关键字。也就是要有具体含义。如,IGoodsDAO.java中”I”体现了这个类是一个接口类;”Goods”体现这个类是对商品(Goods)进行操作的;”DAO”说明这个类是实行DAO层的操作的
4)View层的JSP命名都是首字母为小写,第二个单词首字母为大写。如,goodsType.jsp
5)具体命名(部分)如下:
Action: CustomerAction.java
DAO: Interface:BaseDAO.java、ICustomerDAO.java
DAO.impl class:CustomerDAO.java
Service Interface:ICustomerService.java
Service.impl class:CustomerService.java
Model:
Vo(值对象包) :BillInformation.java、Goods.java、GoodsType.java、Member.java、Permission.java、ReturnGoods.java、Role.java、RolePermission.java、SalesVolume.java、ShoppingInformation.java、User.java、UserRole.java
View:index.js、About.jsp、Customer.jsp、Index.jsp、treedata.json
DAO层:将底层数据访问操作和业务逻辑分开,对业务层提供面向对象的数据访问接口
SERVCE层:提供了处理应用程序的业务逻辑和业务校验,管理事务
ACTION层:接收用户的输入并调用业务层的业务方法和表示层的组件去完成用户的请求
SPRING层:服务器各种组件的生成都由spring容器控制
EASYUI视图层:视图是用户看到并与之交互的界面,视图向用户显示相关的数据,并接受用户的输入数据,但不能进行任何实际的业务处理