武漢紡織大學
數學與計算機學院
數據庫應用課程設計報告
學生姓名: 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文檔等等。但是總體來說,進一步提高了自己的編碼規範和水平,不管是在以後的學習還是工作中都應該不斷的學習,將課本知識與實踐結合起來,才能更好的理解。