基于web开发的图书销售系统的设计与实现_第1页
基于web开发的图书销售系统的设计与实现_第2页
基于web开发的图书销售系统的设计与实现_第3页
基于web开发的图书销售系统的设计与实现_第4页
基于web开发的图书销售系统的设计与实现_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

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

文档简介

121/132CHANGSHAUNIVERSITYOFSCIENCE&TECHNOLOGY毕业设计(论文)题目:基于web开发的图书销售系统的设计与实现学生姓名:学号:班级:专业:指导教师:2015年6月基于web开发的图书销售系统的设计与实现学生姓名:学号:班级::计算机与通信工程学院指导教师:完成日期:2015年6月

基于web开发的图书销售系统的设计与实现摘要社会在不断的进展壮大,特不是互联网技术不断地深入到社会的各个层面,网上图书销售系统等各个网上销售系统也不断的应运而生【1】。鉴于目前的图书销售系统的功能不全,操作繁杂,系统要求硬件等级高等问题,要想设计一个有个性化的图书销售系统。从而在书店对新书的进货,对书籍出售的治理能力,对会员信息和图书信息的治理能力,对书店治理人员软件操作的适应时刻和操作感受这些方面都将大大的提高。本系统正是基于这一现状而开发出来。关键词:web开发图书销售数据库系统分析软件工程

DESIGNANDIMPLEMENTATIONOFWEBDEVELOPMENTSYSTEMBASEDONBOOKSALESABSTRACTSocietyinconstantdevelopmentandexpansion,particularlyInternettechnologycontinuesdeepintoalllevelsofsociety,andvariousotheronlinebooksalessystemofonlinesalessystemalsocontinuouslyemerged【1】.Currentlythegeneralbooksalessystemfailure,complexoperation,systemrequirementsandhighlevelofhardwareproblems,butimaginehavingapersonalizedbooksalesmanagementsystem.Thusthepurchaseofnewbooksinthebookstore;theabilitytomanagethesaleofbooks;booksformembersandstaffmanagement;timetoadapttothebookstoremanagersoftwareoperationandoperatingfeelwillgreatlyimprovetheseaspects.Thesystemisbasedonthestatusquoanddeveloped.Key words:webdevelopment;booksalesdatabasedesign;systemanalysis;softwareengineering

目录TOC\o"1-4"\h\u1绪论 11.1课题的研究背景和意义 11.2国内外进展现状及进展趋势 11.3本论文的要紧内容与结构 22相关技术简介与开发环境 32.1MyEclipse开发平台 32.2Oracle数据库 32.3搜索引擎技术 32.4通过JDBC对数据库进行访问 42.5Java多线程技术 42.6Java语言 43需求分析 53.1设计目标 53.2可行性分析 53.2.1经济可行性 63.2.2技术可行性 63.2.3操作可行性 63.2.4其他可行性 63.3性能需求 63.4功能需求 73.4.1用户注册 73.4.2用户登陆 73.4.3购物车 73.4.4用户订单 73.4.5图书商品列表 73.5需求分析总结 74总体设计 94.1概要设计 94.1.1系统功能模块图 94.1.2系统流程图 104.2数据库设计与实现 124.2.1系统的E-R图设计 124.2.2数据库表格结构 145图书销售系统的具体实现 165.1公共模块的实现 175.1.1数据库连接方法概述 185.1.2JDBCClass类的具体实现 195.1.3模糊查询的语句实现 206详细设计与系统实现 216.1界面设计 226.1.1用户界面 236.1.2登陆界面 246.1.3购物车界面 256.1.4订单界面 266.2系统实现 276.2.1DAO层的实现 286.2.2Service层的实现 306.2.3Servlet层的实现 32参考文献 35结束语 36附录:(部分源代码) 501绪论1.1课题的研究背景和意义传统的购物方式局限于实体店等购物方式,而本系统将传统方式向网上销售的转变将大大提高人们的购买水准,也为了能够促进网上图书销售行业的进展,它不仅实现人们足不出户就能够方便快捷地买到自己喜爱的各种书籍,而且想能够向消费者展示一种新颖的购书方式。网上购书的方式必将被人们所同意。【2】近年来,随着人类社会进入信息化时代步伐的加快,Internet从过去要紧用于科研和简单信息的公布向商业化大踏步迈进,电子商务这种新的运营模式也随着这一时代的趋势应运而生。因此,开发功能强大,性能完善的网上图书销售系统具有十分重要的意义和价值。本系统正是基于这一现状而开发。鉴于电子商务的特点,各类市场上销售的大部分商品都能够在互联网上销售,图书销售也因此受到广泛的关注,人们能够通过登录网站扫瞄书籍目录等选购自己中意的书籍。因此本系统设计具有广泛的应用价值使用价值。1.2国内外进展现状及进展趋势就目前国内情况来讲,网上图书系统要紧有京东,当当,亚马逊等网上图书销售网上搞图书在线销售,但总体上的进展比较缓慢而且功能方面也不够完善。其中基于数据库的存储技术还有待加强改善。在现在这种大数据时代。信息量差不多不是往常所能想象的。而国内的数据库技术还远不及国外一些发达国家的水平。因此在设计诸如在线销售的系统的时候考虑数据库方面的设计确实是目前急需解决的问题。而国外一些发达国家不仅在数据库方面处于领先水平,在整体系统布局方面也比国内相关网站先进得多。因此总的来讲国外的进展技术比国内的依旧要先进些。然而我相信通过我国这几年经济的迅猛进展,此类技术一定会得到较大的改善。 类似网站今后的进展趋势我认为应该会向云端存储数据进展,怎么讲在那个信息大爆炸的社会无时无刻不充斥这信息的交互和分享。因此光靠诸如sql,oracle等技术的支持确信是得不到较大的改善的。在今后的进展中,这类网站会向集成信息,大数据存储方面进展。也会使数据存储得到更大的提高。1.3本论文的要紧内容与结构本文是基于web开发的图书销售系统的设计与实现,通过系统的功能模块的实现来更好地使消费者实现网上图书购物。开发环境为MyEclipse,数据库运用OracleDatabase11g,在Windows7系统下调试运行。本文要紧组织结构如下:第一章介绍开发背景、研究意义与国内外进展现状;第二章要紧介绍本系统所要运用到的相关技术和开发环境;第三章为本系统的需求分析;第四章为本系统的总体设计与数据库设计的实现;第五章本系统的具体实现;第六章为系统的详细设计与实现、系统的各个模块的调试与实现;最后一章是总结与致谢结束语等。

