第一篇:Java圖書管理系統(tǒng)實習報告
陜西科技大學畢業(yè)實習(專業(yè)實習)報告
一、實習目的
本次實習的目的主要有2個:
(一)通過親手對計算機硬件的拆卸,對計算機的硬件要有更深刻的認識和理解。
(二)通過設計圖書管理系統(tǒng),對相關編程知識有了更進一步的運用,以及其具體實現(xiàn)的細節(jié)也有了更深刻的認識。
二、實習單位及崗位介紹
本次實習在陜西科技大學理學院的綜合實驗室進行。
三、實習安排
本次實習的時間是三周:前一周進行硬件實習,后兩周進行軟件實習。
四、實習內容
(一)硬件實習:
2月23日開始了為期1周的硬件實習,在這段時間里,主要是進行了對計算機主機進行了裝卸,通過裝卸讓我們對計算機內部各個部件的協(xié)同工作有了更深的認識。(二)軟件實習:
3月1日開始了為期2周的軟件實習。我選擇的題目是“圖書管理系統(tǒng)”,對于這個題目,整個系統(tǒng)是由3個數據表,3類用戶,以及4類動作。1.配置數據庫
在SQL Server2000中創(chuàng)建圖書管理系統(tǒng)的數據庫demo,創(chuàng)建3個數據表books,bookBrowse,UserTable。
2.生成配置文件hibernate.cfg.xml.文件如下:
陜西科技大學畢業(yè)實習(專業(yè)實習)報告
3.創(chuàng)建持久化對象以及創(chuàng)建映射文件:
4.Hibernate操作數據庫的方法(HibernateUtil.java)。
陜西科技大學畢業(yè)實習(專業(yè)實習)報告
5.系統(tǒng)主界面(LibraryWindow.java)。6.用戶管理:
1)用戶登錄(UserLogin.java)2)添加用戶(UserAdd.java)3)修改用戶(UserModify.java)4)刪除用戶(UserDelete.java)7.書籍管理模塊:
1)書籍添加(BookAdd.java)
2)書籍信息修改(BookModify.java)3)書籍刪除(BookDelete.java)4)書籍列表(BookList.java)8.借書管理模塊:
1)借閱圖書類(BorrowBook.java)2)修改出借圖書信息(BorrowInfo.java)9.還書管理模塊:
1)書籍還入(ReturnBook.java)2)還書信息類(ReturnInfo.java)10.部分運行效果圖如下:
陜西科技大學畢業(yè)實習(專業(yè)實習)報告
陜西科技大學畢業(yè)實習(專業(yè)實習)報告
五、實習總結和體會
通過這次實習,我對計算機的軟件和硬件有了全面的了解。
拿硬件來說吧,以前也就是聽說過什么總線,cpu,主板,硬盤這些概念,通過實習我真實的接觸了這些部件,對其內部的安裝有了直接的認識。拿軟件來說,這次我做這個系統(tǒng)只要是應用java語言的AWT元件和swing組件,以及hibernate實現(xiàn)從對象到關系的映射,其實我做的時候對hibernate也不是很了解,但是做的過程發(fā)現(xiàn)了困難就會主動的去找各種資源尋求解答,當然這個過程就是成長的過程。軟件架構或者語言有很多很多,所以,我還得好好努力啊。
第二篇:java圖書管理系統(tǒng)心得
經過這周的學習我們終于把java圖書管理系統(tǒng)做出了了,雖然不是很好但是能把它做出來我們?yōu)榇烁械礁吲d。在此次小學期的學習過程中,我體會到看學習是一個很反復的過程,不斷的出現(xiàn)錯誤,不斷的調試,不斷的迷茫,不斷的清晰,呵呵,這些都是必須要要經歷的,所以不要害怕了。學做java圖書管理系統(tǒng),所以現(xiàn)在所遇到的一切,我都挺坦然的面對。突然覺得這個學習的過程很美好,是一種享受,雖然真的是很辛苦吧,但是很快樂,當自己能敲出的代碼,即使做出的是做簡單的東西,都會讓我很開心,很有成就感,對待學習的態(tài)度跟以前不一樣了,還是那個很簡單的想法,就是想把java學好
學習java就是件耗時間的事兒,如果你不肯投入自己的時間,根本不可能在短時間就把java給學好了,原本我對java接觸了時間就比較短,如果我還不努力的話,我根本就不能在4周的時間內把java圖書管理系統(tǒng)的項目做完,所以我就不能去做娛樂,休閑的事情,而是坐在電腦前,敲著那些代碼,不斷的出錯,不斷的去調試,這就是我現(xiàn)在的生活,完全的浸泡在java中了,跟同學們一起去吃飯的時候,也在不斷的探討著學習中出現(xiàn)的問題。
在學習Java期間我們做了一些程序,我們班的同學也都積極準備,完成的還不錯!在做程序時,我遇到了一些難題,有時也會出現(xiàn)錯誤,時間長了弄得我心煩意亂,但是我知道只有堅持下去才會成功。
因為Java是一種面向對象的編程語言,剛接觸Java的人可能會感覺比較抽象,不過沒關系不用著急,上課的時候認真聽老師講解,一些概念知識慢慢去理解,課后多做練習,熟能生巧,哪怕是你的記性再好,課后不去強化練習也沒用,只有多練了,當你在做項目時你才能很熟練的寫出你想要代碼。平日在練習時若遇到不會的題目或是在項目中遇到解決不了的問題,首先不要急著去問老師,或是急著上百度搜答案,那樣即使你得到了正確答案,以后在其它地方遇到同樣的問題,你還是不知道怎么解決!所以說,在遇到問題時,自己先想想要怎么解決,回顧一下老師上課的內容,如果自己還是想不出什么好方法的話,也可以向同學請教請教,三人行必有我?guī)?,你不懂的地方其他同學可能知道。如果還是沒能解決,那只有問老師或是上網搜索查找相應的解決方法了。好好理解其解決思路。真的弄不懂時我就問同學一起解決。通過幾個階段的練習,我覺得又把學過的知識復習了一遍,通過同學之間的交流溝通,我覺得我們班的學習氛圍更加濃厚了。
我覺得把Java學會的關鍵一點就是堅持練習。學習Java時每天必須保證一定量的練習,我們老師也說學習編程語言沒有捷徑可走。真的,只有每天反復操作了,經常寫代碼了,我們在遇到問題時才有一定的思路。欲速則不達,學習編程語言需要一個比較漫長的階段,不能一步登天,這需要一個過程,在這個過程中慢慢積累經驗,扎實基礎。不要以為寫出了一個簡單的小程序,就認為自己已經學的很好了,這只不過是在你學習編程過程中一個小小的實踐。不要滿足于現(xiàn)狀,要不斷完善自己的知識體系,善于總結實踐經驗。要端正自己的學習態(tài)度,是主動去學,而不是被動!提高自學能力。學習編程的秘訣是:編程、編程、再編程。不僅要多實踐,而且要快實踐,、嗎。
在我學習的期間,很多人對我的學習都有很大的幫助啊,班里的同學們,老師們,我覺得我是一個幸運兒,每次我都能在遇到問題的時候,都能找到能幫助我的人,呵呵,很開心哦~但是,我認為有些東西還是要自己去琢磨,去思考,去想。這樣才能不斷的進步。
第三篇:圖書管理系統(tǒng)需求分析報告附有java代碼
需
求
分
析
報
告
課程設計題目 :圖書管理系統(tǒng)
專業(yè):計算機科學與技術
班級:11060341X 姓名:蔚奇秀,曹?;?,李小峰,祁樂
目錄 一.概述 1.編寫目的 2.項目背景 3.定義 4.參考資料 5.開發(fā)環(huán)境 二.需求分析 1.問題提出
2.系統(tǒng)的業(yè)務功能分析 3.需完成的功能 三.系統(tǒng)需求說明 1.對功能的規(guī)定 2.對性能的規(guī)定 3.輸入輸出要求 四.新系統(tǒng)的邏輯模型 1.圖書館組織機構分析 2.系統(tǒng)功能結構圖 3.業(yè)務流程圖 4.數據流程圖 5.數據字典 一.概述
1、編寫目的
按照關系型數據庫的基本原理,綜合運用所學的知識,以小組為單位,設計開發(fā)一個小型的圖書管理系統(tǒng)。通過對一個實際問題的分析、設計與實現(xiàn),將原理與應用相結合,使學生學會如何把書本上學到的知識用于解決實際問題,培養(yǎng)學生的動手能力;另一方面,使學生能深入理解和靈活掌握教學內容
2、項目背景
數據處理手工操作,工作量大,出錯率高,出錯后不易更改。圖書館采取手工方式對圖書借閱情況進行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復雜;一般借閱情況是記錄在借書證上,圖書的數目和內容記錄在文件中,圖書館的工作人員和管理員也只是當時對它比較清楚,時間一長,如再要進行查詢,就得在眾多的資料中翻閱、查找了。造成查詢費時、費力。如要對很長時間以前的圖書進行更改就更加困難了。
a.待開發(fā)的軟件系統(tǒng)的名稱是《圖書管理系統(tǒng)》
b.本軟件適用于教育界,他是比較完善的系統(tǒng)管理軟件,對圖書館的書籍、讀者資料、借還書等可以進行方便的管理。
C.開發(fā)員:蔚奇秀,曹?;ǎ钚》?,祁樂
3、定義
數據流程圖(DFD):為描述軟件系統(tǒng)中的信息流提供了一個圖形方法。箭頭代表數據流,方框代表數據的源點或終點,圓框代表數據流的交換,雙杠代表數據存儲的地方。
數據字典是對數據流程圖中的數據,變換等進行精確的定義。
4、參考資料
1.薩師煊、王珊《數據庫系統(tǒng)概論》 高等教育出版社2000.2
2.俞盤祥、沈金發(fā)《數據庫系統(tǒng)原理》清華大學出版社2000.6
3.王珊、陳紅《數據庫系統(tǒng)原理教程》清華大學出版社1998.7
4.施伯樂、丁寶康《數據庫系統(tǒng)教程》高等教育出版社1999.12
5、開發(fā)環(huán)境
WindowXP,/7 Microsoft Visual C++,SQLSerevr2000.一、需求分析
1、問題的提出:
圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數據的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計算機進行信息管理。根據調查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質的手工處理,對于圖書借閱情況(如借書天數、超過限定借書時間的天數)的統(tǒng)計和核實等往往采用對借書卡的人工檢查進行,對借閱者的借閱權限、以及借閱天數等用人工計算、手抄進行。數據信息處理工作量大,容易出錯;由于數據繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。有必要建立一個圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改圖書情況。
2、系統(tǒng)的業(yè)務功能分析:
1)建立讀者類,實現(xiàn)對讀者編號、姓名、所在單位等信息的描述。
2)建立書籍類,實現(xiàn)對圖書的編號、名稱、作者、出版社、出版日期、價格、采購日 期、單價、數量、金額、版次、分類號、ISBN等信息的描述。
3)建立用于記錄借書情況的類,實現(xiàn)輸入讀者編號和書籍編號后成功借書的描述。
系統(tǒng)的業(yè)務流程分析:
3、需完成的功能
1)圖書基本情況的錄入、修改、刪除等基本操作。2)辦理借書卡模塊。3)實現(xiàn)借書功能。4)實現(xiàn)還書功能。
5)能方便的對圖書進行查詢。6)對超期的情況能自動給出提示信息。
7)具有數據備份和數據恢復功能。
二、系統(tǒng)需求說明
1、對功能的規(guī)定
經過以上詳細的用戶調查,在現(xiàn)行業(yè)務流程和數據分析的基礎上,基本可以確定系統(tǒng)設計必須達到的目標。
以下是圖書管理系統(tǒng)必須具備的功能:
1.圖書基本情況的錄用:對于購進的新書,系統(tǒng)必須具備圖書信息資料的錄入功能。當圖書資料發(fā)生變化,如圖書丟失或有錯誤信息輸入時,則應能夠及時對數據進行修改和補充。
2.辦理借書卡模塊:系統(tǒng)的主要功能之一,供本校學生借閱圖書。3.實現(xiàn)借書功能:可以方便學生們借書。
4.實現(xiàn)還書功能:歸還圖書,并進行登記。
5.能方便的對圖書進行查閱:可以快速簡單的對圖書進行查找一些信息。
6.對超期的情況能自動給出提示信息:告訴那些同學說借書的時間已超期。
7.具有數據備份和數據恢復功能:可以在丟失后再找回。
2、對性能的規(guī)定
為了保證系統(tǒng)能夠長期、安全、穩(wěn)定、可靠、高效的運行,圖書管理系統(tǒng)應該滿足以下的性能需求:
(1)、系統(tǒng)處理的準確性和及時性
系統(tǒng)處理的準確性和及時性是系統(tǒng)的必要性能。在系統(tǒng)設計和開發(fā)過程中,要充分考慮系統(tǒng)當前和將來可能承受的工作量,使系統(tǒng)的處理能力和響應時間能夠滿足學校對信息處理的需求。
(2)、系統(tǒng)的開放性和系統(tǒng)的可擴充性
圖書管理系統(tǒng)在開發(fā)過程中,應該充分考慮以后的可擴充性。例如用戶查詢的需求也會不斷的更新和完善。所有這些,都要求系統(tǒng)提供足夠的手段進行功能的調整和擴充。而要實現(xiàn)這一點,應通過系統(tǒng)的開放性來完成,既系統(tǒng)應是一個開放系統(tǒng),只要符合一定的規(guī)范,可以簡單的加入和減少系統(tǒng)的模塊,配置系統(tǒng)的硬件。通過軟件的修補、替換完成系統(tǒng)的升級和更新?lián)Q代。
(3)、系統(tǒng)的易用性和易維護性
圖書管理系統(tǒng)是直接面對使用人員的,而使用人員往往對計算機并不時非常熟悉。這就要求系統(tǒng)能夠提供良好的用戶接口,易用的人機交互界面。要實現(xiàn)這一點,就要求系統(tǒng)應該盡量使用用戶熟悉的術語和中文信息的界面;針對用戶可能出現(xiàn)的使用問題,要提供足夠的在線幫助,縮短用戶對系統(tǒng)熟悉的過程。
(4)、系統(tǒng)的標準性
系統(tǒng)在設計開發(fā)使用過程中都要涉及到很多計算機硬件、軟件。所有這些都要符合主流國際、國家和行業(yè)標準。
(5)、系統(tǒng)的先進性
目前計算系統(tǒng)的技術發(fā)展相當快,做為圖書管理系統(tǒng)工程,在系統(tǒng)的生命周期盡量做到系統(tǒng)的先進,充分完成企業(yè)信息處理的要求而不至于落后。這一方面通過系統(tǒng)的開放性和可擴充性,不斷改善系統(tǒng)的功能完成。另一方面,在系統(tǒng)設計和開發(fā)的過程中,應在考慮成本的基礎上盡量采用當前主流并先進且有良好發(fā)展前途的產品。
(6)、系統(tǒng)的響應速度
圖書管理系統(tǒng)系統(tǒng)在日常處理中的響應速度為秒級,達到實時要求,以及時反饋信息。在進行統(tǒng)計分析時,根據所需數據量的不同而從秒級到分鐘級,原則是保證操作人員不會因為速度問題而影響工作效率。
3、輸入輸出要求
輸入:鍵盤,鼠標,掃描儀等。
輸出:顯示器,打印機等。
三、新系統(tǒng)的邏輯模型
1、圖書館組織機構分析
通過對圖書館工作人員的調查,圖書館主要有4個部門。借閱管理部負責圖書的借閱管理;圖書管理部負責書籍類別標準的制定,類別信息的輸入;書籍類別信息的查詢,修改;書籍信息的輸入;讀者管理部負責主要針對各類讀者信息進行管理;系統(tǒng)管理部負責用戶管理和密碼管理。組織機構圖如下:
圖書館組織機構圖
2、系統(tǒng)功能結構圖
圖書館管理系統(tǒng) 借閱信息管理 圖書信息管理 讀者信息管理 系統(tǒng)管理 還書信息管理 借書信息管理 設置圖書信息 設置圖書種類 設置讀者信息 設置讀者種類 密碼管理 用戶管理還還還書書書信信信息息息查修添詢改加 借借借書書書信信信息息息查添修詢加改 圖圖圖書書書信信信息息息查修添詢改加 圖圖書書類類別別添修加改 讀讀讀者者者信信信息息息查修添詢改加 讀讀者者種種類類修添改加
3、數據流程圖
通過對業(yè)務流程圖的細化,可得到系統(tǒng)的分層數據流圖。如下圖: 頂層數據流圖:
圖書管理系統(tǒng)讀者信息會員信息讀者審核信息借閱信息借還書信息讀者圖書信息借書卡、借閱信息管理員 圖書館管理系統(tǒng)的頂層數據圖
對頂層數據流圖細化、分解可得到圖書管理系統(tǒng)的第一層數據流圖,如下圖:
借閱信息 借還書信息P1借閱信息管理借書信讀者息還書信息讀者P2圖書信息管理書庫文件管理員借書卡、借閱信息讀者資料讀者信息審核會員信息P3讀者信息管理讀者記錄管理員信息P4系統(tǒng)管理 圖書館管理系統(tǒng)的第一層數據圖
對第一層數據流圖進一步細化、分解,可以得到第二層數據流圖,如下圖: 借書卡P1.1身份審核合格讀者借書信息讀者記錄借還書信息P1.2借書登記管理員還書信息書庫文件P1.3書籍檢查合格書籍讀者還書信息P1.4還書處理借閱信息管理數據流圖
四.Java代碼 Book.java import 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 ActionListener {private JButton btn1,btn2,btn3,btn4;private JTextField jtfd1,jtfd2,jtfd3,jtfd5,jtfd6, jtfd7,jtfd8,jtfd9,jtfd10;private JComboBox jcbx;private JTextArea jta;private Connection con;private PreparedStatement pstmt1,pstmt2;private JFrame frame;
public Book(){JFrame.setDefaultLookAndFeelDecorated(true);frame=new JFrame(“圖書入庫”);Container content=frame.getContentPane();Toolkit tool=frame.getToolkit();Dimension wndsize=tool.getScreenSize();
JLabel lb1=new JLabel(“書名:”);JLabel lb2=new JLabel(“條形碼:”);JLabel lb3=new JLabel(“分類號:”);JLabel lb4=new JLabel(“分類名:”);JLabel lb5=new JLabel(“排架號:”);JLabel lb6=new JLabel(“出版社:”);JLabel lb7=new JLabel(“出版日期:”);JLabel lb8=new JLabel(“入庫日期:”);JLabel lb9=new JLabel(“價格:”);JLabel lb10=new JLabel(“作者:”);JLabel lb11=new JLabel(“簡介:”);
jtfd1=new JTextField();jtfd2=new JTextField();jtfd3=new JTextField();String[] kindname={“馬克思列寧主義、毛澤東思想”,“綜合性圖書”,“哲學”,“社會科學總論”, “政治、法律”,“軍事”,“經濟”,“文化、科學、教育、體育”,“語言文字”,“文學”,“天文學、地球科學”, “生物科學”,“醫(yī)藥、衛(wèi)生”,“農業(yè)科學”,“工業(yè)技術”,“藝術”,“歷史、地理”,“數理化”,“自然科學總論”, “環(huán)境科學”,“航空航天”,“交通”};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();jta.setLineWrap(true);btn1=new JButton(“添加”);btn2=new JButton(“刪除”);btn3=new JButton(“撤消”);btn4=new JButton(“退出”);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);JPanel pl1=new JPanel();JPanel 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(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=constraints.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(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.gridwidth=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);
content.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,”+ “positionnumber,publishingcompany,publishtime,putintime,price,”+ “state,introduction,author)',?,?)”;sqlStr2=“delete from book where bannercode=?”;
values(?,?,?,?,?,?,?,?,?,'
在架 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);con=DriverManager.getConnection(“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();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;
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();str11=jta.getText().trim();
int result;try{
Object obj=(JButton)e.getSource();if(obj==btn1){
if(str1.equals(“")|str2.equals(”“)|str3.equals(”“)|str4.equals(”“)|str5.equals(”“)){JOptionPane.showMessageDialog(frame,”can't be null“);return;}
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.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.setString(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(”“);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.setString(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.setText(”“);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(String[]args){new Book();} } BookInfo.java import 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 Connection con;private JTable tableTest;private String[]columnNames={”書名“,”條形碼“,”分類號“,”分類名“,”排架號“,”出版社“, ”出版日期“,”入庫日期“,”狀態(tài)“,”簡介“};private Object[][]rowData=new Object[100][10];private JButton btn;private JRadioButton rbtn1,rbtn2;private JTextField jtfd;
public BookInfo(){
frame=new JFrame(”圖書信息查詢“);Container content=frame.getContentPane();
btn=new JButton(”查詢“);jtfd=new JTextField();JPanel pl=new JPanel();
rbtn1=new JRadioButton(”書名“);rbtn2=new JRadioButton(”條形碼“);rbtn1.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.setPreferredScrollableViewportSize(new Dimension(500, 30));JScrollPane scrollPane=new JScrollPane(tableTest);content.add(pl,BorderLayout.NORTH);content.add(scrollPane,BorderLayout.CENTER);frame.pack();frame.setVisible(true);try
{Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);con=DriverManager.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;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+”'“;} 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.showMessageDialog(frame,”Text was null!“);return;} result=stmt.executeQuery(sqlStr);for(int j=0;j if(i rowData[i][0]=result.getString(”bookname“);rowData[i][1]=result.getString(”bannercode“);rowData[i][2]=result.getString(”kindnumber“);rowData[i][3]=result.getString(”kindname“);rowData[i][4]=result.getString(”positionnumber“);rowData[i][5]=result.getString(”publishingcompany“);rowData[i][6]=result.getDate(”publishtime“);rowData[i][7]=result.getDate(”putintime“);rowData[i][8]=result.getString(”state“); rowData[i][9]=result.getString(”introduction“);i++;} else{JOptionPane.showMessageDialog(frame,”please specify the bookname!“); } } jtfd.setText(”“);} } catch(SQLException sqle){System.err.println(sqle);} } public static void main(String[]args){new BookInfo();} } Borrow.java import 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 ActionListener {private JTextField jtfd1,jtfd2,jtfd3,jtfd4;private JButton btn1,btn2,btn3;private Connection con;private Statement stmt;private PreparedStatement pstmt;private JFrame frame;private JLabel lb5; JLabel lb1=new JLabel(”借書證號:“);JLabel lb2=new JLabel(”條形碼:“);JLabel lb3=new JLabel(”借書日期:“);JLabel lb4=new JLabel(”應還日期:“);lb5=new JLabel(”罰款:“); jtfd1=new JTextField();jtfd2=new JTextField();jtfd3=new JTextField();jtfd4=new JTextField();jtfd1.addFocusListener(new FocusHandler());public Borrow(){frame=new JFrame(”借書“);Container content=frame.getContentPane(); content.setLayout(new GridLayout(6,2,10,10)); jtfd2.addFocusListener(new FocusHandler());jtfd3.addFocusListener(new FocusHandler());jtfd4.addFocusListener(new FocusHandler());btn1=new JButton(”確定“);btn2=new JButton(”退出“);btn3=new JButton(”交款“);btn1.addActionListener(this);btn2.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(100,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,bannercode,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; 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()+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=“+”'“+str1+”'“; result=stmt.executeQuery(sqlStr1);if(!result.next()){ jtfd1.requestFocusInWindow();JOptionPane.showMessageDialog(frame,”請注冊!“); jtfd1.setText(”“);return;} else { if(result.getString(”user_state“).equals(”掛失“)){jtfd1.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 books!“); jtfd1.setText(”“); return;} } } if(obj==jtfd3){ jtfd3.setText(formatted1); str1=jtfd2.getText().trim();if(str1.equals(”“)){ jtfd2.requestFocus();JOptionPane.showMessageDialog(frame,”Text was null!“);return;} sqlStr1=”select state from book where bannercode=“+”'“+str1+”'“;result=stmt.executeQuery(sqlStr1);if(!result.next()){jtfd2.requestFocus(true);JOptionPane.showMessageDialog(frame,”invalid bannercode!“); jtfd2.setText(”“);return;} else {state=result.getString(”state“); if(state.equals(”離架“)){jtfd2.requestFocus(true);JOptionPane.showMessageDialog(frame,”this book has been lent!“); jtfd2.setText(”“);return;} } } } catch(SQLException sqle){System.err.println(sqle);} } public void focusLost(FocusEvent e){ try{ str1=jtfd1.getText().trim();sqlStr1=”select sum_account from punishment user_cardnumber=“+ ”'“+str1+”'“; result=stmt.executeQuery(sqlStr1); if(result.next()) { BigDecimal money=result.getBigDecimal(”sum_account“,2); lb5.setText(”罰款:“+money); } else {lb5.setText(”罰款:0.00“); } } catch(SQLException sqle) {System.err.println(sqle); } } where } public void actionPerformed(ActionEvent e){String sqlStr1,sqlStr2,str1,str2,str3,str4;int result;str1=jtfd1.getText().trim();str2=jtfd2.getText().trim();str3=jtfd3.getText().trim();str4=jtfd4.getText().trim();java.sql.Date today1,today2; Object obj=(JButton)e.getSource();try{ if(obj==btn1){ if(str1.equals(”“)|str2.equals(”“)|str3.equals(”“)|str4.equals(”“)) {JOptionPane.showMessageDialog(frame,”The Text can't be null!“);return;} sqlStr1=”update book set state=' 離 架 ' where bannercode=“+”'“+str2+”'“; today1=java.sql.Date.valueOf(str3);today2=java.sql.Date.valueOf(str4);pstmt.setString(1,str1);pstmt.setString(2,str2);pstmt.setDate(3,today1);pstmt.setDate(4,today2); result=pstmt.executeUpdate();if(result>0){JOptionPane.showMessageDialog(frame,”borrow successfully!“);} result=stmt.executeUpdate(sqlStr1);if(result>0){JOptionPane.showMessageDialog(frame,”update successfully!“);} jtfd1.setText(”“);jtfd2.setText(”“);jtfd3.setText(”“);jtfd4.setText(”“);} if(obj==btn3){sqlStr1=”delete from punishment where user_cardnumber=“+ ”'“+str1+”'“;result=stmt.executeUpdate(sqlStr1);if(result>0){JOptionPane.showMessageDialog(frame,”pay successfully!“);lb5.setText(”罰款:0.00“);} } if(obj==btn2){stmt.close();con.close();frame.dispose();} } } catch(SQLException sqle){System.err.println(sqle);} } public static void main(String[]args){new Borrow();} BorrowQuery.java import javax.swing.*;import javax.swing.table.*;import java.sql.*;import java.awt.event.*;import java.awt.*;import java.util.*; public class BorrowQuery implements ActionListener { private JFrame frame;private JButton btn1,btn2;private JTextField jtfd1,jtfd2;private JTable tableTest;private String[]columnNames={”借閱證號“,”圖書條碼“,”借書日期“,”應還日期“}; private Object[][] rowData=new Object[4][4];private Statement stmt;private Connection con;public BorrowQuery() { tableTest.setPreferredScrollableViewportSize(new JFrame.setDefaultLookAndFeelDecorated(true);frame=new JFrame(”借閱查詢“);Container content=frame.getContentPane();content.setLayout(new BorderLayout()); JLabel lb1=new JLabel(”借閱證號:“);JLabel lb2=new JLabel(”姓名:“);btn1=new JButton(”查詢“);btn2=new JButton(”退出“);btn1.addActionListener(this);btn2.addActionListener(this);jtfd1=new JTextField();jtfd2=new JTextField();JPanel pl=new JPanel();pl.setLayout(new GridLayout(2,3,10,10));pl.add(lb1);pl.add(jtfd1);pl.add(btn1);pl.add(lb2);pl.add(jtfd2);pl.add(btn2); tableTest=new JTable(rowData,columnNames);tableTest.setRowHeight(30);Dimension(500,60));JScrollPane scrollPane=new JScrollPane(tableTest); } content.add(pl,BorderLayout.NORTH);content.add(scrollPane,BorderLayout.CENTER);frame.pack();frame.setVisible(true);try { } catch(ClassNotFoundException e){ } catch(SQLException e){System.err.println(e);} Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);con=DriverManager.getConnection(”jdbc:odbc:library“);stmt=con.createStatement();public void actionPerformed(ActionEvent e){String sqlStr,cardnumber,user_name,str1,str2,bannercode;ResultSet result;java.util.Date day1,day2;Object obj=(JButton)e.getSource();str1=jtfd1.getText().trim();str2=jtfd2.getText().trim();try {if(obj==btn1) {if(str1.equals(”“)|str2.equals(”“)){JOptionPane.showMessageDialog(frame,”Text can't be null!“);return;} sqlStr=”select borrow.user_cardnumber,user_name,bannercode,borrowdate,receivedate“+ ” from borrow,user where borrow.user_cardnumber=user.user_cardnumber and“+ ” borrow.user_cardnumber=“+”'“+str1+”'“;result=stmt.executeQuery(sqlStr); for(int j=0;j cardnumber=result.getString(”user_cardnumber“);user_name=result.getString(”user_name“);if(str2.equals(user_name)){ day1=result.getDate(”borrowdate“); day2=result.getDate(”receivedate“); bannercode=result.getString(”bannercode“); } rowData[i][0]=cardnumber; rowData[i][1]=bannercode; rowData[i][2]=day1; rowData[i][3]=day2; i++;} } jtfd1.setText(”“);jtfd2.setText(”“);} if(obj==btn2){stmt.close();con.close();frame.dispose();} } catch(SQLException sqle){System.err.println(sqle);} } public static void main(String[]args){new BorrowQuery();} CallUpReturn.java import javax.swing.*;import javax.swing.table.*;import java.awt.*;import java.sql.*;import java.util.*;public class CallUpReturn {private Vector columnField=new Vector();private Vector column=new Vector();private Vector rowData=new Vector();private Connection con;private Statement stmt;private ResultSet result,result2,result3;private String sqlStr,cardnumber,bannercode,user_name,user_office, bookname,publisher;private java.util.Date day1,day2,today;private String[]columnNames={”借閱證“,”姓名“,”單位“,”圖書條碼“,”書名“,”作者“, ”借出時間“,”到期時間“}; public CallUpReturn(){JFrame frame=new JFrame(”催還通告“);Container content=frame.getContentPane();try { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);con=DriverManager.getConnection(”jdbc:odbc:library“);stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlStr=”select borrow.user_cardnumber,borrow.bannercode,borrowdate,receivedate,“+ ”user_name,user_office,bookname,publishingcompany from borrow,book,user“+ ” where borrow.user_cardnumber=user.user_cardnumber and borrow.bannercode=“+ result=stmt.executeQuery(sqlStr);”book.bannercode“;today=new java.util.Date(); int i=0;while(result.next()){ columnField.clear();day1=result.getDate(”borrowdate“);day2=result.getDate(”receivedate“); if(day2.before(today)){ cardnumber=result.getString(”user_cardnumber“);bannercode=result.getString(”bannercode“); user_name=result.getString(”user_name“);user_office=result.getString(”user_office“); bookname=result.getString(”bookname“);publisher=result.getString(”publishingcompany“); } columnField.add(cardnumber);columnField.add(user_name);columnField.add(user_office);columnField.add(bannercode);columnField.add(bookname);columnField.add(publisher);columnField.add(day1);columnField.add(day2);rowData.add(columnField.clone());} System.out.println(i);} stmt.close();con.close(); catch(ClassNotFoundException e){System.err.println(e);} catch(SQLException e){System.err.println(e.getCause());System.err.println(e.getErrorCode());System.err.println(e.getNextException());System.err.println(e.getStackTrace()); } } for(int i=0;i JTable tableTest=new JTable(rowData,column);tableTest.setRowHeight(30);JScrollPane scrollPane=new JScrollPane(tableTest);scrollPane.setPreferredSize(new Dimension(500,80));content.add(scrollPane,BorderLayout.CENTER);frame.pack();frame.setVisible(true);} public static void main(String[]args){ } new CallUpReturn();CardManagement.java import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.border.*;import java.sql.*;import java.util.*;import java.text.*;public class CardManagement implements ActionListener { private JTextField jtfd1,jtfd2,jtfd3,jtfd4;private JButton btn1,btn2,btn3,btn4;private Statement stmt;private PreparedStatement pstmt;private Connection con;private JFrame frame; public CardManagement(){JFrame.setDefaultLookAndFeelDecorated(true);frame=new JFrame(”借閱證管理“); Container content=frame.getContentPane();JLabel lb1=new JLabel(”借閱證號:“);JLabel lb2=new JLabel(”按借閱證號:“);JLabel lb3=new JLabel(”按有效期:“);JLabel lb4=new JLabel(”借閱證號:“);jtfd1=new JTextField();jtfd2=new JTextField();jtfd3=new JTextField();jtfd4=new JTextField();jtfd3.addFocusListener(new FocusHandler());btn1=new JButton(”掛失“);btn2=new JButton(”注銷“);btn3=new JButton(”注銷“);btn4=new JButton(”取消掛失“);btn3.addActionListener(this); btn1.addActionListener(this);btn2.addActionListener(this);btn4.addActionListener(this);JPanel pl1=new JPanel();JPanel pl2=new JPanel();JPanel pl3=new JPanel();pl1.setBorder(BorderFactory.createTitledBorder(”掛失“));pl2.setBorder(BorderFactory.createTitledBorder(”注銷“));pl3.setBorder(BorderFactory.createTitledBorder(”取消掛失"));GridBagLayout gbl=new GridBagLayout();GridBagConstraints gbc=new GridBagConstraints();gbc.fill=GridBagConstraints.BOTH;gbc.weightx=gbc.weighty=10.0;pl1.setLayout(gbl); gbc.gridwidth=1;gbc.weightx=1.0;gbl.setConstraints(lb1,gbc); pl1.add(lb1); gbc.weightx=8.0;gbc.gridheight=2;gbc.gridwidth=2;gbc.insets=new Insets(15,15,15,5);gbl.setConstraints(jtfd1,gbc);pl1.add(jtfd1); gbc.insets=new Insets(19,0,19,5);gbc.weightx=1.0;gbc.gridheight=2;gbc.gridwidth=3;gbc.gridwidth=gbc.REMAINDER;gbl.setConstraints(btn1,gbc);pl1.add(btn1); GridBagLayout gbl2=new GridBagLayout();GridBagConstraints gbc2=new GridBagConstraints();gbc2.fill=GridBagConstraints.BOTH;gbc2.weightx=gbc2.weighty=10;pl2.setLayout(gbl2); gbc2.gridwidth=1;gbc2.weightx=1;gbl2.setConstraints(lb2,gbc2); pl2.add(lb2); gbc2.gridwidth=2;gbc2.insets=new Insets(0,0,0,5);gbc2.weightx=8;gbc2.gridheight=2;gbl2.setConstraints(jtfd2,gbc2);pl2.add(jtfd2); gbc2.gridwidth=gbc2.REMAINDER; gbc2.insets=new Insets(5,0,5,5);gbc2.weightx=1;gbc2.gridwidth=2;gbc2.gridheight=2;gbl2.setConstraints(btn2,gbc2);pl2.add(btn2); gbc2.gridx=0;gbc2.insets=new Insets(5,0,0,0);gbc2.gridwidth=1;gbc2.weightx=1;gbl2.setConstraints(lb3,gbc2);pl2.add(lb3); gbc2.gridx=1;gbc2.gridwidth=2;gbc2.insets=new Insets(5,0,0,5);gbc2.weightx=8;gbl2.setConstraints(jtfd3,gbc2);pl2.add(jtfd3);gbc2.gridx=3;gbc2.gridwidth=gbc2.REMAINDER;gbc2.insets=new Insets(10,0,5,5);gbc2.weightx=1;gbl2.setConstraints(btn3,gbc2);pl2.add(btn3); GridBagLayout gbl4=new GridBagLayout(); GridBagConstraints gbc4=new GridBagConstraints();gbc4.fill=GridBagConstraints.BOTH;gbc4.weightx=gbc4.weighty=10.0;pl3.setLayout(gbl4); gbc4.gridwidth=1;gbc4.gridheight=1;gbc4.weightx=1.0; gbl4.setConstraints(lb4,gbc4); pl3.add(lb4); gbc4.weightx=8;gbc4.gridheight=2;gbc4.gridwidth=2;gbc4.insets=new Insets(15,15,15,5);gbl4.setConstraints(jtfd4,gbc4);pl3.add(jtfd4); gbc4.insets=new Insets(19,0,19,5);gbc4.weightx=1.0;gbc4.gridheight=2; gbc4.gridwidth=gbc4.REMAINDER;gbl4.setConstraints(btn4,gbc4); 圖書管理系統(tǒng)設計報告 一系統(tǒng)開發(fā)的目標與意義 1.1設計題目 此次VFP課程設計是綜合應用所學過的數據庫理論知識,自行設計并實現(xiàn)一個較為完整的應用系統(tǒng)。結合一個實際信息系統(tǒng)開發(fā),初步掌握數據庫管理信息系統(tǒng)的方案設計、論證和分析方法。正確運用所學課程的基本理論和知識,了解在Windows環(huán)境下,使用Visual FoxPro 6.0開發(fā)管理信息系統(tǒng)所需的計算機軟、硬件環(huán)境。進一步深刻理解Visual FoxPro 6.0,合理設計并建立數據庫,建立數據庫中表與表之間的關系。在理論教學的基礎上,進一步理解可視化編程的基本概念,熟練掌握可視化編程的方法和步驟。通過編程和上機調試,提高計算機應用與開發(fā)水平,特別是VFP平臺的開發(fā)水平和能力,提高解決實際問題的能力。從軟件工程的角度,初步樹立正確的程序設計思想,從系統(tǒng)分析、系統(tǒng)設計、系統(tǒng)實現(xiàn)、系統(tǒng)評價出發(fā)。培養(yǎng)分析問題、解決問題的能力。提高收集、查閱資料和撰寫項目文檔的能力。 1.2開發(fā)意義 針對圖書館特點,圖書管理系統(tǒng)實現(xiàn)后,能夠使界面友好美觀操作簡單易行。全面自動化信息管理,可隨時掌握圖書的進存、借閱等信息,查詢靈活方便,數據存儲安全可靠。進而提高工作效率。改善后的圖書管理系統(tǒng)將功能全面,實用性強。 1.3系統(tǒng)開發(fā)過程 1.3.1 分析階段 本階段主要工作是信息的收集,正所謂好的開度等于成功的一半。通過信息的收集工作來確定系統(tǒng)的目標、軟件的總體思路以及所需要的時間。 1.3.2設計階段 在本階段認真設計可以體會到什么叫事半功倍。詳細的規(guī)劃具體需要完成的任務、輸入輸出的程序以及采用的數據結構,最好通過一定的算法描述工具詳細描述算法。 1.3.3實施階段 本階段要運用(1)系統(tǒng)論思想,把所做的大系統(tǒng)分解成幾個小系統(tǒng),但要保證小系統(tǒng)即個功能模塊受高一級系統(tǒng)控制。(2)“自上而下”的設計思想。每一給小程序都可獨立、精確運行,但嚴格受制與高一級程序。 1.3.4維護階段 本階段測試系統(tǒng)的性能是關鍵,通過測試找出設計錯誤、程序錯誤、算法錯誤。通過此階段積累自己的設計經驗。 1.4開發(fā)平臺本系統(tǒng)是在WINDOWS XP的操作系統(tǒng)使用VisualFoxPro 6.0開發(fā)制作的,硬件環(huán)境是P4,256M內存以及1024*768分辨率。 二系統(tǒng)分析 2.1 用戶需求 通過本圖書查詢系統(tǒng),用戶可以輕而易舉的查到圖書信息、借閱人信息以及節(jié)約人與圖書之間的各種關系。例如:(1)輸入借閱人編號可以查閱到其解了哪些書,同時查到這些書籍的信息(作者、出版社、出版年、借還日期等);輸入書籍名稱或書籍編號可以查閱到書籍信息及借閱人信息(姓名、所屬單位、聯(lián)系方式等)。(2)數據的輸出,可以把查閱到的各方面信息通過報表形式輸出。 2.2可行性分析 通過對所收集的數據和在設計階段所需要的各項功能進行分析,最終得出所學設計的軟件系統(tǒng)是否可行。并對所存在的問題加以解決;所存在的錯誤加以糾正。 2.2.1數據分析 在分析階段完成,收集各方面信息,使所作的軟件功能完備,方便可行。學生基本情況信息:主要包括姓名、性別、學號、所屬單位、出生年月等 進書基本情況信息:主要包擴書名、圖書分類編號、作者、出版社、出版日期、購入日期等 借書基本情況查詢:主要包括借閱者姓名、借書日期、應還書日期等。在分析階段作出以下圖表,為實施階段打下良好基礎。 圖1 “圖書管理系統(tǒng)”數據結構圖 2.2.2功能分析本系統(tǒng)具有信息錄入、修改、查詢、信息輸出以及系統(tǒng)安全設置等功能。具體情況如下: (1)信息錄入功能:圖書進書信息、學生信息、借閱信息等。 (2)修改功能:對圖書信息、學生信息等進行添加修改。確保數據及時更新。 (3)信息輸出功能:對所需要的信息通過打印機等輸出工具進行輸出。 (4)查詢功能:主要把學生信息與圖書信息建立關聯(lián),實現(xiàn)學生信息與圖書信息的互動。能夠方便快捷的實現(xiàn)圖書被借閱,和學生借閱等信息的查詢。 為了為實施階段打下基礎,做功能結構圖如下: 圖 書 管 理 系 統(tǒng) 系統(tǒng)介紹數據查詢數據錄入維護信息輸出退出 系統(tǒng)介紹界面系統(tǒng)登陸界面學生信息查詢書籍信息查詢借閱信息查詢學生信息錄入新書信息錄入借閱信息錄入學生信息輸出書籍信息輸出圖書去向輸出推出系統(tǒng)界面 圖2系統(tǒng)功能結構圖 三 系統(tǒng)結構設計 3.1數據庫的建立 3.1.1 表的建立本系統(tǒng)共建立三個表,分別是借書表、進書表、學生基本情況表。給表中所包含的信息見2.2.1數據分析所示。 3.1.2 表的關聯(lián) 所以是表與表這間建立聯(lián)系的紐帶。在本系統(tǒng)所涉及的三個表中索書號和借閱證號都可以作為唯一標示紀錄的索引關鍵字。但考慮到數據修改時是否方便,所以使用學生基本情況表作為父表,以借閱證號作為主索引,避免了關鍵字出復值。在借書表中涉及到“書被誰借去了”所以可以用借閱證號位關鍵字把學生基本情況表和借書表建立起一一對應的關系。在學生基本情況表中涉及到“某學生截了那本書”故可以以索書號作為關鍵字建立唯一索引。因為索書號是唯一確定的,雖讓建立的是唯一索引,卻也可以收到主索引的效果。總而言之,在借書表與學生基本情況表之間以借閱證號位關鍵字建立對應關系,再進書表與學生基本情況表之間用索書號建立起一一對應的關系,最終實現(xiàn)三個表之間的互動。 3.1.3表結構的建立與數據的錄入 打開了Visual FoxPro軟件,運行文件菜單中的新建按鈕,選擇表和新建文件,同時設置好表名及路徑并保存,然后在出現(xiàn)表設計器中進行設計。以下為三個表的設置結構及錄入的記錄: 部分記錄如下: 圖3借書表結構及部分數據截圖 部分數據如下: 圖4進書表結構及部分數據截圖 部分數據如下 圖5 學生節(jié)本情況結構及部分數據截圖 3.2系統(tǒng)的設計與實現(xiàn) 3.2.1系統(tǒng)界面與表單設計 漂亮簡捷的系統(tǒng)界面將給使用者一個好的印象,是一套系統(tǒng)的門面。設計的成功與否,見關系到系統(tǒng)的前景與市場。本套系統(tǒng)的界面設計及實現(xiàn)程序如下: 圖6 系統(tǒng)登陸截圖 設計步驟如下: 新建表單“系統(tǒng)登陸.scx”,創(chuàng)建command1、2、3,label1、2、3,combo1和text1。 設置text1的caption屬性為“圖書管理系統(tǒng)”,text2的caption屬性為“操作員”,text3的caption屬性為“密碼”,并設置字體、顏色、大小等內容使其美觀。Label1的caption屬性為“確定”,同理label2、3為“取消、退出” 定義command1控件的click事件,代碼如下: 3.2.2數據查詢表單設計 數據查詢包括按學生學號查詢學生的具體信息、按書籍的名稱查詢書籍的具體信息和借閱情況等。下面列舉單表查詢表單如進書表.scx和多表查詢表單如圖書去向情況和圖書借閱情況.scx說明數據查詢的設計方法,進書表.scx的運行效果如下圖所示: 圖7 圖書信息查詢系統(tǒng)截圖 設計步驟如下: 此表單的設計主要是練習表單向導的用法。新建表單→表單→向導→字段選取→選擇表單樣式→排序次序→完成→運行。 用表單向導來設計表單為使用者帶來極大的便利,尤其是對于我們初學者。但影響創(chuàng)造力的發(fā)揮和一些功能的實現(xiàn)。 索書號查詢表單的運行效果如下: 圖8 索書號查詢截圖 設計步驟如下: ★此表單涉及主要是練習用程序和命令來實現(xiàn)查詢的目的。查詢的關鍵是command1即查詢按鈕的屬性設置。其實現(xiàn)代碼如下: command2即退出按鈕的代碼為release thisform; 推出系統(tǒng)地實現(xiàn): 退出系統(tǒng)地實現(xiàn)主要是通過command1、2的單擊事件click來實現(xiàn)的。其運行效果圖如下: 圖9 退出系統(tǒng)截圖 設計步驟如下 ★command1即YES按鈕的實現(xiàn)代碼為 ,command2即NO按鈕的實現(xiàn)代碼為release thisform。 3.2.3 報表的設計 在數據庫應用系統(tǒng)中,常需要將數據處理結果以報表形式打印出來。在本套系統(tǒng)的報表設計、顯示、答應報表的功能主要用報表設計起來實現(xiàn)。例如下圖: 運行后的結果如圖所示: 圖10報表設計器及部分數據截圖 在報表設計過程中,主要用到表設計器和表向導。為能用到報表設計器的高級操作,我會在以后努力學習表設計器的高級操作,彌補這次課程設計的一個缺憾。 3.2.4主菜單的設計 主菜單是用戶使用本系統(tǒng)的主要途徑,所以合理的設計至關重要,本系統(tǒng)的主菜單是通過菜單設計器來完成,使用的是菜單設計器的非快捷菜單方式,在主菜單確定后,分別再編輯各個子菜單項、命令、過程。本系統(tǒng)使用了命令及過程調用表單的方式。設計步驟如下: 創(chuàng)建第一級菜單。在“項目管理器”中選擇“其他”選項卡,再選擇“菜單”選項,然后單擊“新建”按鈕。出現(xiàn)菜單設計器,輸入各菜單名稱及結果,建立本系統(tǒng)所需要的菜單,如下圖所示:? 圖11 系統(tǒng)主菜單截圖 ★在創(chuàng)建主菜單后,即開始設計子菜單。單擊子菜單項后的“創(chuàng)建”按鈕,可創(chuàng)建其子菜單。如下圖所示: 圖12 系統(tǒng)子菜單編輯截圖 3.2.5主程序設計 主程序是系統(tǒng)運行時執(zhí)行的主文件,設計主程序的方法為:在“項目管理器”中選擇“代碼”選項卡,再選擇“程序”選項,然后選中一個程序文件,本系統(tǒng)中為“MAIN”,單擊右鍵彈出快捷菜單,選擇“設置主文件”,就可設置一個程序為主文件。 本系統(tǒng)的主程序代碼如下: 四 系統(tǒng)操作說明 ★雙擊 快捷方式,進入到登陸系統(tǒng)。 ★輸入操作員賬號和密碼,單擊確定進入到系統(tǒng)介紹界面。單擊 系統(tǒng)操作界面。見看到菜單欄。在“系統(tǒng)介紹”中有“用戶更改”和“系統(tǒng)主頁”子菜單。在“數據查詢”中涉及到借閱信息、圖書去向、姓名查詢、索書號查詢等子菜單。報表打印中涉及到借書表、進書表、學生信息、和借閱情況等表格。在退出系統(tǒng)一欄中,涉及到系統(tǒng)推出的確認,確定要退出單擊YES,否則單擊NO。 五 結束語 經過為期兩周的課程設計可謂受益匪淺。經過時間才真正的地把文字化為了知識,才真正的為我所用。認識到自己在學習過程中的缺點和不足。為以后的學習生活積累了寶貴的經驗和教訓。心得體會如下: ★再做vfp系統(tǒng)開發(fā)時一定要做好信息的收集工作,否則后即工作將墜入五里霧中。信息收集時要求盡可能的考慮周全。這才能為設計階段打下一個良好的基礎。 ★在系統(tǒng)的設計過程中,最好能集思廣益,多聽取一點別人的意見和創(chuàng)意。使程序盡可能完美。一定要學會用算法描述工具,把自己的的意圖詳細簡明的記錄下來。 ★在為文件命名是盡可能不要因其混淆,盡量由數字或字母。在系統(tǒng)設計中我把“系統(tǒng)登陸、系統(tǒng)登錄、登陸系統(tǒng)”三者混淆了。為自己帶來了不盡的苦難。并且均用漢字作為文件名。這樣雖然不易引起混淆,但是影響工作的效率。 ★要學會設置文件路徑,尤其是用向導時。要學會用項目管理器,既可以提高工作效率,又減少了出錯的幾率。 ★★最后誠懇的向老師您提一點建議,如果您一個學期教我們做一套系統(tǒng),在做這套系統(tǒng)的同時穿插著講知識點,我幼稚的以為效果會更好,避免了在做課程設計已開始的時候找不到北! 六 參考文獻: ㈠李春葆編著.Visual Fox Pro7.0數據庫系統(tǒng)設計與開發(fā).北京:清華大學出版社,2003.8 ㈡李春葆編著.Visual Fox Pro6.0高級編程(應用系統(tǒng)設計篇).北京:清華大學出版社,2000 ㈢史濟民,湯觀全編著.Visual Fox Pro及其應用系統(tǒng)開發(fā).北京:清華大學出版社,2000 ㈣蔡卓毅,林盛雄,林羽揚,黃竺編著.Visual Fox Pro6.0數據庫程序設計與實例.北京:冶金工業(yè)出版社,2003 ㈤史德芬編著.全國計算機等級考試二級真題解析——Visual Fox Pro程序設計.北京:海洋出版社,2003 圖書管理系統(tǒng)開題報告2篇 圖書管理系統(tǒng)開題報告1 一、課題的目的及意義 本次畢業(yè)設計所從事的課題題目是基于VF的圖書管理系統(tǒng)的設計與實現(xiàn)。課題的目的:應用當前高速發(fā)展的計算機技術,組建圖書管理系統(tǒng)。 隨著計算機及網絡技術的飛速發(fā)展,Internet/Intranet應用在全球范圍內日益普及,當今社會正快速向信息化社會前進,信息自動化的作用也越來越大。從而使我們從繁雜的事務中解放出來,提高了我們的工作效率。 圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數據的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計算機進行信息管理。根據調查得知,以前對圖書信息管理的主要方式是基于文本、表格等紙介質的手工處理,對于圖書借閱情況(如借書天數、超過限定借書時間的天數)的統(tǒng)計和核實等往往采用對借書卡的人工檢查進行,對借閱者的借閱權限、以及借閱天數等用人工計算、手抄進行。數據信息處理工作量大,容易出錯;由于數據繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計算機,但是尚未用于信息管理,沒有發(fā)揮效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。 數據處理手工操作,工作量大,出錯率高,出錯后不易更改。圖書館采取手工方式對圖書借閱情況進行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復雜;一般借閱情況是記錄在借書證上,圖書的數目和內容記錄在文件中,圖書館的工作人員和管理員也只是當時對圖書信息比較清楚,時間一長,如再要進行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費時、費力;如要對很長時間以前的圖書進行更改就更加困難了。 二、本課題在國內外的研究現(xiàn)狀分析 目前大多數圖書館的借閱工作部分還是手工管理,工作效率很低,并且不能及時了解圖書的種類和讀者們比較需求的圖書等,不能更好的適應當前讀者的借閱要求。手工管理還存在許多弊端,由于不可避免的人為因素,造成數據的遺漏、誤報等。計算機信息化管理有著儲存量大,速度快等許多優(yōu)點,提供給我們的處理信息及時快捷,因此我們利用計算機提供給我們的信息對讀者們的借閱過程形成一整套動態(tài)的管理 三、本課題主要內容 建立圖書管理系統(tǒng),完成的主要功能有: 借書管理:完成讀者借書這一業(yè)務流程。 還書管理:完成讀者還書這一業(yè)務流程。 圖書類別管理:完成圖書的分類處理。 圖書信息管理:完成圖書信息的添加、修改、刪除和查詢處理。讀者類別管理:完成讀者管理的分類處理。 讀者信息管理:完成讀者信息的添加、修改、刪除和查詢處理。系統(tǒng)管理:完成系統(tǒng)管理員的添加和更改密碼。 四、實現(xiàn)途徑 應用Visual FoxPro 6.0建立數據庫,實現(xiàn)本次系統(tǒng)開發(fā)。 五、進度計劃: 1、確定題目,查看資料第1周 2、系統(tǒng)規(guī)劃第2-3周 3、系統(tǒng)的`編制與調試第4-6周 4、畢業(yè)論文框架的確定第7周 5、畢業(yè)論文撰寫、修改與確定第8-9周 6、畢業(yè)設計的形式審查及改進、預答辯第10周 報告人簽名: 六、導師意見 導師簽名: 圖書管理系統(tǒng)開題報告2 一.開發(fā)背景及意義 如何獲取信息?圖書是我們最好的獲取信息的方式,但由于圖書館圖書收藏量大大增加,使傳統(tǒng)的圖書管理員的工作日益繁重起來。迫使人們起用新的管理方法來管理圖書,如何把圖書管理員從繁重的工作中解脫出來呢? 科學技術日新月異的進步,讓人類生活發(fā)生了巨大的變化,計算機技術的飛速發(fā)展,使各行各業(yè)在計算機技術應用方面得到了廣泛的普及和使用。信息化時代的到來成為不可抗拒的潮流,人類文明正在進入一個嶄新的時代。因此,圖書管理系統(tǒng)也以方便、快捷、費用低的優(yōu)點正慢慢地進入人們的生活,將傳統(tǒng)的圖書管理方式徹底的解脫出來,提高效率,減輕工人人員以往繁忙的工作,減小出錯的概率,使讀者可以花更多的時間在選擇書和看書上。從而使人們有更多時間來獲取信息、了解信息、掌握信息。 為方便對圖書館書籍、讀者資料、借還書等進行高效的管理,特編寫該程序以提高圖書館的管理效率。使用該程序之后,工作人員可以查詢某位讀者、某種圖書的借閱情況,還可以對當前圖書借閱情況進行一些統(tǒng)計,給出統(tǒng)計表格,以便全面掌握圖書的流通情況。 二.需求分析 1.能夠輸入圖書的綜合情況和進行新書入庫、現(xiàn)有圖書信息修改以及刪除; 2.能夠實現(xiàn)對讀者檔案的查詢和編輯管理; 3.能夠進行罰款功能; 能夠進行借閱歷史的查詢功能; 三.開發(fā)平臺 1.使用VisualC++6.0作為本次系統(tǒng)的開發(fā)工具,開題報告《圖書管理系統(tǒng)開題報告》。因為VisualC++6.0是功能最為強大可視化開發(fā)工具,它不僅支持傳統(tǒng)的軟件開發(fā)方法,更重要的是它能支持面向對象、可視化的開發(fā)風格。因此VisualC++又稱作是一個集成開發(fā)工具,它提供了軟件代碼自動生成和可視化的資源編輯功能。 2.使用Access做為本次開發(fā)軟件的數據庫。因為Access被集成在MicrosoftOffice中。Access數據庫處理的基本結構,采取關系型數據庫模式。與其他的數據庫系統(tǒng)相比,Access更加簡單易學,一個普通的計算機用戶可以很快地掌握它。Access20xx的功能十分強大,利用它可以方便地實現(xiàn)對信息保存、維護、查詢、統(tǒng)計、打印、交流、發(fā)布,而且它可以十分方便地與Office其他組件交流數據,這些功能對一個一般用戶而言已經足夠了。 四.本系統(tǒng)功能模塊 圖書管理系統(tǒng)需要實現(xiàn)的功能主要有四大塊:“日常工作管理”、“基本資料維護”、“查詢”、和“系統(tǒng)管理”模塊。其中日常工作管理和基本資料維護是整個系統(tǒng)的核心。 1.“日常工作”模塊: (1)借書處理:主要功能是記錄借閱證編號和圖書編號,進行借書過程。在數據庫中插入一條借書記錄,該記錄包括讀者ID、圖書ID、借出日期、還書期限、操作員姓名。 (2)還書處理:主要功能是輸入借閱證編號、圖書ID,在借閱登記表中找到相應的記錄,將該記錄的相應數據插入到還書記錄中,同時將借書記錄刪除,并保存在借閱歷史記錄表中。 (3)繳納罰金:輸入讀者ID,顯示該讀者的姓名、圖書編號、罰款金額和罰款原因,如果讀者交納了罰金,則將借閱登記表的允許借閱標志置為“Y”。刪除罰款記錄表中該讀者對應的記錄,將這一條記錄同時插入到罰款歷史記錄表中。 2.“基本資料維護”模塊: (1)圖書資料維護:包括新書的入庫,以及現(xiàn)有書籍資料的修改和刪除。 (2)讀者資料維護:包括新會員的資料入庫,以及現(xiàn)有會員資料的修改和刪除 3.“查詢”模塊: (1)圖書資料查詢:根據相應的圖書信息對所有書籍進行所需查詢。此查詢包括:'圖書分類'、'圖書編號'、'圖書名稱'、'作者'、'出版社'。 (2)讀者資料查詢:根據相應的讀者資料進行所需查詢。'借閱證編號'、'讀者姓名'以及'身份證編號'。 (3)借閱歷史記錄查詢:根據相應的借閱信息進行所需查詢。此查詢包括:'借閱證編號'、'圖書編號'、'借書日期'、'還書日期'。 (4)罰款歷史記錄查詢:根據相應的罰款信息進行所需查詢。此查詢包括:'借閱證編號'、'罰款日期'、'罰款原因'。 4.“系統(tǒng)管理”模塊: (1)員工管理:包括新員工信息的錄入,密碼的修改以及員工信息的刪除。 (2)數據備份:對現(xiàn)有的數據庫信息的保存。 (3)數據恢復:對數據庫信息的恢復 五.參考文獻 [1]伍俊良.《VisualC++課程設計與系統(tǒng)開發(fā)案例》.清華大學出版社 [2]楊小平.《VisualC++項目案例導航》.科學出版社 [3]鄧宗明,張曉競.《VisualC++編程實用技術與案例》.清華大學出版社 [4]鄭阿奇.《VisualC++實用教程》.電子工業(yè)出版社 [5]薩師煊,王珊.《數據庫系統(tǒng)概論》.高等教育出版社 [6]鄭人杰,殷人昆,陶永雷.實用軟件工程.清華大學出版社.1997.4第四篇:圖書管理系統(tǒng)設計報告
第五篇:圖書管理系統(tǒng)開題報告