足下购物网站设计与实现毕业设计论文正文终稿_第1页
足下购物网站设计与实现毕业设计论文正文终稿_第2页
足下购物网站设计与实现毕业设计论文正文终稿_第3页
足下购物网站设计与实现毕业设计论文正文终稿_第4页
足下购物网站设计与实现毕业设计论文正文终稿_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

足下购物网站设计与实现目录摘要 1关键词 1一、绪论 21、系统开发背景 22、系统实现的目标 2二、系统设计 31、可行性分析 32、系统需求分析 33、数据流图 44、数据字典 75、开发技术和开发工具 10三、概要设计 111、功能分析 112、数据库需求分析 113、数据库概念设计和逻辑设计 12四、详细设计 181、系统公共类 182、系统管理 21五、测试 351、测试分析 352、模块测试 353、集成测试 374、验收测试 375、测试结论 37六、总结 39致谢 40参考文献 41第42页(共41页)足下购物网站设计与实现摘要:伴随着计算机技术在各行各业日益广泛和深入的应用,网络的概念早已深入人心。商家建立网站,改变我们原有经营方式与经营理念的同时,也为商家带来了更高的效益。“足下购物网站”是一家制造与销售旅游用品的公司,目前他们只销售自己的产品。为了更好的扩展销售渠道,扩大销售规模,“足下购物网站”也想利用网络销售自己的产品,开发一个网上购物的商店。网站使用B/S结构,JavaBean+selvlet/jsp采用MCV模式开发。网站主要分为前台和后天两部分。前台主要针对消费者,主要实现网页的浏览、商品展示、会员注册、购物车管理、商品收藏管理、订单管理等功能;后台由管理员使用,主要实现商品管理、进货管理、订单管理、系统管理等功能。关键词:足下购物网站JavaSQLServer2005MVC一、绪论1、系统开发背景近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。在开发过程中,我们应该根据实际的需要来使用最合适的技术,本系统则采用较新的JAVA技术,一方面JAVA的安全性和跨平台性比较好,另一方面,我也希望能从开发该系统的过程中,深入学习一下这门编程语言。2、系统实现的目标随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。利用计算机来获得和处理信息是当今信息管理的一大特点,通过计算机可以将许多繁琐的工作简单化,清晰化。而同时网络发展的越来越成熟,网络应用越来越丰富。特别是电子商务的出现,使得人们购物更加方便。只要是家里有一台可以上网的电脑就可以不出户就可以在网络上购买自己想要的物品。足下网站购物在实际应用中的解决方案是建立网站,以及自己的数据库,使得所需商品信息可以及时的保存、更新,可以更好的及时了解商品买卖的情况。使管理员从繁琐的手工操作中解脱出来,并提高了办公效率。因此,我的毕业选题就是针对足下网站购物,并且实现研究服务于实践的原则。二、系统设计1、可行性分析(1)市场上的可行性分析随着国内Internet使用人数的增加,利用Internet进行网络购物并且以银行卡付款的方式越来越流行,市场份额也在迅速增长,电子商务网站也层出不穷。对于消费者来说,网上购物可以实现在家“逛商店”,购物不受时间地理限制,能获得大量的商品信息,能买到当地没有的商品,还可以从订货、买货到货物上门无需亲临现场,既省时又省力。对于商家来说,由于网上销售没有库存压力、经营成本低、经营规模不受场地限制等,在将来会有更多的企业选择网上销售,通过互联网对市场信息的及时反馈适时调整经营战略,以此提高企业的经济效益和参与国际竞争的能力。对于市场经济来说,这种新型的购物模式可在更大的范围内。更广的层面上以的效率实现资源配置。所以,网上购物突破了传统的商务障碍,无论对消费者、企业还是市场都有着巨大的吸引力和影响力,在新经济时期无疑是达到了“多赢”效果的理想模式。足下购物网站进军电子商务无疑是一个很好的机遇。对于足下购物网站这样的旅游用品公司来说,电子商务能扩大市场份额。(2)技术上的可行性本管理信息系统将采用技术成熟的JavaWeb技术,因为Java得本身平台无关性以及系统本身采用B/S结构保证系统可以在多个平台使用。后台数据库采用微软公司的SQLServer数据库,因为它的灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技的飞速发展使硬件的更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。(3)经济上的可行性本系统由作者自主开发,操作人员只需简单培训即可上岗。管理和维护比较简单,除了必要的设备投资外,后期只需少量资金就可确保运转。因此对公司在经济上是完全可以接受的。本系统的使用能大大提高员工工作效率,加速资金周转、降低各项成本及改善服务质量,能够取得良好的经济效益。综上所述,本系统在管理上、技术上和经济上都是完全可行的,并且投入少、见效快。因此系统的开发是完全可行的。2、系统需求分析由于足下购物网站只是一种小型网上购物,所以对访问量不大的情况下是完全可以的,一旦设计到点击量很大时则需要重整代码,使得安全性、可维护行、可操作性变的更完善,目前来说系统的安全性相对来说已经比较安全。用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能够充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详细的数据字典,为后面的具体设计打下基础。建立一个网上购物平台,使得网上商贸变得更加系统化,规范化和自动化,从而达到顾客快速、方便购物,商家提高利润的目的。通过对用户应用环境、购买过程及各有关环节的分析,系统的需求可以归纳为两点。(1)数据需求:数据库数据要完整、同步、全面的反应各种类别的家纺的信息。(2)功能需求:具有商品查询、查看、购买、服务功能。信息采集要方便快捷,数据更新维护要自动高效,系统操作要简单实用。在执行选购时,用户界面要能够直观的实现待选商品,以供采购决策。对于本平台,具体需要实现以下一些基本功能。(1)商品展示功能:主要负责显示商品的描述性信息和图片等参数,它包括两个部分:新品推广和热门推荐商品的展示;同时还实现了商品的分类浏览。在每类商品的展示中要显示该类商品的图片、名称、描述信息、价格等。(2)用户管理功能:非注册用户可以浏览商品信息。每个注册用户拥有一个自己的个人信息管理平台,可以浏览并选购商店中的商品,同时还可以通过在线留言反馈个人对商品的意见,做好售后服务。在用户个人信息管理中,主要包含以下功能:(3)方便、快捷的查询功能:从不同的检索入口,检索要购买的家纺,从而决定是否购买。(4)意见反馈功能:秉承用户就是上帝的服务原则,通过“在线留言”的方式,听取用户对网站和商品的意见,为商店与用户间的沟通搭建良好的互动平台。该模块提供了发表留言、查看留言等功能。(5)后台管理功能:它贯穿于以上的功能,主要服务于网站的管理员,主要包括:用户、商品、订单和留言信息的管理。3、数据流图数据流图(DFD)是组织中信息运动的抽象,是管理信息系统逻辑模型的主要形式。这个模型不涉及硬件、软件、数据结构与文件组织,它与系统的物理描述无关,只是用一种图形及与此相关的注释来表示系统的逻辑功能。图形描述简明,清晰,不涉及技术细节,所描述的内容是面向用户的。因此数据流图是系统分析人员与用户进行交流的有效手段,也是系统设计的主要依据之一。数据流图是在对业务流程图进行分析的基础上,从系统的科学性、管理的合理性、实际运行的可行性角度出发,将信息处理功能和彼此之间的联系自顶向下、逐层分解,从逻辑上精确的描述新系统具有的数据加工功能、数据输入、数据输出、数据存储及数据来源和去向。(1)实体——实体是现实世界中客观存在的事物。(2)数据处理——数据处理指对数据流进行某些操作和变换。每个数据处理有相应的名称,简明的描述完成什么加工。在分层数据库当中,数据处理还要加编号。(3)数据流——表示数据的流向,说明系统内部数据的流动。也可用来表示对数据文件的存取操作。(4)数据存储——数据存储指系统保存的数据,它一般是数据库文件。流向数据存储的数据流可以理解为写入文件或查询文件,从数据存储流出的数据可理解为从文件流出或得到查询结果(如图2.1所示)。图2.1数据流图图例(1)顶层图用户用户网上购物管理信息系统注册、登陆购物信息用户信息、商品信息发布购物管理管理员图2.2顶层图(2)第二层图图2.3第二层图(3)公告信息底图图2.4公告信息底图(4)商品管理底图图2.5商品管理底图(5)订单管理底图图2.6订单管理底图订单管理:用户在前台完成购物,结账并生成订单后,后台管理员就要对订单进行确认处理,确认后才能实物发放,直到用户收到订单上的商品,整个购物流程结束。在此期间,用户可以随时登陆系统查看自己购买商品的订单情况。后台管理员通过后台登陆系统对用户订单进行查看、确认,并完成相应的处理操作等。4、数据字典数据流图重点在描述以处理逻辑为中心的数据的流入与流出,而对数据本身未加描述,影响了用户对数据流图的理解。数据字典是对数据流图的很好的补充,它是数据流图上所有成分的定义和解释的文字集合,它是对数据流图的各种成分起注解、说明的作用,同时它还对系统分析中其他需要说明的问题进行定义和说明。系统分析人员把不便在数据流图上注明而对于系统分析应该获得,对整个系统开发以至将来系统运行与维护是必须的信息尽可能放入数据字典。所以根据上面数据流程图,可以得出本系统中各个数据的数据字典。下面是一部分的数据的数据字典:表2.1注册信息数据流条目数据流名称:注册信息数据流编号:01简要说明:主要描述用户成为注册会员所填的相关信息数据流来源:普通用户数据流去向:用户管理数据流组成:用户名+密码+联系方式+电子邮件表2.2登录信息数据流条目数据流名称:登录信息数据流编号:02简要说明:主要描述用户用来登录系统的信息数据流来源:注册用户数据流去向:用户管理数据流组成:用户名+密码表2.3订单管理数据流条目数据流名称:订单管理数据流编号:03简要说明:主要描述根据注册用户的订单信息,对它们进行整合,生成相关订单数据流来源:单据管理数据流去向:管理员数据流组成:订单编号+商品编号+用户编号+商品价格+所购数量+创建日期+发货时间表2.4商品信息管理数据流条目数据流名称:商品信息管理数据流编号:04简要说明:主要描述管理员对商品进行添加、删除和修改的管理数据流来源:管理员数据流去向:商品信息管理数据流组成:商品编号+商品分类编号+商品名称+商品介绍+价格+剩余库存量+点击数表2.5商品信息表数据存储条目数据存储名称:商品信息表数据存储编号:D1组成:商品编号+商品分类编号+商品名称+商品介绍+价格+剩余库存量+点击数关键字:商品编号,商品分类编号表2.6用户信息表数据存储条目数据存储名称:用户信息表数据存储编号:D2组成:用户编号+用户名+密码+性别+联系方式+电子邮件+地址+邮编关键字:用户编号表2.7订单详细信息表数据存储条目数据存储名称:订单详细信息表数据存储编号:D3组成:订单编号+商品编号+商品价格+所购数量关键字:订单编号,商品编号表2.8购物车表数据存储条目数据存储名称:购物车表数据存储编号:D4组成:记录编号+购物车编号+所购商品编号+购买时间+购买数量关键字:记录编号5、开发技术和开发工具系统的建设关键在于其所使用的架构,而网上购物这种基于WEB的系统,传统的C/S架构已经不能满足大量用户的访问和操作,B/S基于浏览器的架构则是目前网络系统应用的主流,它将大量的数据处理工作交给服务器端来处理,客户端只用通过普通的IE浏览器即可访问系统,方便快捷而且利于系统的更新和维护,JAVA语言在该方面更是得天独厚,J2EE规范的出现则使系统的开发更加规范,层次更加清楚,更利于对复杂事务的处理,而且在安全性方面也做的更好。基于MVC的开发流程则使开发过程更加清晰明了,利于做一些复杂的逻辑实现,从而节省了开发周期和开发成本。所以足下购物网站是基于B/S的系统,使用MVC模式开发,使用技术J2EE下的jsp、servlet、JavaBean、html、css、javascript、ajax、JNDI、EL表达式、JSTL标签。开发工具:myeclipse6.5、dreamweaver8、sqlserver2005。三、概要设计在建设网站系统之前,我们必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏。1、功能分析经过前期的深入调查和研究,总结出该平台需要完成的一些具体功能。前台:用户信息管理、浏览的商品信息、购物车、订单情况等等。后台:管理员登录,管理员信息管理、商品信息管理、用户信息管理、销售管理。根据系统功能分析的结果,如3.1功能分析图所示:图3.1功能分析图2、数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,是非常重要的一个阶段。这个阶段主是要确定基本数据、数据结构处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础,通过对足下网站购物的内容分析,针对本系统,设计的数据如下:管理员基本信息:管理员名称、密码。公告信息:公告标题、公告内容、发布者、发布时间。客户信息:电子邮箱(客户账号)、客户密码、注册时间、收获人姓名、固定电话、移动电话、收获地址。商品信息:商品类型、商品名称、商品价格、折扣、是否新品、商品状态、商品图片、备注。订单信息:客户编号、订单状态、下订单时间、商品数量。3、数据库概念设计和逻辑设计几乎所有的项目都是基于数据库的,这使得数据的设计在整个项目中的地位举足轻重。良好的数据设计往往能够减少开发的负担。数据库设计是指对于一个给定的应用环境,通过合理的逻辑设计和有效的物理设计来构造较优的数据库模式,建立数据库极其应用系统,满足用户的各种信息需求。(1)数据库概念设计概念设计是把用户的需求进行综合、归纳与抽象,统一到一个整体概念结构中,形成数据库的概念模型。概念模型是面向现实世界的一个真实模型,它一方面能够反映现实世界,同时又容易转化为数据库逻辑模型,也容易让用户理解。数据库概念模型独立于计算机系统和DBMS。E-R图是设计数据概念模型的一种有效地工具。(其符号见图3.2)实体联系属性图3.2E-R图图例实体——实体是现实世界中客观存在的事物。联系——实体之间可能存在着各种联系,这种联系通过信息系统的功能活动表现出来。属性——实体或联系的性质就是属性。了解了E-R图的大致内容,结合需求分析的要求绘制了足下网站购物系统的E-R图图3.3用户信息E-R图图3.4商品信息E-R图图3.5购物车信息E-R图图3.6管理员信息E-R图mmnm用户送货方式发货商品订购商品名称商品ID商品价格用户ID用户名密码nnnnn1nn管理员短信息公告发布密码用户名标题时间内容内容发送1图3.7实体和实体之间的关系E-R图(2)数据库逻辑设计逻辑设计在数据库概念设计的基础上进行。其主要任务是将概念模型转换为数据库的逻辑模型,并与选用的DBMS相结合,产生具体的DBMS所支持数据模型的逻辑模式。表3.1UserInfo(用户/管理员信息表)字段名称数据类型说明IdInt用户编号主键,自动增长UserNameVarchar(50)用户名称必填和唯一约束userPwdVarchar(50)用户密码必填,密码长度大于等于6位。该表和客户信息表一样存在字段的命名规则的要求,出于安全考虑对于管理员帐号发放应该谨慎,管理人员数量一定要控制,越少越安全,在实际应用中,我们还要对整个数据库进行加密,以防止系统重要数据泄漏。表3.2Bulletin(公告信息表)字段名称数据类型说明IdInt公告编号主键,自动增长TitleVarchar(100)公告标题必填ContentText公告内容必填UserIdInt发布者外键(UserInfo),必填,表示发布改公告的用户编号。createTimeDatetime发布时间必填,默认为系统当前日期。公告信息表(Bulletin):公告信息,主要用来存储公司在网站上公布的最新消息,包括公告编号,公告标题,公告内容,发布者,发布时间表3-3CustomerInfo(客户信息表)字段名数据类型说明IdInt客户编号主键,自动增长EmailVarchar(100)电子邮箱(客户账号)必填,唯一约束,格式合法(正则表达式判断)PwdVarchar(20)客户密码必填,长度大于6RegisterTimeDatetime注册时间必填,默认为系统当前日期。客户信息(CustomerInfo):客户信息,主要用来存储客户的一些基本信息,如客户ID,客户Email,客户密码,客户注册的时间。表3.4CustomerDetailInfo(客户详细信息表)字段名数据类型说明CustomerIdInt客户编号外键(CustomerInfo),自动增长NameVarchar(50)收获人姓名必填TelephoneVarchar(50)固定电话必填,要求符合格式xxxx-xxxxxxxxmovePhoneVarchar(50)移动电话必填,要求11位数字AddressVarchar(100)收货地址必填客户详细信息(CustomerDetailInfo):客户详细信息,主要存储客户的一些详细信息,根据客户ID存储客户真实姓名,固定电话,移动电话,收货地址。表3.5GoodsType(商品类别)字段名数据类型说明TypeIdInt类别编号主键,自动增长TypeNameVarchar(20)类别名称必填,唯一约束商品类别表(GoodsType):商品类别显示表,主要属性有:TypeId,TypeName。表3.6GoodsInfo(商品信息表)字段名数据类型说明IdInt商品编号主键,自动增长TypeIdInt商品类别外键(GoodsType),必填goodsNameVarchar(50)商品名称必填PriceDecimail(8,2)商品价格必填DiscountFloat折扣必填,范围0.0-10.0,默认不打折。IsNewInt是否新品必填,值只能是0和1(0新品,1不是新品)isRecommendInt是否推荐必填,值只能为0和1(0推荐,1不推荐)StatusInt商品状态必填,值只能为0和2(0上架,1下架)PhotoVarchar(50)商品图片必填,存储商品图片名称RemarkVarchar(20)备注可选输入商品信息表(GoodsInfo):商品信息表主要负责存储商品名称,商品类别,商品图标,商品图片,商品价格,商品重量等信息。主要属性有:ID,TypeIdgoodsNamePrice,Discount,IsNew,isRecommend,Status,Photo,Remark.表3.7OrderInfo(订单信息表)字段名数据类型说明OrderIdInt订单编号主键,自动增长customerIdInt客户编号外键(CustomerInfo),必填,表示下订单的客户编号StatusInt订单状态必填,值只能是0和1,(0未确认1已确认)orderTimeDatetime下订单时间必填,默认为系统的当前日期。订单信息表(OrderInfo):订单信息表主要用来存储会员每次订单信息。表3.8orderGoodsInfo(订单商品信息表)字段名数据类型说明OrderIdInt订单编号主键GoodsIdInt商品编号QuantityInt商品数量必填,值大于0,默认为1订单商品信息表(orderGoodsInfo):订单商品信息表,主要负责存储客户临时性添加的一些商品订单信息,主要属性有:OrderInfo,GoodsId,Quantity。四、详细设计1、系统公共类数据库连接采用数据库连接池技术(JNDI)连接,因为使用JNDI非常简单,方便只需要将配置文件context.xml文件放在web工程的META-INF目录下。把数据库连接驱动拷到tomcat安装目录下的lib目录下即可。然后写一个连接方法。为了避免重复的关闭连接代码。写一个关闭连接的方法,需要关闭的时候直接调用就可以。(1)Context.xml文件<Context><Resourcename="qlzx"auth="Container"type="javax.sql.DataSource"maxActive="100" maxIdle="30"maxWait="10000"username="sa"password="sa" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:49171;DatabaseName=qlzx"/></Context>DBUtil.java类//JNDI连接池(依赖tomcat容器实现) publicstaticConnectiongetConnection(){ Connectionconn=null; try{ Contextctx=newInitialContext(); DataSourceds=(DataSource)ctx.lookup("java:comp/env/qlzx"); conn=ds.getConnection(); }catch(Exceptione){ e.printStackTrace(); } returnconn; } /*关闭数据库连接, *@paramrs如果rs不为空,关闭连接 *@parampstmt如果patmt不为空,关闭 *@paramcon如果con不为空,关闭*/ publicstaticvoidcloseDB(ResultSetrs,PreparedStatementpstmt,Connectioncon){ if(rs!=null){ try{ rs.close(); }catch(Exceptionex){ ex.printStackTrace(); } } if(pstmt!=null){ try{ pstmt.close(); }catch(Exceptionex){ ex.printStackTrace(); } } if(con!=null){ try{ con.close(); }catch(Exceptionex){ ex.printStackTrace(); } } }(2)时间转换将DATE转换为字符串,或者把字符串转换为DATEpublicclassDateTimeUtil{ //字符串转换为Date publicstaticDataconvertDate(StringdateStr){ if(StringUtil.isNullOrEmpty(dateStr)){ returnnull; } Dated=null; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); try{ d=sdf.parse(dateStr); }catch(ParseExceptione){ e.printStackTrace(); } returnd; } //Date转换为时间字符串 publicstaticStringconvertDate(Datedate){ if(null==date){ return""; } SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); returnsdf.format(date); } publicstaticDateconvertDateNoTime(StringdateStr){ if(StringUtil.isNullOrEmpty(dateStr)){ returnnull; } Dated=null; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); try{ d=sdf.parse(dateStr); }catch(ParseExceptione){ e.printStackTrace(); } returnd; } publicstaticStringconvertDateNoTime(Datedate){ if(null==date){ return""; } SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); returnsdf.format(date); }}2、系统管理(1)系统登录1)用户登录界面图4.1用户登录界面图这是后台管理的入口,没有相应权限是不能进入系统的。管理员必须输入用户名和密码,并且验证正确才能进入系统。如果用户名或者密码错误,系统会给出相应提示。正确则进入系统主界面。系统是每个功能模块一个servlet,系统采用隐藏域(hidden)来标识相应的业务功能。相应的功能都用英文来表示。例如用户登录<inputtype="hidden"name="op"value="login"/>,用户登录采用“login”来标识。Jsp页面关键代码<!--使用JSTL标签提示用户用户名或密码错误--> <c:iftest="${requestScope.error=='loginerror'}"> <script>LoginError();</script> </c:if> <c:iftest="${'NotLogin'==param.NotLogin}"> <script>NotLogin();</script> </c:if>Jsp代码 <scripttype="text/javascript"> //验证登录 functioncheckLogin(){ varuserName_input=document.loginForm.userName; if(userName_input.value==""){ alert("请输入用户名!"); userName_input.focus(); returnfalse; } varuserPwd_input=document.loginForm.userPwd; if(userPwd_input.value==""){ alert("请输入密码!"); userPwd_input.focus(); returnfalse; } } functionloadPage(){ document.loginForm.userName.focus(); } functionLoginError(){ alert("用户名或密码错误!"); } functionNotLogin(){ alert("您还未登录!请登录后访问"); } </script>后台代码这是servlet的doGET方法,该方法主要是根据隐藏域来判断是哪一个功能。根据相应功能调用相应方法。如登录则调用avlidateLogin(request,response)方法来处理,然后返回一个路径跳到相应页面显示结果。 publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ Stringop=request.getParameter("op"); StringreturnURL=""; if(op!=null){ if("login".equals(op)){ returnURL=avlidateLogin(request,response); }elseif("loginOut".equals(op)){ returnURL=loginOut(request,response); }elseif("resetPass".equals(op)){ returnURL=resetPass(request,response); } }else{ Objectuser=request.getSession().getAttribute("user"); if(user!=null){ //重定向至首页 response.sendRedirect("admin/index.jsp"); return; }else{ returnURL="login.jsp"; } } request.getRequestDispatcher(returnURL).forward(request,response); }avlidateLogin(request,response)方法,调用持久层UserDao类的avlidateLogin(UserInfoLoginuser)方法,根据用户名和密码查询该用户,如果存在则返回一个UserInfo。没有就返回null。根据avlidateLogin(UserInfoLoginuser)返回的结果判断如果UserInfo不为空则将userinfo保存到session。并且生成当前时间,保存到session来记录用户的登录时间,并且放回String类型的路径"admin/index.jsp"。如果为空则返回路径"login.jsp",然后doGet方法处理,回到登录页面。2)管理员重置密码图4.2管理员密码管理图当前页面提交数据到后台后,由doGet方法处理,然后调用resetPass(HttpServletRequestrequest,HttpServletResponseresponse)方法。在resetPass方法中对表单数据再次验证,以防恶意用户绕过浏览器的验证。再在resetPass方法中调用UserDao类的update(user,oldPass)方法,将新密码保存到数据库,update方法返回一个boolean类型的值,如果为true则跳到ok.jsp页面、并且给session重新赋值,将用户信息(用户ID,用户名,密码)重新保存到session,并且提示用户修改密码成功。如果失败则跳到failed.jsp页面提示用户修改密码失败。//修改密码 privateStringresetPass(HttpServletRequestrequest,HttpServletResponseresponse){ StringoldPass=request.getParameter("oldPwd"); StringnewPass=request.getParameter("newPwd"); //若新密码和旧密码为空 if(StringUtil.isNullOrEmpty(oldPass)||StringUtil.isNullOrEmpty(newPass)){ request.setAttribute("msg","对不起,修改密码失败!请填写完整密码数据!"); return"admin/failed.jsp";//转向失败页面 } HttpSessionsession=request.getSession(); UserInfouser=(UserInfo)session.getAttribute("user"); user.setUserPwd(newPass); //修改密码 booleanflag=newUserDao().update(user,oldPass); if(flag){ request.setAttribute("msg","恭喜您,修改密码成功!"); return"admin/ok.jsp";//成功页面 } request.setAttribute("msg","对不起,修改密码失败!"); return"admin/failed.jsp"; }3)注销图4.3后台管理主菜单图系统管理主菜单,用户点击注销则注销当前用户并且回到系统后台登陆页面。 //用户注销 privateStringloginOut(HttpServletRequestrequest, HttpServletResponseresponse){ HttpSessionsession=request.getSession(); try{ session.invalidate(); }catch(Exceptionex){ } return"login.jsp"; }4)退出系统图4.4退出系统提示当用户点击退出系统的时候,则使用JS关闭,为避免重复提示,系统使用浏览器自带提示用户是否退出系统。代码如下。<ahref="javascript:window.close();">退出系统</a>(2)商品管理1)添加商品信息界面图4.5商品添加界面图用户点击添加商品信息跳到servlet“GoodsManage”处理,调用toAdd(HttpServletRequestrequest,HttpServletResponseresponse)方法。得到一个商品类型的集合。//前往添加页面 privateStringtoADDHttpServletRequestrequest,HttpServletResponseresponse){ ArrayList<GoodsType>types=newGoodsTypeDao().getAllGoodsTypes(); request.setAttribute("types",types); return"admin/addGoods.jsp"; }Jsp页面使用js来验证各个字段保证得到完整的商品信息,如果验证没有通过是不能提交表单的。下面是列出其中一个js函数。使用来验证商品图片类型的,保证上传的文件时图片的类型。在页面使用JSTL标签和EL表达式来生成一个商品类型的下拉列表。这样通过程序生成,可以保证添加商品类型后,在添加页面可以选择相应商品类型。避免出现数据不一致的情况。<selectname="typeId"><c:forEachitems="${requestScope.types}"var="type"><c:outvalue="<optionvalue='${type.typeId}'>${type.typeName}</option>"escapeXml="false"></c:out></c:forEach></select>Servlet代码。DoGet方法这里op等于“add”,doGet方法调用add(request,response)方法,add方法再调用GoodsInfoDao类的addGoods(goods)方法添加商品。2)商品信息管理界面图4.6商品信息管理界面图用户点击“商品信息管理”进入GoodsManage中queryAll方法处理返回前十条商品信息。得到上图所示界面。3)商品信息关键词查询图4.7商品信息查询界面图一在输入框中输入商品名称,根据输入的商品名称,点击查询按钮进行查询。返回符合条件的前十条记录。4)查询功能(按商品类型)图4.8商品信息查询界面图二按类型查看商品使用AJAX技术生成商品类型下拉列表,选择商品类型后调用queryAll方法按商品类型查询然后返回前十条该类型商品信息。AJAX代码如下:查看AJAXvarxmlHttp=null;functioncreateXMLHttpRequest(){ if(window.XMLHttpRequest){ xmlHttp=newXMLHttpRequest();//firefox,chrome等浏览器 }elseif(window.ActiveXObject){//IE try{ xmlHttp=newActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ xmlHttp=newActiveXObject("Microsoft.XMLHTTP"); }catch(ex){} } }}5)删除功能图4.9商品信息查询界面图三图4.10商品信息查询界面图四删除商品,用户可以单个删除,也可以多个删除。关键代码如下JS代码,记录所选中商品信息的ID号,全选,或全反选并使用JS提示用户是否删除。//全选/全反选functionchkAll_click(){ varchkAll=document.getElementById("chkAll"); vardataTable=document.getElementById("dataTable"); if(chkAll!=null){ varitems=dataTable.getElementsByTagName("input"); if(items!=null){ for(vari=0;i<items.length;i++){ if("chkItems"==items[i].name){ items[i].checked=chkAll.checked; } } } }}//选择表格中的某个商品functionchkItems_click(obj){ varchkAll=document.getElementById("chkAll"); vardataTable=document.getElementById("dataTable"); if(obj!=null&&chkAll!=null){ if(obj.checked){ chkAll.checked=true; return; } varitems=dataTable.getElementsByTagName("input"); if(items!=null){ for(vari=0;i<items.length;i++){ if("chkItems"==items[i].name&&items[i].checked){ chkAll.check=true; return; } } chkAll.checked=false; } }}图4.11商品信息查询界面图五(3)系统前台1)按分类查看商品列表在主界面中,显示了商品分类的超级链接,单击超级链接,将打开Search.asp页面,查看指定分类中的商品列表,参数tiyd表示类别的编号。按分类查看商品的页面,如图4.12所示。图4.12按分类查看商品的页面2)选择购买的商品如果用户有喜欢的商品就可以选择购买该商品。图4.13购买商品界面图3)购物车管理把商品放入购物车和在超市把商品放在购物篮是一样的,在到收款台之前需要自己进行确认。订购商品后,需要到购物车中确认自己订购的商品信息。图4.13购物车界面图购物车代码publicclassCart{ privateHashMap<Integer,OrderGoodsInfo>cart; publicCart(){ cart=newHashMap<Integer,OrderGoodsInfo>(); } /** *返回包含所有已经订购的商品信息的容器对象。 *@return当前的容器对象 */ publicHashMap<Integer,OrderGoodsInfo>getCart(){ returncart; } /** *添加一种商品到购物车中,如果这种商品在购物车中已经存在, *那就修改已有的商品的数量, *反之,构造一个新的Item对象添加到items对象中。 *@paramgoods新增的代表这种商品的对象 */ publicvoidaddGoods(GoodsInfogoods){ this.addGoods(goods,1); } 计算所购所有商品的总价。 publicdoublegetTotalPrice(){ doublesum=0.0; Iterator<Integer>it=cart.keySet().iterator(); OrderGoodsInfoorderGoods=null; while(it.hasNext()){ orderGoods=cart.get(it.next()); sum=sum+orderGoods.getSumPrice(); } returnMath.round(sum*100.0)/100.0; }}五、测试软件测试是因为要对质量和可行性做出判断。从而开发出实现用户需求的高质量、性能良好的软件产品。1、测试分析该系统在本地服务器上进行运行和调试,鉴于对系统的内部结构和处理算法的完全了解以及对系统功能的全面掌握对系统进行白盒测试和黑盒测试。在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。测试目的在于:发现错误而执行一个程序的过程,测试重要发现一个发现其中尚未发现的错误。本系统的测试阶段信息流程下图所示。图5.1测试流程图为了设计出有效地测试方案按照下面准则进行测试:所有测试都应追溯到用户需求;在完成了需求模型就要着手制定测试计划,在编码之前最所有测试工作进行计划和设计;运用Pareto原理着重对占出现错误80%的容易出错的20%的模块进行测试,从小规模开始逐步进行大规模测试,通常先重点测试单个程序模块再转向集成的模块簇;精心设计测试方案,尽可能充分覆盖程序逻辑使之达到要求的可靠性。按照软件工程的观点,软件测试(主要是指多模块程序的测试)共包括4个层次。1)单元测试。单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。2)集成测试和确认测试。这一阶段的任务,是通过了单元测试的模块逐步组装起来,通过测试与纠错,最终得到一个满足需求的目标软件。3)验证测试。在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试[15]。在整个测试中,采用了白盒测试和黑盒测试相结合的方法。2、模块测试(1)后台登录模块用例测试表5.1后台测试表用例测试数据预期结果UC1:输入正确的用户名和密码用户名:admin密码:admin系统跳转到主界面UC2:输入空用户名用户名:请输入用户名UC3:输入用户名和空密码用户名:admin密码:请输入密码UC4:输入用户名和错误的密码用户名:admin密码:321ff您输入的用户名或密码错误当用户输入的用户名或密码错误是系统会跳转到出错页面并提示“用户名或密码错误”,用户点击确定,系统会重新返回登陆页面,其中错误信息提示页面如下所示图5.2检测错误信息提示图(2)后台用户重置密码测试表5.2后台用户重置密码测试表用例测试数据预期结果UC1:输入正确原密码密码:123456密码错误!请输入正确的密码UC2:输入新密码密码:654321新密码能为空或密码长度不能小于6位。UC3:重复新密码密码:665432两次输入密码不一致图5.3修改密码图3、集成测试把经过单元测试的模块放在一起形成一个子系统并对它进行测试用于检验模块相互间的协调和通信,这里主要对商品信息管理功能系统进行了测试,经过检验其功能均得以顺利实现,下图为管理员操作的商品信息管理成功运行界面:图5.4检测商品信息管理图把经过测试的子系统装配成一个完整的系统进行测试,经过黑盒测试于白盒测试相结合(灰盒测试)的方式,对整个系统的各个功能模块进行了测试,并调试改正其中的设计和编码错误,经过这个环节的操作整个系统的功能基本实现成功运行。4、验收测试在进行了以上的测试工作后,将整个软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但它是在用户积极参与下进行的,此测试过程主要使用实际数据,进行测试,验证测试的目的是验证系统确实能够满足用户的需求,经过这个环节的实际数据测试,系统的各个功能实现都达到了系统需求设计的要求。5、测试结论测试过程严格按照测试的流程,经过单元测试、子系统测试和系统测试。通过单元测试,查找出了系统各模块内部的错误;通过子系统测试,发现了模块间相互协调和通信上的错误;通过系统的集成测试,发现了软件设计过程中存在的错误。通过改正错误的设计和实现部分,保证了千里之行系统可以完成需求分析中制定的需求。从上面的测试中可以看出,此系统可以完成用户登录、系统管理、商品信息管理、商品类型管理、订单管理、公告管理、客户管理、浏览商品、购买商品等功能。客户在本系统的应用下可实现浏览商品、查看网站公告、购买商品、查询商品、留下建议、个人信息管理、订单管理等功能。管理员可以按照各种方式(如:商品类型,商品名称)查询商品信息。批量删除商品、修改商品信息。发布、修改、删除公告。添加、删除、修改商品类型。管理订单,确认订单、删除、查看订单。删除、修改客户信息。管理员可以修改自己的密码,超级管理可以修改其他管理员的密码。测试阶段的工作一方面发现了系统的各种错误,另外一方面也验证了修改后的系统能够实现提高足下购物网站工作效率的预期目的。六、总结通过这次足下购物网站的毕业设计,我了解到一个系统的开发,即是前台和后台的开发。前台是应用程序的开发:功能模块设计、源代码开发。后台是数据库的开发:系统设计、数据库设计、数据库结构的设计等。通过这次的设计,我学到了很多的东西,让我更进一步地了解了Java编程语言,对数据库也有了更进一步的了解。不仅使我的知识面有所扩充,对于现在的电子网上购物也熟悉了,而且也很好的应用了系统设计相关的软件。本次设计从题目选定到完成文档部分完全按照软件工程开发周期要求,在这中间对许多关键技术的掌握都得到了稳固,基本达成了系统设计的要求。除了进一步的掌握足下购物网站系统的开发过程以及数据库的使用,我们还学到了很多新的知识,积累了许多实际操作经验,相信对以后的继续深造会有很大的帮助。在教育越来越受重视的21世纪,随着人们对电子商务的熟悉不断提高,对网上购物的需求越来越高。电子商务能减少人们购物时间,尤其是对不愿意逛街购物或没有时间上街购物的各类人士来说这是一个不错的选择。而“足下购物网站”是公司通过电子商务来扩大自己的销售渠道。给公司带来更多的利润。在这次的毕业设计中虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,所以系统功能还不是很完善。我会在日后的努力中做出更完善的系统。尽管本购物网站系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。相信本系统是一套公司在日常管理中必不可少的管理软件,这次毕业设计中的最大收获不仅掌握这几门开发工具的应用,而且学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。在此期间所学到的知识与经验使我受益匪浅。但我要改进的、要学习的地方还有很多。在今后我会努力,通过不断地学习让我飞的更高的。致谢回想我的大学生活真的很多的收获和感触。在段时间里我成长了很多,不但学到了文化知识,实践动手能力,更学会了许多做人做事的道理,除了自己的成长和收获不说,我真的很想感谢很多人。首先,我要感谢我的父母,是您们的支持与鼓励是我顺利的读完了我的大学;使您们的教导和点播是我在迷茫的时候不迷失自己;是您们的言传身教使我懂得了如何与人为善,真爱身边的朋友们;是您们的实时适度的纠正,是我顺利成长不断进步;使您们宽和仁和的处事为人,塑造了我豁达开朗的性格,是您们一直以来对我的关怀和爱使我健康的成长,不断地进步,谢谢您们,我亲爱的爸爸妈妈。还有,我要感谢我的毕业设计指导老师王华老师,是您严谨的治学,适时的督促,不断地指导使我顺利完成了我的毕业设计,老师不但经验丰富知识领域宽广而且和善可亲,在整个过程中您不但教授了我很多专业知识,还为我的未来发展学业工作提出了很多宝贵的意见,我们不但是亲切的师生,也是彼此的朋友,在我整个毕业设计的指导过程中您给我的印象就是认真负责,在这里我想对我可敬可亲的王华老师说一声:“王华老师,谢谢您!”非常感谢我的同学们和我的老师们,当我在毕业设计过程中遇到问题和困难时,是你们给我提出许多关键性的意见和建议,使我对整个毕业设计的思路有了总体的把握,并耐心的帮我解决了许多实际问题,使我获益良多。是你们教授了我丰富的知识,教会了我学习知识的能力。谢谢我的母校对我的教育,我将以更加饱满的热情投入到社会阶段的学习中去,充实自己,完善自己,向着自己的目标不断地前进,用我的所学去实现我心中的梦想!!!参考文献[1]陈海山.深入JavaServlet网络编程[M].北京:清华大学出版社,2002[2]张秋余,杨玥.基于用例的需求建模方法[J].计算机工程与设计,2006,19:3539-3541[3]MattheMacDonal.管理信息系统[J].电子工业出版社.2003.Vol.3(8):102-108[4]张秋余,杨玥.基于用例的需求建模方法[J].计算机工程与设计,2006,19:3539-3541[5]JohnW.Satzinger,RobertB.Jackson,StephenD.Burd.[Z].北京:人民邮电出版社,2008[6]王珊,萨师炫.数据库系统概论(第三版)[M].北京:高等教育出版社.2002[7]KarlMoss.JavaServlet开发人员指南[M].北京:清华大学出版社,2002[8]张波.网络答疑系统的设计与实现[D].长春:吉林大学软件学院,2005[9]陆荣幸,郁洲.J2EE平台上MVC设计模式的研究与实现[J].计算机应用研究,2003,03:144-146[10]孙卫琴,李洪称.Tomcat与JavaWeb开发技术详解[M].北京:电子工业出版社,2003[11]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002,06:274-276[12]MartyHall,LarryBrown著,赵学良译.Servlet与JSP核心编程(第2版)[M].北京:清华大学出版社,2004[13]ChristianNagel,BillEvjen.等.C#2005&.NET3.0高级编程(第5版)北京:清华大学出版社,2007[14]尹朝庆.计算机系统结构教程[M].北京:清华大学出版社.2005[15]张海藩.软件工程导论(第四版)[M].北京:清华大学出版社,2003基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的

温馨提示

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

评论

0/150

提交评论