2相关技术简介与开发环境2.1MyEclipse开发平台(1)MyEclipse是在eclipse基础上加上一些插件而开发的集成开发环境。其要紧用于web,移动设备的开发。Eclipse是一个开放源码,基于Java的开发平台,自带一个插件集:JDK。尽管许多用户都喜爱将Eclipse用作Java的集成开发环境,但Eclipse不仅仅是一个开发环境而已,因为其本身自带的许多插件集,它同意程序员构建与Eclipse无缝集成的工具。而且Eclipse也不是只支持JAVA语言的平台,事实上C/C++和PHP等语言的插件差不多开发使用了。【3】(2)基于此系统是基于web开发的图书销售系统,因此要紧用到的是MyEclipse的web开发工具,tomcat服务器和web开发插件。还用到JDBC数据库链接工具等多项技术。2.2Oracle数据库(1)Oracle是orcale公司的关系数据库治理系统,系统可移植性好,方便,功能强,适用于各类开发环境。高效率,可靠性好的适应高吞吐量的数据库为用户提供解决方案。【4】(2)本系统的数据统一插入到OracleDatabase11g中,以关键字为查询字段,创建多个表存放图书信息和用户信息。创建触发器响应事件的点击。2.3搜索引擎技术(1)该系统最为核心的技术是搜索引擎技术的使用,搜索引擎是依照用户的查询请求,按照一定算法从索引数据中查找信息返回给用户。为了保证用户查找信息的精确度,搜索引擎需要建立索引表并维护一个庞大的索引数据库。(2)该系统首页的数据查询采纳模糊查询,查询可分为按图书名称查询,按图书作者查询以及按图书信息查询等查询。查询后再匹配数据库的数据给予查询结果返回给用户。并显示信息查询结果是否查询出来。查询出来显示在界面上,未查询出来会提示用户查询未果。2.4通过JDBC对数据库进行访问JDBC从物理结构上讲确实是Java语言访问数据库的一套接口集合。从本质上来讲确实是调用者(程序员)和实行者(数据库厂商)之间的协议。JDBC的实现由数据库厂商以驱动程序的形式提供。JDBCAPI为Java开发者使用数据库提供了统一的编程接口,它由一组Java类和接口组成,使得开发人员能够使用纯Java的方式来连接数据库,并进行操作。【6】2.5Java多线程技术线程是通过程序的一条执行路线。多线程是一个程序同时运行多个任务的能力。它是在一个程序的内部进行分工合作。优化程序的通常方法是确定瓶颈并改进它。瓶颈是一个程序中最慢的部分,他限制了其他任务的运行。据个例子讲明:一个Spider程序需要下载十个页面,要完成这一任务,程序必须向服务器发出请求然后同意这些网页。当程序等待响应的时候其他任务不能执行,这就阻碍了程序的效率。假如用多线程技术能够让这些网页的等待时刻合在一起,不用互相阻碍,这就能够极大的改进程序性能。【7】2.6Java语言 Java是JamesGosling在Sun公司领导的小组开发的,Java最初被称为Oak,是1991年为消费电子产品的嵌入式芯片而设计的。1995年改名为Java,并重新设计用于开发Internet应用程序。 Java拥有的高效性、多平台移植性、通用性与高安全性,使之成为拥有显著优势以及宽敞应用前景的一种语言。现在在移动互联网和云计算的大行其道之下,JAVA体现出了极强的优越性。因此本系统也鉴于其优点使用其作为开发语言。3需求分析3.1设计目标随着大数据时代的到来,特不是时至今日,信息化社会日益在我们的生活中凸现出来,因此有必要对各种信息进行分类整理然后反馈给消费者自己所需的信息。而本系统正是基于消费者对图书购买的背景需求下开发而来。图书销售已由传统的书店图书销售到现今的书店和网上销售并存。同时网上销售在今后的社会上将会越来越多的阻碍到人们的购物方式,即由传统的书店购书到网上购书,前景不可估量。而本系统确实是要基于这一现状开发出来。目的确实是能够方便消费者能够借助搜索引擎来查询自己钟意的图书并进行购买。设计目标:本次研究选择的开发语言为Java,该系统基于B/S架构,用户能够通过扫瞄器对服务器使用访问。首先需要实现网上购书的差不多功能,显示图书列表、添加图书到购物车、确认订单,我所研究的重点是对网上购物车的设计与实现模块。系统可实现功能如下:1.能够进行游客或已注册用户对网上图书列表的扫瞄,以及对各图书的详细信息的查看;2.能够完成已登陆客户对图书的选购并统一添加图书到个人购物车,同时对已添加到购物车的图书进行数量的增加、减少、修改和删除等操作;3.能够通过查看购物车对所选图书进行确定、选择,确认或修改购物者的联系方式。3.2可行性分析可行性分析要紧讲述系统在经济,技术和社会等方面是否具有可行性从而确立整个系统是否具有可行性。3.2.1经济可行性本系统意在让消费者方便在网上进行图书购买等便利购物。因此进展潜力巨大。用户量稳定。经济上能够视为一款可行性极高的开发系统。3.2.2技术可行性本系统基于MyEclipse环境开发,数据统一存放在OracleDatabase11g中,在Windows7下运行,利用JDBC技术进行数据访问,因此在技术上,本系统是可行的。3.2.3操作可行性本系统的面向对象为各类用户群体,操作简单,在人性化方面也较好。采纳模糊搜索使用户能够快速的查询自己想要购买的图书。在操作上简单快捷。3.2.4其他可行性本系统是属于毕业设计范围的开发系统,在法律和各方面并未侵犯其他专利。内容是日常的图书用品信息。并无其他国家禁止的不良信息。因此在其他方面均有可行性。3.3性能需求本课题所研究的图书销售系统有如下的性能要求查询响应快。本系统将数据一律插入到OracleDatabase11g中,在采纳模糊查询的条件下能够快速的搜索出用户所查询的图书信息,在时刻上小于用户的等待时刻,因此能够进行快速的查询并返回用户所需的信息。安全性较强。本系统的用户信息与订单信息均需用户登陆后方可修改查看,采纳MD5加密技术进行加密,能够大大提升用户信息的安全性。因此在信息爱护方面能够确实是比较完善的。可扩展与可维护性。在本系统的设计过程中。每个模块的功能都单独存放,这能够方便今后在添加一些额外功能时能够在不破坏原有系统的功能前提下增加额外的功能模块,这就使系统的扩展性大大提升。从而也大大的减少了系统维护的工作量,某一模块出问题时只需在相应的模块内进行修改即可。从而使整个系统维护性也大大提升。3.4功能需求本课题研究的图书销售系统具有以下几个功能:用户注册,用户登录,购物车,用户订单,图书商品列表等。3.4.1用户注册用户注册的功能要紧是进行非会员用户在进行图书购书时要先进行用户注册以保存用户的图书信息和用户信息,也是为了保证用户的个人信息的安全性。此模块是添加新的用户,填写用户个人差不多信息,包括姓名,密码,确认密码,E-mail,个人爱好,联系方式等。3.4.2用户登陆假如游客要使用注册用户提供的功能,那么在使用之前必须登陆或注册后登陆。否则将无法进行图书选购。用户只要输入注册用户名和密码进行登录。若用户输入的以上两项与数据库中保存的数据相符,则用户登录成功,能够向用户开放全部前台子系统;假如不符,则登录失败。3.4.3购物车用户能够将扫瞄到的钟意的图书加到购物车中,假如觉得有买的必要,就能够下订单购买图书了,假如觉得不需要能够再调整图书购物车,购物车要紧存放的是图书的相关信息。3.4.4用户订单订单治理的功能是对选择好用户的订单进行处理,包括图书简介,图书数量,图书的增加,删除等操作。3.4.5图书商品列表图书商品列表要紧是显示了用户检索出来的图书的差不多信息,包括图书的名称,图书的作者,图书的简介,图书的类型等等。方便用户了解选购图书。3.5需求分析总结依照用户对图书购买的需求分析得出,用户的差不多需求如表3-1所示:表3-1需求列表需求用户依照自己喜好进行图书查询与搜索,系统依照用户查询反馈相关图书信息给用户用户图书消费者用户所做的工作图书消费者用户注册用户登陆检索查询图书填写、修改、删除图书订单用户需求图书信息图书订单信息用户信息最优解决方案用Oracle数据库实现,开发语言运用Java最优方案缘故Oracle数据库的数据保存可靠,成本小;Java语言灵活性强、适应性强、基于web开发的图书销售系统要紧任务是依照图书消费者的喜好和查询来反馈图书信息给消费者。消费者依照检索出的图书信息进行购买和参考。假如满足消费者需求则进一步进行图书购买,填写用户相关信息,填写购买图书数量等信息进行图书购买。同时能够在购物车内进行图书信息的存储,以便日后在购买时能够快速的进行图书交易。

