解决方案说明书 Shopping-SMD_第1页
解决方案说明书 Shopping-SMD_第2页
解决方案说明书 Shopping-SMD_第3页
解决方案说明书 Shopping-SMD_第4页
解决方案说明书 Shopping-SMD_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 解决方案说明书 解决方案说明书-购物流程Solution Model Description编号:Shopping-SMD版本 1.0作者:日期:审批:日期:变更记录日期版本变更说明作者 1.0创建 1.简介32.系统整体架构33.资源层解决方案54.业务层解决方案75.表示层解决方案161. 简介1.1 内容1.2 适用对象1.3 参考文档2. 系统整体架构MVC架构图Tier和Layer的包图部署图3. 资源层解决方案3.1 数据库设计的概念模型3.2 资源层组件资源层组件是完成数据库处理的组件,例如数据源的管理、执行数据库的查询、CRUD。资源层使用DAO模式实现。通过DAO模式对各个

2、数据库对象进行封装,我们对业务层屏蔽了数据库访问的底层实现,业务曾仅包含与本领域相关的逻辑对象和算法,这样对于业务逻辑开发人员(以及日后专注于业务逻辑的代码阅读者)而言,面对的是一个简洁明快的逻辑实现结构。业务层的开发和维护将变得更加简单。 DAO模式中,数据库访问层实现被隐藏到Data Accessor中,前面说过,DAO模式实际上是两个模式的组合,即Data Accessor 和 Domain Object模式。 何谓 Data Accessor?即将数据访问的实现机制加以封装,与数据的使用代码相分离,从外部来看,Data Accessor 提供了黑盒式的数据存取接口。Domain Obj

