項目 GitHub 倉庫
項目需求
系統建模
活動圖
普通用戶注冊后通過前台頁面登錄,進行瀏覽、查詢、借書、還書等操作。
圖書館管理員通過后台管理界面登錄,可直接對數據庫進行增刪改查操作。
用例圖
-
首頁
用戶可以選擇登錄或注冊。
-
個人中心
用戶可以瀏覽借閱列表,對列表中的書籍進行還書操作。如果逾期,則還需要繳納罰金。
-
借書頁面
用戶首先通過輸入關鍵字查詢相關書籍,然后對返回列表中的書籍進行借書操作。
-
后台管理
管理員登錄后台后可以查看數據庫和日志信息,必要時進行增刪改查操作。
類圖
在 Django 框架下,所有數據庫表模型均繼承於 Model
類,所有視圖邏輯均繼承於 View
類。控制器與用戶進行交互,並提供模型數據至視圖,實現數據與邏輯的解耦。
模型 | 描述 |
---|---|
User | 用戶表,保存所有的用戶信息,包括用戶名、姓名、密碼(摘要)字段,與 Book 存在多對多關系。 |
Book | 書目表,保存所有的書籍信息,包括書號、書名、作者、出版社、是否可借字段。 |
Borrow | 借閱關系表,保存所有的借閱信息,包括序號、借閱者、所借書籍、借出時間、歸還期限字段,其中借閱者和所借書籍分別是參照 User 和 Book 的外鍵。 |
Log | 日志表,保存所有注冊、登錄、登出、借書、還書的記錄,包括序號、時間、用戶、相關書籍、操作字段,其中用戶和相關書籍分別是參照 User 和 Book 的外鍵。 |
視圖 | 描述 |
---|---|
RegisterView | 注冊視圖,獲取新用戶的信息進行注冊。 |
LoginView | 登錄視圖,獲取用戶名和密碼進行登錄,並將當前用戶狀態存入 Session。 |
LogoutView | 登出視圖,清空 Session,登出。 |
HomeView | 個人中心視圖,顯示用戶的借閱列表,並提供還書按鈕。 |
SearchView | 查詢視圖,通過輸入關鍵字進行查詢,返回相關的書籍列表,並提供借書按鈕。 |
BorrowView | 借書視圖,完成借書邏輯。 |
ReturnView | 還書視圖,完成還書邏輯,若逾期則給出繳納罰金提示。 |
順序圖
-
注冊
用戶打開注冊頁面,輸入個人信息,RegisterView 獲得后向 User 查詢該用戶是否不存在,若是則在 User 中增添該用戶,並將本次注冊操作寫入 Log,然后返回注冊成功信息。
-
登錄
用戶打開登錄頁面,輸入用戶名和密碼,LoginView 獲得后向 User 查詢該用戶是否存在,若是則將本次登錄操作寫入 Log,然后跳轉頁面到用戶的個人中心。HomeView 向 Borrow 查詢該用戶的借閱信息,並返回借閱列表。
-
借書
用戶打開查詢界面,輸入想要借的書籍的關鍵字,SearchView 獲得后向 Book 查詢相關書籍,並返回書籍列表。用戶點擊列表項目的借書按鈕,BorrowView 向 Borrow 中增添一條該用戶的借書記錄,然后在 Book 中將該書籍設置為不可借,並將本次借書操作寫入 Log,最后返回借書成功信息。
-
還書
用戶打開個人中心頁面,HomeView 向 Borrow 查詢該用戶的借閱信息,並返回借閱列表。用戶點擊列表項目的還書按鈕,ReturnView 從 Borrow 中刪除這條借書記錄,然后在 Book 中將該書籍設置為可借,並將本次還書操作寫入 Log,最后返回還書成功信息。如果還書逾期,則還將返回繳納罰金的提示信息。
狀態圖
系統部署說明
Requirements
-
Python 3.6
-
Django 3
-
Bootstrap 3
-
jQuery 3
-
MySQL 8
啟動系統
-
在 MySQL 中新建一個名為
library
的數據庫,字符集選擇UTF-8
。 -
安裝 MySQL 驅動
mysqlclient
。pip install mysqlclient
-
在
library/library/settings.py
中配置數據庫的USER
和PASSWORD
。DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'library', 'USER': '****', 'PASSWORD': '************', 'HOST': '127.0.0.1', 'PORT': '3306', } }
-
進入項目目錄下。
cd ./library
-
遷移數據庫。
python manage.py makemigrations python manage.py migrate
-
啟動系統。
python manage.py runserver
-
訪問 127.0.0.1:8000 。
展示后修改和優化說明
-
增加注冊時的合法性檢驗:學號必須為 8 位(多於 8 位的部分無法輸入),密碼不能少於 6 位,否則將給出提示。
-
實現對書名、作者、出版社三個字段的模糊查詢。此外,將有館藏記錄但當前已借出的書籍也顯示出來(沒有借書按鈕),而不是僅展示當前能借的書籍。這樣能告訴用戶這本書是有的,只是當前已經被別人借走了,可以過一段時間再來查詢。