日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?

發(fā)布時(shí)間:2025/3/20 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前段時(shí)間學(xué)習(xí)完了MySQL和JDBC,想著自己做個(gè)東西實(shí)戰(zhàn)一下,于是寫了一個(gè)爛大街的圖書管理系統(tǒng)。。。但好歹是自己一個(gè)人日夜兼程,硬著頭皮做出來的還像樣的東西,總結(jié)一手吧。看的人歡迎吐槽。我會(huì)從以下幾個(gè)方面進(jìn)行總結(jié)。(總結(jié)的是我目前認(rèn)為的以及怎么做的) + 這個(gè)項(xiàng)目設(shè)計(jì)步驟是什么 + 這個(gè)項(xiàng)目用到的知識(shí)有什么 + 這個(gè)項(xiàng)目遇到了什么問題,怎么解決的。 + 這個(gè)過程中收獲的知識(shí)點(diǎn)有哪些


@[TOC]

一、這個(gè)項(xiàng)目設(shè)計(jì)步驟是什么

管理信息系統(tǒng)的建立與應(yīng)用可以劃分成總體規(guī)劃、系統(tǒng)開發(fā)和系統(tǒng)運(yùn)行三個(gè)階段,其中系統(tǒng)開發(fā)階段還可進(jìn)一步分為系統(tǒng)分析、系統(tǒng)設(shè)計(jì)和系統(tǒng)實(shí)施等工作環(huán)節(jié)。上述各個(gè)階段排列成一個(gè)嚴(yán)格的線性開發(fā)序列,在每個(gè)工作階段均產(chǎn)生完整的技術(shù)文檔作為下一階段工作的指導(dǎo)和依據(jù),每一階段都應(yīng)對文檔進(jìn)行評審,確信該階段工作已完成并達(dá)到要求后才能進(jìn)入下一階段,同時(shí)在以后的工作中不能輕易改變前面經(jīng)過評審的成果。 國外曾有人對一些軟件項(xiàng)目開發(fā)各階段的工作量進(jìn)行了統(tǒng)計(jì),結(jié)果表明,在開發(fā)過程中各工作階段所占全部工作量的比重分別達(dá)到系統(tǒng)分析:系統(tǒng)設(shè)計(jì):編程:模塊調(diào)試:系統(tǒng)調(diào)試=20%:15%:20%:25%:20%。由此可見,程序編寫在開發(fā)工作中只占很小比例,而調(diào)試工作卻占整個(gè)開發(fā)工作量的一半左右

在做這個(gè)圖書管理系統(tǒng)之前,我大概看了幾篇相關(guān)的論文,我的大致的步驟如下:

1、明確開發(fā)環(huán)境

MySQL8.0.21、IDEA開發(fā)工具、JDK11.0、JDBC、SpringJDBC-Template、DBCP開源數(shù)據(jù)連接池 圖形界面使用Swing組件 對每個(gè)工具有認(rèn)識(shí)、懂得如何使用。(swing不太懂就撲街了 )

2、系統(tǒng)分析步驟

需要考慮:①系統(tǒng)的處理對象;②系統(tǒng)的功能、具體的業(yè)務(wù);③對具體的業(yè)務(wù)有流程圖設(shè)計(jì);④將業(yè)務(wù)需求進(jìn)行模塊劃分 處理對象: + 圖書信息:書籍編號,書名,類型,作者,譯者,出版商,出版時(shí)間,價(jià)格,存儲(chǔ)量。? + ?讀者信息:編號,姓名,性別,最多可借數(shù)量,可借時(shí)間。?? + 借閱信息:讀者編號,書籍編號,借閱日期,還書日期,借閱時(shí)間,是否還書。? + ?管理員信息:編號,姓名,密碼,是否為管理員。?

