4系統設計
4.1功能模塊設計
對本系統進行全面的系統功能的分析,可以得出基于Python《Python程序設計》課程智能問答系統的功能模塊圖,如圖4-1所示。
圖4-1 系統功能模塊圖
4.2數據庫設計
4.2.1數據庫設計原則
學習程序設計時,若想要深入理解數據庫管理系統或根據特定需求開發系統接口,首先需要構建一個數據庫管理系統模型以用于數據存儲。這一步驟至關重要,因為它能在應用編程過程中避免頻繁地將信息加載到操作系統頁面,從而提升整體系統的工作效率。數據庫管理系統作為管理信息系統的核心與基礎,存儲著大量數據。它不僅為管理信息系統的構建提供了諸如添加、刪除、修改和搜索等關鍵操作功能,還使得系統能夠快速定位并查詢所需數據,而無需直接深入程序代碼進行搜索。通過采用特定的方法將信息表的各個組成部分整合起來,數據庫管理系統能夠精確地組織、分類并構建出一個完善的信息管理體系。下面中各個實體關系的E-R圖:
用戶信息E-R如圖4-2所示:
圖4-2 用戶信息E-R圖
試題E-R如圖4-3所示:
圖4-3 試題E-R圖
考試記錄E-R如圖4-4所示:
圖4-4考試記錄E-R圖
交流論壇E-R如圖4-5所示:
圖4-5 交流論壇E-R圖
系統總體E-R圖如下圖4-6所
圖4-6系統總體E-R圖
4.2.3數據庫表設計
《Python程序設計》課程智能問答系統的數據是以數據表的形式存儲在MySQL數據庫中的,這些數據表是系統調取數據的基礎。在系統數據庫搭建過程中,我們會根據已經設計好的數據表進行優化構建。本系統選用了MySQL數據庫,并對各個數據表進行了詳盡的說明,具體如下:
表4-1:交流論壇
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 帖子標題 | ||
content | longtext | 4294967295 | 帖子內容 | ||
parentid | bigint | 父節點id | |||
userid | bigint | 用戶id | |||
username | varchar | 200 | 用戶名 | ||
avatarurl | longtext | 4294967295 | 頭像 | ||
isdone | varchar | 200 | 狀態 | ||
istop | int | 是否置頂 | 0 | ||
toptime | datetime | 置頂時間 | |||
typename | varchar | 200 | 分類名稱 | ||
cover | longtext | 4294967295 | 封面 | ||
isanon | int | 是否匿名(1:是,0:否) | 0 | ||
delflag | int | 是否刪除(1:是,0:否) | 0 |
表4-2:知識類型
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
zhishileixing | varchar | 200 | 知識類型 |
表4-3:考試記錄表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
userid | bigint | 用戶id | |||
username | varchar | 200 | 用戶名 | ||
paperid | bigint | 在線測試id(外鍵) | |||
papername | varchar | 200 | 在線測試名稱 | ||
questionid | bigint | 試題id(外鍵) | |||
questionname | varchar | 200 | 試題名稱 | ||
options | longtext | 4294967295 | 選項,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正確答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
ismark | bigint | 是否批卷 | 0 | ||
type | bigint | 試題類型,0:單選題 1:多選題 2:判斷題 3:填空題(暫不考慮多項填空) 4:主觀題 | 0 | ||
myscore | bigint | 試題得分 | 0 | ||
myanswer | varchar | 200 | 考生答案 |
表4-4:用戶
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 賬號 | ||
mima | varchar | 200 | 密碼 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性別 | ||
shoujihao | varchar | 200 | 手機號 | ||
touxiang | longtext | 4294967295 | 頭像 | ||
pquestion | varchar | 200 | 密保問題 | ||
panswer | varchar | 200 | 密保答案 |
表4-5:試題庫表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
questionname | varchar | 200 | 試題名稱 | ||
options | longtext | 4294967295 | 選項,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正確答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
type | bigint | 試題類型,0:單選題 1:多選題 2:判斷題 3:填空題(暫不考慮多項填空) 4:主觀題 | 0 | ||
sequence | bigint | 試題排序,值越大排越前面 | 100 |
表4-6:學習資料
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
ziliaomingcheng | varchar | 200 | 資料名稱 | ||
fengmian | longtext | 4294967295 | 封面 | ||
zhishileixing | varchar | 200 | 知識類型 | ||
jiaoxueshipin | longtext | 4294967295 | 教學視頻 | ||
ziliaowenjian | longtext | 4294967295 | 資料文件 | ||
xiangqingneirong | longtext | 4294967295 | 詳情內容 | ||
faburiqi | datetime | 發布日期 | |||
thumbsupnum | int | 贊 | 0 | ||
crazilynum | int | 踩 | 0 | ||
clicktime | datetime | 最近點擊時間 | |||
clicknum | int | 點擊次數 | 0 | ||
discussnum | int | 評論數 | 0 | ||
totalscore | double | 評分 | 0 | ||
storeupnum | int | 收藏數 | 0 |
表4-7:試題表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
paperid | bigint | 所屬在線測試id(外鍵) | |||
papername | varchar | 200 | 在線測試名稱 | ||
questionname | varchar | 200 | 試題名稱 | ||
options | longtext | 4294967295 | 選項,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正確答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
type | bigint | 試題類型,0:單選題 1:多選題 2:判斷題 3:填空題(暫不考慮多項填空)4:主觀題 | 0 | ||
sequence | bigint | 試題排序,值越大排越前面 | 100 |
表4-8:管理員表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
username | varchar | 100 | 用戶名 | ||
password | varchar | 100 | 密碼 | ||
image | varchar | 200 | 頭像 | ||
role | varchar | 100 | 角色 | 管理員 | |
addtime | timestamp | 新增時間 | CURRENT_TIMESTAMP |
表4-9:在線測試表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
name | varchar | 200 | 在線測試名稱 | ||
time | int | 考試時長(分鐘) | |||
status | int | 在線測試狀態 | 0 |
表4-10:系統簡介
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 標題 | ||
subtitle | varchar | 200 | 副標題 | ||
content | longtext | 4294967295 | 內容 | ||
picture1 | longtext | 4294967295 | 圖片1 | ||
picture2 | longtext | 4294967295 | 圖片2 | ||
picture3 | longtext | 4294967295 | 圖片3 |
表4-11:學習資料評論表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
refid | bigint | 關聯表id | |||
userid | bigint | 用戶id | |||
avatarurl | longtext | 4294967295 | 頭像 | ||
nickname | varchar | 200 | 用戶名 | ||
content | longtext | 4294967295 | 評論內容 | ||
score | double | 評分 | |||
reply | longtext | 4294967295 | 回復內容 | ||
thumbsupnum | int | 贊 | 0 | ||
crazilynum | int | 踩 | 0 | ||
istop | int | 置頂(1:置頂,0:非置頂) | 0 | ||
tuserids | longtext | 4294967295 | 贊用戶ids | ||
cuserids | longtext | 4294967295 | 踩用戶ids |
表4-12:收藏表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
userid | bigint | 用戶id | |||
refid | bigint | 商品id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 名稱 | ||
picture | longtext | 4294967295 | 圖片 | ||
type | varchar | 200 | 類型 | 1 | |
inteltype | varchar | 200 | 推薦類型 | ||
remark | varchar | 200 | 備注 |
表4-13:課程信息評論表
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
refid | bigint | 關聯表id | |||
userid | bigint | 用戶id | |||
avatarurl | longtext | 4294967295 | 頭像 | ||
nickname | varchar | 200 | 用戶名 | ||
content | longtext | 4294967295 | 評論內容 | ||
reply | longtext | 4294967295 | 回復內容 | ||
thumbsupnum | int | 贊 | 0 | ||
crazilynum | int | 踩 | 0 | ||
istop | int | 置頂(1:置頂,0:非置頂) | 0 | ||
tuserids | longtext | 4294967295 | 贊用戶ids | ||
cuserids | longtext | 4294967295 | 踩用戶ids |
表4-14:公告資訊分類
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
typename | varchar | 200 | 分類名稱 |
表4-15:配置文件
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
name | varchar | 100 | 配置參數名稱 | ||
value | varchar | 100 | 配置參數值 | ||
url | varchar | 500 | url |
表4-16:公告資訊
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 標題 | ||
introduction | longtext | 4294967295 | 簡介 | ||
typename | varchar | 200 | 分類名稱 | ||
name | varchar | 200 | 發布人 | ||
headportrait | longtext | 4294967295 | 頭像 | ||
clicknum | int | 點擊次數 | 0 | ||
clicktime | datetime | 最近點擊時間 | |||
thumbsupnum | int | 贊 | 0 | ||
crazilynum | int | 踩 | 0 | ||
storeupnum | int | 收藏數 | 0 | ||
picture | longtext | 4294967295 | 圖片 | ||
content | longtext | 4294967295 | 內容 |
表4-17:課程信息
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 課程名稱 | ||
fengmian | longtext | 4294967295 | 封面 | ||
kaikeshijian | datetime | 開課時間 | |||
shangkedidian | varchar | 200 | 上課地點 | ||
kechengneirong | longtext | 4294967295 | 課程內容 | ||
thumbsupnum | int | 贊 | 0 | ||
crazilynum | int | 踩 | 0 | ||
clicktime | datetime | 最近點擊時間 | |||
clicknum | int | 點擊次數 | 0 | ||
discussnum | int | 評論數 | 0 | ||
storeupnum | int | 收藏數 | 0 |
表4-18:智能問答
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
userid | bigint | 用戶id | |||
adminid | bigint | 管理員id | |||
ask | longtext | 4294967295 | 提問 | ||
reply | longtext | 4294967295 | 回復 | ||
isreply | int | 是否回復 | |||
isread | int | 已讀/未讀(1:已讀,0:未讀) | 0 | ||
uname | varchar | 200 | 用戶頭像 | ||
uimage | longtext | 4294967295 | 用戶名 | ||
type | int | 內容類型(1:文本,2:圖片,3:視頻,4:文件,5:表情) | 1 |
表4-19:交流論壇類型
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
typename | varchar | 200 | 分類名稱 |
表4-20:參課信息
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
baomingbianhao | varchar | 200 | 報名編號 | ||
kechengmingcheng | varchar | 200 | 課程名稱 | ||
fengmian | longtext | 4294967295 | 封面 | ||
kaikeshijian | varchar | 200 | 開課時間 | ||
shangkedidian | varchar | 200 | 上課地點 | ||
baomingshijian | datetime | 報名時間 | |||
zhanghao | varchar | 200 | 賬號 | ||
xingming | varchar | 200 | 姓名 | ||
sfsh | varchar | 200 | 是否審核 | 待審核 | |
shhf | longtext | 4294967295 | 審核回復 |
表4-21:交流論壇舉報
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
forumid | bigint | 論壇id | |||
title | varchar | 200 | 帖子標題 | ||
userid | bigint | 舉報用戶id | |||
username | varchar | 200 | 舉報用戶名 | ||
reporteduserid | bigint | 被舉報用戶id | |||
reportedusername | varchar | 200 | 被舉報用戶名 | ||
reason | longtext | 4294967295 | 舉報原因 | ||
picture | longtext | 4294967295 | 圖片補充 | ||
handleadvise | longtext | 4294967295 | 處理建議 | ||
status | varchar | 200 | 狀態 | 處理中 | |
reporttype | varchar | 200 | 舉報類型 | 主題帖舉報 |
表4-22:關于我們
字段名稱 | 類型 | 長度 | 字段說明 | 主鍵 | 默認值 |
---|---|---|---|---|---|
id | bigint | 主鍵 | 主鍵 | ||
addtime | timestamp | 創建時間 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 標題 | ||
subtitle | varchar | 200 | 副標題 | ||
content | longtext | 4294967295 | 內容 | ||
picture1 | longtext | 4294967295 | 圖片1 | ||
picture2 | longtext | 4294967295 | 圖片2 | ||
picture3 | longtext | 4294967295 | 圖片3 |
5系統實現
《Python程序設計》課程智能問答系統的開發流程中,在系統分析和系統設計等關鍵階段完成后,隨即進入系統實施階段。此階段的核心任務是實現管理員和用戶的功能需求,并通過實踐過程不斷對代碼和邏輯進行優化與調整。由于該模塊是直接面向用戶的,因此,它不僅要確保功能的全面與完善,還需注重頁面設計的美觀性,以提供良好的用戶體驗。
5.1 前臺用戶功能模塊
當訪客瀏覽至系統的網址時,首先映入眼簾的便是首頁界面。在這個頁面上,訪客可以清晰地看到《Python程序設計》課程智能問答系統的導航欄,其中包括首頁、學習資料、交流論壇、在線測試、公告資訊、智能問答、個人中心等多個板塊。系統首頁界面如圖5-1所示:
?
圖5-1系統首頁界面
在注冊流程中,用戶在Vue前端填寫必要信息(如用戶名、密碼等)并提交。前端將這些信息通過HTTP請求發送到Python后端。后端處理這些信息,檢查用戶名是否唯一,并將新用戶數據存入MySQL數據庫。完成后,后端向前端發送注冊成功的確認,前端隨后通知用戶完成注冊。這個過程實現了新用戶的數據收集、驗證和存儲。如圖5-2所示。
?
圖5-2用戶注冊界面圖
在登錄流程中,用戶首先在Vue前端界面輸入用戶名和密碼。這些信息通過HTTP請求發送到Python后端。后端接收請求,通過與MySQL數據庫交互驗證用戶憑證。如果認證成功,后端會返回給前端,允許用戶訪問系統。這個過程涵蓋了從用戶輸入到系統驗證和響應的全過程。如圖5-3所示。
?
圖5-3用戶登錄界面圖
用戶點擊以學習資料頁面,隨后在該頁面的搜索框中輸入資料名稱等關鍵詞進行查詢,查詢結果展示后,用戶可以查看學習資料的詳細信息,包括資料名稱、封面、知識類型、教學視頻、資料文件、發布日期等;如圖5-4所示。
?
圖5-4學習資料界面圖
用戶點擊公告資訊;在公告資訊頁面的搜索欄輸入標題等信息,進行查詢,然后還可以查看公告等信息;如圖5-5所示。
?
圖5-5公告資訊界面圖
用戶點擊個人中心,在個人中心頁面填寫詳細信息,進行更新信息操作,還可以對修改密碼、我的發布、考試記錄、錯題本、我的收藏等進行詳情操作,如圖5-6所示。
?
圖5-6個人中心界面圖
5.2 后臺管理員功能模塊
管理員需通過登錄頁面,輸入其賬號和密碼等認證信息,以完成登錄操作,如圖5-7所示。
?
圖5-7管理員登錄界面圖
管理員成功登錄《Python程序設計》課程智能問答系統后,可以訪問首頁、用戶、知識類型、學習資料、交流論壇、試題庫管理、試題管理、在線測試管理、論壇分類、系統管理、考試管理、個人中心等多個功能模塊進行細致的操作與管理,如圖5-8所示。
?
圖5-8管理員功能界面圖
用戶信息管理功能實現是在Django后端部分,您需要創建一個新的應用,然后在該應用下創建一個模型(models.py)來定義用戶信息的數據結構,使用Django的ORM來處理與MySQL數據庫的交互,包括用戶信息的增刪改查等操作。接著,在views.py中編寫視圖邏輯來處理前端請求,使用Django的URL路由(urls.py)將請求映射到相應的視圖函數。對于數據的驗證和序列化,可以使用Django的表單或序列化器來實現。在前端Vue.js部分,將創建相應的Vue組件,在這些組件中使用axios或其他HTTP庫與Django后端的API進行交互,實現用戶信息的展示、添加用戶、編輯用戶信息和刪除用戶等功能。狀態管理可以通過Vuex來維護,比如在store目錄下定義用戶模塊的狀態、突變、動作和獲取器。如圖5-10所示。
?
圖5-10用戶管理界面圖
管理員選擇進入知識類型管理頁面后,可以執行對知識類型信息的查詢、新增知識類型以及刪除現有知識類型等操作,以便對知識類型進行高效管理;如圖5-11所示。
?
圖5-11知識類型管理界面圖
學習資料管理功能實現是在Django后端部分,您需要創建一個新的應用,然后在該應用下創建一個模型(models.py)來定義學習資料管理的數據結構,使用Django的ORM來處理與MySQL數據庫的交互,包括學習資料管理的增刪改查等操作。接著,在views.py中編寫視圖邏輯來處理前端請求,使用Django的URL路由(urls.py)將請求映射到相應的視圖函數。對于數據的驗證和序列化,可以使用Django的表單或序列化器來實現。在前端Vue.js部分,將創建相應的Vue組件,在這些組件中使用axios或其他HTTP庫與Django后端的API進行交互,實現學習資料的展示、添加學習資料、編輯學習資料管理和刪除學習資料管理等功能。狀態管理可以通過Vuex來維護,比如在store目錄下定義學習資料管理的狀態、突變、動作和獲取器。如圖5-12所示。
?
圖5-12學習資料管理管理界面圖
管理員點擊交流論壇管理后,會進入相關管理頁面。在這個頁面上,管理員可以根據帖子標題、分類名稱等信息,對交流論壇中的交流論壇進行查詢、添加或刪除等操作。這些功能如圖如圖5-13所示。
?
圖5-13交流論壇管理界面圖
管理員點擊試題庫功能后,會進入試題庫管理頁面。在這個頁面上,管理員可以根據試題等信息,對試題庫上的留言進行搜索或刪除等操作,如圖5-14所示。
?
圖5-14試題庫界面圖
管理員點擊試題管理功能后,會進入試題管理頁面。在這個頁面上,管理員能夠依據在線測試、試題等多項信息,對試題進行精確的查詢或執行刪除等操作,以確保試題管理的準確性和高效性;如圖5-15所示。
?
圖5-15試題管理界面圖