网上书城论文_第1页
网上书城论文_第2页
网上书城论文_第3页
网上书城论文_第4页
网上书城论文_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

摘要随着科学技术的发展,网络在人们生活中的应用越来越广泛。人们在网上可以随意地浏览信息,电子商务与Internet的结合,网上购物越来越渗透到人们的日常生活。图书销售网站便是其中之一。人们越来越想在最短的时间内购买到自己所需的图书。但书目的繁多,给人们在繁忙的工作生活中的购书带来了很大的麻烦,于是网上购书便成了人们向往的事情。图书销售系统的开发为人们带来了很大的方便,使他们足不出户就可以轻轻松松地买到自己想要的书,既省时又省力。有效地缩短了图书流通发行环节,将广大读者、图书、出版者、发行者紧密地结合在一起,大大提高了图书流通率。它有着经营成本低、库存是虚拟的、用户检索方便、地域限制少等特点。该系统主要由前台信息发布网站和后台管理维护系统两部分构成;在支持整个网站的运作功能的基础上,能帮助用户对前台网站进行日常管理和信息发布;并具有占用系统资源少、信息量大、站点维护方便、便于扩充和更新、易于继承和保护历史数据等优点。该系统可以克服传统图书销售中地域、广告宣传、人力资源不足等限制,能很好地适应网上销售需求。系统以JSP为主要制作工具,实现了用户注册、登陆、书籍的预览查询、对书籍的购买通过购物车实现,而在后台管理员可以对图书信息、会员信息以及购物信息进行管理。关键字:jsp,数据库,网上书城ABSTRACTWiththedevelopmentofscienceandtechnology,Internetisappliedmoreandmorewidelyinpeople'slives.PeopleintheInternetcanreadinformation,electroniccommerceandInternetcombination,onlineshoppingmoreandmorepenetratedintopeople'sdailylife.Booksaleswebsiteisoneofthem.Moreandmorepeoplewantintheshortesttimepossibletobuybooksheneeds.However,awiderangeofbooksbroughtalotoftroublestopeopleinthebusylife.Sobookonlinehasbecomeamatterofpeopleyearnfor.Thedevelopmentofthissystemwillmakealotofconvenienceforpeople,sothattheycanbuybookswhichtheylikedeasily,bothconvenienceandeffective.Thesystemeffectivelyreducethelengthofthebooklinkstheflowofdistribution,itcanbealargenumberofreaders,books,publishers,distributionworkedcloselytogether,improvingtheflowrateofthebookgreatly.Thesystemhasmanyadvantagessuchaslowoperatingcosts,virtualinventory,theusersearchesconvenient,lessgeographicalrestrictionsandsoon.Thesystemisconsistedbythefrontinformationmanagementandbackofficemanagement;tosupportoftheoperationalfunctionsoftheentiresite,andcanhelpusersinthedailymanagementandinformationdissemination;andwithlessusingofthesystemresources,theamountofinformationlarge,sitemaintenanceconvenient,easytoexpandandupdate,easytoinheritandtheprotectionofhistoricaldataandsoon.Thesystemcanovercomethelackofrestrictionsinadvertising,humanresources,whichntraditionalbooksaling,canwellmeetthedemandforonlinesales.JSPinthesystemasthemaintoolwhattoachievetheuserregistration,login,bookspreviewinquiries,throughtheshoppingcartinordertoachievethepurchaseofbooks,butadministratorofthebackstagecanmanagebookinformation,membershipinformationandshoppinginformation.Keywords:JSP,Database,Onlinebookstore目录第1章绪论31.1课题背景、目的及意义31.1.1课题背景31.1.2课题目的及意义31.2国内外研究现状41.2.1国外的研究现状41.2.2国内的研究现状5第2章相关理论技术介绍82.1JSP技术简介82.1.1JSP概述82.1.2Servlet概述82.1.3JavaBean概述92.2基于B/S的WEB应用体系结构102.2.1

传统的两层体系结构102.2.2

三层体系结构102.2.3