系統(tǒng)功能、業(yè)務(wù) 從處理對象的角度去分析 + 系統(tǒng)管理員能夠?qū)τ脩魧?shí)施管理:包括添加、刪除用戶信息,對用戶密碼進(jìn)行有效管理。 還能夠方便的進(jìn)行圖書管理:包括設(shè)置圖書種類和圖書信息,添加、刪除和修改圖書信息。? + 讀者用戶在該系統(tǒng)進(jìn)行借書,系統(tǒng)自動(dòng)添加借書記錄和借書日期,讀者還書時(shí)管理員也能在平臺(tái)進(jìn)行還書操作,修改讀者借書信息。 + 管理員可以修改用戶信息和自己的信息,還可以對數(shù)據(jù)庫的信息進(jìn)行維護(hù)、日志管理等 + 游客和讀者都能方便的對圖書進(jìn)行查詢。但只有登陸了才能進(jìn)行借書操作

流程圖設(shè)計(jì) 我沒有設(shè)計(jì),按照自己的思路寫的。

功能模塊劃分 + 應(yīng)用啟動(dòng)界面模塊 + 用戶注冊模塊 + 用戶信息登陸模塊 + 用戶借閱信息 + 圖書館藏資源模塊 + 管理員模塊

具體功能還需要細(xì)分、設(shè)計(jì)實(shí)現(xiàn)

3、數(shù)據(jù)庫設(shè)計(jì)

大寫強(qiáng)調(diào) ; 設(shè)計(jì)數(shù)據(jù)庫字段用英文 !

我們要設(shè)計(jì)數(shù)據(jù)庫要考慮 + 表結(jié)構(gòu)的實(shí)現(xiàn)(主鍵、非空、自增、數(shù)據(jù)類型、外鍵約束等) + 每個(gè)表插入和刪除、修改、查詢的時(shí)候需要注意什么 + 觸發(fā)器和事務(wù)是否需要設(shè)計(jì)

附上我的表結(jié)構(gòu):

books表 書編號(主鍵)、書名、價(jià)格、剩余量、出版商、作者、出版日期、類型

user表 字段:id主鍵、用戶名、密碼、是否管理員(這里可以添加權(quán)限,我沒有設(shè)計(jì),0非管理員1管理員)

reader表 id關(guān)聯(lián)user表的id,名字、可借書的天數(shù)、可借書本數(shù)、性別、已借書數(shù)、人生格言(默認(rèn)值)

borrow表 借書者的id、所借書id、借書日期、是否歸還、截止還書日期

創(chuàng)建的觸發(fā)器 1、當(dāng)書的余量為0,讀者想要借書無法借 2、當(dāng)讀者成功借書、則余量-1且borrow表添加對應(yīng)的借書記錄 3、當(dāng)讀者還書時(shí)、則余量+1、且borrow表刪除對應(yīng)的記錄 4、當(dāng)添加圖書時(shí),檢查出版日期不能超過今天

創(chuàng)建的表結(jié)構(gòu)的MySQL語句匯合: 創(chuàng)建book表——>創(chuàng)建user表——>創(chuàng)建reader表——>創(chuàng)建borrow表

1

這個(gè)過程中遇到的錯(cuò)誤: + 1、MySQL不支持在觸發(fā)器使用事務(wù),也就是不允許使用rollback等操作。可以使用拋出異常來替代 + 2、在MySQL WorkBeach里面添加觸發(fā)器時(shí)需要修改sql語句結(jié)束符,該語句要和創(chuàng)建觸發(fā)器的語句一起,不要單獨(dú)執(zhí)行。都寫好了以后點(diǎn)擊執(zhí)行。 + 3、注意數(shù)據(jù)類型,TIMESTAMP和DATE,TIMESTAMP日期包含具體幾點(diǎn),格式比較長。盡量使用DATE,方便與java里面的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)化。 + 4、注意new和old的使用場景以及針對的對象表,inset和update、delete三者的new區(qū)別。 + 5、判斷日期的前后使用對應(yīng)的函數(shù):mysql 日期加減天數(shù)

MySQL

4、DAO三層架構(gòu)模型實(shí)現(xiàn)

我們需要將與數(shù)據(jù)庫的交互進(jìn)行封裝 在java里面創(chuàng)建表映射對象,我們對對象的操作就可以操作對應(yīng)的表數(shù)據(jù)了。

