圖書管理系統IO流版之下集
- 1.前言
- 2.結構設計
- 3.資訊管理
- 3.1用戶資訊管理
- 3.2讀者資訊管理
- 3.3圖書資訊管理
- 4.基礎資訊維護
- 4. 總結
1.前言
??鵬之徙于南冥也,水擊三千里,摶扶搖而上者九萬里,去以六月息者也,上一篇,我們冒著大不為,為大家分析了基本思想,對于繼上一篇的學習,我們初步了解了學校圖書館管理系統的大概框架,相信大家對于這個專案也有了一定的想法,接下來跟進博主走進這背后的是與非吧,讓我們來完善它,走進基層,看看校長憑什么夸你 !

2.結構設計
| ??相信大家在上一篇博客的最后,都有看見整個圖書館管理系統的模塊展示吧,不了解的同學可自行翻閱上一篇博主的博客,至于博主為什么要那么設計呢?嗯,這是一個很清晰的問題,我們現在就來為大家解答,圖書館管理系統的艱辛之路! |
設計思想
??讓我們一起來看看專案的分析,該專案也是以增、刪、改、查為基礎,相信大家都不陌生,與之前的專案一,團隊調度有區別的就是:該專案的資料是通過IO流來保存的,這樣的優勢就是:我們保存的資料不會因為重啟專案時被清除掉,一直都會在檔案里存在,對于資料的保存的角度來看,是個較好的選擇,為什么這樣設計,而不是放在一個類里面,一個是為了方便展示,也是方便自己修改,提高可讀性,所以采用這樣一個架構,這也是養成一個好習慣的開始!
1.首先結合功能設計,設計6個物體類(存放在model類中)
??圖書物體:圖書編號ISBN、圖書名稱、作者、出版社、出版日期、印刷次數、單價、圖書型別
??圖書型別:圖書型別編號、圖書型別名稱
??讀者物體:讀者編號、讀者姓名、出生日期、性別、電話、所在院系、注冊日期
??讀者型別:讀者型別編號、讀者型別名稱、可借閱天數、可借閱數量
??用戶:用戶編號、用戶名、用戶密碼
??借閱型別:讀者編號、書籍編號、借閱日期、歸還日期、罰金
2.然后根據操作設計,創建操作類(存放在dao類里)
??圖書資訊操作:BookDao
??圖書型別操作:BookTypeDao
??讀者資訊操作:ReaderDao
??讀者型別操作:ReaderTypeDao
??用戶管理操作:UserDao
??借閱管理操作:BookBorrowDao
3.然后創建工具類util.ut,里面存放自定義的例外 BookException 和工具類 TSUtility和一些其他工具
4.接下來創建一個包存放我們進行讀寫的txt檔案,以及相關的日志資訊
?
5.最后創建我們的視圖包view,里面存放了有關界面的類
??圖書操作界面類:BookView
??讀者操作界面類:ReaderView
??用戶操作界面類:UserView
??主界面類:Menu