JSP网站开发模式102.3MyEclipse简介112.4Tomcat简介122.5MySQL简介122.6MVC设计模式13第3章系统分析与可行性分析153.1系统分析15前台15后台163.2可行性分析16第4章系统设计174.1总体设计174.2详细设计174.2.1数据库分析19数据库表设计21第五章系统实现245.1前台页面功能实现24首页模块24用户模块26图书模块30购物车35订单模块365.2后台管理功能实现42管理员登录43后台主页43分类管理43图书管理51订单管理55第6章系统测试586.1测试的目的与目标586.2测试方法586.3测试用例596.4测试结论60第7章总结61参考文献62致谢63绪论1.1课题背景、目的及意义1.1.1课题背景随着网络技术的发展,越来越多的人喜欢在网上宣传自己的产品,也喜欢网上购物。网上书城就是在这种时代趋势下发展起来的,并且迅速扩大。图书产品从其外部特征来看,品种繁多,实体书店或其它图书发行者无法有足够大的店面来展示所有品种;而且网上图书单价较低,在网络信用度逐渐提升的环境下能造成的损失较小,读者也乐于尝试在线购买。所以网上书城网站也在互联网上纷纷出现。就网上书城而言,由于网络已经覆盖全球,信息量大而独具优势。售书的理念也很简单,就是读者可以自己寻找自己喜爱的书,也可以替读者找寻他们想要的书。对于读者来说,网上书城近在咫尺,并且永不下班关门,读者可以随时随地查询和订购图书,读者无需亲临书店,一档一档地找,一本一本地翻,只要坐在电脑前,开机上网即可挑选自己喜欢的图书,并且读者的挑选余地也大多了,检索也很方便,在读者不确定自己要买什么书的时候,可以根据图书的种类来进行更小范围的选择。同时网上购书还减少了购书过程中的支出以及可能带来的一些不必要的麻烦。另外应当看到图书选购必得翻阅详看,耗时费力,特别是热衷购书者,几乎都是奋力开拓事业者和苦心求学深造者,时间对他们而言无比宝贵,网上购书则节省了大量时间,这对于那些没有时间经常逛传统书店或其住所离传统书店较远的读者来说,具有实际意义。因此网上售书必将有长足的发展。1.1.2课题目的及意义“网上书城”实际上是运行在Web服务器中的一个Web应用程序。“网上书城”既可以作为网站的一个子模块实现,也可以作为一个网站单独运行。“网上书城”模拟一般的书店的经营模式,利用页面、脚本程序来实现“网上书城”的书籍管理、客户信息、购物信息的管理工作。实现基本购物车功能,可对购物车在结算之前进行查询和修改,购物过程目前只支持货到付款的方式,购买者可依据订单号查询订单状态(发货日期、备注等状态);后台设置管理员维护界面,可在首页设定优惠图书的价钱以及图书的一些基本信息,还可以对订单状态进行管理(修改状态、删除订单)并且可以查询所有订单。后台也可以对注册的会员信息进行管理,包括查看所有的会员信息,添加会员,修改会员信息和删除会员。要实现这样的功能,离不开后台数据库的支持。本文中数据库服务器端采用了MySQL数据库,使Web与数据库紧密联系起来。本系统的主要目的是实现图书的在线销售和后台图书的管理,包括管理库房中的图书,以及管理用户的购物车,从而实现结帐等一系列功能,让用户足不出户就能够在网上书城购买到自己所需的图书,形成书店和用户双赢的局面。这个网上书城系统的后台管理模块就是利用JSP技术实现对整个网上书城进行管理。此后台管理模块操作简单,无论有没有网页开发语言基础的书店管理员都可以对整个网站进行操作更新。1.2国内外研究现状1.2.1国外的研究现状网上售书是信息社会发展的必然要求。国际互联网的开通,为信息社会的飞速发展创造了条件。在美、日等信息化程度较高的国家和地区,网上图书销售发展速度迅猛。据美国电脑工业年鉴公司1999年底公布的报告说,全球因特网使用者到1999年底已达2.59亿,2002年将上升到4.9亿,2005年可达到7.65亿。在全球范围内每千人中的因特网使用者1999年为43人,2002年将达到79人,2005年将达到118人。网民队伍的迅速扩充,无疑为网上售书的发展提供了巨大的市场空间。加上图书因其具有标识精晰、规格统一、特征容易描述、同种商品个体之间无差异等特性而能成为发展电子商务的最为理想的商品类型。因此,网上售书成为各国发展电子商务的首选目标,国际互联网开通后,各国最大的电子商务网站也大都是网上书城。只要网络发展没有停止,网上售书的发展就不会停止。其次,网上售书因其自身具有的经营上的优势对读者具有强大的吸引力,这也是剌激网上售书发展的重要原因。网上售书对于读者而言,其魅力主要表现在三个方面:一是品种丰富,读者选书的余地大。凡属稍具规模的网上书城,一般都具有良好的网络购书界面,由于不受实物陈列空间的限制,网上书城向读者提供的选书品种往往多于实物书店,读者可以通过分类查找方式选择自己所需购买的图书,也可以根据书名直接搜索自己想买的图书;二是购买方便。读者在网上查找到自己所需要的图书后,可立即发出购书信息,网上书城后台管理员(店主)接到订购信息后即可确认,不几天就可收到送达的所购图书。亚马逊书店只需几十秒钟即可向顾客发出确认信息,一般情况下不会超过两天就可将书送到购书者手中;三是售价便宜。由于网上书城不像传统书店那样需要租店铺,交各种营业费用,所以就减少了很多的开支。在网络售书市场还很不稳定的前提,各个经营者都要使用各种手段抢占市场,打折是较为普遍的竞争手段之一。国外网上书城主要分布在欧美等经济技术比较发达的国家和地区,具有起步早、规模大、发展快、数量多等特点。1.2.2国内的研究现状近年来,随着计算机网络技术的飞速发展,网络技术应用已经相当普及,使得在线购买成为现实,各种各样的网上图书销售系统层出不穷,国内各大图书商都在创建自己的计算机网上电子商务系统。书籍交易网站就是Internet和电子商务发展的产物,近几年在我国发展迅猛,如同一些书店纷纷在各地开设分店以拉近书店与顾客间距离一样。随着科学技术得分速发展,Internet这个昔日只被少数科学家接触和使用的科研工具已经成了普通百姓都可以触及的大众型媒体传播手段。随着现今全民素质和科学技术水平的不断提高,知识更新的越来越快。人们随时都会有被淘汰的危机,为了不让社会淘汰,就必须做到与时俱进、多读书与不断的学习。21世纪是网络的时代、信息的时代,时间是非常宝贵的,人们由于种种原因没有时间到书店去,也不知道哪家书店有自己需要的书籍,同时那些传统书店的经营者又没什么好的方法让人们知道这就有顾客需要的书籍,这种买卖双方之间信息交流上的阻碍成为“网上书城”网站发展的原动力。购买内容以多媒体的形式呈现,使得买和卖的内容更加生动、灵活,计算机网络的使用,使买和卖不再受时空的限制。然而,在现有的远程购物系统中,多数着重于人机界面的设计,虽然实现了把购买方式从“以销售者为中心”转变为“以顾客为中心”,但是普遍缺乏群体合作交流的机制,难以实现销售者与顾客以及顾客与顾客之间的交流和沟通,从而不能充分发挥传统图书销售的优势。图书网上销售主要分为综合性和专业性。比如728网上书城,它销售电脑图书及社科图书;成都市可为网上书城提供分类书目及区域性送书服务、成功书苑介绍和关于成功学的书籍;动漫商务网销售正版动漫图书,以代理香港童年梦动画书店产品为主;独一无二书店网上销售带版权图书、手抄本、手稿书、打印书、古旧书及电子书籍。其中影响最大的是当当和卓越。当当去年总销售额为一点二亿元人民币,其中网上销售占八千万元,整体业务的毛利率为百分之二十五。今年上半年的总销售额已超过一亿元,是去年同期的一点八倍,全年可实现二点四亿元的目标。目前当当网已计划明年海外上市。这些都充分显示了图书网上销售的巨大影响力。我国目前的网上图书销售仍处于发展阶段,商品的品种和质量、网上销售企业的管理水平和经营方式等都与发达国家相比都有很大差距。同时,我国经济正处于由计划经济体制向市场经济体制过渡时期,Internet对我国信息产业的影响才刚刚开始,网上图书销售在我国还要有一个调整、磨合、适应的过程,网上图书购买的安全问题还未完全解决,大多数人对网上购买的程序还有待于了解,还得有一个发展的过程。这也为我国加快和跨越发展提供了难得的机遇。我们要大胆进行创新,壮大企业的市场竞争能力,以适应全球化的激烈竞争。目前我国网上书城的主要类型主要有以下几种:1.由国有新华书店投资建设的网上书城。如,主要依托传统的图书大厦的图书储存进行网络售书,属于新华书店上网或上网的书店。2.由出版社建立的网上书城。我国500多家出版社中,已建立网站的有349家,占62%。3.外贸出版公司投资建设的网上书城。这一类网上书城立足公司主营业务,主要对海外进行图书销售,近年来销售量逐渐增加。4.非出版业资本投资建设的网上书城,如卓越网。就目前情况而言,上述几类的网络书店可以分为两大类。一类是没有实体书店的网上书城,以卓越网为代表,还有一类是以实体书店为支撑的。前一类书店已经开始逐步销售更多的商品,在很大程度上,是以图书为主打产品,开发其他商品作为补充。随着消费者对消费要求的日益提高,使得网上书城必须向着专业化迈进,通过提供专业的产品和服务,区分市场。据北京开卷研究系统2004年底调查发现,18岁~29岁的读者是出版物的主要消费者,所占的比例达62.87%,平均每月购书花费20元~100元的占53.28%。同时,网民以年轻人为主要组成部分。因此,年轻人是网上书城最大的潜在消费者。调查发现,2004年在网上购买过图书的读者所占的比例已达17.16%,而且这一比例还在逐渐增加。从各地区的调查情况来看,由于各地区的经济、文化和生活习惯的不同,人们通过网上购书的消费也存在着差别,北京、上海和广州三地的读者通过网上购买图书所占的比例都较大,分别为22.87%、28.82%和24.19%;沈阳所占的比例最低,只有5.15%。从消费者喜欢在网上购书的原因来看:“送书及时快捷”是读者选择网上购书的主要原因;其次是“可选的书多”和“折扣多,书较便宜”。可见网络购书的及时快捷越来越得到读者的认可,对网上书城图书的品种和价格也较为看中。从各地区来看,北京、上海、广州和沈阳四地的经济比较发达,人们的生活节奏很快,消费者喜欢在网上购书的原因选择最多的是“送书及时快捷”;而成都和武汉两地的人们更注重娱乐休闲,人们对图书的种类需求差距很大,因此他们选择喜欢网上购书的原因中“可选的书多”的所占的比例最多。第2章相关理论技术介绍2.1JSP技术简介2.1.1JSP概述JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。2.1.2Servlet概述Servlet是Java编写的服务器端程序,是由服务器端执行和调用的Java类。Servlet是采用Java技术来实现CGI功能的一种技术,能够像CGI一样动态地扩展Web服务器的功能,并采用请求——响应模式提供Web服务。Servlet和CGI一样都是运行在Web服务器上,用来生成Web页面。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。其工作流程图如图2-1所示。Servlet工作流程:a)客户端发送请求信息至服务器。b)服务器将请求信息发送至Servlet。c)Servlet生成响应内容并将其传给Servlet。响应内容动态生成,通常取决于客户端的请求。d)服务器将响应信息返回至客户端 WebServerServletrequestServletrequestWebComponentWebComponentWebClientWebClientServletresponseServletresponse图2-1Servlet工作流程图2.1.3JavaBean概述JavaBean是Sun公司为了进入因特网、企业网以及万维网上进行分布式计算的组件结构入口。按照Sun公司的定义,JavaBean是一个可重复使用的软件部件。JavaBean体系结构是第一个全面地基于组件的标准模型之一,该组件是Java类,这些类遵循一个接口格式,以便于使方法命名、底层行为以及继承或实现的行为能够把类看做标准的JavaBean组件的方式进行构造[7]。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速生成新的应用程序。JavaBean具有以下特点:a)可以实现代码的重复利用。b)易维护性、易使用性、易编写性。c)可以在Java的任何平台上工作,不需要重新编译。d)可以在内部网或者网络之间进行传输。e)可以以其它部件的模式进行工作。JavaBean在JSP程序中常用来封装事务逻辑、数据库操作等,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。2.2基于B/S的WEB应用体系结构传统的两层体系结构在Web发展的初期,Web应用主要是通过静态页面在Internet上发布信息。用户通过浏览器向服务器发送请求,服务器接收用户端的请求,向客户端浏览器发送所请求的页面。在这种结构下,网站上的页面是静态的,无法根据用户的实际使用情况做动态的变化。网站的信息提供者通过更新服务器上的网页来向用户提供最新的信息。用户和浏览器之间只有有限的交互,而网站和用户之间几乎没有交互。三层体系结构CGI,ASP,PHP等技术的出现,使得开发动态交互式的Web应用得以实现。用户通过浏览器向服务器发送请求,Web服务器接收客户端发送来的请求,对请求进行分析,如果请求是静态页面,那么就将所请求的页面发送到客户端;如果请求的是动态页面,那么就执行此动态页面,并将执行结果发送给客户端。动态页面中的脚本程序可以和数据库服务器进行交互。三层体系结构图如图2-2所示。数据库Web服务器浏览器请求数据库Web服务器浏览器响应图2-2三层体系结构图Web服务器可以根据用户的请求动态更新页面上的信息,Web信息提供者可以通过改变数据库中的数据向用户提供最新信息,而不需要逐个更改页面。用户可以通过这些动态页面向数据库中输入信息,从而增强了用户和服务器之间的交互性。JSP网站开发模式目前,JSP技术已经成为一种受大多数大型企业或中小型企业喜爱的动态网页开发技术。越来越多的技术人员也逐步成为JSP技术的推崇者。JSP技术正是利用了Java的“一次开发,处处使用”的性能,成为了网站开发技术人员的首选技术。当然,JSP技术的最大优势在于能够将页面的表现形式和页面的商业逻辑分开。JSP网站开发技术标准提供了两种开发模式:一种是JSP+JavaBean开发模式;一种是JSP+Servlet+JavaBean开发模式。2.3MyEclipse简介MyEclipse,是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。在结构上,MyEclipse的特征可以被分为7类:(1).JavaEE模型(2).WEB开发工具(3).EJB开发工具(4).应用程序服务器的连接器(5).JavaEE项目部署服务(6).数据库服务(7).MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。MyEclipse6.0特点1、平台和安装支持1)兼容Eclipse3.3/Europa1.02)支持Java5&Java63)可运行在Windows(XP,Vista)、Linux、Mac操作系统2、改进了JavaEE5和Spring功能部件1)提高EJB3工程项目的灵活度,从数据库模式直接产生bean2)支持Java持久化结构开发3)对Spring2.0升级,增强配置管理功能4)升级Hibernate5)Spring-JPA高度集成3、支持AJAX开发和测试1)支持美国Apple公司—所有的AJAX特征能在Mac操作系统上运行2)改进了AJAXWeb浏览器3)改进了AJAX工具4)增强了JavaScript调试4、支持RADWeb开发。5、具备Matisse4MyEclipse可视化Swing设计器。6、快速JavaEE部署和测试1)项目自动部署和启动服务:根据指定的调试和运行模式,自动配置项目和启动服务器;在配置前,自动停止运行的服务器;在现有的应用程序配置中可以重新配置。2)MyEclipseTomcat6服务器——就地集成,启动只要一秒钟。3)MyEclipseDerby服务器:自动进行JDBC连接;可配置的启动选项。7、MyEclipse学习中心(提供帮助和学习资料)1)包含JavaEE项目源代码2)一键安装MyEclipseJavaEE示例项目。2.4Tomcat简介如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。因此需要一个交互式的Web,于是便诞生了各种Web语言。如Asp,Jsp,Php等。当然,这些语言与传统的语言有着密切的联系,如Php基于C和C++语言,Jsp基于Java语言。Tomcat即是一个Jsp和Servlet的运行平台。Tomcat是一个免费的开源的Serlvet容器,是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。2.5MySQL简介MySQL是目前最为流行的开放源代码的数据库,是完全网络化的跨平台的关系型数据库系统,它是由瑞典的MySQLAB公司开发、并布并支持的,于1995年建立。它的象征符号是一只名为Sakila的海豚,代表着MySQL数据库和社团的速度、能力、精神和优秀品质。目前MySQL被广泛地应用在Internet上的中小型网站中。MySQL是一个多用户、多线程的支持标准SQL语句的关系型数据库。它支持大文件及图像的存储,并且提供一个丰富和极其有用的功能集。它的特点是速度快,易用,稳定性能好,它由一个服务器守护程序MySQL和很多不同的客户程序和库组成。MySQL支持标准的ANSISQL语句,支持多种平台,在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。由于其是开放源码这一特点,很多公司向开放源代码的数据库系统迁移,从而降底花费成本。MySQL可以称得上是目前运行速度最快的SQL语言数据库。除了具有许多其它数据库所不具备的功能和选择外,MySQL数据库是一种完全免费的产品,用户可以直接从网上下载数据库,用于个人或商业用途,而不必支付任何费用。MySQL具有功能强大、支持跨平台、运行速度快、支持面向对象、安全性高、成本低、支持各种开发语言、数据存储量大、支持强大的内置函数等特点。MySQL5.0版本则把目标对准了企业用户,对于4.1版本中的所有新特性,5.0版本悉数收入囊中,并且独具以下特点:对外键的良好支持;系统自动报错机制以及对存储过程的充分支持。大访问量查询加上修改时很容易阻塞,不支持事务处理使MySQL无法胜任关键的企业业务,不支持外键约束等等,使得数据的完整性只能靠开发人员自己保证.然而MySQL结构简单,又不包含一些复杂的高级的数据库功能,因此查询极快.这也是本系统选择MySQL的主要原因。2.6MVC设计模式MVC模式的基本形式图如图2-3所示。图2-3MVC模式的基本形式图MVC(Model-View-Controller)模式并不是J2EE行业人士标新立异的。MVC的核心就是要做到三级甚至多级的松散耦合,MVC模式将系统分为三个部分,分别是数据模型、视图和控制器,并定义了这三个部分之间实现通信的一种模式,使每个部分不必卷入到其他部分的状态表示和方法实现的细节中去。每个部分有自己的数据管理规则,各个对象之间的通信只能使用自己定义的一个受限连接集合进行。保持这种分离性通常是面向对象编程和设计要追求的目标,让各个对象只需专注于自己的事务。模型部分代表了商业数据的访问及修改数据的操作。当数据发生改变时,要负责通知视图部分,并且提供视图查询状态的能力。另外,还向控制部分提供应用功能。视图部分以自己的方式显示模型的内容。访问模型的数据,并且当模型的数据发生变化时更新模型的显示。视图还把从用户那里得到的信息传给控制部分。控制部分定义了应用的行为。分发用户请求和选择表现视图,还负责解释用户输入,进而调用模型的功能。在Web应用中,用户输入包括对Web级资源的、GET和POST请求。控制部分根据用户交互和模型的状态选择要显示的视图。一个应用程序一般为相关的功能选择一个控制部分。第3章系统分析与可行性分析3.1系统分析网上书城系统主要是实现网上选书、购书、产生订单等功能的系统。一个典型的网上商城一般都需要实现商品信息的动态提示、购物车管理、客户信息注册登录管理、订单处理等模块。根据网上书城的基本需求,本系统可分为前台和后台两大部分,前台为用户提供全面的网上购书服务,后台将实现对用户、书籍及用户购买书籍产生消息记录的管理,两部分的具体内容和功能描述如下:3.1.1前台(1)用户登录与注册模块用户在浏览图书之后如果想买图书,必须先进行登录,然后把自己想买的图书放进购物车并且生成订单。当顾客还没有属于自己的用户名的时候就要先进行注册,然后再登录。(2)商品浏览模块为了让顾客购买书籍,我们必须先提供让其了解书籍信息,然后做出购买的决定。在首页我们提供有限的商品的信息,如果会员需要分类了解书籍信息,系统为每个分类都提供了详细的分类书籍信息提供页,会员可以选择是否购买或者放入购物车以供将来选择参考。(3)商品查询模块用户书籍查询是出于购买目的,紧接着查询的下一个功能应是对书籍的购买操作或是个人的购物车添加功能。对于商品查询我们提供多条件组合查询,包括按时间、书籍类型内容或任意几项内容的查询。同时我们还提供了模糊查询,即当用户不知道书的具体名称但是知道图书名称所包含的字段,就可以查出所有包含该字段的图书以便提供用户使用。(4)购物车模块电子商务站点的核心就是购物车。用户可在这个区域内建立他们的订单,只要选择各种自己需求的图书,并将它们添加到自己的预购信息栏中即可。通常,该过程被形象地成为“向车中添加项目”,这就像在超市购物一样。当然,他随时有权将商品从车中取出,或者将车推往前台结账。在购物车中可以删除已经加入购物车的图书,还可以进行数量的选择。(5)订单管理模块用户在确定购物车信息之后填写收货详细信息后就可以结算生成订单了。该模块能够让用户方便查看订单状态和管理已生成订单的支付、取消。3.1.2后台(1)用户管理模块该模块负责管理所有注册过网上书城的用户信息。主要包括新用户的注册、激活以及对已注册用户信息的添加、删除、修改等功能。(2)图书信息管理模块该模块负责管理本系统所有销售书籍信息。主要包括图书的分类、添加、删除、修改以及查找等功能。只有管理员才具有对书籍信息进行添加、删除、修改的权利,商品管理是网上书城系统的核心,网上书城对书籍价格的调整以及新书的添加等都将在这部分完成。(3)购物信息管理模块为了查看书店的销售业绩,我们必须对所有的书籍的销售情况进行汇总,购物信息管理模块将完成此项功能,系统可以查看用户订单中的信息从而了解图书的销售情况,并且按照订单来邮寄图书给客户。3.2可行性分析可行性研究的目的就是要以最小的代价在尽可能短的时间内确定问题是否能够解决。当然不能靠主观猜想而是要靠客观分析。必须分析几种主要的可能解法的利弊,从而判原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得去投资开发这个系统的程度。因此,可行性研究实质上是在较高层次以较抽象的方式进行的系统分析和设计的过程。通过对需求文档的各个方面进行了具体的了解和分析之后,现对开发网上书城系统的可行性进行分析。技术上可行:本系统采用Windows系列操作系统,开发工具使用功能强大的myeclipse,服务器采用Apache公司的Tomcat,数据库采用MySQL提供强有力的支持,MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,技术上都比较成熟。因此在技术上是可行的。经济上可行:由于使用开发工具大多是开源免费软件,基本上不需要额外支出,开发经费没有问题。管理上可行:本系统采用java编写,对平台没有依赖性,可以部署在任意平台下管理。另外,本系统采用B/S架构,也可以通过实现远程管理。因此在管理上可行。第4章系统设计4.1总体设计系统功能模块概述和分析网上书城系统主要包括会员注册、订单管理、购物车、搜索、支付等基本功能。此外,本系统也将实现在线图书销售系统的后端管理,包括图书的添加、订单的处理等功能。本系统完全基于JSP技术,在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。本系统主要功能如下:前台(客户购买)部分:用户管理:注册会员、登录、激活、退出、修改密码;分类显示:显示所有1级和2级分类;图书显示:按分类查询图书、通过关键字搜索图书、高级搜索图书、查看某本图书的详细等;购物车管理:向购物车中添加图书、修改购物车中图书数量、删除购物车中图书、我的购物车;订单管理:通过购物车中图书生成订单、查看我的订单、查看某个订单的详细、订单支付、确认收货、取消未付款订单。后台(管理员管理)部分:管理员:管理员登录;分类管理:查看所有分类、添加1级分类、添加2级分类、修改1级分类、修改2级分类、删除1级分类、删除2级分类;图书管理:按分类搜索图书、高级搜索图书、添加新图书、查看图书详细信息、编辑图书、删除图书;订单管理:按状态搜索订单、查看订单详细信息、取消订单、发货;4.2详细设计根据系统功能分析,可以画出系统的功能模块图。前台:用户购书功能图如图4-1所示图4-1前台购书功能图后台管理员功能图如图4-2所示图4-2后台管理员功能图数据库分析信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。概念模型设计概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。信息世界中包含的基本概念有实体和联系。(1)实体(entity)客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应商、一个部门、一本书、一位读者等都是实体。(2)联系(relationship)在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1:n);多对多联系(m:n)。概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-RelationshipApproach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。根据数据流程分析,绘制网上书城的全局E-R模型如图4-3所示。图4-3系统E-R图根据设计规划的主要实体有:用户、图书分类、图书、购物车、订单、管理员。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):用户实体E-R图如图4-4所示图4-4用户实体E-R图图书分类实体E-R图如图4-5所示图4-5图书分类实体E-R图图书实体E-R图如图4-6所示图4-6图书实体E-R图购物车实体E-R图如图4-7所示购物车其实是购物项的集合!即多个购物项构成了购物车。图4-7购物车实体E-R图订单实体E-R图如图4-8所示订单其实是订单项的集合,即多个订单项构成了订单。图4-8订单实体E-R图数据库表设计数据库表设计主要是把概念结构设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。本系统数据库表如下:表4-1t_user用户表字段名称数据类型主键是否空说明uidchar(32)YN主键loginnamevarchar(50)NN登录名loginpassvarchar(50)NN登录密码emailvarchar(50)NN邮箱地址statusbooleanNN是否激活activationCodechar(64)NN激活码(唯一)表4-2t_category分类表字段名称数据类型主键是否空说明cidchar(32)YN主键cnamevarchar(50)NN分类名称pidchar(32)NY父分类IDdescvarchar(100)NY分类描述orderByintNY序号,用来排序表4-3t_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序号,用来排序表4-4t_cartitem购物车表字段名称数据类型主键是否空说明cartItemIdchar(32)YN主键quantityintYN数量bidchar(32)YN图书IDuidchar(32)YN用户IDorderyByintYN序号,用来排序表4-5t_order订单表字段名称数据类型主键是否空说明oidchar(32)YN主键ordertimechar(19)YN下单时间totaldecimal(10,2)YN合计金额statusintYN订单状态addressvarchar(1000)YN收货地址uidchar(32)YN用户ID表4-6t_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表4-7t_admin管理员表字段名称数据类型主键是否空说明adminIdchar(32)YN主键adminnamevarchar(50)YN管理员名称adminpwdvarchar(50)YN管理员密码第五章系统实现5.1前台页面功能实现网上书城的整个前台部分是供用户浏览、选购图书的部分,一个好的网站的前台部分一定非常精美,非常有条理,因此,前台的设计主要把握3点:简明扼要、条理清晰、层次分明。下面将一一介绍网上书城系统的前台部分的实现。5.1.1首页模块首页模块包括3个主要的部分,采用内嵌框架技术。位置分别为上、左、中。图5-1首页界面上部的实现上部包含两大部分内容:网站标题;菜单。菜单部分就是一系列的超链接,用户在未登录时看到的是“登录”和“注册”链接;在登录后看到的是“我的购物车”、“我的订单”、“修改密码”、“退出”超链接,以及当前用户名称。相关代码:<body><h1style="text-align:center;">网上书城系统</h1><divstyle="font-size:10pt;line-height:10px;"><c:choose><c:whentest="${emptysessionScope.sessionUser}"><ahref="<c:urlvalue='/jsps/user/login.jsp'/>"target="_parent">会员登录</a>| <ahref="<c:urlvalue='/jsps/user/regist.jsp'/>"target="_parent">注册会员</a></c:when><c:otherwise>会员:${sessionScope.sessionUser.loginname}  |  <ahref="<c:urlvalue='/CartItemServlet?method=myCart'/>"target="body">我的购物车</a>  |  <ahref="<c:urlvalue='/OrderServlet?method=myOrders'/>"target="body">我的订单</a>  |  <ahref="<c:urlvalue='/jsps/user/pwd.jsp'/>"target="body">修改密码</a>  |  <ahref="<c:urlvalue='/UserServlet?method=quit'/>"target="_parent">退出</a></c:otherwise></c:choose></div></body>左部的实现左部显示所有分类,包含所有1级、2级分类。左部使用了Javascript的Q6Menu组件来完成显示所有分类。当用户点击某个1级分类名称时会展示当前1级分类的所有2级分类。相关代码:<scriptlanguage="javascript">varbar=newQ6MenuBar("bar","网上书城");$(function(){ bar.colorStyle=4; bar.config.imgDir="<c:urlvalue='/menu/img/'/>"; bar.config.radioButton=true;<c:forEachitems="${parents}"var="parent"><c:forEachitems="${parent.children}"var="child">bar.add("${parentame}","${childame}","<c:urlvalue='/BookServlet?method=findByCategory&cid=${child.cid}'/>","body");</c:forEach></c:forEach> $("#menu").html(bar.toString());});</script></head><body><divid="menu"></div></body>中部的实现中部是网站的骨干,点击任何超链接都会在中部显示。默认只是使用纯文本显示欢迎信息。相关代码:<body><h1>欢迎进入网上书城系统</h1><ahref="://user.qzone.qq/124152635/infocenter?ptsig=UbEs29ktm1MUmvxJdGuUzoZN2wJjZpfQjA0925tJF3A_"target="_top"><imgsrc="://localhost:8080/goods/images/link.gif"border="0"style="border:1px#DCD8D7solid;"/></a></body>用户模块注册用户是构成网站主体的一个重要组成部分,网站设置注册用户的目的之一在于方便网站信息的管理。用户在登录之前需要先进行注册,在首页中点击“注册”链接就可以到达注册页面。图5-2用户注册页面表单校验注册页面使用JQuery对用户输入的数据进行校验:用户名:不能为空;长度必须在2~15之间;不能是已注册过的;登录密码:不能为空;长度必须在2~15之间;确认密码:不能为空;必须与登录密码相同;Email:不能为空;必须是正确的Email格式;不能是注册过的Email;验证码:不能为空;必须与图片上的验证码相同。表单校验中,用户名是否被注册过、Email是否被注册过、验证码是否正确这三项都需要请求服务器,所以这里使用的是JQuery的ajax()来完成对服务器的访问。激活当用户注册成功后还需要激活成功后才能登录。在注册成功后,系统给用户的邮箱发送一份激活邮件。当用户登录自己的邮箱后,在激活邮件中点击激活链接完成激活后,才可以去登录。在首页点击“登录”链接就可以来到登录页面。图5-3会员登录页面表单校验用户名:不能为空;长度必须在2~15之间;用户名是否存在;密码:不能为空;长度必须在2~15之间;验证码:不能为空;是否正确。登录表单校验使用的JQuery完成,其中用户名是否存在,以及验证码是否正确需要使用JQuery的ajax()向服务器发送异步请求。登录成功用户登录成功后,会回到首页。这时在首页会显示当前用户的名称,以及“我的购物车”、“我的订单”、“修改密码”、“退出”链接。也就是说,这几个功能只能登录用户才能使用,而游客是无法使用的。用户在登录成功后,点击修改密码链接就会到达修改密码页面。图5-4修改密码页面表单校验原密码:不能为空;长度必须在2~15之间;是否正确;新密码:不能为空;长度必须在2~15之间;确认密码:不能为空;必须与新密码相同;验证码:不能为空;是否正确。表单校验使用JQuery完成。其中原密码和验证码是否正确,需要异步访问服务器,这里使用的是JQuery的ajax()完成的。当用户登录后,点击退出链接可以完成退出。退出成功后会到达登录页面!图书模块在首页左部点击某个2级分类,会在首页的中部显示图书列表页面。图书列表使用分页显示。图5-5图书列表页面相关代码:publicclassBookServletextendsBaseServlet{privateBookServicebookService=newBookService();/* *获取当前页码 */privateintgetPageCode(ServletRequestreq){ StringpageCode=req.getParameter("pc");if(pageCode==null)return1;try{returnInteger.parseInt(pageCode); }catch(RuntimeExceptione){return1; } }/* *获取请求的url,但去除pc参数 */privateStringgetUrl(ServletRequestreq){ Stringurl=req.getRequestURI()+"?"+req.getQueryString();intfromIndex=url.lastIndexOf("&pc=");if(fromIndex==-1)returnurl;inttoIndex=url.indexOf("&",fromIndex+1);if(toIndex==-1)returnurl.substring(0,fromIndex);returnurl.substring(0,fromIndex)+url.substring(toIndex); }可以在图书列表上方输入关键字进行搜索。点击某本图书,会到达图书详细页面。图5-6图书详细信息页面在图书列表页面点击高级搜索到达搜索页面。图5-7高级搜索页面高级搜索有三个条件:书名、作者、出版社,三个条件的关系是并列的。而且三个条件都是模糊查询。相关代码:/** *按作者查询 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */publicStringfindByAuthor(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{/* *1.获取当前页码 */intpc=getPageCode(request);/* *2.使用BookService查询,得到PageBean */ Stringauthor=request.getParameter("author"); PageBean<Book>pb=bookService.findByAuthor(author,pc);/* *3.获取url,设置给PageBean */ Stringurl=getUrl(request); pb.setUrl(url);/* *4.把PageBean保存到request,转发到/jsps/book/list.jsp */ request.setAttribute("pb",pb);return"/jsps/book/list.jsp"; }/** *按出版社查询 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */publicStringfindByPress(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{/* *1.获取当前页码 */intpc=getPageCode(request);/* *2.使用BookService查询,得到PageBean */ Stringpress=request.getParameter("press"); PageBean<Book>pb=bookService.findByPress(press,pc);/* *3.获取url,设置给PageBean */ Stringurl=getUrl(request); pb.setUrl(url);/* *4.把PageBean保存到request,转发到/jsps/book/list.jsp */ request.setAttribute("pb",pb);return"/jsps/book/list.jsp"; }/** *按图名查询 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */publicStringfindByBname(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{/* *1.获取当前页码 */intpc=getPageCode(request);/* *2.使用BookService查询,得到PageBean */ Stringbname=request.getParameter("bname"); PageBean<Book>pb=bookService.findByBname(bname,pc);/* *3.获取url,设置给PageBean */ Stringurl=getUrl(request); pb.setUrl(url);/* *4.把PageBean保存到request,转发到/jsps/book/list.jsp */ request.setAttribute("pb",pb);return"/jsps/book/list.jsp"; }/** *加载图书 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */publicStringload(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{ Stringbid=request.getParameter("bid"); request.setAttribute("book",bookService.load(bid));return"/jsps/book/desc.jsp"; }}购物车购物车使用数据库来保存数据,也就是说添加到购物车中的图书,不会因为关闭浏览器,或者是关闭电脑而消失。而且修改数量,是通过异步请求来操作数据库的。在图书详细页面,给出数量,然后点击“购买”就可以把图书添加到购物车中,并且会到达购物车列表页面。图5-8购物车页面可以在首页上部点击“我的购物车”链接查询购物车。购物车列表页面会显示所有车中所有条目,每个条目会显示图书图片、图书名称、图书当前价、数量,以及小计。在购物车列表页面中,点击某个条目上的数量来完成修改数量。这项操作会修改底层数据库。所以这里需要使用JQuery的异步处理访问服务器,完成对数据库表的修改。当数量为1时,如果把数量减1,会弹出确认对话框,提示是否删除该条目。在购物车列表页面中,点击某个条目后面的“删除”链接会删除当前条目。可以勾选N个条目,然后点击“批量删除”链接,完成一次删除多个条目。相关代码:*我的购物车 *@paramreq *@paramresp *@return *@throwsServletException *@throwsIOException */publicStringmyCart(ServletRequestreq,ServletResponseresp)throwsServletException,IOException{/* *1.获取session中的user,并购物user的uid */ Useruser=(User)req.getSession().getAttribute("sessionUser"); Stringuid=user.getUid();/* *2.调用service的myCart(Stringuid)方法获取当前用户的所有购物车条目 */ List<CartItem>cartIt

温馨提示

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

评论

0/150

提交评论