第一篇:Java圖書管理系統(tǒng)實(shí)習(xí)報(bào)告
陜西科技大學(xué)畢業(yè)實(shí)習(xí)(專業(yè)實(shí)習(xí))報(bào)告
一、實(shí)習(xí)目的
本次實(shí)習(xí)的目的主要有2個(gè):
(一)通過親手對計(jì)算機(jī)硬件的拆卸,對計(jì)算機(jī)的硬件要有更深刻的認(rèn)識和理解。
(二)通過設(shè)計(jì)圖書管理系統(tǒng),對相關(guān)編程知識有了更進(jìn)一步的運(yùn)用,以及其具體實(shí)現(xiàn)的細(xì)節(jié)也有了更深刻的認(rèn)識。
二、實(shí)習(xí)單位及崗位介紹
本次實(shí)習(xí)在陜西科技大學(xué)理學(xué)院的綜合實(shí)驗(yàn)室進(jìn)行。
三、實(shí)習(xí)安排
本次實(shí)習(xí)的時(shí)間是三周:前一周進(jìn)行硬件實(shí)習(xí),后兩周進(jìn)行軟件實(shí)習(xí)。
四、實(shí)習(xí)內(nèi)容
(一)硬件實(shí)習(xí):
2月23日開始了為期1周的硬件實(shí)習(xí),在這段時(shí)間里,主要是進(jìn)行了對計(jì)算機(jī)主機(jī)進(jìn)行了裝卸,通過裝卸讓我們對計(jì)算機(jī)內(nèi)部各個(gè)部件的協(xié)同工作有了更深的認(rèn)識。(二)軟件實(shí)習(xí):
3月1日開始了為期2周的軟件實(shí)習(xí)。我選擇的題目是“圖書管理系統(tǒng)”,對于這個(gè)題目,整個(gè)系統(tǒng)是由3個(gè)數(shù)據(jù)表,3類用戶,以及4類動(dòng)作。1.配置數(shù)據(jù)庫
在SQL Server2000中創(chuàng)建圖書管理系統(tǒng)的數(shù)據(jù)庫demo,創(chuàng)建3個(gè)數(shù)據(jù)表books,bookBrowse,UserTable。
2.生成配置文件hibernate.cfg.xml.文件如下:
陜西科技大學(xué)畢業(yè)實(shí)習(xí)(專業(yè)實(shí)習(xí))報(bào)告
3.創(chuàng)建持久化對象以及創(chuàng)建映射文件:
4.Hibernate操作數(shù)據(jù)庫的方法(HibernateUtil.java)。
陜西科技大學(xué)畢業(yè)實(shí)習(xí)(專業(yè)實(shí)習(xí))報(bào)告
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ùn)行效果圖如下:
陜西科技大學(xué)畢業(yè)實(shí)習(xí)(專業(yè)實(shí)習(xí))報(bào)告
陜西科技大學(xué)畢業(yè)實(shí)習(xí)(專業(yè)實(shí)習(xí))報(bào)告
五、實(shí)習(xí)總結(jié)和體會
通過這次實(shí)習(xí),我對計(jì)算機(jī)的軟件和硬件有了全面的了解。
拿硬件來說吧,以前也就是聽說過什么總線,cpu,主板,硬盤這些概念,通過實(shí)習(xí)我真實(shí)的接觸了這些部件,對其內(nèi)部的安裝有了直接的認(rèn)識。拿軟件來說,這次我做這個(gè)系統(tǒng)只要是應(yīng)用java語言的AWT元件和swing組件,以及hibernate實(shí)現(xiàn)從對象到關(guān)系的映射,其實(shí)我做的時(shí)候?qū)ibernate也不是很了解,但是做的過程發(fā)現(xiàn)了困難就會主動(dòng)的去找各種資源尋求解答,當(dāng)然這個(gè)過程就是成長的過程。軟件架構(gòu)或者語言有很多很多,所以,我還得好好努力啊。
第二篇:java圖書管理系統(tǒng)心得
經(jīng)過這周的學(xué)習(xí)我們終于把java圖書管理系統(tǒng)做出了了,雖然不是很好但是能把它做出來我們?yōu)榇烁械礁吲d。在此次小學(xué)期的學(xué)習(xí)過程中,我體會到看學(xué)習(xí)是一個(gè)很反復(fù)的過程,不斷的出現(xiàn)錯(cuò)誤,不斷的調(diào)試,不斷的迷茫,不斷的清晰,呵呵,這些都是必須要要經(jīng)歷的,所以不要害怕了。學(xué)做java圖書管理系統(tǒng),所以現(xiàn)在所遇到的一切,我都挺坦然的面對。突然覺得這個(gè)學(xué)習(xí)的過程很美好,是一種享受,雖然真的是很辛苦吧,但是很快樂,當(dāng)自己能敲出的代碼,即使做出的是做簡單的東西,都會讓我很開心,很有成就感,對待學(xué)習(xí)的態(tài)度跟以前不一樣了,還是那個(gè)很簡單的想法,就是想把java學(xué)好
學(xué)習(xí)java就是件耗時(shí)間的事兒,如果你不肯投入自己的時(shí)間,根本不可能在短時(shí)間就把java給學(xué)好了,原本我對java接觸了時(shí)間就比較短,如果我還不努力的話,我根本就不能在4周的時(shí)間內(nèi)把java圖書管理系統(tǒng)的項(xiàng)目做完,所以我就不能去做娛樂,休閑的事情,而是坐在電腦前,敲著那些代碼,不斷的出錯(cuò),不斷的去調(diào)試,這就是我現(xiàn)在的生活,完全的浸泡在java中了,跟同學(xué)們一起去吃飯的時(shí)候,也在不斷的探討著學(xué)習(xí)中出現(xiàn)的問題。
在學(xué)習(xí)Java期間我們做了一些程序,我們班的同學(xué)也都積極準(zhǔn)備,完成的還不錯(cuò)!在做程序時(shí),我遇到了一些難題,有時(shí)也會出現(xiàn)錯(cuò)誤,時(shí)間長了弄得我心煩意亂,但是我知道只有堅(jiān)持下去才會成功。
因?yàn)镴ava是一種面向?qū)ο蟮木幊陶Z言,剛接觸Java的人可能會感覺比較抽象,不過沒關(guān)系不用著急,上課的時(shí)候認(rèn)真聽老師講解,一些概念知識慢慢去理解,課后多做練習(xí),熟能生巧,哪怕是你的記性再好,課后不去強(qiáng)化練習(xí)也沒用,只有多練了,當(dāng)你在做項(xiàng)目時(shí)你才能很熟練的寫出你想要代碼。平日在練習(xí)時(shí)若遇到不會的題目或是在項(xiàng)目中遇到解決不了的問題,首先不要急著去問老師,或是急著上百度搜答案,那樣即使你得到了正確答案,以后在其它地方遇到同樣的問題,你還是不知道怎么解決!所以說,在遇到問題時(shí),自己先想想要怎么解決,回顧一下老師上課的內(nèi)容,如果自己還是想不出什么好方法的話,也可以向同學(xué)請教請教,三人行必有我?guī)?,你不懂的地方其他同學(xué)可能知道。如果還是沒能解決,那只有問老師或是上網(wǎng)搜索查找相應(yīng)的解決方法了。好好理解其解決思路。真的弄不懂時(shí)我就問同學(xué)一起解決。通過幾個(gè)階段的練習(xí),我覺得又把學(xué)過的知識復(fù)習(xí)了一遍,通過同學(xué)之間的交流溝通,我覺得我們班的學(xué)習(xí)氛圍更加濃厚了。
我覺得把Java學(xué)會的關(guān)鍵一點(diǎn)就是堅(jiān)持練習(xí)。學(xué)習(xí)Java時(shí)每天必須保證一定量的練習(xí),我們老師也說學(xué)習(xí)編程語言沒有捷徑可走。真的,只有每天反復(fù)操作了,經(jīng)常寫代碼了,我們在遇到問題時(shí)才有一定的思路。欲速則不達(dá),學(xué)習(xí)編程語言需要一個(gè)比較漫長的階段,不能一步登天,這需要一個(gè)過程,在這個(gè)過程中慢慢積累經(jīng)驗(yàn),扎實(shí)基礎(chǔ)。不要以為寫出了一個(gè)簡單的小程序,就認(rèn)為自己已經(jīng)學(xué)的很好了,這只不過是在你學(xué)習(xí)編程過程中一個(gè)小小的實(shí)踐。不要滿足于現(xiàn)狀,要不斷完善自己的知識體系,善于總結(jié)實(shí)踐經(jīng)驗(yàn)。要端正自己的學(xué)習(xí)態(tài)度,是主動(dòng)去學(xué),而不是被動(dòng)!提高自學(xué)能力。學(xué)習(xí)編程的秘訣是:編程、編程、再編程。不僅要多實(shí)踐,而且要快實(shí)踐,、嗎。
在我學(xué)習(xí)的期間,很多人對我的學(xué)習(xí)都有很大的幫助啊,班里的同學(xué)們,老師們,我覺得我是一個(gè)幸運(yùn)兒,每次我都能在遇到問題的時(shí)候,都能找到能幫助我的人,呵呵,很開心哦~但是,我認(rèn)為有些東西還是要自己去琢磨,去思考,去想。這樣才能不斷的進(jìn)步。
第三篇:圖書管理系統(tǒng)需求分析報(bào)告附有java代碼
需
求
分
析
報(bào)
告
課程設(shè)計(jì)題目 :圖書管理系統(tǒng)
專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)
班級:11060341X 姓名:蔚奇秀,曹?;?,李小峰,祁樂
目錄 一.概述 1.編寫目的 2.項(xiàng)目背景 3.定義 4.參考資料 5.開發(fā)環(huán)境 二.需求分析 1.問題提出
2.系統(tǒng)的業(yè)務(wù)功能分析 3.需完成的功能 三.系統(tǒng)需求說明 1.對功能的規(guī)定 2.對性能的規(guī)定 3.輸入輸出要求 四.新系統(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ù)庫的基本原理,綜合運(yùn)用所學(xué)的知識,以小組為單位,設(shè)計(jì)開發(fā)一個(gè)小型的圖書管理系統(tǒng)。通過對一個(gè)實(shí)際問題的分析、設(shè)計(jì)與實(shí)現(xiàn),將原理與應(yīng)用相結(jié)合,使學(xué)生學(xué)會如何把書本上學(xué)到的知識用于解決實(shí)際問題,培養(yǎng)學(xué)生的動(dòng)手能力;另一方面,使學(xué)生能深入理解和靈活掌握教學(xué)內(nèi)容
2、項(xiàng)目背景
數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。圖書館采取手工方式對圖書借閱情況進(jìn)行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時(shí)對它比較清楚,時(shí)間一長,如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了。造成查詢費(fèi)時(shí)、費(fèi)力。如要對很長時(shí)間以前的圖書進(jìn)行更改就更加困難了。
a.待開發(fā)的軟件系統(tǒng)的名稱是《圖書管理系統(tǒng)》
b.本軟件適用于教育界,他是比較完善的系統(tǒng)管理軟件,對圖書館的書籍、讀者資料、借還書等可以進(jìn)行方便的管理。
C.開發(fā)員:蔚奇秀,曹海花,李小峰,祁樂
3、定義
數(shù)據(jù)流程圖(DFD):為描述軟件系統(tǒng)中的信息流提供了一個(gè)圖形方法。箭頭代表數(shù)據(jù)流,方框代表數(shù)據(jù)的源點(diǎn)或終點(diǎn),圓框代表數(shù)據(jù)流的交換,雙杠代表數(shù)據(jù)存儲的地方。
數(shù)據(jù)字典是對數(shù)據(jù)流程圖中的數(shù)據(jù),變換等進(jìn)行精確的定義。
4、參考資料
1.薩師煊、王珊《數(shù)據(jù)庫系統(tǒng)概論》 高等教育出版社2000.2
2.俞盤祥、沈金發(fā)《數(shù)據(jù)庫系統(tǒng)原理》清華大學(xué)出版社2000.6
3.王珊、陳紅《數(shù)據(jù)庫系統(tǒng)原理教程》清華大學(xué)出版社1998.7
4.施伯樂、丁寶康《數(shù)據(jù)庫系統(tǒng)教程》高等教育出版社1999.12
5、開發(fā)環(huán)境
WindowXP,/7 Microsoft Visual C++,SQLSerevr2000.一、需求分析
1、問題的提出:
圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對借書卡的人工檢查進(jìn)行,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。有必要建立一個(gè)圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改圖書情況。
2、系統(tǒng)的業(yè)務(wù)功能分析:
1)建立讀者類,實(shí)現(xiàn)對讀者編號、姓名、所在單位等信息的描述。
2)建立書籍類,實(shí)現(xiàn)對圖書的編號、名稱、作者、出版社、出版日期、價(jià)格、采購日 期、單價(jià)、數(shù)量、金額、版次、分類號、ISBN等信息的描述。
3)建立用于記錄借書情況的類,實(shí)現(xiàn)輸入讀者編號和書籍編號后成功借書的描述。
系統(tǒng)的業(yè)務(wù)流程分析:
3、需完成的功能
1)圖書基本情況的錄入、修改、刪除等基本操作。2)辦理借書卡模塊。3)實(shí)現(xiàn)借書功能。4)實(shí)現(xiàn)還書功能。
5)能方便的對圖書進(jìn)行查詢。6)對超期的情況能自動(dòng)給出提示信息。
7)具有數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)功能。
二、系統(tǒng)需求說明
1、對功能的規(guī)定
經(jīng)過以上詳細(xì)的用戶調(diào)查,在現(xiàn)行業(yè)務(wù)流程和數(shù)據(jù)分析的基礎(chǔ)上,基本可以確定系統(tǒng)設(shè)計(jì)必須達(dá)到的目標(biāo)。
以下是圖書管理系統(tǒng)必須具備的功能:
1.圖書基本情況的錄用:對于購進(jìn)的新書,系統(tǒng)必須具備圖書信息資料的錄入功能。當(dāng)圖書資料發(fā)生變化,如圖書丟失或有錯(cuò)誤信息輸入時(shí),則應(yīng)能夠及時(shí)對數(shù)據(jù)進(jìn)行修改和補(bǔ)充。
2.辦理借書卡模塊:系統(tǒng)的主要功能之一,供本校學(xué)生借閱圖書。3.實(shí)現(xiàn)借書功能:可以方便學(xué)生們借書。
4.實(shí)現(xiàn)還書功能:歸還圖書,并進(jìn)行登記。
5.能方便的對圖書進(jìn)行查閱:可以快速簡單的對圖書進(jìn)行查找一些信息。
6.對超期的情況能自動(dòng)給出提示信息:告訴那些同學(xué)說借書的時(shí)間已超期。
7.具有數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)功能:可以在丟失后再找回。
2、對性能的規(guī)定
為了保證系統(tǒ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é)校對信息處理的需求。
(2)、系統(tǒng)的開放性和系統(tǒng)的可擴(kuò)充性
圖書管理系統(tǒng)在開發(fā)過程中,應(yīng)該充分考慮以后的可擴(kuò)充性。例如用戶查詢的需求也會不斷的更新和完善。所有這些,都要求系統(tǒng)提供足夠的手段進(jìn)行功能的調(diào)整和擴(kuò)充。而要實(shí)現(xiàn)這一點(diǎn),應(yīng)通過系統(tǒng)的開放性來完成,既系統(tǒng)應(yīng)是一個(gè)開放系統(tǒng),只要符合一定的規(guī)范,可以簡單的加入和減少系統(tǒng)的模塊,配置系統(tǒng)的硬件。通過軟件的修補(bǔ)、替換完成系統(tǒng)的升級和更新?lián)Q代。
(3)、系統(tǒng)的易用性和易維護(hù)性
圖書管理系統(tǒng)是直接面對使用人員的,而使用人員往往對計(jì)算機(jī)并不時(shí)非常熟悉。這就要求系統(tǒng)能夠提供良好的用戶接口,易用的人機(jī)交互界面。要實(shí)現(xiàn)這一點(diǎn),就要求系統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語和中文信息的界面;針對用戶可能出現(xiàn)的使用問題,要提供足夠的在線幫助,縮短用戶對系統(tǒng)熟悉的過程。
(4)、系統(tǒng)的標(biāo)準(zhǔn)性
系統(tǒng)在設(shè)計(jì)開發(fā)使用過程中都要涉及到很多計(jì)算機(jī)硬件、軟件。所有這些都要符合主流國際、國家和行業(yè)標(biāo)準(zhǔn)。
(5)、系統(tǒng)的先進(jìn)性
目前計(jì)算系統(tǒng)的技術(shù)發(fā)展相當(dāng)快,做為圖書管理系統(tǒng)工程,在系統(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)速度為秒級,達(dá)到實(shí)時(shí)要求,以及時(shí)反饋信息。在進(jìn)行統(tǒng)計(jì)分析時(shí),根據(jù)所需數(shù)據(jù)量的不同而從秒級到分鐘級,原則是保證操作人員不會因?yàn)樗俣葐栴}而影響工作效率。
3、輸入輸出要求
輸入:鍵盤,鼠標(biāo),掃描儀等。
輸出:顯示器,打印機(jī)等。
三、新系統(tǒng)的邏輯模型
1、圖書館組織機(jī)構(gòu)分析
通過對圖書館工作人員的調(diào)查,圖書館主要有4個(gè)部門。借閱管理部負(fù)責(zé)圖書的借閱管理;圖書管理部負(fù)責(zé)書籍類別標(biāo)準(zhǔn)的制定,類別信息的輸入;書籍類別信息的查詢,修改;書籍信息的輸入;讀者管理部負(fù)責(zé)主要針對各類讀者信息進(jìn)行管理;系統(tǒng)管理部負(fù)責(zé)用戶管理和密碼管理。組織機(jī)構(gòu)圖如下:
圖書館組織機(jī)構(gòu)圖
2、系統(tǒng)功能結(jié)構(gòu)圖
圖書館管理系統(tǒng) 借閱信息管理 圖書信息管理 讀者信息管理 系統(tǒng)管理 還書信息管理 借書信息管理 設(shè)置圖書信息 設(shè)置圖書種類 設(shè)置讀者信息 設(shè)置讀者種類 密碼管理 用戶管理還還還書書書信信信息息息查修添詢改加 借借借書書書信信信息息息查添修詢加改 圖圖圖書書書信信信息息息查修添詢改加 圖圖書書類類別別添修加改 讀讀讀者者者信信信息息息查修添詢改加 讀讀者者種種類類修添改加
3、數(shù)據(jù)流程圖
通過對業(yè)務(wù)流程圖的細(xì)化,可得到系統(tǒng)的分層數(shù)據(jù)流圖。如下圖: 頂層數(shù)據(jù)流圖:
圖書管理系統(tǒng)讀者信息會員信息讀者審核信息借閱信息借還書信息讀者圖書信息借書卡、借閱信息管理員 圖書館管理系統(tǒng)的頂層數(shù)據(jù)圖
對頂層數(shù)據(jù)流圖細(xì)化、分解可得到圖書管理系統(tǒng)的第一層數(shù)據(jù)流圖,如下圖:
借閱信息 借還書信息P1借閱信息管理借書信讀者息還書信息讀者P2圖書信息管理書庫文件管理員借書卡、借閱信息讀者資料讀者信息審核會員信息P3讀者信息管理讀者記錄管理員信息P4系統(tǒng)管理 圖書館管理系統(tǒng)的第一層數(shù)據(jù)圖
對第一層數(shù)據(jù)流圖進(jìn)一步細(xì)化、分解,可以得到第二層數(shù)據(jù)流圖,如下圖: 借書卡P1.1身份審核合格讀者借書信息讀者記錄借還書信息P1.2借書登記管理員還書信息書庫文件P1.3書籍檢查合格書籍讀者還書信息P1.4還書處理借閱信息管理數(shù)據(jù)流圖
四.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(“價(jià)格:”);JLabel lb10=new JLabel(“作者:”);JLabel lb11=new JLabel(“簡介:”);
jtfd1=new JTextField();jtfd2=new JTextField();jtfd3=new JTextField();String[] kindname={“馬克思列寧主義、毛澤東思想”,“綜合性圖書”,“哲學(xué)”,“社會科學(xué)總論”, “政治、法律”,“軍事”,“經(jīng)濟(jì)”,“文化、科學(xué)、教育、體育”,“語言文字”,“文學(xué)”,“天文學(xué)、地球科學(xué)”, “生物科學(xué)”,“醫(yī)藥、衛(wèi)生”,“農(nóng)業(yè)科學(xué)”,“工業(yè)技術(shù)”,“藝術(shù)”,“歷史、地理”,“數(shù)理化”,“自然科學(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();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(”應(yīng)還日期:“);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={”借閱證號“,”圖書條碼“,”借書日期“,”應(yīng)還日期“}; 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={”借閱證“,”姓名“,”單位“,”圖書條碼“,”書名“,”作者“, ”借出時(shí)間“,”到期時(shí)間“}; 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)設(shè)計(jì)報(bào)告 一系統(tǒng)開發(fā)的目標(biāo)與意義 1.1設(shè)計(jì)題目 此次VFP課程設(shè)計(jì)是綜合應(yīng)用所學(xué)過的數(shù)據(jù)庫理論知識,自行設(shè)計(jì)并實(shí)現(xiàn)一個(gè)較為完整的應(yīng)用系統(tǒng)。結(jié)合一個(gè)實(shí)際信息系統(tǒng)開發(fā),初步掌握數(shù)據(jù)庫管理信息系統(tǒng)的方案設(shè)計(jì)、論證和分析方法。正確運(yùn)用所學(xué)課程的基本理論和知識,了解在Windows環(huán)境下,使用Visual FoxPro 6.0開發(fā)管理信息系統(tǒng)所需的計(jì)算機(jī)軟、硬件環(huán)境。進(jìn)一步深刻理解Visual FoxPro 6.0,合理設(shè)計(jì)并建立數(shù)據(jù)庫,建立數(shù)據(jù)庫中表與表之間的關(guān)系。在理論教學(xué)的基礎(chǔ)上,進(jìn)一步理解可視化編程的基本概念,熟練掌握可視化編程的方法和步驟。通過編程和上機(jī)調(diào)試,提高計(jì)算機(jī)應(yīng)用與開發(fā)水平,特別是VFP平臺的開發(fā)水平和能力,提高解決實(shí)際問題的能力。從軟件工程的角度,初步樹立正確的程序設(shè)計(jì)思想,從系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、系統(tǒng)評價(jià)出發(fā)。培養(yǎng)分析問題、解決問題的能力。提高收集、查閱資料和撰寫項(xiàng)目文檔的能力。 1.2開發(fā)意義 針對圖書館特點(diǎn),圖書管理系統(tǒng)實(shí)現(xiàn)后,能夠使界面友好美觀操作簡單易行。全面自動(dòng)化信息管理,可隨時(shí)掌握圖書的進(jìn)存、借閱等信息,查詢靈活方便,數(shù)據(jù)存儲安全可靠。進(jìn)而提高工作效率。改善后的圖書管理系統(tǒng)將功能全面,實(shí)用性強(qiáng)。 1.3系統(tǒng)開發(fā)過程 1.3.1 分析階段 本階段主要工作是信息的收集,正所謂好的開度等于成功的一半。通過信息的收集工作來確定系統(tǒng)的目標(biāo)、軟件的總體思路以及所需要的時(shí)間。 1.3.2設(shè)計(jì)階段 在本階段認(rèn)真設(shè)計(jì)可以體會到什么叫事半功倍。詳細(xì)的規(guī)劃具體需要完成的任務(wù)、輸入輸出的程序以及采用的數(shù)據(jù)結(jié)構(gòu),最好通過一定的算法描述工具詳細(xì)描述算法。 1.3.3實(shí)施階段 本階段要運(yùn)用(1)系統(tǒng)論思想,把所做的大系統(tǒng)分解成幾個(gè)小系統(tǒng),但要保證小系統(tǒng)即個(gè)功能模塊受高一級系統(tǒng)控制。(2)“自上而下”的設(shè)計(jì)思想。每一給小程序都可獨(dú)立、精確運(yùn)行,但嚴(yán)格受制與高一級程序。 1.3.4維護(hù)階段 本階段測試系統(tǒng)的性能是關(guān)鍵,通過測試找出設(shè)計(jì)錯(cuò)誤、程序錯(cuò)誤、算法錯(cuò)誤。通過此階段積累自己的設(shè)計(jì)經(jīng)驗(yàn)。 1.4開發(fā)平臺本系統(tǒng)是在WINDOWS XP的操作系統(tǒng)使用VisualFoxPro 6.0開發(fā)制作的,硬件環(huán)境是P4,256M內(nèi)存以及1024*768分辨率。 二系統(tǒng)分析 2.1 用戶需求 通過本圖書查詢系統(tǒng),用戶可以輕而易舉的查到圖書信息、借閱人信息以及節(jié)約人與圖書之間的各種關(guān)系。例如:(1)輸入借閱人編號可以查閱到其解了哪些書,同時(shí)查到這些書籍的信息(作者、出版社、出版年、借還日期等);輸入書籍名稱或書籍編號可以查閱到書籍信息及借閱人信息(姓名、所屬單位、聯(lián)系方式等)。(2)數(shù)據(jù)的輸出,可以把查閱到的各方面信息通過報(bào)表形式輸出。 2.2可行性分析 通過對所收集的數(shù)據(jù)和在設(shè)計(jì)階段所需要的各項(xiàng)功能進(jìn)行分析,最終得出所學(xué)設(shè)計(jì)的軟件系統(tǒng)是否可行。并對所存在的問題加以解決;所存在的錯(cuò)誤加以糾正。 2.2.1數(shù)據(jù)分析 在分析階段完成,收集各方面信息,使所作的軟件功能完備,方便可行。學(xué)生基本情況信息:主要包括姓名、性別、學(xué)號、所屬單位、出生年月等 進(jìn)書基本情況信息:主要包擴(kuò)書名、圖書分類編號、作者、出版社、出版日期、購入日期等 借書基本情況查詢:主要包括借閱者姓名、借書日期、應(yīng)還書日期等。在分析階段作出以下圖表,為實(shí)施階段打下良好基礎(chǔ)。 圖1 “圖書管理系統(tǒng)”數(shù)據(jù)結(jié)構(gòu)圖 2.2.2功能分析本系統(tǒng)具有信息錄入、修改、查詢、信息輸出以及系統(tǒng)安全設(shè)置等功能。具體情況如下: (1)信息錄入功能:圖書進(jìn)書信息、學(xué)生信息、借閱信息等。 (2)修改功能:對圖書信息、學(xué)生信息等進(jìn)行添加修改。確保數(shù)據(jù)及時(shí)更新。 (3)信息輸出功能:對所需要的信息通過打印機(jī)等輸出工具進(jìn)行輸出。 (4)查詢功能:主要把學(xué)生信息與圖書信息建立關(guān)聯(lián),實(shí)現(xiàn)學(xué)生信息與圖書信息的互動(dòng)。能夠方便快捷的實(shí)現(xiàn)圖書被借閱,和學(xué)生借閱等信息的查詢。 為了為實(shí)施階段打下基礎(chǔ),做功能結(jié)構(gòu)圖如下: 圖 書 管 理 系 統(tǒng) 系統(tǒng)介紹數(shù)據(jù)查詢數(shù)據(jù)錄入維護(hù)信息輸出退出 系統(tǒng)介紹界面系統(tǒng)登陸界面學(xué)生信息查詢書籍信息查詢借閱信息查詢學(xué)生信息錄入新書信息錄入借閱信息錄入學(xué)生信息輸出書籍信息輸出圖書去向輸出推出系統(tǒng)界面 圖2系統(tǒng)功能結(jié)構(gòu)圖 三 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 3.1數(shù)據(jù)庫的建立 3.1.1 表的建立本系統(tǒng)共建立三個(gè)表,分別是借書表、進(jìn)書表、學(xué)生基本情況表。給表中所包含的信息見2.2.1數(shù)據(jù)分析所示。 3.1.2 表的關(guān)聯(lián) 所以是表與表這間建立聯(lián)系的紐帶。在本系統(tǒng)所涉及的三個(gè)表中索書號和借閱證號都可以作為唯一標(biāo)示紀(jì)錄的索引關(guān)鍵字。但考慮到數(shù)據(jù)修改時(shí)是否方便,所以使用學(xué)生基本情況表作為父表,以借閱證號作為主索引,避免了關(guān)鍵字出復(fù)值。在借書表中涉及到“書被誰借去了”所以可以用借閱證號位關(guān)鍵字把學(xué)生基本情況表和借書表建立起一一對應(yīng)的關(guān)系。在學(xué)生基本情況表中涉及到“某學(xué)生截了那本書”故可以以索書號作為關(guān)鍵字建立唯一索引。因?yàn)樗鲿柺俏ㄒ淮_定的,雖讓建立的是唯一索引,卻也可以收到主索引的效果??偠灾?,在借書表與學(xué)生基本情況表之間以借閱證號位關(guān)鍵字建立對應(yīng)關(guān)系,再進(jìn)書表與學(xué)生基本情況表之間用索書號建立起一一對應(yīng)的關(guān)系,最終實(shí)現(xiàn)三個(gè)表之間的互動(dòng)。 3.1.3表結(jié)構(gòu)的建立與數(shù)據(jù)的錄入 打開了Visual FoxPro軟件,運(yùn)行文件菜單中的新建按鈕,選擇表和新建文件,同時(shí)設(shè)置好表名及路徑并保存,然后在出現(xiàn)表設(shè)計(jì)器中進(jìn)行設(shè)計(jì)。以下為三個(gè)表的設(shè)置結(jié)構(gòu)及錄入的記錄: 部分記錄如下: 圖3借書表結(jié)構(gòu)及部分?jǐn)?shù)據(jù)截圖 部分?jǐn)?shù)據(jù)如下: 圖4進(jìn)書表結(jié)構(gòu)及部分?jǐn)?shù)據(jù)截圖 部分?jǐn)?shù)據(jù)如下 圖5 學(xué)生節(jié)本情況結(jié)構(gòu)及部分?jǐn)?shù)據(jù)截圖 3.2系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 3.2.1系統(tǒng)界面與表單設(shè)計(jì) 漂亮簡捷的系統(tǒng)界面將給使用者一個(gè)好的印象,是一套系統(tǒng)的門面。設(shè)計(jì)的成功與否,見關(guān)系到系統(tǒng)的前景與市場。本套系統(tǒng)的界面設(shè)計(jì)及實(shí)現(xiàn)程序如下: 圖6 系統(tǒng)登陸截圖 設(shè)計(jì)步驟如下: 新建表單“系統(tǒng)登陸.scx”,創(chuàng)建command1、2、3,label1、2、3,combo1和text1。 設(shè)置text1的caption屬性為“圖書管理系統(tǒng)”,text2的caption屬性為“操作員”,text3的caption屬性為“密碼”,并設(shè)置字體、顏色、大小等內(nèi)容使其美觀。Label1的caption屬性為“確定”,同理label2、3為“取消、退出” 定義command1控件的click事件,代碼如下: 3.2.2數(shù)據(jù)查詢表單設(shè)計(jì) 數(shù)據(jù)查詢包括按學(xué)生學(xué)號查詢學(xué)生的具體信息、按書籍的名稱查詢書籍的具體信息和借閱情況等。下面列舉單表查詢表單如進(jìn)書表.scx和多表查詢表單如圖書去向情況和圖書借閱情況.scx說明數(shù)據(jù)查詢的設(shè)計(jì)方法,進(jìn)書表.scx的運(yùn)行效果如下圖所示: 圖7 圖書信息查詢系統(tǒng)截圖 設(shè)計(jì)步驟如下: 此表單的設(shè)計(jì)主要是練習(xí)表單向?qū)У挠梅?。新建表單→表單→向?qū)А侄芜x取→選擇表單樣式→排序次序→完成→運(yùn)行。 用表單向?qū)碓O(shè)計(jì)表單為使用者帶來極大的便利,尤其是對于我們初學(xué)者。但影響創(chuàng)造力的發(fā)揮和一些功能的實(shí)現(xiàn)。 索書號查詢表單的運(yùn)行效果如下: 圖8 索書號查詢截圖 設(shè)計(jì)步驟如下: ★此表單涉及主要是練習(xí)用程序和命令來實(shí)現(xiàn)查詢的目的。查詢的關(guān)鍵是command1即查詢按鈕的屬性設(shè)置。其實(shí)現(xiàn)代碼如下: command2即退出按鈕的代碼為release thisform; 推出系統(tǒng)地實(shí)現(xiàn): 退出系統(tǒng)地實(shí)現(xiàn)主要是通過command1、2的單擊事件click來實(shí)現(xiàn)的。其運(yùn)行效果圖如下: 圖9 退出系統(tǒng)截圖 設(shè)計(jì)步驟如下 ★command1即YES按鈕的實(shí)現(xiàn)代碼為 ,command2即NO按鈕的實(shí)現(xiàn)代碼為release thisform。 3.2.3 報(bào)表的設(shè)計(jì) 在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,常需要將數(shù)據(jù)處理結(jié)果以報(bào)表形式打印出來。在本套系統(tǒng)的報(bào)表設(shè)計(jì)、顯示、答應(yīng)報(bào)表的功能主要用報(bào)表設(shè)計(jì)起來實(shí)現(xiàn)。例如下圖: 運(yùn)行后的結(jié)果如圖所示: 圖10報(bào)表設(shè)計(jì)器及部分?jǐn)?shù)據(jù)截圖 在報(bào)表設(shè)計(jì)過程中,主要用到表設(shè)計(jì)器和表向?qū)?。為能用到?bào)表設(shè)計(jì)器的高級操作,我會在以后努力學(xué)習(xí)表設(shè)計(jì)器的高級操作,彌補(bǔ)這次課程設(shè)計(jì)的一個(gè)缺憾。 3.2.4主菜單的設(shè)計(jì) 主菜單是用戶使用本系統(tǒng)的主要途徑,所以合理的設(shè)計(jì)至關(guān)重要,本系統(tǒng)的主菜單是通過菜單設(shè)計(jì)器來完成,使用的是菜單設(shè)計(jì)器的非快捷菜單方式,在主菜單確定后,分別再編輯各個(gè)子菜單項(xiàng)、命令、過程。本系統(tǒng)使用了命令及過程調(diào)用表單的方式。設(shè)計(jì)步驟如下: 創(chuàng)建第一級菜單。在“項(xiàng)目管理器”中選擇“其他”選項(xiàng)卡,再選擇“菜單”選項(xiàng),然后單擊“新建”按鈕。出現(xiàn)菜單設(shè)計(jì)器,輸入各菜單名稱及結(jié)果,建立本系統(tǒng)所需要的菜單,如下圖所示:? 圖11 系統(tǒng)主菜單截圖 ★在創(chuàng)建主菜單后,即開始設(shè)計(jì)子菜單。單擊子菜單項(xiàng)后的“創(chuàng)建”按鈕,可創(chuàng)建其子菜單。如下圖所示: 圖12 系統(tǒng)子菜單編輯截圖 3.2.5主程序設(shè)計(jì) 主程序是系統(tǒng)運(yùn)行時(shí)執(zhí)行的主文件,設(shè)計(jì)主程序的方法為:在“項(xiàng)目管理器”中選擇“代碼”選項(xiàng)卡,再選擇“程序”選項(xiàng),然后選中一個(gè)程序文件,本系統(tǒng)中為“MAIN”,單擊右鍵彈出快捷菜單,選擇“設(shè)置主文件”,就可設(shè)置一個(gè)程序?yàn)橹魑募?/p> 本系統(tǒng)的主程序代碼如下: 四 系統(tǒng)操作說明 ★雙擊 快捷方式,進(jìn)入到登陸系統(tǒng)。 ★輸入操作員賬號和密碼,單擊確定進(jìn)入到系統(tǒng)介紹界面。單擊 系統(tǒng)操作界面。見看到菜單欄。在“系統(tǒng)介紹”中有“用戶更改”和“系統(tǒng)主頁”子菜單。在“數(shù)據(jù)查詢”中涉及到借閱信息、圖書去向、姓名查詢、索書號查詢等子菜單。報(bào)表打印中涉及到借書表、進(jìn)書表、學(xué)生信息、和借閱情況等表格。在退出系統(tǒng)一欄中,涉及到系統(tǒng)推出的確認(rèn),確定要退出單擊YES,否則單擊NO。 五 結(jié)束語 經(jīng)過為期兩周的課程設(shè)計(jì)可謂受益匪淺。經(jīng)過時(shí)間才真正的地把文字化為了知識,才真正的為我所用。認(rèn)識到自己在學(xué)習(xí)過程中的缺點(diǎn)和不足。為以后的學(xué)習(xí)生活積累了寶貴的經(jīng)驗(yàn)和教訓(xùn)。心得體會如下: ★再做vfp系統(tǒng)開發(fā)時(shí)一定要做好信息的收集工作,否則后即工作將墜入五里霧中。信息收集時(shí)要求盡可能的考慮周全。這才能為設(shè)計(jì)階段打下一個(gè)良好的基礎(chǔ)。 ★在系統(tǒng)的設(shè)計(jì)過程中,最好能集思廣益,多聽取一點(diǎn)別人的意見和創(chuàng)意。使程序盡可能完美。一定要學(xué)會用算法描述工具,把自己的的意圖詳細(xì)簡明的記錄下來。 ★在為文件命名是盡可能不要因其混淆,盡量由數(shù)字或字母。在系統(tǒng)設(shè)計(jì)中我把“系統(tǒng)登陸、系統(tǒng)登錄、登陸系統(tǒng)”三者混淆了。為自己帶來了不盡的苦難。并且均用漢字作為文件名。這樣雖然不易引起混淆,但是影響工作的效率。 ★要學(xué)會設(shè)置文件路徑,尤其是用向?qū)r(shí)。要學(xué)會用項(xiàng)目管理器,既可以提高工作效率,又減少了出錯(cuò)的幾率。 ★★最后誠懇的向老師您提一點(diǎn)建議,如果您一個(gè)學(xué)期教我們做一套系統(tǒng),在做這套系統(tǒng)的同時(shí)穿插著講知識點(diǎn),我幼稚的以為效果會更好,避免了在做課程設(shè)計(jì)已開始的時(shí)候找不到北! 六 參考文獻(xiàn): ㈠李春葆編著.Visual Fox Pro7.0數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與開發(fā).北京:清華大學(xué)出版社,2003.8 ㈡李春葆編著.Visual Fox Pro6.0高級編程(應(yīng)用系統(tǒng)設(shè)計(jì)篇).北京:清華大學(xué)出版社,2000 ㈢史濟(jì)民,湯觀全編著.Visual Fox Pro及其應(yīng)用系統(tǒng)開發(fā).北京:清華大學(xué)出版社,2000 ㈣蔡卓毅,林盛雄,林羽揚(yáng),黃竺編著.Visual Fox Pro6.0數(shù)據(jù)庫程序設(shè)計(jì)與實(shí)例.北京:冶金工業(yè)出版社,2003 ㈤史德芬編著.全國計(jì)算機(jī)等級考試二級真題解析——Visual Fox Pro程序設(shè)計(jì).北京:海洋出版社,2003 圖書管理系統(tǒng)開題報(bào)告2篇 圖書管理系統(tǒng)開題報(bào)告1 一、課題的目的及意義 本次畢業(yè)設(shè)計(jì)所從事的課題題目是基于VF的圖書管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。課題的目的:應(yīng)用當(dāng)前高速發(fā)展的計(jì)算機(jī)技術(shù),組建圖書管理系統(tǒng)。 隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet/Intranet應(yīng)用在全球范圍內(nèi)日益普及,當(dāng)今社會正快速向信息化社會前進(jìn),信息自動(dòng)化的作用也越來越大。從而使我們從繁雜的事務(wù)中解放出來,提高了我們的工作效率。 圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,以前對圖書信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對借書卡的人工檢查進(jìn)行,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。 數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。圖書館采取手工方式對圖書借閱情況進(jìn)行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時(shí)對圖書信息比較清楚,時(shí)間一長,如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費(fèi)時(shí)、費(fèi)力;如要對很長時(shí)間以前的圖書進(jìn)行更改就更加困難了。 二、本課題在國內(nèi)外的研究現(xiàn)狀分析 目前大多數(shù)圖書館的借閱工作部分還是手工管理,工作效率很低,并且不能及時(shí)了解圖書的種類和讀者們比較需求的圖書等,不能更好的適應(yīng)當(dāng)前讀者的借閱要求。手工管理還存在許多弊端,由于不可避免的人為因素,造成數(shù)據(jù)的遺漏、誤報(bào)等。計(jì)算機(jī)信息化管理有著儲存量大,速度快等許多優(yōu)點(diǎn),提供給我們的處理信息及時(shí)快捷,因此我們利用計(jì)算機(jī)提供給我們的信息對讀者們的借閱過程形成一整套動(dòng)態(tài)的管理 三、本課題主要內(nèi)容 建立圖書管理系統(tǒng),完成的主要功能有: 借書管理:完成讀者借書這一業(yè)務(wù)流程。 還書管理:完成讀者還書這一業(yè)務(wù)流程。 圖書類別管理:完成圖書的分類處理。 圖書信息管理:完成圖書信息的添加、修改、刪除和查詢處理。讀者類別管理:完成讀者管理的分類處理。 讀者信息管理:完成讀者信息的添加、修改、刪除和查詢處理。系統(tǒng)管理:完成系統(tǒng)管理員的添加和更改密碼。 四、實(shí)現(xiàn)途徑 應(yīng)用Visual FoxPro 6.0建立數(shù)據(jù)庫,實(shí)現(xiàn)本次系統(tǒng)開發(fā)。 五、進(jìn)度計(jì)劃: 1、確定題目,查看資料第1周 2、系統(tǒng)規(guī)劃第2-3周 3、系統(tǒng)的`編制與調(diào)試第4-6周 4、畢業(yè)論文框架的確定第7周 5、畢業(yè)論文撰寫、修改與確定第8-9周 6、畢業(yè)設(shè)計(jì)的形式審查及改進(jìn)、預(yù)答辯第10周 報(bào)告人簽名: 六、導(dǎo)師意見 導(dǎo)師簽名: 圖書管理系統(tǒng)開題報(bào)告2 一.開發(fā)背景及意義 如何獲取信息?圖書是我們最好的獲取信息的方式,但由于圖書館圖書收藏量大大增加,使傳統(tǒng)的圖書管理員的工作日益繁重起來。迫使人們起用新的管理方法來管理圖書,如何把圖書管理員從繁重的工作中解脫出來呢? 科學(xué)技術(shù)日新月異的進(jìn)步,讓人類生活發(fā)生了巨大的變化,計(jì)算機(jī)技術(shù)的飛速發(fā)展,使各行各業(yè)在計(jì)算機(jī)技術(shù)應(yīng)用方面得到了廣泛的普及和使用。信息化時(shí)代的到來成為不可抗拒的潮流,人類文明正在進(jìn)入一個(gè)嶄新的時(shí)代。因此,圖書管理系統(tǒng)也以方便、快捷、費(fèi)用低的優(yōu)點(diǎn)正慢慢地進(jìn)入人們的生活,將傳統(tǒng)的圖書管理方式徹底的解脫出來,提高效率,減輕工人人員以往繁忙的工作,減小出錯(cuò)的概率,使讀者可以花更多的時(shí)間在選擇書和看書上。從而使人們有更多時(shí)間來獲取信息、了解信息、掌握信息。 為方便對圖書館書籍、讀者資料、借還書等進(jìn)行高效的管理,特編寫該程序以提高圖書館的管理效率。使用該程序之后,工作人員可以查詢某位讀者、某種圖書的借閱情況,還可以對當(dāng)前圖書借閱情況進(jìn)行一些統(tǒng)計(jì),給出統(tǒng)計(jì)表格,以便全面掌握圖書的流通情況。 二.需求分析 1.能夠輸入圖書的綜合情況和進(jìn)行新書入庫、現(xiàn)有圖書信息修改以及刪除; 2.能夠?qū)崿F(xiàn)對讀者檔案的查詢和編輯管理; 3.能夠進(jìn)行罰款功能; 能夠進(jìn)行借閱歷史的查詢功能; 三.開發(fā)平臺 1.使用VisualC++6.0作為本次系統(tǒng)的開發(fā)工具,開題報(bào)告《圖書管理系統(tǒng)開題報(bào)告》。因?yàn)閂isualC++6.0是功能最為強(qiáng)大可視化開發(fā)工具,它不僅支持傳統(tǒng)的軟件開發(fā)方法,更重要的是它能支持面向?qū)ο?、可視化的開發(fā)風(fēng)格。因此VisualC++又稱作是一個(gè)集成開發(fā)工具,它提供了軟件代碼自動(dòng)生成和可視化的資源編輯功能。 2.使用Access做為本次開發(fā)軟件的數(shù)據(jù)庫。因?yàn)锳ccess被集成在MicrosoftOffice中。Access數(shù)據(jù)庫處理的基本結(jié)構(gòu),采取關(guān)系型數(shù)據(jù)庫模式。與其他的數(shù)據(jù)庫系統(tǒng)相比,Access更加簡單易學(xué),一個(gè)普通的計(jì)算機(jī)用戶可以很快地掌握它。Access20xx的功能十分強(qiáng)大,利用它可以方便地實(shí)現(xiàn)對信息保存、維護(hù)、查詢、統(tǒng)計(jì)、打印、交流、發(fā)布,而且它可以十分方便地與Office其他組件交流數(shù)據(jù),這些功能對一個(gè)一般用戶而言已經(jīng)足夠了。 四.本系統(tǒng)功能模塊 圖書管理系統(tǒng)需要實(shí)現(xiàn)的功能主要有四大塊:“日常工作管理”、“基本資料維護(hù)”、“查詢”、和“系統(tǒng)管理”模塊。其中日常工作管理和基本資料維護(hù)是整個(gè)系統(tǒng)的核心。 1.“日常工作”模塊: (1)借書處理:主要功能是記錄借閱證編號和圖書編號,進(jìn)行借書過程。在數(shù)據(jù)庫中插入一條借書記錄,該記錄包括讀者ID、圖書ID、借出日期、還書期限、操作員姓名。 (2)還書處理:主要功能是輸入借閱證編號、圖書ID,在借閱登記表中找到相應(yīng)的記錄,將該記錄的相應(yīng)數(shù)據(jù)插入到還書記錄中,同時(shí)將借書記錄刪除,并保存在借閱歷史記錄表中。 (3)繳納罰金:輸入讀者ID,顯示該讀者的姓名、圖書編號、罰款金額和罰款原因,如果讀者交納了罰金,則將借閱登記表的允許借閱標(biāo)志置為“Y”。刪除罰款記錄表中該讀者對應(yīng)的記錄,將這一條記錄同時(shí)插入到罰款歷史記錄表中。 2.“基本資料維護(hù)”模塊: (1)圖書資料維護(hù):包括新書的入庫,以及現(xiàn)有書籍資料的修改和刪除。 (2)讀者資料維護(hù):包括新會員的資料入庫,以及現(xiàn)有會員資料的修改和刪除 3.“查詢”模塊: (1)圖書資料查詢:根據(jù)相應(yīng)的圖書信息對所有書籍進(jìn)行所需查詢。此查詢包括:'圖書分類'、'圖書編號'、'圖書名稱'、'作者'、'出版社'。 (2)讀者資料查詢:根據(jù)相應(yīng)的讀者資料進(jìn)行所需查詢。'借閱證編號'、'讀者姓名'以及'身份證編號'。 (3)借閱歷史記錄查詢:根據(jù)相應(yīng)的借閱信息進(jìn)行所需查詢。此查詢包括:'借閱證編號'、'圖書編號'、'借書日期'、'還書日期'。 (4)罰款歷史記錄查詢:根據(jù)相應(yīng)的罰款信息進(jìn)行所需查詢。此查詢包括:'借閱證編號'、'罰款日期'、'罰款原因'。 4.“系統(tǒng)管理”模塊: (1)員工管理:包括新員工信息的錄入,密碼的修改以及員工信息的刪除。 (2)數(shù)據(jù)備份:對現(xiàn)有的數(shù)據(jù)庫信息的保存。 (3)數(shù)據(jù)恢復(fù):對數(shù)據(jù)庫信息的恢復(fù) 五.參考文獻(xiàn) [1]伍俊良.《VisualC++課程設(shè)計(jì)與系統(tǒng)開發(fā)案例》.清華大學(xué)出版社 [2]楊小平.《VisualC++項(xiàng)目案例導(dǎo)航》.科學(xué)出版社 [3]鄧宗明,張曉競.《VisualC++編程實(shí)用技術(shù)與案例》.清華大學(xué)出版社 [4]鄭阿奇.《VisualC++實(shí)用教程》.電子工業(yè)出版社 [5]薩師煊,王珊.《數(shù)據(jù)庫系統(tǒng)概論》.高等教育出版社 [6]鄭人杰,殷人昆,陶永雷.實(shí)用軟件工程.清華大學(xué)出版社.1997.4第四篇:圖書管理系統(tǒng)設(shè)計(jì)報(bào)告
第五篇:圖書管理系統(tǒng)開題報(bào)告