圖書信息管理系統(tǒng) 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
《圖書信息管理系統(tǒng) 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)》由會員分享,可在線閱讀,更多相關(guān)《圖書信息管理系統(tǒng) 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)(15頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、15 湖南科技學(xué)院 課程設(shè)計(jì)報(bào)告 課程名稱: 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì) 課程設(shè)計(jì)題目: 圖書信息管理系統(tǒng) 系: 數(shù)學(xué)與計(jì)算科學(xué)系 專 業(yè): 信息與計(jì)算科學(xué) 年級、班: 2008級4班 姓 名: 趙涵玉 學(xué) 號: 200805002218 指導(dǎo)教師: 牛志毅 職 稱: 講師 2011年5月 一、 課題說明 1、設(shè)計(jì)一個(gè)圖書信息管理系統(tǒng)Library Management System 2、圖書信息包括圖書編號bookID、書名titles、作者author、出版社bookcon
2、cern、出版日期publicationdate、圖書簡介bookintroduction及圖書類別bookcategory等。 3、本系統(tǒng)功能描述: 圖書信息錄入功能; 圖書信息瀏覽功能; 查詢功能search(至少一種查詢方式); 圖書信息修改alter功能; 及其它你認(rèn)為必要的功能。 二、 程序設(shè)計(jì)思路 該課題要求是輸入圖書信息,對圖書信息進(jìn)行一系列的處理。既要輸入圖書編號又要能查找到與之對應(yīng)的書名,還要對實(shí)現(xiàn)建立,顯示,查找,刪除,信息的保存。 因?yàn)榭紤]到信息管理信息的實(shí)用性,額外添加了一個(gè)“讀文件”功能,使利用void read()方法來實(shí)現(xiàn)的
3、。這個(gè)“讀文件模塊"!是我用來擴(kuò)充信息管理系統(tǒng)功能的!可以使系統(tǒng)在用戶不用輸入信息就能讀取先前已存在的圖書信息文件。 根據(jù)課題要求,首先對要實(shí)現(xiàn)的功能類型分為三大類——Public類、方法類、信息類;然后細(xì)分為七個(gè)方法——void caidan()、void creat()、void output()、void search()、void delete()、void alter() 、void read ()。這些類和方法構(gòu)成了能夠?qū)崿F(xiàn)不同功能的模塊,很好地體現(xiàn)了面向?qū)ο蟮腏ava語言的編程模塊塊的思想。 通過調(diào)用各功能模塊的幾個(gè)方法,隨后在各個(gè)method中具體實(shí)現(xiàn)相關(guān)的功能。當(dāng)然要利
4、用throws IOException進(jìn)行一些異常處理,包括輸入異常和數(shù)據(jù)的異常。在數(shù)據(jù)的錄入與輸出的過程中涉及到文件的相關(guān)操作(包括打開與關(guān)閉等)最后是系統(tǒng)的安全退出。大部分功能都是在具體的模塊中加以實(shí)現(xiàn)的。 如search方法實(shí)現(xiàn)查詢圖書信息功能;caidan方法實(shí)現(xiàn)系統(tǒng)選擇菜單界面的輸出等相關(guān)功能;delete方法用于圖書信息刪除;output方法用于圖書信息的輸出及瀏覽等系列功能。 Alter方法用于圖書信息的修改等。 三、 程序源代碼 package librarymanagesystem; import java.io.*; public clas
5、s booksystem { public static void main(final String[] args) throws IOException // throws IOException用來拋出io的錯誤,文件讀寫錯誤,主要涉及到j(luò)ava的安全機(jī)制 { booksInfo booksOne[] = new booksInfo[100]; // 定義100個(gè)類數(shù)組 for (int j = 0; j < 100; j++) booksOne[j] = new booksInfo();// 建立這100個(gè)類的對象 final ways b
6、ooksTwo = new ways(); // 建立這個(gè)方法類的對象 booksTwo.caidan(booksOne); } } class booksInfo { // 圖書信息類,存放圖書的信息 public String bookID;//圖書編號 public String titles;//書名 public String author;//圖書作者 public String bookconcern;//出版社 public String publicationdate;//出版日期 public String bookintrod
7、uction;//圖書簡介 public String bookcategory;//圖書類別 // 把bookID,titles,author,bookconcern,publicationdate,bookintroduction,bookcategory等聲明為全局變量, // 因?yàn)樗鼈冐灤┯谡麄€(gè)程序中,方便其它方法、類調(diào)用它們 } // 方法類,主要實(shí)現(xiàn)圖書信息的建立,顯示,查找,刪除,信息的保存與讀??;這個(gè)類是整個(gè)程序的操作類。 class ways { public String recordkey; public int i = 0;// i用
8、來存放圖書的數(shù)目 public String filename = "Infomation.txt"; BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); void caidan(booksInfo booksOne[]) throws IOException { final BufferedReader buf = new BufferedReader(new InputStreamReader( System.in)); // 產(chǎn)生Buf對象;buf是Bu
9、fferedReader類的變量,此處將讀入字符串至buf int choice; do { System.out.println("☆★☆★☆★☆數(shù)學(xué)與計(jì)算科學(xué)系信計(jì)0802班★趙涵玉★設(shè)計(jì)★☆★☆★☆\n\n"); System.out.println("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"); System.out.println("┃★ ★ ★ 圖書管理系統(tǒng)主菜單界面 ★ ★ ★┃"); System.out.println("┣━━
10、━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫"); System.out.println("┃★ ★ ★ ★ 1.輸入圖書信息 ★ ★ ★ ★┃"); System.out.println("┃★ ★ ★ 2.瀏覽圖書信息 ★ ★ ★┃"); System.out.println("┃★ ★ ★ 3.查找圖書信息
11、 ★ ★ ★┃"); System.out.println("┃★ ★ ★ 4.刪除圖書信息 ★ ★ ★┃"); System.out.println("┃★ ★ ★ 5.安全退出系統(tǒng) ★ ★ ★┃"); System.out.println("┃★ ★ ★ 6.修改圖書信息
12、 ★ ★ ★┃"); System.out.println("┃★ ★ ★ ★ 7.讀取數(shù)據(jù) ★ ★ ★ ★┃"); System.out.println("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"); System.out.print(" 請輸入您的選擇(1--7):"); choice = Integer.parseInt(buf.readLine()); switch (ch
13、oice) { case 1: creat(booksOne); break; case 2: output(booksOne); break; case 3: search(booksOne); break; case 4: delete(booksOne); break; case 5: save(booksOne); break; case 6: alter(booksOne); break;
14、 case 7: read(booksOne); break; } } while (true); } // 實(shí)現(xiàn)“增加(建立)圖書信息” void creat(booksInfo booksOne[]) throws IOException { final BufferedReader buf = new BufferedReader(new InputStreamReader( System.in)); System.out.print("\n請輸入圖書信息(以0結(jié)束)\
15、n"); System.out.print("圖書編號:\n\n"); booksOne[i].bookID = buf.readLine(); // 用數(shù)組booksOne[i]來暫存圖書的序號,并用compareTo方法確定判定是否應(yīng)該寫入新信息 while (booksOne[i].bookID.compareTo("0") != 0) { System.out.print("書名:\n\n"); booksOne[i].titles = buf.readLine(); System.out.print("作者:\n\n");
16、booksOne[i].author = buf.readLine(); System.out.print("出版社:\n\n"); booksOne[i].bookconcern = buf.readLine(); System.out.print("出版日期:\n\n"); booksOne[i].publicationdate = buf.readLine(); System.out.print("圖書簡介:\n\n"); booksOne[i].bookintroduction = buf.readLine(); System.o
17、ut.print("圖書類別:\n\n"); booksOne[i].bookcategory = buf.readLine(); i++; System.out.println("請輸入下一本圖書的信息:\n\n"); booksOne[i].bookID = buf.readLine(); } } // 這里是實(shí)現(xiàn)“輸出(預(yù)覽)職工信息”output的模塊 void output(booksInfo booksOne[]) throws IOException { System.out .println("--
18、-----------------------------------------------------------------------------"); System.out .println(" *圖書信息表* "); System.out .println("-------------------------------------------------------------------------------");
19、 System.out .println("圖書編號 書名 作者 出版社 出版日期 圖書簡介 圖書類別 "); System.out .println("-------------------------------------------------------------------------------"); if (i != 0) { for (int j = 0; j < i; j++) { System.out.print(booksOne[j].bookID
20、+ " " + booksOne[j].titles + " " + booksOne[j].author + " "); System.out.print(booksOne[j].bookconcern + " " + booksOne[j].publicationdate + " " + booksOne[j].bookintroduction + " "); System.out.print(booksOne[j].bookcategory + "\n"); } System.out
21、 .println("-------------------------------------------------------------------------------"); } else System.out.println("沒有圖書信息!"); } // 實(shí)現(xiàn)圖書信息的查詢功能的模塊 void search(booksInfo booksOne[]) throws IOException { final BufferedReader buf = new BufferedReader(new InputStreamReader(
22、 System.in)); System.out.println("\n請輸入您要查找的圖書編號:"); recordkey = buf.readLine(); boolean flg = true; System.out .println("-------------------------------------------------------------------------------"); System.out .println(" *圖書信息表*
23、 "); System.out .println("-------------------------------------------------------------------------------"); System.out .println("圖書編號 書名 作者 出版社 出版日期 圖書簡介 圖書類別 "); System.out .println("---------------------------------------
24、----------------------------------------"); for (int j = 0; j < i; j++) { if (recordkey.equals(booksOne[j].bookID)) {// equals是字符串比較函數(shù)相等返回true System.out.print(booksOne[j].bookID + " " + booksOne[j].titles + " " + booksOne[j].author + " "); System.out.print(booksOne[
25、j].bookconcern + " " + booksOne[j].publicationdate + " " + booksOne[j].bookintroduction + " "); System.out.print(booksOne[j].bookcategory + " " + "\n"); flg = false; } } if (flg) System.out.println("對不起,查無此書!"); } void delete(booksInfo booksOne[]) th
26、rows IOException { final BufferedReader buf = new BufferedReader(new InputStreamReader( System.in)); System.out.println("\n請輸入您要刪除的圖書編號:"); recordkey = buf.readLine(); boolean flg = true; for (int j = 0; j < i; j++) { if (recordkey.equals(booksOne[j].bookID)) { // 利用順序表的
27、刪除算法,刪除值之后,再把后面的值往前移位,從而實(shí)現(xiàn)刪除 for (int k = j; k <= i - 1; k++) { booksOne[k].bookID = booksOne[k + 1].bookID; booksOne[k].titles = booksOne[k + 1].titles; booksOne[k].author = booksOne[k + 1].author; booksOne[k].bookconcern = booksOne[k + 1].bookconcern; booksOne[k]
28、.publicationdate = booksOne[k + 1].publicationdate; booksOne[k].bookintroduction = booksOne[k + 1].bookintroduction; booksOne[k].bookcategory = booksOne[k + 1].bookcategory; } i--;// 職工人數(shù)要減一 flg = false; } } if (flg) System.out.println("對不起,查無此書!。");
29、 else System.out.println("已經(jīng)刪除!。"); } // 數(shù)據(jù)的保存模塊,把輸入的圖書信息保存到相應(yīng)的文件里。 void save(booksInfo booksOne[]) throws IOException { int k; final FileWriter fw = new FileWriter(filename);// 調(diào)用構(gòu)造函數(shù)FileWriter()創(chuàng)建FileWriter類的對象。 // 文件的讀取 fw.write(i + "\n");// 把職工的人數(shù)保存到文件中以便下次讀取是使用 for
30、 (k = 0; k < i; k++) {// 每個(gè)職工有9個(gè)信息字段,下面就是這9個(gè)信息段。 fw.write(booksOne[k].bookID + "\n"); fw.write(booksOne[k].titles + "\n"); fw.write(booksOne[k].author + "\n"); fw.write(booksOne[k].bookconcern + "\n"); fw.write(booksOne[k].publicationdate + "\n"); fw.write(booksOne[k].bookint
31、roduction + "\n"); fw.write(booksOne[k].bookcategory + "\n"); } fw.close(); System.out.println("\n 系統(tǒng)已經(jīng)安全退出!感謝您的使用!"); System.exit(0); } void alter (booksInfo booksOne[]) throws IOException{ final BufferedReader buf = new BufferedReader(new InputStreamReader( Sys
32、tem.in)); int choice; System.out.println("\n請輸入您要修改的圖書編號:\n"); recordkey = buf.readLine(); for (int j = 0; j < i; j++){ if (recordkey.equals(booksOne[j].bookID)){ System.out.println(" 1.修改圖書編號 "); System.out.println(" 2.修改書名 "); System.out.println(" 3.修改圖書作者
33、 "); System.out.println(" 4.修改圖書出版社 "); System.out.println(" 5.修改出版日期 "); System.out.println(" 6.修改圖書簡介 "); System.out.println(" 7.修改圖書類別 "); System.out.print(" 請輸入您的選擇(1--7):"); choice = Integer.parseInt(buf.readLine()); switch (choice) {
34、 case 1: System.out.print("新的圖書編號:\n\n"); booksOne[j].bookID = buf.readLine(); break; case 2: System.out.print("新的圖書名:\n\n"); booksOne[j].titles = buf.readLine(); break; case 3: System.out.print("新的圖書作者:\n\n"); booksOne[j].author = buf.re
35、adLine(); break; case 4: System.out.print("新的出版社:\n\n"); booksOne[j].bookconcern = buf.readLine(); break; case 5: System.out.print("新的圖書出版日期:\n\n"); booksOne[j].publicationdate = buf.readLine(); break; case 6: System.out.print("新的圖書簡介:\n
36、\n"); booksOne[j].bookintroduction = buf.readLine(); break; case 7: System.out.print("新的圖書類別:\n\n"); booksOne[j].bookcategory = buf.readLine(); break; } }else System.out.println("不存在!");} } // 讀文件模塊,讀取先前已
37、存在的職工信息文件 void read(booksInfo booksOne[]) throws IOException { final FileReader fr = new FileReader(filename); final BufferedReader bfr = new BufferedReader(fr); if ((recordkey = bfr.readLine()) != null) i = Integer.parseInt(recordkey); for (int j = 0; j < i; j++) { booksOne[j]
38、.bookID = bfr.readLine(); booksOne[j].titles = bfr.readLine(); booksOne[j].author = bfr.readLine(); booksOne[j].bookconcern = bfr.readLine(); booksOne[j].publicationdate = bfr.readLine(); booksOne[j].bookintroduction = bfr.readLine(); booksOne[j].bookcategory = bfr.readLine()
39、; } fr.close(); System.out.println("\n 數(shù)據(jù)已經(jīng)成功讀??!"); } } 四、 程序測試 ☆★☆★☆★☆數(shù)學(xué)與計(jì)算科學(xué)系信計(jì)0802班★趙涵玉★設(shè)計(jì)★☆★☆★☆ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃★ ★ ★ 圖書管理系統(tǒng)主菜單界面 ★ ★ ★┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃★ ★ ★ ★ 1.輸入圖書信息 ★ ★ ★ ★┃ ┃★ ★ ★ 2.
40、瀏覽圖書信息 ★ ★ ★┃ ┃★ ★ ★ 3.查找圖書信息 ★ ★ ★┃ ┃★ ★ ★ 4.刪除圖書信息 ★ ★ ★┃ ┃★ ★ ★ 5.安全退出系統(tǒng) ★ ★ ★┃ ┃★ ★ ★ 6.修改圖書信息 ★ ★ ★┃ ┃★ ★ ★ ★ 7.讀取數(shù)據(jù) ★ ★ ★ ★┃
41、┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 請輸入您的選擇(1--7):1 請輸入圖書信息(以0結(jié)束) 圖書編號: 1 書名: 2 作者: 3 出版社: 4 出版日期: 5 圖書簡介: 6 圖書類別: 7 請輸入下一本圖書的信息: 請輸入您的選擇(1--7):2 ------------------------------------------------------------------------------- *圖書信息表*
42、 ------------------------------------------------------------------------------- 圖書編號 書名 作者 出版社 出版日期 圖書簡介 圖書類別 ------------------------------------------------------------------------------- 1 2 3 4 5 6 7 ----
43、--------------------------------------------------------------------------- 請輸入您的選擇(1--7):3 請輸入您要查找的圖書編號: 1 ------------------------------------------------------------------------------- *圖書信息表* ----------------------------
44、--------------------------------------------------- 圖書編號 書名 作者 出版社 出版日期 圖書簡介 圖書類別 ------------------------------------------------------------------------------- 1 2 3 4 5 6 7 請輸入您的選擇(1--7):4 請輸入您要刪除的圖書編號: 1 已經(jīng)刪除!。 請輸入您的選擇(1--7):5 系統(tǒng)已經(jīng)安
45、全退出!感謝您的使用! 請輸入您的選擇(1--7):6 請輸入您要修改的圖書編號: 1 1.修改圖書編號 2.修改書名 3.修改圖書作者 4.修改圖書出版社 5.修改出版日期 6.修改圖書簡介 7.修改圖書類別 請輸入您的選擇(1--7):1 新的圖書編號: 2 請輸入您的選擇(1--7):7 數(shù)據(jù)已經(jīng)成功讀取! 五、 設(shè)計(jì)總結(jié) 一、多動手、多參考。本次課程設(shè)計(jì)綜合考察了我們對Java程序設(shè)計(jì)知識的掌握熟練程度和實(shí)際運(yùn)用能力。其間,涉及到了
46、Java 中的大多數(shù)的知識點(diǎn),如Java的類與對象、Java的異常處理機(jī)制、Java中的集合框架、Java輸入輸出流等。 程序?qū)崿F(xiàn)的關(guān)鍵在于功能的合理劃分以及各個(gè)包或者類之間的通訊問題,只要分析清楚這兩點(diǎn),剩下的就是按部就班的寫代碼了。所以設(shè)計(jì)是關(guān)鍵。 功能實(shí)現(xiàn)了,再就是如何對程序進(jìn)行性能優(yōu)化的問題。這不但需要扎實(shí)掌握基礎(chǔ)知識,而且還需要多實(shí)踐,在編程實(shí)踐中學(xué)習(xí)、理解性能優(yōu)化的問題。 作為一門程序設(shè)計(jì)語言,Java 的學(xué)習(xí)務(wù)必要做到多看多寫多想多請教。 二、多看,看高手、大師的程序。借鑒其解題思路和程序架構(gòu);多寫,學(xué)習(xí)程序設(shè)計(jì)很重要的就是要自己親自動手寫代碼,切忌犯眼高手低的弊病,而且這樣記憶非常深刻;多想,程序調(diào)試中出現(xiàn)一些“莫明其妙”的問題,為什么會這樣而不是那樣;多請教:程序設(shè)計(jì)說到底是要徹底搞清設(shè)計(jì)該語言的人的思想,遇到問題想不通應(yīng)該請教同學(xué)、老師等。這樣可達(dá)到事半功倍的目的。 六、 參考文獻(xiàn) 【1】 劉寶林. Java程序設(shè)計(jì)與案例[M]. 北京: 高等教育出版社, 2004.11。 【2】吳亞峰, 紀(jì)超. Java SE 6.0編程指南[M]. 北京: 人民郵電出版社, 2007.11。 【3】lava程序設(shè)計(jì)與案例。 自我評分:70
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第七章-透射電子顯微鏡
- 群落的結(jié)構(gòu)(課件)
- 焊接基礎(chǔ)知識
- 水文地質(zhì)學(xué)課件
- 某公司員工工傷安全管理規(guī)定
- 消防培訓(xùn)課件:安全檢修(要點(diǎn))
- 某公司安全生產(chǎn)考核與獎懲辦法范文
- 安全作業(yè)活動安全排查表
- 某公司危險(xiǎn)源安全辨識、分類和風(fēng)險(xiǎn)評價(jià)、分級辦法
- 某公司消防安全常識培訓(xùn)資料
- 安全培訓(xùn)資料:危險(xiǎn)化學(xué)品的類別
- 中小學(xué)寒假學(xué)習(xí)計(jì)劃快樂度寒假充實(shí)促成長
- 紅色插畫風(fēng)輸血相關(guān)知識培訓(xùn)臨床輸血流程常見輸血不良反應(yīng)
- 14.應(yīng)急救援隊(duì)伍訓(xùn)練記錄
- 某公司各部門及人員安全生產(chǎn)責(zé)任制