圖書管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁(yè)
圖書管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁(yè)
圖書管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁(yè)
圖書管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁(yè)
圖書管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告摘要隨著人類社會(huì)的不斷進(jìn)步,科學(xué)技術(shù)有了長(zhǎng)足的發(fā)展,尤其是在當(dāng)今中國(guó)知識(shí)經(jīng)濟(jì)時(shí)代,知識(shí)大爆炸帶來(lái)了全球圖書企業(yè)的飛速發(fā)展,這些書籍為科技的發(fā)展做出了巨大的貢獻(xiàn)。人類短短的幾十年創(chuàng)造了大量的書籍資源,但是圖書數(shù)量之多,也使得其管理起來(lái)非常的繁瑣,隨著信息時(shí)代的到來(lái),圖書的信息化管理使得問(wèn)題得以解決,圖書館管理系統(tǒng)的出現(xiàn)就顯得水到渠成了。本系統(tǒng)主要上可以分為兩大模塊:圖書館管理員模塊和讀者登錄模塊,并在這兩大模塊下分成多個(gè)子模塊。圖書的使用對(duì)象是借閱者,例如學(xué)生,教師,管理員;而管理者同時(shí)也是圖書館的管理者。因此根據(jù)這些信息,本系統(tǒng)的主要功能就是:實(shí)現(xiàn)圖書館圖書信息的管理和維

2、護(hù),如用戶信息管理,管理員信息管理,圖書瀏覽,書架管理信息,圖書館規(guī)則維護(hù),新書入庫(kù),整理圖書,修改圖書信息和進(jìn)行查詢等;以及系統(tǒng)的圖書信息查詢,圖書的借出和歸還等功能 圖書信息管理系統(tǒng)能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。目錄:第一章:需求分析1,學(xué)生用戶端2,教師用戶端第二章:總體設(shè)計(jì)1,系統(tǒng)分析2,可行性分析3,系統(tǒng)目標(biāo)4,系統(tǒng)功能設(shè)計(jì)5,構(gòu)建開(kāi)發(fā)環(huán)境第三章:數(shù)據(jù)庫(kù)設(shè)計(jì)1,數(shù)據(jù)庫(kù)分析2,項(xiàng)目E-R圖3,數(shù)據(jù)庫(kù)表的設(shè)計(jì)第四章:程序模塊設(shè)計(jì)1,用戶登錄模塊2,數(shù)據(jù)庫(kù)操縱框架3,登錄界面實(shí)現(xiàn)4,管理端界面的設(shè)計(jì)5,查

3、詢圖書界面模塊6,借閱預(yù)約圖書功能模塊7,歸還掛失圖書功能8,圖書超期處理模塊9,學(xué)生用戶管理模塊10,,管理員管理模塊11,超級(jí)管理員功能開(kāi)發(fā)第五章:主要模塊界面第六章:程序源代碼第七章:參考文獻(xiàn)1,需求分析當(dāng)決定要開(kāi)發(fā)一個(gè)信息系統(tǒng)時(shí),首先要對(duì)信息系統(tǒng)的需求進(jìn)行分析,需求分析要做的工作是深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的限制和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求。抽象出當(dāng)前系統(tǒng)的邏輯模型。在理解當(dāng)前系統(tǒng)“怎么做”的基礎(chǔ)上,抽取其“做什么”的本質(zhì),從而從當(dāng)前系統(tǒng)的物理模型抽象出當(dāng)前系統(tǒng)的邏輯模型。在物理模型中有許多物理因素,隨著分析工作的深入,有些非本質(zhì)的物理因素就成為

4、不必要的負(fù)擔(dān),因而需要對(duì)物理模型進(jìn)行分析,區(qū)分出本質(zhì)的物理因素就成為不必要的負(fù)擔(dān),因而需要對(duì)物理模型進(jìn)行分析,區(qū)分出本質(zhì)的和非本質(zhì)的困素,去掉那些非本質(zhì)的困素即可獲得反映系統(tǒng)本質(zhì)的邏輯模型。管理員登錄過(guò)程:當(dāng)管理員在登錄頁(yè)面輸入正確的用戶名和密碼后,通過(guò)客戶端和服務(wù)器的雙重校驗(yàn),并且檢測(cè)數(shù)據(jù)庫(kù)中的對(duì)應(yīng)的用戶名和密碼是否正確,如果是正確的,則表示管理員登錄成功并進(jìn)入管理員操作頁(yè)面學(xué)生用戶端:查詢圖書,學(xué)生用戶可以進(jìn)行簡(jiǎn)單的查詢和高級(jí)查詢,預(yù)約圖書,當(dāng)要借的的書不在館時(shí),可以提前預(yù)約。掛失圖書,圖書丟失要掛失,可以在學(xué)生用戶端實(shí)現(xiàn)。管理員端:學(xué)生用戶管理,實(shí)現(xiàn)學(xué)生用戶信息的修改,刪減,添加,查詢。

