版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 目錄1 概述 1.編寫目的 2.項(xiàng)目背景 3.定義 4.參考資料 5.開發(fā)環(huán)境2 需求分析 1.問題提出 2.系統(tǒng)的業(yè)務(wù)功能分析 3.需完成的功能3 系統(tǒng)需求說明 1.對(duì)功能的規(guī)定 2.對(duì)性能的規(guī)定 3.輸入輸出要求4 新系統(tǒng)的邏輯模型 1.圖書館組織機(jī)構(gòu)分析 2.系統(tǒng)功能結(jié)構(gòu)圖 3.業(yè)務(wù)流程圖 4.數(shù)據(jù)流程圖 5.數(shù)據(jù)字典一概述1、編寫目的 按照關(guān)系型數(shù)據(jù)庫(kù)的基本原理,綜合運(yùn)用所學(xué)的知識(shí),以小組為單位,設(shè)計(jì)開發(fā)一個(gè)小型的圖書管理系統(tǒng)。通過對(duì)一個(gè)實(shí)際問題的分析、設(shè)計(jì)與實(shí)現(xiàn),將原理與應(yīng)用相結(jié)合,使學(xué)生學(xué)會(huì)如何把書本上學(xué)到的知識(shí)用于解決實(shí)際問題,培養(yǎng)學(xué)生的動(dòng)手能力;另一方面,使學(xué)生能深入理解和靈
2、活掌握教學(xué)內(nèi)容2、項(xiàng)目背景數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。圖書館采取手工方式對(duì)圖書借閱情況進(jìn)行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時(shí)對(duì)它比較清楚,時(shí)間一長(zhǎng),如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了。造成查詢費(fèi)時(shí)、費(fèi)力。如要對(duì)很長(zhǎng)時(shí)間以前的圖書進(jìn)行更改就更加困難了。 。 a.待開發(fā)的軟件系統(tǒng)的名稱是圖書管理系統(tǒng) b.本軟件適用于教育界,他是比較完善的系統(tǒng)管理軟件,對(duì)圖書館的書籍、讀者資料、借還書等可以進(jìn)行方便的管理。 C.開發(fā)員:蔚奇秀,曹海花,李小峰
3、,祁樂3、定義數(shù)據(jù)流程圖(DFD):為描述軟件系統(tǒng)中的信息流提供了一個(gè)圖形方法。箭頭代表數(shù)據(jù)流,方框代表數(shù)據(jù)的源點(diǎn)或終點(diǎn),圓框代表數(shù)據(jù)流的交換,雙杠代表數(shù)據(jù)存儲(chǔ)的地方。數(shù)據(jù)字典是對(duì)數(shù)據(jù)流程圖中的數(shù)據(jù),變換等進(jìn)行精確的定義。4、參考資料 1薩師煊、王珊數(shù)據(jù)庫(kù)系統(tǒng)概論 高等教育2000.2 2俞盤祥、沈金發(fā)數(shù)據(jù)庫(kù)系統(tǒng)原理清華大學(xué)2000.6 3王珊、陳紅數(shù)據(jù)庫(kù)系統(tǒng)原理教程清華大學(xué)1998.7 4施伯樂、丁寶康數(shù)據(jù)庫(kù)系統(tǒng)教程高等教育1999.125、 開發(fā)環(huán)境 WindowXP,/7 Microsoft Visual C+, SQLSerevr2000.一、 需求分析1、問題的提出: 圖書館作為一種
4、信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對(duì)信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對(duì)于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對(duì)借書卡的人工檢查進(jìn)行,對(duì)借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)X的信息管理手段。有必要建立一個(gè)圖書管理系統(tǒng),使圖書管理工作規(guī)X化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠
5、及時(shí)、準(zhǔn)確、有效的查詢和修改圖書情況。2、系統(tǒng)的業(yè)務(wù)功能分析: 1) 建立讀者類,實(shí)現(xiàn)對(duì)讀者編號(hào)、XX、所在單位等信息的描述。 2) 建立書籍類,實(shí)現(xiàn)對(duì)圖書的編號(hào)、名稱、作者、出版日期、價(jià)格、采購(gòu)日 期、單價(jià)、數(shù)量、金額、版次、分類號(hào)、ISBN等信息的描述。 3) 建立用于記錄借書情況的類,實(shí)現(xiàn)輸入讀者編號(hào)和書籍編號(hào)后成功借書的描述。 系統(tǒng)的業(yè)務(wù)流程分析:3、需完成的功能1) 圖書基本情況的錄入、修改、刪除等基本操作。2) 辦理借書卡模塊。3) 實(shí)現(xiàn)借書功能。4) 實(shí)現(xiàn)還書功能。5) 能方便的對(duì)圖書進(jìn)行查詢。6) 對(duì)超期的情況能自動(dòng)給出提示信息。7) 具有數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)功能。 二、 系統(tǒng)需
6、求說明 1、對(duì)功能的規(guī)定經(jīng)過以上詳細(xì)的用戶調(diào)查,在現(xiàn)行業(yè)務(wù)流程和數(shù)據(jù)分析的基礎(chǔ)上,基本可以確定系統(tǒng)設(shè)計(jì)必須達(dá)到的目標(biāo)。 以下是圖書管理系統(tǒng)必須具備的功能:1.圖書基本情況的錄用:對(duì)于購(gòu)進(jìn)的新書,系統(tǒng)必須具備圖書信息資料的錄入功能。當(dāng)圖書資料發(fā)生變化,如圖書丟失或有錯(cuò)誤信息輸入時(shí),則應(yīng)能夠及時(shí)對(duì)數(shù)據(jù)進(jìn)行修改和補(bǔ)充。2.辦理借書卡模塊:系統(tǒng)的主要功能之一,供本校學(xué)生借閱圖書。3.實(shí)現(xiàn)借書功能:可以方便學(xué)生們借書。 4.實(shí)現(xiàn)還書功能:歸還圖書,并進(jìn)行登記。5. 能方便的對(duì)圖書進(jìn)行查閱:可以快速簡(jiǎn)單的對(duì)圖書進(jìn)行查找一些信息。6. 對(duì)超期的情況能自動(dòng)給出提示信息:告訴那些同學(xué)說借書的時(shí)間已超期。7. 具
7、有數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)功能:可以在丟失后再找回。2、對(duì)性能的規(guī)定為了保證系統(tǒng)能夠長(zhǎng)期、安全、穩(wěn)定、可靠、高效的運(yùn)行,圖書管理系統(tǒng)應(yīng)該滿足以下的性能需求:(1)、系統(tǒng)處理的準(zhǔn)確性和及時(shí)性系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。在系統(tǒng)設(shè)計(jì)和開發(fā)過程中,要充分考慮系統(tǒng)當(dāng)前和將來可能承受的工作量,使系統(tǒng)的處理能力和響應(yīng)時(shí)間能夠滿足學(xué)校對(duì)信息處理的需求。(2)、系統(tǒng)的開放性和系統(tǒng)的可擴(kuò)充性圖書管理系統(tǒng)在開發(fā)過程中,應(yīng)該充分考慮以后的可擴(kuò)充性。例如用戶查詢的需求也會(huì)不斷的更新和完善。所有這些,都要求系統(tǒng)提供足夠的手段進(jìn)行功能的調(diào)整和擴(kuò)充。而要實(shí)現(xiàn)這一點(diǎn),應(yīng)通過系統(tǒng)的開放性來完成,既系統(tǒng)應(yīng)是一個(gè)開放系統(tǒng),只
8、要符合一定的規(guī)X,可以簡(jiǎn)單的加入和減少系統(tǒng)的模塊,配置系統(tǒng)的硬件。通過軟件的修補(bǔ)、替換完成系統(tǒng)的升級(jí)和更新?lián)Q代。(3)、系統(tǒng)的易用性和易維護(hù)性圖書管理系統(tǒng)是直接面對(duì)使用人員的,而使用人員往往對(duì)計(jì)算機(jī)并不時(shí)非常熟悉。這就要求系統(tǒng)能夠提供良好的用戶接口,易用的人機(jī)交互界面。要實(shí)現(xiàn)這一點(diǎn),就要求系統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語和中文信息的界面;針對(duì)用戶可能出現(xiàn)的使用問題,要提供足夠的在線幫助,縮短用戶對(duì)系統(tǒng)熟悉的過程。(4)、系統(tǒng)的標(biāo)準(zhǔn)性系統(tǒng)在設(shè)計(jì)開發(fā)使用過程中都要涉及到很多計(jì)算機(jī)硬件、軟件。所有這些都要符合主流國(guó)際、國(guó)家和行業(yè)標(biāo)準(zhǔn)。(5)、系統(tǒng)的先進(jìn)性目前計(jì)算系統(tǒng)的技術(shù)發(fā)展相當(dāng)快,做為圖書管理系統(tǒng)工
9、程,在系統(tǒng)的生命周期盡量做到系統(tǒng)的先進(jìn),充分完成企業(yè)信息處理的要求而不至于落后。這一方面通過系統(tǒng)的開放性和可擴(kuò)充性,不斷改善系統(tǒng)的功能完成。另一方面,在系統(tǒng)設(shè)計(jì)和開發(fā)的過程中,應(yīng)在考慮成本的基礎(chǔ)上盡量采用當(dāng)前主流并先進(jìn)且有良好發(fā)展前途的產(chǎn)品。(6)、系統(tǒng)的響應(yīng)速度圖書管理系統(tǒng)系統(tǒng)在日常處理中的響應(yīng)速度為秒級(jí),達(dá)到實(shí)時(shí)要求,以及時(shí)反饋信息。在進(jìn)行統(tǒng)計(jì)分析時(shí),根據(jù)所需數(shù)據(jù)量的不同而從秒級(jí)到分鐘級(jí),原則是保證操作人員不會(huì)因?yàn)樗俣葐栴}而影響工作效率。3、輸入輸出要求 輸入:鍵盤,鼠標(biāo),掃描儀等。 輸出:顯示器,打印機(jī)等。三、 新系統(tǒng)的邏輯模型1、圖書館組織機(jī)構(gòu)分析 通過對(duì)圖書館工作人員的調(diào)
10、查,圖書館主要有4個(gè)部門。借閱管理部負(fù)責(zé)圖書的借閱管理;圖書管理部負(fù)責(zé)書籍類別標(biāo)準(zhǔn)的制定,類別信息的輸入;書籍類別信息的查詢,修改;書籍信息的輸入;讀者管理部負(fù)責(zé)主要針對(duì)各類讀者信息進(jìn)行管理;系統(tǒng)管理部負(fù)責(zé)用戶管理和密碼管理。組織機(jī)構(gòu)圖如下:圖書館組織機(jī)構(gòu)圖2、系統(tǒng)功能結(jié)構(gòu)圖3、數(shù)據(jù)流程圖 通過對(duì)業(yè)務(wù)流程圖的細(xì)化,可得到系統(tǒng)的分層數(shù)據(jù)流圖。如下圖:頂層數(shù)據(jù)流圖:圖書館管理系統(tǒng)的頂層數(shù)據(jù)圖對(duì)頂層數(shù)據(jù)流圖細(xì)化、分解可得到圖書管理系統(tǒng)的第一層數(shù)據(jù)流圖,如下圖:圖書館管理系統(tǒng)的第一層數(shù)據(jù)圖對(duì)第一層數(shù)據(jù)流圖進(jìn)一步細(xì)化、分解,可以得到第二層數(shù)據(jù)流圖,如下圖:借閱信息管理數(shù)據(jù)流圖四Java代碼 Book.j
11、avaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;import java.text.*;import java.util.Date;import java.math.*;public class Book implements ActionListenerprivate utton btn1,btn2,btn3,btn4; private JTextField jtfd1,jtfd2,jtfd3,jtfd5,jtfd6, jtfd7,jtfd8,jtfd9,jtfd10; pr
12、ivate JComboBox jcbx; private JTextArea jta; private Connection con; private PreparedStatement pstmt1,pstmt2; private JFrame frame;public Book()JFrame.setDefaultLookAndFeelDecorated(true); frame=new JFrame("圖書入庫(kù)"); Container content=frame.getContentPane(); Toolkit tool=frame.getToolkit();
13、Dimension wndsize=tool.getScreenSize(); JLabel lb1=new JLabel("書名:"); JLabel lb2=new JLabel("條形碼:"); JLabel lb3=new JLabel("分類號(hào):"); JLabel lb4=new JLabel("分類名:"); JLabel lb5=new JLabel("排架號(hào):"); JLabel lb6=new JLabel(":"); JLabel lb7=new JLa
14、bel("出版日期:"); JLabel lb8=new JLabel("入庫(kù)日期:"); JLabel lb9=new JLabel("價(jià)格:"); JLabel lb10=new JLabel(""); JLabel lb11=new JLabel("簡(jiǎn)介:"); jtfd1=new JTextField(); jtfd2=new JTextField(); jtfd3=new JTextField(); String kindname="馬克思列寧主義、思想",&quo
15、t;綜合性圖書","哲學(xué)","社會(huì)科學(xué)總論", "政治、法律","軍事","經(jīng)濟(jì)","文化、科學(xué)、教育、體育","語言文字","文學(xué)","天文學(xué)、地球科學(xué)", "生物科學(xué)","醫(yī)藥、衛(wèi)生","農(nóng)業(yè)科學(xué)","工業(yè)技術(shù)","藝術(shù)","歷史、地理","數(shù)理化","自
16、然科學(xué)總論", "環(huán)境科學(xué)","航空航天","交通" jcbx=new JComboBox(kindname); jtfd5=new JTextField(); jtfd6=new JTextField(); jtfd7=new JTextField(); jtfd8=new JTextField(); jtfd9=new JTextField(); jtfd10=new JTextField(); jtfd8.addFocusListener(new FocusHandler(); jta=new JTextArea();
17、 jta.setLineWrap(true); btn1=new utton("添加"); btn2=new utton("刪除"); btn3=new utton("撤消"); btn4=new utton("退出"); btn1.addActionListener(this); btn2.addActionListener(this); btn3.addActionListener(this); btn4.addActionListener(this); JPanel pl1=new JPanel(); JPa
18、nel pl2=new JPanel(); JPanel pl3=new JPanel(); JPanel pl4=new JPanel(); pl1.setLayout(new GridLayout(5,4,6,6); pl1.add(lb1); pl1.add(jtfd1); pl1.add(lb2); pl1.add(jtfd2); pl1.add(lb10); pl1.add(jtfd10); pl1.add(lb3); pl1.add(jtfd3); pl1.add(lb4); pl1.add(jcbx); pl1.add(lb5); pl1.add(jtfd5); pl1.add(
19、lb6); pl1.add(jtfd6); pl1.add(lb7); pl1.add(jtfd7); pl1.add(lb8); pl1.add(jtfd8); pl1.add(lb9); pl1.add(jtfd9); GridBagLayout gridbag=new GridBagLayout(); GridBagConstraints constraints=new GridBagConstraints(); pl2.setLayout(gridbag); constraints.weightx=constraints.weighty=10.0; constraints.fill=c
20、onstraints.BOTH; gridbag.setConstraints(lb11,constraints); constraints.weightx=1; constraints.gridwidth=1; pl2.add(lb11,constraints); gridbag.setConstraints(jta,constraints); constraints.weightx=9; constraints.gridheight=3; constraints.gridwidth=3; constraints.insets=new Insets(10,15,10,20); pl2.add
21、(jta,constraints); GridBagLayout gridbag1=new GridBagLayout(); GridBagConstraints constraints1=new GridBagConstraints(); constraints1.weightx=1.0; constraints1.fill=constraints1.BOTH; pl3.setLayout(gridbag1); /gridbag1.setConstraints(pl1,constraints1); constraints1.weighty=0.8; constraints1.gridwidt
22、h=constraints1.REMAINDER; pl3.add(pl1,constraints1); /gridbag1.setConstraints(pl2,constraints1); constraints1.weighty=0.2; constraints1.gridheight=constraints.REMAINDER; pl3.add(pl2,constraints1); pl4.setLayout(new GridLayout(1,4,6,0); pl4.add(btn1); pl4.add(btn2); pl4.add(btn3); pl4.add(btn4); cont
23、ent.setLayout(new BorderLayout(); content.add(pl3,BorderLayout.CENTER); content.add(pl4,BorderLayout.SOUTH); frame.setBounds(100,100,550,400); frame.setResizable(false); frame.setVisible(true); try String sqlStr1,sqlStr2; sqlStr1="insert into book (bookname,bannercode,kindnumber,kindname,"
24、+ "positionnumber,publishingcompany,publishtime,putintime,price,"+ "state,introduction,author) values(?,?,?,?,?,?,?,?,?,'在架',?,?)" sqlStr2="delete from book where bannercode=?" Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnect
25、ion("jdbc:odbc:library"); pstmt1=con.prepareStatement(sqlStr1); pstmt2=con.prepareStatement(sqlStr2); catch(ClassNotFoundException e) catch(SQLException sqle) class FocusHandler implements FocusListener java.util.Date today=new java.util.Date(); DateFormat format=DateFormat.getDateInstance
26、(); String formatted=format.format(today); public void focusGained(FocusEvent e)Object obj=(JTextField)e.getSource(); if(obj=jtfd8) jtfd8.setText(formatted); public void focusLost(FocusEvent e) public void actionPerformed(ActionEvent e) String str1,str2,str3,str4,str5,str6,str7,str8,str9,str10,str11
27、; str1=jtfd1.getText().trim(); str2=jtfd2.getText().trim(); str3=jtfd3.getText().trim(); str4=(String)jcbx.getSelectedItem(); str5=jtfd5.getText().trim(); str6=jtfd6.getText().trim(); str7=jtfd7.getText().trim(); str8=jtfd8.getText().trim(); str9=jtfd9.getText().trim(); str10=jtfd10.getText().trim()
28、; str11=jta.getText().trim(); int result; try Object obj=(utton)e.getSource(); if(obj=btn1) if(str1.equals("")|str2.equals("")|str3.equals("")|str4.equals("")|str5.equals("") JOptionPane.showMessageDialog(frame,"can't be null"); return;
29、 if(str6.equals("")|str7.equals("")|str8.equals("")|str9.equals("")|str10.equals("") JOptionPane.showMessageDialog(frame,"can't be null"); return; java.sql.Date today1,today2; BigDecimal money=new BigDecimal(str9); today1=java.sql.Date.
30、valueOf(str7); today2=java.sql.Date.valueOf(str8); pstmt1.setString(1,str1); pstmt1.setString(2,str2); pstmt1.setString(3,str10); pstmt1.setString(4,str4); pstmt1.setString(5,str5); pstmt1.setString(6,str6); pstmt1.setDate(7,today1); pstmt1.setDate(8,today2); pstmt1.setBigDecimal(9,money); pstmt1.se
31、tString(10,str11); pstmt1.setString(11,str10); result=pstmt1.executeUpdate(); if(result>0) JOptionPane.showMessageDialog(frame,"add successfully!"); jtfd1.setText(""); jtfd2.setText(""); jtfd3.setText(""); jtfd5.setText(""); jtfd6.setText("&q
32、uot;); jtfd7.setText(""); jtfd8.setText(""); jtfd9.setText(""); jtfd10.setText(""); jta.setText(""); else if(obj=btn2) if(str2.equals("") JOptionPane.showMessageDialog(frame,"bannercode can't be null"); return; pstmt2.setStrin
33、g(1,str2); result=pstmt2.executeUpdate(); if(result>0) JOptionPane.showMessageDialog(frame,"Delete successfully!"); else if(obj=btn3) jtfd1.setText(""); jtfd2.setText(""); jtfd3.setText(""); jtfd5.setText(""); jtfd6.setText(""); jtfd7.se
34、tText(""); jtfd8.setText(""); jtfd9.setText(""); jtfd10.setText(""); jta.setText(""); else if(obj=btn4) pstmt1.close(); pstmt2.close(); con.close(); frame.dispose(); catch(SQLException sqle) System.err.println(sqle); public static void main(Stringarg
35、s)new Book();BookInfo.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.table.*;import java.util.*;import java.sql.*;import javax.swing.table.AbstractTableModel;public class BookInfo implements ActionListener private JFrame frame; private Statement stmt; private C
36、onnection con; private JTable tableTest; private StringcolumnNames="書名","條形碼","分類號(hào)","分類名","排架號(hào)","", "出版日期","入庫(kù)日期","狀態(tài)","簡(jiǎn)介" private ObjectrowData=new Object10010; private utton btn; private JRadioButt
37、on rbtn1,rbtn2; private JTextField jtfd; public BookInfo()frame=new JFrame("圖書信息查詢");Container content=frame.getContentPane(); btn=new utton("查詢"); jtfd=new JTextField(); JPanel pl=new JPanel(); rbtn1=new JRadioButton("書名"); rbtn2=new JRadioButton("條形碼"); rbtn
38、1.setSelected(true); btn.addActionListener(this); ButtonGroup group=new ButtonGroup(); group.add(rbtn1); group.add(rbtn2); pl.setLayout(new GridLayout(1,4,10,0); pl.add(rbtn1); pl.add(rbtn2); pl.add(jtfd); pl.add(btn); tableTest=new JTable(rowData,columnNames);tableTest.setRowHeight(20); tableTest.s
39、etPreferredScrollableViewportSize(new Dimension(500, 30); JScrollPane scrollPane=new JScrollPane(tableTest); content.add(pl,BorderLayout.NORTH); content.add(scrollPane,BorderLayout.CENTER); frame.pack(); frame.setVisible(true); tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverMa
40、nager.getConnection("jdbc:odbc:library"); stmt=con.createStatement();catch(ClassNotFoundException e)System.err.println(e.getMessage();catch(SQLException e)System.err.println(e.getMessage();public void actionPerformed(ActionEvent e)Object obj=e.getSource(); ResultSet result; String sqlStr;
41、int i=0; String str=jtfd.getText().trim(); if(rbtn2.isSelected() sqlStr="select bookname,bannercode,kindnumber,kindname,positionnumber,"+ "publishingcompany,publishtime,putintime,state,introduction from book where "+ "bannercode="+"'"+str+"'"
42、 else sqlStr="select bookname,bannercode,kindnumber,kindname,positionnumber,"+ "publishingcompany,publishtime,putintime,state,introduction from book where "+ "bookname like '"+str+"%'" try if(obj=btn) if(str.equals("") JOptionPane.showMessage
43、Dialog(frame,"Text was null!"); return; result=stmt.executeQuery(sqlStr); for(int j=0;j<rowData.length;j+) for(int k=0;k<10;k+) rowDatajk=null; tableTest.repaint(); while(result.next() if(i<rowData.length) rowDatai0=result.getString("bookname"); rowDatai1=result.getStrin
44、g("bannercode"); rowDatai2=result.getString("kindnumber"); rowDatai3=result.getString("kindname"); rowDatai4=result.getString("positionnumber"); rowDatai5=result.getString("publishingcompany"); rowDatai6=result.getDate("publishtime"); rowDa
45、tai7=result.getDate("putintime"); rowDatai8=result.getString("state"); rowDatai9=result.getString("introduction"); i+; elseJOptionPane.showMessageDialog(frame,"please specify the bookname!"); jtfd.setText(""); catch(SQLException sqle) System.err.prin
46、tln(sqle); public static void main(Stringargs)new BookInfo();Borrow.javaimport javax.swing.*;import java.awt.*;import java.sql.*;import java.awt.event.*;import java.util.*;import java.text.*;import java.math.*;public class Borrow extends JFrame implements ActionListenerprivate JTextField jtfd1,jtfd2
47、,jtfd3,jtfd4; private utton btn1,btn2,btn3; private Connection con; private Statement stmt; private PreparedStatement pstmt; private JFrame frame; private JLabel lb5;public Borrow()frame=new JFrame("借書"); Container content=frame.getContentPane(); content.setLayout(new GridLayout(6,2,10,10)
48、; JLabel lb1=new JLabel("借書證號(hào):"); JLabel lb2=new JLabel("條形碼:"); JLabel lb3=new JLabel("借書日期:"); JLabel lb4=new JLabel("應(yīng)還日期:"); lb5=new JLabel("罰款:"); jtfd1=new JTextField(); jtfd2=new JTextField(); jtfd3=new JTextField(); jtfd4=new JTextField(); jt
49、fd1.addFocusListener(new FocusHandler(); jtfd2.addFocusListener(new FocusHandler(); jtfd3.addFocusListener(new FocusHandler(); jtfd4.addFocusListener(new FocusHandler(); btn1=new utton("確定"); btn2=new utton("退出"); btn3=new utton("交款"); btn1.addActionListener(this); btn2
50、.addActionListener(this); btn3.addActionListener(this); content.add(lb1); content.add(jtfd1); content.add(lb2); content.add(jtfd2); content.add(lb3); content.add(jtfd3); content.add(lb4); content.add(jtfd4); content.add(lb5); content.add(btn3); content.add(btn1); content.add(btn2); frame.setBounds(1
51、00,100,420,320); try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection("jdbc:odbc:library"); stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); pstmt=con.prepareStatement("insert into borrow(user_cardnumber,ban
52、nercode,borrowdate,"+ "receivedate,renew) values(?,?,?,?,'否')"); catch(ClassNotFoundException e) System.err.println(e); catch(SQLException e) System.err.println(e); frame.setVisible(true); class FocusHandler implements FocusListener String str1,sqlStr1,state; ResultSet result;
53、 java.util.Date today1=new java.util.Date(); java.util.Date today2=new java.util.Date(); DateFormat format=DateFormat.getDateInstance(); String formatted1=format.format(today1); public void focusGained(FocusEvent e) Object obj=(JTextField)e.getSource(); if(obj=jtfd4) today2.setMonth(today1.getMonth(
54、)+1); String formatted2=format.format(today2); jtfd4.setText(formatted2); try if(obj=jtfd2) str1=jtfd1.getText().trim(); if(str1.equals("") jtfd1.requestFocus(); JOptionPane.showMessageDialog(frame,"Text was null!"); return; sqlStr1="select * from user where user_cardnumber=
55、"+"'"+str1+"'" result=stmt.executeQuery(sqlStr1); if(!result.next() jtfd1.requestFocusInWindow(); JOptionPane.showMessageDialog(frame,"請(qǐng)注冊(cè)!"); jtfd1.setText(""); return; else if(result.getString("user_state").equals("掛失") jtfd1
56、.requestFocus(); JOptionPane.showMessageDialog(frame,"This card has been reportlost!"); jtfd1.setText(""); return; sqlStr1="select * from borrow where user_cardnumber="+ "'"+str1+"'" result=stmt.executeQuery(sqlStr1); int i=0; while(result.next() i=i+1; if(i=4) jtfd1.requestFocus(); JOptionPane.showMessageDialog(frame,"you can't borrow more than four boo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年產(chǎn)00萬噸鋼鐵生產(chǎn)線建設(shè)合同
- 2024正式版車輛轉(zhuǎn)讓合同標(biāo)準(zhǔn)范本
- 土建承包合同范本2024年
- 2024幼兒園合作合同范文
- 上海買房合同書
- 2024個(gè)人店鋪出租合同范本
- 2024華碩電腦經(jīng)銷商訂貨單合同大客戶
- 商鋪合作經(jīng)營(yíng)協(xié)議
- 2024臨時(shí)工合同協(xié)議書版臨時(shí)工合同范本
- 2024新媒體主播合同
- 部編版語文二年級(jí)上冊(cè)《語文園地三我喜歡的玩具》(教案)
- 軟件開發(fā)項(xiàng)目驗(yàn)收方案
- 崗位整合整治與人員優(yōu)化配置實(shí)施細(xì)則
- 康復(fù)治療技術(shù)的職業(yè)規(guī)劃課件
- 蜜雪冰城營(yíng)銷案例分析總結(jié)
- 交換機(jī)CPU使用率過高的原因分析及探討
- 易制毒化學(xué)品安全管理崗位責(zé)任分工制度
- 住宿服務(wù)免責(zé)聲明
- 2023年醫(yī)療機(jī)構(gòu)消毒技術(shù)規(guī)范醫(yī)療機(jī)構(gòu)消毒技術(shù)規(guī)范
- MOOC 家庭與社區(qū)教育-南京師范大學(xué) 中國(guó)大學(xué)慕課答案
- 構(gòu)造法與數(shù)列課件高三數(shù)學(xué)二輪復(fù)習(xí)
評(píng)論
0/150
提交評(píng)論