毕业设计(论文)-基于JSP的E满多网上书城系统的设计实现.doc_第1页
毕业设计(论文)-基于JSP的E满多网上书城系统的设计实现.doc_第2页
毕业设计(论文)-基于JSP的E满多网上书城系统的设计实现.doc_第3页
毕业设计(论文)-基于JSP的E满多网上书城系统的设计实现.doc_第4页
毕业设计(论文)-基于JSP的E满多网上书城系统的设计实现.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

全套设计加扣 30122505821.绪论1.1 课题背景、目的及意义1.1.1 课题背景随着Internet的普及和电子商务的兴起,网上图书销售是Internet电子商务在图书销售行业发展的必然结果,这样的网上销售图书的形式,与传统在实体店进行买卖的方式相比之下拥有很大的优势:第一,降低销售的成本。第二,利用Internet作为平台,改变了传统在实体店进行买卖的方式,使现代图书买卖活动不再受空间和时间的约束。第三,信息传递的速度更快,新的图书信息传到网络之后,网上客户便可随即查阅和购买,这样大大提高交易的效率,缩短了交易时间。正是由于这些优势,网上图书销售才能得以迅速地发展。网上在线图书销售系统的功能主要就是利用Internet作为平台进行交易,将某些图书的详细信息以网站的形式发布到网络上,有兴趣的顾客就可以通过网络来查阅售书的详细信息或购买此图书,实现网络在线交易。网上图书在线销售的日益壮大是电子商务在图书界发展的必然结果。1.1.2 课题目的和意义如今,提高自身的工作效率以及工作的质量是当下每个企业都将要面临而且必须想办法解决的重要课题。E满多网上书城是建立了一个动态的网上购书的网站。有了它客户就只需要电脑前输入您想要查询的条件,或通过一系列类的查询,就会快而准的找到您需要的图书,大大的加快了客户的查询速度。E满多网上书城不仅仅减少了大量的人力、物力、财力,更突破了传统意义上时间与空间的制约,网上书城就像一个24小时营业的自动售书机,使图书的买卖交易可以在任何你需要的时刻进行。鉴于互联网的优势以及对国内外相关网上书城网站现状的研究分析,本人决定以基于JSP的E满多网上书城开发作为我的毕业设计主题。立足于设计一个在网络平台上运行的集购物、支付和配送等功能于一体的网上书城,满足客户的购书需求。1.2 国内外研究现状1.2.1 国外的研究现状网上图书销售是现代化信息社会发展的必然要求。伴随着国际互联网的开通,信息化社会正在以光速形势发展。在美国、日本等信息化建设程度比较高的国家中,网上在线图书销售发展的速度非常快。据统计,如今的互联网有将近17亿用户。而目前全球的人口也已达到67亿,到2020年将会有越来越多的的人使用Internet。据美国的国家科学基金会对互联网发展进行预估,到2020年,网民的人口数量将接近50亿。再由于图书本身具有标识清晰、规格统一、特征描述简单、种类相同的商品之间无差异等特性而能成为发展电子商务的最为有前途的商品类型。如今,每个国家在网上书店的发展上也是力争上游,如:Amazon等。只要网络的发展不停止,那网上图书销售的发展就将永远不停歇。1.2.2 国内的研究现状近几年来,随着计算机技术的光速发展,网络应用技术已经普及,使Internet在线购买图书成为了现实,国内有实力的图书商家都在创建有自己特色的电子商务系统,如京东、当当、卓越等。随着现代的科学技术发展,计算机网络技术已经成了普通百姓都可以触及的大众型现代应用技术。网上书店优势众多,正以为此,它才能在电子商务中崛地而起。1.3 可行性分析1.3.1社会可行性随着现代计算机网络技术的发展和网民人数的与日俱增,网络世界也越来越丰富,网上图书销售已经成为了一股潮流。相信过不了多久,客户就能任意在网络上购买他们想在实体店获得的任何一本图书。E满多网上书城系统的主要目的是网上图书销售,并且严格遵守我国相关法律法规,并且没有法律方面以及政策方面上的约束。1.3.2技术可行性E满多网上书城系统在软件方面采用的是B/S的设计结构,采用JSP+Servlet技术开发设计,基于MVC的设计模式,采用Dreamweaver进行前台的页面设计,采用MySQL数据库,此数据库操作简单,价格便宜,易维护性高。用JDBC与后台的数据库进行了连接,完成了数据的增、删、改、查等功能。在硬件这方面,企业和商家有非常广的选择空间,国内计算机发展速度之迅猛,硬件的更新速度也接近光速,完全可以满足本系统在硬件方面的需求。1.3.3操作可行性当下,几乎所有的计算机都可以运行这个系统,此系统的安装、运行、调试均不能改变计算机原有系统的设置、布局,而且该系统界面相对简单,提示信息足够完整,在相关技术人员指导下就可以方便快捷的操作这个软件。1.4 系统开发平台及运行环境1.4.1 系统开发平台系统开发是在Tomcat环境下而进行的。Tomcat是一个免费的开源代码的Servlet容器,它是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是在Tomcat中能得以体现。Tomcat环境主要有这几方面技术优势:(1)Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,是多种文件的一个压缩包。(2)Tomcat中,应用程序的部署相当简单,你只需要将你的WAR放到Tomcat的webapp目录下,Tomcat就会自动检测到这个文件,并将它解压。(3)Tomcat不仅是一个Servlet容器,也具有传统Web服务器的功能:处理html页面。(4)Tomcat可以与其它软件集成起来。从而实现更多的功能。1.4.2 运行环境操作系统:Windows XP及以上版本。服务器软件:Tomcat6.0及以上版本。浏览器:IE、QQ、Fire Fox、Google 。442.需求分析2.1 系统功能模块概述和分析E满多网上书城采用了电子商务对顾客(B2C)的模式,其中主要包含会员登录、注册、订单的管理、搜索、购物车的管理等功能。除此之外,本系统将会实现部分在线图书销售系统的后台管理功能,其中包含图书的添加、订单的处理等功能。本系统完全是基于JSP技术的,在系统的设计与开发过程中灵活运用软件的设计模式,从而减少系统模块之间的偶合,力求做到系统的稳定性、实用性和可扩充性。E满多网上书城主要功能如下:(1) 前台(用户)部分:用户管理:注册、登录、退出、修改密码;分类显示:显示所有1级分类和2级分类;图书显示:按分类查看图书、通过图书名搜索图书、高级搜索图书的具体信息、查看具体图书的详情等;购物车管理:添加图书到购物车、修改已添加的图书数量、删除或批量删除已添加图书等;订单管理:生成订单、查看我的订单、查看具体订单的明细等。(2)后台(管理员)部分:管理员:管理员登录;分类管理:增、删、改、查所有分类;图书管理:对图书进行增、删、改、查;订单管理:按状态搜索订单、查看订单详细信息;2.2 系统功能模块设计根据系统功能分析,可以画出系统的功能模块图。前台(用户)部分购书功能,如图2-1所示:图2-1前台(用户)部分购书功能图后台(管理员)部分功能图,如图2-2所示:图2-2后台(管理员)部分功能图2.3 数据库分析系统的任务主要是通过大量数据去获得管理用的到的一些信息,这就要求该系统本身必须可以存储并管理大量的数据,可是实现这项功能就必须要借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。 2.3.1概念模型设计概念模型是用在信息世界中的建模,与具体数据库管理系统(DBMS)无关。为了要把现实生活中某一具体事物抽象化、组织成某一DBMS所支持的数据模型,我们经常首先将现实世界抽象为信息世界,之后将信息世界再转换为机器世界。也就是说,为了要先把现实世界的某一个客观对象抽象成某一种信息结构,并且这种信息结构不依赖具体的计算机系统和具体的DBMS,而仅仅是概念性的模型,再之后把这种概念性的模型转换为计算机中的某个DBMS所支持的数据模型。综上可知,概念模型就是从现实世界转换到机器世界的一个中间层次。 信息世界中包含的基本概念有实体和联系。 (1) 实体 (entity)客观存在并且可以相互区别的事物称为实体。在我们的认识中,实体可以是具体的人、事或物,也可以是抽象的一些概念或某些事物之间的联系。例如,一个老师、一门功课、一个商家、一个政府部门、一本书等都是实体。 (2) 联系 (relationship)在现实具体的世界中,事物的内部与事物的本身间是存在有必然联系的,而这些必然的联系在信息的世界中反映为实体内部联系和实体间的联系。实体内部联系一般是组成实体的各个属性间的联系。两个实体型间的联系可以分为3类,一对一联系;(1:1);一对多联系(1 : n);多对多联系(m : n)。 概念模型是对信息世界的建模,所以概念模型便可以便捷而又精确地表示出信息世界中的一些常用概念。概念模型的表示方法有很多种,其中最为常用的是在1976年的时候被P.P.S.Chen提出的实体联系方法(Entity-Relationship Approach)简记为E-R表示法。这种最常用的表示方法是用E-R图来描述现实世界的概念模型,这被称作实体-联系模型,简称为E-R模型。 根据数据流程分析,绘制E满多网上书城的全局E-R模型,如图2-3所示。图2-3 E满多网上书城的全局E-R模型根据系统设计规划出来的主要实体包括:用户实体、图书分类实体、图书实体、购物车实体、订单实体、管理员实体。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多):(1)用户实体,如图2-4所示。图2-4 用户实体(2)图书分类实体,如图2-5所示。图2-5 图书分类实体(3)图书实体,如图2-6所示。图2-6 图书实体(4)购物车实体,如图2-7所示。购物车其实是购物项的集合,即多个购物项构成了购物车。图2-7 购物车实体(5) 订单其实是订单项的集合,即多个订单项构成了订单。订单实体,如图2-8所示,订单项目实体,如图2-9所示。图2-8 订单实体图2-9 订单项目2.3.2数据库表设计数据库表的设计就是把将概念结构设计好的E-R图转换成与选用数据库管理系统(DBMS)产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。E满多网上书城系统数据库表如下:表2-1用户表(t_user)字段名称数据类型主键是否空说明uidchar(32)YN主键loginnamevarchar(50)NN登录名loginpassvarchar(50)NN登录密码emailvarchar(50)NN邮箱地址statusbooleanNN是否激活activationCodechar(64)NN激活码(唯一)表2-2分类表( t_category)字段名称数据类型主键是否空说明cidchar(32)YN主键cnamevarchar(50)NN分类名称pidchar(32)NY父分类IDdescvarchar(100)NY分类描述orderByintNY序号,用来排序表2-3图书表(t_book)字段名称数据类型主键是否空说明bidchar(32)YN主键bnamevarchar(200)NN书图名称authorvarchar(50)NY作者pricedecimal(8,2)NY定价currPricedecimal(8,2)NY当前价discountdecimal(3,1)NY折扣pressvarchar(100)NY出版社publishtimechar(10)NY出版时间editionintNY版次pageNumintNY页数wordNumintNY字数printtimechar(10)NY印刷时间booksizeintNY开本papervarchar(50)NY纸质cidchar(32)NY所属分类IDimage_wvarchar(100)NY大图路径image_bvarchar(100)NY小图路径orderByintNY序号,用来排序表2-4购物车条目表(t_cartitem)字段名称数据类型主键是否空说明cartItemIdchar(32)YN主键quantityintYN数量bidchar(32)YN图书IDuidchar(32)YN用户IDorderyByintYN序号,用来排序表2-5订单表(t_order)字段名称数据类型主键是否空说明oidchar(32)YN主键ordertimechar(19)YN下单时间totaldecimal(10,2)YN合计金额statusintYN订单状态addressvarchar(1000)YN收货地址uidchar(32)YN用户ID表2-6订单条目表( t_orderitem)字段名称数据类型主键是否空说明orderItemIdchar(32)YN主键quantityintYN数量subtotaldecimal(8,2)YN小计bidchar(32)YN图书IDbnamevarchar(200)YN图书名称currPricedecimal(8,2)YN图书当前价image_bvarchar(100)YN图书小图路径oidchar(32)YN所属订单ID表2-7管理员表( t_admin)字段名称数据类型主键是否空说明adminIdchar(32)YN主键adminnamevarchar(50)YN管理员名称adminpwdvarchar(50)YN管理员密码根据上述数据库表的关系作出主外键关联,如图2-10所示:图2-10 数据表关联图3.E满多网上书城前台设计与实现E满多网上书城的整个前台(用户)部分是供用户浏览和选购图书的部分,一个好的网站的用户部分要条理清晰,外观精美。因此,前台的设计应该条理清晰、层次分明。接下来介绍一下我的E满多网上书城系统的前台(用户)部分的实现。3.1首页设计首页设计模块分成3个主部分,采用的是内嵌框架技术。位置分别为上部、中部、左部,如图3-1所示。图3-1网站首页(1)上部的实现上部包含了两个大部分:标题、菜单。菜单部分是用户在未登录系统时看到的“登录”和“注册”链接。在登录后就会看到“我的购物车”、“我的E订单”、“修改密码”、“退出”的超链接和当前E用户名。(2)左部的实现左部显示出了所有分类,包含所有1级分类和2级分类。左部采用了Javascript来完成显示的所有分类。当用户想查看2级分类时,点击1级分类名称就会展示出当前1级分类中包含的所有2级分类。(3)中部的实现网站中部显示了两个友情超链接并且使用纯文本显示出欢迎信息。3.2用户模块3.2.1用户注册用户在登录前需先进行注册,在首页中点击“注册”便可以到达注册页面进行注册,如图3-2所示。图3-2 用户注册在regist.jsp页面中对注册表单中的数据使用JQuery来进行校验,当用户在文本框中输入数据后,光标离开文件框时对数据进行校验,如果校验未通过,会显示错误信息:(1)用户名: 用户名不能为空; 用户名长度必须在320之间; 用户不能已被注册(需要异步访问服务器);(2)登录密码: 密码不能为空; 长度必须在320之间;(3)确认密码: 不能为空; 必须与登录密码输入一致;(4)Email: 不能为空; Email格式必须正确; 不能是已被注册的Email(需要异步访问服务器);(5)验证码: 不能为空; 必须与图片上的验证码相同(需要异步访问服务器)。注册表单校验中,用户名是否被注册、Email是否被使用、验证码是否正确这三项都必须请求服务器,所以这里使用的是JQuery的ajax()来完成对服务器的访问。3.2.2用户登录在首页中点击“登录”后就可以来到登录页面,如图3-3所示。图3-3 登录界面a.登录表单校验(1)用户名:不能为空;长度必须在320之间;用户名是否存在;(2)密码:不能为空;长度必须在320之间;(3)验证码:不能为空;是否正确。登录表单校验中是使用JQuery完成的,其中用户名是否存在和验证码的正确与否需要使用JQuery的ajax()向服务器发送异步请求。b.登录成功登录成功后,用户会回到首页。这时在首页会显示出当前用户的名称,以及“我的购物车”、“我的E订单”、“修改密码”、“退出”的链接。就是说,这几个功能只能是登录用户可以使用,但是未登录的游客是无法使用的。3.2.3修改当前用户密码用户在登录成功之后,点击修改密码就会到达修改密码页面,如图3-4所示。图3-4 修改密码页面修改密码时需要进行表单校验:(1)原密码:不能为空;长度必须在320之间;是否正确;(2)新密码:不能为空;长度必须在320之间;(3)确认密码:不能为空;必须与新密码相同;(4)验证码:不能为空;是否正确。修改密码表单校验使用JQuery完成。其中原密码和验证码是否正确,需要异步访问服务器,这里同样也是使用JQuery的ajax()完成的。3.2.4退出当E用户登录后,点击退出就可以完成退出。退出成功后就会到达登录页面。3.3图书模块3.3.1图书列表在首页左部点击某个2级分类,会在首页的中部显示出图书列表的页面。图书列表需要使用分页显。但是这些数据需要在各层之间传递,所以我们应该写一个分页Bean,把所有与分页相关的数据封装到一个Bean中。代码如下:PageBean.javapublic class PageBean private int pc;/当前页码private int tr;/总记录数private int ps;/每页记录数private List dataList;/当前页记录private String url;/请求的url/* * 计算总页数 * return */public int getTp() int tp = tr / ps;/总记录数/每页记录数return tr % ps = 0 ? tp : tp+1;/如果是整除,返回tp,否则再加1。3.3.2图书明细点击某本图书,就会到达图书明细页面,如图3-5所示。图3-5 图书明细3.3.3高级搜索在图书列表页面中点击高级搜索就会到达搜索页面,如图3-6所示。图3-6 高级搜索高级搜索中有三个条件:书名、作者、出版社,三个条件的关系是并列的。而且三个条件都属于模糊查询。3.4购物车购物车是使用数据库来保存数据的,即添加到购物车中的图书,不会因为关闭浏览器,或关闭电脑而消失。并且修改数量是通过异步请求来操作数据库的。3.4.1添加图书到购物车在图书详细页面,给出数量,然后点击“购买”就可以把图书添加到购物车中,而且会到达购物车列表页面,如图3-7所示。图3-7 购物车列表3.4.2我的购物车在首页上部点击“我的购物车”查询购物车。购物车列表页面会显示出所有车中所有条目,每个条目都会显示图书图片、图书名称、图书单价、数量,以及小计。3.4.3修改条目数量在购物车列表页面中,点击某个条目上的数量去完成修改数量。这项操作会修改底层数据库。所以这里需要使用JQuery的异步处理来访问服务器,完成对数据库表的修改。当数量为1时,如果把数量减1,会弹出确认对话框,提示是否真要删除该条目。3.4.4删除条目购物车显示列表页面中,点击某条目后面“删除”链接便会删除当前条目。也可以勾选多个条目,进行“批量删除”,完成一次性删除多个条目。3.5订单模块对订单的操作,相对应数据库中的有两张表,即订单表和订单条目表(t_order和t_orderitem)。而且订单模块功能全面:(1)生成订单:通过在购物车中对勾选条目进行结算从而生成订单;(2)我的订单:显示当前E用户的所有订单,以及订单明细;(3)订单支付:使用易宝的第三方支付平台完成,对“在线支付”的理解也是一个挑战;(4)订单明细:点击某个订单显示其明细;(5)取消订单:是对订单的状态进行修改。3.5.1选择条目,即将生成订单购物车列表中,勾选需要购买的图书,然后点击“结算”,这便会到达订单准备页面,如图3-8所示。图3-8订单页面3.5.2生成订单在订单准备的页面,输入收货地址,之后点击“提交订单”,就会生成订单。这时会到达“订单生成”页面,如图3-9所示。图3-9生成订单这时订单已生成,但状态为“未付款”。用户可以在“订单生成”页面点击“付款”到达“支付”页面。3.5.3订单列表在首页上部点击“我的E订单”,便会到达订单列表页面。页面会显示当前E用户订单的所有信息,如图3-10所示。图3-10当前订单信息3.5.4订单明细页面在订单列表页面中,点击某个订单的任一按钮都会到达“订单明细”页面。其中点击“查看”到达的页面是有“立即支付”的;点击“取消”到达的页面有“取消订单”按钮;点击“确认收货”按钮到达的页面是有“确认收货”按钮的,如图3-11所示。图3-11 订单明细3.5.5支付页面在“订单生成”页面点击“付款”或“订单列表”页面中点击“支付”均可以到“支付”页面。在“支付”页面中选择任一网上银行后,点击下一步就能跳转到支付页面了,如图3-12所示。图3-12 支付页面3.5.6订单状态订单的状态分5种:(1)未付款时状态。(2)已付款状态,但未发货时状态。(3)已发货,但未消确认收货时状态。(4)交易成功。一旦订单为建议成功后,用户将不能再修变订单状态;(5)已取消。只有在未付款状态的订单可以取消,其他状态的订单是不能取消的。一旦订单被取消就不可以再改变状态。4.E满多网上书城后台设计与实现E满多网上书城的后台设计主要是为方便管理员们对系统进行管理操作而设计的,其中包含分类管理、图书管理,以及订单管理。4.1管理员登录后台管理员登录页面,如图4-1所示,登录成功之后到达后台设计的主页。图4-1 管理员登录界面4.2后台主页管理员登录成功后,到达主页。主页是框架页,由上、下两部分构成。(1)上部显示标题和菜单,分别是:“退出”、“分类管理”、“图书管理”、“订单管理”,以及当前管理员名称;(2)中部默认显示欢迎图片,当点击上部链接后,都在中部显示。4.3分类管理4.3.1分类列表当点击首页上部的“分类管理”后到达分类列表显示页面,如图4-2所示。图4-2 分类列表4.3.2添加分类分类显示列表中有“添加一级分类”的链接,点击该链接直接到达“添加1级分类”页面。在程序中的实现如下:从/adminjsps/admin/category/list.jsp中点击添加一级分类到达/adminjsps/admin/category/add.jsp页面。在add.jsp页面提交表单,请求AdminCategoryServlet#addOneLevel()方法,完成添加分类。addOneLevel()在添加完成后,调用AdminCategoryServlet#findAll()方法,回到list.jsp显示所有分类。列表中每个一级分类后面都有“添加二级分类”的链接,点击可以到达“添加二级分类”页面。添加二级分类共两步:一是到达表单页面,二是提交表单完成添加。(1)到达表单页面在/adminjsps/admin/category/list.jsp中,在某个一级分类上点击“添加二级分类”,请求AdminCategoryServlet#addTwoLevelPre()方法,传递一级分类cid。addTwoLevelPre()会获取所有一级分类,以及当前一级分类cid,然后转发到/adminjsps/admin/category/add2.jsp页面。在add2.jsp页面中显示所有一级分类,因为二级分类有父分类。(2)完成添加二级分类在add2.jsp页面提交表单,完成添加二级分类。提交表单请求AdminCategoryServlet的addTwoLevel()方法:封装表单数据到Category child对象中;给child指定cid;获取表单pid,创建Category parent,把pid设置给parent的cid;把parent设置给child;调用categoryService#add(Category)方法完成添加;调用AdminCategoryServlet#findAll(),回到list.jsp。4.3.3修改分类在分类列表中,每个一级和二级分类后都有“修改”链接。点击一级分类后的“修改”就会进入“修改一级分类”页面。同理,点击二级分类后的“修改”进入“修改二级分类”。a.修改一级分类分为两步:(1)在list.jsp中点击某个一级分类上的“修改”,到达edit.jsp;(2)在edit.jsp页面提交表单b.修改二级分类也是分为两步:(1)在list.jsp中点击某个二级分类上的“修改”,到达edit2.jsp;(2)在edit2.jsp页面提交表单。4.3.4删除分类分类列表中,每个一级和二级分类后都有“删除”链接。点击一级分类后的“删除”即完成了删除此一级分类;点击二级分类后的“删除”即完成了删除此二级分类。注意:(1)如果一级分类下存在子分类,不能删除。 (2)如果一级分类下存在图书,不能删除。4.4图书管理后台图书管理部分,与前台用户部分的大多数图书操作都是相同:分页显示图书、按分类查询图书、高级查询图书、查看图书明细。但是后台图书管理还有些前台用户部分没有的功能:对图书进行添加、删除和编辑。4.4.1图书列表页面图书列表显示页面分成两部分,如图4-3所示:(1)左部:显示所有的分类,与前台用户部分相同,通过指定分类来查询图书;(2)中部:默认显示“添加图书”和“高级查询”两项功能,当管理员点击某一分类时,中部显示图书列表。图4-3 图书管理4.4.2添加图书点击“图书管理”链接后,中部会出现“添加图书”链接,点击会进入添加图书页面。添加图书分为两步:(1)点击body.jsp上的“添加图书”链接,到达add.jsp;(2)在add.jsp提交表单。a.点击“添加图书”链接,到达add.jsp点击“添加图书”链接,请求AdminBookServlet#addPre()方法,addPre()获取所有1级分类,然后转发到add.jsp页面。add.jsp显示所有1级分类到下拉列表中,当用户显示1级后,需要发送异步请求,获取该1级分类下所有2级分类,然后显示到2级分类下拉列表中。(与编辑图书一样)b.在add.jsp提交表单,完成添加图书。添加图书需要上传图片,这一功能不能放到AdminBookServlet,而应该为其单独提供一个Servlet:AdminAddBookServlet。在AdminAddBookServlet中需要使用commons-fileupload组件解析表单。获取所有表单项,封装到Book对象中,然后调用BookService#add(Book)方法完成添加,最终转发到msg.jsp显示成功信息。添加图书表单页面使用JQuery进行校验,如校验准确,添加图书就成功,如图4-4所示。图4-4 添加图书4.4.3高级搜索点击“图书管理”链接,中部会出现“高级搜索”,点击进入高级搜索页面,如图4-5所示。图4-5 高级搜索此高级搜索与前台功能相同,输入条件后搜索,就会在图书列表中显示结果。4.4.4图书详细在图书列表中点击某一本图书后,进入图书明细页面,如图4-6所示。图4-6 图书详细图书明细页面上方有一个名为“编辑或删除”的复选框,勾选它,页面就会显示编辑表单,并多出两个按钮:“编辑”和“删除”。4.5订单管理4.5.1订单列表点击“订单管理”链接会到达订单列表显示页面。订单列表页面上包含按当前状态查询的链接,分别为:未付款、已付款、已发货、交易成功、已取消,管理员可以点击这几个链接按当前状态查询显示订单。如图4-7所示。图4-7订单列表4.5.2订单明细订单列表页面中,点击订单后面的:查看、取消、发货链接会进入到订单明细页面。订单明细页面会显示当前订单的信息,而且根据管理员点击按钮不同会显示不同内容,如图4-8所示。图4-8 订单明细5.系统测试5.1 测试的目的与目标本系统正常运行初步实现以后,应该对此系统进行测试。对系统进行测试的目的是找出该系统或程序中所存在的问题,然后通过分析找来出的这些问题出现的原因和特征,通过分析去发现一些当前软件存在的缺陷并修正。测试后的软件各个部分的基本功能均可以顺利进行,并尽可能的提高软件的完整性。5.2 测试方法可以根据角度的不同分为不同的测试种类,下面将测试方式进行一下划分:(1) 从是否有关软件的内部结构和实现角度进行划分:黑盒测试、白盒测试;(2) 从是否执行了程序角度:静态测试和动态测试;(3) 从软件开发过程中按每个阶段进行划分:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试;5.3 测试用例因为本系统的功能模块比较具体繁多,测试内容就会比较长,此篇论文就单单介绍其中一个模块的测试用例了,如下表5-1所示就是本系统的E会员登录测试表,从测试的结果看与期望的结果完全一致。5.4 测试结论经过测试知道,只要我们把刚刚开始时候的程序写的好一点,系统检查出现的错误和bug也就会少一点,测试做的就更加明确。系统化全面测试测探隐藏错误的隐秘位置。另外,bug最大的可能性是出现在边缘地带,我们可以人工检查错误的所在。以本系统为例,最好的方法就是进行实际操作测试,测试次数越多,程序和系统的可靠性就越强,不但有测试效果,更能开阔编写者的思路,更加好的去完善此作品。回归测试就是为了检验出这个程序的结果或者输出是不是与前者相同。对程序或者代码进行改正以后用测试来检验我们的改正是否真的帮助到了系统本身,也可以将问题细微话,测试后会将bug锁定在某个区域内。过去有一个很有名的说法:测试能说明程序中存在错误,但是却不能说明其中没有错误。这句话寄予了一些希望:程序能够人工或者机器编写出来,通过某种方式之后就不会再存在bug了,所以测试也变得不那么重要了。的确是非常美好希望和远大的目标。然而,对于目前编写程序的实际形势来看,这却还只是理想中的东西。我们就该集中全部的精力学习如何进行测试,怎么样才能快而准的找到程序中的所存在的bug和错误,怎么样才能让软件工作的更加有成效、效率变得更高。 表5-1 E会员登录系统测试用例功能特性E会员登录验证测试目的验证会员是否输入合理的信息内容测试数据用户名称:ganqi 密码:123测试内容编号操作描述输入数据期望结果实际结果测试状态1输入用户名,点击“登陆”按钮。用户名:ganqi,密码不填写显示红色警告信息“密码不能为空!”显示红色警告信息“密码不能为空!”与期望结果一致2输入密码,点击“登陆”按钮。用户名不填写,密码:123显示红色警告信息“用户名不能为空!”显示红色警告信息“用户名不能为空!”与期望结果一致3输入用户姓名和密码,点击“登陆”按钮。用户姓名:1,密 码:2显示红色警告信息“用户名、密码长度必须在320之间!”显示红色警告信息“用户名、密码长度必须在320之间”与期望结果一致4输入用户姓名和密码,点击“登陆”按钮。用户名:ganqi,密 码:123成功登陆到E会员操作界面成功登陆到E会员操作界面与期望结果一致6.结论通过设计和开发E满多网上书城系统,掌握到了一些JAVA的基本知识和编程技巧,而且在设计开发的过程,编程能力也得到了显著提高。在设计开发中慢慢的体会到了:系统分析做的好坏可能决定着整个系统的开发成功与否,一份好的系统分析将会是成功开发的主要因素之一。在做系统的开发设计之前不要太着急去写程序,我们首先要做的应该是要把系统分析做好,细心耐心的整理出一些相关开发设计的文档等。之后我们再投入到写代码中去,这样我们才能做到每写一笔程序都能心有成竹。除此之外,我个人在这次毕业设计中走了很多的弯路。主要是因为平常没有进行过编程实践,接触软件开发的机会更少,所以在应用开发方面均缺乏经验,以后仍需再接再厉。由于时间关系,再加上本人水平有限,考虑问题不是很周全,系统难免会有错误和待改进的地方,真诚欢迎各位老师和同学提出宝贵的意见。参考文献(1) Xin Chen 著,应用框架的设计与实现,北京:电子工业电子工业出版社,2006(2) 张孝祥,Java 就业培训教程,清华大学,2007(3) 石志国,薛为民,董洁,JSP应用教程,北京:清华大学出版社.北京交通大学出版社,2004(4) 李曙光,JSP开发实例完全剖析,北京:中国电力出版社,2006(5) Vivek Chopra,JSP高级程序设计,机械工业出版社,2001(6) 申吉红,廖学峰,余健,JSP课程设计案例精编,北京:清华大学出版社,2007(7) 卢潇.软件工程.北京:清华大学出版社;北京:交通大学出版社,2005(8) 松岗研发中心林志强著ASP电子商务设计实务,中国铁道出版社,2005(9) 萨师煊,王姗,数据库系统概论,北京:高等教育出版社,2000(10) 马运涛,Eclipse精要与高级开发技术,北京:电子工业出版社,2003(11) 杨易,JSP高级程序设计,人民邮电出版社,2006(12) PaulJPerrone etal,张志伟,谭郁松,张明杰,J2EE构建企业系统M ,北京:清华大学出版社,2001(13)Chuck Cavaness,Programming Jakarta Struts,2002(14)Bruce Shive,Research Direction in Object-Oriented Programming,2002(15)Miao H.K.McDermid J.A.andTony Ian,Proving the existence of the initial state in Z specification,Chinese Journal of Advanced Software Research,2003致谢时光飞逝,来不及回眸,在廊坊师范学院的生活也即将结束,四年的默默努力和辛苦奋斗,也随着这篇论文的完成渐渐落下帷幕,这也算是给我的大学画上了一个圆满的句号吧!首先我要向我尊敬的指导老师-刘大勇老师表示最最真挚的谢意。从毕业设计的课题选择到论文的具体写作过程,刘大勇老师对我们是那样悉心指导和耐心讲解,为我们提供了大量的计算机专业知识方面的指导和一些富于想象、创造性的建议。刘老师认真负责的工作态度、严谨求实的风格,使我深受启发。在这里,我要特别感谢一下四年里辛勤付出的所有计算机任课老师们,他们为我们打下了计算机专业知识的基础;还要感谢我的母校-廊坊师范学院这四年来对我们的大力栽培。更要感谢那些曾在我失落无助时,伸出双手,关心我、爱护我、帮助我、挺我的那些良师益友们。 最后,向那些在每天奔走在路上,每天忙忙碌碌并且特意空出时间来对我的这篇毕业论文进行评价审核,还不厌其烦的点出我问题所在的老师们表示由衷的感谢!附 录部分功能的具体实现代码如下:(1) 前台分类语句:public class CategoryServlet extends BaseServlet private CategoryService categoryService = new CategoryService();/* * 返回所有分类 */public String findAll(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException /* * 1. 获取所有分类 */List parents = categoryService.findAll();/* * 2. 保存到request中 */req.setAttribute(parents, parents);/* * 3. 转发到left.jsp */return f:/jsps/left.jsp;(2)高级搜索语句具体代码:/* * 按作者查询 */public String findByAuthor(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /* * 1. 获取当前页码 */int pc = getPageCode(request);/* * 2. 使用BookService查询,得到PageBean */String author = request.getParameter(author);PageBean pb = bookService.findByAuthor(author, pc);/* * 3. 获取url,设置给PageBean */String url = getUrl(request);pb.setUrl(url);/* * 4. 把PageBean保存到request,转发到/jsps/book/list.jsp */request.setAttribute(pb, pb);return /jsps/book/list.jsp;/* * 按出版社查询 */public String findByPress(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /* * 1. 获取当前页码 */int pc = getPageCode(request);/* * 2. 使用BookService查询,得到PageBean */String press = request.getParameter(press);PageBean pb = bookService.findByPress(press, pc);/* * 3. 获取url,设置给PageBean */String url = getUrl(request);pb.setUrl(url);/* * 4. 把PageBean保存到request,转发到/jsps/book/list.jsp */request.setAttribute(

温馨提示

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

评论

0/150

提交评论