5、圖書管理,包括對(duì)圖書的增加,刪減,查詢等。管理員管理:操作者包括超級(jí)管理員和普通管理員,超級(jí)管理員可以對(duì)普通管理員進(jìn)行刪減,查詢等操作,而普通管理員只有修改自己密碼的權(quán)限。 借閱管理:主要是學(xué)生借閱管理,歸還圖書和繳納罰款的管理。2,總體設(shè)計(jì)系統(tǒng)不但要滿足客戶提出的要求,同時(shí)也要考慮其性能。因此,在項(xiàng)目開(kāi)發(fā)之前,首先要進(jìn)行需求分析和可行性研究,這就是進(jìn)行項(xiàng)目開(kāi)發(fā)的基礎(chǔ)。利用MVC設(shè)計(jì)模式,模塊間實(shí)現(xiàn)高內(nèi)聚,低耦合。界面設(shè)計(jì)美觀大方,操作簡(jiǎn)單。 功能完善,結(jié)構(gòu)清晰。能夠快速的進(jìn)行圖書館信息,圖書館參數(shù),書架,管理員等信息等系統(tǒng)的設(shè)置。能夠快速、準(zhǔn)確的進(jìn)行讀者類型管理的相關(guān)功能,如讀者類型增加、修

6、改、刪除。能夠快速、準(zhǔn)確的進(jìn)行讀者檔案管理的相關(guān)功能,如讀者檔案的詳細(xì)信息的查看,讀者檔案的增加、修改、查詢。能夠快速、準(zhǔn)確的進(jìn)行圖書類型管理的相關(guān)功能,如圖書類型的增加、修改、刪除。能夠快速、準(zhǔn)確的進(jìn)行圖書檔案管理的相關(guān)功能,如圖書檔案的詳細(xì)信息的查看,圖書檔案的增加、修改、刪除。能夠快速、準(zhǔn)確的進(jìn)行圖書借閱的相關(guān)功能,如圖書借閱,圖書借閱查詢,圖書歸還,圖書續(xù)借等。能夠快速準(zhǔn)確的進(jìn)行系統(tǒng)的相關(guān)功能查詢,如圖書借閱查詢、圖書到期查詢、圖書檔案查詢等。能夠快速、準(zhǔn)確的進(jìn)行管理員的相關(guān)功能,如管理員的增加、修改管理員密碼、刪除管理員。能夠快速、準(zhǔn)確的進(jìn)行管理員或者讀者的登錄。能夠快速、準(zhǔn)確的讓讀

7、者進(jìn)行讀者功能模塊的瀏覽。3,可行性研究可行性分析是對(duì)項(xiàng)目的可行程度進(jìn)行分析,以便管理層對(duì)資金以及技術(shù)的投入進(jìn)行決策,包括技術(shù)可行性,經(jīng)濟(jì)可行性,營(yíng)運(yùn)可行性。對(duì)于本項(xiàng)目而言,圖書是人類獲取知識(shí)最重要的途徑,隨著讀者的日益增加,對(duì)圖書的管理要求也增大很多,從圖書館的需求以及現(xiàn)有的技術(shù)等方面研究該圖書管理系統(tǒng)的可行性。當(dāng)前該圖書館的管理比較粗放,還有大部分需要手工操作,對(duì)信息的維護(hù)不僅費(fèi)用高而且工作量大,而且信息的安全性很難得到保障,學(xué)校支出了適量的資金進(jìn)行本系統(tǒng)的開(kāi)發(fā)。使用本系統(tǒng)后大部分工作將實(shí)現(xiàn)自動(dòng)化,圖書館只需花費(fèi)很少的人力和物力進(jìn)行系統(tǒng)的維護(hù)即可。根據(jù)上述分析,公司為此項(xiàng)目結(jié)構(gòu)清晰,功能合