一、ORM表映射

如books表的映射

package

我們把這些表映射放到統(tǒng)一的包ORM里面。

二、數(shù)據(jù)庫連接池CP

在Java中開源的數(shù)據(jù)庫連接池有以下幾種 : 1、C3P0:是一個(gè)開放源代碼的JDBC連接池,它在lib目錄中與Hibernate [2] 一起發(fā)布,包括了實(shí)現(xiàn)jdbc3和jdbc2擴(kuò)展規(guī)范說明的Connection 和Statement 池的DataSources 對象。 2、Proxool:是一個(gè)Java SQL Driver驅(qū)動(dòng)程序,提供了對選擇的其它類型的驅(qū)動(dòng)程序的連接池封裝。可以非常簡單的移植到現(xiàn)存的代碼中,完全可配置,快速、成熟、健壯。可以透明地為現(xiàn)存的JDBC驅(qū)動(dòng)程序增加連接池功能。 3、Jakarta DBCP:DBCP是一個(gè)依賴Jakartacommons-pool對象池機(jī)制的數(shù)據(jù)庫連接池。DBCP可以直接的在應(yīng)用程序中使用。 4、DDConnectionBroker:是一個(gè)簡單、輕量級的數(shù)據(jù)庫連接池。 5、DBPool:是一個(gè)高效、易配置的數(shù)據(jù)庫連接池。它除了支持連接池應(yīng)有的功能之外,還包括了一個(gè)對象池,使用戶能夠開發(fā)一個(gè)滿足自己需求的數(shù)據(jù)庫連接池。

我們使用是DBCP

利用該數(shù)據(jù)庫連接池我們創(chuàng)建封裝好的JDBC實(shí)例: 相關(guān)的配置我們寫到一個(gè)文件里面:

然后我們創(chuàng)建工具類用于獲取數(shù)據(jù)庫連接池的datasource

package

三、基于ORM表映射,利用數(shù)據(jù)庫連接池設(shè)計(jì)對應(yīng)的DAOImpl實(shí)現(xiàn)CRUD

先利用SpringJDBCTemplate返回被封裝的JDBC,類型是帶命名參數(shù)的JDBCTemplate

package

創(chuàng)建對應(yīng)表的DAOImpl,如books的DAOImpl實(shí)現(xiàn)CRUD操作:

package

我們把這些表的功能實(shí)現(xiàn)放在同一個(gè)包里面:

四、測試類,用于測試每個(gè)類的功能是否完成

package

把它放到測試包里面,當(dāng)需要添加新功能時(shí),就在這里進(jìn)行測試

5、圖形界面開發(fā)

一、啟動(dòng)界面StartUi

二、注冊界面UserRegister

三、登陸界面LogInGUi

管理員的登陸界面也是這個(gè),但是會(huì)添加額外功能

四、讀者信息界面ReaderInfo

以讀者身份登陸后顯示個(gè)人信息,頭像動(dòng)態(tài)生成,man則是男頭像,woman則是女頭像

五、讀者借書的信息界面(還書操作、ReturnBooksGui)

點(diǎn)擊借書按鈕,如果沒有借書記錄則不進(jìn)入還書界面

點(diǎn)擊借書按鈕,進(jìn)入館藏資源借書,然后返回:已借書數(shù)動(dòng)態(tài)更新

點(diǎn)擊還書按鈕:

輸入id還書或者全部歸還

六、圖書館資源一覽界面LibrarySources

必須登陸才能進(jìn)行借書:

七、管理員登陸界面AdminRegister

在登陸界面登陸提示管理員以后,點(diǎn)擊是,會(huì)進(jìn)入管理界面,彈出問候語

這里會(huì)有很多操作,功能實(shí)現(xiàn)等。采用了菜單欄和菜單、菜單選項(xiàng)、監(jiān)聽對應(yīng)的菜單,觸發(fā)不同的功能。

一些還沒寫的功能就用:

2、如何創(chuàng)建一個(gè)Map數(shù)組以及其實(shí)例化

Map

二、遇到的問題

1、如何使用下拉選擇框

