源码请点赞关注收藏后评论区留言和私信博主
开发环境:Web服务器使用Servlet容器,数据库采用mysql,集成开发环境为Spring Tool Suite(STS)
一、系统设计
电子商务平台分为两个子系统 一个是后台管理系统 一个是电子商务系统,下面分别讲解着两个子系统的功能需要与模块划分
系统功能需求
1:后台管理子系统
要求管理员登录成功后,才能对商品进行管理,包括添加商品,查询商品,修改商品以及删除商品,除商品管理外,管理员还需要对商品类型,注册用户以及用户的订单等进行管理
2:电子商务子系统
(1):非注册用户
具有浏览首页,查看商品详情以及搜索商品的功能
(2):注册用户
还可以购买商品,查看购物车,收藏商品,查看订单等等
系统模块划分
1:后台管理子系统
模块划分如下
2:电子商务子系统
模块划分如下
二、数据库设计
系统采用加载纯Java数据库驱动程序的方式连接MYSQL数据库,创建数据库shop并创建8张系统表 数据库E-R图如下
建表的sql语句此处省略 需要请点赞关注收藏后私信博主
部分sql语句如下
/*
Navicat MySQL Data Transfer
Source Server : testSpringMVC
Source Server Version : 50519
Source Host : localhost:3306
Source Database : shop
Target Server Type : MYSQL
Target Server Version : 50519
File Encoding : 65001
Date: 2019-10-08 07:41:20
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `ausertable`
-- ----------------------------
DROP TABLE IF EXISTS `ausertable`;
CREATE TABLE `ausertable` (
`aname` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`apwd` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`aname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of ausertable
-- ----------------------------
INSERT INTO ausertable VALUES ('admin', 'admin');
-- ----------------------------
-- Table structure for `busertable`
-- ----------------------------
DROP TABLE IF EXISTS `busertable`;
CREATE TABLE `busertable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bemail` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`bpwd` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of busertable
-- ----------------------------
INSERT INTO busertable VALUES ('6', 'chenhengdl@126.com', '78f8a7ae700c91db09facb05a675432b');
-- ----------------------------
-- Table structure for `carttable`
-- ----------------------------
还没弄
DROP TABLE IF EXISTS `carttable`;
CREATE TABLE `carttable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`busertable_id` int(11) NOT NULL,
`goodstable_id` int(11) NOT NULL,
`shoppingnum` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `bid` (`busertable_id`),
KEY `gno` (`goodstable_id`),
CONSTRAINT `bid` FOREIGN KEY (`busertable_id`) REFERENCES `busertable` (`id`),
CONSTRAINT `gno` FOREIGN KEY (`goodstable_id`) REFERENCES `goodstable` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of carttable
-- ----------------------------
-- ----------------------------
-- Table structure for `focustable`
-- ----------------------------
还没弄
DROP TABLE IF EXISTS `focustable`;
CREATE TABLE `focustable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`goodstable_id` int(11) NOT NULL,
`busertable_id` int(11) NOT NULL,
`focustime` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `gno1` (`goodstable_id`),
KEY `bid1` (`busertable_id`),
CONSTRAINT `bid1` FOREIGN KEY (`busertable_id`) REFERENCES `busertable` (`id`),
CONSTRAINT `gno1` FOREIGN KEY (`goodstable_id`) REFERENCES `goodstable` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of focustable
-- ----------------------------
INSERT INTO focustable VALUES ('5', '29', '6', '2019-10-05 14:55:51');
-- ----------------------------
-- Table structure for `goodstable`
-- ----------------------------
还没弄
DROP TABLE IF EXISTS `goodstable`;
CREATE TABLE `goodstable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`gname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`goprice` double DEFAULT NULL,
`grprice` double DEFAULT NULL,
`gstore` int(11) DEFAULT NULL,
`gpicture` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`isRecommend` tinyint(2) DEFAULT NULL,
`isAdvertisement` tinyint(2) DEFAULT NULL,
`goodstype_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `typeid` (`goodstype_id`),
CONSTRAINT `typeid` FOREIGN KEY (`goodstype_id`) REFERENCES `goodstype` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of goodstable
-- ----------------------------
INSERT INTO goodstable VALUES ('26', '广告商品4', '90', '80', '1000', '201910274135059473.jpg', '0', '1', '2');
INSERT INTO goodstable VALUES ('27', '广告商品5', '80', '30', '122', '201910274135126352.jpg', '0', '1', '3');
INSERT INTO goodstable VALUES ('28', '抱枕11号', '100', '20', '200', '201910274135150096.jpg', '1', '0', '14');
INSERT INTO goodstable VALUES ('29', '抱枕22号', '300', '200', '180', '201910274135212497.jpg', '1', '0', '15');
INSERT INTO goodstable VALUES ('32', '抱枕99', '80', '70', '80', '201910280135330014.jpg', '1', '0', '14');
DROP TABLE IF EXISTS `orderdetail`;
CREATE TABLE `orderdetail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`orderbasetable_id` int(11) NOT NULL,
`goodstable_id` int(11) NOT NULL,
`shoppingnum` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `odsn` (`orderbasetable_id`),
KEY `gno3` (`goodstable_id`),
CONSTRAINT `gno3` FOREIGN KEY (`goodstable_id`) REFERENCES `goodstable` (`id`),
CONSTRAINT `odsn` FOREIGN KEY (`orderbasetable_id`) REFERENCES `orderbasetable` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of orderdetail
-- ----------------------------
INSERT INTO orderdetail VALUES ('5', '3', '29', '20');
INSERT INTO orderdetail VALUES ('6', '4', '33', '20');
建表后效果如下
三、系统管理
1:添加相关依赖
在pom.xml文件中添加如下代码
mysql
mysql-connector-java
5.1.45
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.0
commons-fileupload
commons-fileupload
1.3.3
应用的目录结构如下
在配置文件application.properties中添加如下代码
server.servlet.context-path=/eBusiness
###
##数据源信息配置
###
#数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/shop?characterEncoding=utf8
#数据库MySQL为8.x时,url为jdbc:mysql://localhost:3306/springbootjpa?useSSL=false&serverTimezone=Asia/Beijing&characterEncoding=utf-8
#数据库用户名
spring.datasource.username=root
#数据库密码
spring.datasource.password=root
#数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#设置包别名(在Mapper映射文件中直接使用实体类名)
mybatis.type-aliases-package=com.ch.ebusiness.entity
#告诉系统在哪里去找mapper.xml文件(映射文件)
mybatis.mapperLocations=classpath:mappers/*.xml
#在控制台输出SQL语句日志
logging.level.com.ch.ebusiness.repository=debug
#关闭Thymeleaf模板引擎缓存(使页面热部署),默认是开启的
spring.thymeleaf.cache=false
#上传文件时,默认单个上传文件大小是1MB,max-file-size设置单个上传文件大小
spring.servlet.multipart.max-file-size=50MB
#默认总文件大小是10MB,max-request-size设置总上传文件大小
spring.servlet.multipart.max-request-size=500MB
四、组件设计
包括 管理员登录权限验证 前台用户登录权限验证 验证码 统一异常处理 工具类等等
五、后台管理子系统的实现
管理员登录界面如下
代码如下
管理员登录页面
管理员登录
类型管理界面如下 包括增删改查
添加类型页面代码如下
商品类型添加页面
添加类型
添加商品效果如下
代码如下
商品类型添加页面
添加商品
其余的删除修改页面此处省略 有需要者点赞关注收藏后评论区留言或私信博主
六、前台商务子系统的实现
导航页效果如下 点击即可跳转到其他页面
代码如下
导航页
.carousel{
height: 200px;
background-color: #000;
}
.carousel .item{
height: 200px;
background-color: #000;
}
.carousel img{
width: 100%;
}
商品详情页面如下
代码如下
商品页面
function focus(){
$.ajax(
{
//请求路径,要注意的是url和th:inline="javascript"
url : [[@{/cart/focus}]],
//请求类型
type : "post",
contentType : "application/json",
//data表示发送的数据
data : JSON.stringify({
id : $("#gid").val()
}),
//成功响应的结果
success : function(obj){//obj响应数据
if(obj == "no"){
alert("您已收藏该商品!");
}else if(obj == "ok"){
alert("成功收藏该商品");
}else{
alert("您没有登录,请登录!");
}
},
error : function() {
alert("处理异常!");
}
}
);
}
function putCart(){
if(!(/(^[1-9]d*$)/.test($("#buyNumber").val()))){
alert("购买量请输入正整数!");
$("#buyNumber").focus();
return;
}
if(parseInt($("#buyNumber").val()) > parseInt($("#gstore").text())){
alert("购买量超出库存!");
$("#buyNumber").focus();
return;
}
//获取路径
var pathName=window.document.location.pathname;
//截取,得到项目名称
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
window.location.href = projectName + "/cart/putCart?id=" + $("#gid").val() + "&buyNumber=" + $("#buyNumber").val();
}
商品名:
商品折扣价:¥
商品原价:
¥
商品类型:
库存:
加入收藏
加入购物车
测试效果如下
如果账号密码不对则弹出错误窗口
还有用户注册 登录页面 购物车 下单页面 个人信息 我的收藏页面等等此处省略
需要源码请点赞关注收藏后评论区留言或 私信博主即可