8、理,而且使用 JAVA SE技術(shù)能夠進(jìn)行開(kāi)發(fā),并實(shí)現(xiàn)客戶的需求的全部功能,由于這是一個(gè)中小型系統(tǒng),客戶要求的開(kāi)發(fā)時(shí)間完全充裕,利潤(rùn)與開(kāi)發(fā)成本也比較高,這可在一定程度上提高了公司的效益,因此決定開(kāi)發(fā)此項(xiàng)目。系統(tǒng)功能結(jié)構(gòu)本系統(tǒng)包括學(xué)生端和管理員端,有借閱圖書,預(yù)約圖書,查詢圖書,掛失圖書,超期交納罰款等功能模塊,結(jié)構(gòu)如下:3,數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)作為系統(tǒng)的基礎(chǔ),首先要保證其設(shè)計(jì)的合理性,在使用應(yīng)用系統(tǒng)的時(shí)候,擁有設(shè)計(jì)合理的數(shù)據(jù)庫(kù)往往可以起到事半功倍的效果,在系統(tǒng)的維護(hù),功能拓展時(shí),這一優(yōu)點(diǎn)尤其得到很好的體現(xiàn)。系統(tǒng)包含的實(shí)體主要有:圖書、學(xué)生、管理員等,下面將分別介紹各實(shí)體及實(shí)體間的E-R圖。通過(guò)其E-

9、R圖讀者可以更好地理解各實(shí)體的屬性關(guān)系。下面就以學(xué)生實(shí)體為例,來(lái)進(jìn)行介紹,學(xué)生E-R圖 如圖所示管理員管理員E-R圖數(shù)據(jù)庫(kù)表的設(shè)計(jì)主要有學(xué)生信息表和管理員信息表還有圖書信息表為例字段名稱數(shù)據(jù)類型字段大小是否主鍵是否為空說(shuō)明STUNOIntN/A是否學(xué)號(hào)StuNameVarchar50否是姓名StuAgeIntN/A否是年齡StuSexVarchar50否是性別ClassVarchar50否是班級(jí)DepartmentVarchar50否是院系TelChar11否是電話PermittedVarchar50否是借閱許可PasswordVarchar20否是密碼學(xué)生用戶信息表字段名稱數(shù)據(jù)類型字段大小是

10、否主鍵是否為空說(shuō)明mgNoIntN/A是否管理員IDPermittedVarchar50否否管理員權(quán)限PasswordVarchar50否否管理員密碼管理員信息表字段名稱數(shù)據(jù)類型字段大小是否主鍵是否為空說(shuō)明BookNo是否圖書IDBookName否是圖書名稱Auther否是圖書作者Publishment否是出版社ButTime否是購(gòu)進(jìn)日期Borrowed否是是否借閱Ordered否是是否預(yù)約圖書基本信息表字段名稱數(shù)據(jù)類型字段大小是否主鍵是否為空說(shuō)明BookNointN/A是否書號(hào)STUNOvarchar50否否學(xué)號(hào)BorrorTimevarchar50否是借閱時(shí)間ReturnTimevarch

11、ar50否是歸還時(shí)間Borrowedvarchar50否是是否借閱Orderedvarchar50否是是否預(yù)約借閱圖書信息字段名稱數(shù)據(jù)類型字段大小是否主鍵是否為空說(shuō)明StuNOIntN/a是否學(xué)號(hào)BookNOIntN/A否是書號(hào)BookNameVarchar50否是書名DelayTimevarchar50否是超期天數(shù)超期圖書信息表字段名稱數(shù)據(jù)類型字段大小是否主鍵是否為空說(shuō)明BookNOIntN/A是否書號(hào)StuNamevarchar50否是學(xué)生姓名Classvarchar50否是班級(jí)BookNamevarchar50否是書名StuNOIntN/A否是學(xué)生IDAuthervarchar50否是作

12、者預(yù)約圖書表如上字段名稱數(shù)據(jù)類型字段大小是否主鍵是否為空說(shuō)明LBNOIntN/A是否掛失書號(hào)BookNOIntN/A否是書號(hào)BookNameVarchar50否是書名StuNOintN/A否是學(xué)生ID第四章:程序模塊設(shè)計(jì)1, 用戶登錄模塊設(shè)計(jì)用戶登錄界面的主要功能是驗(yàn)證登錄者的身份和權(quán)限,只有學(xué)生用戶或管理員才能登錄與之對(duì)應(yīng)的管理系統(tǒng)。在登錄界面,通過(guò)對(duì)各項(xiàng)登錄條件的驗(yàn)證,就可以確認(rèn)用戶的使用權(quán)限。下面將介紹登陸模塊的具體開(kāi)發(fā)。登錄界面開(kāi)發(fā)界面構(gòu)造器的實(shí)現(xiàn) 管理員登錄模塊需要對(duì)管理員登錄是輸入的用戶名和密碼進(jìn)行檢驗(yàn),當(dāng)管理員輸入用戶名和密碼后,系統(tǒng)需要對(duì)輸入的參數(shù)與數(shù)據(jù)庫(kù)中的所存儲(chǔ)的參數(shù)進(jìn)行對(duì)