jComboBox_sex

2、如何給JPanel添加背景圖片

千萬不要信哪些人說的添加Jlabel,治標(biāo)不治本的。設(shè)置透明毫無美感。可以自己手寫一個(gè)類來實(shí)現(xiàn),利用了重新繪制的函數(shù)。

package

3、如何動(dòng)態(tài)修改JTable的值,同時(shí)檢驗(yàn)數(shù)據(jù)的合格性,不合格不保存、如何動(dòng)態(tài)刪除選擇的行、以及如何刪除一行同時(shí)將對應(yīng)的操作施加到數(shù)據(jù)庫。

思路:將數(shù)據(jù)庫的數(shù)據(jù)讀取出來,然后得到了二維數(shù)據(jù)數(shù)據(jù)bookDate,給表創(chuàng)建單元格編輯器,在編輯器里可以設(shè)置對值的檢驗(yàn)。然后在監(jiān)聽對應(yīng)的表數(shù)據(jù),將對應(yīng)的修改值存起來,選擇的行利用主鍵唯一性存起來。然后利用一個(gè)按鈕來確認(rèn)刪除.就將存的數(shù)據(jù)提取處理刪除。

表格編輯器

package

給表格添加該編輯器

// 創(chuàng)建單元格編輯器,使用文本框作為編輯組件

對表格更新操作進(jìn)行監(jiān)聽,然后將數(shù)據(jù)保存到bookData,但是未保存到數(shù)據(jù)庫。在確認(rèn)按鈕上添加監(jiān)控,點(diǎn)擊,則進(jìn)行對應(yīng)事件的處理。

///表格監(jiān)聽,編輯表格得到的數(shù)據(jù)將保存到實(shí)際的數(shù)據(jù)庫,保存前會(huì)發(fā)出提示

刪除多選的行操作,因?yàn)槟阋瞥艘淮涡?#xff0c;對應(yīng)的行的索引會(huì)變化,你要像我這么做:

jButton_delete

全部刪除;

while

表格的排序和過濾: TableModel沒有移除行model.removeRow(0);//一行一行的刪除 所以我們要將TableModel定義為DefaultTableModel

TableModel

4、菜單欄和菜單、菜單選項(xiàng)的使用

先添加菜單欄,再添加菜單,必須設(shè)置名字才能看見。。。 然后在對應(yīng)的菜單添加多個(gè)菜單選項(xiàng)或者子菜單

JMenuBar

5、父窗體、子窗體、A-B-C-A等的調(diào)用關(guān)系如何處理

利用了傳入?yún)?shù)的辦法,判斷是否null等、或者按照需要將對應(yīng)的窗體設(shè)置為:

mainJFrame

6、將一些類和方法抽取公共類、公共方法、接口,代碼依然冗雜

7、IDEA里面配置MySQL數(shù)據(jù)庫

8、各種布局管理器

一個(gè)很實(shí)在的講解: 運(yùn)用 BoxLayout 進(jìn)行 Swing 控件布局

8、整體項(xiàng)目架構(gòu)使用maven項(xiàng)目管理工具

三、結(jié)語

項(xiàng)目做了6天,也是自己的第一個(gè)項(xiàng)目,完全獨(dú)立的做,遇到了很多的難題,但是解決了以后現(xiàn)在我想不起啦 。。。總的來說還行。 貼上總代碼行數(shù):

最大的問題:怎么樣讓代碼,不那么冗雜!!!DAO三層架構(gòu)設(shè)計(jì)不知道我的到底算不算是

四、源碼

github: https://github.com/linj21a/BooksMangementSystem

結(jié)后語 說明文檔什么的就不會(huì)寫了。。。。博客匆忙總結(jié)一把了。還有好多東西要學(xué),大家加油!不懂就要問,我也不懂 。大家開始吐槽吧!!!

原文鏈接:

六天寫出來的基于Swing的圖書管理系統(tǒng)你不來吐槽一下?_LH is programming hard-CSDN博客?blog.csdn.net

總結(jié)

以上是生活随笔為你收集整理的java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。