1、详细设计说明书1 引言1.1 编写目的编写网上书店系统详细设计说明书的目的在于从详细设计的角度明确网上书店项目的业务品种、功能范围,明确与业务主机/终端系统的接口和业务处理模式,使系统开发人员和产品管理人员明确产品功能,可以有针对性的进行系统开发、测试、验收等各方面的工作。1.2 背景、定义、参考资料同上文档2.程序系统的结构(1)用户管理模块(2)图书管理模块图书管理模块图书删除 图书修改图书录入图 2 图书管理模块图(3)购物车模块添加商品购物车模块清空购物车更新数量 移除商品计算价格图 3 购物车模块图(4)查询浏览模块查询浏览模块按作者查询按出版社查询按类别查询 按年龄段查询按出版日期
2、查询(5)数据库模块数据库模块发货表 会员表 书籍表进货表3 程序 1(标识符)设计说明3.1 程序描述3.1 用户管理模块注册 登录用户图 1 用户管理模块图3.1.1 注册模块1、模块描述该模块完成用户注册的过程。2、输入、输出输入用户名、密码、邮箱 E-mail。3、模块接口关系允许进入进入注册成功提示页面拒绝进入返回注册页面3.1.2 登录模块1、模块描述该模块完成用户登录的过程,用户登录成功后才能完成图书购买等功能。2、输入、输出输入用户名、密码。输出:进入书店会员界面。3、模块接口关系允许进入进入书店系统拒绝进入返回登录页面4、模块算法实现进入书店返回登录首页普通游客是否会员注册输
3、入口令否是否合法 是否是3.2 图书管理模块3.2.1 图书录入模块1、模块描述该模块完成卖家用户查询图书数据库后实现书籍录入功能。2、输入、输出书号 图片 图书名 价格 数量 作者和图书简介3、模块算法实现卖家用户不执行任何操作点击添加按钮提示添加成功信息单击查询按钮判断是否有此书3.2.2、图书删除模块1、模块描述该模块完成卖家用户查询书籍数据库后实现书籍删除功能。2、算法实现卖家用户不执行任何操作执行书籍信息修改语句提示成功信息输入书名单击查询按钮查询是否有此书3.2.3 图书修改1、模块描述该模块完成卖家用户查询图书数据库后实现书籍价格、数量、书籍上架时间等书籍信息修改功能。2、输入、
4、输出序号 日期 数量 价格 数据类型 有效范围3、算法实现卖家用户不执行任何操作执行书籍信息修改语句提示成功信息输入书名单击查询按钮查询是否有此书3.3 购物车模块购物车模块清空购物车更新数量 移除商品添加商品计算价格3.3.1 添加书籍到购物车模块1、模块描述该模块完成买家用户购买书籍的功能2、算法实现用户添加商品获取购物车保存添加商品到购物车 更改车中数量是否有此商品3.3.2 计算价格模块1、模块描述该模块完成买家用户购买书籍打折后计算价格的功能3.4 查询浏览模块1、模块描述该模块完成注册用户查询浏览书籍、查看书籍销售排行的功能注册用户选择查询方式书名 作者 分类 销售排行榜输入所需要
5、求展示商品记录继续退出3.5 数据库模块3.5.1 表 books 概述 表 books 用于记录书籍信息 主键表 books 的主键是 bookid,类型 int 型,设置自动增量 外键无 约束无 索引主键字段 bookid 具有自动创建聚集索引3.5.2 表 booktype 概述表 booktype 用于记录书籍类型信息 表定义 主键表 booktype 的主键是 booktypeid,类型 int 型,设置自动增量 外键无 约束无 索引主键字段 booktypeID 具有自动创建聚集索引3.5.3 表 user 概述表 user 用于记录用户信息 表定义表 user 定义如图所示 主键
6、表 user 的主键是 userid,类型 int 型,设置自动增量 外键无 约束无 索引主键字段 userid 具有自动创建聚集索引编码规范JAVA 编码规范命名规范Package 的命名Package 的名字应该都是由一个小写单词组成。包名:package com.ascent.beanpackage com.ascent.business;package com.ascent.business.service; package com.ascent.dao;package com.ascent.dao.hibernate;package com.ascent.struts.action;
7、package com.ascent.struts.form;package com.ascent.util;Class 的命名类名用大写字母开头的而其他字母都小写的单词组成,其中包含的所有单词都应紧靠在一起。public abstract class AbstractBook implements java.io.Serializablepublic abstract class AbstractCustomerorder implements java.io.Serializablepublic abstract class AbstractOrderitem implements jav
8、a.io.Serializablepublic class Order extends AbstractOrder implements java.io.Serializablepublic class Orderitem extends AbstractOrderitem implements java.io.Serializable方法的命名方法名用小写字母组成的单词开头,后边跟上大写字母开头而其他字母都小写的单词组成,其中包含的所有单词都应紧靠在一起。public AbstractBook()public AbstractCustomerorder()public Integer get
9、CustorderId()public String getCustorderName()public String getTelephone()public Integer getPost()public String getEmail()public Integer getOrderId()public Order getOrder()public AbstractOrderitem()public Integer getOrderItemId()public synchronized static AppContext getInstance()private AppContext()p
10、ublic AbstractApplicationContext getAppContext()public void destroy()public ShoppingCart()public List getItems()public void emptyCart()public Book getBook()public int getQuantity()public int getBookId()Class 中变量的命名类中的一个变量的名字 = 类型标志 + 描述词。变量和参数用小写字母开头的单词和大写字母开头其他字母都小写的单词组合而成。如果通过以上规则,还出现同名的变量,可以在变量后添
11、加后缀来解决,但后缀应该以” _”来连接.public AbstractBook(Integer bookId, String bookName, String bookAuthor, Double bookPrice, String image, String describes)public AbstractCustomerorder(Integer custorderId, String custorderName, String telephone, String address, Integer post, String email, Integer orderId)public A
12、bstractOrderitem(Integer orderItemId, Integer quantity,Integer orderId, Integer bookId)public Orderitem(Integer orderItemId, Integer quantity, Integer orderId, Integer bookId)public AbstractOrder(Integer orderId, Integer customerId, Double totalprice)数组的命名本系统中未使用到数组变量常量的命名static final 常量的名字应该都大写,并且指
13、出完整含义。 参数的命名方法中参数的名字规则为第一个单词首字母小写,其后的单词的每个字母大写public Customer getCustomer(int id);public List findCustomerByName(String name);public Customer updateCustomer(Customer customer);public void removeCustomer(Customer customer);public Order saveNewOrder(Order order);public Order findOrderById(int id);JSP
14、文件的命名JSP 文件名 = 模块(或功能)名 + 操作(增加、修改、查询、查询结果、查看等)adminlist.jsp 管理员首页addbook.jsp 添加图书信息bookdetail.jsp 图书详情Booklist.jsp 管理员图书列表Cartok.jsp 填写购物车客户信息Headad.jsp 管理员登录首页头部Index.jsp 主页面Login.jsp 用户登录页面Morebookin.jsp 更多图书页面Reg.jsp 用户注册页面Tail.jsp 首页底部页面Updatesearchbook.jsp 修改查询图书(管理员)Userlist.jsp 用户信息列表画面部品的命名
15、画面部品是指在开发中使用的来源于 treck 共通基类的各种显示用部品.这类部品的命名原则基本上和变量的命名原则类似,只是将类型标志替换成部品类型即可.用户注册页面 user/index.htm 提交的数据表单如表所示。名称 元素类型 含义Username Text 用户名Password Text 密码Pasa Text 确认密码Email Text Email用户资料修改页面提交的数据表单名称 元素类型 含义Username Text 用户名Password Password 密码Email Text Email添加留言页面提交的数据表单(未实现)名称 元素类型 含义Username Te
16、xt 姓名Email Text EmailMotif Text 留言主题Demo Text 留言内容Form1 Form Action=”addle.jsp” method=”post”登录页面提交的数据表单名称 元素类型 含义Login Text 用户名Password Password 密码添加商品信息提交的数据表单如表所示。名称 元素类型 含义Warename Text 商品名称Wareprice Text 商品价格Waretype Text 商品类型Wareintro Textarea 商品介绍Image Text 展示图片路径Str Checkbox 是否推荐Forml Form A
17、ction=”wcheck.jsp” method=”post”添加链接页面提交的数据表单如表所示:名称 元素类型 含义Linkname Text 链接名称Address Password 链接地址Form Format Action=”.link.jsp” method=”post”注释规范定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。Java 的注释有三种:/ 注释一行 /* */ 注释若干行除了以上两种之外,还有第三种,文档注释: /* */ 注释若干行,并写入 javadoc 文档本系统中使用第三种/* AbstractBoo
18、k generated by MyEclipse - Hibernate Tools*/* AbstractCustomerorder generated by MyEclipse - Hibernate Tools*/代码编写规范运算符的优先级优先级 运算符 结合律( ) . 从左至右! + - (类型) sizeof+ - * &从右至左* / % 从左至右+ - 从左至右 从左至右从高到 = 从左至右= != 从左至右& 从左至右 从左至右| 从左至右& 从左至右| 从右至左?: 从右至左低排列= += -= *= /= %= &= =|= =从左至右编码注意事项 JSP 页面中必填项用 * 标识,提交时如果必填项未填给出信息提示,并将焦点定位在未填项。 Struts+Spring+Hibernate 框架中的 java 异常处理统一在 Action 中捕获并处理,底层的异常逐级向上抛出。测试计划