武汉纺织大学
数学与计算机学院
数据库应用课程设计报告
学生姓名: xxxxxx
学号: xxxxxxxxxx
班级: xxxxxxxxxxxx
指导老师: xxxx老师
评定成绩:
填写时间: 2019-06-29
更多学习资源,请关注本人个人微信公众号:
个人公众号:
我的微信号:
目录
(1)掌握进行数据库应用系统开发的基本思路、方法和步骤,通过整个数据库系统的设计流程,使学生进一步掌握数据库的操作、管理和维护、开发等数据库核心内容。
(2)将之前所学的需求分析、java代码编写、数据库设计、软件测试技术结合起来完成此次课程设计。
(3)培养学生在项目开发中团队合作精神、创新意识及能力。
JavaWeb-网上商城系统
随着人们生活水平的提高,对物质要求也越来越高。人们网购的消费也逐年增长,所以电子商务发展十分迅速,网上商城应运而生,为人们的网上购物提供了好的平台。电子商城,跟在线购物有关。它是一个JavaWeb项目,涉及到商品展示浏览,数据爬取,下单模拟支付,用户评论,加入购物车,搜索商品,购买商品等等,以及后台管理。并且为了增加用户体验,优化了前台页面,首页较为美观。
4.1 技术可行性
利用javaweb知识可以实现
采用各种最新框架和技术
4.2 经济可行性
该网上商城项目部署在了阿里云的云服务器上面, 9.9元/月
4.2 法律可行性
可行,自己写的网站
4.2操作可行性
操作较为简单,有网购经历的用户都可以快速适应商城操作
5.1 网上商城主要业务流程的活动图描述
主要的业务流程有三个:商品信息浏览、商品订购信息删除或更新、订单信息处理。
图1:顾客进行商品浏览查询操作
商品浏览:顾客可以浏览商城上商品的所有信息,如果需要查询,则需要登录后才能进行,在选购到自己所需的物品后,即可提交订单
图2:顾客进行商品订购删除或更新操作
商品订购信息删除或更新:用户登录后,可在“我的订单”模块查找到待删除或更新的订购信息,并对该信息进行相应的操作。
图3:管理员进行订单处理操作
订单信息处理:管理员登录后台系统后,即可进行客户订单的状态以及库存的更新。
5.2 网上商城用例图描述
游客:
图4:游客请求服务用例图
用户:
图5:用户请求服务用例图
管理员:
图6:管理员请求服务用例图
6.1 系统架构设计
图7:系统架构设计
6.2 功能模块设计
图8:功能模块结构图
基本功能详细描述:
(1)初始显示首页,有导航栏,和二级菜单,用户可以浏览商品信息;
(2)用户登录成功后,在首页会显示用户信息,新用户可以选择注册账号,然后再登录;
(3)可以在首页搜索框里面搜索想要的相关商品,然后跳转到搜索结果页面显示所有相关商品信息;
(4)用户浏览商品时可以点击商品链接,进一步了解商品详细信息;
(5)在商品详情页面,用户可以将喜欢的商品加入购物车;
(6)在商品详情页面,用户可以发表对商品的评论,上传图片和点赞;
(7)用户可以在购物车里面看到自己所有收藏商品的信息,也可以删除商品,还可以将商品加入订单列表;
(8)用户在订单列表里面可以看到自己所有的订单详情,可以点击购买,从而进行支付。
(9)模拟支付,调用支付宝接口,相关数据会在支付页面显示,支付方式多种可选。
(10)在后台,管理员拥有所有权限,可以对用户,商品分类和商品还有订单等信息进行管理,比如CRUD。
扩展功能详细描述:
(1)商品推荐功能,根据用户这段时间搜索过的商品,推荐给用户类似的可能感兴趣的商品,并展示在首页。
(2)模拟支付
(3)二级菜单的展示
(4)商品分类展示,包含一二级分类。
(5)数据库存储图片
(6)分布式多线程爬虫,爬取大量数据,效率和安全性高。
6.3 网上商城完整功能图:
图9:完整功能结构图
6.4 系统数据流程分析:
图10:第一层流程图
图11:第二层流程图(管理员)
图12:第二层流程图(商品)
图13:第二层流程图(订单)
6.5 系统E-R图:
图14:网上商城系统E-R图
7.1 adminuser(管理员)
描述:管理员信息表
序号 |
字段名称 |
字段描述 |
字段类型 |
长度 |
允许空 |
缺省值 |
1 |
id |
管理员ID |
int |
10,0 |
否 |
|
2 |
password |
密码 |
varchar |
255 |
|
|
3 |
username |
用户名 |
varchar |
255 |
|
|
7.2 category(一级分类)
描述:一级分类信息表
序号 |
字段名称 |
字段描述 |
字段类型 |
长度 |
允许空 |
缺省值 |
1 |
cid |
一级分类ID |
int |
10,0 |
否 |
|
2 |
cname |
一级分类名称 |
varchar |
255 |
|
|
7.3 categorySecond(二级分类)
描述:二级分类信息表
序号 |
字段名称 |
字段描述 |
字段类型 |
长度 |
允许空 |
缺省值 |
1 |
csid |
二级分类ID |
int |
10,0 |
否 |
|
2 |
csname |
二级分类名称 |
varchar |
255 |
|
|
3 |
cid |
一级分类ID |
int |
10,0 |
否 |
|
7.4 orderItem(订单列表)
描述:订单列表信息
序号 |
字段名称 |
字段描述 |
字段类型 |
长度 |
允许空 |
缺省值 |
1 |
itemid |
订单列表ID |
int |
10,0 |
否 |
|
2 |
count |
订单数量 |
int |
11 |
|
|
3 |
subtotal |
订单总价 |
double |
11 |
|
|
4 |
pid |
商品ID |
int |
10,0 |
否 |
|
5 |
oid |
订单详情ID |
int |
10,0 |
否 |
|
6 |
uid |
用户ID |
int |
10,0 |
否 |
|
7.5 orders(订单信息表)
描述:订单信息表
序号 |
字段名称 |
字段描述 |
字段类型 |
长度 |
允许空 |
缺省值 |
1 |
oid |
订单编号ID |
int |
10,0 |
否 |
|
2 |
total |
订单总价 |
double |
11 |
|
|
3 |
ordertime |
订单时间 |
datetime |
|
|
|
4 |
state |
订单状态 |
int |
11 |
|
|
5 |
name |
客户姓名 |
varchar |
255 |
|
|
6 |
phone |
联系电话 |
varchar |
11 |
|
|
7 |
uid |
客户id |
int |
10,0 |
否 |
|
7.6 product(产品信息表)
描述:产品信息表
序号 |
字段名称 |
字段描述 |
字段类型 |
长度 |
允许空 |
缺省值 |
1 |
pid |
产品ID |
int |
10,0 |
否 |
|
2 |
pname |
产品名称 |
varchar |
255 |
|
|
3 |
market_price |
交易价格 |
double |
|
|
|
4 |
shop_price |
售价 |
double |
|
|
|
5 |
image |
图片地址 |
varchar |
255 |
|
|
6 |
pdesc |
产品描述 |
varchar |
255 |
|
|
7 |
is_hot |
是否热卖 |
int |
11 |
|
|
8 |
pdate |
生产日期 |
datetime |
|
|
|
9 |
csid |
二级分类ID |
int |
10,0 |
否 |
|
7.7 user(用户信息表)
描述:用户信息表
序号 |
字段名称 |
字段描述 |
字段类型 |
长度 |
允许空 |
缺省值 |
1 |
uid |
用户ID |
int |
10,0 |
否 |
|
2 |
username |
用户姓名 |
varchar |
255 |
|
|
3 |
password |
用户密码 |
varchar |
255 |
|
|
4 |
name |
用户真实姓名 |
varchar |
255 |
|
|
5 |
|
电子邮箱 |
varchar |
255 |
|
|
6 |
phone |
电话 |
varchar |
255 |
|
|
7 |
addr |
地址 |
varchar |
255 |
|
|
8 |
state |
是否激活 |
int |
11 |
|
|
9 |
code |
激活码 |
varchar |
255 |
|
|
8.1 数据库建立
adminUser表:
DROP TABLE IF EXISTS `adminuser`;
CREATE TABLE `adminuser` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL COMMENT '管理员姓名',
`password` varchar(255) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
category表:
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
`cid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`cname` varchar(255) DEFAULT NULL COMMENT '类型名称',
PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
categorySecond表:
DROP TABLE IF EXISTS `categorysecond`;
CREATE TABLE `categorysecond` (
`csid` int(11) NOT NULL AUTO_INCREMENT COMMENT '第二类型id',
`csname` varchar(255) DEFAULT NULL COMMENT '第二类型名称',
`cid` int(11) DEFAULT NULL COMMENT '第一类型id',
PRIMARY KEY (`csid`),
KEY `FK936FCAF21DB1FD15` (`cid`),
CONSTRAINT `FK936FCAF21DB1FD15` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;
orderItem表:
DROP TABLE IF EXISTS `orderitem`;
CREATE TABLE `orderitem` (
`itemid` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单条id',
`count` int(11) DEFAULT NULL COMMENT '数量',
`subtotal` double DEFAULT NULL COMMENT '售价',
`pid` int(11) DEFAULT NULL COMMENT '产品id',
`oid` int(11) DEFAULT NULL COMMENT '订单id',
`uid` int(11) DEFAULT NULL,
PRIMARY KEY (`itemid`),
KEY `FKE8B2AB6166C01961` (`oid`),
KEY `FKE8B2AB6171DB7AE4` (`pid`),
KEY `FKE8B2AB6140ACF87A` (`oid`),
KEY `FKE8A41F815ECEA8B2` (`uid`),
CONSTRAINT `FKE8A41F815ECEA8B2` FOREIGN KEY (`uid`) REFERENCES `orders` (`oid`),
CONSTRAINT `FKE8B2AB6140ACF87A` FOREIGN KEY (`oid`) REFERENCES `orders` (`oid`),
CONSTRAINT `FKE8B2AB6171DB7AE4` FOREIGN KEY (`pid`) REFERENCES `product` (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
orders表:
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
`oid` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单编号',
`total` double DEFAULT NULL COMMENT '售价',
`ordertime` datetime DEFAULT NULL COMMENT '订单时间',
`state` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL COMMENT '客户姓名',
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`addr` varchar(50) DEFAULT NULL COMMENT '地址',
`uid` int(11) DEFAULT NULL COMMENT '客户id',
PRIMARY KEY (`oid`),
KEY `FKC3DF62E5AA3D9C7` (`uid`),
CONSTRAINT `FKC3DF62E5AA3D9C7` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=9031 DEFAULT CHARSET=utf8;
product表:
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`pid` int(11) NOT NULL AUTO_INCREMENT COMMENT '产品id',
`pname` varchar(255) DEFAULT NULL COMMENT '名称',
`market_price` double DEFAULT NULL COMMENT '交易价格',
`shop_price` double DEFAULT NULL COMMENT '售价',
`image` varchar(255) DEFAULT NULL COMMENT '图片',
`pdesc` varchar(255) DEFAULT NULL COMMENT '产品描述',
`is_hot` int(11) DEFAULT NULL COMMENT '是否热卖',
`pdate` datetime DEFAULT NULL COMMENT '日期',
`csid` int(11) DEFAULT NULL COMMENT '第二类型id',
PRIMARY KEY (`pid`),
KEY `FKED8DCCEFB9B74E02` (`csid`),
CONSTRAINT `FKED8DCCEFB9B74E02` FOREIGN KEY (`csid`) REFERENCES `categorysecond` (`csid`)
) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8;
user表:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
`addr` varchar(255) DEFAULT NULL,
`state` int(11) DEFAULT NULL,
`code` varchar(64) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
9.1 功能页面模块的实现
(1)初始显示首页,有导航栏和二级菜单,用户可以浏览商品信息,可以进行登录和注册以及查看购物车。
图15:商城系统首页
(2)用户登录成功后,在首页会显示用户信息,新用户可以选择注册账号,然后再登录;
图16:商城系统登录页面
图17:商城系统注册页面
(3)用户浏览商品时可以点击商品链接,进一步了解商品详细信息
图18:商城系统商品详情页面
(4)在商品详情页面,用户可以将喜欢的商品加入购物车;
图19:商城系统商品购物车页面
(5)用户可以在购物车里面看到自己所有收藏商品的信息,也可以删除商品,还可以将商品加入订单列表;
图20:商城系统商品我的订单页面
(6)模拟支付,调用易宝支付接口,相关数据会在支付页面显示,支付方式多种可选。
图21:商城系统商品支付页面
(7)后台登录页面,管理员登录后,对后台数据进行操作
图22:商城系统后台登录页面
(8)后台管理页面,可以对用户、一级分类、二级分类、商品、订单进行系统的管理。
图23:商城系统后台管理页面
经过此次课程设计,将数据库、前后端完整的过了一遍,自己对于上学期学习的java知识更加的熟悉,用到了经典的mvc设计思想且对于StartUML等工具的使用更加的熟悉。虽然系统的基本功能已经实现,但还是存在系统不稳定、数据解析太慢,查询响应时间太长等一些缺点。这些问题虽然对于目前这种小型的系统影响并不是很大,但是当访问量和查询过大的时候,这些问题所带来的影响可能会被无限的放大。这也是作为一个程序设计者必须要考虑到的因素。
开发一套系统,最重要的就是细心,需要充分考虑到该系统的现实意义,也让我感受到网站的制作并不是很难,但是也不太容易做好。
总之,对于本系统的实现,也感觉到了很多的不足,对于原生的js代码比较陌生,对于接口的调用程序的介绍不习惯于去查看官方的API文档等等。但是总体来说,进一步提高了自己的编码规范和水平,不管是在以后的学习还是工作中都应该不断的学习,将课本知识与实践结合起来,才能更好的理解。