3、ect则提供了对所面向领域内对象的封装。 具体实现步骤如下: 1.创建一个抽象工厂类,他包含两个重要的部分: 第一部分是 一些抽象方法,这些方法是所有实现该抽象工厂的具体工厂类所必须实现的. 第二部分 就是一个静态方法,该方法来创建一个具体类型数据源的工厂对象,比如文中的DB2DAOFactory().2 然后,分别创建各个类型数据源的工厂类,(本文以DB2DAOFactory为例).在这个工厂类中里面也有两个重要组成部分: 第一部分就是实现在他继承的那个抽象工厂类中的左右抽象方法,在该方法中创建具体的DAO对象(这些对象的

4、类在第4不具体定义实现),本文中三个方法分别创建了3个具体的DAO对象,当然为了实现细节的隐蔽,这些方法返回的是这些具体DAO类门实现的接口(这些接口在第3步实现).3 定义具体DAO类的接口,并在接口中定义所有的业务方法,和数据操作方法.4 定义具体的DAO类,在这个类中才是实际的业务方法,和数据的操作的实现.5 定义数据传输对象,他是用来在客户端和DAO之间传递数据的,他其实就是一个JAVABEAN.3.2.1 资源层类图3.2.2 类详细设计类名称DAOFactory所属包名称.data类静态变量定义名称类型描述类变量定义(先Publi

5、c->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述createConnectionConnection得到数据库连结getCustomerDAOCustomerDAO得到DAOgetOrderDAOOrderDAO得到DAOgetAddressDAOAddressDAO得到DAOgetOrderItemDAOOrderItemDAO得到DAOgetCatetoryDAOCatetoryDAO得到DAOgetProductDAOProductDAO得到DAOgetWishlistDA

6、OWishlistDAO得到DAOgetBonusDAOBonusDAO得到DAOgetCommentDAOCommentDAO得到DAO类名称CustomerDAO所属包名称.data类静态变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述insertCustomerCustomerBeannullupdateCustomerCustomerBeannulldeleteCustomerStringnullfindC

7、ustomerByIDStringCustomerBeanfindCustomerByStringCollection1.4. 业务层解决方案4.1 业务层概述4.2 业务层类图4.3 业务层类详细设计类名称ShoppingCart所属包名称.order.util类静态变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述cartItemsVector购物车中商品条目totalPriceDecimal商品总价格totalDiscountPriceDecimal折后价格totalPointDecimal可获得的总积分

8、shipChargeDecimal送货费用adjustPriceDecimal调整价格userIdInteger客户号方法(先Public->protected->private)名称参数返回值简单描述addItemproductId,productName,price,discountPrice,quantityNull增加商品到购物车updateItemproductId,quantityNull修改购物车中的商品数量getItemsList得到购物车中所有商品clearCartNull清空购物车calTotalPriceDecimal计算购物车总价格calDiscountPr

9、iceDecimal计算购物车折后价calShipChargeDecimal计算送货费用,根据送货地址不同有不同的送货费用calAdjustPriceDecimal计算调整价格,购物金额超过一定数额可以免送货费calBonusPointInteger计算可以获得的积分数,根据购物总金额和会员级别计算removeItemproductIdnull从购物车删除商品类名称CartItem所属包名称.order.util类静态变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述productIdInteger商品标识pr

10、oductNameString商品名称priceDecimal商品价格discountPriceDecimal折后价格quantityInteger商品数量方法(先Public->protected->private)名称参数返回值简单描述getProductName取得商品名称getPrice取得价格getDiscountPrice取得折后价getQuantity取得商品数量setQuantity设置商品数量类名称AddShoppingcartController所属包名称mand类静态变量定义名称类型描述类变量定义(先Public->protected->priva

11、te)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述execute1. 得到从页面层传递的数据:要添加的商品号,商品名称,商品价格,商品折扣价,数量。2. 判断session里是否有购物车,如果没有,创建购物车对象,并放入session.如果存在,得到购物车对象。3. 调用ShoppingCart类的addItem()方法,把商品加入购物车4. 调用ShoppingCart类的calTotalPrice()和calDiscountPrice()得到购物车的总价格和折扣价格。5. 将结果返回到页面层。类名称UpdateShopping

12、cartController所属包名称mand类静态变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述execute1得到从页面层传递的数据:要修改的商品号,数量。2调用ShoppingCart类的updateItem()方法,修改商品数量。3调用ShoppingCart类的calTotalPrice()和calDiscountPrice()得到购物车的总价格和折扣价格。4将结果返回到页面层。类名称DeleteShoppingcartCo

13、ntroller所属包名称mand类静态变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述execute1得到从页面层传递的数据:要删除商品号。2调用ShoppingCart类的deleteItem()方法,把商品移出购物车3 调用ShoppingCart类的calTotalPrice()和calDiscountPrice()得到购物车的总价格和折扣价格。4将结果返回到页面层。类名称SubmitOrderController所属包名称ma

14、nd类静态变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述exucute1. 判断用户是否登陆,如果没有登陆,跳转到登陆页面。2. 从session中得到购物车对象。3. 调用ShoppingCart类的getItems()方法,得到购物车中的每一条记录。4. 调用checkInventory()方法检查每件商品的库存是否满足购买需求。5. 调用createOrder()方法生成订单。checkInventoryproductId,qu

15、antity1. 从数据库中得到商品的数量。2. 和购物车中的数据做比较。createOrder1. 根据购物车中的条目生成订单项。2. 扣除已购买的库存。3. 调用ShoppingCart类的calTotalPrice,calDiscountPrice,calShipCharge,calAdjustPrice,将结果写入订单。4. 调用ShoppingCart类的clearCart方法清空购物车。5. 调用ShoppingCart类的calBonusPoint方法计算积分,将积分记录写入数据库。类名称CheckAcountController所属包名称mand类静态变量定义名称类型描述类变量

16、定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述exucute1.判断用户是否登陆,如果没有登陆,跳转到登陆页面。2.从session中得到购物车对象。3.调用ShoppingCart类的calTotalPrice,calDiscountPrice,calShipCharge,calAdjustPrice,计算总价格,折扣价格,送货费用,调整价格。4调用ShoppingCart类calBonusPoint方法计算积分。5将计算结果返回到页面层。类名称Cancel

17、OrderController所属包名称mand类静态变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述execute1. 判断用户是否登陆,如果没有登陆,跳转到登陆页面。2. 设置定单的状态为“取消”3. 根据此定单中每个订单项对应的商品数量,把库存数还原4. 修改该订单对应的积分记录的状态为“取消”类名称ApproveOrderController所属包名称mand类静态变量定义名称类型描述类变量定义(先Public->prot

18、ected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述execute1. 判断用户是否登陆,如果没有登陆,跳转到登陆页面。2. 设置订单的状态为“已审批”3. 调用setBonusPoint设置用户的积分4. 调用EmailService类的sendMail方法给客户发送邮件通知setBonusPoint1 设置积分记录的状态为“已审批”2 将积分累积到客户的总积分3 根据积分规则,判断客户是否可以升级等级。类名称LoginController所属包名称mand类静态变量定义名称类型描述类变量定义(先Pu

19、blic->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述executenull1.得到客户端参数,包括用户名,密码。2调用checkPassword校验密码3.将sessionId保存到customer表4.将用户名信息保存到session.checkPasswordUsername,passwordboolean1. 根据用户名从数据库中查询密码2. 比较用户输入的密码和数据库中保存的密码是否一致类名称RegisterController所属包名称mand类静态变量定义名称类型描

20、述类变量定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述executenull1.得到客户端参数2调用register函数保存数据3.将sessionId保存到customer表4.将用户名信息保存到session.5调用EmailService的sendMail方法给客户发送电子邮件registernull1. 将注册信息保存到数据库2. 给客户赠送积分,保存到积分历史记录表,更新客户积分类名称ResetPasswdController所属包名称mand类静态

21、变量定义名称类型描述类变量定义(先Public->protected->private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述executenull1.得到客户端参数2调用resetPassword重置密码3调用EmailService的sendMail方法将新密码发送到客户的邮箱resetPasswordnull1. 使用随机算法生成密码2. 将密码保存到客户表类名称AddCommentController所属包名称mand类静态变量定义名称类型描述类变量定义(先Public->protected->

22、;private)名称类型描述方法(先Public->protected->private)名称参数返回值简单描述executenull1.得到客户端参数2判断用户是否登陆,如果没有登陆,跳转到登陆页面。3将数据保存到数据库5. 表示层解决方案5.1 表示层概述5.2 表示层类图5.3 用例实现5.3.1 XXX用例1用例名称及编号2用例概述3页面流程图4视图设计(JSP、Servlet)JSP页面说明页面名称categorydisplay.jsp功能简述显示商品目录,在首页显示进入的URL/product/categorydisplay进入方式Forward输入参数编号参数名称来

23、源说明输出描述显示商品目录的列表,目录分级显示JSP页面说明页面名称productdisplay.jsp功能简述显示商品列表,用户点击目录或从搜索页面进入进入的URL/product/productdisplay进入方式Forward输入参数编号参数名称来源说明目录标识request用户选中的目录作为参数传到此页面搜索关键词request用户输入的搜索关键词输出描述商品列表显示,显示项:商品图片,商品名称,市场价,会员价,是否有货JSP页面说明页面名称productdetail.jsp功能简述显示商品详细信息,用户点击商品进入此页面进入的URL/product/productdetail进入方

24、式Forward输入参数编号参数名称来源说明商品标识request用户选中的目录作为参数传到此页面输出描述商品详细信息页面,显示项:商品图片,商品名称,市场价,会员价,是否有货,商品描述信息,商品评论信息JSP页面说明页面名称cart.jsp功能简述显示购物车信息进入的URL/product/cart进入方式Forward输入参数编号参数名称来源说明sessionIdrequest系统参数输出描述购物车信息页面,显示购物车中的商品,显示项:商品图片,商品名称,市场价,会员价,数量。总计金额,总计折后价 JSP页面说明页面名称checkaccount.jsp功能简述显示结账信息进入的URL/product/checkaccount进入方式Forward输入参数编号参数名称来源说明sessionIdrequest系统参数输出描述结账信息页面,显示购物车中的商品,显示项:商品图片,商品名称,市场价,会员价,数量。总计金额,总计折后价 送货地址信息配送费用免除送货费金额JSP页面说明页面名称order.jsp功能简述显示订单历史记录进入的URL/product/order进入方式Forwar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论