基于JavaWeb和MySQL的网上书店的设计与实现
摘 要
随着网络的普及,越来越多的人喜欢在网上购物,为了满足广大学生和社会上需要购买图书的人群,开发满足需求的网上书店是必要的,这样,可以让购买者足不出户,也可以在家里购买自己心仪的图书,同时享受比实体店更加实惠的活动,卖家也不需要租昂贵的店面,也可以实现足不出户就可以在家里卖出自己的图书,大大减少了自己的成本,本网站为广大用户提供便捷的服务。
本网站采用分层的思想进行设计开发,前端使用bootstrap进行页面的开发,同时使用js和Jquery编写动态效果,后端使用ssm框架,分为控制层、服务层、实体层。数据库使用的mysql的数据库。
系统实现了用户管理、图书查询、图书买卖、购物车、订单管理、缴费充值等功能。在系统开发完成之后,经过测试,其功能都可以正常运行,满足用户的需求。
关键字 :网上书店;减少成本;SSM;Jquery;MySql
Abstract
With the popularity of the Internet, more and more people love shopping on the Internet, in order to meet the needs of the people buy books for students and social development, to meet the needs of the online bookstore is necessary, so that buyers can make at home, can also buy their own heart instrument at home and enjoy books, more affordable than the store activities, the seller does not need to rent expensive stores, can also achieve homes can sell their books at home, greatly reducing the cost of their own, this site for users to provide convenient services.
This website uses hierarchical design and development, the development of front-end using bootstrap to the page, and use js and Jquery prepared dynamic effect, back-end using the SSM framework, divided into control layer, service layer and entity layer. Database using MySQL database.
The system implements the functions of user management, book search, book sales, shopping cart, order management, payment recharge and so on. After the completion of the system development, after the test, its function can be normal operation, to meet the needs of users.
Key words : Online bookstore; convenient service; SSM; Jquery; MySQL
第1章 引言
1.1 开发背景
随着网上购物的普及,越来越多的人习惯在网上购物,它为我们提供了方便快捷的购物体验,我们再也不需要去实体店里也可以购买自己心仪的物品。随着终身学习的流行,越来越多的人需要购买图书,来增加自身的修养,为了方便广大用户的购物,特地开发这么一个系统,来方便大家购买图书,同时也方便卖家卖书。
1.2 可行性分析
-
经济可行性 :具体的缴费充值需要实现第三方的接口,而第三方的接口需要提供商家信息和缴纳高额的费用才会给你用户id和密钥,由于自身经济的原因,我使用了第三方易宝支付的免费测试账号,该账号只允许充值少量金额进行开发的模拟测试
-
技术可行性 :现在基于JavaWeb的项目已经十分成熟,前端有bootstrap、easy-ui等框架可以进行开发,后端有ssm、ssh等开发框架进行开发,后端有mysql、oracle等数据库可以实现
-
社会可行性 :产品符合道德标准,符合大众审美。并没有违反相关的法律,同时解决了某些人群的买卖图书的需求,解决一定的社会需求
1.3 项目目标
项目的最终目标是,购买者可以在这个网站上以更加优惠的价格买到自己心仪的图书,我们可以提供完善的售后服务,卖家可以在这个平台上将自己的图书卖出去,达到薄利多销的目的,希望将来会有越来越多的图书能进入我们的网站,达到互利共赢的目标。
第2章 开发工具及技术
2.1 开发工具
类型 | 名称 | 版本 |
---|---|---|
数据库 | Mysql | 5.7.15 |
数据库可视化工具 | SQLyog - 32 bit | 11.24 |
编译工具 | Eclipse | Mars Release (4.5.0) |
Java开发工具包 | JDK | 1.7.0 |
项目管理工具 | Maven | 3.3.9 |
Web服务器 | Tomcat | 7.0 |
浏览器 | Google Chrome | 53.0以上 |
2.2 运行环境
-
系统 :Windows 7以上
-
硬件 :普通的pc机,内存最低配置256M
2.3 开发技术
2.3.1 框架
项目中所使用的框架:Bootstrap、Spring、SpringMVC、MyBatis。
-
Bootstarp :Bootstrap是基于HTML5和CSS3开发的,它在jQuery的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件
-
Spring :Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架
-
SpringMVC :通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制
-
MyBatis :MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录
2.3.2 插件
系统页面需要引入的插件:Jquery、Bootstarp-Table
-
Jquery :一个JavaScript框架,轻量级的JS库,封装了JS、CSS、DOM,提供了一致的、简洁的API
-
Bootstarp-Table :Bootstarp-Table是一个轻量级的table插件,使用AJAX获取JSON格式的数据,其分页和数据填充很方便,支持国际化
2.3.3 其他技术
-
Ajax :AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。一种异步地发起请求技术,使用浏览器的XMLHttpRequest对象异步地向服务器发送请求,服务器返回数据,而不是一个完整的页面,以无刷新的效果更改页面中的局部内容
-
Json :Json是一种轻量级的数据交换格式,前端和后端的交互格式
第3章 系统分析与概要设计
3.1 需求分析
根据用户购买图书的整体流程,我把用户的需求进行了分析了整理,归纳出以下几条:
-
管理员实现普通用户的增删改查
-
管理员实现图书的增删改查
-
用户进行图书的游览和查询
-
购物车对用户选择的商品进行保存
-
用户对订单进行管理
-
用户对商品进行评价
-
用户充值缴费和缴费记录查询
3.2 系统功能模块
根据需求分析将系统功能分为9个模块:
-
用户管理模块 :实现对普通用户进行增删改差
-
图书管理模块 :实现对图书的上传,删除,修改,查找
-
图书的查找模块 :实现对用户输入的信息进行图书的查找
-
购物车模块 :实现对用户选择添加购物车的商品进行保存,并计算价格,当用户购物车的商品进行修改时,能够实时响应
-
订单管理模块 :用户可以查看自己当前订单的状态,有待收货、待评价、已完成等状态
-
用户评价模块 :当用户确定收货之后,可以对已经购买的商品进行评价
-
用户充值缴费模块 :用户可以通过选择各种银行卡付款的方式向商城进行充值,然后用商城的货币进行消费
-
用户缴费查询模块 :用户可以查询到自己充值的记录
-
个人中心模块 :用户可以在这个模块查看一些自己的个人信息,修改自己的密码
3.3 系统结构体系图
结合系统功能模块,系统结构体系图如下:
3.4 数据库设计
根据需求分析设计数据库表:
用户表(user)
字段 | 类型 | 允许空 | 是否主键 | 说明 |
---|---|---|---|---|
username | varchar(20) | 否 | 是 | 用户名 |
password | varchar(20) | 是 | 否 | 用户密码 |
varchar(20) | 是 | 否 | 用户邮箱 | |
money | varchar(20) | 是 | 否 | 账户余额 |
图书表(book)
字段 | 类型 | 允许空 | 是否主键 | 说明 |
---|---|---|---|---|
bno | varchar(20) | 否 | 是 | 图书编号 |
booktype | varchar(50) | 是 | 否 | 图书类型 |
bookname | varchar(100) | 是 | 否 | 图书名称 |
bookprice | varchar(20) | 是 | 否 | 图书原价 |
bookdis | varchar(20) | 是 | 否 | 图书现价 |
src | varchar(100) | 是 | 否 | 图片路径 |
score | varchar(20) | 是 | 否 | 图书评分 |
author | varchar(100) | 是 | 否 | 图书作者 |
press | varchar(100) | 是 | 否 | 图书出版社 |
shelfdate | date | 是 | 否 | 出版时间 |
content | varchar(10000) | 是 | 否 | 图书内容简介 |
catalog | varchar(10000) | 是 | 否 | 图书目录 |
isbn | varchar(100) | 是 | 否 | Isbn |
pbookname | varchar(100) | 是 | 否 | 图书原名称 |
translator | varchar(100) | 是 | 否 | 翻译者 |
kb | varchar(20) | 是 | 否 | kb |
Bc | varchar(20) | 是 | 否 | bc |
用户评价表(evaluate)
字段 | 类型 | 允许空 | 是否主键 | 说明 |
---|---|---|---|---|
username | varchar(20) | 是 | 否 | 用户名 |
bno | varchar(20) | 是 | 否 | 图书编号 |
date | timestamp | 是 | 否 | 评价时间 |
score | varchar(20) | 是 | 否 | 评分 |
Text | varchar(1000) | 是 | 否 | 评价内容 |
用户订单表(orderitem)
字段 | 类型 | 允许空 | 是否主键 | 说明 |
---|---|---|---|---|
orderid | varchar(20) | 否 | 是 | 订单编号 |
bno | varchar(20) | 是 | 否 | 图书编号 |
number | varchar(20) | 是 | 否 | 图书数量 |
bookname | varchar(20) | 是 | 否 | 图书名称 |
bookdis | varchar(20) | 是 | 否 | 图书现价 |
username | varchar(20) | 是 | 否 | 用户名 |
status | varchar(20) | 是 | 否 | 状态 |
address | varchar(100) | 是 | 否 | 地址 |
购物车表(shopcart)
字段 | 类型 | 允许空 | 是否主键 | 说明 |
---|---|---|---|---|
username | varchar(20) | 否 | 是 | 用户名 |
bno | varchar(20) | 否 | 是 | 图书编号 |
number | varchar(20) | 是 | 否 | 图书数量 |
bookname | varchar(20) | 是 | 否 | 图书类型 |
bookdis | varchar(20) | 是 | 否 | 图书现价 |
充值记录表(recharge)
字段 | 类型 | 允许空 | 是否主键 | 说明 |
---|---|---|---|---|
username | varchar(20) | 是 | 否 | 用户名 |
rgid | varchar(20) | 否 | 是 | 充值号 |
date | timestamp | 是 | 否 | 充值日期 |
money | varchar(20) | 是 | 否 | 充值金额 |
管理员表(admin)
字段 | 类型 | 允许空 | 是否主键 | 说明 |
---|---|---|---|---|
username | varchar(20) | 否 | 是 | 用户名 |
password | varchar(20) | 是 | 否 | 密码 |
3.5 系统架构设计
采用分层的思想将系统分为控制层、业务层、持久层三层
-
控制层 :表示逻辑(数据展现、操作界面)和控制逻辑(请求分支)
-
业务层 :封装业务处理逻辑
-
持久层 :封装数据访问逻辑
数据库连接:使用SpringJDBC,直接在jdbc.properties中配置。
c++
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bookstore?characterEncoding=utf-8
jdbc.username=root
jdbc.password=
jdbc.maxWait=1000
jdbc.initialSize=20
jdbc.maxActive=1000
jdbc.maxIdle=10
jdbc.minIdle=5
系统需要的包主要有:spring-webmvc、spring-jdbc、mybatis、spring-mybatis、fastjson、jstl、mysql-connetcot等。
第4章 详细设计
4.1 用户登录注册和个人中心模块
4.1.1 简介
用户登录的时候可以检验进行表单验证,如果表单验证成功之后,进行用户用户名和密码的验证,如果都正确,可以进入主页面,同时可以选择记住密码,这样就可以,将用户账号和密码保存到cookie里面,这样下次登录的时候,就可直接登录。
用户注册的时候会对用户表输入的用户名进行数据库的匹配,如果数据库含有这个字段名,提示用户名已经存在,请重新输入。
个人中心模块可以查看个人的信息,同时可以修改用户的密码。修改之后就会及时刷新。
4.1.2 核心思想
登录最重要的就是要将当前用户的对象存入到session里面,这样在后面的过程中就可以随时取到当前用户的相关信息,比如登录进来之后查看自己的购物车,订单之类的信息。如果不进行存储,将获得不到当前用户的相关信息。
4.1.3 界面截图
用户登录图
用户注册图
个人中心图
4.2 书籍的查找模块
4.2.1 简介
用户可以在主页面的搜索框中输入信息,根据用户输入的信息进行书名和出版社的模糊匹配,返回用户查找的结果并显示。
4.2.2 核心代码解读
因为要实现前端的分页,所以我封装了一个pager类,这个类有俩个属性,一个是查找出来的图书对象集合,一个是满足条件的数据条数,每次根据前端传来的当前页数和页面大小,然后在数据库进行查找,把封装的pager对象返回给前端。
还有就是模糊查找的时候,提前在controller层进行字符串的拼接,不然在后面的XML文件里面在凭借的话识别不了,仅仅是我个人的观点,不排除有更好的方法。
service和mapper层省去,实际执行的就是XML里面配置的SELECT语句。具体如下:
4.2.3 界面截图
用户搜索框输入信息图
用户查询图书信息图
4.3 购物车模块
4.3.1 简介
用户可以在商场选择自己心仪的图书,然后加入自己的购物车,用户在自己的购物车里可以增加商品和数量,随之商品的总价也会随之变化,然后确定之后可以结帐付款。
4.3.2 具体实现
当用户进入购物的时候,首先会在页面DOM文档加载完成之后执行一个AJAX请求后端当前用户对应的购物车,然后将购物车的商品返回给前端,前端拿到之后遍历解析然后在页面上进行显示,这个是第一步。
当商品在用户面前显示之后,用户可以选择添加或者减少数量,这时候需要一个监听数量的文本框,当数量发生改变之后,后台立马将最新的数据写入到后端的数据库进行保存,同时对商品的总数量和总价格进行重新计算,并通过刷新页面获取数据库最新的值。
当我们结算付款成功的话,首先需要遍历checkbox,判断是否选中,对于选中的一个个获取信息写入到订单表里面,然后删除购物车表里面的这件商品,待全部遍历完成之后,再刷新页面,这时候付过款之后的商品就可以就会在页面上消失。
4.3.3 界面截图
购物车图
4.4 订单管理模块
4.4.1 简介
用户付完款之后,每件商品都会生成一条订单数据,每条订单都有自己的状态信息,当用户点击“确定收货”状态时,会变成“待评价”状态,再次点击此状态会跳转评价页面,评价完成之后状态会变成“已完成”。
4.4.2 难点解读
在页面DOM加载完成之后,AJAX并没有加载订单的数据的时候,这时候定义点击事件的时候,这时候是并没有用的,需要用到一个delegate这样的一个方法,这个方法定义的事件适用于未来的元素,这样对于未加载出来的数据也可以指定事件。具体如下:
4.4.3 界面截图
订单管理图
4.5 评价模块
4.5.1 简介
用户确定收货之后可以对自己购买的商品进行评价,评价之后,我们将对该商品的评价信息保存在数据库里面,等到下次有人再次浏览这个商品的时候,我们就可以看到该用户对这件商品的评价。
4.5.2 核心思想
代码就是用户评价之后将将用户评价的信息写入到数据库的评价表,当用户浏览这件商品的时候,利用图书编号找到对应的评价信息,读取之后到页面进行显示即可。在将评价表写入到数据库之后,要把订单的状态也及时改变。
4.5.3 界面截图
评价页面图
评价显示页面图
4.6 充值缴费
4.6.1 简介
用户可以在这个页面可以选择充值的银行,链接第三方的支付接口,然后付款,付款之后跳转到用户设定的链接地址。就会在用户余额上添加上充值的金额。
4.6.2 核心思想
易宝支付第三方支付接口的实现,网上有很多的例子,主要是一些参数的设定,传递给第三方接口,第三方接口进行处理,然后将处理的结果返回给指定的页面,相关的API文档和教程在网上很多,可以自己上网找找。最主要的是返回页面的时候,记得给当前用户的账户余额上加上相应的金额,添加之后,最重要的就是重新查询当前用户的信息保存在session里面,这样在加载页面的时候可以获得用户当前最新的信息。
4.6.3 界面截图
个人中心账户余额图
充值界面图
银行支付界面图
银行支付成功界面图
定义返回的网址图
充值后的余额图
4.7 用户管理
4.7.1 简介
管理员登录之后,就可以对用户进行添加,对用户进行信息的修改,删除一些用户。
4.7.2 核心思想
代码无非就是对用户的增删改查,主要是要看界面的设计,我的界面使用bootstarp-table和bootstrap-editable插件的使用。这俩个插件的联合使用可以大大方便我们对表格数据的编辑,方便用户的操作。进行每一次对数据库的操作之后一定要动态刷新页面,让页面显示的是最新的信息。
4.7.3 界面截图
用户的显示界面图
用户的新增界面图
用户的信息修改页面图
用户的删除页面
4.8 图书管理
4.8.1 简介
管理员可以通过这个界面查找图书,修改图书信息,删除图书,和上传自己图书。
4.8.2 核心思想
主要就是图片的上传和保存,我将所有上传的图片保存到项目下的webaap 文件夹下的img文件夹。因为我们的webapp文件夹下的东西是受保护的,所以要在配置文件里面修改不拦截的静态资源的路径中添加img的路径,将照片进行保存之后需要将照片的路径写入到对应图书的src属性里面,注意,写入的应该是相对路径,这样在查询图书的时候,就会从数据库的路径地址找到需要的图片,然后正确的在页面上进行显示。
4.8.3 界面截图
图书上传界面(上)图
图书上传界面(下)图
图书上传显示图
第5章 系统测试
本系统测试分为三个方面:后台的单元测试、后台代码整合测试、界面的模拟测试
-
后台单元测试 :在设计编写每个模块中的子功能后,使用Junit框架进行测试,多次模拟各种参数,验证对数据库数据的操作是否成功
-
后台代码整合测试 :在编写完一个功能模块后,将整个模块的功能进行整合测试,验证各个操作之间的影响是否合理。例如:在实现删除、添加操作后,查询功能操作后能实现数据库数据的更新
-
界面模拟测试 :在设计编写完jsp文件后,进入界面,模拟用户的各种操作,验证功能是否能正常运行以及是否达到用户的需求
第6章 总结
整个项目的开发思路是:先明确用户的需求,在需求明确的基础上将系统进行进行功能模块的划分以及数据的设计。完成数据库设计后,进行系统架构的建立,将系统后台分为控制层、服务层、持久层,并采用Spring、MyBatis、Spring MVC等框架进行开发。在后台代码完成后,然后设计整个界面,并不断的完善优化,最终完成整个系统的开发设计。
在设计开发功能实现过程中,遇到了各种各样的问题,例如:页面和后台之间的交互出错、Ajax请求出错、界面设计不合理等。但经过不断的调试,在网上查询资料,指导老师的指导,实习公司同事的帮助,最终解决了问题并完成了此次的毕业设计。
通过本系统的设计与开发,使自身对SSM框架、Ajax、Jquery、BootStrap等一些技术有了更深的理解与应用。尽管完成了此次的毕业设计,但是由于自身能力有限,系统难免有一些设计不足的地方,希望老师能给予批评和指导。
参考文献
[1] 徐涛.Web开发技术丛书:深入理解Bootstrap[M].机械工业出版社,2014.
[2] [美]Craig Walls.Spring实战[M].人民邮电出版社,2016.
[3] Pual Deck.Spring MVC学习指南[M].人民邮电出版社,2015.
[4] 荣艳冬.关于Mybatis持久层框架的应用研究[J].信息安全与技术,2015,12:86-88.
[5] 陶国荣.jQuery权威指南[M]. 机械工业出版社,2013.
[6] 王佳.基于Ajax的新MVC框架的研究与实现[D].长春理工大学,2009.
[7] [美]Lindsay Bassett.JSON必知必会[M].人民邮电出版社,2016.
参考文献
- 基于JSP的网上书店系统的设计与实现(吉林大学·马新)
- 基于SSH框架的网上书城系统设计与实现(成都理工大学·田涛)
- 网上购书系统的设计与实现(电子科技大学·谢宗燃)
- 基于JSP的网上购书系统(华东师范大学·王莉)
- 基于.NET的网上书店的设计与实现(电子科技大学·刘尧)
- 基于jsp技术网上书店系统的设计与实现(电子科技大学·胡朝斌)
- 基于J2EE架构网上书店的设计与实现(同济大学·蔡玮)
- 基于B/S架构的网上书店系统的设计与实现(电子科技大学·陈云英)
- 基于JSP的网上书店系统的设计与实现(吉林大学·马新)
- 基于B/S架构的网上书店系统的设计与实现(电子科技大学·陈云英)
- 基于J2EE的网上选书系统的实现(华东师范大学·邱城晓)
- 基于B/S架构的博文网络书店的设计与实现(电子科技大学·彭媛媛)
- 基于JSP技术的网上书店的开发与实现(电子科技大学·黄贻培)
- 基于JSP的网上购书系统(华东师范大学·王莉)
- 基于J2EE架构网上书店的设计与实现(同济大学·蔡玮)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设工厂 ,原文地址:https://m.bishedaima.com/yuanma/35339.html