??之后創建運行代碼就OK啦,整個專案的基本框架算是完成了,接下來就剩下具體一個一個板塊來實作啦,
3.資訊管理
??根據前面需要的相關類,把類下的基本資訊完善掉,
3.1用戶資訊管理
??比如user里面就應該包含id,name,passwowrd,創建它的get,set方法
??然后完成一個UserDao類,在里面把相關方法寫進去
??UserDao.:具體包括登錄系統的時候,首先,我們進入到圖書管理系統,進入的方式就是通過用戶的賬號和密碼的輸入匹配,判斷賬戶密碼是否有效;查詢所有用戶資訊;添加用戶;修改指定編號的用戶的密碼;洗掉指定編號的用戶資訊
??在這里我創建了下面這些方法:
//判斷賬號和密碼是否有效
public static Users check(String name, String password) throws IOException, ClassNotFoundException, InterruptedException {}
//存入默認賬號和密碼(初始化)
public static void initialization() throws IOException {}
//查詢所有資訊
public static List<Users> selectUser() throws IOException, ClassNotFoundException {}
//添加用戶資訊
public static int insertUser(String name, String password) throws IOException, ClassNotFoundException, BookException {}
//修改用戶資訊
public static int updateUserPWD(Integer id, String pwd) throws IOException, ClassNotFoundException, BookException, InterruptedException {}
//洗掉用戶資訊
public static int deleteUser(Integer id) throws IOException, ClassNotFoundException, BookException {}
??接下來就是實作用戶登錄的 LoginView 類,去實作UserDao類的具體功能
//登錄界面
public static void loginFace() throws IOException, ClassNotFoundException, InterruptedException, BookException {}
//登錄界面存在賬戶密碼
public static void login1() throws IOException, ClassNotFoundException, EOFException, InterruptedException, BookException {}
//用戶管理界面
public static void usersManagement() throws IOException, ClassNotFoundException, InterruptedException {}
特別注意
??在這里設計該功能時,我們選擇將資料保存在檔案中,也就是用IO流來做,
??確定了IO流,這時,我們可以選擇對應的實作方式,(1)集合與IO流結合起來(2)用序列化和反序列化來寫,
??1.針對為了簡化代碼,對于讀和寫檔案,我們可以采用方法的形式,下次就可以直接呼叫即可,避免了繁瑣代碼,這對于整個專案都可以采用的方法,
??2.因為我們采用了物件序列化,就會使用Object物件,在這里就會產生一個新的情況,若檔案內容為空,就會報 EOFException 例外,因此針對這個的解決辦法就是:先用 try/catch 將該例外捕獲并拋出,然后存入初始資料值,這樣后面存入其他資料時就不會再報這個例外,
??3.在實作序列化和反序列化時,我們序列化的類一定要實作Serializable介面,不然也會拋出例外!
3.2讀者資訊管理
??讀者首先需要的就是完善基本類,Reader包括讀者編號、姓名、讀者類別、性別、年齡、電話、所在部門、注冊日期,然后創建構造方法,還有重寫它的to String方法, ReaderType類包括讀者型別名稱,可借閱天數,還有可借閱數量,
??接下來就是ReaderDao:完成讀者資訊添加和讀者資訊查詢與修改功能
//列印資訊
public static void printInfor(List<Reader> list){}
//初始化
public static void initialization() throws IOException, ClassNotFoundException {}
//讀者資訊添加
public static int insertReader(String id, List<ReaderType> list, String name, String age, String sex, String phone, String dept, String reg) throws BookException, IOException, ClassNotFoundException {}
//查詢讀者資訊
public static List<Reader> selectReader() throws IOException, ClassNotFoundException {}
public static List<Reader> selectReaderByName(String name) throws IOException, ClassNotFoundException, BookException {}
public static List<Reader> selectReaderByType(String type) throws IOException, ClassNotFoundException, BookException {}
public static List<Reader> selectReaderByDept(String dept) throws IOException, ClassNotFoundException, BookException {}
//修改讀者資訊
public static int updateReader(String id, String typename, String name, Integer age,String sex, String phone, String dept, String reg) throws IOException, ClassNotFoundException, BookException {}
//洗掉讀者資訊
public static int deleteReader(String id) throws IOException, ClassNotFoundException, BookException {}
??然后是讀者ReaderView類的設計,就是對讀者資訊的管理,實作界面化,連接上ReaderDao
里面包括了讀者型別設定在這里我把罰金系統放在了這里,
設計思路:
??(1)讀者資訊添加,根據輸入的讀者編號、姓名、類別、性別、年齡、電話、所在部門、注冊日期,完成讀者資訊的錄入,其中要求讀者編號和姓名不能為空,讀者編號長度為8,
??(2)讀者資訊查詢與修改,用戶登錄成功之后,可以查詢全部讀者資訊,也可以分別根據讀者編號、讀者姓名、讀者部門、讀者型別查詢讀者資訊,讀者資訊修改根據查詢到的讀者資訊,可以修改各部分,
??(3) 在這里如果檔案沒有內容,我們也需要先進行初始化的,
3.3圖書資訊管理
??圖書管理部分呢,其實它的設計和讀者管理大致差不多,首先就是Book類,BookBorrow類,然后
??BookDao:完成圖書資訊添加和圖書資訊查詢與修改功能,
//列印輸出
public static void printInfor(List<Book> list){}
//初始化
public static void initialization() throws IOException, ClassNotFoundException {}
//添加圖書資訊
public static int insertBook(String ISBN, String bookname, String author, String publish, String publishdate, String printtime, String price, BookType bt) throws IOException, ClassNotFoundException, BookException {}
//查詢所有圖書資訊
public static List<Book> selectBook() throws IOException, ClassNotFoundException {}
//根據其他資訊查詢圖書資訊
public static List<Book> selectBookByISBN(String ISBN) throws IOException, ClassNotFoundException, BookException {}
public static List<Book> selectBookByName(String bookname) throws IOException, ClassNotFoundException, BookException {}
public static List<Book> selectBookByType(String type) throws IOException, ClassNotFoundException, BookException {}
public static List<Book> selectBookByAuthor(String author) throws IOException, ClassNotFoundException, BookException {}
public static List<Book> selectBookByPublish(String Publish) throws IOException, ClassNotFoundException, BookException {}
//修改圖書資訊
public static int update(String ISBN, String bookname, String author, String publish, String publishdate, int printtime, double price, BookType bt) throws IOException, ClassNotFoundException, BookException {}
//洗掉圖書資訊
public static int delete(String ISBN) throws IOException, ClassNotFoundException, BookException {}
設計思路
??(1)圖書資訊添加,根據錄入的圖書ISBN、類別、圖書名稱、作者、出版社、出版日期、印刷次數、單價完成圖書資訊添加,
??(2)圖書資訊查詢與修改,用戶登錄成功之后,可以瀏覽所有圖書資訊,也可以根據ISBN、圖書名稱、圖書類別、作者、出版社檢索特定圖書的相關資訊,圖書資訊修改根據查詢到的讀者資訊,可以修改各部分,
??BookBorrowDao包括圖書借閱和圖書歸還功能
//初始化
public static void initialization() throws IOException, ParseException, BookException, ClassNotFoundException {}
//查詢指定編號讀者的借書資訊
public static List<BorrowBook> selectBorrowByReaderId(String readerid) throws BookException, IOException, ClassNotFoundException {}
//查看所有借閱資訊
public static void selectAllBorrow() throws IOException, ClassNotFoundException {}
//圖書借閱,(借閱者的編號,圖書編號,借閱日期)
public static int borrowBook(String readerid,String ISBN, String borrowdate) throws IOException, ClassNotFoundException, BookException, ParseException {}
//圖書歸還,(還書者的編號,圖書編號,歸還日期)
public static int returnBook(String readerid,String ISBN,String returndate,List<BorrowBook> list) throws IOException, ClassNotFoundException, ParseException, BookException {}
設計思路
??(1)圖書借閱,根據用戶輸入的讀者編號,則顯示出該讀者的姓名、類別,及該讀者的借閱情況,然后錄入該讀者的最新借閱的圖書ISBN,顯示出該圖書的相關資訊,確定借閱后,將該借閱資訊錄入(包括讀者編號、圖書ISBN,當前日期即借閱日期),
??(2)圖書歸還,圖書歸還功能,輸入讀者的編號,則顯示出該讀者名下已借閱的圖書,選中要歸還的圖書,判斷當前日期即歸還日期與借閱日期的差值是否超過了規定的期限,計算罰金,從而進行圖書的歸還操作,更新借閱資訊表的歸還日期為當前日期,
??然后BookView類就是對上面那個類進行結合實作界面的一個類,就不做展示啦,
4.基礎資訊維護
??基礎資訊的維護這里就不作多的闡述,設計思想都是一致的,相比于資訊管理,是較簡單的,該模塊下有,讀者類別的設定,圖書類別的設定,還有罰金的設定;讀者類別,就是當我們再添加讀者時,可以將讀者類別當做讀者類的一個屬性添加進去,就比如說,我們當前添加的讀者型別為學生,那么就在可以單獨設定學生的可借閱圖書的天數和圖書的數量,同理,圖書類別的設定,就可以把圖書進行分類,罰金的設定:可以根據不同型別的讀者,設定不同型別的罰金,
//列印資訊
public static void printInfor(List<ReaderType> list){}
//初始化
public static void initialization() throws IOException, ClassNotFoundException {}
//查詢全部讀者型別資訊
public static List<ReaderType> selectReaderType() throws IOException, ClassNotFoundException {}
//查詢指定型別名的讀者型別資訊
public static List<ReaderType> selectReaderType(String type) throws IOException, ClassNotFoundException, BookException {}
//添加讀者型別
public static int insertReaderType(Integer id, String typename, Integer num, Integer limit) throws IOException, ClassNotFoundException, BookException {}
//修改讀者型別
public static int updateReaderType(Integer id, String typename, Integer num, Integer limit) throws IOException, ClassNotFoundException, BookException {}
//洗掉讀者型別
public static int deleteReaderType(Integer id) throws IOException, ClassNotFoundException, BookException {}
??該模塊主要注意的就是: 在某個型別被使用的時候,我們就不能讓該型別被修改和洗掉!(添加一個判斷陳述句,利用回圈遍歷實作,)
??在罰金設定這里:因為我們需要根據不同的型別來設定罰金,這里要注意的是,罰金的檔案讀寫方式并不是用的物件序列化,所以,在這里我們用Properties通過鍵值對的形式,可以很好地將罰金設定出來,想要了解該類,可以參考博主之前的檔案IO流Properties

4. 總結
??該專案是我學Java以來自己制作的功能最為復雜,設計內容最豐富的專案,同時也是耗費我時間最久的專案,專案中還有很多地方的代碼是可以繼續優化的,而且還有很多可以增加用戶體驗的功能是可以再添加的,
??整個專案的制作程序也是我查缺補漏的一個程序,將我之前學習的比較薄弱的部分給進行了增強,同時也將一些之前學的扎實的部分進行了加固,到此這篇關于Java實戰之基于I/O流設計的圖書館管理系統的文章就介紹到這了,下面是關于本次專案的具體代碼,有興趣的歡迎下載,運行體驗一下,嘿嘿嘿!!!
鏈接:https://pan.baidu.com/s/1mMBaU20skDCjMBVec15m3w
提取碼:yy52
具體代碼

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337764.html
標籤:其他