4总体设计在本章中,我们将描述图书销售系统具体的功能模块设计以及数据库的设计。系统概要分析在第一部分叙述,数据库设计实现在第二部部分详细给出。总体设计的目的是为系统的详细设计与实现做预备。4.1概要设计4.1.1系统功能模块图依照上一章功能需求分析,我们差不多明确了企业采购系统的总体模块:用户注册,用户登录,购物车,用户订单,图书商品列表模块。整个系统的总体设计模块图如图4.1.1所示:图书销售系统 图书销售系统 治理端客户端治理端客户端图书的增删改查治理员个人信息订单的删除购物车图书搜索购买用户订单用户登录用户注册图书的增删改查治理员个人信息订单的删除购物车图书搜索购买用户订单用户登录用户注册图4.1.1系统功能结构图从图中我们能够看出,用户治理模块和购物车模块是整个系统的重点所在。两个模块占据了系统中的要紧功能,而系统的重难点也在于这两个模块的实现。在下一个部分,我们来介绍各个模块的要紧功能以及流程。4.1.2系统流程图用户注册流程图 此模块是添加新的用户,填写用户个人差不多信息,包括用户名、密码、确认密码、联系地址,个人爱好,E-mail等。这一部分功能的流程图如图4.1.2所示:录入用户信息 录入用户信息录入用户信息录入用户信息 Yes信息为空?Yes信息为空?No提示信息不能为空提示信息不能为空Yes Yes用户已存在?用户已存在?提示用户已存在注册成功注册成功图4.1.2用户注册流程图用户登陆流程图假如游客要使用注册用户提供的功能,那么在使用之前必须用户登录方可进行相关功能的查询。用户只要输入用户名、密码就能够登陆进行图书购物了。若用户输入的以上两项与数据库中保存的用户数据相符,则表明用户登录成功,能够开放全部前台子系统;假如不符,则登录失败。用户登陆的流程图如图4.1.3所示:登录信息录入登录信息录入 同意登录信息用户名,密码为空同意登录信息用户名,密码为空?Yes提示用户名或密码不能为空 提示用户名或密码不能为空No No按照用户名查询 按照用户名查询No No用户已存在?已登录NoNo提示用户不存在提示密码错误用户已存在?已登录NoNo提示用户不存在提示密码错误YesYes口令正确吗口令正确吗?YesYes图4.1.3用户登录流程图购物车流程图用户能够将扫瞄到的中意的图书加到图书购物车中,假如觉得有买的必要,就能够下订单购买图书了,假如觉得不需要能够再调整图书购物车流程设计如图4.1.4所示;购物车查看商品下订单调整尚品No购物车查看商品下订单调整尚品No是否已购买是否已购买YesYes 图4.1.4购物车流程图订单流程要紧包括订单的添加与删除,执行。如图4.1.5所示;订单删除订单发货订单处理用户订单订单删除订单发货订单处理用户订单图4.1.5订单流程图4.2数据库设计与实现4.2.1系统的E-R图设计依照本系统的系统设计需求,得出如下的系统E-R图。1.实体名:用户属性:用户名密码Email性不生日用户E-R图如图所示:图用户E-R图2.实体名:图书属性:图书名价格图书分类详细信息图书大小用户E-R图如图所示:图图书E-R图3.实体名:购物车属性:图书图片价格折扣数量购物车E-R图如图所示:图购物车E-R图4.实体名:订单属性:收货地址收货人电话号码订单E-R图如图所示:图订单E-R图4.2.2数据库表格结构 依照上述的数据ER图的设计,将E-R图转换为关系模型。则图书销售系统数据库包含以下几个表:用户表consumer,图书表books,订单表orders,如表4.2.2,4.2.3,4.2.4所示用户信息表表4.2.2用户信息表列名数据类型长度备注用户名varchar20主键密码varchar20Emailvarchar20性不varchar6生日date爱好varchar90地址varchar60备注varchar1200图书信息表表4.2.3图书信息表列名数据类型长度备注图书号number10主键图书名称varchar150图书作者varchar50图书厚度varchar30图书价格number图书折扣varchar20图书类型varchar10图书图片varchar50订单信息表表4.2.4订单信息表列名数据类型长度备注订单号number20主键订单名varchar20联系电话varchar11联系地址varchar100收件人varchar20

