前端: The Do,柚子,-T.c_
後端:Dinghow,Midori,『 ’
「叮咚」-線上書評及購書系統是一個可以提供使用者購書、評書的平台,使用者可以在這個平台上查詢各類圖書的信息,查看他人對圖書的評價並進行互動,同時可以對心意的圖書進行新增收藏夾、購物車、購買等操作,系統的具體功能點及對應的需求見下。
建立一個新用戶,初始化基本訊息,包括用戶名密碼等。
用戶依據已註冊的帳號密碼登入。
用戶可修改基本訊息,同時也包含收貨地址的管理等。
使用者可輸入關鍵字進行搜索,或依照圖書的類別進行搜索,並顯示搜尋結果。
使用者可在圖書資訊頁面查看圖書的具體信息,包括簡介、評價、評分等。
用戶可查看已新增至收藏夾內的圖書。
使用者可移除已新增至收藏夾內的圖書。
完成訂單後的使用者可以對相應書籍作出評分評價。
使用者可在圖書資訊頁面查看其它購買過此書的人對其的評價。
使用者可在圖書頁面和首頁將圖書加入購物車。
用戶可查看當前購物車信息,包括已加入購物車的圖書及價格,總購物車的價格等。
用戶可將已加入購物車內的圖書移入收藏夾刪除或修改數量等操作。
用戶結算購物車後可以提交並保存此購物的訂單資訊。
用戶可在個人中心查看已簽收和未簽收的訂單資訊。
對於已完成的訂單,用戶可對其進行刪除。
管理員可依照管理員帳號與密碼登入後台管理頁面。
管理員可以搜尋指定用戶,並展示結果。
管理員可以封禁指定用戶,並將其帳號從資料庫中刪除。
管理員可以新增圖書、刪除現有圖書或修改現有圖書的相關資訊。
首頁的「新書上架」可以動態展示圖書上架時間最近的5本書。
首頁的「熱門推薦」可以動態展示用戶評分最高的5本書。
首頁的「為您推薦」可以靜態展示由網站管理員推薦的10本書。
Windows、Mac OS,瀏覽器推薦Chrome或IE 8以上版本
資訊資料儲存在伺服器端的資料庫中,各用戶在規定的權限下在其客戶端進行訪問,同時實現資訊共享。
後台資料不可隨意進行更改,同時應具有保密性,不可洩露用戶私人資訊。
使用者有規定的存取權限,不可進入管理員頁面。
對於使用者輸入的資料資訊透過正規校驗等方式進行限制,包括資料類型以及取值範圍等,及時攔截不正確資訊的傳遞。
對資料庫中的表格新增主碼約束、外碼約束、一致性約束,並透過設定級聯操作等來實現和保護資料庫資料一致性、完整性。
介面整潔友好,使用者操作方便,可快速上手存取所需資訊。
2.1 登入註冊功能
2.1.1登入註冊功能設計
用戶在註冊時需填寫部分個人訊息,包括個人使用者名稱、密碼及個人信箱。再註冊。系統在使用者註冊成功後會返回登入頁面,然後使用者可以根據自己的使用者名稱和密碼作為驗證資訊進行登入。未登入的使用者可以查看首頁信息,並進行搜尋操作,但無法進行任何個人操作。
動作序列 | 描述 |
---|---|
註冊 | 用戶輸入使用者名稱、密碼、確認密碼、個人信箱資訊後可完成個人註冊註冊操作,以上輸入資訊為必填選項,且需符合規範要求。 |
註冊成功 | 註冊成功後系統會返回登入頁面允許使用者進行登入操作或取消登入並返回首頁。 |
註冊失敗 | 註冊失敗後所有輸入框的資訊清空,不進行任何操作。 |
登入 | 使用者透過輸入使用者名稱及密碼可以進行登入操作,輸入框資訊為必填選項。 |
登入成功 | 系統登入成功後會跳到首頁,使用者狀態為登入狀態,可進行全部使用者操作。 |
登入失敗 | 系統在登入失敗後會清除所有輸入框的信息,並且不進行任何操作。 |
取消登入 | 使用者點擊取消登入後,頁面跳轉至初始首頁。 |
2.1.2 登入註冊功能實現
圖2.1 用戶登入
圖2.2 用戶註冊
圖2.3 頂部欄-登陸後
2.2 修改個人訊息
2.2.1 修改個人資訊功能設計
使用者可在個人資訊頁面進行修改個人資訊的操作,包括修改姓名、性別、個人信箱、密碼。
動作序列 | 描述 |
---|---|
進入個人頁面 | 使用者在登入狀態下可以透過頁面上方的「個人中心」進入個人資訊頁面。 |
修改個人資訊 | 此動作包括修改個人姓名、性別及郵箱,在用戶對三項信息進行修改之後可以點擊「確認修改」按鍵來保存修改的信息,三項信息為必填選項,否則無法修改。 |
修改密碼 | 用戶需輸入舊密碼及新密碼來進行密碼修改。 |
2.2.2 修改個人資訊功能實現
圖2.4 修改個人訊息
2.3 地址管理
2.3.1 地址管理功能設計
使用者可在個人中心頁面進入地址管理頁面,對自己的收貨地址進行管理。
動作序列 | 描述 |
---|---|
進入地址管理 | 使用者可在登入狀態下透過個人中心頁面進入地址管理頁面。 |
新增地址 | 用戶點擊「新增地址」後可在彈出視窗內填寫新地址信息,包括省、市、區、詳細地址、姓名、郵編、電話號碼。以上資訊為必填選項。 |
刪除地址 | 使用者點選「管理」按鍵進入選擇操作,之後可點選地址框進行選擇或選擇全選,選擇完成後點選刪除以刪除地址。 |
2.3.2 位址管理功能實現
圖2.5 管理個人地址
圖2.6 新增地址
3.1 搜尋圖書
3.1.1 搜尋圖書功能設計
使用者可在搜尋框內輸入關鍵字或點選分類來進行搜尋操作,結果在搜尋頁面顯示,同時使用者可點選圖書進入對應的詳情頁面。
動作序列 | 描述 |
---|---|
進入搜尋 | 使用者可在搜尋框內輸入關鍵字或點擊分類來進行搜索,之後搜尋結過跳轉至搜尋頁面。 |
看圖書詳情 | 使用者可點選搜尋結果中的圖書來跳轉至圖書詳情頁面,查看圖書詳情及其他使用者對圖書的評論。 |
3.1.2 搜尋圖書功能實現
圖3.1 搜尋圖書
圖3.2 圖書詳情
3.2 收藏夾
3.2.1 收藏夾功能設計
使用者可在圖書詳情頁面及首頁將心儀的圖書加入收藏夾。使用者可透過首頁進入個人收藏夾,進行管理操作。
動作序列 | 描述 |
---|---|
新增收藏 | 使用者在圖書詳情頁點選「加入收藏夾」或在首頁對應的圖書上方點選「收藏」可將圖書加入收藏夾。 |
進入收藏夾 | 使用者透過首頁上方「我的叮咚」中的「我的收藏」可進入收藏頁面。 |
切換查看模式 | 使用者可點選收藏夾頁面左上角的「縮寫形式」和「詳情形式」切換不同的檢視模式。 |
刪除藏書 | 使用者點選「管理」按鍵進入選擇操作,之後可點選圖書框選擇或選擇全選,選擇完成後點選刪除以刪除藏書。 |
3.2.2 收藏夾功能實現
圖3.3 收藏夾-縮略
圖3.4 收藏-詳細
圖3.5 管理收藏夾
3.3 圖書評論
3.3.1 圖書評論功能設計
用戶在訂單完成後,在訂單簽收頁面可對購買後的書籍進行評價並評分。此外用戶可在詳情頁查看圖書評價。
動作序列 | 描述 |
---|---|
進入訂單 | 使用者可透過首頁「我的叮咚」進入訂單頁面,切換至「已簽收」可對書籍進行評價。 |
評價圖書 | 用戶可在已簽收圖書訂單中點擊“評價”,並在彈出視窗中點擊星星進行評分,在輸入框中輸入對該書的評價,為必填選項,擊“提交”提交評論。 |
3.3.2 圖書評論功能實現
圖3.6 圖書評論
4.1 購物車
4.1.1 購物車功能設計
使用者可在圖書詳情頁面及首頁將心儀的圖書加入購物車。用戶可透過首頁進入“我的購物車”,進行管理操作。
動作序列 | 描述 |
---|---|
新增購物車 | 使用者在圖書詳情頁面點選「加入購物車」或在首頁對應的圖書上方點選「加入購物」可將圖書加入個人購物車。 |
進入購物車 | 用戶透過首頁「購物車」可進入個人購物車頁面。 |
修改數量 | 用戶可在對應書籍的數量一欄點擊加號或減號對購物車圖書的數量進行修改,購物車總金額也會隨之自動修改。 |
移入收藏夾 | 用戶可點選對應書籍後的「移入收藏夾」來將該書放入收藏夾中。 |
刪除 | 使用者可點選對應圖書後的「刪除」或自行勾選圖書來大量刪除購物車的內容。 |
結算 | 使用者點擊「結算」按鈕跳轉至訂單模組進行結算。 |
4.1.2 購物車功能實現
圖4.1 購物車管理
4.2 訂單
4.2.1 訂單功能設計
用戶在結算購物車後購物車後進入訂單頁面,在此頁面確認相關信息,包括送貨地址的選擇以及訂單內容的確認。
動作序列 | 描述 |
---|---|
進入訂單 | 用戶在確認購物車結算內容後可點選「結算」進入訂單頁面。 |
地址選擇 | 用戶可以點擊現有的個人地址的地址框進行此訂單的的收貨地址選擇,或者點擊“使用新地址”,在彈出框中填入此訂單收貨地址的資訊。 |
返回購物車 | 用戶可點擊頁面下方的“返回購物車”,終止交易。 |
提交訂單 | 使用者可點選「提交訂單」按鍵提交訂單,跳至回饋頁面。 |
4.2.2 訂單功能實現
圖4.2 訂單管理-未簽收
圖4.3 訂單管理-已簽收
圖4.4 確認訂單
圖4.5 確認訂單時使用新地址
4.3 訂單管理
4.3.1 訂單管理功能設計
用戶確認訂單後可以透過用戶的「我的訂單」進入訂單管理頁面,在此頁面確認相關信息,包括訂單號,書目種類,書本數量,書本簡介等。
動作序列 | 描述 |
---|---|
進入訂單管理 | 使用者在主頁面後可點選「我的訂單」進入訂單管理頁面。 |
查看訂單資訊 | 用戶可以確認訂單的詳細信息,包括訂單號、包含的書目種類、書本數量、訂單總價、書本簡介等。 |
確認收貨 | 用戶可點選「確認收貨」按鍵,將未收貨的訂單改為已收貨的訂單。 |
刪除訂單 | 使用者可點選「刪除訂單」按鍵刪除該使用者欲刪除的已簽收訂單。 |
評論圖書 | 使用者可點選「評論」按鍵,對訂單中的單一種類的書進行評價。 |
4.3.2 訂單管理功能實現
如圖,使用者在主頁面點選「我的訂單」進入訂單管理頁面。
如圖,用戶可以在我的訂單頁面看到該用戶的訂單詳情。
如圖,用戶可以將未收貨的訂單改為已簽收的訂單。
如圖,用戶可以刪除欲刪除的已簽收訂單。
如圖,使用者可以對已簽收訂單的其中一本書進行評估。
5.1 登入
5.1.1 登入功能設計
管理員可透過頁面最下方的管理員登入接口,進入管理員登入模式,登入成功後可進行全部的管理員操作。
動作序列 | 描述 |
---|---|
進入登入介面 | 管理員在點擊頁面最下方的「管理員登入」後可跳轉至登入介面。 |
登入 | 管理員透過輸入使用者名稱及密碼可以進行登入操作,輸入框資訊為必填選項。 |
登入成功 | 系統登入成功後會出現管理員操作頁面,可以進行全部管理員操作。 |
登入失敗 | 系統在登入失敗後會清除所有輸入框的信息,並且不進行任何操作。 |
取消登入 | 管理員點選取消登入後,頁面跳轉至初始首頁。 |
5.1.2 登入功能實現
圖5.1 首頁管理員入口
圖5.2 管理者登陸
5.2 管理員操作
5.2.1 管理員操作功能設計
管理員登入成功後,可以在管理員頁面進行管理員操作,包括使用者管理和圖書館管理。
動作序列 | 描述 |
---|---|
進入管理員頁面 | 管理員登入成功後會跳轉至管理員頁面, |
使用者管理 | 管理員點選「用戶管理」後可輸入關鍵字搜尋用戶,搜尋得到的用戶會顯示在搜尋框下方。管理員可點選刪除來封鎖對應的使用者。 |
新增圖書 | 管理員點擊「新增圖書」後可透過輸入對應資訊來新增圖書,包括書籍名稱、ISBN、作者、類別、出版社、出版時間、價格、封面和簡介,以上資訊為必填選項。 |
修改圖書訊息 | 管理員點選「修改圖書資訊」後可輸入關鍵字搜尋圖書,搜尋得到的圖書會顯示在搜尋框下方。管理員可點選「刪除圖書」下架對應的圖書。另外可點選“修改圖書資訊”,在彈窗中來修改對應圖書的資訊。 |
5.2.2 管理員操作功能實現
圖5.3 管理員搜尋並管理用戶
圖5.4 管理員搜尋並修改圖書信息
圖5.5 管理員新增圖書
6.1 資料庫關係圖
6.2 總體ER圖
6.3 使用者模組ER圖
6.4 書籍模組ER圖
6.5 訂單模組ER圖
6.6 評論模組ER圖
7.1 user表
表格7-1 user表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
ID | number | 使用者ID | PK | |
name | varchar | 20 | 用戶姓名 | |
authority | varchar | 20 | 權限 | |
account | varchar | 20 | 帳號 | |
password | varchar | 20 | 密碼 | 表中儲存的是實際密碼的md5值 |
gender | varchar | 10 | 性別 | |
varchar | 40 | 信箱 |
7.2 address表
表格7-2 address表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
ID | number | 38 | 地址ID | PK |
name | varchar | 20 | 收貨人姓名 | |
phone | varchar | 20 | 電話 | |
country | varchar | 20 | 國家 | |
province | varchar | 20 | 省份 | |
city | varchar | 20 | 城市 | |
district | varchar | 20 | 區 | |
post_code | number | 10 | 郵編 | |
user_id | number | 使用者ID | ||
location | varchar | 100 | 具體地址 |
7.3 live表
表格7-3 live表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
user_ID | number | 使用者ID | PK,FK,參考user的ID | |
address_ID | number | 38 | 地址ID | PK,FK,參考address的ID |
7.4 book表
表格7-4 book表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
ID | number | 38 | 圖書ID | PK |
ISBN | varchar | 20 | 圖書ISBN | |
name | varchar | 30 | 圖書名 | |
price | number | 價格 | ||
image | varchar | 40 | 圖片路徑 | |
category | varchar | 20 | 圖書分類 | |
publisher | varchar | 100 | 出版社 | |
Publish_time | varchar | 20 | 出版時間 | |
abstract | varchar | 400 | 摘要 |
7.5 author表
表格7-5 author表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
ID | number | 作者ID | PK | |
name | varchar | 20 | 姓名 |
7.6 write表
表格7-6 write表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
author_ID | number | 作者ID | PK,FK,參考author的ID | |
book_ID | number | 圖書ID | PK,FK,參考book的ID |
7.7 category表
表格7-7 category表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
ID | number | 分類ID | PK | |
name | varchar | 20 | 名稱 |
7.8 belong表
表格7-8 belong表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
book_ID | number | 圖書ID | PK,FK,參考book的ID | |
category_ID | number | 分類ID | PK.FK,參考category的ID |
7.9 orders表
表格7-9 orders表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
ID | number | 訂單ID | PK | |
user_ID | number | 購買人ID | FK,參考user的ID | |
address_ID | number | 地址ID | FK,參考address的ID | |
quantity | number | 圖書總數 | ||
price | number | 圖書總價 | ||
remark | varchar | 100 | 備註 | |
time_start | varchar | 20 | 下單時間 | |
time_get | varchar | 20 | 收貨時間 | |
status | varchar | 20 | 訂單狀態 | 到貨或未到貨 |
post_cost | number | 快遞費用 |
7.10 order_include表
表格7-10 order_include表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
order_ID | number | 訂單ID | PK,FK,參照order的ID | |
book_ID | number | 圖書ID | PK,FK,參考book的ID | |
quantity | number | 該圖書數量 | ||
price | number | 這本圖書總價 |
7.11 favorite表
表格7-11 favorite表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
user_ID | number | 使用者ID | PK,FK,參考user的ID | |
book_ID | number | 圖書ID | PK,FK,參考book的ID |
7.12 cart表
表格7-12 cart表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
user_ID | number | 使用者ID | PK,FK,參考user的ID | |
quantity | number | 購物車中圖書總數量 | ||
time_start | varchar | 20 | 加入購物車的時間 | |
post_cost | number | 快遞費用 | ||
total_price | number | 總費用 |
7.13 cart_include表
表格7-13 cart_include表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
user_ID | number | 使用者ID | PK,FK,參考user的ID | |
book_ID | number | 圖書ID | PK.FK,參考book的ID | |
quantity | number | 這本圖書總數量 | ||
total_price | number | 這本圖書的總價格 |
7.14 comments表
表格7-14 comments表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
ID | number | 評論ID | PK | |
user_ID | number | 使用者ID | FK,參考user的ID | |
book_ID | number | 圖書ID | FK,參考了book的ID | |
title | varchar | 100 | 評論標題 | |
content | varchar | 2000 | 評論內容 | |
time | varchar | 20 | 評論時間 | |
score | number | 評分 | ||
total_like | varchar | 20 | 總同意數 | |
total_dislike | varchar | 20 | 總反對數 | |
total | number | 38 | 總贊同數與總反對數之差 |
7.15 comment_feedback表
表格7-15 comment_feedback表
欄位名 | 資料類型 | 長度 | 說明 | 備註 |
---|---|---|---|---|
user_ID | number | 使用者ID | PK,FK,參考了user的ID | |
comment_ID | number | 評論ID | PK,FK,參照了comment的ID | |
attitude | varchar | 20 | 對於該評價的態度 | |
time | varchar | 20 | 評價時間 |
此類別代表EF結構中的實體類,對應伺服器上的資料庫,其中每一個DBSet<>類型的成員變數對應資料庫中的關係實例,可以對其進行get和set的操作。
成員變數:
public virtual DbSet < ADDRESS > ADDRESS { get ; set ; }
public virtual DbSet < AUTHOR > AUTHOR { get ; set ; }
public virtual DbSet < BOOK > BOOK { get ; set ; }
public virtual DbSet < CART > CART { get ; set ; }
public virtual DbSet < CART_INCLUDE > CART_INCLUDE { get ; set ; }
public virtual DbSet < CATEGORY > CATEGORY { get ; set ; }
public virtual DbSet < COMMENT_FEEDBACK > COMMENT_FEEDBACK { get ; set ; }
public virtual DbSet < COMMENTS > COMMENTS { get ; set ; }
public virtual DbSet < ORDER_INCLUDE > ORDER_INCLUDE { get ; set ; }
public virtual DbSet < ORDERS > ORDERS { get ; set ; }
public virtual DbSet < USERS > USERS { get ; set ; }
public virtual DbSet < WRITE > WRITE { get ; set ; }
public virtual DbSet < CARTLIST > CARTLIST { get ; set ; }
public virtual DbSet < PURCHASE > PURCHASE { get ; set ; }
public virtual DbSet < ZUOZHE > ZUOZHE { get ; set ; }
這種類型的類別對應資料庫中的關係模式,其成員變數為關係模式中的所有屬性和其get和set方法,以及其主碼被其他關係引用外碼約束的記錄和對應的get與set方法。
其中幾個較為重要的類別的成員變數如下:
public decimal ID { get ; set ; } public string ISBN { get ; set ; } public string NAME { get ; set ; } public Nullable < decimal > PRICE { get ; set ; } public string IMAGE { get ; set ; } public string CATEGORY { get ; set ; } public string PUBLISHER { get ; set ; } public string PUBLISHTIME { get ; set ; } public string ABSTRACT { get ; set ; } //BOOK关系的属性 [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < CART_INCLUDE > CART_INCLUDE { get ; set ; } //其主码被CART_INCLUDE所引用为外码约束,下面类似 [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < COMMENTS > COMMENTS { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( " Microsoft . Usage " , "CA2227 : CollectionPropertiesShouldBeReadOnly " ) ] public virtual ICollection < ORDER_INCLUDE > ORDER_INCLUDE { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < WRITE > WRITE { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < CATEGORY > CATEGORY1 { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < USERS > USERS { get ; set ; }
public decimal ID { get ; set ; } 、 public string NAME { get ; set ; } public string GENDER { get ; set ; } public string EMAIL { get ; set ; } public string PASSWORD { get ; set ; } public string ACCOUNT { get ; set ; } public string AUTHORITY { get ; set ; } //USERS关系的属性 [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < ADDRESS > ADDRESS { get ; set ; } //其主码被ADDRESS引用,下面类似 public virtual CART CART { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( " Microsoft . Usage " , "CA2227 : CollectionPropertiesShouldBeReadOnly " ) ] public virtual ICollection < CART_INCLUDE > CART_INCLUDE { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < COMMENT_FEEDBACK > COMMENT_FEEDBACK { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < COMMENTS > COMMENTS { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < ORDERS > ORDERS { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < BOOK > BOOK { get ; set ; } [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Usage" , "CA2227:CollectionPropertiesShouldBeReadOnly" ) ] public virtual ICollection < ADDRESS > ADDRESS1 { get ; set ; }
public decimal USER_ID { get ; set ; }
public Nullable < decimal > QUANTITY { get ; set ; }
public string TIME_START { get ; set ; }
public Nullable < decimal > POST_COST { get ; set ; }
public Nullable < decimal > TOTAL_PRICE { get ; set ; } //CART关系的属性
public decimal USER_ID { get ; set ; }
public decimal BOOK_ID { get ; set ; }
public Nullable < decimal > QUANTITY { get ; set ; }
public Nullable < decimal > TOTAL_PRICE { get ; set ; } //CART_INCLUDED关系的属性
為了進行查詢的方便(例如查詢購物車和訂單中圖書的詳細信息,對應作者與圖書),我們在數據庫中建立了一些視圖,這些視圖也在Models中有相對應的類,如下:
根據CART_INCLUDE關係和BOOK關係生成,可以知道購物車中書籍的資訊和購買狀況:
public decimal USER_ID { get ; set ; }
public decimal BOOK_ID { get ; set ; }
public string NAME { get ; set ; }
public Nullable < decimal > PRICE { get ; set ; }
public string IMAGE { get ; set ; }
public Nullable < decimal > QUANTITY { get ; set ; }
public Nullable < decimal > TOTAL_PRICE { get ; set ; }
根據AUTHOR關係,WRTIE關係和BOOK關係生成,將圖書資訊和作者資訊根據寫入聯繫對應起來:
public string AUTHOR_NAME { get ; set ; }
public decimal BOOK_ID { get ; set ; }
public decimal AUTHOR_ID { get ; set ; }
根據ORDER_INCLUDE關係,BOOK關係生成,可以知道訂單中書籍的資訊和購買狀況:
public decimal ORDER_ID { get ; set ; }
public string NAME { get ; set ; }
public Nullable < decimal > PRICE { get ; set ; }
public string IMAGE { get ; set ; }
public Nullable < decimal > QUANTITY { get ; set ; }
public Nullable < decimal > TOTAL_PRICE { get ; set ; }
public string ABSTRACT { get ; set ; }
public string PUBLISHER { get ; set ; }
public string AUTHOR_NAME { get ; set ; }
public decimal ID { get ; set ; }
public decimal AUTHOR_ID { get ; set ; }
Controllers類別為控制器中的類,用於返回視圖展示頁面,回應頁面上進行的操作請求,其中重點問題是要完成控制器和視圖之間的資料傳遞。從控制器傳遞至視圖主要採用Razor引擎和ViewBag;從視圖傳遞至控制器使用了HtmlHelpers、Session和AJAX。
主要包含圖書詳情頁面的展示和回應對圖書進行加入購物車請求的方法,成員函數如下:
public ActionResult Index ( int ID ) //读取图书详情页面所需的所有数据,并返回视图进行展示,参数为图书ID
public ActionResult addCart ( cartSender cs ) //将该图书添加至用户购物车中,通过重定位刷新原页面,如果没有用户登录则不进行操作并跳转至登录页面,参数为利用HTTPPOST从视图传递数据的model
public int directAddCart ( int bookId ) //在首页将点击的图书添加至用户购物车,成功返回0,无用户登录则返回-1,参数为图书ID
主要包含收藏夾頁面的展示和回應改變收藏夾請求的方法,該控制器的所有操作的成功執行都是需要在有使用者登入的情況下,成員函數如下:
public ActionResult Index ( int ID ) //读取收藏夹页面所需的所有数据,并返回视图进行展示,在没有用户登录的情况下不进行操作并跳转至登录页面,参数为用户ID
public ActionResult addFav ( int ID ) //在图书详情页面将图书加入收藏夹,通过重定位刷新原页面,如果没有用户登录则不进行操作并跳转至登录页面,参数为图书ID
public int directAddFav ( int bookId ) //在首页将点击的图书添加至收藏夹,成功返回0,无用户登录则返回-1,参数为图书ID
public void DeleteFav ( int [ ] bookIds ) //将所有选中的图书移除收藏夹,参数为选中的图书的ID
主要包含購物車頁面的展示和對其頁面上所有操作請求回應的方法,該控制器的所有操作的成功執行都是需要在有使用者登入的情況下,成員函數如下:
public ActionResult Index ( int ID ) //读取购物车页面所需的所有数据,并返回视图进行展示,在没有用户登录的情况下不进行操作并跳转至登录页面,参数为用户ID
public void RemoveBook ( int bookId ) //将购物车中的某个图书项目移出购物车,参数为图书ID
public void AddFav ( int bookId ) //将购物车中的某个图书移入收藏并移出购物车,参数为图书ID
public void EditAmount ( int bookId , int bookAmount ) //通过购物车页面的加减按钮改变购物车中某一图书的数量,参数为用户ID和改变后的数量
public ActionResult AddAddress ( ADDRESS aDDRESS ) //响应购物车页面上方地址栏的添加新地址请求,参数为通过HTTPPOST传递的参数model
主要包含訂單管理頁面與訂單填寫和完成頁面的展示以及對這些頁面上所有操作請求響應的方法,該控制器的所有操作都是需要在使用者登入的情況下,成員函數如下:
public ActionResult Index ( int ID ) //读取订单管理页面所需的所有数据,并返回视图进行展示,在没有用户登录的情况下不进行操作并跳转至登录页面,参数为用户ID
public void StatusChange ( int orderId ) //在订单管理页面确认收货,参数为订单ID
public void DeleteOrder ( int orderId ) //删除已经签收的订单,参数为订单ID
public void SetComment ( int bookId , int grade , string content ) //对已经签收的图书进行评论,参数为图书ID,分数和评论内容
public int GetOrder ( int [ ] bookIds ) //将购物车中勾选的书目添加至session,返回用户ID
public ActionResult Process_CART ( int ID ) //读取购物车结算时的购买情况,据此返回一个显示订单填写页面,参数为用户ID
public void check ( int addrId ) //根据选择的地址和购买情况生成订单,参数为地址ID
public ActionResult Order_Complete ( ) //显示订单填写成功的页面
主要包含管理員頁面的展示和回應頁面上所有操作請求的方法,該控制器的所有操作都是需要在管理員登入的情況下,主要成員函數如下:
public ActionResult Index ( string search_book , string search_user ) //返回管理员操作页面,参数为搜索的图书或用户的字符串
public ActionResult Login ( ) //返回管理员登录页面
public ActionResult Login ( LoginSender msg ) //管理员登录的验证,参数为利用HTTPPOST传递参数的model
public void deleteUser ( int ID ) //删除用户,参数为用户ID
public void deleteBook ( int ID ) //删除书籍,参数为图书ID
public void adjustBook ( int ID , string name , string ISBN , string writer , string category , string publisher , string time , string image , string intro ) //修改书籍