本说明是网上购书系统案例研究项目软件产品的设计和实现说明,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计和出错处理设计等,记录了系统整体实现上技术层面上的考虑,并且以需求说明作为依据。同时该文档将作为产品实现、特性要求和控制的依据。
本文研究了一种基于数据关联规则网上书店系统,此方案与现今网上已采用的一些方案相比,具有用户使用更简单、界面更直观等优点。网上书店在我国刚起步,但发展很快。随着我国互联网的更加普及和网上书店的更趋成熟,会有越来越大的消费群体,市场潜力会得到充分发挥阐述整个个性化页面生成系统的系统结构及工作原理,分析了系统实现中的特殊性、难点和重点。设计实现用户管理、图书目录管理、图书信息录入管理、书店定单管理、图书的浏览和查找、书店购物结帐功能等JSP页面 。分析并解决实现中的若干技术问题,建立完整的网上书店,进行测试并分析结果。
本系统是用struts框架在网络上架构一个动态的电子商务网站,它是在Windows XP下,以mysql为数据库开发平台,tomcat网络信息服务作为应用服务器,采用JSP+struts技术开发的网上购书系统。它分前台部分和后台部分,前台部分由用户使用,主要包括用户注册,购物车管理,订单管理,个人资料管理功能;后台部分由管理员使用,主要包括商品管理,处理订单,用户信息管理等功能。
建立后的网站系统是一个动态、交互式、具有商品提供、系统管理、等功能的电子商务网站。
关键词 网上书店;struts;JSP;Sql server 2005
- 1 -
目录
第1章 网上购书系统详细设计与实现 ............................................................ 3 1.1 软件体系结构设计 ................................................................................... 3 1.2 数据库设计 ............................................................................................... 3 1.2.1 数据库技术概念描述 ........................................................................ 3 1.2.2 数据库管理系统(DBMS)概述 .......................................................... 4 1.2.3 数据字典 ............................................................................................ 4 1.3 类设计 ....................................................................................................... 6 1.3.1 com.bookstore.action包中的类 ......................................................... 6 1.3.2 com.bookstore.bean 包中的类 ........................................................... 8 1.3.3 com.bookstore.dao包中的类 ........................................................... 10 1.4 功能设计 ................................................................................................. 12 1.4.1 登录功能 .......................................................................................... 12 1.4.2 购买或查询书籍功能 ...................................................................... 12 1.4.3 订单管理功能 .................................................................................. 13 1.4.4 图书查询和管理功能 ...................................................................... 14 1.4.5 用户管理功能 .................................................................................. 15 1.5 算法设计 ................................................................................................. 16 1.5.1 购买图书功能算法设计 .................................................................. 16 1.5.2 登录功能算法设计 .......................................................................... 17 1.5.3 查询图书功能算法设计 .................................................................. 17 1.5.4 管理用户算法设计 .......................................................................... 17 1.5.5 订单维护算法设计 .......................................................................... 17 1.5.6 图书详细信息算法设计 .................................................................. 17 1.6 界面设计 ................................................................................................. 18 1.7 本章小结 ................................................................................................. 19
- 2 -
第1章 网上购书系统详细设计与实现
1.1 软件体系结构设计
本系统主要有两层,一层是存储管理,那是数据库存储了了本系统用到的数据库表以及数据。下面主要是管理员管理,和用户的操作。其实用户也可以管理,只不过可以管理自己的密码,和所下的订单。对于密码用户可以修改,也可以让管理员修改。用户所下的订单,可以删除。可以删除自己某个订单。至于管理员,权限就很广了,管理员不但可以对订单进行处理和查询,还可以对图书信息和用户信息进行维护和查询。同样是列出列表,但是管理员可以按图书的销量;新上架多少本的图书;按图书的作者,出版社,分类(java,数学,英语等….),书名进行模糊查询,点击图书的图片可以看到图书的详细信息,删除该书,更改该书的库存量更改图书的照片。同样也可以添加图书,利用填写表单的方式添加一本图书,当然有表单验证,比如书籍的销售量不能是负的,书籍的名称不能是数字,字母等。对于用户,单机用户名可以查看用户的详细信息,而且用户的密码作为管理员可以修改,管理员可以删除用户。管理员可以对所有用户的所有订单以及所有订单下的订单项进行维护。
本系统是基于MVC设计模式,B/S架构的在线购书电子商务应用系统,它具有以下功能:
1.在线图书浏览、注册用登录、图书购买及个人信息管理等功能。 2.图书信息添加、关键字搜索(包括分类查询和书名查询,按作者出版社查询等)、详情查询、信息 修改、删除;用户信息详情查询、修改、删除;订单信息详情查询、修改、删除及订单用户详情查询。本系统中的数据库查询采用了分页式查询处理技术。这样便可大大提高数据的 查询速度,同时可避免因查询的数据量过大而引起数据库服务器的超负荷运行甚至系统崩溃。此外,本系统使用MVC模式,方便了今后对系统的维护及扩展。系统至少可支持100个用户的同时在线访问。
本系统将使用MySql5.0作为数据库存储系统。开发平台为Myecplise7.1.开发语言为java/j2EE。
1.2 数据库设计
1.2.1 数据库技术概念描述
数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广的技术之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。数据库,是存放数据的仓库。数据是按一定的格式存放的。数据库是
- 3 -
指长期储存在计算机内、有组织的、可共享的数据集合,它是数据管理的最新技术,是计算机科学的重要分支。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据性和易扩展性,并可为各种用户共享。今天,信息资源已经成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或者组织生存和发展的重要条件。因此,作为信息系统核心和基础的数据库技术得到越来越广泛的应用,从小型单项事务处理系统到大型信息系统,从联机事务处理到联机分析处理,从一般企业管理到计算机辅助设计与制造(CAD/CAM)、计算机集成制造系统(CIMS)、办公信息系统(OIS)、地理信息系统(GIS)等,越来越多新的应用领域采用数据库存储和处理他们的信息资源。对于一个国家来说,数据库的建设规模、数据库信息量的大小和使用频率已成为衡量这个国家信息化程度的重要标志
1.2.2 数据库管理系统(DBMS)概述
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。他是数据库系统的一个重要组成部分,其主要功能包括以下几个方面:
1.数据定义功能
DBMS提供数据定义语言(DDL),用户通过它可以方便地对数据库中的数据对象进行定义。
2.数据操纵功能
DBMS还提供数据操纵语言(DML),用户可以使用DML操纵数据实现对数据库的基本操作,如查询、插入、删除和修改等。
3.数据库的运行管理
数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
4.数据库的建立和维护功能
它包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。
1.2.3 数据字典
网上商店中有以下几个实体:用户,图书分类,图书,订单,订单项。
1.订单项表(orderitem)
Orderitemid (订单项id),quantity (订单项所对应的图书的购买的数量),ordersid (订单项所属订单的编号), bookid(订单项所对应的书籍的编号)。见订单项表如表3-1所示。
表3-1 orderitem订单项表
- 4 -
字段名称 数据类型 键值 自增 允许为空 描述 Orderitemid Int 主键 增一 标志id Quantity Int 数量 Ordersid Int 外键 是 所属订单 bookid Int 外键 是 所属图书编号 2. 用户表(user)
id(用户的编号),username(用户名),password(密码),realname(用户的真实姓名) ,sex(用户的性别),email(用户的电子邮箱),address(用户的地址),post(用户的邮编),tel(用户的电话号),logintime(用户登录的次数),role(角色)。见用户表如表3-2所示。
表 3-2 user用户表 字段名称 数据类型 主键 自增 允许为空 描述 id Int 是 增一 标志id username Varchar(20) 用户名 Password Varchar(20) 密码 realname Varchar(50) 是 真实姓名 Sex email address Varchar(10) Varchar(50) Varchar(50) 是 是 性别 电子邮箱 地址 Post Varchar(25) 邮编 tel Varchar(25) 电话 logintime Int 登陆次数 Role Int 角色 3.订单表(order)
ordersid(订单编号),userid(订购者的编号),ordersdate(订单的日期)state(订单状态)。见订单表如表3-3所示。
表3-3order订单表 字段名称 数据类型 主键 自增 允许为空 描述 orserid Int 是 增一 标志id ordersdate Varchar(20) 订单时间 state Varchar(10) 订单状态 Userid Int 订购者id(外) 4.图书表(book)
bookid(图书编号) ,bookname(图书名字),price(价格),picture(图书的图片路径),kindname(图书分类),author(作者),publish(出版社),sellcount(销售量),storage(库存量)。见图书表如表3-4所示。
- 5 -
表3-4book图书表 字段名称 Bookid Bookname Price Picture kindname author publish sellcount storage 数据类型 Int Varchar(20) Int Varchar(30) Varchar(10) Varchar(15) Varchar(50) Int Int 主键 是 自增 增一 允许为空 是 描述 标志id 图书名 价格 封面 图书类别 作者 出版社 销售量 库存量 1.3 类设计 系统功能包主要有:与数据库的表对应属性字段的实体com.bookstore.bean;在dao文件中,编写jdbc代码,让实体bean与数据库交互的com.bookstore.dao;介于jsp与dao文件之间,用于调用dao文件com.bookstore.action;与其对应的bean文件一样,但是用户可以在jsp页面提交后,在action中可以自动获得,类继承com.bookstore.form;Junit测试包,是一种白盒测试,专门测试dao文件是否能用,有没有错误com.bookstore.test。
1.3.1 com.bookstore.action包中的类
1.3.1.1 bookaction.java中方法详细介绍
1.showbook() 查询出所有图书,转入一个jsp显示书籍列表。
2.viewbook()根据bookid查询图书的详细信息,转入一个jsp显示详细信息。
3.NewTenBook()查询出最新上架的十本书籍,转入一个jsp显示这些书籍的书籍列表。
4..selectColumn()显示图书按什么查询的字段,按作者,出版社,还是书籍类型,就是选择要显示的字段转入一个jsp显示。
5.showBookColumn()根据上个方法选择的字段,将字段值查出来,查询出按条件查询出的书籍,转入jsp中并显示书籍列表
6.sortBookTw() 显示销售量前20的书籍,按销售量降序排列,放到一个列表中。再跳转到一个jsp中显示这个列表。
7.sortBookAll()将所有书籍按销售量排列,按销售量降序排列,放到一个列表中。再跳转到一个jsp中,遍历显示这个列表。
8.addBook()添加图书。
- 6 -
1.3.1.2 useraction.java中方法详细介绍
1.register()用户注册,获取表单的值,传到数据库,来添加一个普通用户。
2.login()用户登录,先查询出在数据库中有无该用户名,在判断和数据库中的密码是否一致,然后再根据用户名查询出该登录用户的角色是普通用户还是管理员。跳转到不同的页面。
3.showUser()先判断是不是管理员,如果是查询出所有用户,放到一个列表里,再跳转到一个jsp中遍历该列表,来显示所有用户信息。
4.viewUserById()根据用户传到此方法的id,查询数据库该用户的详细信息,放到request对象中,传入下一个jsp中。
5.updateUser()根据用户的id和用户新的password更改数据库中该用户的密码。
6. deleteById()根据用户id删除该用户。
7.logout() 退出系统,关闭当前会话(删除session中的信息),回到主页。
1.3.1.3 Ordersaction中方法详细介绍
1.Public static Cart cart 不是一个方法,而是一个静态变量。是一个购物车对象,详见购物车类请看第二章。为什么要设置为静态的呢?因为购书可能反复购书。调用多次ordersaction.java,可能会产生多个ordersaction.java实例,如果设置成静态的,有利于共享,一个用户在不同的会话(当禁了Cookies时session不一样,当然IE浏览器除外,火狐能看出来)共享一个购物车。
2.shopping() 购买书籍,每一次提交完购买数量后都会调用该方法。将图书放入到购物车中。
3. removeItem()清空购物车中的内容。
4.saveOrder()用户点击进入结算中心,会将订单和订单项存到数据库中,等待管理员维护。先遍历购物车,将购物车中的订单项遍历出来,依次保存在订单中。再将订单保存在数据库中。
5.selectAllOrders() 显示所有的订单到一个jsp中,跟显示所有图书,显示所有用户一样。这个只有管理员才能操作的,该方法会先判断权限是不是管理员身份。
6.viewOrderById()显示出一个订单的详细信息包括订单的状态,和该订单下所有的订单项。
7.showMyOrders()显示当前用户的所有订单。
8.deleteOrderById()根据订单的编号,删除一个订单。
9.ModifyOrdersState()只有管理员才能调用,更改某个订单的状态。 1.3.1.4 UploadAction.Java下的方法
- 7 -
execute()更改该书的图片,将图片上传到wedRoot下的image文件夹中。由于Uploadaction.java没有继承dispatchAction,所以只有一个execute方法。
1.3.2 com.bookstore.bean 包中的类
1.图书类book.java
book类 中有bookid(图书编号) ,bookname(图书名字),price(价格),picture(图书的图片路径),kindname(图书分类),author(作者),publish(出版社),sellcount(销售量),storage(库存量)。见实体类图如图3-7所示。
2.用户类user.java
Use中id,username,password,realname,sex,email,address,post,Tel,logintimes,role,orderses,.分别是用户编号,用户名,密码,真实姓名,性别,电子邮箱,家庭住址,邮编,电话,登陆次数,角色(包括管理员和普通用户,管理员是1,用户是2),orderses是一个HashSet集合,包括一个用户对象的所有的订单,orderses就是一个所有订单集合。一个用户对应多个订单。见实体类图如图3-7所示。
3.订单类orders.java
Ordersid(订单号),user1(订单所属的用户),orderitemdate(订单生成的时间),state(订单状态:包括处理中;缺货中;已发货如果设置成已发货那么订单里的订单项里的图书销售量相应的增加,同时库存量减少)。Orderitems(一个订单里所有的订单项的集合)。一个订单对应多个订单项。但一个订单指数与一个用户。见实体类图如图3-7所示。
4.订单项orderitem.java
Orderitemid(订单项编号),quantity(购买图书的个数),orders1(该订单项所属的订单),book1(该订单项对应的图书),一个订单项就是对图书的封装,订单项中除了对图书的封装还有该图书的购买数量。见实体类图如图3-7所示。
5.购物车Cart.java
Cart类中有一个属性也是集合的,但是items其实是该订单所有订单项的集合,item是Map Cart中的方法public Cart()是构造函数,初始化items,addBook(Integer bookid,orderitem orderitem1)想购车中增加一本书,updateCart(Integer bookid,int quantity)更改图书数量,public int getTotalPrice()计算总价。见实体类图如图3-7所示。 6. 备注: 以上类说明省略setXXX() getXXX()方法。 - 8 - -Nbook*+bookid : int+bookname : string+price : int+picture : string+kindname : string+author : string+publish : string+sellcount : int+storage : int+setBookid(int bookid)()+setBookname(String bookname)()+setPrice(int price)()+setSellcount(int sellcount)()+setStorage(int storage)()+setAuthor(String author)()+setPublish(String publish)()+setPicture(String picture)()+setKindname(String kindname)()+getBookid()() : int+getBookname()() : string+getPrice()() : int+getPicture()() : string+getKindname()() : string+getAuthor()() : string+getPublish()() : string+getSellcount() : string+getStorage() : string-1*orderitem-int orderitemid-int quantity-orders1 : orders-book : book+getOrderitemid()() : int+getQuantity()() : int+getOrders1()() : orders+getBook1()() : book+setOrderitemid(int orderitemid)()+setQuantity(int quantity)()+setOrders1(Orders orders1)()+setBook1(book book1)()*-N*-N*-1-Nuser1*orders-ordersid : int-user1 : user-Set orderitem-ordersdate : string-state : string+setOrdersid(int ordersid)()+setUser1(user user1)()+setOrderitems(Set orderitems)()+setOrdersdate(String ordersdate)()+setState(String state)()+getOrdersid()() : int+getUser1() : user+Set getOrderitems()+getOrderdate()() : string+getState()() : string*-1-1-id : int-username : string-password : string-realname : string-sex : string-email : string-address : string-post : string-tel : string-logintimes : int-role : int-Set orderses+setId(int id)()+setUsername(String username)()+setPassword(String password)()+setRealname(String realname)()+setSex(String sex)()+setEmail(String email)()+setAddress(String address)()+setPost(String post)()+setTel(String tel)()+setLogintimes(int logintimes)()+setRole(String role)()+setOrderses(Set orderses )()+getId()() : int+getUsername()() : string+getPassword()() : string+getRealname()() : string+getSex()() : string+getEmail()() : string+getAddress() : string+getPost()() : string+getTel()() : string+getLogintimes() : int+getRole()() : int+Set getOrderses()()*Cart-1-1*+ Map - 9 - 1.3.3 com.bookstore.dao包中的类 1.3.3.1 bookdao.java中的方法 1.ArrayList 2.book viewBook(int id) 连接数据库,根据id将该书的所有字段信息查出来,复制到一个book对象中。返回该对象。该方法被bookaction.java中的viewbookById()调用。 3.ArrayList 4.ArrayList 5.ArrayList 6.ArrayList 7.ArrayList 8.Void modifySellCountStorage(int bookid,int newsellCount,int newStore)更改订单状态,假如订单状态更改为finished时, 该订单的订单项所对应的书籍的销售量增加至newSellcount, 库存量减少至newStorage。该方法被ordersaction.java中的modifyOrdersState()方法所调用。 - 10 - 1.3.3.2 userdao.java中的方法 1.int login(String username,String password) ,用户登录验证并调用同类中的login2(Stringusername)。本方法被useraction.java中的login()方法调用。 2.int login2(String username)用户每一次登录,将登录的次数加1。本方法被useraction.java中的login()方法调用。 3.int getRole(String username) 查询出当前用户的角色,返回当前用户的角色,被useraction.java中的login()方法调用,来跳转到不同的页面。 4.addUser1(user user1) 注册一个新用户,其实就是添加一个新用户到数据库中。此方法被useraction.java中的login()方法调用。 5.ArrayList 6.user viewUser(int id) ,根据id查询出该用户的详细信息,复制到一个user对象中去,返回该对象,该方法被useraction.java中的viewUserById()方法调用。 7.String updateUser(int id,String password)根据id和password更新该用户的密码。该方法被useraction.java中的updateUser()方法调用。 8.deleteUser(int id) 根据传进来的id删除这个用户,返回用户id,此方法被useraction.java中的DeleteById()方法调用。 9.int getUserId(String username) 根据用户名字返回用户的id号。 1.3.3.3 ordersdao.java中的方法 1.int saveOrder(orders order),用户生成一个订单 ,并将订单详细信息,并将这个订单存到一个orders 的一个对象中,将这个对象的各个属性的值存到数据库对应的字段的值中。就是将订单存到数据库。该方法被ordersaction.java中的saveOrder()方法调用。 2.ArrayList 3.HashSet 4.String modifyOrdersState(int modifyId,String state),更改订单的状态。第一个参数为要更改状态的订单的编号(id号),返回该订单的新状态,该方法被ordersaction.java中的modifyOrdersState()方法所调用。 - 11 - 1.3.3.4 orderitemdao.java中的方法 int addorderitem(orderitem orderitem1)增加一个订单项,在调用useraction.java中的saveOrder()方法的时候不但要调用ordersdao.java中的saveOrder(orders order)保存订单,还要将该订单中的所有的订单项保存在数据库中。 1.4 功能设计 1.4.1 登录功能 根据输入的名字和密码查找数据库中是否有该用户,以及密码对不对。若登陆成功则转入两种页面,一种是普通用户登陆成功界面,一种是管理员登陆成功界面用mapping.findForward(“”)实现。如果是登陆没成功,那就找到登陆没成功界面,或注册,或重新登录。见登录时序图如图3-11所示。 用户Login.jspUseraction.javaAdmin_login_success.jspmember_login_success.jsplogin()role=2role=1图3-11登录时序图 1.4.2 购买或查询书籍功能 如果普通用户登录成功后,点击超级链接“查看所有书籍”,会调用bookaction中的showbook()方法,在调用bookdao中的showbook()方法,将书籍列表放入一个集合中,集合是ArrayList - 12 - book_index.jsp页面中。在book_index.jsp页面中,在book_index.jsp中如果点击某一图书的图片,会将该书的id号传入到后台bookaction中调用bookaction中的viewBookById()方法查出该书的详细信息。将资源传入到book_view.jsp中。在book_view.jsp中填写购书表单,只需填购买数量,点击提交调用shopping()方法,如果用户没登陆跳转到notlogin.jsp中提示先登录在购买,如果已经登录,将书保存在购物车中,可以购买更多书籍,或者更新购物车中已有书籍的数量,或清空购物车,或退出系统。也可进入结算中心保存订单。如果用户已登录那么订单将被保存。见查询图书购买时序图如图3-12所示。 用户book_index.jspbook_view.jsporderaction.javanotlogin.jspaddOrderItem.jsp消息1消息2shopping()id not nullid is nullSaveOrder()图3-12查询购买图书时序图 1.4.3 订单管理功能 管理员登陆成功后点击查看所有订单。调用orderaction.java中的selectAllorders()的方法查询出所有订单,放入一个列表中,在order_index.jsp页面中遍历列表中所有的订单。单击订单的订单号,将订单号传入到后台,查出该订单所有信息 利用viewOrderById()方法。查出 - 13 - 来该订单下的所有的订单项的详细信息。利用下拉表的选项选择提交,更改该订单的状态(“处理中” 或“缺货拒绝” 或“已发货”),利用方法modifyOrderState()。值得一提的是如果订单状态改为已发货的话,该订单下的所有订单项的图书的销售量相应地增加,库存量相应地减少。modifyOrderState()在调用时会在方法体内调用bookdao中的modifySellCountAndStroage()方法。见订单管理时序图如图3-13所示。 管理员Admin_login_success.jspOrderaction.javaOrders_index.jspOrder_view.jsp登陆成功超级链接selectAllOrders()viewOrderById()modifyOrderState()图3-13订单管理时序图 1.4.4 图书查询和管理功能 管理员登陆成功,进入图书列表,管理员登陆成功点击超级链接“查看所有书籍”,会调用bookaction中的showbook()方法,在调用bookdao中的showbook()方法,将书籍列表放入一个集合中,集合是ArrayList - 14 - 的话,会跳转到book_view.jsp中。如果点击删除该图书可以将该书的编号传到后台,调用deleteBookById()方法将其删除。见图书管理时序图如图3-14所示。 管理员Bookaction.javaUploadaction.javaBook_index.jspBook_view_admin.jspshowBookList()viewBookById()deleteBookById()addBookexecute()图3-14图书管理时序图 1.4.5 用户管理功能 管理员登陆成功后,点击用户管理超链接,调用useraction中的showuser()方法,同样是将查询出来的所有用户放在一个列表里分页查询出来(本系统的所有查询均用了分页查询)。点击用户名,调用useraction中的viewByUserId()方法跳转到 user_view.jsp中显示该用户的详细信息,当然也是通过传递用户的id进行精确查询。和前边的查看某个订单,查看某个图书一模一样。然后在book_view.jsp中可以点击删除调用useraction中的DeleteById()方法将其删除,也可以点击更改该用户的密 - 15 - 码,提交新密码后提交到useraction中的updateUser中根据传到后台的用户id,和新密码的值,更改该用户密码。如图3-6所示。 管理员Useraction.javaUser_index.jspUser_view.jspUser_edit.jspDelete_user_success.jsp调用action的showUser()viewUserById()updateUser()DeleteById()图3-15用户管理时序图 1.5 算法设计 1.5.1 购买图书功能算法设计 1.首先判断登陆是否成功,创建一个购物车,购物车中有Map 2.用Public void addBook(Integer,orderitem)方法给items增加一个对象。 3.用Public void updateCart(Integer bookid,int quantity)给item中的一个对象的数量更改数量。 4.计算总价,total Public int getTotalPrice()遍历item中所有对象的价格乘以遍历出来的数量。 5.在Action中要创建一个Cart对象cart。 6.调用 cart.addBook(bookid,orderitem)。如果cart有就用原来的,没有创建一个新的。 7.创建一个session。HttpSession session=request.getSession(True),如 - 16 - 果session有用原来的,没有创建一个新的。 8..将cart放入session保存。 9.从session中取出购物车。 10.结算中心首先验证用户是否登录,没登陆跳到登陆界面,如果用户登录就把订单项添加到订单中保存订单。 1.5.2 登录功能算法设计 1.根据输入的名字和密码查找数据库中是否有该用户,以及密码对不对。 2.若登陆成功则转入两种页面,一种是普通用户登陆成功界面,一种是管理员登陆成功界面用mapping.findForward(“”)实现。 3.如果是登陆没成功,那就找到登陆没成功界面,或注册,或重新登录。 1.5.3 查询图书功能算法设计 1.游客和用户管理员均可查找。 2.根据选择条件查询,将查询来的书籍放入一个list中,再在jsp页面中显示出来。 3.如果是模糊查询,也是将图书放入list中跟2中一样,用jstl将session或request中的list遍历出来。 1.5.4 管理用户算法设计 1.前提是管理员登陆成功。 2.将查询出来的用户放入一个list中。 3.将list放在session或request中。 4.用 jstl标签遍历session或request中的list中的user。 5.点击用户名会将用户的姓名或id传到后台,根据id查询出该用户的所有信息。如果点删除可根据id删除该用户,如果点修改再提交可将更该信息传到后台更新该用户的信息。 1.5.5 订单维护算法设计 1.首先判断是不是管理员登陆的。 2.如是管理员,则用jdbc连接数据库显示所有订单。 3.单击订单名字,可看到订单详细信息,并将订单信息传入后台dao文件中,并处理该订单,拒绝或发货。 1.5.6 图书详细信息算法设计 1.点击图片,将图书的bookid传到后台,根据bookid查询数据库中该bookid的图书的详细信息。 - 17 - 2.填写数量,点击购买随后将书籍的信息,数量,用户名,密码传到Action中,将值渗入到cart对象中。 1.6 界面设计 为了使界面的名字,和界面的作用意义相对应,所以设计了以下界面。界面设计见表3-16所示。 表3-16界面设计 界面名称 password_not_equal.jsp register_success.jsp.jsp register.jsp SelectColumn.jsp service.jsp user_edit.jsp SortBookAll.jsp LookupBook.jsp unsuccess.jsp update_password_success.jsp notlogin.jsp user_index.jsp User_view.jsp User_edit.jsp my_edit_password.jsp addBook.jsp Book_view_admin.jsp Order_view.jsp Orders_index.jsp myOrders_index.jsp saveOrder_success.jsp myOrders_view.jsp addOrderItemSuccess.jsp adminLoginSuccess.jsp bookIndex.jsp book_view.jsp login.jsp delete_user_success.jsp index2.jsp 功能结构 密码不一致界面 注册成功界面 注册界面 查找第二层界面 服务中心界面 更改用户信息界面 按销售量排序界面 选择按什么查图书界面 密码错误界面 更改用户密码成功界面 提示没有登录界面 用户列表界面 单个用户界面 用户编辑界面 自己更改自己密码界面 添加图书界面 管理员维护某本图书界面 查看某个订单界面 订单列表界面 自己的订单列表界面 订单保存成功界面 维护自己订单界面 添加订单想成功界面 管理员登陆成功界面 图书列表界面 书籍详细信息界面 登陆界面 删除用户成功界面 主页 - 18 - MVC层次 View View View View View View View View View View View View View View View View View View View View View View View View View View View View View 续表3-16 界面名称 LookupBook.jsp member_login_success.jsp NewTenBook.jsp notlogin.jsp 功能结构 按什么查找图书界面 普通用户登录成功界面 最新是本书列表界面 提示没登陆界面 MVC层次 View View View View - 19 - - 20 - 1.7方案小结 详细设计阶段,在需求分析的基础之上规划出了系统的功能模块,以及在此分析基础上设计出的具体的、可以满足本系统全部需求的数据库。由于数据库在设计中有非常重要的作用,所以在开发过程中,在考虑数据库上的时间较多。管理员可以维护客户注册信息、维护图书信息、处理订单信息、商品销售。管理员在相对权限下可以对图书(或商品)信息进行录入、删除、浏览、查询、修改(商品销售)、维护个人信息,维护订单信息(接收订单并发货、拒绝订单、查询库存)。游客身份只能进行基本的信息浏览和查询,但是游客可以在线注册为会员,成为会员后在相对权限下可以对图书信息进行查询、浏览,并且可以维护个人信息,维护订单信息(订单状态查询或增加)。本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。 基于面向对象的编程特点,做了以上的详细设计,其中有体系结构设计,是专门设计软件的分层的设计。数据库设计则是按照需求分析设计出一系列表,以及所需的字段,虽然本系统表少了点,但是本系统功能强大,很多过程能用试图解决就用视图解决了,不需要查表,不但慢还占地方。类设计设计了所需要的类以及方法功能。功能设计,重要的是时序图,详细设计了用户和管理员访问的过程。算法设计,用语言详细地论述了了这些功能是如何用Java实现的。 - 21 -
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务