hello各位看官們,小tu又來送上新鮮的博客了!
上篇博客寫了有關圖書管理系統的需求,博主接著這篇博客來闡述自己寫專案的一個大概設計思路,還有一些細節的設計,其實專案寫起來不難,最重要的兩個點就是:(1) 剛開始的一個整體思路的構想,也就是檔案的撰寫 (2) 一些細節的設計,要根據實際要求來
要是朋友們覺得博主寫的還不錯的就點個贊給點鼓勵吧~蟹蟹!

注意:
專案整體代碼連接,提取碼:v6u1
目錄
- 設計思路
- (一) 流程圖
- (二) 包、類、方法創建
- (三) 約束和規則
- 代碼決議
- (一) 底層結構
- (二) 需求設計
- (三) 資料庫
- (四) 日志記錄添加
- 界面展示
- (1) MainMenu主界面
- (2) 操作員界面
- (3) 管理員界面
- 專案總結
設計思路
(一) 流程圖
首先根據說明需求畫出了流程圖,流程圖如下:

?
(二) 包、類、方法創建
知道了整個流程之后,就開始創建包、類、方法,按順序依次創建,如下圖:

?
(三) 約束和規則
根據需求檔案,再結合實際,寫出了如下的約束檔案
編號長度都是8位
名稱都用10位
設計人名都是10位
?
圖書出版日期、讀者生日不能更改
圖書名稱和讀者名稱不能更改
圖書型別和讀者型別類中的型別不能修改,每個編號對應一個型別
?
存在的圖書的型別不能洗掉
存在的讀者的型別不能洗掉
?
借了書的讀者不能洗掉 ——>洗掉時去借閱表里查詢
借了的書不能洗掉 ——>洗掉時去借閱表里查詢
借了書之后書的庫存減1 ——>圖書類重新創建一個庫存減1 的修改方法
?
讀者的可借圖書數量不能超過最大值
借閱之前要先判斷庫存是否大于0
借閱之前要判斷最大可借閱數量是否大于0,用count方法
?
代碼決議
(一) 底層結構
Dao包里的類是介面,DaoImp是它的實作類,Service是所有操作的包,呼叫DaoImp里的類,這里用Book來舉例說明
下圖是BookDao的方法展示:
下面是BookDaoImp的方法展示:
下面是BookService的方法展示:
(二) 需求設計
(1) 在底層創建了一個selectAll的方法,這個方法有一個List的回傳值,適用于后面修改資料庫資訊和查詢資料庫資訊的時候,將資料庫資訊回傳
(2) 在工具類里創建了一些新的方法,方便鍵盤輸入資料和讀寫資料到檔案里
(3) 用介面創建底層是很方便的,有需要的操作時就直接到介面里添加方法
(三) 資料庫
資料庫創建的表如下:

資料庫連接使用的是德魯伊連接池,這里說明一下,在寫組態檔時最好只寫以下幾個屬性,不要添加其他屬性,后面遇到了再添加;博主在做的時候就添加了最大可連接數量n,后面就出現資料庫只能呼叫n次的問題
屬性:
url=??
username=??
password=??
driverClassName=??
?
博主的配置
url=jdbc:mysql://localhost:3306/library_system?rewriteBatchedStatements=true
username=root
password=123
driverClassName=com.mysql.jdbc.Driver
(四) 日志記錄添加
添加日志很方便,在工具類中創建好靜態的方法,在每個增刪改查操作后面添加一句呼叫
//添加日志資訊
public static void loginLogInfo(String s) {
SimpleDateFormat sdf=new SimpleDateFormat();
String time=sdf.format(new Date());
String ss=time+"——"+s;
try {
FileWriter fw=new FileWriter("D:\\JavaSE_Project3\\project3\\src\\File\\loginLog.txt",true);
fw.write(ss);
fw.flush();
fw.write("\r\n");
fw.close();
}catch (Exception e){
e.printStackTrace();
}
}
public static void operatorLogInfo(String s) {
SimpleDateFormat sdf=new SimpleDateFormat();
String time=sdf.format(new Date());
String ss=time+"——"+s;
try {
FileWriter fw=new FileWriter("D:\\JavaSE_Project3\\project3\\src\\File\\operatorLog.txt",true);
fw.write(ss);
fw.flush();
fw.write("\r\n");
fw.close();
}catch (Exception e){
e.printStackTrace();
}
}
?
界面展示
下圖是整體界面的一個設計類圖:

接下來依次展示每個系統界面(只有界面展示,每個操作展示這里暫時不做展示):
(1) MainMenu主界面

(2) 操作員界面





(3) 管理員界面

專案總結
本來寫這個專案的時候是想著用抽象工廠模式的,但是把專案做好之后發現自己建的抽象工廠是錯誤的,工廠的產品應該是管理員和操作員,而我創建的產品是操作,意思是我將操作進行分類創建了,這跟抽象工廠的設計理念不符,所以博文中并未提過跟抽象工廠有關的,這也算是自己的一個小教訓了,沒有把設計模式理解透徹就把專案寫完了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/382863.html
標籤:java
上一篇:蘋果 M1 支持 Linux 最新進展;英特爾發布“GSC”Linux 驅動程式;Linux 基金會研究揭示開源趨勢 | 開源日報
下一篇:cgb2110-day17



