JavaEE框架技术《网络书城系统分析与设计》院系:信息工程学院班级:10级(1)班学号:2010051131姓名:孙芳指导老师:曹建英网络书城一、需求描述网络书城的主要功能就是让用户能够足不出户就可以购买到自己想要的书籍,所以网络书城系统主要提供如下功能:1,、用户能够使用本网站完成图书的浏览、查询和购买。2、普通用户只能浏览图书的信息,浏览分为3种方式:按类别浏览、按条件浏览、查询图书。3、普通用户通过注册成为注册用户,注册后的用户可以登录,如忘记密码可以找回密码,登录后可以修改注册资料。4、注册用户登录后可以进行在线图书购买,购买的图书存放在购物车中,可以对购物车中的商品数量进行修改,删除。调整好购物车中内容后,可以把该内容保存到订单中,在保存订单的时候要求用户填写送货地址和联系方式。订单提交后用户可以开始新的购物过程。5、对于后台系统,要求可以进行商品目录的维护,商品的图片可以上传到服务器,可以进行特价商品维护,订单可以查询详细信息,具有订单确认和订单发送的功能。二、用例分析用例图显示(Use-caseDiagram)显示外部参与者与系统的交互,能够更直观地描述系统的功能。如图所示:用户注册登录注销找回密码修改用户信息浏览图书订购图书提交订单查看特价图书信息浏览所有图书按类别浏览按条件浏览添加图书到购物车购物车维护修改数量删除图书客户端用例图管理员登录图书维护订单处理确认订单发送订单浏览订单浏览修改添加删除特价图书设置网上书店后台维护后台维护端用例图三、功能设计如下图所示:功能划分表模块名子功能描述首页网站首页最新商品和特价商品信息,登录界面,类别分类管理员管理管理员登录提供用户名,密码、验证码后可以登录系统管理员密码设置管理员可以修改自己的密码用户管理用户登录提供用户名、密码、验证码后可以登录系统用户注册填写详细资料后成为正式注册用户用户资料修改用户登录后可以修改自己的注册资料用户密码找回忘记密码的用户可以通过E-mail找回密码图书浏览浏览所有图书列出所有商品,并且分页显示按类别查询根据选择的类别查询出所有图书,并分页显示按名称模糊查询根据名称和类别模糊查询,分页显示查看详细信息根据ID查询图书的详细信息,更新浏览次数商品订购添加购物车把需要的图书添加到购物车浏览购物车显示购物车中的内容修改购物车中图书的数量修改数量后,更新购物车删除购物车的图书购物车中图书可以删除保存购物车到订单把购物车中的内容保存到订单中,保存的时候需要填写用户的联系信息其他功能查看特价图书信息浏览特价图书,可以直接订购后台图书维护浏览图书按类别/名称查询商品,并且分页显示修改图书信息对单个图书的信息可以进行修改新增图书添加图书,图片可以上传到服务器特价图书维护可以把普通图书维护到特价商品,也可以取消特价商品后台订单维护查看订单列出所有未处理的订单订单确认把未确认的订单,可以查看每个订单的内容订单发送把已确认订单设置为已发送状态订单删除可以删除未确认订单四、数据库设计系统数据库命名为BookStore,8个数据表分别为bs_admin(管理员)、bs_role(角色)、bs_customer(客户)、bs_category(图书分类)、bs_book(图书)、bs_order(订单)、bs_details(订单细目)、bs_log(日志),如下图所示:五、程序结构设计系统采用分层结构,整体上分4层:视图层、控制层、业务逻辑层和数据访问层。视图层主要通过JSP或JSF实现,放在【Web页】文件夹下。为了便于管理,划分如下文件夹:admin(管理员)、customer(客户)、bs_customercust_idINT(11)cust_namevarchar(45)cuat_passwordvarchar(45)cust_realNamevarchar(45)cust_phonevarchar(45)cust_emailvarchar(100)cuat_addressvarchar(200)cust_zipcodevarchar(12)cust_datetimetimestampbs_orderord_idINT(11)cust_idINT(11)(FK)ord_datetimetimestampord_totalfloatord_orderStatevarchar(45)ord_sendWayvarchar(45)ord_recivervarchar(45)ord_phonevarchar(45)ord_emailvarchar(45)ord_addressvarchar(45)ord_zipcodevarchar(45)bs_detailsordd_idINT(11)ord_idINT(11)(FK)book_idINT(11)(FK)ordd_pricefloatordd_countINT(11)ordd_totalfloatbs_adminadmin_namevarchar(45)admin_passwordvarchar(45)admin_realNamevarchar(45)bs_rolerole_idINT(11)admin_namevarchar(45)role_namevarchar(45)bs_categorycat_idINT(11)cat_namevarchar(45)bs_loglog_idINT(11)log_infotextlog_ipvarchar(45)log_datetimetimestampbs_bookbook_idINT(11)cat_idINT(11)book_namevarchar(45)book_publishervarchar(45)book_isbnvarchar(45)book_picturevarchar(45)book_pricefloatbook_authorvarchar(50)book_desctextbook_countINT(11)book_discount(11)1∞∞∞∞∞1111book(图书)、bookimages(图书图像)、cart(购物车)、order(订单)、common(公共)、css(样式表)、images(图像)、script(脚本),如图所示:在源包下,建立bookstore.action(控制类包)、bookstore.idao(数据访问接口包)、bookstore.dao(数据访问实现类包)、bookstore.iservice(业务逻辑接口)、bookstore.service(业务逻辑实现类包)、bookstore.model(数据模型或实体类包)、bookstore.common(一些公共类包)、bookstore.tag(自定义标签包),如图所示:六、数据模型的设计1、管理员数据模型类BsAdmin。publicclassBsAdmin{privateStringadminName;privateStringadminPassword;privateStringadminRealName;privateListBsRolebsRoleList;……}2、角色数据模型类BsRole。publicclassBsAdmin{privateStringadminName;privateStringadminPassword;privateStringadminRealName;privateListBsRolebsRoleList;……}3、客户数据模型类BsCustomer。publicclassBsCustomer{privateIntegercustId;privateStringcustName;privateStringcustPassword;privateStringcustRepassword;privateStringcustRealName;privateStringcustPhone;privateStringcustEmail;privateStringcustAddress;privateStringcustZipcode;privateDatecustDatetime;……}4、图书分类数据模型类BsCategory。publicclassBsCategory{privateIntegercatId;privateStringcatName;……}5、图书数据模型类BsBook。publicclassBsBook{privateIntegerbookId;privateStringbookName;privateStringbookPublisher;privateStringbookIsbn;privateStringbookPicture;privatefloatbookPrice;privateStringbookAuthor;privateStringbookDesc;privateintbookCount;privateintbookDiscount;privateBsCategorybsCategory;……}6、订单数据模型类BsOrder。7、订单细目数据模型类BsDetails。8、日志数据模型类BsLog。七、数据访问接口设计1、数据访问层基接口IBaseDao,该接口定义了共有的数据访问方法。publicinterfaceIBaseDaoT,IDextendsSerializable{voidinsert(Tobj);voidupdate(Tobj);voiddelete(IDid);TfindById(IDid);ListTfindAll();ListTfindPage(intpageSize,intpageNo);intfindCount();}2、管理员数据访问接口IBsAdminDao,该接口只定义一个登录用的方法。publicinterfaceIBsBookDaoextendsIBaseDaoBsBook,Integer{ListBsBookfind(IntegerbookDiscount,Integernum);ListBsBookfindPage(IntegercatId,StringbookName,IntegerpageSize,IntegerpageNo);IntegerfingCount(IntegercatId,StringbookName);}3、客户数据访问接口IBsCustomerDao。4、角色数据访问接口IBsRoleDao。5、图书分类数据访问接口IBsCategoryDao。6、图书数据访问接口IBsBookDao。7、订单数据访问接口IBsOrderDao。8、日志数据访问接口IbsLogDao。八、业务逻辑接口设计1、管理员业务逻辑接口IbsAdminService。publicinterfaceIBsAdminService{BsAdminfindBsAdminByNameAndPassword(StringadminName,StringadminPassword);}2、角色业务逻辑接口设计IBsRoleService.publicinterfaceIBsBookService{voidaddBsBook(BsBookbsBook);voideditBsBook(BsBookbsBook);voiddeleteBsBook(IntegerbookId);BsBookfindBsBookById(IntegerbookId);ListBsbookfindBsBooks(IntegerbookDiscount,Integernum);ListBsbookfindBsBooksByPage(IntegercatId,StringbookName,Integerpagesize,IntegerpageNo);IntegerfindCount(IntegercatId,StringbookName);}3、客户