《电子商务书店论文02897.doc》由会员分享,可在线阅读,更多相关《电子商务书店论文02897.doc(72页珍藏版)》请在三一办公上搜索。
1、电子商务书店的设计与实现电子商务书店的设计与实现摘 要本系统是在网络大量被推广和计算机技术迅速发展的背景前提下,利用myelipse开发工具结合mysql数据库和web开发技术以及jsp技术进行开发设计的。其主要功能是实现网上书店的交易,包括了新用户的注册和用户及管理员的登录、书籍查看(含分类查看、书名查看、作者名查看、全书查看),书本修改、添加、删除,意见提出与回复;用户拥有添加购物车、下订单、查看订单、修改订单、查看和留言意见等功能;管理员可以查看所有订单、删除订单、修改订单状态、查看和回复留言等功能。关键词:jsp;web开发;mysql数据库 ;网上书店 ; 设计与实现The elec
2、tronic commerce bookstore of design and implementationAbstractThis system of development and design under the network marketing to be extended of large and the rapid development of computer technology background premise, the development and design used myelipse development tool with mysql database ,
3、web development technology and JSP technology. Its main function is to realize the online bookstore deal, including a new user registration , users and administrators to login and the books view (including classification view, title view, the authors name view, all of books view), books modify, add,
4、 delete; The user has added a shopping cart and create order, check to orders, change order ,view and write advice and opinion etc; Administrators can view all orders, delete orders, change status of order,view and reply advice and suggestions etc.Keywords: JSP; Web development; Mysql database; Onli
5、ne bookstore; Design and implementation目 录第1章 综 述11.1 课题研究背景11.2 课题研究目的和意义11.3 开发语言java简介11.4 开发工具21.5 数据库系统21.6 系统需求分析3第2章 数据库设计42.1 数据库需求分析42.2 数据库概念结构设计52.3 数据库逻辑结构分析72.3.1 图书表(book)82.3.2 用户表(user)82.3.3订单表(order)82.3.4总订单表(orders)92.3.5购物车表(bookstorecar)92.3.6图书分类表1(booktype1)102.3.7图书分类表2(book
6、type2)102.3.8意见建议表(propose)102.4 数据库结构的实现112.4.1 用户表(user)112.4.2图书表(book)112.4.3订单表(order)122.4.4总订单表(orders)122.4.5 购物车表(bookstorecar)132.4.6图书分类表(booktype1)132.4.7图书具体分类表(booktype2)142.4.8意见建议表(propose)14第3章 系统设计163.1 系统功能分析163.2 系统功能模块设计17第4章 系统功能实现184.1 未登录查看184.1.1 分类查看184.1.2搜索查看184.1.3 其他操作2
7、14.2 注册224.3 用户登录查看224.3.1 查看书籍234.3.2 购物车功能264.3.3 订单功能284.3.4 意见留言294.4管理员登录查看294.4.1 图书操作304.4.2 订单功能314.4.3 意见回复33第5章 系统测试345.1 数据库连接测试345.2 登录测试355.2.1 用户名为空错误355.2.2 用户密码为空错误365.2.3 用户名或密码错误365.3 管理员总订单测试375.3.1 删除测试375.3.2 修改测试375.4 购买测试385.5 管理员图书删除测试39第6章 总结41致 谢42参考文献43附 录A: 主要源程序44附 录B: 系
8、统使用说明书61第1章 综 述1.1 课题研究背景随着网络的快速发展,许多传统的信息和数据库系统正在被移植到互联网上,网上书店无疑就是其中一个。网上书店能提供人机交互,使得书店与消费者之间有了全新的交流方式,它不再受到传统书店的制约,突破了地理位置上的界限,为共享资源,交流经验提供了方便。正是由于网上书店传播信息迅速方便、容量大、覆盖面广、自由交互等特点,很多的大型书店都已经设计和开发了网上书店,以提供个性化的购物平台,极大的提高购物效率。注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。我的毕业设计也就正是一个电子商务系统的开发-网上书店的设计与
9、实现。1.2 课题研究目的和意义当代社会,人们已经深深的领略到信息革命潮流的冲击。现在信息技术突破了单位性和地域性的局限,实现了网络和全球化,以英特网为代表的现代化信息网络正在急剧的增长着,其应用范围也从开始的单纯通讯,教育和信息查询向更有效益的商业领域扩张。这一趋势也告诉我们,电子商务在信息技术的推动下,已开始出现在人们的眼前。随着现代信息技术的迅猛发展,本系统在电子商务技术的应用可以使得人们通过电子商务技术进行图书的网上购买,新用户的注册、用户登录、商品列表、商品分类、查询商品、购物车和订单等基本功能。通过开发网上电子商务书店系统,改变了传统的购书方式,充分利用了现代化的各种高科技手段,实
10、现方便,快捷,高效,简单的服务,满足人们的需求。1.3 开发语言java简介Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。在早期,Java比较多的用在浏览器上,插入到网页中(即是Java Applet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(J
11、ava Server Page)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择。1.4 开发工具本系统开发使用工具为:MyeclipseMyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对eclispeIDE服务的利用它我们可以在数据库和JavaEE的开发、发布以及应用程序务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript
12、,Spring,SQL,Hibernate。MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。1.5 数据库系统数据库系统为:Mysql数据库。MySQL是一种开源代码关系型数据库系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言-结构化查询语言(SQL)进行数据库管理。 由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。
13、大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。 MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL是“结构化查询语句”。SQL是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。1.6 系统需
14、求分析网上书店系统主要是实现网上选书、购书、产生订单等功能的系统。一个典型的网上商城一般都需要实现商品信息的动态提示、购物车管理、客户信息注册登录管理、订单处理等模块。根据网上书店的基本需求,本系统需要完成的具体任务如下:1. 书图查询: 当客户进入网上书店时,应该在主页面中分类显示最新的书目 信息,以供客户选择所需图书,同时也应该提供按照图书名称,或者作者信息快速查询所需书目信息的功能。2. 购物车管理:当客户选择购买某图书产品时,应该能够将对应图书信息,如:价格、数量记录到对应的购物车中,并允许客户返回书目查询页面,选择其他商品,并添加到购物车中,当对应的购物订单生成后,应该能够自动清除以
15、生成订单的购物车中的信息。3. 订单处理:对应客户购买图书商品信息的需求,在确定了所购图书商品的价格、数量等信息后,提示用户选择对应的送货方式及付款方式,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的出货、送货的处理。4. 注册:为了能够实现图书商品的购买,需要管理客户相关的联系方式、送货地点等相关的信息。第2章 数据库设计2.1 数据库需求分析根据网上书店的运行操作流程,以及客户的在线操作等需求进行数据库的分析和数据库的需求设计数据库。本数据库的流程图如图2.1所示:数据库客户和管理图书信息订单信息购物车信息图书一级分类图书二级分类用户数据登陆图书数据显示添加修改查看订单订
16、单数据下订单购物车数据查看购物车添加修 改添加修改返回图2.1 数据流程图如上图所示,首先用户或管理员可以进入书店首页,可以进行图书的查看,但不能进行购买等操作;用户或管理员登录系统,则可以进行图书的操作处理,如查看图书信息、查看订单信息、增加订单、增加购物车信息、删除购物车物品、购买图书、收藏图书、修改图书信息等。2.2 数据库概念结构设计这一阶段是在需求分析的基础上,设计出能满足用户的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。本系统根据需求得到的实体有顾客或管理员实体、图书实体、购物车实体、订单实体、图书分类实体。各自的E-R图如下:订购用户订单列表订单图书如图2.2所示
17、为实体间E-R图;图2.2 实体间的E-R图如图2.3所示为用户的E-R图;用户用户编号用户名称用户密码电话邮箱职位图2.3 用户实体E-R图如图2.4所示为图书实体E-R图;图书图书编号出版社剩余数量作者图书名称出版时间图书价格图书类型图书内容图2.4 图书实体E-R图如图2.5所示为订单实体E-R图;订单订单编号状态接受人名订单人名地址总价顾客电话订单内容图2.5 订单实体E-R图如图2.6所示,总订单实体E-R图;总订单状态接受人名订单人名地址顾客电话订单内容总价订单编号图2.6 总订单实体E-R图如图2.7所示,为购物车实体E-R图;购物车图书编号作者图书价格图书名称用户名购买数量图2
18、.7 购物车实体E-R图如图2.8所示,图书一级分类实体E-R图;图书类型类型编号类型名称图2.8 图书一级分类E-R图如图2.9所示,为图书二级分类实体E-R图;图书具体类型类型编号类型名称所属类型号图2.9 图书二级分类E-R图2.3 数据库逻辑结构分析在上面的实体及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系。本系统设计的数据表格如下。每个表格表示在数据库中的一个表。2.3.1 图书表(book)表2.1为图书表,该表是用户购买图书,查看图书以及管理员对图书的操作等而设计。表2.1 图书表列名数据类型可否为空说明BookidInt(10)Not null图书编号(主键)
19、BooknameVarchar(40)Not null图书名称BookimagetextNull图书图片AuthorVarchar(20)Not null图书作者PublishVarchar(50)Not null出版社PublishdateDateNot null出版时间2.3.2 用户表(user)表2.2为用户表,此表是为了用户登录以及区别用户和管理员而设计的,主要是为了登录和注册用户的表格。表2.2 用户表列名数据类型可否为空说明UseridInt(10)Not null用户编号(主键)UsernameChar(20) Not null用户名PasswordChar(20)Not nu
20、ll密码PhoneInt(18)null电话Emailchar(30)null电子邮件Positionvarchar(20)Not null职位2.3.3订单表(order)表2.3为订单表,用户购买书籍时下订单,查看订单时将会用到此表。表2.3 订单表列名数据类型可否为空说明OrderidInt(10)Not null订单编号(主键)OrderusernameVarchar(20)Not null订单人姓名TonameVarchar(20)Not null接收人姓名UseridInt(10)Not null用户编号O_positionTextNot null内容AdressTextNot n
21、ull接收地址UserphoneInt(20)Not null用户电话PriceDouble(20)Not null总价StateVarchar(20)Not null状态2.3.4总订单表(orders)表2.4为总订单表,管理员可以通过此表查看所有的订单。表2.4 总订单表列名数据类型可否为空说明OrdersidInt(10)Not null总订单编号(主键)OrdersusernameVarchar(20)Not null订单人姓名StonameVarchar(20)Not null接收人姓名SuseridInt(10)Not null用户编号Os_positionTextNot nul
22、l内容SadressTextNot null接收地址SuserphoneInt(20)Not null用户电话SpriceDouble(20)Not null总价SstateVarchar(20)Not null状态2.3.5购物车表(bookstorecar)表2.5为购物车表,此表用于用户购买书籍以及用户下订单。表2.5 购物车表列名数据类型可否为空说明C_bookidInt(10)Not null图书编号(主键)UsernameInt(10)Not null用户名C_booknameVarchar(40)Not null图书名称C_authorVarchar(20)Not null图书作
23、者C_priceDouble(20)Not null图书价格C_aumountInt(10)Not null图书数量2.3.6图书分类表1(booktype1)表2.6为图书分类表1,该表为图书的分类(如小说,生活等)。表 2.6 图书分类表1列名数据类型可否为空说明BooktypeidInt(10)Not null分类编号booktypenameVarchar(20)Not null分类名称2.3.7图书分类表2(booktype2)表2.7为图书分类表2,是图书分类下的具体分类(如武侠玄幻,健康,美食等)。列名数据类型可否为空说明BtypeidInt(10)Not null具体分类编号Bt
24、ypenameVarchar(20)Not null具体分类名称BelongtoidInt(10)Not null所属分类编号表 2.7 图书分类表22.3.8意见建议表(propose)表2.8为意见建议表,是用户提建议和留言的表格,用户可以留言,建议和查看,管理员可以查看和回复。列名数据类型可否为空说明ProposeidInt(10)Not null意见建议编号(主键)UsernameVarchar(20)Not null意见人名字P1dateDateNot null提意见时间Pro1TextNot null意见内容P2dateDateNull回复时间Pro2TextNull回复内容表 2
25、.8 意见建议表2.4 数据库结构的实现2.4.1 用户表(user)用户表是客户和管理员登录系统的依据。主要包含了客户和管理员的登录名称(username),密码(password),电话(phone),邮箱(email)以及职位(position);其中用户ID设为主键。其实现代码如下:CERATE TABLE userUserid int(10) not null primary key;Username varchar(20)not null;Password varchar(20) not null;Phone varchar(18)null;Email text null;Posi
26、tion int(20) default2 ;2.4.2图书表(book)图书表是为了显示图书信息的数据表,用户对图书的各种操作都会用到该表;该表主要的字段包含:书号(bookid)、书名(bookname)、书图片(bookimage)、作者(author)、出版社(publish)、出版时间(publishidate)、书价(price)、库存数量(amount)、书内容简介(presition)、书类型(typeid)。其中书号设为主键。其实现代码如下:CERATE TABLEbookBookid int(10) not null primary key;Bookname varchar
27、(40) not null;Bookimage text null;Author varchar(20) not null;Publish varchar(50) not null;Publish data not null;Price double(10) not null;Amount int(10) not null;Presition text null;Typeid varchar(10) not null;2.4.3订单表(order)订单表主要是用户购买物品下订单,以及查看自己的购买信息等的数据表;主要包含:订单号(ordersid)、订单人名(ordersusername)、接
28、收人(toname)用户号(userid)、内容(o_position)、地址(adress)、电话(userphone)、总价(sprice)、状态(state)。其中订单号作为主键。其实现代码如下:CERATE TABLE orderOrdered int(10) not null primary key;Ordersusername varchar(20) not null;Toname varchar(20) not null;Userid int(10) not null;O_position text not null;Address text not null;Userphone
29、 int(20) not null;Sprice double(20) not null;State varchar(10) not null;2.4.4总订单表(orders)总订单表主要是用户购买物品下订单,以及查看自己的购买信息等的数据表;主要包含:订单号(ordersid)、订单人名(ordersusername)、接收人(stoname)用户号(suserid)、内容(os_position)、地址(sadress)、电话(suserphone)、总价(ssprice)、状态(sstate)。其中订单号作为主键。其实现代码如下:CERATE TABLE ordersOrderesid
30、 int(10) not null primary key;Ordersusername varchar(20) not null;Stoname varchar(20) not null;Suserid int(10) not null;Os_position text not null;Saddress text not null;Suserphone int(20) not null;Ssprice double(20) not null;Sstate varchar(10) not null;2.4.5 购物车表(bookstorecar)购物车表主要是用户购买图书的临时存放图书信息的
31、表。主要包含:图书号(c_bookid)、用户名(username)、图书名(c_bookname)、图书作者(c_author)图书价格(c_price)、购买数量(c_aumount);其中图示ID设为主键。其实现代码如下:CERATE TABLE bookstorecarC_bookid int(10) not null primary key;Username varchar(20) not null;C_bookname varchar(40) not null;C_author varchar(20) not null;C_price double(20) not null;C_a
32、umount int(10) not null default1;2.4.6图书分类表(booktype1)图书分类表1主要是为了区分图书的分类。其包含:图书分类号(booktypeid)图书分类名称(booktypename);其中图书分类id设为主键。其实现代码如下:CERATE TABLEbooktype1Booktypeid int(10) not null primary key;Booktypename varchar(20) not null;2.4.7图书具体分类表(booktype2)图书具体分类表2是为了区分图书具体类别。其包含:图书具体分类号(btypeid)、图书具体分
33、类名(btypename)、属于分类号(belongtoid);其中图书具体分类号作为主键。其实现代码如下:CERATE TABLEbooktype2Btypeid int(10) not null primary key;Btypename varchar(20) not null;Belongtoid int(10) not null;2.4.8意见建议表(propose)意见建议表是用户提出建议和留言的表格,管理员也可以进行查看留言和回复留言。其中主要包含字段意见建议编号(proposeid)、提出意见人(username)、意见时间(p1date)、意见内容(pro1)、回复时间(p2
34、date)、回复内容(pro2);意见建议编号为主键。其实现代码:CERATE TABLE proposeProposeid int(10) not null primary key;Username varchar(20) not null;P1date date not null;Pro1 text not null;P2date Date null;Pro2 text null;第3章 系统设计本系统采用分层架构设计,它的工作原理如图3-1所示。前台页面层业务处理servlet数据存储层网上书店操作界面封装实体类,实现接口和方法数据库操作类型Sql语句操作数据库返回操作结果返回结果显 示
35、图3-1分层架构模型采用分层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将先进行实体的封装,通过接口实现并将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。3.1 系统功能分析本系统用户的购买流程为如图3-2所示:未登录的注册用户商品浏览注册用户登录选择商品购买下订单完成查看订单修改选择商品图3-2 商品购买流程图根据购买流程将系统分为如下功能模块:未登录用户模块:未登录用户可以进行商品的查看,但不能进行操作(如购买);登录模块:用户根据自己的用户名和密码进行系统的登录;图书模块:包含图书的查询(分类查询,查询全部),增加,修改,
36、删除;购物车模块:包含购买图书,修改购买信息,删除商品;订单模块:包含增加订单,修改订单信息,删除订单;3.2 系统功能模块设计通过功能分析,得到功能模块流程图,如图3-3所示:电子商务书店系统未登录用户登录用户管理员图书查看图书购物车订单意见反馈图书总订单意见反馈分类查看图书按分类查看图书图书名查看图书作者名查看图书查看购物车添加购物车修改购物车删除购物车查看订单修改订单增加订单查看图书查看留言回复增加留言查看图书修改图书增加图书删除图书查看订单修改订单删除订单查看留言回复增加留言删除留言分类查看图书按分类查看图书图书名查看图书作者名查看图书分类查看图书按分类查看图书图书名查看图书作者名查看
37、图书查看个人订单查看全部订单图3-3 系统功能模块图第4章 系统功能实现4.1 未登录查看4.1.1 分类查看点击首页左边图书分类的类别名,可以查看该网上书店的所有分类,点击各个小分类也可看到各个分类所包涵的图书,如图4-1所示:图4-1 分类查看图书4.1.2搜索查看在搜索栏中输入你所需查找的内容,然后选择查找方式,按书名查找或按作者查找,如图4-2所示:图4-2 按条件查看图书程序主要代码:接口实现代码:public List querybyauthor(String author,int page) throws Exception /按作者名查询图书List books = new A
38、rrayList();con = DBUtil.getConnection();String sql = select * from book where author=? limit ?,5;pstmt = con.prepareStatement(sql);pstmt.setString(1, author);pstmt.setInt(2, page);rs = pstmt.executeQuery();while (rs.next() Book bk = new Book();bk.setBookid(rs.getInt(bookid);bk.setBookname(rs.getStri
39、ng(bookname);bk.setBookimage(rs.getString(bookimage);bk.setAuthor(rs.getString(author);bk.setPublish(rs.getString(publish);bk.setPublishdate(rs.getDate(publishdate);bk.setPrice(rs.getDouble(price);bk.setAmount(rs.getInt(amount);bk.setPresition(rs.getString(presition);bk.setBooktypeid(rs.getInt(bookt
40、ypeid);books.add(bk);DBUtil.close(con, pstmt, rs);return books;public List querybybookname(String bookname,int page) throws Exception List books = new ArrayList();con = DBUtil.getConnection();String sql = select * from book where bookname=? limit ?,5;pstmt = con.prepareStatement(sql);pstmt.setString
41、(1, bookname);pstmt.setInt(2, page);rs = pstmt.executeQuery();while (rs.next() Book bk = new Book();bk.setBookid(rs.getInt(bookid);bk.setBookname(rs.getString(bookname);bk.setBookimage(rs.getString(bookimage);bk.setAuthor(rs.getString(author);bk.setPublish(rs.getString(publish);bk.setPublishdate(rs.
42、getDate(publishdate);bk.setPrice(rs.getDouble(price);bk.setAmount(rs.getInt(amount);bk.setPresition(rs.getString(presition);bk.setBooktypeid(rs.getInt(booktypeid);books.add(bk);DBUtil.close(con, pstmt, rs);return books;业务处理层代码:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException HttpSession session=request.getSession();String position=(String) session.getAttribute(position);int p=Integer.parseInt(position);String st=request.getParameter(shou);String s=request.getParameter(radio);Book book=new Book();Bookdao bk=new Bookdaoimpl