jsp网站期末设计说明书(在线书店商城系统)_第1页
jsp网站期末设计说明书(在线书店商城系统)_第2页
jsp网站期末设计说明书(在线书店商城系统)_第3页
jsp网站期末设计说明书(在线书店商城系统)_第4页
jsp网站期末设计说明书(在线书店商城系统)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

PAGE1JSP动态网页技术设计说明书姓名:程超学号:20111130102班级:11软件技术指导教师:苏秀芝完成日期:2012.12.21

目录10349一、网站概述 1236261.1开发背景 1307731.2系统环境 1115501.2.1开发环境及使用工具 199421.2.2运行环境 16406二、系统设计 2272272.1需求分析 2278672.1.1功能描述 2305442.1.2系统结构 34522.2用例分析 31501三、数据库设计 5277473.1数据库关系图 522583.2数据库表 626083.2.1命名约定 6281683.2.2数据表结构 71756四、架构设计 8150344.1分层概述 84464.2系统架构图 911211五、模块设计与实现 9316255.1前台模块 92735.1.1会员注册 9140515.1.2会员登录 1251485.1.3图书管理 14190985.1.4购物管理 1676975.1.5个人管理 19231725.2后台模块 20280555.2.1管理员登录 20215775.2.2类别管理 2153485.2.3图书管理 21142555.2.4会员管理 2365045.2.5订单管理 24281945.2.6个人管理 2514767六、设计总结 265001七、参考文献 28PAGE1滨海在线书店设计说明书一、网站概述1.1开发背景2012年是中国先进文化大发展的一年,莫言成为了中国首位诺贝尔文学奖的获得者,中国也随之掀起了一股购书热潮。过去人们想要读书只能去书店买,去图书馆借,而现在的互联网时代,电子商务的出现极大的改变了消费者的观点,人们已经不需要在跑到书店买书了。如果想看一本书,只需要打开浏览器,去淘宝,当当,京东这些出名的电子商务网站上,输入上你想看的书名,各种版本的书籍尽在你的眼底。为了追赶当今世界电子商务的脚步,我们滨海也不能掉了队,所以现在急需开发出一款基于B/S架构的滨海在线购书系统,来满足我校广大师生购书的需求。“滨海在线书店”网站就是在此背景之下进行开发的。1.2系统环境1.2.1开发环境及使用工具本购书系统采用B/S架构,在windows7平台和JDK1.6环境下进行开发。服务器端采用Java语言,Java语言是目前世界上使用最为广泛的开发语言,具有强大的跨平台特性,保证了系统可在Linux,Unix和windows等主流服务器平台上部署运行。编码工具使用了MyEclipse8.5,界面设计工具使用了Dreamweaver8.0、Photoshop和Flash等。数据库采用的是mysql5.5,应用服务器采用tomcat6.0,在数据量和并发量不大的情况下足以支撑整个系统。数据库建模工具采用了ERStudio,UML建模工具采用了TrufunPlato和MicrosoftVisio2010。1.2.2运行环境本系统可在安装了Firefox,Chrome,IE等主流浏览器的PC上正常运行。二、系统设计2.1需求分析2.1.1功能描述会员功能:会员注册:游客需要通过注册,填写个人信息,成为系统会员,注册成功之后才可进入系统进行购书。会员登录:输入正确的登录名,密码和验证码进行登录。图书管理:当会员进入在线书店系统后,在主页中显示推荐图书页面,只有四中类别可以为热点类别,热点类别中的四种推荐书籍可以在主页显示。也可选购图书,会员可以通过输入图书的关键字进行搜索,关键字可以是图书名的一部分,也可以通过选择类别进行分类搜索。会员可以通过点击详细信息查看图书 的所有详细信息。购物管理:当会员选择购买某图书时,应该可以将对应商品的基本信息(例如书名、数量等)记录到我的购物车中,点击继续购买可以继续选购图书,点击清空购物车可以把购物车里的图书全部删除,点击结算按钮可以跳转到确认订单界面,在确认订单界面应该展现出订单的详细信息并要求会员填写自己的收货地址以方便配送。个人管理:会员可以修改除了登录名以外的其他任何信息,比如电话,邮箱等。会员也可通过输入原密码和新密码进行更改密码,原密码输入正确之后修改密码成功。管理员功能:类别管理:管理员可以添加一个新的图书类别,并可以指定该类别是否为热点类别的图书,管理员可以通过类别关键字搜索到图书的类别编号,名称以及是否为热点类别。图书管理:管理员可以通过输入书名,作者,上传图书图片等添加图书到数据库,管理员可以检索所有的图书信息,也可以通过关键字检索和类型检索,管理员可以修 改或删除任意一本图书。会员管理:管理员可以通过输入会员名字的关键字进行会员信息查询,并可以删除任意的会员。订单管理:管理员可以查看所有的订单的所有信息,还可以查看每一个订单的具体的订单项内容,也可以删除任意一个会员的订单。个人管理:管理员可以通过输入原密码和新密码进行密码修改。管理员登录:输入正确的登录名,密码和验证码进行登录。2.1.2系统结构根据系统功能分析描述,系统功能结构图如下图所示:图2.1滨海在线书店系统结构图2.2用例分析滨海在线书店系统的分为前台(会员)和后台(管理员),从系统整体角度分析,滨海在线书店系统的用例图下图所示:图2.2滨海在线书店系统用例图从管理员角度分析,后台功能模块的用例图如下图所示:图2.3滨海在线书店后台(管理员)模块用例图从会员角度分析,前台功能模块的用例图如下图所示:图2.4滨海在线书店前台(会员)模块用例图三、数据库设计3.1数据库关系图滨海在线书店系统由会员(Customer),管理员(Admin),图书(Book),图书类别(Type),订单(Orders),订单项(OrderItem)6个实体组成,由于本系统采用MVC模式开发,所以每一个实体都对应Model层下Entity层的一个实体类,其类组成和实体关系如下图:图3.1Entity层的类组成图3.2数据库实体关系图3.2数据库表3.2.1命名约定数据库的命名约定:项目名+开发人员名称的首字母简写,本系统数据库名为bookshopcc。数据库表的命名约定:与项目中Model层下实体类的名字一致,例如项目中Customer.java为一个实体类,数据库中Customer为与其对应的数据库表。数据表字段的命名约定:数据表名首字母_字段名,例如Customer表的password字段命名为c_passsword。数据表中外键字段的命名约定:数据表中所有的外键字段名都与被参考的表的外键字段名相同,例如Book表中的类别编号t_id字段就与Type表中的t_id字段名一致。约束命名约定:约束类型_表名_被约束字段名,例如Customer表的主键约束名为pk_customer_c_id。索引命名约定:index_索引类型_表名_字段名,例如Type表的t_id字段为聚集索引,命名为index_clustered_Type_t_id。3.2.2数据表结构Customer会员表:共10个字段,其中c_id为主键,自增长。如下图所示:图3.3Customer表结构Admin管理员表:共4个字段,其中a_id为主键,自增长。图3.4Admin表结构Type图书类别表:共3个字段,其中t_id为主键,自增长。图3.5Type表结构Book图书表:共11个字段,其中b_id为主键,自增长。t_id为外键,参考type表t_id字段。图3.6Book表结构Orders订单表:共10个字段,其中o_id为主键,自增长。c_id为外键,参考Customer表c_id字段。图3.7Orders表结构OrderItem订单项表:共6个字段,其中oi_id为主键,自增长。o_id为外键,参考Orders表o_id字段,b_id为外键,参考Book表b_id字段。图3.8OrderItem表结构四、架构设计4.1分层概述滨海在线书店系统架构采用的是web开发最流行的MVC模式的三层架构模式,MVC模式使界面和业务逻辑完全分离,降低了程序的耦合度,利于日后的扩展和维护。界面层:所有的jsp页面和html页面,负责把数据展现到网页上。控制器:controller包下的所有Servlet做控制器,负责接受客户端发送的请求,调用Service处理数据并根据处理结果进行相应的页面跳转。业务层:service包下提供一系列处理业务逻辑的接口,service.impl包下的类来实现这些接口,处理具体的业务逻辑,做业务层。实体层:entity包下提供了数据交互时所需要的实体类,是各层之间数据传递的桥梁,做为实体层。4.2系统架构图滨海在线书店系统的整体架构图如下:图4.1滨海在线书店系统架构图五、模块设计5.1前台模块5.1.1会员注册客户如果想访问滨海在线书店购书,需要先进行注册,注册时需要填写自己的个人真实信息,以便购买图书后的卖家及时配送。会员注册功能界面如下图所示:图5.1用户注册界面注册时每一条信息都必须填写,如果不填,则给出友好提示,如下图所示:图5.2用户注册界面输入为空错误提示两次输入的密码必须一致,如果不一致则给出友好提示,如下图所示:图5.3用户注册两次输入密码不一致错误提示邮箱必须按邮箱规定格式输入,如果格式不正确,则给出友好提示,如下图所示:图5.4用户注册邮箱格式不正确提示像这种弹出窗口的提示还有用户的电话号码和邮编是否为数字的验证,用户名、密码是否超过数据库规定长度等等,这些在浏览器端的提示都是通过javascript的正则表达式来实现。点击注册按钮后,表单数据提交到CustomerServlet,CustomerServlet接收表单数据,把表单数据封装到Customer对象中,调用CustomerServiceImpl类中的saveCustomer(Customercustomer)方法,把该Customer所有信息存入数据库,如果c_id存在则提示用户该登录名已经存在。此处还使用了数据库操作的辅助类DBUtil、SqlHelper类以及perties配置文件。DBUtil类使用了Singleton模式(单例模式)封装了JDBC连接数据库和关闭数据库的方法,使用简便,提高了加载效率,相比多次实例化数据库对象节省了堆内存空间,同时也实现了代码的复用。perties文件存储了数据库连接需要的参数,本项目使用的是mysql,如果需要更换为oracle、sqlserver或其他数据库,则只需要修改配置文件并把jar包引入即可。perties文件如下图所示:图5.5perties文件SqlHelper类与DBUtil类一样,同样使用了singleton模式,封装了数据库的CRUD操作,但如果涉及到事务,需要一次性执行多个操作的时候无法时候此类,比如后面要实现的提交订单和删除订单同时涉及到Orders和OrderItem这两张表,就无法使用此类了。当注册成功后页面自动跳转到登录界面。5.1.2会员登录登录分为会员登录和管理员登录,二者共用一个登录界面,登录系统时,需要输入正确的登录名、密码、身份和验证码进行登录验证处理。登录界面如下图所示:图5.6登录界面登录时首先进行验证码的校验,当验证码输入正确之后再去数据库进行登录名和密码的校验,如果验证码输入错误则给出提示。图5.7验证码输入错误界面验证码采用Servlet以及GUI绘图技术实现,将随机生成的验证码放到session中,进行登录验证时候把随机生成的验证码从session中取出,如果一致,则验证通过,去数据库进行登录名和密码的验证,如果输出有误,同样给出相应的提示。图5.8登录名或密码输出错误界面验证成功后,进入会员前台界面。前台主界面如下图所示:图5.9前台主界面前台界面使用Extjs框架设计,此界面布局采用的是Extjs官方文档中提供的布局模版,界面清爽,左边部分每个功能模块单独作为一个按钮,每个功能模块之中还包含子功能按钮,右侧区域负责展现,不同的页面以选项卡的形式打开。右侧部分做了修改,直接使用的是一个<iframe>显示相应界面,因此未涉及到ajax技术局部刷新的问题。5.1.3图书管理图书管理模块有两个子功能模块,分别是推荐图书和选购图书。Book和Type表的内容在整个系统中随处都用的上,如果把Book和Typed的信息在项目启动时候就被查询出放到容器里,就可以避免在用到的时候还需要去数据库里查找的不便,同时还减轻了Servlet的负担,Servlet只需要做控制器负责页面跳转,不需要传递数据了,降低了系统的耦合度,所以把存放Book和Type的List放到ServletContext中最适合不过,此处用到一个ContextListener类,此类实现了ServletContextListener接口。推荐图书是滨海在线书店向会员展示本书店热点类别图书和推荐图书的界面,在全部图书类别中只有4种类别可以作为热点类别,对应数据库中Type表t_ishot为true的记录。在全部图书中如果是被推荐的图书,对应数据库中Book表b_iscommend为true的记录,并且该图书的所属类别是热点类别,可以获得推荐图书页面展示的机会,推荐图书界面如下图所示:图5.10推荐图书界面选购图书功能是用户可以图书名的关键字进行模糊查询,同时也可以指定查找具体哪类图书的信息,当输入的图书名为空时,查询全部的图书,界面如下图所示:图5.11选购图书界面选购图书界面使用了分页技术进行展现,提供了上下翻页,链接到首页,尾页,以及链接到用户输入的指定页码的功能,在本系统中,默认每页最多显示5条记录。分页显示界面如下图所示:图5.12选购图书分页显示界面此处同样用到了js表单验证技术,跳转到特定的页码所输入的页码号必须为数字并且不能为空,如下图所示:图5.13跳转到特定页面错误显示分页显示图书信息功能用到了BookServlet、BookServiceImpl等类以及el表达式,jstl标签等。点击详细信息按钮之后,跳转到显示图书详细信息的页面,此页面可以查看图书的详细信息以及是否将图书加入购物车。图5.14图书详细信息界面5.1.4购物管理购物管理功能模块提供了查看我的购物车和我的订单两个子功能,方便会员对自己的购物信息进行确认和查看。当会员把图书加入到自己的购物车之后,可以到我的购物车页面查看购物车中的图书信息和所购图书的总价格,还可以修改每本图书订购的数量,以及把指定图书从购物车中删除或直接清空购物车,如下图所示:图5.15我的购物车界面购物车对象应该在登录时被创建,当会员下订单后或者关闭浏览器时,把购物车对象删除,所以购物车对象应该放在Session中。由于购物车内的属性是由Orders和Book共同组成,而Book的全部信息在ServletContext里已经存在,所以购物车对象中只需要存储Orders的相关信息,用Orders对象存放即可,相关代码如下:Ordersorders=newOrders();//创建一个购物车对象request.getSession().setAttribute("orders",orders);//把购物车对象放入session中当点击了“继续购物”按钮时,跳转到选购图书页面继续选购。当点击清空购物车按钮后,给出会员提示,如下图所示:图5.16清空购物车提示当点击了“结算”按钮时,跳转到确认订单页面,在此页面下可以查看订单信息以及填写收货人,收货地址等配送信息,如下图所示:图5.17确认订单页面点击了“提交订单”按钮后,如果配送信息正常通过js表单验证,把session中的购物车清空,则提示如下图所示:图5.18下单成功提示下单成功后,在我的订单页面中可查看自己的所有订单信息,如下图所示:图5.19我的订单界面点击“详单”按钮,可以查看该订单的所有订单项内容,如下图所示:图5.20我的订单详单界面5.1.5个人管理个人管理功能模块,有三个子功能模块,分别是查看及修改个人信息,修改密码和退出系统。个人信息页面可以查看和修改个人信息,如下图所示:图5.21个人信息界面修改密码页面可以修改个人密码,但原密码必须输入正确才能修改成功,修改密码界面如下图所示:图5.22修改密码界面点击退出系统按钮后直接跳转到登录界面,于此同时需要清除掉session中的个人信息,以防个人信息泄漏。5.2后台模块后台模块部分功能与前台模块的功能有部分重叠之处,重叠处不再进行详细讲述和列举相关代码。5.2.1管理员登录管理员登录界面与会员登录是同一个界面,如图5.6,登录时身份选择下拉列表中的“管理员”,登录成功后跳转到管理员后台页面,后台页面如下图所示:图5.23后台管理主界面5.2.2类别管理图书类别管理模块有两个子功能模块,分别是添加类别和查询类别。添加类别页面可以添加图书类别到数据库,但添加的类别名必须是Type表中没有的,并且不能为空,同样通过js进行验证,还可以指定该类别是否为热点类别,所有类别中只有4种类别可以为热点类别,具有推荐图书页展示的机会,如下图所示:图5.24添加类别界面查询类别功能允许输入类别名关键字进行模糊查询,例如查询“术”字可以查询出美术和艺术两个类别,如下图所示:图5.25查询类别界面5.2.3图书管理管理员的图书管理模块与会员不同,有图书的增删改查四个功能。添加图书功能需要把除了图书简介之外的所有信息都填写上,图书图片采用文件上传方式,但因为技术原因,目前还没有实现,图书图片的存储采用存储图书url的方式,显示在页面上的时候只需要把图书的url得到即可,如下图所示:图5.26添加图书界面管理员的查询图书功能与会员查询图书功能类似,只是在查询出来的基础上还可以对查询出来的图书进行删除和修改操作,查询图书界面如下图所示:图5.27查询图书界面修改图书界面如下图所示:图5.28修改图书界面点击删除图书按钮给出提示,以防止点错误删,如下图所示:图5.29删除图书提示5.2.4会员管理会员管理模块提供了查询会员和删除会员两个功能。查询会员采用以会员真实名称关键字作为模糊查询,如果输入的关键字为空,则查询出所有会员的信息,查询出会员信息之后还可以对会员进行删除操作,如下图所示:图5.30查询会员界面删除会员同样给出提示,如下图所示:图5.31删除会员弹出提示5.2.5订单管理订单管理模块分为查询所有会员订单和删除指定会员订单两个功能,查询会员订单界面如下图所示:图5.32查询订单界面点击“详单”按钮可查看该订单的详细订单项,如下图所示:图5.33查询订单详单界面删除订单操作与添加订单操作一样,涉及到Orders和OrderItem两张表,所以需要放到同一个事务中操作,并切应该先删除OrderItem表中的相关数据,再删除Orders表中的相关数据。点击“删除订单”按钮弹出提示,如下图:图5.34删除订单弹出提示5.2.6个人管理个人管理功能模块,有两个子功能模块,分别是修改密码和退出系统。修改密码和退出系统的实现方法与会员的个人管理模块完全相同,界面如图5.22所示。六、设计总结经过这一周的项目实训,在自己的不懈努力之下,终于独立把这个滨海在线书店系统写完了,感觉有不小的收获,同时也发现自身存在太多的不足。刚开始做这个项目的时候,主要时间和精力花在了数据库建模和用例数据测试上了,大约花了半天多的时间。因为在之前我曾写过和这个书店系统类似的小项目得到很多经验和教训,如果不先把数据库的表结构设计好或者没搞清楚实体之间的关联关系,直接开始编码,往往写到一定程度就发现因为表设计的有问题,不得不重构数据库,之前很多工作都白费了。数据库设计好之后,就开始考虑架构的问题,课本上是用model1实现的,考虑到用model1写起来太不利于扩展,耦合度太高,所以决定用mvc写,写完之后虽然整体上符合mvc的思想,大部分页面也都使用了jstl标签和el表达式来处理数据,但是局部做的还不是很好,比如涉及到分页的jsp页面还搀杂着大量的java代码,这些问题还需要日后的不断学习才能解决。写项目过程中,遇到了很多技术上的问题,通过各种途径也解决了很多问题,通常在遇到问题的时候首先自己先尝试解决,解决不了再去Google或者百度上搜,Google是最好的老师这句话一点也没错,基本上90%以上的问题都可以通过Google得到解决。我认为独立解决问题的能力很关键,如果有一天我们离开学校离开老师了,能够独立解决问题的人更具有竞争力,当然如果问题实在解决不了,我也会选择请教老师或者去csdn技术论坛上发求助帖,通过写这个项目也提升了我独立思考和解决问题的能力。写完这个滨海在线书店项目,让我充分感受到写一个完整的项目绝非只有编码那么容易,从前期的需求分析工作到后期的设计,编码和测试都自己独立完成,如果只写后台功能的实现,最多也就是报几个错误,一般仔细看看输出的堆栈异常信息就可以解决。但涉及到前端页面的东西,确实是无能为力,俗话说,程序写的不好,关键看美工,美工对我来说是个很大的问题,DW,PS,FLASH基本都不会用,html标签除了表单以外其他基本都不会用,写出来的界面既不美观也不友好,只能通过去网上找现成的素材来做简单的界面,幸好我之前学了一段时间的javascript,表单验证还可以马马虎虎的做,Extjs也了解一点,所以就在Extjs提供的文档上找了一个现成的ext布局模版自己稍微改了改就拿来用做后台管理的界面了,再以后的学习中,jquery和ajax得重点学习一下,这个项目里很多地方其实可以用到ajax实现的地方,比如注册的时候用户名是否重复的验证,修改密码的时候原密码是否正确,我都没用上ajax异步验证,而是传统的提交表单验证,如果验证不通过再跳过来,这样设计确实存在很多不合理的地方。至于美工这方面本身我确实不怎么感兴趣,希望下次再做类似项目的时候,可以找到一位美工做的很好的同学来合作完成。通过写这种实际的项目,收获确实要比学知识点大,学知识点只能

温馨提示

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

评论

0/150

提交评论