版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 C語言程序設(shè)計 實驗報告題 目: 圖書管理管理系統(tǒng)院 系: 信息科技學(xué)院專 業(yè): 姓 名: 學(xué) 號: 指導(dǎo)教師: 楊呈勇 日 期: 09-09-181 問題定義 .32 系統(tǒng)設(shè)計 321 總體設(shè)計422 詳細(xì)設(shè)計42.2.1 借書模塊 42.2.2 圖書維護(hù) 5 新增記錄 5 更改系統(tǒng). 6刪除系統(tǒng) 6 查找系統(tǒng). 6 顯示系統(tǒng) . 73 系統(tǒng)實現(xiàn) 103.1 編碼 83.1.1 程序預(yù)處理 .93.1.2 主函數(shù)main() .94 系統(tǒng)維護(hù) 165 歸納總結(jié) 165.1 開發(fā)經(jīng)驗 165.2 實訓(xùn)中遇到的問題及解決方法 165.3 設(shè)計中的不足之處165.4 感想和心得體會 16圖書管理
2、系統(tǒng) 本題目設(shè)計目的是訓(xùn)練學(xué)生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、單鏈表、文件及各種語句的運用如for();switch();if.else等方面的知識。通過本程序的訓(xùn)練,使學(xué)生能對C語言的文件操作有一個更深刻的了解,初步掌握鏈表的一些結(jié)構(gòu)及構(gòu)成。掌握利用單鏈表存儲結(jié)構(gòu)實現(xiàn)對學(xué)生成績管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅實的基礎(chǔ)。1、問題定義圖書信息包括:編號、書名、作者名、分類號、出版單位、出版時間、庫存數(shù)量,價格等。 試設(shè)計一圖書信息管理系統(tǒng),使之能提供以下功能: (1)系統(tǒng)以菜單方式工作 (2)圖書信息錄入
3、功能(圖書信息用文件保存) (3)圖書信息瀏覽功能 (4)圖書信息查詢功能 查詢方式:可以按書名,按作者名,按出版單位,按出版時間進(jìn)行查詢。 (5)圖書信息的刪除與修改在問題定義階段要考慮題目的可行性和需求分析,接下來進(jìn)入開發(fā)階段,完成系統(tǒng)設(shè)計和系統(tǒng)實現(xiàn)的任務(wù)。2、系統(tǒng)設(shè)計21 總體設(shè)計采用模塊化的程序設(shè)計方法,即將較大的任務(wù)按照一定的原則分為一個個較小的任務(wù),然后分別設(shè)計各個小任務(wù)。需要注意的是劃分出來的模塊應(yīng)該相對獨立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)圖(即模塊圖)來分析其任務(wù)的劃分,一般從上到下進(jìn)行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細(xì)化描述。 圖2.1 圖書管理系
4、統(tǒng)功能模塊圖本圖書管理系統(tǒng)要求采用單鏈表實現(xiàn),如圖2.1所示,它由如下四大功能模塊組成:l 借書模塊。通過輸入讀者的編號和圖書的編號,查找到要該借的書,完成借書這一項任務(wù)l 還書模塊。通過輸入讀者的編號和圖書的編號,查找到要該還的書,完成還書這一項任務(wù)l 圖書維護(hù)模塊。完成對圖書信息的維護(hù)。在此圖書管理系統(tǒng)中,它實現(xiàn)了對圖書信息的新曾、更改、刪除、查找和顯示操作,并將追加后的數(shù)據(jù)存入源數(shù)據(jù)文件。l 讀者維護(hù)模塊。一是實現(xiàn)對讀者記錄的存盤,即將讀者信息寫入數(shù)據(jù)文件中; 22 詳細(xì)設(shè)計2.2.1 借書模塊通過輸入讀者的信息和要借的書的編號。系統(tǒng)顯示相應(yīng)的內(nèi)容,若該文件中沒有數(shù)據(jù),系統(tǒng)會提示單鏈表為
5、空,沒有任何讀者記錄或圖書操作,此時,用戶應(yīng)選擇調(diào)用create()函數(shù),進(jìn)行讀者記錄的輸入,即完成在單鏈表1中添加記錄的操作。值得一提的是,這里的字符串和數(shù)值的輸入分別采用了函數(shù)來實現(xiàn),在函數(shù)中完成輸入數(shù)據(jù)任務(wù),并對數(shù)據(jù)進(jìn)行條件判斷,直到滿足條件為止,這樣一來,大大減少了代碼的重復(fù)和冗余,符合模塊化程序設(shè)計的特點。2.2.2 還書模塊還書模塊主要實現(xiàn)了在單鏈表中按讀者和圖書的編號查找滿足相關(guān)條件的借書記錄。在用戶選擇4,調(diào)用查詢函數(shù)search()中,為指向保存了讀者信息的單鏈表的首地址的指針變量。為了遵循模塊化編程的原則,我們將在單鏈表中進(jìn)行的指針定位操作,設(shè)計一個int retbook(
6、int bookid) for(int i=0;iMaxbor;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; /讀出讀者信息 void disp() cout setw(5) no setw(10) name借書編號:; for(int i=0;iMaxbor;i+) if(borbooki!=0) cout borbooki |; cout endl; ; 若沒有該記錄,則顯示無此記錄,返回到上一操作。2.2.3 圖書維護(hù)模塊此模塊主要實現(xiàn)了對圖書記錄的新增、更改、刪除、查找和顯示操作。因為圖書記錄是以單鏈表的結(jié)構(gòu)形式存儲的,
7、所以這些操作都在單鏈表中完成。下面分別介紹著4個功能模塊。新增記錄。該操作需要對單鏈表中目標(biāo)節(jié)點的數(shù)據(jù)域中的值進(jìn)行追加新增要輸入圖書的編號和書名,int addbook(int n,char *na) Book *p=query(n); if (NULL=p) top+; booktop.addbook(n,na); return 1; return 0; 更改系統(tǒng)。該操作可以將原本錯誤的圖書記錄更改,將之改為正確的記錄。首先輸入原來的記錄的圖書的編號,在此之后輸入新的記錄的書名。刪除系統(tǒng)。該操作可以將原本記錄得圖書信息,在不用之后選擇將此刪除的一種方法,在彈出的窗口輸入原來的圖書的編號,就可
8、以將之刪除。 查找系統(tǒng)。該操作可以幫助讀者快速找到將要借的圖書,只要輸入圖書的編號,如果有這本書,就將顯示出。反之就會顯示不存在。Book *query(int bookid) for (int i=0;i=top;i+) if (booki.getno()=bookid &booki.gettag()=0) return &booki; return NULL; 顯示系統(tǒng)。該操作可以顯示出圖書現(xiàn)在的信息。cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname; addbook(bookid,bname); break; case 2: cout 輸入圖書編號: boo
9、kid; b=query(bookid); if (b=NULL) cout 該圖書不存在 endl; break; cout 輸入新的書名: bname; b-setname(bname); break; case 3: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 delbook(); break; case 4: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在disp(); break; case 5: disp(); break; c
10、ase 6: clear(); break; default:cout輸入錯誤,請從新輸入:; cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname; addbook(bookid,bname); break; case 2: cout 輸入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 endl; break; cout 輸入新的書名: bname; b-setname(bname); break; case 3: cout 讀入圖書編號: bookid; b=query(bookid); if (b=N
11、ULL) cout 該圖書不存在 delbook(); break; case 4: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout輸入錯誤,請從新輸入:; cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname; addbook(bookid,bname); break; case 2: cout 輸入圖書編號: bookid; b=query(b
12、ookid); if (b=NULL) cout 該圖書不存在 endl; break; cout 輸入新的書名: bname; b-setname(bname); break; case 3: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 delbook(); break; case 4: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在disp(); break; case 5: disp(); break; case 6: clear()
13、; break; default:cout輸入錯誤,請從新輸入:; 3、系統(tǒng)實現(xiàn)31 編碼3.1.2 主函數(shù)main()include #include #include /輸入/輸出文件流類 #include using namespace std; /最多的讀者 const int Maxr=100; /最多的圖書 const int Maxb=100; /每位讀者最多借五本書 const int Maxbor=5; /圖書庫類,實現(xiàn)對圖書的維護(hù),查找,刪除等 class BDatabase private: /圖書記錄指針 int top; /圖書記錄 Book bookMaxb; pu
14、blic: /構(gòu)造函數(shù),將book.txt讀到book中 BDatabase() Book b; top=-1; fstream file(book.txt,ios:in); while (1) file.read(char *)&b,sizeof(b); if (!file) break; top+; booktop=b; file.close(); /全刪 void clear() top=-1; /增加圖書 int addbook(int n,char *na) Book *p=query(n); if (NULL=p) top+; booktop.addbook(n,na); retu
15、rn 1; return 0; /查找圖書 Book *query(int bookid) for (int i=0;i=top;i+) if (booki.getno()=bookid &booki.gettag()=0) return &booki; return NULL; /圖書庫維護(hù) void bookdata(); void disp() for (int i=0;i=top;i+) if (booki.gettag()=0) booki.disp(); /析構(gòu)函數(shù),將book寫到book.txt文件中 BDatabase() fstream file(book.txt,ios:o
16、ut); for (int i=0;i=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ; void BDatabase:bookdata() char choice; char bname40; int bookid; Book *b; while (choice!=0) cout nnnttt圖 書 維 護(hù) endlendl; couttt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出 choice; swit
17、ch (choice) case 1: cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname; addbook(bookid,bname); break; case 2: cout 輸入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 endl; break; cout 輸入新的書名: bname; b-setname(bname); break; case 3: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 delbook();
18、break; case 4: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout輸入錯誤,請從新輸入:; /main() 函數(shù)的實現(xiàn),程序的主界面的引導(dǎo) int main() char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choi
19、ce!=0) cout endlendlttt 圖 書 管 理 系 統(tǒng)nnn; cout ttt1 借 書nnttt2 還 書 nnttt3 圖 書 維 護(hù)nnttt4 讀 者 維 護(hù)nnttt0 離 開 choice; switch (choice) case 1: cout readerid; cout bookid; /按編號查找 r=ReaderDB.query(readerid); if (NULL=r) cout 不存在該讀者,不能借書 endl; break; b=BookDB.query(bookid); if (b=NULL) cout 不存在該圖書,不能借書borrowbo
20、ok()=0) cout 該圖書已借出,不能借書borrowbook(b-getno(); break; case 2: coutreaderid; cout bookid; r=ReaderDB.query(readerid); if (r=NULL) cout 不存在該讀者,不能還書 endl; break; b=BookDB.query(bookid); if (b=NULL) cout 不存在該圖書,不能還書 retbook(); r-retbook(b-getno(); break; case 3: BookDB.bookdata(); break; case 4: ReaderDB
21、.readerdata(); break; default:cout輸入錯誤,請從新輸入:; 4、系統(tǒng)維護(hù)經(jīng)測試與調(diào)試確認(rèn)軟件無錯時,開發(fā)就告一段落,這時可以交付軟件供用戶使用,但是在軟件的使用過程中還會面臨更加漫長的工作,即軟件維護(hù)。一般維護(hù)的工作有:更改使用中發(fā)現(xiàn)的錯誤;為適應(yīng)實際環(huán)境而對程序進(jìn)行修改;為滿足新的需求而對程序作必要的改進(jìn)等等。5、歸納總結(jié)51 開發(fā)經(jīng)驗通過對本題目的開發(fā),體會到要掌握以下幾點內(nèi)容。l 大程序的設(shè)計風(fēng)格。按“自頂向下,逐步細(xì)化,模塊化”的方法進(jìn)行程序設(shè)計。l 編寫主函數(shù),并進(jìn)行測試與調(diào)試。當(dāng)被調(diào)函數(shù)又需要調(diào)用其他函數(shù)時,也要遵循逐步細(xì)化的原則。C語言提供豐富的
22、庫函數(shù),編程序時要善于使用庫函數(shù),避免不必要的勞動。l 定義函數(shù)時,應(yīng)選好參數(shù)的個數(shù)和數(shù)據(jù)類型。l 文件使用方法。文件使用完畢后應(yīng)及時關(guān)閉。52 實訓(xùn)中遇到的問題及解決方法在實訓(xùn)過程中,我遇到許多的問題,比如有些語句有語法錯誤,表達(dá)式不正確,或缺少或;等?;蛘呤菦]有宏定義,申明某些變量。這些都比較容易解決。通過查閱課本和請教同學(xué),在經(jīng)過WIN-TV編譯,知道哪有錯誤就改一下就行。比較嚴(yán)重的是,我的代碼在求解平均成績和總分時沒有錄入,且亂碼。自已改了很久,也在網(wǎng)上查詢但是都不行。最后在老師的幫助下及查閱有關(guān)資料,把代碼改出來了。53 設(shè)計中尚存的不足之處關(guān)于這次的程序,也有挺多不足的地方。首先,我覺得程序還不夠完善,比如沒有排序前和排序后的學(xué)生記錄輸
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年復(fù)旦大學(xué)附屬腫瘤醫(yī)院執(zhí)業(yè)醫(yī)師執(zhí)業(yè)助理醫(yī)師招聘備考題庫完整答案詳解
- 2026年寧波市江北區(qū)婦幼保健計劃生育服務(wù)中心公開招聘事業(yè)編制外人員備考題庫及完整答案詳解1套
- 2026年成都益民集團(tuán)所屬企業(yè)關(guān)于招聘財務(wù)綜合崗等崗位的備考題庫及答案詳解1套
- 2026年中國水務(wù)投資集團(tuán)有限公司校園招聘108人備考題庫及一套完整答案詳解
- 2026年華創(chuàng)證券有限責(zé)任公司上海分公司招聘備考題庫及1套參考答案詳解
- 2026年合肥市五十中學(xué)天鵝湖教育集團(tuán)望岳校區(qū)教師招聘備考題庫參考答案詳解
- 2026年關(guān)于招聘派遣人員至永州市城市發(fā)展集團(tuán)有限責(zé)任公司總部及下屬子公司的備考題庫完整答案詳解
- 2026年四川天府新區(qū)廣都學(xué)校教師招聘備考題庫附答案詳解
- 2026年中華聯(lián)合財產(chǎn)保險股份有限公司溫州中心支公司招聘備考題庫及完整答案詳解一套
- 2026年保定市第一醫(yī)院招聘備考題庫及一套答案詳解
- 國家開放大學(xué)電大本科《流通概論》復(fù)習(xí)題庫
- 2025年高職物流管理(物流倉儲管理實務(wù))試題及答案
- 2025-2026學(xué)年統(tǒng)編版二年級語文上冊期末質(zhì)量檢測卷(含答案)
- 2025年學(xué)法減分試題及答案
- 2025年德州樂陵市市屬國有企業(yè)公開招聘工作人員(6人)參考筆試題庫及答案解析
- 2025年特種作業(yè)人員考試題庫及答案
- 邢臺課件教學(xué)課件
- 醫(yī)防融合視角下家庭醫(yī)生簽約慢病管理策略
- 2025年新能源市場開發(fā)年度總結(jié)與戰(zhàn)略展望
- 中職歷史期末考試及答案
- 從指南看慢性乙型病毒性肝炎的防治策略
評論
0/150
提交評論