13、比,當(dāng)用戶名和密碼相對(duì)應(yīng)且都正確時(shí)能能夠成功登錄到管理員的操作首頁(yè)Login.jsp是管理員的登錄界面,主要功能是將管理員輸入的用戶名和密碼提交到manager.action進(jìn)行處理而且能夠進(jìn)行簡(jiǎn)單的客戶端校驗(yàn)。Manager.action是對(duì)用戶提交的用戶名和密碼進(jìn)行服務(wù)器端的校驗(yàn)。當(dāng)用戶提交了數(shù)據(jù)后,manager.action將調(diào)用managerdao中的check()檢測(cè)用戶提交的數(shù)據(jù)是否匹配數(shù)據(jù)庫(kù)中的數(shù)據(jù),各代碼如下所示Login.jsp代碼如下:package wyf.hxl;import javax.swing.*;import java.awt.*;import java.aw

14、t.event.*;import javax.swing.table.*;import javax.swing.event.*;import java.sql.*;import java.util.*;import java.util.Date;public class Login extends JFrame implements ActionListenerprivate JPanel jp=new JPanel();/創(chuàng)建JPanel對(duì)象private JLabel jlArray=/創(chuàng)建標(biāo)簽組new JLabel(用戶IP),new JLabel(端口號(hào)),new JLabel(用戶名

15、),new JLabel(密 碼),new JLabel();private JButton jbArray=/創(chuàng)建按鈕數(shù)組new JButton(學(xué)生登錄),new JButton(清空),new JButton(管理員登錄);private JTextField jtxtArray= /創(chuàng)建文本框new JTextField(localhost),new JTextField(3306),new JTextField(10001);private JPasswordField jpassword=new JPasswordField(); /創(chuàng)建密碼框String sql;DataBase

16、 db;public Login()jp.setLayout(null); /設(shè)置JPanel的布局管理器for(int i=0;i4;i+) /對(duì)標(biāo)簽與按鈕控件循環(huán)處理jlArrayi.setBounds(30,20+i*50,80,25);/設(shè)置標(biāo)簽與按鈕的大小和位置jp.add(jlArrayi);/將標(biāo)簽和按鈕添加進(jìn)JPanel容器中for(int i=0;i3;i+)/設(shè)置按鈕的大小位置并為其添加事件監(jiān)聽(tīng)器jbArrayi.setBounds(10+i*120,230,100,25);jp.add(jbArrayi);jbArrayi.addActionListener(this);

17、for(int i=0;i3;i+)/設(shè)置文本框的大小位置并為其添加事件監(jiān)聽(tīng)器jtxtArrayi.setBounds(80,20+50*i,180,25);jp.add(jtxtArrayi);jtxtArrayi.addActionListener(this);jpassword.setBounds(80,170,180,25);/設(shè)置密碼框的大小位置jp.add(jpassword);/將密碼框添加進(jìn)JPanel容器jpassword.setEchoChar(*);/設(shè)置密碼框的回顯字符jpassword.addActionListener(this);/為密碼框注冊(cè)監(jiān)聽(tīng)器jlArray

18、4.setBounds(10,280,300,25);/設(shè)置用于顯示登錄狀態(tài)的標(biāo)簽的大小位置jp.add(jlArray4); /將標(biāo)簽添加進(jìn)JPanel容器this.add(jp);Image image=new ImageIcon(ico.gif).getImage();/對(duì)logo圖片進(jìn)行初始化this.setIconImage(image);/設(shè)置窗體的大小位置及可見(jiàn)性this.setTitle(登錄);this.setResizable(false);this.setBounds(100,100,400,350);this.setVisible(true);/實(shí)現(xiàn)ActionList

