1、基于C2C的网上图书交易系统的设计与实现摘 要随着Internet的发展和电子商务的日益普及,网络购物可以使顾客足不出户便可以方便快捷地选购自己喜欢的商品,比如图书等。因此,需要网上销售系统为网上交易活动提供一个高效、低成本的平台。本文首先研究了基于Java Web的网上图书销售系统开发过程中所要使用的技术:JSP、Java Bean和MySQL数据库。接着采用模块化的方法设计了一套适用的图书销售系统。该系统设计主要包括登录模块、购买模块、销售模块、管理模块等四个模块,分别用于完成用户登录、购买图书、销售图书和管理员对用户及图书进行更改删除操作的功能。根据图书销售系统的基本要求,设计了图书信息
2、表,用户信息表,管理员信息表,购物车信息表,交易信息表等五张数据表,用于存储相关数据。然后,依据上述设计思路,采用Tomcat服务器、MySQL数据库和Eclipse集成开发环境,适用面向对象的编程思想集合JSP和Java Bean技术,分模块实现该图书销售系统。最后,对所实现的图书销售系统进行运行和调试,运行结果表明该图书销售系统能够满足用户进行网上交易活动的各项要求,能够使用户足不出户便可以方便快捷地选购自己喜欢的商品。关键字:电子商务,C2C,JSP,JavaBean,MySQL;Design and implementation of a C2C-based Online Book T
3、rading SystemAbstractWith the development of internet and the increasing popularity of e-commerce, Customers can shop without leaving home, network can choose their favorite products easily and quickly,such as books. Therefore, there is a need for online marketing system for online transactions to p
4、rovide an efficient, low-cost platform.First, this paper studies the Java Web-based online book sales system development process technology to be used: JSP, Java Bean and the MySQL database. Then design a system to book sale. The system includes login modules, purchase modules, sales module, managem
5、ent module four modules were used to complete the user login, buy books, sell books and administrators to make changes to the user and the library function of the delete operation. Book sales system according to the basic requirements, the design of the library information table, the user informatio
6、n table, the administrator of information tables and shopping cart information table used to store data. Then, according to the design ideas, using Tomcat server, MySQL database and the Eclipse integrated development environment, object-oriented programming ideas for a collection of JSP and Java Bea
7、n technology, sub-module of the book sales system.Finally, book sales achieved by the system to run and debug, the results show that the book sales system can meet users with the requirements of online transactions, enabling users to easily and quickly without leaving home can choose their favorite
8、merchandise.Keywords: E-business, C2C, JSP, JavaBean, MySQL目 录第一章 概 述11.1课题产生背景11.2国内外研究现状21.3 论文内容与组织2第二章 技术与开发工具42.1 电子商务42.1.1 B2C平台42.1.2 C2C平台42.2 两层结构和三层结构42.2.1 两层结构52.2.2 三层结构52.3 Java介绍62.3.1 JSP简介62.3.2 JSP的运行原理62.4 JavaBean技术介绍72.5 Tomcat介绍82.6 MySQL数据库82.6.1 数据库介绍82.6.2 Mysql数据库8第三章 系统设计
9、103.1 总体设计103.2 系统各模块详细设计113.2.1登录模块113.2.2购买模块113.2.3销售模块123.2.4管理模块123.3 数据库设计13第四章 系统的实现154.1 系统环境配置154.2 登录模块的实现174.3 购买模块的实现184.4 销售模块的实现214.5 用户资料修改模块的实现224.6 管理模块的实现234.7 数据库操作的JavaBean文件244.8 界面头尾的实现26第五章 系统的验证和演示27第六章 总结与展望316.1 总结316.2 展望31致 谢32参考文献33第一章 概 述1.1课题产生背景计算机的出现给人类社会带来了第三次工业革命,计
10、算机和计算机网络已经深入到了各行各业,各个领域,随着Internet的不断扩大和发展,电脑网络“把每一个国家、每一个城市甚至每一个家庭连接到一起”,形成了一条“信息高速路”,就像高速公路大大提高了车辆行驶的速度一样。 信息高速公路给生活、学习和工作带来了什么影响呢?总结起来主要有三点:第一,电脑网络可以查阅信息,迅速而便捷地了解周围的世界;第二,可以跟世界各地的人随时进行交流,并建立联系;第三,可以参加网络购物、拍卖等活动。正是由于有了这么一条信息高速路,网上查询和网上购物随之有可能,因此网上商业交易也迅速地发展起来,也因此给我们的生活带来很多方便。 电子商务是于九十年代初,在欧美兴起的一种全
11、新的商业交易模式,它实现了交易的无纸化,效率化,自动化,表现了网络最具魅力的地方,快速的交换信息,地理界限的模糊,这所有的一切也必将推动传统商业行为在网络时代的变革。任何新事物都代表着一种趋势,那些符合人类进步的趋势必然会得到大家的认同。电子商务就是这样一种事物,它对人类社会进行着全方位的改造,在企业竞争、政府部门、公共研究机构、教育以及娱乐等方面改变着人类相互交往的方式,为人们展示了一个全新、璀璨的世界。由于电子商务的出现,传统的经营模式和经营理念将发生巨大的变化,将会创造巨大的效益和机会,会将市场的空间形态、时间形态和虚拟形态结合起来,将物流、资金流、信息流汇集成开放的、良性循环的环路,使
12、经营者以市场为纽带,在市场上发挥最佳的作用,得到最大的效益和发展,不仅将有力地推动Internet的发展,对社会的进步和经济的变革产生深远影响,更重要的,它本身的发展和成熟为我们提供了许许多多的机会。1 但与此同时,相关的信息数据却急剧膨胀。这些海量的、以不同形式存储的数据资料,表面上杂乱无章且缺乏组织的规整化,但事实上却包含了许多潜在的、有价值的知识和规则,如何从这些海量的数据中发现有用的知识是知识工程研究面临的新课题。1.2国内外研究现状在当今这个不断变化,不断更新的社会,人们的生活方式和生活节奏越来越快。那些传统的营销模式已经不能够在满足现在社会的需要。在中国图书销售行业实现在网上销售,
13、通过计算机来管理信息。却只在1998年才有了中国的第一家网上图书销售网站。这比世界先进水平的国家晚了将进10年之久。中国大陆已经注册的网上书店大约有100多家,有网站的有50多家,但已经投入运营能够买到书的只有十来家。很多人看到了书这种商品网上销售的诸多好处:方便购买、金额小、风险小、用户容易决定2;信息的完整性以及很少出现质量问题和退货现象等。尽管全球最大的网上书城亚马逊股票惨跌,尽管各家书店都承认目前的亏本经营状况,但这并未阻挡投资者对网上书店“钱”景的期待。众所周知国内各大型网站都有各自的网上书店,国内最大的网上书店亚马逊就是一个例子。这种网上书店的发展正在逐步完善。其中的功能比较丰富,
14、操作也比较简便,因此吸引了大量的用户。然而,网络的资源是有限的,随着数据量的加大,网站的服务质量,尤其是熟读会变得不堪忍受。而我的系统针对小范围。如此一来,在保证效率的前提下,可以使用相对廉价的设备,节省费用和资源。1.3 论文内容与组织本次毕业设计中,我采用了JSP作为开发工具,构建了一个能实现基本的电子商务的小型动态商务网站基于C2C的网上图书交易系统。该系统能实现用户的注册、登录功能;能够实现商品的查询,订购等功能。该系统基本上具备一个网上图书销售系统应该具备的常用功能,该设计项目基本上体现了构建一个动态商务网站所需要的技术,可以说,目前的大型商务网站也就是我们这个小型网站在内容上的扩充
15、和完善。论文组织如下:第一章简要介绍了课题的产生背景,图书销售系统的国内外发展现状,由此阐述了目前在电子商务中运用的关键技术。第二章着重介绍了本次设计运用到的关键技术及本次设计所用到的主要软件。第三章 设计、框架或者思路。具体讲就是系统框架设计和模块设计计(包系统的各个子模块的设计和数据的设计)。第四章 系统的具体实现(系统环境配置和各模块的代码及注释)。第五章 系统演示的截图。第六章 总结与展望。第二章 技术与开发工具2.1 电子商务电子商务通常是指是在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、
16、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商业运营模式。电子商务目前共有7种模式:B2B、B2C、C2C、B2M、M2C、B2A(即B2G)、C2A(即C2G)。2.1.1 B2C平台B2C是英文Business-to-Consumer(商家对客户)的缩写,而其中文简称为“商对客”。“商对客”是电子商务的一种模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。这种形式的电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。2.1.2 C2C平台C2C同B2B、B2C一样,都是电子商务的几种模式之一。不同的是C2C是用户
17、对用户的模式,C2C商务平台就是通过为买卖双方提供一个在线交易平台,使卖方可以主动提供商品上网拍卖,而买方可以自行选择商品进行竞价。本文就是采用了C2C的图书销售系统,用户在平台上可以进行书的买卖,而管理员则是对用户和书进行管理。2.2 两层结构和三层结构随着信息时代的到来,基于网络的数据处理问题日益成为企业信息化的中心环节。数据库的灵活性、安全性和可拓展性等成为数据处理技术焦点。随着人们对计算机应用软件要求的不断提高,其网络数据处理模式不断更新换代,因此形成了多种处理模式,当三层结构模式未出现之前,历史上主要是采用两层结构模式,近年来有前瞻性的开发商则纷纷采用三层结构模式来开发基于数据库的管
18、理系统。32.2.1 两层结构“客户/服务器”结构,就是在系统中专门划分出一个数据管理层,其余工作放在客户界面计算机上完成,客户界面通过数据服务器,获得对集中管理的数据的访问。4客户端提供用户界面、运行逻辑处理应用;数据服务器接受客户端SQL语句并对数据库进行查询,然后返回查询结果。用一个形象的比喻来描述就是:服务器端像一个仓库,主要功能是存储原材料和成品,但并不进行加工,而客户端就像加工车间,完成从原料到成品的整个制造过程,然后将成品存储到仓库。由于业务的处理逻辑主要在客户端执行,因此这种结构也被称为胖客户(Fat client)结构。 该结构最大的优点在于结构简单,开发和运行的环境简单,因
19、此两层结构一般只用于工作站不多、对系统性能要求不高的MIS系统但是两层结构也存在一些缺点,如工作站数目受限 执行效率慢 维护成本高 系统可扩展性差等2.2.2 三层结构一般是指将系统分解为用户界面、业务逻辑、数据管理三个软件层面,并将这三个层面部署在不同的位置上。其中第一层是客户端(用户界面),提供用户与系统的友好访问;第二层是应用服务器,专用于企业业务逻辑的实现;第三层是数据服务器,负责数据信息的存储、访问及其优化。图2.1如图2.1,采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户
20、界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。三层结构相对两层结构具有以下的优点维护成本低 执行效率高 系统可扩展性大大增强。2.3 Java介绍Java有两方面的含义:Java语言、Java平台。作为一种语言,Java是一种跨平台开发语言,能开发出跨平台的应用对象和应用程序。5例如:Oracle 8i的安装程序就是用Java开发的。Java语言具有以下特点:简单、面向对象、分布式、解释执行、安全、跨平台、高性能、多线程等特点。作为一种平台,Java平台包括两部分内容:Java虚拟机和JavaAPI。2.3.1 JSP简介JSP(Java Server P
21、ages)是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。它虽然还未成型,但是它必将和J2EE(Java 2 Enterprise Edition)一起发展6。JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Java class、Servlet、Applets和Web Se
22、rver,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起。72.3.2 JSP的运行原理在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSP engine)转换成一个Servlet,即将”.jsp”文件编译成Java Class文件。当Servlet引擎接收到请求后,如果设置了使用最新的JSP,它就会去找JSP文件,检查该文件在上次编译后是否改动过。如果改动过,就会重新编译生成新的Servlet,最终将请求转交给编译好的Servlet引擎执行。8在编译时如果发现JSP文件有任何语法错误,转换过程将中断,并向客户端发出出错信息;如果
23、编译成功,则所转换产生的Servlet代码被编译,然后该Servlet被JSP引擎加载到内存中。此时JSP引擎还请求了jspInit()方法的执行,并对此Servlet初始化。JspInit()方法在Servlet的生命周期中只被请求一次,然后将被调用来处理客户端的请求和回复操作。对于所有随后对该JSP文件的请求,服务器将检查该JSP文件自最后一次被存取后是否经过修改。如果没有修改,则将请求交还给还在内存中的Servlet的jspService()方法,执行回复操作。由于Servlet始终驻于内存,所以响应是非常快的。Jsp页面在第一次访问时由于要转化和编译,运行速度较慢,但是当第二次访问该页
24、时,由于文件已经被编译成字节码文件了,所以速度非常得快。2.4 JavaBean技术介绍JavaBean技术是一种基于Java的组件技术,JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据的提取,以及封装事务逻辑等,可以很好的实现业务逻辑和前台程序的分离使得系统具有更好的健壮性和灵活性,同时也是解决代码重用问题的一种策略。9以前的组件无法实现真正的代码重用,其主要原因就是它们对于处理平台的依赖和对开发语言的依赖过重。由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们的关注。它的任务就是:一次编写,可以在任何地方执行,可以在任
25、何地方重用。JavaBean组件可以在任何地方冲用包括了可以在应用程序、其他组件、文档、Web站点和应用程序构造器工具等多种方案中再利用。为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构及细节问题,只需要定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。JavaBean的实质就是一个.class文件,也可以成为类文件。JavaBean以binary格式保存,可以保护Java源代码不容易被他人抄袭。102.5 Tomcat介绍2.5.1 什么是TomcatTomcat是Java Servlet
26、 2.2和JavaServer Pages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件。2.5.2 Tomcat和JServ的区别JServ是由Apache开发并使用的Servlet API 2.0兼容的Servlet容器。Tomcat是完全重写的ServletAP I2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。2.6 MySQL数据库2.6.1 数据库介绍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年
27、代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。11比较常见的有三种数据库: ACCESS ,SQL Server 和 Oracle 。其中ACCESS 是美国Microsoft公司于1994年推出的微机数据库管理系统.它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面数据库管理系统. 但是ACCESS 的功能相对不是那么强大,主要是开发单机版软件中经常用到,SQL Server 是目前应用比较广泛和普遍的一款数据库,是数据
28、库发展的一个里程碑。 Oracle的功能是比较强大的,一般用于超大型管理系统软件的建立,现在的应用范围也已经比较广泛。2.6.2 Mysql数据库Mysql是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。12第三章 系统设计3.1 总体设计此基于JSP的购物网站客户端和管理端两部分: 3.1.1总体框架图3.1 总体框架图从图3.1中可以看出,在线书店系统一共有四个模块,登录模块,用
29、户的购买,销售模块,管理员的管理模块。 3.1.2 总体流程图3.2 总体流程图用户进入登陆页面(login)登陆系统,如果不是会员则进行注册(register)后登陆。进入主页(main)后,用户可以购买,销售和修改个人信息。进入购买页面(search),用户可以搜索一本书或所有书,还可以查看购物车和已购买的图书。在购物车(show_mycart)中确认购买后转入评价页面,因为评价不是本次设计的重点,所以只是加个评价的页面进行连接。在销售页面(sell)则可以添加,删除图书,还可以查看已销售的图书。管理员登录(admin_login)后,则可以对用户和图书进行修改和删除的操作。3.2 系统各
30、模块详细设计3.2.1登录模块图3.3 登录模块图如图3.3,首先判断输入的账号密码是否正确,然后判断输入用户名的权限,是普通用户则跳转到主页,是管理员则跳转到管理页面。3.2.2购买模块图 3.4 购买模块图 如图3.4,进入购买页面后用户可以选择通过书名查询要购买的书,也可以查询全部。搜索后可以点击书名进入查看具体数的详情,然后可以将书添加到购物车,最后一起付款。3.2.3销售模块图3.5 销售模块图如图3.5,用户可以对图书和订单进行管理。添加删除图书,查看和删除订单。3.2.4管理模块图3.6 管理模块图如图3.6,管理员可以对已有用户及图书进行管理,进行修改及删除用户和图书的操作。3
31、.3 数据库设计3.3.1 Books(图书信息表)字段名数据类型长度是否允许空注释idInt 24否图书编号booknamevarchar24否图书名称pricefloat24否价格usernameVarchar24否拥有者amountVarchar24否数量书的id采用Auto_incerment(自动增量),这样可以清晰分辨所有图书,即使同一个人有多本相同书也可分辨。Username即书的拥有者,与users表中的username建立联系。3.3.2 Users(用户及管理员信息表)字段名数据类型长度是否允许空注释usernameVarchar24否用户名passwordVarchar2
32、4否密码totalEvluint24否用户历史评价phoneVarchar24是联系电话addressVarchar48是联系地址3.3.2 Admin(管理员信息表)字段名数据类型长度是否允许空注释adminnameVarchar24否管理员用户名adminpassVarchar24否管理员密码3.3.4 Shopping_Cart(购物车信息表)字段名数据类型长度是否允许空注释scartIDInt24否购物车编号booknameVarchar24否图书名称amountVarchar24否数量usernameVarchar24否用户名称priceVarchar24否价格buyer_nameV
33、archar24否购买者用户名amountVarchar24否数量SCardID也是自动增量,即使一次购买多本书也属于一次交易,便于用户查看自己所有交易信息。3.3.5 Deal(所有用户交易信息表)字段名数据类型长度是否允许空注释dealIDInt24否总订单编号booknameVarchar24否图书名称amountVarchar24否数量buyer_nameVarchar24否购买者用户名seller_nameVarchar24否销售者用户名evluVarchar24否本次交易评价Buyer_name即购买者用户名,可以通过session来调用,Seller_name可以通过books表
34、来调用。第四章 系统的实现4.1 系统环境配置从JSP的运作全过程可见,运行JSP最少需要三样东西:JSP引擎、Web服务器和JVM。12最常用的Java开发工具就是JDK和Jbuilder,它们之间的很大不同就是JDK是字符界面,而Jbuilder是窗口界面。本系统直接采用JDK作为JVM和Eclipse3.2来开发,Eclpise是一个功能非常强大的JAVA/JSP/J2EE工具,它主要以提供插件的方式进行开发13。所用的操作系统是WindowsXP,服务器采用的是Tomcat,利用了它充当Jsp引擎,同时还利用了它的信息发布功能。首先把JDK,tomcat安装到本地硬盘C盘根目录下,下面
35、详细的介绍如何配置运行环境:第一步:进入我的桌面,右击“我的电脑”,选择“属性”选项,进入“系统属性”对话框,单击“高级”标签,如图4.1所示:图4.1第二步:点击上图箭头所示“环境变量”,进入图4.2画面。图4.2第三步:单击 “系统变量”部分的 “新建按扭”,创建JAVA-HOME变量,在变量值栏内输入C:j2sdk1.4.2,图4.3是Java_home的路径, 指明JDK安装路径,就是刚才安装时所选择的路径C:j2sdk1.4.2,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依靠此变量)。图4.3第四步:同样的方法创建CL
36、ASSPATH 变量,在变量栏内输入,.;C:j2sdk1.4.2lib;C:tomcatcommonlib (要加.表示当前路径)CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。第五步:创建PATH变量,在变量栏内输入,C:j2sdk1.4.2binPath使得系统可以在任何路径下识别java命令。第六步:创建Tomcat-Home变量,在变量栏内输入C: Tomcat 如图4.4所示:图4.4至此,完成了开发环境的配置。4.2 登录模块的实现登录模块,用户输入用户名和密码,数据库同时对用户名和密码进行比对,返回结果,如
37、果用户登录成功则将用户名保存在session中。4.3 购买模块的实现4.3.1搜索单本图书的实现在搜索页面,在文本框中输入图书名称来搜索图书。%String bookname = new String(request.getParameter(bookname);String sql = SELECT * from books WHERE bookname = + bookname+;ResultSet rst = null;tryrst = BookBean.query (sql); /调用BookBean将查询的值赋给 rstcatch(Exception e)e.printStackT
38、race();if(rst.next() out.println();out.println();out.println(编号: + rst.getInt(1) + );out.println(书名: + rst.getString(2) + );out.println(拥有者: + rst.getString(3) + );out.println(价格: + rst.getString(4) + );out.println(添加到购物车 );/将要添加的书名等信息传值到购物车页面 out.println(); elseout.println(不存在书名为 + bookname + 的图书!)
39、;BookBean.close ();%4.3.2搜索所有图书的实现在不知道需要的图书名字时,可以选择搜索全部来查看,也可以通过查看这个来对不同卖家同一本书的价格进行比较%String sql = SELECT * from books;ResultSet rst = null;tryrst = BookBean.query (sql); /调用BookBean将查询的值赋给 rstcatch(Exception e)e.printStackTrace();4.3.3 购物车的实现购物车页面是购买的主要页面,用户可以对购物车中的图书进行删减操作。%String username=(String
40、)session.getAttribute(username);String sql = SELECT * from shopping_cart WHERE buyer_name = +username+;ResultSet rst = null;tryrst = BookBean.query (sql);/读取用户购物车信息catch(Exception e)e.printStackTrace();while(rst.next()out.println();out.println();out.println(编号: + rst.getInt(1) + );out.println(书名: +
41、rst.getString(2) + );out.println(拥有者: + rst.getString(3) + );out.println(价格: + rst.getString(4) + );out.println();out.println(删除);/删除购物车中不要的图书String cartId=request.getParameter(id);if(cartId!=null)String delSql = delete from shopping_cart WHERE scartid = +cartId+;tryBookBean.update (delSql);catch(Ex
42、ception e)e.printStackTrace();response.sendRedirect(show_mycart.jsp);/删除不要的图书后自动刷新购物车页面BookBean.close ();%4.4 销售模块的实现销售模块中,用户可以添加删除图书,下面一段程序是添加图书的程序。%request.setCharacterEncoding(gb2312);String bookname = new String(request.getParameter(bookname);String username=(String)session.getAttribute(username);String book_price = request.getParameter(price);/String类型需要加单引号,其他类型不需要String sql = INSERT INTO books (bookname,username,price) VALUES(+bookname+,+username+,+book_price