老師,很抱歉上一次做業更改題目沒有及時將消息告知。前端
1、數據庫設計 web
1.1 E-R圖(用Powerdesigner畫CDM)數據庫
1.2 數據字典後端
表1-1 用戶表安全
表名架構 |
webuser(用戶表)數據庫設計 |
主鍵函數 |
webuser_id工具 |
|
列名測試 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
webuser_id |
Char |
10 |
不容許 |
用戶編號,惟一標識用戶的字段,以U開頭 |
usertype_id |
char |
10 |
不容許 |
用戶類別id,全部註冊用戶默認爲0,以UTY開頭 |
User_account |
varchar |
50 |
不容許 |
用戶登陸帳號,爲手機 |
User_pwd |
varchar |
50 |
不容許 |
用戶密碼,能夠爲數字和字母和其餘符號組成,規定長度在6~20之間 |
user_name |
nvarchar |
20 |
容許 |
用戶暱稱,字符不超過20的任意字符 |
user_sex |
char |
2 |
容許 |
用戶性別,可爲空 |
User_tel |
char |
11 |
不容許 |
聯繫用戶的方式,規定爲0-9數字組成 |
User_icon |
varchar |
50 |
容許 |
用戶頭像 |
User_point |
int |
|
不容許 |
用戶積分,默認初始爲0.00 |
reg_time |
datetime |
|
不容許 |
用戶註冊時間, 默認系統時間 |
Bank_card |
varchar |
10 |
容許 |
銀行卡號 |
Balance |
char |
11 |
容許 |
帳戶餘額 |
Pay_pwd |
money |
|
容許 |
支付密碼 |
Webuser_id |
char |
10 |
不容許 |
用戶編號 |
表1-2 用戶類別表
表名 |
usertype(用戶類別表) |
主鍵 |
usertype_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
usertype_id |
Char |
10 |
不容許 |
用戶類別id,分爲0,1,全部註冊用戶默認爲0,用戶類別名,0對應‘普通’,1對應‘會員’,以UTY開頭 |
usertype_name |
char |
4 |
不容許 |
用戶類別名,默認爲普通 |
表1-3 商品表
表名 |
produce(商品表) |
主鍵 |
pro_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
pro_id |
Char |
10 |
不容許 |
商品編號,以pro開頭 |
pro_name |
nvarchar |
20 |
不容許 |
商品名稱,以漢字或者英文字母組成 |
protype_id |
int |
|
不容許 |
商品類別id,有0-9數字組成,表明該商品類別(肉類,蔬菜,海鮮……) |
pro_price |
money |
|
不容許 |
商品單價 |
pro_amount |
int |
|
不容許 |
商品庫存,默認全部商品庫存爲200 |
pro_icon |
varchar |
50 |
不容許 |
商品圖片路徑 |
pro_info |
ntext |
|
容許 |
商品簡介(250字內) |
pro_disprice |
money |
|
容許 |
商品打折價格 |
collect_num |
int |
|
容許 |
商品被收藏次數,默認零 |
表1-4 商品類別表
表名 |
protype(商品類別表) |
主鍵 |
protype_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
protype_id |
Char |
10 |
不容許 |
商品類別id,有0-9數字組成,表明該商品類別(肉類,蔬菜,海鮮……),以PTY開頭 |
protype_name |
nvarchar |
10 |
不容許 |
商品類別名(蔬菜,肉類,海鮮,野味……) |
表1-5 收藏表
表名 |
collect(收藏表) |
主鍵 |
collect_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
collect_id |
Char |
10 |
不容許 |
收藏編號,以COL開頭 |
webuser_id |
Char |
10 |
不容許 |
用戶編號,惟一標識用戶的字段,以U開頭 |
pro_id |
char |
10 |
不容許 |
商品編號 |
collect_time |
datetime |
|
不容許 |
收藏時間,默認系統時間 |
表1-6 評價表
表名 |
comment(評價表) |
主鍵 |
comment_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
com_id |
Char |
10 |
不容許 |
用戶評論id ,以COM開頭 |
order_id |
Char |
10 |
不容許 |
訂單編號,以O開頭 |
pro_id |
char |
10 |
不容許 |
商品編號,以PRO開頭 |
com_time |
datetime |
|
不容許 |
用戶評價時間,默認系統時間 |
com_message |
ntext |
|
不容許 |
用戶發表評論內容,任意可打印字符 |
Com_pic |
varchar |
50 |
容許 |
評價圖片 |
Com_score |
Int |
|
容許 |
評價等級分數 |
Com_seq |
Int |
|
不容許 |
評價序號,以區分是首次評價仍是追加評價 |
表1-7 收貨地址表
表名 |
useraddress(收貨地址表) |
主鍵 |
Address_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
address_id |
Char |
10 |
不容許 |
收貨地址編號,惟一標識用戶的收貨地址字段,以add開頭 |
webuser_id |
char |
10 |
不容許 |
用戶編號,惟一標識用戶的字段 |
address |
nvarchar |
100 |
不容許 |
收貨地址,由任意可打印字符組成 |
表1-8 訂單表
表名 |
orders(訂單表) |
主鍵 |
order_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
order_id |
Char |
10 |
不容許 |
訂單編號 |
webuser_id |
char |
10 |
不容許 |
用戶編號,惟一識用戶的字段 |
order_time |
datetime |
10 |
不容許 |
訂單時間,默認系統時間 |
order_sum |
money |
|
不容許 |
訂單總價 |
address_id |
char |
10 |
不容許 |
收貨地址編號,惟一標識用戶的收貨地址字段,規定長度爲11位數字 |
order_state |
char |
6 |
不容許 |
五個字符串常量:「待付款」、「待配送」、「待收貨」、「待評價」、「已評價」 |
del_money |
money |
|
容許 |
配送費 |
del_id |
char |
10 |
容許 |
配送員編號 |
del_time |
datetime |
|
容許 |
配送時間 |
rec_time |
datetime |
|
容許 |
送達時間 |
表1-9 訂單明細表
表名 |
orderinfo(訂單明細表) |
主鍵 |
Order_id,produce_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
produce_id |
char |
10 |
不容許 |
商品編號 |
order_id |
Char |
10 |
不容許 |
訂單編號 |
order_amount |
int |
|
不容許 |
所訂購的商品數量 |
return_goods |
Boolean |
|
不容許 |
判別用戶是否申請退貨 |
refund |
boolean |
|
不容許 |
判別用戶是否申請退款 |
表1-10 配送員表
表名 |
deliveryman |
主鍵 |
delivery_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
del_id |
Char |
10 |
不容許 |
配送員編號,以del開頭 |
del_name |
varchar |
10 |
容許 |
配送員姓名 |
del_tel |
char |
11 |
容許 |
配送員聯繫電話 |
del_wage |
money |
|
容許 |
配送員工資 |
del_pwd |
varchar |
50 |
不容許 |
配送員密碼 |
del_account |
varchar |
50 |
不容許 |
配送員帳號 |
del_point |
int |
|
容許 |
配送員信用評分 |
表1-11 售後表
表名 |
Sale_back |
主鍵 |
Saler_id、Pro_id、Order_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
Saler_id |
Char |
10 |
不容許 |
商家編號 |
Pro_id |
Char |
10 |
不容許 |
商品編號 |
Order_id |
Char |
10 |
不容許 |
訂單編號 |
Deal_time |
datetime |
|
不容許 |
處理時間 |
Refund_money |
money |
|
不容許 |
退款金額 |
表1-12 商家回覆表
表名 |
Saler_reply |
主鍵 |
Com_id,saler_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
Com_id |
Char |
10 |
不容許 |
用戶評價編號 |
Saler_id |
char |
10 |
不容許 |
商家編號 |
Reply_time |
datetime |
|
容許 |
回覆時間 |
Reply_context |
varchar |
200 |
容許 |
回覆內容 |
表1-13 商家表
表名 |
Saler |
主鍵 |
Saler_id |
|
列名 |
數據類型 |
長度 |
是否容許爲空 |
描述 |
Saler_id |
Char |
10 |
不容許 |
商家編號,以s開頭 |
Saler_pwd |
varchar |
20 |
容許 |
登陸密碼 |
Saler_account |
varchar |
50 |
容許 |
商家登陸帳號 |
1.3 安全性
(1) 角色:數據庫管理員(商家)、顧客、遊客、配送員
(2) 用戶:數據庫管理員、顧客、遊客、配送員
(3) 登陸名:saler、customer、visitor、deliveryman
(4) 用戶密碼:使用PWDENCRYPT()加密存放。
1.4 存儲過程設計
序號 |
過程名 |
功能 |
入口參數 |
權限 |
1 |
proc_WebUserInsert
|
實現用戶註冊,將用戶密碼通過MD5加密後存入數據庫。
|
用戶帳號,密碼,用戶名,性別,聯繫電話 |
管理員、顧客 |
2 |
proc_WebUserSelectLogin
|
用戶登陸,使用PWDCOMPARE函數比對輸入的密碼與數據庫中通過加密的是否一致。
|
用戶帳號,密碼 |
管理員、顧客 |
3 |
proc_ProduceSelect
|
分類瀏覽商品,顯示排序後的結果 |
商品類別編號,排序字段,排序類別 |
管理員、顧客 |
4 |
proc_ProdeuceNameSelect
|
搜索商品名字 |
關鍵字 |
管理員、顧客 |
5 |
proc_ProduceIdSelect
|
查看商品詳情 |
商品編號 |
管理員、顧客 |
6 |
proc_OrdersInsert
|
生成訂單 |
用戶編號,商品編號列表,商品數量列表,收貨地址編號 |
管理員、顧客 |
7 |
proc_OrdersInfoInsert
|
生成訂單明細 |
訂單編號,商品編號,商品數量 |
管理員、顧客 |
8 |
proc_OrdersInfoOrderIdSelect
|
查看某個訂單 |
訂單編號 |
管理員、顧客 |
9 |
proc_OrdersStateSelect
|
查看用戶的訂單列表 |
用戶編號,訂單狀態 |
管理員、顧客 |
10 |
proc_OrderStateUpdatePay
|
付款操做 |
訂單編號,用戶編號 |
管理員、顧客 |
11 |
proc_OrderStateUpdateReceive
|
收貨操做,用戶對某個訂單進行收貨 |
訂單編號 |
管理員、顧客 |
12 |
proc_OrderStateUpdateComment
|
評價商品操做 |
商品編號,訂單編號,評價內容 |
管理員、顧客 |
13 |
proc_CollectInsert
|
收藏商品 |
商品編號,用戶編號 |
管理員、顧客 |
14 |
proc_WebuserUpdate
|
修改用戶信息 |
用戶名,性別,聯繫電話,用戶編號 |
管理員、顧客 |
15 |
proc_WebuserSelect
|
查看用戶信息 |
用戶帳號 |
管理員、顧客 |
16 |
proc_AddressForWebuserIdSelect
|
用戶查看本人的收貨地址 |
用戶編號 |
管理員、顧客 |
17 |
proc_AddressIdSelect
|
查看收貨地址信息 |
地址編號,用戶編號 |
管理員、顧客 |
18 |
proc_AddressInsert
|
添加收貨地址 |
用戶編號,地址信息 |
管理員、顧客 |
19 |
proc_AddressUpdate
|
修改地址內容 |
地址編號,地址信息 |
管理員、顧客 |
20 |
proc_AddressDelete
|
刪除收貨地址 |
地址編號 |
管理員、顧客 |
21 |
proc_WebuserAccountMoneyUpdate
|
用戶充值 |
用戶編號,充值金額 |
管理員、顧客 |
22 |
proc_showProduceSaleOfStage
|
統計某個時間段的每一個商品銷售量,顯示商品編號,開始時間,結束時間,銷售數量 |
開始時間,銷售時間 |
管理員、顧客 |
23 |
proc_showProduceSaleAll
|
統計每一個商品總銷售量,顯示商品編號,商品名稱,銷售數量 |
無 |
管理員、顧客 |
24 |
proc_showUserOrderNumOfStage
|
統計某個時間段每一個用戶訂單狀況,顯示用戶編號,用戶時間,訂單數量,開始時間,結束時間,付款總金額 |
開始時間,結束時間 |
管理員 |
25 |
proc_showUserOrderNum
|
統計每一個用戶訂單狀況,顯示用戶編號,用戶名稱,訂單數量,付款總金額,平均每單付款金額 |
無 |
管理員 |
26 |
proc_OrderStateSelectForDelivery |
配送員查找「待配送」狀態的訂單 |
無 |
管理員、配送員 |
27 |
proc_OrderStateUpdateDelivery |
配送員接單,將配送編號插入訂單表中,更新配送時間爲當前時間 |
配送員編號,訂單編號 |
管理員、配送員 |
1.5 觸發器設計
序號 |
觸發器名 |
功能 |
類型 |
做用表 |
1 |
tri_orderinfoInsert_UpdateOrders
|
插入訂單明細時,更新訂單總金額 |
Insert |
Orderinfo(訂單明細表) |
2 |
tri_orderinfoInsert_UpdateProduce
|
插入訂單明細時,更新商品庫存 |
insert |
Orderinfo(訂單明細表) |
3 |
tri_produceUpdate
|
更新商品庫存,檢查商品庫存是否小於20,小於20的提醒商家進貨 |
update |
Produce(商品表) |
4 |
tri_ordersUpdate1
|
修改訂單時,統計用戶不是待付款狀態的訂單數量,修改用戶級別 |
update |
Orders(訂單 表) |
5 |
tri_orderStateUpdate2
|
付款修改訂單狀態時,修改用戶餘額 |
update |
Orders(訂單表) |
6 |
tri_commentInsert
|
插入評價記錄時,修改訂單狀態 |
insert |
Comment(評價表) |
7 |
tri_collectInsert
|
插入收藏記錄時,統計商品收藏次數,修改collect_num值 |
Insert |
Collect(收藏表) |
8 |
tri_recommand_produce
|
每次用戶下單成功後,推薦該用戶購買數量最多的同類別商品 |
update |
Orders(訂單表) |
9 |
tri_orderStateUpdate3
|
修改訂單狀態爲待評價時,更新配送員的工資 |
Update |
Orders(訂單表) |
2、典型用戶和典型場景
2.1 典型用戶列表
表2-1
典型用戶 |
特色 |
上班族 |
工做繁忙,生活節奏快。 |
大學生 |
大學生在寢室偶爾會煮一些東西吃,但量的大小不定,而寢室也沒法處理超市買回來的食材,購菜系統裏包裝精良的現成菜品是不二選擇。 |
配送員 |
如何快速接單,高效配送。 |
供應商 |
供應菜品 |
網站管理員 |
擁有管理該網站的權限,能夠對全部用戶和微博進行操做。 |
網站破壞者 |
入侵網站、盜竊他人帳號等威脅人羣。 |
2.2 典型用戶和典型場景
表2-2
名字 |
胡一統 |
用戶性別 |
男 |
用戶屬性 |
上班族 |
動機、目的、困難 |
動機:喜好作飯,但因爲工做太忙,天天的午餐晚飯都靠着外賣來解決。想要買菜作飯但時間不容許。 困難:如何把蔬菜配合工做時間合適的時間送貨上門。 |
典型場景 |
下單購菜,與配送員交接 |
表2-3
名字 |
王文 |
用戶性別 |
女 |
用戶屬性 |
大學生 |
動機、目的、困難 |
動機:突發奇想在寢室煮火鍋,但懶得去超市購買菜品。 困難:因爲需求的菜品量大,對配送員仍是提供點都是須要時間的。且用戶不須要太過精確的對接時間,須要提早下單,而且在一個時間段以內送到便可。 |
典型場景 |
提早下單,預計送達。預計送達的先後一小時內與配送員對接。 |
表2-4
名字 |
吳所謂 |
用戶性別 |
男 |
用戶屬性 |
配送員 |
動機、目的、困難 |
動機:每一筆訂單按千米數,菜品重量,送達時間等計費 困難: 如何在規定時間送達菜品,如何高效接單。 |
典型場景 |
接單,配送 |
表2-5
名字 |
陳恩 |
用戶性別 |
女 |
用戶屬性 |
供應商 |
動機、目的、困難 |
動機:面面交易沒法知足全部人的需求,新的方式能夠賣出更多蔬菜,同時也知足了更多人的需求,和網站的合做互利雙贏。 困難:須要對菜品作進一步處理,浪費人力和時間。有時菜品供不該求。 |
典型場景 |
查看用戶訂單並經過訂單準備須要處理的蔬菜,在規定時間內處理完成。 |
表2-6
名字 |
趙端 |
用戶性別 |
男 |
用戶偏好 |
維護網站的安全、正常運行。管理網站的信息安全和信息合法。 |
動機、目的、困難 |
動機:做爲管理員,維持網站運行的秩序。 困難:目前仍須要提防有惡意用戶攻擊網站、竊取用戶隱私數據。 |
典型場景 |
網站管理端 |
表2-7
名字 |
Black |
用戶性別 |
男 |
用戶偏好 |
以入侵別人的網站,獲取到網站管理員權限爲樂。 |
動機、目的、困難 |
動機:入侵網站、炫耀本身的技術。 困難:網站的安全意識高,網站存在的漏洞少。 |
典型場景 |
忘記密碼、用戶登陸。 |
3、軟件原型設計
3.1 用戶
3.2 商家
3.3 配送員
4、功能模塊設計
4.1 用戶:
4.1.1 註冊:Void CustomerZhuce();註冊帳號,能夠經過手機或者郵箱進行註冊。
4.1.2 登陸:Void CustomerDenglu();利用帳號密碼登陸,或者手機驗證碼登陸。
4.1.3 修改用戶信息:Void CustomerXiugai();能夠修改用戶的收貨地址、暱稱、姓名等等
4.1.4 找回密碼:Void CustomerFindPassword();能夠經過郵箱找回、經過手機找回或者經過客服申述找回
4.1.5 用戶點評:Void Dianping();用戶對已經收到的菜進行評價。
4.1.6 下單:Void Xiadan();用戶經過在網頁瀏覽到的商品添加入購物車,而後最後在結算的時候向商家付款,從而生成訂單。
4.1.7 查看訂單:Void CustomerSelectOrder();用過查看本身下的單的信息
4.2 商家:
4.2.1 登陸:Void MerchantZhuce();利用帳號密碼登陸,或者手機驗證碼登陸。
4.2.2 註冊:Void MerchantDenglu();註冊帳號,能夠經過手機或者郵箱進行註冊。
4.2.3 訂單管理:Void ManagerSelectOrder ();查看訂單的狀態,並對訂單進行一些相應的管理,如退單等。
4.2.4 統計功能:Void SumFunction();統計近期菜品的銷量及銷量總額。
4.2.5 回覆評價:Void Reply();在線回覆用戶的評價。
4.2.6 添加/刪除/修改商品:Void AddGoods();添加商品
Void DeleteGoods();刪除商品
Void ChangeGoods();修改商品的信息
4.3 配送員:
4.3.1 登陸:Void DelivererZhuce();利用帳號密碼登陸,或者手機驗證碼登陸。
4.3.2 註冊:Void DelivererDenglu();註冊帳號,能夠經過手機或者郵箱進行註冊。
4.3.3 查看配送單:Void DelivererSelectOrder ();配送員能夠查看本身所需配送的訂單信息。
4.3.4 查看工資:Void SelectSalary();配送員能夠查看本身的工資。
5、代碼管理和開發流程
5.1 日期規劃表
5.2 代碼管理
- 版本控制系統Git,代碼託管採用Github倉庫,可採用可視化工具:桌面版Github。
- Branch分支:採用B/S架構,前端在browser分支開發,後端在server分支開發,先後端的成員均在本身的分支開發後融合(merge)到browser、server分支,而後講 browser、server分支融合到master分支。
5.3 開發流程
5.3.1 軟件團隊模式:
業餘劇團模式,每一個人挑選角色,開發過程當中發展爲功能團隊模式
5.3.2開發流程:
主體爲敏捷流程,但密度稍有下降,以周爲單位,必定程度上接近漸進交付的流程。
5.3.3 敏捷流程:
第一步:Product Backlog 肯定待實現的需求和待解決的問題(Backlog),產品負責人主導你們對於這個Backlog進行增/刪/改工做。考慮到並非職業的開發團隊,而是學生實踐項目,每一項工做的時間估計單位爲「周」。
第二步:Sprint Backlog 分解需求或者問題,分解爲以「周」爲單位的任務,由團隊成員認領任務。任務並非Master一人制定的,而是由團隊成員共同商討出方案。團隊成員能主導任務的估計和分配。
第三步:Sprint 團隊成員在單位時間(周)獨立開發,期間不受其它被更改的需求的干擾。但這種獨立並非絕對的,Master須要溝通全部成員的意見。須要注意的是必須保證團隊成員集中注意力開發。
以周爲單位的Scrum Meeting 中每一個成員彙報進度,不論是未解決的問題仍是新產生的問題,每一個成員均可以提出見解和解決思路。結合每週的工做量,用圖表展現整個項目的進度,有利於團隊成員調整節奏和進度。
第四步:獲得軟件的一個增量版本,結合代碼管理,此時能夠融合不一樣分支,根據現有的功能的實現構建新的版本,發佈,團隊成員使用結合測試,在此基礎上又進一步計劃增量的新功能和改進。
5.3.4 額外的說明
瀑布模型:最終產品直到最後才實現,前期須要詳細的設計,由於沒有專業的設計人員和管理人員,因此瀑布模型不適合本團隊。
漸進交付的流程:開發->發佈->聽取反饋->根據反饋作改進
敏捷流程:原則:變化的需求,屢次發佈,溝通。