版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、綜 合 設(shè) 計 報 告小型圖書管理系統(tǒng)學(xué)生姓名:學(xué) 號:年級專業(yè):學(xué) 院:提交日期:2012年2月23日小型圖書管理系統(tǒng)一、實驗?zāi)康?、 熟練掌握sql命令2、 掌握swing圖形用戶界面編程。3、 掌握java與數(shù)據(jù)庫的連接技術(shù)。4、 掌握java.sql包中提供各種類,編寫程序?qū)崿F(xiàn)數(shù)據(jù)庫信息的存取和查詢。5、 培養(yǎng)獨立查找資料,并解決問題的能力。二、實驗任務(wù)1、建立一個數(shù)據(jù)庫library,其中含有如下表格(字段):books(isbn,title,authors,publisher,editionnumber,publicationdate,type)reader(readerid,fi
2、rstname,lastname,address,phonenumber,limits)record(recordid,isbn,readerid,borrowingdate,returndate)administrator(administratorid,password)student(readerid,password)使用microsoft sql server 2005數(shù)據(jù)庫系統(tǒng),提前設(shè)置好books,reader等的數(shù)據(jù)。2、使用java編程實現(xiàn)如下功能:(1)用戶可通過相應(yīng)界面,依據(jù)圖書的isbn,title,authors,publisher,publicationdate,t
3、ype的組合條件,查詢數(shù)據(jù)庫中的符合條件的書籍,程序需將查詢結(jié)果以表格的方式展示給用戶,用戶可選擇結(jié)果排序的依據(jù)。(2)提供用戶相應(yīng)的方式借書。當(dāng)用戶選擇借閱某本書籍時,應(yīng)查詢該書是否已經(jīng)被借出:如果被借出,則顯示信息(“該書已被借出,歸還時間xxxxx”);如該書未被借出,則查閱讀者權(quán)限(是否超出該讀者所能借閱的最大數(shù)目書籍),如未超出顯示借書成功,并向數(shù)據(jù)庫中增加一條借閱記錄,如果超出,則顯示信息(“已超過您的最大借閱數(shù)目)。(3)提供用戶相應(yīng)的方式還書。還書成功時,將該次的借閱記錄刪除。(4)修改數(shù)據(jù)庫設(shè)計,通過相應(yīng)界面,提供reader、books的增加、刪除、修改功能。(5)修改數(shù)據(jù)
4、庫設(shè)計,可查詢某用戶的所有借閱記錄。三、開發(fā)工具與平臺1.開發(fā)工具:eclipse默認(rèn)是一個和jbuilder類似的java開發(fā)工具,但它不僅僅只 是java開發(fā)工具,只要裝上相應(yīng)的插件,eclipse也可作為其它語言的開發(fā)工具。如c/c+插件(cdt)。2.開發(fā)平臺:jdk1.73.數(shù)據(jù)庫:microsoft sql server 2005四、設(shè)計內(nèi)容1.界面設(shè)計 (1)登錄界面(可選擇學(xué)生用戶或者管理員身份)主要采用gridlayout布局管理。(2) 學(xué)生用戶界面(主要通過jtree和卡片布局) a.卡片布局主要是實現(xiàn): 當(dāng)用戶通過jtree選擇不同功能時,實現(xiàn)右邊界面的切換。 b.界面
5、如下:(3) 管理界面的設(shè)計此界面主要采用borderlayout和box布局方式。2. 邏輯設(shè)計圖書館管理系統(tǒng)學(xué)生端管理員端查詢圖書歸還圖書借閱圖書學(xué)生用戶管理添加圖書借閱圖書歸還圖書管理添加加用戶管理員規(guī)則查詢圖書2.1、學(xué)生用戶端l 查詢圖書,學(xué)生用戶可以進行簡單查詢和模糊查詢;l 歸還圖書,學(xué)生自動輸入自己的id號,再輸入所要還的書,點擊確認(rèn)歸還;l 借閱圖書,借閱圖書,可由學(xué)生自行操作,當(dāng)然這有點不符合圖書館的原則。2.2、管理員端l 學(xué)生用戶管理,原本打算實現(xiàn)用戶信息的增、刪、改、查,時間關(guān)系此功能并沒有實現(xiàn)。l 圖書管理,包括圖書的增、刪、改、查,時間關(guān)系,目前也只做了增加圖書和
6、查詢圖書的功能。l 借閱管理,主要是學(xué)生借閱圖書、歸還圖書和交納罰款的管理。l 查詢圖書,可以進行簡單查詢和模糊查詢。l 歸還圖書管理,實現(xiàn)學(xué)生的還書管理。l 添加新用戶,目前只做了學(xué)生用戶的添加,管理員得添加還要涉及超級管理員的管理,又時間較短,故也沒有去實現(xiàn)。3. 程序測試 在程序測試中,主要問題在于組件放到有布局管理器的容器中時,其大小的設(shè)置有沒有受到影響,比如setalignmentx(alignmentx)在其他布局管理其中不起作用,只在box布局管理器中起作用,網(wǎng)格布局管理器的組件大小(按鈕等)大小也沒辦法自定義大小,介于此,我在寫 addbookframe()和adduserfr
7、ame()兩個界面時,采用 setlayout(null),使我能夠完全按照自己的意愿來設(shè)置各組件的大小,同時也發(fā)現(xiàn),其實布局管理器給我們提供的界面管理,也是非常非常好用好看的。五、附錄 用eclipse編寫的包及代碼: 一 mon.frame: 管理學(xué)生用戶和管理員得公共界面,包括借書界面(borrowpanel.java)、登錄界面(login.java)、還書界面(returnpanel.java),查詢(lookpanel.java)。public class borrowpanel extends jpanel implements actionlistener private fi
8、nal int max_student_borrow = 6; private jbutton yes; private jbutton no; private jbutton look; private jtable result; private jpanel pnorth; private jpanel p1; private jpanel p2; private jlabel bookisbn; private jtextfield isbn; private string c =isbn,書名,作者,出版社,編號,出版日期,類型; private string data = new
9、string3535; private jscrollpane s; private string readerid; private boolean islook =false;/是否存在; private string date;/借閱日期; private string rdate;/還書日期; private string dbdriver=com.microsoft.sqlserver.jdbc.sqlserverdriver; private string url = jdbc:sqlserver:/localhost:1433;databasename=library; priv
10、ate static final long serialversionuid = -8959055752439578441l; public borrowpanel(string readerid) super(); setname(借閱圖書); setsize(450,400); setlayout(new borderlayout(); setbackground(color.red); this.readerid = readerid;/當(dāng)前登錄的讀者id號; init(); this.add(pnorth,borderlayout.north); s.setautoscrolls(tr
11、ue); this.add(s,borderlayout.center); setvisible(true); private void init() yes = new jbutton(確認(rèn)借閱);yes.setborder(borderfactory.createraisedbevelborder();yes.setpreferredsize(new dimension(150, 30);no = new jbutton(取消);no.setborder(borderfactory.createraisedbevelborder();no.setpreferredsize(new dime
12、nsion(150, 30);look = new jbutton(查詢);look.setborder(borderfactory.createraisedbevelborder();look.setpreferredsize(new dimension(150, 30);bookisbn = new jlabel(請輸入所要借閱的圖書isbn號:);isbn = new jtextfield(15);pnorth = new jpanel();pnorth.setlayout(new borderlayout();p1 =new jpanel();p2 =new jpanel();p1.s
13、etlayout(new flowlayout();p2.setlayout(new flowlayout();p2.add(bookisbn,swingconstants.center);p2.add(isbn);p1.add(yes);p1.add(no);p1.add(look);pnorth.add(p1,borderlayout.center);pnorth.add(p2,borderlayout.north);result = new jtable(data,c);s = new jscrollpane(result);look.addactionlistener(this);ye
14、s.addactionlistener(this);no.addactionlistener(this);public void actionperformed(actionevent e) if(e.getsource() = yes)simpledateformat f = new simpledateformat(yyyy.mm.dd);date = f.format(new date();rdate = returndate(date);if(result.getselectedrow()=0)&(islook)borrow();else if(e.getsource() = look
15、) islook = look();else if(e.getsource() = no)private string returndate(string date2) /歸還日期一個月string d = date2.split(.);string str1 = ,str2 = ,str3= ;if(d1.equals(10)|d1.equals(11)|d1.equals(12)if(d1.equals(12) str1 = string.valueof(integer.parseint(d0)+1); str2 = 01; str3 = d2;elsestr1 =d0;int s = i
16、nteger.parseint(d1)-1;str2 = string.valueof(s);str3 = d2;else int l = integer.parseint(d1.substring(1, 2)+1;str1 = d0;str2 = string.valueof(l);str3 = d2;return str1+.+str2+.+str3;private void borrow() connection cn; statement sm;string bookisbn = isbn.gettext().trim();string sql1 = select * from rec
17、ord where isbn = +bookisbn+;/從record中查看是否被借走;string sql2 = insert into record values(null,+bookisbn+,+readerid+,+date+,+rdate+);/插入到record;string sql3 = select * from reader where readerid = +readerid+;/查看讀者已借閱的圖書數(shù);resultset rs1,rs2;int isinsert;int readerbook = 0;/已借閱的圖書數(shù);try class.forname(dbdriver
18、); / 加載驅(qū)動器cn = drivermanager.getconnection(url, sa, 123456); / 連接數(shù)據(jù)庫sm = cn.createstatement();/查詢該讀者已借閱的圖書數(shù);rs2 = sm.executequery(sql3);while(rs2.next()+readerbook;if(readerbook = max_student_borrow)joptionpane.showmessagedialog(null, 該讀者借閱圖書數(shù)已超過上限,不能再繼續(xù)借書);return;else /查詢此圖書被借閱的情況;rs1 =sm.executequ
19、ery(sql1);if(!rs1.next()/判斷是否已經(jīng)被別人借走;isinsert = sm.executeupdate(sql2);if(isinsert = 1)/借書成功joptionpane.showmessagedialog(null,借閱成功);else joptionpane.showmessagedialog(null, 借書功能維護中,暫時無法借閱);/end if(isinsert = 1)else string str = rs1.getstring(returndate);joptionpane.showmessagedialog(null, 此圖書已被借走,不
20、在架+歸還日期+str); / end else cn.close();catch(exception e)joptionpane.showmessagedialog(null, 數(shù)據(jù)庫連接失敗。);private boolean look() /按isbn號查詢connection cn; statement sm;string bookisbn = isbn.gettext().trim();string sql = select * from books where isbn = +bookisbn+;resultset rs;try class.forname(dbdriver); /
21、 加載驅(qū)動器cn = drivermanager.getconnection(url, sa, 123456); / 連接數(shù)據(jù)庫sm = cn.createstatement();rs = sm.executequery(sql);if(rs.next()/如果存在此書; data00 = rs.getstring(1); data01 = rs.getstring(2); data02 = rs.getstring(3); data03 = rs.getstring(4); data04 = rs.getstring(5); data05 = rs.getstring(6); data06
22、= rs.getstring(7); repaint(); cn.close(); return true; else cn.close();return false;catch(exception e)joptionpane.showmessagedialog(null, 查詢失敗,請檢查連接);return false;public class loginframe extends jframe implements actionlistener /* 用戶登錄界面 */private jlabel numlabel;private jlabel codelabel;private jla
23、bel background;private jtextfield num;private jpasswordfield code;private jbutton loginbutton;private jbutton exitbutton;private jpanel pcenter;private jpanel psouth;private jradiobutton adiministrator;private jradiobutton student;private static final long serialversionuid = -8959055752439578441l;lo
24、ginframe()super();settitle(用戶登錄);setsize(350,300);/設(shè)置窗體大小setresizable(false);/設(shè)置不可調(diào)窗體大小dimension dimension = toolkit.getdefaulttoolkit().getscreensize();/返回窗口的大小setlocation(dimension.width-getwidth()/2,(dimension.height-getheight()/2);createloginframe();getcontentpane().add(background,borderlayout.n
25、orth);getcontentpane().add(pcenter,borderlayout.center);getcontentpane().add(psouth,borderlayout.south);pack();setvisible(true);private void createloginframe() numlabel = new jlabel(用戶名,swingutilities.center);codelabel = new jlabel(密碼,swingutilities.center);background = new jlabel(new imageicon(c:us
26、ershzlworkspacelibrarybackgroundlogin.png);num = new jtextfield();code = new jpasswordfield();code.setechochar(*);/設(shè)置此 jpasswordfield 的回顯字符。loginbutton = new jbutton(登錄);loginbutton.setborder(borderfactory.createraisedbevelborder();loginbutton.setpreferredsize(new dimension(150, 30);exitbutton = new
27、 jbutton(退出);exitbutton.setborder(borderfactory.createraisedbevelborder();exitbutton.setpreferredsize(new dimension(150, 30);pcenter = new jpanel();psouth = new jpanel();adiministrator = new jradiobutton(管理員);adiministrator.addactionlistener(this);student = new jradiobutton(學(xué)生);student.addactionlist
28、ener(this);loginbutton.addactionlistener(this);exitbutton.addactionlistener(this);adiministrator.addactionlistener(this);student.addactionlistener(this);buttongroup group = new buttongroup();group.add(adiministrator);group.add(student);pcenter.setlayout(new gridlayout(2,2,3,3); psouth.setlayout(new
29、gridlayout(2,2,4,4);pcenter.add(numlabel);pcenter.add(num);pcenter.add(codelabel);pcenter.add(code);loginbutton.setpreferredsize(new dimension(2,2);exitbutton.setpreferredsize(new dimension(2,2);psouth.add(student);psouth.add(adiministrator);psouth.add(loginbutton);psouth.add(exitbutton);public stat
30、ic void main(string args) new loginframe();public void actionperformed(actionevent e) if(e.getsource() = loginbutton)&adiministrator.isselected()if(new check(num.gettext().trim().tostring(),string.valueof(code.getpassword().trim(),a).checkright()dispose();new administratorframe(num.gettext().trim();
31、else joptionpane.showmessagedialog(null, 密碼錯誤或賬號不存在,請重新登錄);/end loginbutton adiministrator.isselected() else if(e.getsource() = loginbutton)&student.isselected() if(new check(num.gettext().trim(),string.valueof(code.getpassword().trim(),s).checkright()dispose();new studentframe(num.gettext().trim();
32、else joptionpane.showmessagedialog(null, 密碼錯誤或賬號不存在,請重新登錄);/end loginbutton student.isselected() else if(e.getsource() = exitbutton) system.exit(0); public class lookpanel extends jpanel implements actionlistener private jlabel labelbook;private jtextfield textbook;private jpanel p1;private jpanel p
33、2;private jscrollpane s;private cardlayout card;private jbutton lookallbutton;private jbutton lookbutton;private jbutton rt;private jtable looktable;private string c = isbn, 書名, 作者, 出版社, 編號, 出版日期, 類型 ;private string data = new string2525;private string dbdriver=com.microsoft.sqlserver.jdbc.sqlserver
34、driver;private string url = jdbc:sqlserver:/localhost:1433;databasename=library;private static final long serialversionuid = -8959055752439578441l;public lookpanel() super();setname(查詢圖書);setsize(250, 300);setbackground(color.red);init();p1.setlayout(new gridlayout(8, 2, 3, 3);for (int i = 0; i labe
35、lbook.length; +i) p1.add(labelbooki);p1.add(textbooki);p1.add(lookbutton);p1.add(lookallbutton);lookbutton.addactionlistener(this);lookallbutton.addactionlistener(this);rt.addactionlistener(this);looktable = new jtable(data, c);s = new jscrollpane(looktable);p2.setlayout(new borderlayout();p2.add(s,
36、 borderlayout.center);p2.add(rt, borderlayout.south);this.setlayout(card);this.add(p1, 1);this.add(p2, 2);setvisible(true);private void init() p1 = new jpanel();p2 = new jpanel();rt = new jbutton(返回查詢條件設(shè)置);rt.setborder(borderfactory.createraisedbevelborder();rt.setpreferredsize(new dimension(150, 30
37、);lookbutton = new jbutton(依據(jù)參數(shù)查詢);lookbutton.setborder(borderfactory.createraisedbevelborder();lookbutton.setpreferredsize(new dimension(150, 30);lookallbutton = new jbutton(查詢?nèi)?;lookallbutton.setborder(borderfactory.createraisedbevelborder();lookallbutton.setpreferredsize(new dimension(150, 30);l
38、abelbook = new jlabel7;textbook = new jtextfield7;for (int t = 0; t labelbook.length; +t) labelbookt = new jlabel(, jlabel.center);textbookt = new jtextfield();labelbook0.settext(isbn);labelbook1.settext(書名);labelbook2.settext(作者);labelbook3.settext(出版社);labelbook4.settext(編號);labelbook5.settext(出版日
39、期);labelbook6.settext(類型);card = new cardlayout();public void actionperformed(actionevent e) if (e.getsource() = lookallbutton) lookallbook();card.show(this, 2); else if (e.getsource() = lookbutton) lookbook();card.show(this, 2); else if (e.getsource() = rt) card.show(this, 1);private void lookbook(
40、) connection con;statement stmt;resultset result;string sql;string s = new string7;for(int i =0;is.length;+i)si = ;if(!textbook0.gettext().trim().equals()s0 = textbook0.gettext().trim();sql = select * from books where isbn = +s0+;else if(!textbook4.gettext().trim().equals()s4 = textbook4.gettext().t
41、rim();sql = select * from books where editionnumber = +s6+;else sql = select * from books where title like %+ s1+% or type like %+s6+% +or authors like %+s2+% or publisher like %+s3+% or publicationdate like %+s5+% ; int c = 0;try class.forname(dbdriver); / 加載驅(qū)動器con = drivermanager.getconnection(url
42、, sa, 123456); / 連接數(shù)據(jù)庫stmt = con.createstatement();result = stmt.executequery(sql);while (result.next() datac0 = result.getstring(1);datac1 = result.getstring(2);datac2 = result.getstring(3);datac3 = result.getstring(4);datac4 = result.getstring(5);datac5 = result.getstring(6);datac6 = result.getstr
43、ing(7);+c;con.close(); catch (exception e) joptionpane.showmessagedialog(null, 查詢失敗,請檢查連接);private void lookallbook() connection con;statement stmt;resultset result;string sql;int c = 0; sql = select * from books;try class.forname(dbdriver); / 加載驅(qū)動器con = drivermanager.getconnection(url, sa, 123456);
44、 / 連接數(shù)據(jù)庫stmt = con.createstatement();result = stmt.executequery(sql);if (result != null) while (result.next() datac0 = result.getstring(1);datac1 = result.getstring(2);datac2 = result.getstring(3);datac3 = result.getstring(4);datac4 = result.getstring(5);datac5 = result.getstring(6);datac6 = result.
45、getstring(7);+c;/ end while()con.close();/ end if catch (exception e) joptionpane.showmessagedialog(null, 查詢失敗,請檢查連接情況);public class returnpanel extends jpanel implements actionlistener private jpanel pcenter;/ 用戶結(jié)束情況顯示;private jpanel pncenter;private jpanel pccenter;private jpanel pscenter;private
46、jpanel psouth;private jlabel labelid;private jtextfield textid1;private jbutton query;private jbutton newquery;private jtable table;/ 借書情況表;private string c = isbn, 書名, 作者, 出版社, 編號, 出版日期, 類型 ;private string data = new string3030;private jscrollpane s;private jlabel bookid;private jtextfield textid2;
47、private jbutton returnbutton;private jbutton returnup;/ 返回上級界面; private string dbdriver=com.microsoft.sqlserver.jdbc.sqlserverdriver; private string url = jdbc:sqlserver:/localhost:1433;databasename=library;private static final long serialversionuid = -8959055752439578441l;public returnpanel() super
48、();setname(書籍歸還管理界面);dimension d = toolkit.getdefaulttoolkit().getscreensize();setlocation(d.width - getwidth() / 2 - 350,(d.height - getheight() / 2 - 350);setsize(600, 650);this.setlayout(new borderlayout();init();query.addactionlistener(this);newquery.addactionlistener(this);returnbutton.addactio
49、nlistener(this);returnup.addactionlistener(this);this.add(pcenter, borderlayout.center);this.add(psouth, borderlayout.south);setvisible(true);private void init() pcenter = new jpanel();pcenter.setborder(borderfactory.createtitledborder(borderfactory.createraisedbevelborder(), 用戶借書情況顯示);pncenter = new jpanel();pccenter = new jpanel();pscenter = new jpanel();psouth = new jpanel();labelid = new jlabel(請輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租賃租房合同范本格式錦集五篇
- 公園項目可行性研究報告
- 糧倉房項目可行性研究報告
- 年產(chǎn)5000噸中藥飲片生產(chǎn)線技改擴建項目可行性研究報告59
- 教師讀書心得500字大全5篇
- 區(qū)域內(nèi)行業(yè)保護合同
- 新生軍訓(xùn)總結(jié)講話稿5篇
- 青春夢想演講稿格式(素材下載7篇)
- 安全心得100字簡單(8篇)
- 法律事務(wù)所公文及督辦管理流程
- GB/T 42455.2-2024智慧城市建筑及居住區(qū)第2部分:智慧社區(qū)評價
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識
- YYT 0653-2017 血液分析儀行業(yè)標(biāo)準(zhǔn)
- 刑事受害人授權(quán)委托書范本
- 《文明上網(wǎng)健康成長》的主題班會
- 框架結(jié)構(gòu)冬季施工方案
- 醫(yī)療技術(shù)臨床應(yīng)用及新技術(shù)新項目管理制度考核試題及答案
- 裝配式擋土墻施工方案(完整版)
- 防炫(AG工藝)玻璃屏項目可行性研究報告模版
- 既有玻璃幕墻安全性鑒定技術(shù)規(guī)程
- 小學(xué)漢語拼音字母表卡片自制(四線格版)Word編輯
評論
0/150
提交評論