19、ener接口中的方法public void actionPerformed(ActionEvent e)/事件源為文本框String mgno=jtxtArray2.getText().trim();String mgIP=jtxtArray0.getText().trim();String port=jtxtArray1.getText().trim();String message=mgIP+:+port;DataBase.message=message;/將本方法椎謀淞孔魑問(wèn)持蹈鳧ataBase方法的私有變量DataBase.log=this;if(e.getSource()=jtxtA

20、rray0)jtxtArray1.requestFocus();/切換輸入焦點(diǎn)到密碼框if(e.getSource()=jtxtArray1)jtxtArray2.requestFocus();/切換輸入焦點(diǎn)到密碼框if(e.getSource()=jtxtArray2)jpassword.requestFocus();/切換輸入焦點(diǎn)到密碼框else if(e.getSource()=jbArray1)/事件源為清空按鈕/清空所有信息jlArray4.setText();jtxtArray2.setText();jpassword.setText();/將輸入焦點(diǎn)設(shè)置到文本框jtxtArray

21、2.requestFocus();else if(e.getSource()=jbArray2)/事件源為管理員登錄按鈕/判斷用戶名和密碼是否匹配if(!mgno.matches(d+)/如果用戶名格式輸入有誤JOptionPane.showMessageDialog(this,用戶名格式錯(cuò)誤!,信息,JOptionPane.INFORMATION_MESSAGE);return;if(jtxtArray0.getText().trim().equals()/如果用戶IP文本框?yàn)榭?,提示JOptionPane.showMessageDialog(this,用戶IP不能為空!,信息,JOptio

22、nPane.INFORMATION_MESSAGE);return;if(jtxtArray1.getText().trim().equals()/如果端口號(hào)文本框?yàn)榭?,提示JOptionPane.showMessageDialog(this,用戶端口號(hào)不能為空!,信息,JOptionPane.INFORMATION_MESSAGE);return;sql=select mgNo,password from manager where mgNo=+Integer.parseInt(mgno);db=new DataBase();db.selectDb(sql);/以上三行是對(duì)用戶名和密碼進(jìn)行查

23、詢,驗(yàn)證身份tryString mgNo=;String password=;while(db.rs.next()/取出結(jié)果集中數(shù)據(jù)并賦值mgNo=db.rs.getString(1).trim();password=db.rs.getString(2).trim();if(jtxtArray2.getText().trim().equals(mgNo)&String.valueOf(jpassword.getPassword().equals(password)/登錄成功jlArray4.setText(恭喜您,登錄成功!);new Root(mgNo);this.dispose();els

24、e/登錄失敗jlArray4.setText(對(duì)不起,登錄失??!);catch(Exception e1)e1.printStackTrace();db.dbClose();/關(guān)閉數(shù)據(jù)庫(kù)鏈接else if(e.getSource()=jbArray0)/事件源為學(xué)生登錄按鈕if(!jtxtArray2.getText().trim().matches(d+)/若學(xué)號(hào)格式錯(cuò)誤,輸出提示對(duì)話框JOptionPane.showMessageDialog(this,輸入有誤,學(xué)號(hào)只能為數(shù)字!,消息, JOptionPane.INFORMATION_MESSAGE);return;if(jtxtArra

25、y0.getText().trim().equals()/若用戶IP文本框輸入為空,提示JOptionPane.showMessageDialog(this,用戶IP不能為空!,信息,JOptionPane.INFORMATION_MESSAGE);return;if(jtxtArray1.getText().trim().equals()/若端口號(hào)文本框輸入為空,提示JOptionPane.showMessageDialog(this,用戶端口號(hào)不能為空!,信息,JOptionPane.INFORMATION_MESSAGE);return;/查詢學(xué)號(hào)文本中所輸學(xué)號(hào)是否存在于STUDENT表

26、中sql=select StuNO,Password from STUDENT where StuNO=+Integer.parseInt(jtxtArray2.getText().trim();db=new DataBase();db.selectDb(sql);tryif(!(db.rs.next()/若學(xué)號(hào)錯(cuò)誤,輸出提示對(duì)話框JOptionPane.showMessageDialog(this,輸入了錯(cuò)誤的學(xué)號(hào)!,消息, JOptionPane.INFORMATION_MESSAGE);else/得到輸入學(xué)號(hào)的學(xué)生的姓名和班級(jí)String stuNO=db.rs.getString(1)

27、.trim(),password=db.rs.getString(2).trim();if(jtxtArray2.getText().trim().equals(stuNO)&String.valueOf(jpassword.getPassword().equals(password)/登錄成功jlArray4.setText(恭喜您,登錄成功!);new StudentSystem();this.dispose();else/登錄失敗jlArray4.setText(對(duì)不起,登錄失??!);catch(Exception ex) ex.printStackTrace();db.dbClose(

28、); /關(guān)閉數(shù)據(jù)庫(kù)鏈接public static void main(Stringargs)new Login();登錄失敗:登錄成功:學(xué)生端登錄成功2, 數(shù)據(jù)庫(kù)操作類框架3, public class DataBase4, 5, Connection con=null;/聲明Connection引用6, Statement stat;7, ResultSet rs;8, int count;9, public static String message; /聲明一個(gè)靜態(tài)成員變量10, public static Login log;11, public DataBase()12, try/加

29、載MySQL的驅(qū)動(dòng)類,并創(chuàng)建數(shù)據(jù)庫(kù)連接13, Class.forName(org.gjt.mm.mysql.Driver);14, /con=java.sql.DriverManager.getConnection(jdbc:mysql:/localhost:3306/test,root,null);15, con=DriverManager.getConnection(jdbc:mysql:/+message+/test?useUnicode=true&characterEncoding=GBK,root,zhanghai);16, stat=con.createStatement();/創(chuàng)

30、建Statement對(duì)象17, 18, catch(Exception e)/如果從Login類傳的參數(shù)不對(duì),則提示出錯(cuò)19, JOptionPane.showMessageDialog(log,用戶IP或端口號(hào)錯(cuò)誤!,20, 信息,JOptionPane.INFORMATION_MESSAGE);21, 22, 23, public void selectDb(String sql)/聲明select方法24, try25, /sql = new String(sql.getBytes(),ISO-8859-1);26, rs=stat.executeQuery(sql);27, 28, c

31、atch(Exception ie)ie.printStackTrace();29, 30, public int updateDb(String sql)/聲明update方法31, try32, sql = new String(sql);/轉(zhuǎn)碼33, count=stat.executeUpdate(sql);34, 35, catch(Exception ie)ie.printStackTrace();36, return count;37, 38, public void dbClose()/聲明close方法39, trycon.close();40, catch(Exceptio

32、n e)e.printStackTrace();41, 42, 這段代碼主要實(shí)現(xiàn)了加載MYSQL的JDBC驅(qū)動(dòng)。并且創(chuàng)建了數(shù)據(jù)庫(kù)連接和STATEMENT對(duì)象3,管理端界面的實(shí)現(xiàn)模塊管理端界面的實(shí)現(xiàn),窗體左邊是一個(gè)樹(shù)狀列表控件,右邊是一個(gè)卡片布局的面板,實(shí)現(xiàn)代碼如下:package wyf.hxl;import java.awt.*;import java.awt.event.*;import javax.swing.event.*;import javax.swing.*;import javax.swing.tree.*;import java.io.*;public class Root

33、extends JFrame/創(chuàng)建節(jié)點(diǎn)數(shù)組DefaultMutableTreeNode dmtn=new DefaultMutableTreeNode(new NodeValue(圖書館管理系統(tǒng)),new DefaultMutableTreeNode(new NodeValue(學(xué)生用戶管理),new DefaultMutableTreeNode(new NodeValue(圖書管理),new DefaultMutableTreeNode(new NodeValue(查詢圖書),new DefaultMutableTreeNode(new NodeValue(借閱預(yù)約圖書),new Defau

34、ltMutableTreeNode(new NodeValue(歸還掛失圖書),new DefaultMutableTreeNode(new NodeValue(交納罰款),new DefaultMutableTreeNode(new NodeValue(管理員管理),new DefaultMutableTreeNode(new NodeValue(退出);DefaultTreeModel dtm=new DefaultTreeModel(dmtn0);/創(chuàng)建樹(shù)模型,指定根節(jié)點(diǎn)為學(xué)生管理系統(tǒng)JTree jt=new JTree(dtm);/創(chuàng)建包含dtm樹(shù)模型的JTree對(duì)象JScrollPa

35、ne jsp=new JScrollPane(jt);/為JTree創(chuàng)建滾動(dòng)窗體private JSplitPane jsplr=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true);/創(chuàng)建分割窗體對(duì)象private JPanel jp=new JPanel();/創(chuàng)建JPanel對(duì)象Image image=new ImageIcon(tsgl.jpg).getImage();ImageIcon ii = new ImageIcon(image);private JLabel jlRoot=new JLabel(ii);private Manager

36、 mg;/登陸管理員名String mgNo;/管理員IDCardLayout cl=new CardLayout();/獲取卡片布局管理器引用public Root(String mgNo)this.mgNo=mgNo;/獲得管理員IDmg=new Manager(mgNo);/創(chuàng)建管理員管理面板this.setManager();/設(shè)置管理員權(quán)限this.initJp();/初始化卡片布局面板this.addTreeListener();/為樹(shù)節(jié)點(diǎn)注冊(cè)事件監(jiān)聽(tīng)器for(int i=1;i9;i+)/向根節(jié)點(diǎn)添加子節(jié)點(diǎn)dtm.insertNodeInto(dmtni,dmtn0,i-1);j

37、t.setEditable(false);/設(shè)置該樹(shù)中節(jié)點(diǎn)是可編輯的this.add(jsplr);/將包含樹(shù)的滾動(dòng)窗口添加進(jìn)窗體jsplr.setLeftComponent(jt);/將包含樹(shù)的滾動(dòng)窗口添加進(jìn)左邊的子窗口jp.setBounds(200,50,600,500);/為jp設(shè)置大小位置并添加進(jìn)右邊的子窗口jsplr.setRightComponent(jp);jsplr.setDividerLocation(200);/設(shè)置分隔條的初始位置jsplr.setDividerSize(4);/設(shè)置分隔條的寬度jlRoot.setFont(new Font(Courier,Font.P

38、LAIN,30);jlRoot.setHorizontalAlignment(JLabel.CENTER);jlRoot.setVerticalAlignment(JLabel.CENTER);/設(shè)置窗體的關(guān)閉動(dòng)作,標(biāo)題,大小,位置及可見(jiàn)性this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Image image=new ImageIcon(ico.gif).getImage();this.setIconImage(image);this.setTitle(圖書管理系統(tǒng));/設(shè)置窗體首次出現(xiàn)的大小和位置-自動(dòng)居中Dimension scree

39、nSize = Toolkit.getDefaultToolkit().getScreenSize();int centerX=screenSize.width/2;int centerY=screenSize.height/2;int w=500;/本窗體寬度int h=400;/本窗體高度this.setBounds(centerX-w/2,centerY-h/2-100,w,h);/設(shè)置窗體出現(xiàn)在屏幕中央this.setExtendedState(JFrame.MAXIMIZED_BOTH);/窗體全屏this.setVisible(true);/設(shè)置窗體可見(jiàn)jt.setShowsRoo

40、tHandles(true);/設(shè)置顯示根節(jié)點(diǎn)的控制圖標(biāo)public void setManager()String sql=select permitted from manager where mgNo=+mgNo+;DataBase db=new DataBase();/創(chuàng)建數(shù)據(jù)庫(kù)類對(duì)象db.selectDb(sql);/執(zhí)行查詢trydb.rs.next();/結(jié)果集游標(biāo)下移String str=db.rs.getString(1).trim();/得到管理員權(quán)限if(str.equals(0)mg.setFlag(false);/設(shè)置管理員權(quán)限catch(Exception e)e.

41、printStackTrace();public void initJp()jp.setLayout(cl);/設(shè)置布局管理器為卡片布局jp.add(jlRoot,root);/添加根結(jié)點(diǎn)顯示信息jp.add(new Student(),stu);/添加學(xué)生管理模塊界面jp.add(new BookManage(),bm);/添加圖書管理模塊界面jp.add(new SearchBook(),sb);/添加查找圖書管理界面jp.add(new BorrowBook(),bb);/添加借閱預(yù)約圖書模塊界面jp.add(new ReturnBook(),rb);/添加歸還掛失圖書界面jp.add(

42、this.mg,Manager);/添加管理員管理模塊界面jp.add(new ExceedTime(),et);/添加罰款處理界面public void addTreeListener()jt.addTreeSelectionListener(new TreeSelectionListener()public void valueChanged(TreeSelectionEvent e)DefaultMutableTreeNode cdmtn=/得到選中的節(jié)點(diǎn)對(duì)象(DefaultMutableTreeNode)e.getPath().getLastPathComponent();NodeVa

43、lue cnv=(NodeValue)cdmtn.getUserObject();/得到自定義節(jié)點(diǎn)對(duì)象if(cnv.value.equals(圖書館管理系統(tǒng))/顯示根結(jié)點(diǎn)信息cl.show(jp,root);if(cnv.value.equals(學(xué)生用戶管理)/顯示學(xué)生用戶管理界面cl.show(jp,stu);else if(cnv.value.equals(圖書管理)/顯示圖書管理界面cl.show(jp,bm);if(cnv.value.equals(查詢圖書)/顯示查詢圖書界面cl.show(jp,sb);else if(cnv.value.equals(借閱預(yù)約圖書)/顯示借閱預(yù)約

44、圖書界面cl.show(jp,bb);else if(cnv.value.equals(歸還掛失圖書)/顯示歸還掛失圖書界面cl.show(jp,rb);else if(cnv.value.equals(交納罰款)/顯示繳納罰款界面cl.show(jp,et);else if(cnv.value.equals(管理員管理)/顯示管理員管理界面cl.show(jp,Manager);else if(cnv.value.equals(退出)/顯示退出界面int i=JOptionPane.showConfirmDialog(Root.this,是否退出系統(tǒng)?,消息,JOptionPane.YES_

45、NO_OPTION);if(i=JOptionPane.YES_OPTION)/退出系統(tǒng)System.exit(0););public static void main(String args)new Root(wyf);class NodeValueString value;/自定義節(jié)點(diǎn)對(duì)象字符屬性public NodeValue(String value)/構(gòu)造器this.value=value;public String getValue()/value的Get方法return this.value;Overridepublic String toString()/重寫toString方

46、法return value;3, 查詢圖書功能實(shí)現(xiàn)模塊當(dāng)學(xué)生用戶在學(xué)生信息系統(tǒng)中,單擊查詢圖書節(jié)點(diǎn)時(shí),就會(huì)進(jìn)入查詢圖書界面,頁(yè)面開(kāi)發(fā)的詳細(xì)代碼如下:package wyf.hxl;import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.table.*;import javax.swing.event.*;import java.sql.*;import java.util.*;import java.util.Date;public class SearchBook extends JP

47、anel implements ActionListenerint flag;String sql;DataBase db;/創(chuàng)建分割方向?yàn)樯舷碌腏SplitePane對(duì)象private JSplitPane jsp=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true);private JPanel jpt=new JPanel();/創(chuàng)建JPanel對(duì)象private JPanel jpb=new JPanel();/創(chuàng)建表示下拉列表框數(shù)據(jù)模型的字符串?dāng)?shù)組private String str=書名,出版社,作者,購(gòu)買時(shí)間;private JComboB

48、ox jcb=new JComboBox(str);/創(chuàng)建下拉列表框private JButton jb=new JButton(提交);/創(chuàng)建按鈕private JLabel jlArray=new JLabelnew JLabel( 書 名),new JLabel( 作 者),new JLabel(出版社);private JTextField jtxtArray=new JTextField/創(chuàng)建文本框new JTextField(),new JTextField(),new JTextField(),new JTextField();private JRadioButton jrbAr

49、ray=/創(chuàng)建單選按鈕new JRadioButton(簡(jiǎn)單查詢,true),new JRadioButton(高級(jí)查詢);private ButtonGroup bg=new ButtonGroup();/創(chuàng)建按鈕組Vector head = new Vector();/定義表頭head.add(書號(hào));head.add(書名);head.add(作者);head.add(出版社);head.add(購(gòu)進(jìn)時(shí)間);head.add(是否借閱);head.add(是否預(yù)約);Vector data=new Vector();/定義檢索出的書的基本信息DefaultTableModel dtm=n

50、ew DefaultTableModel(data,head);/創(chuàng)建表格模型JTable jt=new JTable(dtm); /創(chuàng)建Jtable對(duì)象JScrollPane jspn=new JScrollPane(jt);/將JTable封裝到滾動(dòng)窗格public SearchBook()this.setLayout(new GridLayout(1,1);/設(shè)置查詢圖書界面為網(wǎng)格布局/設(shè)置整個(gè)RetrunBook界面上下部分均為空布局管理器jpt.setLayout(null);jpb.setLayout(null);/設(shè)置單選框的大小、位置,并添加事件監(jiān)聽(tīng)器jpt.add(jcb);

51、jcb.setBounds(160,20,150,20);jcb.addActionListener(this);/添加JButton設(shè)置其大小位置并添加事件監(jiān)聽(tīng)器jpt.add(jb);jb.setBounds(560,20,120,20);jb.addActionListener(this);for(int i=0;i2;i+)/對(duì)單選按鈕進(jìn)行設(shè)置jrbArrayi.setBounds(20,20+i*40,100,20);jpt.add(jrbArrayi);jrbArrayi.addActionListener(this);bg.add(jrbArrayi);for(int i=0;i3;i+)/設(shè)置標(biāo)簽和文本框的坐標(biāo),并將

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論