1、快乐买网上商城详细设计说明书0. 导言0.1 目的 本文档的目的是描述快乐买网上商城项目的详细设计,其主要内容包括: 系统功能简介 系统详细设计简述 在SSH框架下各个模块的分层结构 本文档的预期读者是: 设计人员 开发人员 项目管理人员 测试人员0.2 范围 该文档定义了系统的各个模块和模块接口,但未确定单元的具体实现,这部分内容将在编码实现中确定。0.3 引用标准 1 企业文档格式标准V1.1, XXX软件有限公司。 2 软件详细设计报告格式标准V1.1,XXX软件有限公司软件工程过程化组织0.4 参考资料 1 实战Struts,Ted Husted,机械工业出版社 2 Spring Li
2、ve,Matt Raible,0.5 版本更新信息 本文档版本更新记录如表C-1所示:表C-1 版本更新记录修改编号修改日期修改后版本修改位置修改内容概述0002015-2-180.1全部初始发布版本1. 系统设计概述 根据快乐买网上商城系统的概要设计,系统分前台业务和后台业务, 前台业务是针对终端用户使用,用户注册成网站会员后可以浏览商品,选购商品,秒杀商品等。访问个人中心还可以管理个人信息,购物车和订单。其功能模块如下图所示: 后台业务是针对管理员用户使用,管理员登录后台系统后可以对系统基本资料进行管理,如商品管理,用户管理,管理员账户管理,订单管理,评价管理等。其功能模块如下图所示:2.
3、 详细设计概述 本系统采用了SSH框架体系结构的设计,在整个开发过程中,尽可能采用复用的原则,例如使用工厂模式,JAVA反射机制达到统一数据库操作,统一结果显示等。 本文档的详细设计主要是按照SSH框架对视图层JSP、控制器Struts、业务层Spring和持久层Hibernate进行约定,为下一步的编码提供基础。3. 详细设计 系统前台业务实现 3.1用户注册模块 用户注册模块负责前台用户成为网站会员,注册成功的用户信息添加到users表中 3.1.1 实现流程图 3.1.2 输入输出规则用户注册模块输入输出规则模块名称用户注册功能描述用户注册成功后允许登录系统并享有注册用户的权限用户角色游
4、客模块触发条件打开首页选择“立即注册”输入规则输入用户基本信息。要求符合格式,另外账号不能重复,邮箱不能重复输出结果注册成功后打开登录界面关键算法1.查询数据中是否存在相同的账号和邮箱2.格式验证3.验证码的生成和验证数据库操作查询用户表,增加用户信息 3.1.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)register.jspindex.jspheader.jspfooter.jspUserAction.javaValidateCodeServlet.javaIUserBiz.javaUserBizImpl.javaIU
5、serDao.javaUserDaoImpl.java 视图层页面设计界面JSP功能描述注册界面register.jsp登录主页面首页index.jsp前台首页面,包括header.jsp和footer.jsp,是为了网站统一风格页面上端header.jsp复用页面,记载用户登录信息及个人信息维护菜单以及网站Logo等信息页面尾端footer.jsp复用页面,显示广告及友情链接信息Action/Servlet设计Action/Servlet入口方法出口UserActionregister.jspexecute() ()成功:login.jsp失败:register.jspValidateCod
6、eServletregister.jspdoPost()输出验证码业务层设计业务接口本模块业务方法方法说明IUserBiz.javapublic void saveUser(Users user);接收用户对象,将用户对象信息保存到数据库UserBizImpl.javapublic void saveUser(Users user)写具体的HQL语句,调用Dao层方法数据持久层设计持久层接口基类接口接口说明IUserDao.javaIGenericDao基类接口应用泛型和反射机制,对数据的操作进行统一处理,无需各持久层接口设计方法。UserDaoImplIUserDaoAGenericHibe
7、rnateDaoUserDaoImpl继承AgenericHibernateDao类,实现IUserDao接口 3.1.4 功能实现时序图 3.2 用户登录模块 用户登录是针对已注册的用户,登录成功后,注册用户获得购物交易的相应权限。 3.2.1 实现流程图 3.2.2 输入输出规则登录模块输入输出规则模块名称登录功能描述用户登录系统以达到注册用户的系统权限用户角色注册用户模块触发条件直接选择登录或在将商品加入购物车时转向登录输入规则按照注册时输入的用户名和密码及随机验证码。可以选择两周内自动登录,则用户名和密码将存入cookie;如果不选将用户对象存入session输出结果登录成功后打开首页
8、,登录用户信息存放在cookie中或者是session中,用户可以进行购买商品或对自己的信息进行维护。关键算法1.查询数据库中用户名和密码2.验证码的生成和验证3.两周内自动登录的选择4.根据用户ID获得用户默认收货地址数据库操作查询用户表 3.2.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)login.jspindex.jspheader.jspfooter.jspUserAction.javaValidateCodeServlet.javaIUserBiz.javaUserBizImpl.javaIReceiverBi
9、z.javaRecieverBizImpl.javaIUserDao.javaUserDaoImpl.javaIReceiverDao.javaRecieverDaoImpl.java视图层页面设计界面JSP功能描述登录界面login.jsp登录主页面首页index.jsp前台首页面,包括header.jsp和footer.jsp,是为了网站统一风格页面上端header.jsp复用页面,记载用户登录信息及个人信息维护菜单以及网站Logo等信息页面尾端footer.jsp复用页面,显示广告及友情链接信息Action/Servlet设计Action/Servlet入口方法出口UserActionl
10、ogin.jspUserLogin()成功:index.jsp失败:login.jspValidateCodeServletlogin.jspdoPost()输出验证码业务层设计业务接口本模块业务方法方法说明IUserBiz.javapublic Users CheckLogin(final String username,final String password);接收用户名和密码查询数据库返回Users对象UserBizImpl.javapublic Users CheckLogin(final String username,final String password);写具体的HQL
11、语句,调用数据持久层方法数据持久层设计持久层接口基类接口接口说明IUserDao.javaIGenericDao基类接口应用泛型和反射机制,对数据的操作进行统一处理,无需各持久层接口设计方法。UserDaoImpl.javaIUserDaoAGenericHibernateDaoUserDaoImpl继承AgenericHibernateDao类,实现IUserDao接口 3.2.4 功能实现时序图 3.3 商品搜索-品牌检索 用户可以根据网站列出的鞋子品牌、款式进行快速搜索鞋子。还可以根据商品名字进行模糊搜素。另外可以根据尺码、版型、颜色、品牌进行综合搜索。搜索到的鞋子以列表形式分页显示,可
12、以对两个及两个以上鞋子进行对比,可以查看某个鞋子的详细信息。 本环节首先说明品牌搜索实现过程 3.3.1 品牌搜索实现流程图 3.3.2 品牌搜索输入输出规则商品品牌搜索显示输入输出规则模块名称商品品牌搜索显示功能描述根据商品品牌搜索鞋子用户角色注册用户或游客模块触发条件打开网站首页输入规则用鼠标单击品牌链接输出结果显示同一品牌的所有鞋子列表关键算法1.品牌列表链接具备性别和品牌名称参数2.Action中获取到性别及品牌名称,根据性别和品牌名称查找Shoes表数据库操作查询brands表和shoes表 3.3.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务
13、层(biz)数据持久层(dao)left_menu.jspsearch.jspShoesAction.javaIShoesBiz.javaShoesBizImpl.javaIShoesDao.javaShoesDaoImpl.java视图层页面设计界面JSP功能描述首页左侧品牌导航页面left_menu.jsp列出品牌,款式及定制链接搜索结果页面Search.jsp,其中包含search_result.jsp根据前置条件将搜索结果列表显示Action/Servlet设计Action/Servlet入口方法出口ShoesActionleft_menu.jspSearchShoesByGender
14、Brand()search_result.jsp业务层设计业务接口本模块业务方法方法说明IShoesBiz.javapublic PageBean SearchShoesByGenderBrand(final String brandName,final String gender,final int currentPage,final int pageSize)根据品牌名字,性别,当前页数和每页记录数查询数据库中鞋子信息返回分页信息。ShoesBizImpl.javapublic PageBean SearchShoesByGenderBrand(final String brandName
15、,final String gender,final int currentPage,final int pageSize)写具体的HQL语句,调用数据持久层findByPageBean()方法数据持久层设计持久层接口基类接口接口说明IShoeDao.javaIGenericDao获取分页信息的统一方法public PageBean findByPageBean(final String hql,final Object param,final int currentpage,final int pageSize);ShoesDaoImpl.javaIShoesDaoAGenericHiber
16、nateDaoShoesDaoImpl继承AgenericHibernateDao类,实现IShoesDao接口 3.3.4 功能实现时序图3.4 商品搜索-款式检索 3.4.1 款式搜索实现流程图 3.4.2 款式搜索输入输出规则商品款式搜索显示输入输出规则模块名称商品款式搜索显示功能描述根据商品款式搜索鞋子用户角色注册用户或游客模块触发条件打开网站首页输入规则用鼠标单击款式链接输出结果显示同一款式的所有鞋子列表关键算法1.款式列表链接具备款式名称参数2.Action中获取到款式名称,根据款式名称查找Shoes表数据库操作查询types表和shoes表 3.4.3视图层、Action、业务层
17、、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)left_menu.jspsearch.jspShoesAction.javaIShoesBiz.javaShoesBizImpl.javaIShoesDao.javaShoesDaoImpl.java视图层页面设计界面JSP功能描述首页左侧品牌导航页面left_menu.jsp列出品牌,款式及定制链接搜索结果页面Search.jsp,其中包含search_result.jsp根据前置条件将搜索结果列表显示Action/Servlet设计Action/Servlet入口方法出口ShoesActionleft_
18、menu.jspSearchShoesByTypes()search.jsp业务层设计业务接口本模块业务方法方法说明IShoesBiz.javapublic PageBean SearchShoesByTypes(final String typename,final int currentPage,final int pageSize);根据款式名称,当前页数和每页记录数查询数据库中鞋子信息返回分页信息。ShoesBizImpl.javapublic PageBean SearchShoesByTypes(final String typename,final int currentPage
19、,final int pageSize);写具体的HQL语句,调用数据持久层findByPageBean()方法数据持久层设计持久层接口基类接口接口说明IShoeDao.javaIGenericDao获取分页信息的统一方法public PageBean findByPageBean(final String hql,final Object param,final int currentpage,final int pageSize);ShoesDaoImpl.javaIShoesDaoAGenericHibernateDaoShoesDaoImpl继承AgenericHibernateDao
20、类,实现IShoesDao接口 3.4.4 功能实现时序图(同3.3.4)3.5 商品搜索-根据商品名和产地模糊检索 3.5.1 模糊搜索实现流程图 3.5.2 模糊搜索输入输出规则商品模糊搜索显示输入输出规则模块名称商品名称模糊搜索显示功能描述根据商品名称,产地搜索鞋子用户角色注册用户或游客模块触发条件打开网站首页输入规则输入商品名称或产地关键字,并选择男款还是女款输出结果显示包含名称或产地关键字的所有鞋子列表关键算法1. 获取表单鞋子名称或产地关键字及性别2. Action中获取关键字和性别3. 业务层根据关键字和性别查询Shoes表数据库操作查询shoes表 3.5.3视图层、Actio
21、n、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)header.jsp search.jspShoesAction.javaIShoesBiz.javaShoesBizImpl.javaIShoesDao.javaShoesDaoImpl.java视图层页面设计界面JSP功能描述网站头部独立页面header.jsp接收关键字和性别选择搜索结果页面Search.jsp,其中包含search_result.jsp根据前置条件将搜索结果列表显示Action/Servlet设计Action/Servlet入口方法出口ShoesActionheader.js
22、pFuzzySearch()search.jsp业务层设计业务接口本模块业务方法方法说明IShoesBiz.javapublic PageBean FuzzySearch(Object params,final int currentPage,final int pageSize);根据鞋子名称,产地关键字及性别,当前页数和每页记录数查询数据库中鞋子信息返回分页信息。ShoesBizImpl.javapublic PageBean FuzzySearch(Object params,final int currentPage,final int pageSize);写具体的HQL语句,调用数据
23、持久层findByPageBean()方法数据持久层设计持久层接口基类接口接口说明IShoeDao.javaIGenericDao获取分页信息的统一方法public PageBean findByPageBean(final String hql,final Object param,final int currentpage,final int pageSize);ShoesDaoImpl.javaIShoesDaoAGenericHibernateDaoShoesDaoImpl继承AgenericHibernateDao类,实现IShoesDao接口 3.5.4 功能实现时序图(同3.3.
24、4)3.6 商品搜索-根据尺码,版型,颜色,品牌综合检索 3.6.1 综合搜索实现流程图 3.6.2 综合搜索输入输出规则商品综合搜索显示输入输出规则模块名称商品综合搜索显示功能描述根据鞋子尺码,版型,颜色,品牌搜索鞋子用户角色注册用户或游客模块触发条件打开网站首页输入规则输入鞋子尺码,版型,颜色,品牌输出结果显示符合综合条件的所有鞋子列表关键算法1. 选择鞋子尺码,版型,颜色,品牌一个或多个条件2. Action中获取实际选择的条件3. 业务层根据选择的条件查询Shoes表数据库操作查询shoes表 3.6.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务
25、层(biz)数据持久层(dao)search.jspShoesAction.javaIShoesBiz.javaShoesBizImpl.javaIShoesDao.javaShoesDaoImpl.java视图层页面设计界面JSP功能描述网站头部独立页面Search.jsp接收关键字和性别选择搜索结果页面Search.jsp,其中包含search_result.jsp根据前置条件将搜索结果列表显示Action/Servlet设计Action/Servlet入口方法出口ShoesActionsearch.jspexecute()search.jsp业务层设计业务接口本模块业务方法方法说明ISh
26、oesBiz.javapublic List FindShoesByObjects(String hql,Object params);根据鞋子名称,产地关键字及性别,当前页数和每页记录数查询数据库中鞋子信息返回分页信息。ShoesBizImpl.javapublic List FindShoesByObjects(String hql,Object params);写具体的HQL语句,调用数据持久层findByPageBean()方法数据持久层设计持久层接口基类接口接口说明IShoeDao.javaIGenericDao获取分页信息的统一方法public PageBean findByPag
27、eBean(final String hql,final Object param,final int currentpage,final int pageSize);ShoesDaoImpl.javaIShoesDaoAGenericHibernateDaoShoesDaoImpl继承AgenericHibernateDao类,实现IShoesDao接口 3.6.4 功能实现时序图(同3.3.4)3.7 商品详情 3.7.1 商品详情实现流程图 3.7.2 商品详情输入输出规则商品详情输入输出规则模块名称商品详情显示功能描述显示指定鞋子的详细信息用户角色注册用户或游客模块触发条件打开商品列表
28、页输入规则点击鞋子图片或商品名称输出结果显示指定鞋子的详细信息关键算法1. 鞋子列表中具有鞋子sid参数值2. Action中获取sid值3. 在业务层中通过sid值获取鞋子的详细信息数据库操作查询shoes表 3.7.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)search_result.jspproduct_detail.jspShoesAction.javaIShoesBiz.javaShoesBizImpl.javaIShoesDao.javaShoesDaoImpl.java视图层页面设计界面JSP功能描述鞋子列
29、表页面search_result.jsp显示鞋子列表鞋子详情页面product_detail.jsp显示鞋子的详细信息Action/Servlet设计Action/Servlet入口方法出口ShoesActionSearch_result.jspFindBySid()product_detail.jsp业务层设计业务接口本模块业务方法方法说明IShoesBiz.javapublic Shoes FindById(final int sid);根据鞋子id获取鞋子对象ShoesBizImpl.javapublic Shoes FindById(final int sid);写具体的HQL语句,调
30、用数据持久层findById(sid)方法数据持久层设计持久层接口基类接口接口说明IShoeDao.javaIGenericDao获取分页信息的统一方法public T findById(ID id);ShoesDaoImpl.javaIShoesDaoAGenericHibernateDaoShoesDaoImpl继承AgenericHibernateDao类,实现IShoesDao接口 3.7.4 功能实现时序图3.8 添加购物车 3.8.1 添加购物车实现流程图 3.8.2 添加购物车输入输出规则添加购物车输入输出规则模块名称添加购物车功能描述将鞋子添加到购物车用户角色注册用户模块触发条
31、件登录用户打开商品详情页输入规则选择尺码后添加到购物车输出结果打开购物车页面,显示购物车信息关键算法1.页面判断是否选择尺码和个人是否有默认收货地址 2.获取鞋子编号,尺码和数量(默认为1)3. 添加到购物车的Action中根据鞋子id,尺码,购买数量组合Shoesizes对象 ,shoesizes表中包含各鞋子对应尺寸的库存。4. 如果鞋子没有被删除,并且库存量大于购买量,将鞋子信息添加到Map集合(购物车 Cart ),并添加到session中数据库操作查询shoesizes表 3.8.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久
32、层(dao)product_detail.jspcart.jspcart_table.jspCartAction.javaIShoeSizesBiz.javaShoeSizesBizImpl.javaIReceiverBiz.javaReceiverBizImpl.javaIShoeSizesDao.javaShoeSizesDaoImpl.javaIReceiverDao.javaReceiverDaoImpl.java视图层页面设计界面JSP功能描述鞋子详情页面product_detail.jsp显示鞋子的详细信息购物车页面cart.jsp,其中包括cart_table.jsp显示购物车的
33、详细信息Action/Servlet设计Action/Servlet入口方法出口CartActionproduct_detail.jspexecute()cart.jspCartActionProduct_detail.jspgetDefaultAddress()personal_center.jsp业务层设计业务接口本模块业务方法方法说明IShoeSizesBiz.javapublic Shoesizes FindByShoesid(final int sid,final int count,final float sizes);根据鞋子id,数量,尺寸获取鞋子尺寸信息对象(包含库存)Sho
34、eSizesBizImpl.javapublic Shoesizes FindByShoesid(final int sid,final int count,final float sizes);写具体的HQL语句,调用数据持久层findByObject方法IReceiverBiz.javapublic Receives FindByDefault(int uid);根据用户id获得默认收货地址ReceiverBizImpl.javapublic Receives FindByDefault(int uid);写具体的HQL语句,调用数据持久层findByObject方法数据持久层设计持久层接
35、口基类接口接口说明IShoeSizesDao.javaIGenericDao根据条件参数获取集合public List findByObject(String hql,Object param);ShoeSizesDaoImpl.javaIShoeSizesDaoAGenericHibernateDaoShoeSizesDaoImpl继承AgenericHibernateDao类,实现IShoeSizesDao接口IReceiverDao.javaIGenericDao根据条件参数获取集合public List findByObject(String hql,Object param);Rec
36、eiverDaoImpl.javaIReceiverDao AGenericHibernateDaoReceiverDaoImpl继承AgenericHibernateDao类,实现IReceiverDao接口 3.8.4 功能实现时序图3.9 删除购物车商品 3.9.1 删除购物车商品实现流程图 3.9.2删除购物车商品输入输出规则删除购物车商品输入输出规则模块名称删除购物车商品功能描述将鞋子从购物车中删除用户角色注册用户模块触发条件登录用户在购物车页面选择删除商品输入规则点击“删除商品”链接 输出结果显示删除商品后的购物车信息页面关键算法1. 获取页面隐藏域信息2. 判断当前购物车中有几种
37、商品(根据单个商品总价)3. 如果存在多种商品,通过js操作DOM对象删除商品4. 如果只剩下一种商品,则将购物车清空,实际操作是将购物车对象从session中删除。数据库操作无 3.9.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)cart.jspcart_table.jspOrderAction.java无无视图层页面设计界面JSP功能描述购物车页面cart.jsp,其中包括cart_table.jsp显示购物车的详细信息及相关js操作Action/Servlet设计Action/Servlet入口方法出口OrderAc
38、tioncart_table.jspdeleteCart()index.jsp,清空购物车后返回首页 3.9.4 功能实现时序图不清空购物车(略)清空购物车3.10 结算购物车商品 3.10.1 结算购物车商品实现流程图 3.10.2结算购物车商品输入输出规则结算购物车商品输入输出规则模块名称结算购物车商品功能描述确定购物车中商品,提交结算用户角色注册用户模块触发条件登录用户在购物车页面选择“去结算”输入规则点击“去结算”链接 输出结果显示购物车所有商品结算信息和个人默认收货地址信息关键算法1. 获取购物车信息2. 获取个人默认收货地址信息数据库操作查询receives 3.10.3视图层、A
39、ction、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)cart.jspcart_table.jspOrderAction.javaIReceiverBiz.javaReceiverBizImpl.javaIReceiverDao.javaReceiverDaoImpl.java视图层页面设计界面JSP功能描述购物车页面cart.jsp,其中包括cart_table.jsp显示购物车的详细信息及相关js操作订单页面ordersheet.jsp订单信息页面(购物车和收货地址)Action/Servlet设计Action/Servlet入口方法出口O
40、rderActioncart_table.jspexecute()ordersheet.jsp 业务层设计业务接口本模块业务方法方法说明IReceiverBiz.javapublic Receives FindByDefault(int uid);根据用户id获得默认收货地址ReceiverBizImpl.javapublic Receives FindByDefault(int uid);写具体的HQL语句,调用数据持久层findByObject方法数据持久层设计持久层接口基类接口接口说明IReceiverDao.javaIGenericDao根据条件参数获取集合public List fi
41、ndByObject(String hql,Object param);ReceiverDaoImpl.javaIReceiverDao AGenericHibernateDaoReceiverDaoImpl继承AgenericHibernateDao类,实现IReceiverDao接口 3.10.4 功能实现时序图3.11直接购买商品 3.11.1 直接购买商品实现流程图 3.11.2直接购买商品输入输出规则模块名称直接购买商品功能描述在商品详情页选择直接购买商品,功能类似添加到购物车,只是直接购买的商品不经过购物车页面,直接到订单页用户角色注册用户模块触发条件登录用户在详情页选择“直接购买
42、”输入规则选择尺码后点击“直接购买”链接 输出结果打开订单页,显示购物车所有商品结算信息和个人默认收货地址信息关键算法1. 将商品添加到购物车但不现实购物车页面2. 获取个人默认收货地址信息数据库操作查询shoesizes表和receives表 3.11.3视图层、Action、业务层、数据持久层的说明视图Action/Servlet业务层(biz)数据持久层(dao)cart.jspcart_table.jspCartAction.javaIShoeSizesBiz.javaShoeSizesBizImpl.javaIReceiverBiz.javaReceiverBizImpl.javaIShoeSizesDao.javaShoeSizesDaoImpl.javaIReceiverDao.javaReceiverDaoImpl.java视图层页面设计界面JSP功能描述商品详情页面product_detail.jsp显示商品详情及“直接购买”链接订单页面ordersheet.jsp订单信息页面(购物车和收货地址)Action/Servlet设计Action/Servlet入口方法出口CartActionproduct_detail.jspBuynow()ordersheet.jsp 业务层设计业务接口本模块业务方法方
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100