圖書信息管理系統(tǒng) 面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計
《圖書信息管理系統(tǒng) 面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《圖書信息管理系統(tǒng) 面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、15 湖南科技學(xué)院 課程設(shè)計報告 課程名稱: 面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計 課程設(shè)計題目: 圖書信息管理系統(tǒng) 系: 數(shù)學(xué)與計算科學(xué)系 專 業(yè): 信息與計算科學(xué) 年級、班: 2008級4班 姓 名: 趙涵玉 學(xué) 號: 200805002218 指導(dǎo)教師: 牛志毅 職 稱: 講師 2011年5月 一、 課題說明 1、設(shè)計一個圖書信息管理系統(tǒng)Library Management System 2、圖書信息包括圖書編號bookID、書名titles、作者author、出版社bookcon
2、cern、出版日期publicationdate、圖書簡介bookintroduction及圖書類別bookcategory等。 3、本系統(tǒng)功能描述: 圖書信息錄入功能; 圖書信息瀏覽功能; 查詢功能search(至少一種查詢方式); 圖書信息修改alter功能; 及其它你認(rèn)為必要的功能。 二、 程序設(shè)計思路 該課題要求是輸入圖書信息,對圖書信息進(jìn)行一系列的處理。既要輸入圖書編號又要能查找到與之對應(yīng)的書名,還要對實現(xiàn)建立,顯示,查找,刪除,信息的保存。 因為考慮到信息管理信息的實用性,額外添加了一個“讀文件”功能,使利用void read()方法來實現(xiàn)的
3、。這個“讀文件模塊"!是我用來擴(kuò)充信息管理系統(tǒng)功能的!可以使系統(tǒng)在用戶不用輸入信息就能讀取先前已存在的圖書信息文件。 根據(jù)課題要求,首先對要實現(xiàn)的功能類型分為三大類——Public類、方法類、信息類;然后細(xì)分為七個方法——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)用各功能模塊的幾個方法,隨后在各個method中具體實現(xiàn)相關(guān)的功能。當(dāng)然要利
4、用throws IOException進(jìn)行一些異常處理,包括輸入異常和數(shù)據(jù)的異常。在數(shù)據(jù)的錄入與輸出的過程中涉及到文件的相關(guān)操作(包括打開與關(guān)閉等)最后是系統(tǒng)的安全退出。大部分功能都是在具體的模塊中加以實現(xiàn)的。 如search方法實現(xiàn)查詢圖書信息功能;caidan方法實現(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個類數(shù)組 for (int j = 0; j < 100; j++) booksOne[j] = new booksInfo();// 建立這100個類的對象 final ways b
6、ooksTwo = new ways(); // 建立這個方法類的對象 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等聲明為全局變量, // 因為它們貫穿于整個程序中,方便其它方法、類調(diào)用它們 } // 方法類,主要實現(xiàn)圖書信息的建立,顯示,查找,刪除,信息的保存與讀??;這個類是整個程序的操作類。 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é)與計算科學(xué)系信計0802班★趙涵玉★設(shè)計★☆★☆★☆\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); } // 實現(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(); } } // 這里是實現(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("沒有圖書信息!"); } // 實現(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、刪除算法,刪除值之后,再把后面的值往前移位,從而實現(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++) {// 每個職工有9個信息字段,下面就是這9個信息段。 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é)與計算科學(xué)系信計0802班★趙涵玉★設(shè)計★☆★☆★☆ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃★ ★ ★ 圖書管理系統(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è)計總結(jié) 一、多動手、多參考。本次課程設(shè)計綜合考察了我們對Java程序設(shè)計知識的掌握熟練程度和實際運用能力。其間,涉及到了
46、Java 中的大多數(shù)的知識點,如Java的類與對象、Java的異常處理機(jī)制、Java中的集合框架、Java輸入輸出流等。 程序?qū)崿F(xiàn)的關(guān)鍵在于功能的合理劃分以及各個包或者類之間的通訊問題,只要分析清楚這兩點,剩下的就是按部就班的寫代碼了。所以設(shè)計是關(guān)鍵。 功能實現(xiàn)了,再就是如何對程序進(jìn)行性能優(yōu)化的問題。這不但需要扎實掌握基礎(chǔ)知識,而且還需要多實踐,在編程實踐中學(xué)習(xí)、理解性能優(yōu)化的問題。 作為一門程序設(shè)計語言,Java 的學(xué)習(xí)務(wù)必要做到多看多寫多想多請教。 二、多看,看高手、大師的程序。借鑒其解題思路和程序架構(gòu);多寫,學(xué)習(xí)程序設(shè)計很重要的就是要自己親自動手寫代碼,切忌犯眼高手低的弊病,而且這樣記憶非常深刻;多想,程序調(diào)試中出現(xiàn)一些“莫明其妙”的問題,為什么會這樣而不是那樣;多請教:程序設(shè)計說到底是要徹底搞清設(shè)計該語言的人的思想,遇到問題想不通應(yīng)該請教同學(xué)、老師等。這樣可達(dá)到事半功倍的目的。 六、 參考文獻(xiàn) 【1】 劉寶林. Java程序設(shè)計與案例[M]. 北京: 高等教育出版社, 2004.11。 【2】吳亞峰, 紀(jì)超. Java SE 6.0編程指南[M]. 北京: 人民郵電出版社, 2007.11。 【3】lava程序設(shè)計與案例。 自我評分: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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點美食推薦
- XX國有企業(yè)黨委書記個人述責(zé)述廉報告及2025年重點工作計劃
- 世界濕地日濕地的含義及價值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點節(jié)后常見的八大危險
- 廈門城市旅游介紹廈門景點介紹廈門美食展示
- 節(jié)后開工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓(xùn)
- 深圳城市旅游介紹景點推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)勿忘安全本心人人講安全個個會應(yīng)急
- 預(yù)防性維修管理
- 常見閥門類型及特點
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案