5图书销售系统的具体实现5.1公共模块的实现5.1.1数据库连接方法概述 鉴于本系统采纳OracleDatabase11g存储数据,MyEclipse开发平台,因此采纳JDBC数据库连接技术进行数据连接访问。jdbc由各种类和接口组成,也能够构建更高级的工具和接口。 鉴于本系统的数据连接。JDBC连接分为以下几个步骤:加载jdbc的驱动程序提供jdbc连接的URL数据库的链接创建PreparedStatementStatement执行sql语句进行结果处理关闭jdbc的对象5.1.2JDBCClass类的具体实现1.加载驱动程序driver=pro.getProperty("className"); name=pro.getProperty("name"); password=pro.getProperty("password"); url=pro.getProperty("url"); driver=newString(driver.getBytes("iso8859-1"),"gbk"); name=newString(name.getBytes("iso8859-1"),"gbk"); url=newString(url.getBytes("iso8859-1"),"gbk"); password=newString(password.getBytes("iso8859-1"),"gbk"); Class.forName(driver);2.提供jdbc连接的URLurljdbc\:oracle\:thin\:@localhost\:1521\:XE3.数据库的连接conn=DriverManager.getConnection(url,name,password);4.创建PreparedStatementStatementpublicObject[]query(Stringsql,Object[]args,Classclazz){//sql是查询语句,args是存放参数,依照clazz可用反射自动封装成vo Object[]obj=null; Connectionconn=dbManager.getConnection();//得到一个Connection PreparedStatementpstmt=null; ResultSetrs=null; try{ pstmt=conn.prepareStatement(sql);//获得preparedStatement if(args!=null){ setParameters(pstmt,args);//设置参数 } rs=pstmt.executeQuery();//执行命令,返回结果集 obj=mapRow(rs,clazz);//封装结果集 }catch(SQLExceptione){ e.printStackTrace(); }finally{ DBManager.free(conn,pstmt,rs);//释放资源 } returnobj; }5.执行sql语句rs=pstmt.executeQuery();//执行命令,返回结果集6.进行结果处理publicinterfaceRowMapper{ publicObject[]mapRow(ResultSetrs);}7.关闭jdbc的对象DBManager.free(conn,pstmt,rs);//释放资源5.1.3模糊查询的语句实现 用户在查询自己想要的书籍时,会用模糊查询来查询书籍,因此本系统中我们用sql语句来实现此功能。publicGoodsVO[]selectGoodsbyName(Stringname){ Object[]obj=null; GoodsVO[]gvo=null; Stringsql="select*fromgoodswheregdnamelike?orgdauthorlike?"; //obj=jdbc.query(sql,newObject[]{name},GoodsVO.class); obj=jdbc.query(sql,newObject[]{name,name},newSetParameters(){ @Override publicvoidsetParameters(PreparedStatementpstmt,Object[]obj){ try{ for(inti=0;i<obj.length;i++){ if(obj[i].getClass().getName().equals("java.lang.String")){System.out.println("'%"+obj[i].toString()+"%'"); pstmt.setString(i+1,"%"+obj[i].toString()+"%"); }elseif(obj[i].getClass().getName().equals("java.lang.Integer")){ pstmt.setInt(i+1,Integer.valueOf(obj[i].toString())); }elseif(obj[i].getClass().getName().equals("java.lang.Float")){ pstmt.setFloat(i+1,Float.valueOf(obj[i].toString())); }elseif(obj[i].getClass().getName().equals("java.util.Date")){ pstmt.setDate(i+1,newDate(((java.util.Date)obj[i]).getTime())); } } }catch(SQLExceptione){ e.printStackTrace(); } } },GoodsVO.class); if(obj!=null){ gvo=newGoodsVO[obj.length]; for(inti=0;i<obj.length;i++){ gvo[i]=(GoodsVO)obj[i];System.out.println(((GoodsVO)obj[i]).toString()); } } returngvo; }6详细设计与系统实现6.1界面设计图书销售系统的界面分为用户注册界面、用户登录界面、购物车界面以及订单界面。6.1.1用户界面用户注册界面是将非会员用户进行身份注册,以便今后在进行图书购买时能够存储用户信息。也作为用户在登陆本系统时的凭证,也能够爱护用户的信息安全。当用户注册完毕时,将用户输入的信息存储到数据库中以便日后登录时匹配数据库的相关信息作为登陆凭证。界面设计如图6.1.1所示图6.1.1用户注册界面用户注册界面代码如下:<title>用户注册</title></head><bodyclass='l_applicationc_usersa_newgatekeeper'> <header> <ahref="index.jsp"><imgalt="Shoplocket-logo" src="image/zhucetushulogo.png"/></a></header> <divclass='container'> <sectionclass='signup'> <divclass='intro'> <h1class='title'>WelcometoBookShopping</h1> <h2class='subtitle'>         本网站提供在线购书服务,让您足不出户就能够购买您喜爱的图书,方便快捷,欢迎使用本购物系统。 </h2> </div> <divclass='signup-form'> <formaccept-charset="UTF-8"action="servlet/SvConsumer"class="new_user" id="new_user"method="post"name="form1"> <divclass='facebook-button'> <imgalt="Facebook-sign-in"src="image/yonghuzhucelogo.png"width="399"/> </div> <inputtype="hidden"name="action"value="register"> <table> <tr> <tdalign="right"> 用户名*:</td> <tdcolspan="3"><inputtype='text'name="cname"></input></td> </tr> <tr> <tdalign="right">     密码*:</td> <tdcolspan="3"><inputtype='password'name="cpassword"class="cpassword"onblur="checkpassword()"></input></td> </tr> <tr> <tdalign="right">确认密码:</td>6.1.2登陆界面登陆界面是用户作为登陆本系统的凭证,用户填写用户名和密码之后先和数据库里面的用户信息进行匹配,假如匹配成功则登陆成功,反之则提示登录失败。界面设计如图6.1.2所示:图6.1.2用户登录界面详细设计代码如下:<divclass='stacked-group'> <table> <tr> <td>用户名:</td> <td><inputname="cname"type="text"class="cname"onblur="checkname()"> </td> <td><spanhiddenclass="nameerror">输入名字</span></td> </tr> <tr> <td>    密码:</td> <td><inputname="cpassword"type="password"class="cpassword"onblur="checkpassword()"> </td> <td><spanhiddenclass="passworderror">输入密码</span></td> </tr> </table> </div> <divclass='fieldlogin-final'> <inputclass="button"name="action"type="submit"value="Letmein"/> </div> </form> <ahref="forgetPassword.jsp"class="forgot-password">不记得密码?</a></section> <sectionclass='signup'> <p> 还没有账户?<ahref="yonghuZhuce.jsp">注册</a> </p> </section> </div>6.1.3购物车界面购物车界面要紧是保存用户选购的图书的信息。如图书图片,图书名,单价,折扣,数量,总价以及操作等等。购物车界面如图6.1.3所示:图6.1.3购物车信息治理界面详细设计代码如下:<tablealign="center"width="65%"> <tr> <tdcolspan="2"align="left">购物车商品总数:${goodslist.size()}</td> </tr> <tr> <tdcolspan="7"><hrsize="2"></td> </tr> <tr> <td>商品图片</td> <td>商品名</td> <td>单价</td> <td>折扣</td> <td>数量</td> <td>总价</td> <tdwidth="">操作</td> </tr> <c:forEachvar="item"items="${goodslist}"> <tr> <td><ahref="/ZYJWangGouXiTong/servlet/SvGoods?command=showgoodsdetails&gdid=${item.gdvo.gdid}"><img src="/ZYJWangGouXiTong/${item.gdvo.gdimage}"width="100"height="100"/></a></td> <td><ahref="/ZYJWangGouXiTong/servlet/SvGoods?command=showgoodsdetails&gdid=${item.gdvo.gdid}">商品名:${item.gdvo.gdname}</a></td> <td>${item.gdvo.gdprice}元</td> <td>${item.gdvo.gddiscount}折</td> <td>${item.number}</td> <td>${(item.gdvo.gddiscount*item.gdvo.gdprice*item.number)/100.0}元</td> <td><ahref="/ZYJWangGouXiTong/servlet/SvShopCart?command=shanchugoods&gdid=${item.gdvo.gdid}"><inputtype="button"value="删除"/></a></td> </tr> <tr> <tdcolspan="7"><hrsize="2"></td> </tr> </c:forEach> <tr> <tdcolspan="5"align="right">总计: <c:setscope="request"var="sum"value="${0}"></c:set> <c:forEachvar="item"items="${goodslist}"> <c:setvar="sum"value="${sum+(item.gdvo.gddiscount*item.gdvo.gdprice*item.number)/100.0}"scope="request"></c:set> </c:forEach> ${sum}元     </td> <td><formname="jiezhang"action="/ZYJWangGouXiTong/servlet/SvShopCart"> <inputtype="button"value="结账"onclick="submitform()"> <inputtype="hidden"name=commandvalue="jiezhang"/> </form></td> </tr> </table> </section>6.1.4订单界面订单界面要紧是来用户填写其收货人,收货地址,联系电话等收件人相关信息的。订单界面如图6.1.4所示:图6.1.4订单界面详细设计代码如下:<sectionclass='perfect_for'> <h3align="center">查看购物车====>><fontcolor="red">确认订单信息</font>====>><fontcolor="black">付款到货</font></h3> <formaction="/ZYJWangGouXiTong/servlet/SvShopCart"> <tablealign="center"width="65%"> <tr> <tdcolspan="5"align="left"width="83%">填写收货地址:<inputname="address"type="text"width="60%"></td> </tr> <tr> <tdcolspan="4"align="left"width="67%">填写收货人:<inputname="shouhuoren"type="text"width="60%"></td> </tr> <tr> <tdcolspan="3"align="left"width="50%">填写电话:<inputclass="telph"name="telph"type="text"width="60%"onblur="checktelph()"></td> <tdcolspan="2"><spanhiddenclass="telpherror">请输入有效的电话</span><td> </tr> <tr> <tdcolspan="6"align="left">购物车商品总数:${goodslist.size()}</td> </tr> <tr> <tdcolspan="6"><hrsize="2"></td> </tr> <tr> <td>商品图片</td> <td>商品名</td> <td>单价</td> <td>折扣</td> <td>数量</td> <td>总价</td> </tr> <c:forEachvar="item"items="${goodslist}"> <tr> <td><img src="/ZYJWangGouXiTong/${item.gdvo.gdimage}"width="100"height="100"/></td> <td>商品名:${item.gdvo.gdname}</td> <td>${item.gdvo.gdprice}元</td> <td>${item.gdvo.gddiscount}折</td> <td>${item.number}</td> <td>${(item.gdvo.gddiscount*item.gdvo.gdprice*item.number)/100.0}元</td> </tr> <tr> <tdcolspan="6"><hrsize="2"></td> </tr> </c:forEach> <tr> <tdcolspan="5"align="right">总计: <c:setscope="request"var="sum"value="${0}"></c:set> <c:forEachvar="item"items="${goodslist}"> <c:setvar="sum"value="${sum+(item.gdvo.gddiscount*item.gdvo.gdprice*item.number)/100.0}"scope="request"></c:set> </c:forEach> ${sum}元     </td> <td><inputtype="hidden"name="command"value="tijiaodingdan"> <inputtype="submit"size="1"value="提交订单"></td> </tr> </table> </form> </section>6.2系统实现系统的实现任务是实现DAO层、实现Service层和实现系统Servlet层,这是基于Web的图书销售系统设计实现的重点。6.2.1DAO层的实现DAO模式在Java中经常使用,它是数据访问对象第一个面向对象的接口【8】。DAO组件能够对数据库进行封装操作。这种模式在使用之后,能充分体现Services层组件封装DAO层组件的模式。同时也体现了分离业务逻辑层和DAO组件层的功能。DAO层需要做的是处理数据库数据及和数据库数据异常等。本系统使用的DAO层要紧有用户信息层,图书信息层和订单信息层的信息接口。用户信息层的DAO实现如下:packagecom.zyj.dao;importjava.util.List;importcom.zyj.vo.ConsumerVO;publicinterfaceConsumerDao{ ConsumerVOgetConsumerInfoByName(ConsumerVOvo); booleanconsumerRegister(ConsumerVOvo); }图书信息层的DAO实现如下:packagecom.zyj.dao;importcom.zyj.vo.GoodsVO;publicinterfaceGoodsDao{ GoodsVO[]selectGoodsbyKind(Stringkind); GoodsVO[]selectGoodsbyName(Stringname); GoodsVOselectGoodsbyId(Longgoodid); }订单信息层的DAO实现如下:packagecom.zyj.dao;importcom.zyj.vo.OrdersVO;publicinterfaceOrderDao{ booleaninsertOrder(OrdersVOvo); OrdersVO[]selectOrderBycname(Stringcname);}DAO接口不参与任何技术的实现,这是其最大的特点。它只是知识定义了增删改查方法的,不管是传统Java数据库连接方式依旧其他技术方式,DAO组件都能实现。DAO生成和治理差不多上由Spring容器负责的。6.2.2Service层的实现Service层也叫业务逻辑层,要紧用来处理业务逻辑层的操纵层的调用。然后调用DAO层,最后返回结果到操纵层。本系统使用的Service层要紧有图书Service层,用户Service层和订单Service层。图书Service层的实现如下:packagecom.zyj.service;importcom.zyj.dao.GoodsDao;importcom.zyj.daoImpl.GoodsDaoImpl;importcom.zyj.vo.GoodsVO;publicclassGoodsService{ GoodsDaodao=newGoodsDaoImpl(); publicGoodsVO[]getGoodsbykind(Stringkind){ returndao.selectGoodsbyKind(kind); } publicGoodsVO[]getGoodsbyName(Stringname){ returndao.selectGoodsbyName(name); } publicGoodsVOgetGoodsbyId(Longgoodid){ returndao.selectGoodsbyId(goodid); }}用户Service层的实现如下:packagecom.zyj.service;importcom.zyj.dao.ConsumerDao;importcom.zyj.daoImpl.ConsumerDaoImpl;importcom.zyj.vo.ConsumerVO;publicclassConsumer{ ConsumerDaodao=newConsumerDaoImpl(); publicConsumerVOcheckLogin(ConsumerVOvo){ returndao.getConsumerInfoByName(vo); } publicbooleanregister(ConsumerVOvo){ returndao.consumerRegister(vo); }}订单Service层的实现如下:packagecom.zyj.service;importcom.zyj.dao.OrderDao;importcom.zyj.daoImpl.OrderDaoImpl;importcom.zyj.vo.OrdersVO;publicclassOrderService{ OrderDaodao=newOrderDaoImpl(); publicbooleantiJiaoDingDan(OrdersVO[]vos){ for(inti=0;i<vos.length;i++){System.out.println("vos="+vos[i]); if(!dao.insertOrder(vos[i])){ returnfalse; } } returntrue; } publicOrdersVO[]chaxunBycname(Stringcname){ returndao.selectOrderBycname(cname); }}6.2.3Servlet层的实现Servlet一般在客户端上运行,返回用户想要猎取是数据,用户输入范文数据库的信息后在java服务器上运行时,服务器将请求信息发送到Servelet层中,然后Servlet将数据库里的响应信息发送到服务器中,服务器再将信息返回到用户手中。本系统的Servlet层要紧有用户层的Servlet,图书信息的Servlet和购物车的Servlet。用户层的Servlet的实现如下(部分代码):publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringcommand=request.getParameter("action");System.out.println("Command:"+command); command=newString(command.getBytes("iso8859-1"),"utf-8");System.out.println("Command1:"+command); if("Letmein".equals(command)){ doCheckLogin(request,response); } if("register".equals(command)){ doRegister(request,response); } if("showgerenzhongxin".equals(command)){ doShowConsumer(request,response); } }图书信息的Servlet的实现如下(部分代码):publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringcommand=request.getParameter("command");System.out.println(command); if("classify".equals(command)){ doClassify(request,response); } if("souso".equals(command)){ doSouso(request,response); } if("showgoodsdetails".equals(command)){ doShowGoods(request,response); } } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doGet(request,response); }购物车的Servlet的实现如下(部分代码):publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringcommand=request.getParameter("command");System.out.println(command);if("shifoudenglu".equals(command)){//登录购物车 doCheckDengLu(request,response); }if("showGoods".equals(command)){//商品加入购物车或者立即购买 doShowGoods(request,response); } if("shanchugoods".equals(command)){//删除购物车里的商品 doDeleteGoods(request,response); }if("jiezhang".equals(command)){//用来购物车中的商品进行结账 doJieZhang(request,response); } if("tijiaodingdan".equals(command)){ doTiJiaoDingDan(request,response); } }

参考文献[1]夏俊博,宋晓宇著.“电脑知识与技术”,《学术交流》[J],2011年7月[2]百度百科,2015年[3]百度百科,2015年[4]百度百科,2015年[5]刘晓华,张健,周惠贞编著.JSP应用技术开发详解(第三版)[M].北京:电子工业出版社,2011年[6]林上杰等编著.JSP2.0技术手册[M].北京:电子工业出版社,2011年[7]Y.DanielLiang编著Java语言程序设计[M]北京:电子工业出版社,2011年[8]李贤华著,基于JSP技术的大型网上购物系统的设计与实现[J].计算机与现代化,2010年[9]Amon-C-Shinder-T.,Carasik-Henmi,“TheBestDamnFirewallBookPeriodSyngress”[M],2010[10]Asibonler.UserInterfaceDesign-BridgingtheGapfromUserRequirementstoDesignWindows.USA.IntelCorporation.2011[11]张刚著.信息系统开发实践教程[M].成都:电子科技大学出版社,2010年

总结 本次毕业设计是基于Web网上销售图书系统的设计与实现,采纳MyEclipse工具作为开发环境,Oracle11g作为数据库治理工具,Tomcat作为服务器。利用JDBC完成数据库访问。 在整个开发工程中,采纳软件工程开发流程进行开发,上线进行需求分析,然后进行整体设计和数据库设计,表格的设计等到最后的系统实现。综合各个模块之间的关系进行开发设计,本系统通过几个月的开发终于完成了各个模块的功能。在实现过程中难免有不足之处。望各位老师批判指正。

致谢通过数月的工作,基于Web网上销售图书系统终于能够初步的实现。毕业设计与论文的制作加强了我对软件工程专业的深入理解,四年的学习在这次毕业设计中得到了充分的运用。感谢彭纪良老师一路上的关心,当我遇到技术和理论难题时,老师总是为我指点迷津,让我走出困惑。这是我毕业设计能够成功的重要因素。还有周围支持我的家人朋友,他们是我努力学习的动力,再次对他们表示感谢。在长沙理工大学学习的四年转瞬即逝,我差不多预备好踏上社会出力,大学生活令人难忘,毕业设计的这几个月更是倾注了我许多心血。尽管今后我不一定会接着从事软件开发有关的工作,然而软件工程依旧是一个十分具有活力的专业。软件工程的世界,深奥却有味,我衷心希望有更多的年轻人投入到软件开发及工作中去。我的本专业学得不行,这是我大学四年唯一遗憾的地点,但我学会了许多其他的知识,学会了与人相处的能力,学会了学习本身的能力。再次感谢大学里关心过我的同学、老师、学长学姐们,没有你们就没有现在的我。最后再次感谢彭纪良老师对我毕业设计的关心。

附录:(部分源代码)packagecom.zyj.util.jdbc;importjava.io.BufferedInputStream;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;publicclassDBManager{ Stringdriver=null; Stringname=null; Stringpassword=null; Stringurl=null; publicConnectiongetConnection(){ Propertiespro=newProperties(); Connectionconn=null; InputStreamis=null; Stringpath=DBManager.class.getClassLoader().getResource("perties").getPath();//通过URI形式 try{ is=newBufferedInputStream(newFileInputStream(path)); pro.load(is);System.out.println("Driver:"+pro.getProperty("className")); driver=pro.getProperty("className"); name=pro.getProperty("name"); password=pro.getProperty("password"); url=pro.getProperty("url"); driver=newString(driver.getBytes("iso8859-1"),"gbk"); name=newString(name.getBytes("iso8859-1"),"gbk"); url=newString(url.getBytes("iso8859-1"),"gbk"); password=newString(password.getBytes("iso8859-1"),"gbk"); Class.forName(driver); conn=DriverManager.getConnection(url,name,password); }catch(IOExceptione){ e.printStackTrace(); }

温馨提示

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

评论

0/150

提交评论