數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)圖書管理介紹_第1頁
數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)圖書管理介紹_第2頁
數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)圖書管理介紹_第3頁
數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)圖書管理介紹_第4頁
數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)圖書管理介紹_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告題目:6.3圖書管理學(xué)院計(jì)算機(jī)學(xué)院專業(yè)軟件工程年級班別2012級2班學(xué)號3112006200學(xué)生姓名林迅玄指導(dǎo)教師李藜難度選做獨(dú)立完成率%自評5有2014年7月1日一、需求分析【設(shè)計(jì)任務(wù)描述】設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書管理基本業(yè)務(wù)。圖書管理基本業(yè)務(wù)活動包括:對一本書的采編入庫、清除庫存、借閱和歸還等等。【輸入的形式和輸入值的范圍】進(jìn)入管理界面輸入整型數(shù)據(jù)0-7選擇需要的操作書號、現(xiàn)存量、總存量為大于零的整型數(shù)據(jù),輸入值的范圍由系統(tǒng)整型數(shù)據(jù)范圍而定。書名、作者名、出版社名稱為字符串類型數(shù)據(jù),長度不大于20。借書證號碼,歸還時(shí)間均先由字符串輸入再由函數(shù)轉(zhuǎn)換為整型數(shù)據(jù),借書證

2、號碼長度不大于5位字符,歸還時(shí)間長度不大于8位?!境绦蛩苓_(dá)到的主要功能】1 .圖書信息錄入功能:每種書的登記內(nèi)容包括書號、書名、著作者、出版社名稱、現(xiàn)存量和總存量等02 .圖書查詢功能:分別可按書號、書名、作者、出版社名稱查詢圖書,還可查詢圖書的當(dāng)前借閱信息。3 .排序功能:對書庫中的圖書按書號排序。4 .圖書修改功能:對選定圖書信息進(jìn)行修改。5 .圖書刪除功能:某本書已無保留價(jià)值,將其從書庫中注銷。6 .圖書借閱功能:若圖書現(xiàn)存量大于零,登記借閱者圖書證號和歸還日期,圖書現(xiàn)存量減1。7.圖書歸還功能注銷對借閱者的登記,改變該書的現(xiàn)存量。【測試數(shù)據(jù)】輸入1進(jìn)入圖書錄入信息:輸入需要錄入的圖書

3、信息的個(gè)數(shù),依次錄入以下信息書號書名作者出版社名稱現(xiàn)總存量1weg554xhj447yez992saP16166rej10108ift20203dfg18185clg171711mlg13139qat141410boP88成功則輸出“錄入成功”錯(cuò)誤則輸出“此圖書已存在!”、“請重新輸入”輸入2進(jìn)入圖書查詢:1 .按書號查詢輸入2成功則輸出書號書名作者出版社名稱現(xiàn)總存量2saP1616錯(cuò)誤則輸出“對不起,不存在此圖書!2 .按書名查詢輸入c成功則輸出書號書名作者出版社名稱現(xiàn)彳小總存量5clg1717錯(cuò)誤則輸出“對不起,不存在此圖書!3 .按作者名查詢輸入e成功則輸出書號書名作者出版社名稱現(xiàn)存量總

4、存量1weg556rej10107yez99錯(cuò)誤則輸出“對不起,不存在此作者的圖書4 .按出版社名稱查詢輸入g成功則輸出書號書名作者出版社名稱現(xiàn)存量總存量1weg553dfg18185clg171711mlg1313錯(cuò)誤則輸出“對不起,不存在此出版社出版的圖書輸入4進(jìn)入圖書修改輸入w正確則重新錄入該書信息書號書名作者出版社名稱現(xiàn)存量總存量1weg66錯(cuò)誤則輸出“不存在此圖書”輸入5進(jìn)入圖書刪除輸入d成功則輸出“刪除成功”錯(cuò)誤則輸出“你輸入的書名不存在,請核實(shí)后重新輸入輸入3進(jìn)入圖書排序輸出書號書名作者出版社名稱現(xiàn)存量總存量1weg662saP16164xhj445clg17176rej1010

5、7yez998ift20209qat141410boP8811mlg1313輸入6進(jìn)入圖書借閱輸入w成功則繼續(xù)輸入錯(cuò)誤則輸出“此圖書不存在!”輸入15成功則繼續(xù)輸入錯(cuò)誤則輸出“輸入有誤,請重新輸入”輸入20140101成功輸出“借書成功!”錯(cuò)誤則輸出“此圖書不存在!”、“不好意思,此書已借完!”、“你已經(jīng)借了這本書,不能夠重復(fù)借!”輸入6進(jìn)入圖書借閱重復(fù)輸入w1720140715w2520141109輸入2進(jìn)入圖書查詢輸入2按書名查詢輸入w成功則輸出書號書名作者出版社名稱現(xiàn)存量總存量1weg36錯(cuò)誤則輸出“對不起,不存在此圖書!輸入2進(jìn)入圖書查詢輸入5查詢圖書借閱信息輸入w成功則輸出借閱者圖書

6、證號歸還時(shí)間152014010117201407152520141109錯(cuò)誤則輸出“不存在此圖書”輸入7進(jìn)入圖書歸還輸入w成功則繼續(xù)輸入錯(cuò)誤則輸出“此圖書不存在!”輸入17成功則輸出“該書歸還成功!”錯(cuò)誤則輸出“你輸入的圖書證號不正確!請重新操作!”輸入2進(jìn)入圖書查詢輸入5查詢圖書借閱信息輸入w成功則輸出借閱者圖書證號歸還時(shí)間15201401012520141109錯(cuò)誤則輸出“不存在此圖書”輸入0退出系統(tǒng)成功則輸出“謝謝使用”二、概要設(shè)計(jì)所用數(shù)據(jù)結(jié)構(gòu):線性表、查找、排序借閱者的存儲結(jié)構(gòu)體數(shù)據(jù)類型是無表頭單鏈表typedefstructUser/借閱者的存儲結(jié)構(gòu)體intnumber;/借書證號碼

7、intlimitdate;歸還時(shí)間structUser*next;下一個(gè)借閱者User;定義用戶的的信息圖書信息的存儲結(jié)構(gòu)是帶表頭單鏈表typedef struct int num;charname20;charauthor20;charpress20;intleft;intcount;User*user;ElemType;typedefstructLNodeElemTypedata;圖書的書號/書名/著者/出版社名稱/現(xiàn)存量/總存量/借閱該書的人/定義書的信息/定義單鏈表結(jié)點(diǎn)類型structLNode*next;LinkList;主程序流程以及各程序模塊之間的調(diào)用關(guān)系:圖書管理系統(tǒng)主程序模塊

8、退出圖書管理系統(tǒng)圖書的歸還模塊圖書的借閱模塊執(zhí)行所選功能借閱者信息模塊開始/輸入功能所/-輸入的數(shù)字小對應(yīng)的數(shù)字T于0大于7Y重新輸入1.圖書信息錄入功能輸入需要錄入的圖書信息的個(gè)數(shù)n循環(huán)輸入n個(gè)圖書信息YYJY輸出書本信息2.圖書查詢功能是否有此圖書iy輸入的數(shù)字小于0大于6N執(zhí)行所選功能1.按書號查詢遍歷書庫查找>N一(不存在此書2.按書名查詢遍歷書庫查找不存在此書輸出書本信息3.按作者查詢遍歷書庫查找不存在此作者的書輸出書本信息4.按出版社查詢遍歷書庫查找->N-T不存在此作者的書Y輸出書本信息5.查詢圖書借閱信息N遍歷書庫查找Y輸出借閱信息不存在此書6.3.圖書排序功能按書

9、號遞增有序排序(直接插入排序法)4.圖書修改輸入書名遍歷書庫查找,N_r不存在此書Y修改書本信息5.圖書刪除輸入書名不存在此書遍歷書庫查找NY刪除書本信息6.圖書借閱7.圖書歸還Y遍歷書庫查找Y借出不存在此書三、詳細(xì)設(shè)計(jì)原理:圖書管理系統(tǒng)要求實(shí)現(xiàn)許多的功能。將軟件的設(shè)計(jì)任務(wù)分成許多小的功能模塊進(jìn)行設(shè)計(jì)。本程序經(jīng)過分析分成以下幾個(gè)子任務(wù):圖書信息錄入、圖書信息的查詢、圖書信息的排序、圖書信息的修改、圖書信息的刪除、圖書的借閱、圖書的歸還、退出圖書管理系統(tǒng)。偽碼算法:主程序:(1)創(chuàng)建單鏈表L,分配內(nèi)存并置空;(2)輸出選擇菜單;(3)輸入選擇操作數(shù)s;(4)Switch(s)執(zhí)行所選操作;圖書錄

10、入功能:(1)輸入需要錄入的圖書信息的個(gè)數(shù)n;(2) For(i=1;i<=n;i+)n次循環(huán)建立新結(jié)點(diǎn)s輸入圖書信息num、nameauthor、pressleft、count;(3) if(s存在L)重新輸入;(4) else錄入成功;圖書查詢功能:(t=書號、書名、作者、出版社,p=L->next)(5) 輸入k(與t對應(yīng));x=0;(2) While(若原單鏈表中有數(shù)據(jù)結(jié)點(diǎn))if(k不等于p的t)p指向下一個(gè)結(jié)點(diǎn);else輸出p的信息為所找信息并指向下一個(gè)結(jié)點(diǎn),x+;Endwhile(3) if(p為空&&x為0)查詢k不存在;查詢圖書借閱信息:(1)輸入k

11、(書名);p=L->next;x=0;(2) while(p不為空)if(k不等于p的書名)p指向下一個(gè)結(jié)點(diǎn);elseuser指向p的第一個(gè)借閱者信息結(jié)點(diǎn);for(;user不為空;user指向下一個(gè)結(jié)點(diǎn))循環(huán)輸出借閱者圖書證號和歸還時(shí)間x加1;p指向下一個(gè)結(jié)點(diǎn);EndelseEndwhile(3) if(p為空&&x=0)不存在此圖書;圖書排序功能:值接插入排序法)(1) p指向L第一個(gè)數(shù)據(jù)結(jié)點(diǎn);(2) if(若原單鏈表中有數(shù)據(jù)結(jié)點(diǎn))r保存*p結(jié)點(diǎn)直接后繼結(jié)點(diǎn)的指針;p后繼指針置空,構(gòu)造只含一個(gè)數(shù)據(jù)結(jié)點(diǎn)的有序表L;While(r不為空)將r中的結(jié)點(diǎn)按遞增順序插入L中;E

12、ndwhileEndif圖書修改功能:(1)輸入k(書名);p指向L第一個(gè)數(shù)據(jù)結(jié)點(diǎn);(2) While(若原單鏈表中有數(shù)據(jù)結(jié)點(diǎn))if(k等于p的書名)p修改信息并返回;p指向下一個(gè)結(jié)點(diǎn);Endwhile;(3)輸出圖書不存在;(4)返回;圖書刪除功能:(1)輸入k(書名);p指向L第一個(gè)數(shù)據(jù)結(jié)點(diǎn);q指向p前驅(qū)結(jié)點(diǎn);(2) while(p不為空&&k不等于p的書名)p,q各自指向下一個(gè)結(jié)點(diǎn);(3) if(p不是最后的結(jié)點(diǎn))q指向p的下一個(gè)結(jié)點(diǎn),刪除成功;(4) if(p是最后的結(jié)點(diǎn)&&k不等于p的書名)書名不存在;(5) elseq下一個(gè)結(jié)點(diǎn)置空,刪除成功;圖書借

13、閱功能:(1)輸入k(借閱書名);p指向L第一個(gè)數(shù)據(jù)結(jié)點(diǎn);(2) while(p不為空&&k不等于p的書名)p指向下一個(gè)結(jié)點(diǎn);(3) if(p是最后的結(jié)點(diǎn)&&k不等于p的書名)書名不存在;(4) elseif(p書現(xiàn)存量小于1)此書已借完??;(5) else注冊借閱者信息結(jié)點(diǎn)s(圖書證號和歸還日期);if1(p圖書尚無人借閱)借書成功;p結(jié)點(diǎn)的借閱者信息結(jié)點(diǎn)保存s;現(xiàn)存量減1;else1u保存p結(jié)點(diǎn)的第一個(gè)借閱者信息結(jié)點(diǎn);while(u不為空&&u的圖書證號不等于s的圖書證號)u指向下一個(gè)結(jié)點(diǎn);if2(u為空&&u的圖書證號不等于

14、s的圖書證號)借書成功;u下一個(gè)結(jié)點(diǎn)結(jié)點(diǎn)保存s;現(xiàn)存量減1;elseif(u的圖書證號等于s的圖書證號)不能夠重復(fù)借;Endelse1Endelse圖書歸還功能(1)輸入k(歸還書名);p指向L第一個(gè)數(shù)據(jù)結(jié)點(diǎn);(2) while(p不為空&&k不等于p的書名)p指向下一個(gè)結(jié)點(diǎn);(3) if(p是最后的結(jié)點(diǎn)&&k不等于p的書名)書名不存在;(4) elseif(k等于p的書名)輸入圖書證號n;user指向p的第一個(gè)借閱者信息結(jié)點(diǎn);if1(n等于p的第一個(gè)借閱者信息結(jié)點(diǎn)的圖書證號)歸還成功;p的第一個(gè)借閱者信息結(jié)點(diǎn)指向下一個(gè)結(jié)點(diǎn);現(xiàn)存量加1;else1while(u

15、ser后繼指針不為空&&user的圖書證號不等于n)pre保存user指針;user指向下一個(gè)結(jié)點(diǎn);Endwhileif(user的圖書證號等于n)歸還成功;pre的第一個(gè)結(jié)點(diǎn)指向user的下一個(gè)結(jié)點(diǎn);現(xiàn)存量加1;else輸入圖書證號不正確,重新操作;Endelse1Endelse函數(shù)調(diào)用關(guān)系圖四、調(diào)試分析(一)問題:錄入圖書信息后,輸出圖書信息時(shí)有些項(xiàng)目輸出亂碼。采取的措施:檢查代碼在輸入語句中,定義為int型的項(xiàng)目在輸入語句中加上取地址符號“&”(二)問題:添加圖書信息,雖然顯示“錄入成功!”,但是實(shí)際上并沒有與之前已經(jīng)存在的圖書信息存放在一起。采取的措施:修改錄入

16、添加圖書信息的算法,修改結(jié)點(diǎn)的指向,使之后添加的圖書信息與之前已經(jīng)存在的圖書信息存放在一起。(三)問題:多個(gè)借閱者借閱同一本圖書,借閱成功后查詢該書借閱者信息,發(fā)現(xiàn)只有最新的借閱者信息。采取的措施:修改借閱信息插入算法,修改結(jié)點(diǎn)指針指向,使之不會有舊結(jié)點(diǎn)被新結(jié)點(diǎn)覆蓋的情況發(fā)生。算法時(shí)空分析基本操作時(shí)間復(fù)雜度CreateListR(L)O(n)O(m-n)Search(L)O(n)Sort(L)O(n)O(n2)Display(L)O(n)ModifyList(L)O(n)ListDelete(L)O(n)Borrow(L)O(n)Return(L)O(n)由上表知除錄入和排序函數(shù),其它函數(shù)的時(shí)

17、間復(fù)雜度都是O(n),但錄入函數(shù)是受錄入圖書信息個(gè)數(shù)m影響,因此在錄入一種書的信息時(shí)的時(shí)間復(fù)雜度也是O(n);此外排序函數(shù)在時(shí)間復(fù)雜度O(n)O(n2)之間仍有改進(jìn)的空間,這需要算法的改進(jìn),這也是需要繼續(xù)努力學(xué)習(xí)的方面。心得與體會選擇了“圖書管理系統(tǒng)”這個(gè)課題。程序的大部分函數(shù)的算法在很短的時(shí)間內(nèi)就差不多寫好了,可是在調(diào)試的過程中卻發(fā)現(xiàn)了不少問題。譬如錄入圖書的信息后,在進(jìn)行圖書信息排序時(shí)有些項(xiàng)目的輸出會出現(xiàn)亂碼。仔細(xì)檢查后才發(fā)現(xiàn)在錄入int型的數(shù)據(jù)時(shí),沒有添加取地址符號。還有在信息錄入的過程中,程序也出現(xiàn)了漏洞。添加圖書信息,雖然顯示“錄入成功!”,但是實(shí)際上并沒有與之前已經(jīng)存在的圖書信息存

18、放在一起。最后修改了錄入圖書信息的算法,修改了結(jié)點(diǎn)的指向,使之后添加的圖書信息與之前已經(jīng)存在的圖書信息存放在一起。多個(gè)借閱者借閱同一本圖書,借閱成功后查詢該書借閱者信息,發(fā)現(xiàn)只有最新的借閱者信息。修改借閱信息插入算法,修改結(jié)點(diǎn)指針指向,使之不會有舊結(jié)點(diǎn)被新結(jié)點(diǎn)覆蓋的情況發(fā)生。在整個(gè)課程設(shè)計(jì)的過程中,遇到了很多困難,花費(fèi)了很多時(shí)間去解決,也讓我深刻體會到要圓滿完成一個(gè)程序的不易。大到算法,小到一個(gè)符號,都會影響整個(gè)程序的執(zhí)行狀況。這也警惕我要注意細(xì)節(jié)。五、用戶使用說明開發(fā)軟件環(huán)境:操作系統(tǒng)為XP開發(fā)環(huán)境軟件為MsvisualC+6.0開發(fā)語言為C語言程序運(yùn)行說明:登入界面后輸入0-7選擇需要執(zhí)行

19、的操作;選才¥1圖書錄入則輸入需要錄入的圖書信息的個(gè)數(shù)n,然后依次錄入圖書信息,輸出錄入成功即可繼續(xù);選才?2圖書查詢輸入0-6選擇需要執(zhí)行的操作;選才¥1按書號查詢輸入書號即可成功則輸出該書信息;選if¥2按書名查詢輸入書名即可成功則輸出該書信息;選才¥3按作者查詢輸入作者即可成功則輸出書庫中該作者的所有著作;選;f¥4按出版社查詢輸入出版社即可成功則輸出書庫中該出版社出版的所有書籍;選才¥5查詢圖書借閱信息輸入書名即可成功則輸出該書當(dāng)前所有借閱者的信息(圖書證號和歸還日期);選才¥3圖書排序程序自動將書庫中的書按書號排序

20、輸出;選才¥4圖書修改輸入書名成功則依次輸入該書更新后的信息,成功后系統(tǒng)便會更新信息;選才¥5圖書刪除輸入書名即可成功則在書庫中注銷該書的信息;選才¥6圖書借閱輸入書名成功則登記借閱者信息輸入圖書證號和歸還日期,若信息正確和該書現(xiàn)存量大于0,則借閱成功,ig書現(xiàn)存量減1,并將該借閱者信息錄入該書借閱信息中;選才¥7圖書歸還輸入書名成功則輸入圖書證號若信息正確則該書現(xiàn)存量加1,注銷該圖書證號在該書借閱信息中的信息;選¥0退出系統(tǒng)。六、測試結(jié)果程序運(yùn)行開始界面國"C:DocumentsandSettingsAdministrator桌面V

21、C6,0MyProjectslibraryDebuglibrary.exe"H歡迎光臨圖書管理系統(tǒng)?H1.圖書信息錄入功能:2.圖書信息查詢功能:/3.圖書信息排序功能:4.圖書的修改功能:P:5.圖書的刪除功能:6.圖書借閱功能:口7.圖書歸還功能:0.退出系統(tǒng):卜;請選擇你需要的操作;按照測試數(shù)據(jù)的步驟進(jìn)行:選才¥1.圖書信息錄入功能輸入需要錄入的圖書信息個(gè)數(shù)n=11;依次按照測t數(shù)據(jù)輸入11個(gè)圖書信息作者e作者h(yuǎn)1書名W功!書名X出版社名稱現(xiàn)存量總存量后忌用T數(shù):出版社名稱總存量4現(xiàn)存量4總存量S出版社名稱0=11現(xiàn)存量1I.34尿入成功,用號書名國成需bs5人成珈號

22、書名Mr屋入成功?用號書名bi5人成如號書名常入成功;用號書名gC5人成珈號書名11m屎入成功+假號書名?Q尿入成功,用號書名10b尿人成功,作者e作者a作者e作者f作者f作者1作者1作者a作者出版社名稱P出版社名稱出版社名稱出版社名稱出版社名稱出版社名稱出版社名稱出版社名稱P現(xiàn)存量16現(xiàn)存量10現(xiàn)存量20現(xiàn)存量18現(xiàn)存量17現(xiàn)存量13現(xiàn)存量14現(xiàn)存量8總存量16總存量10總存量20總存量18總存量17總存量13總存量14總存量8歡迎光臨圖書管理系統(tǒng)!工.圖書信息錄入功能1"圖書信息查詢功能:3.圖書信息排序功能:4.圖書的修改功能:5圖書的刪麻功能fE.圖而借閱贏久,圖書歸還功能上

23、上主生選才¥2圖書查詢功能。.退出系統(tǒng):111313弟人成功!3號書名3q錄入成功1書號書名10h錄入成功,作者a作者o出版社名稱t出版社名稱P現(xiàn)存量14現(xiàn)存量8總存量14總存量8歡迎光臨圖書管理系統(tǒng)!L,圖書信息錄入功能工2.圖書信息查詢功能工3.圖書信息排序功能:4.圖書的修改功能:5.圖書的刪除功能:6.圖書借閱功能工圖書歸還功能;0.退出系統(tǒng):請選擇你需要的操作::杳蓿操間濕群名借進(jìn)事一名;-6號名震圖1-富雷詢回揖W(wǎng)4mM返選123456系選擇1按書號查詢H5.圖書的刪除功能:6.圖書借閱功能.!,圖書歸還功能,請選擇你需要的操作:0.退出系統(tǒng):-ttzizt口出白二三-為

24、百里J與:茨由欣社茗稱查詢;:知圖書借閱信息請選擇工-小進(jìn)行操作:請輸入圖書書號;輸入書號2洵息信 ;*信操 :,響瞽行 詢詢查名借進(jìn) 杳香茗社書-6 號名圖L 書書專詢回?fù)?或按技法查返選 12 3 4 5 6 請5請輸入圖書書號士務(wù)號書名作者出版社名稱現(xiàn)存量總存量2sap16繼續(xù)選擇2圖書查詢功能選才¥2按書名查詢書號書名作者出版社名稱現(xiàn)存量總存量1616歡迎光臨圖書營理系統(tǒng),圖書信息錄入功能:2.圖書信息查詢功能:3.圖書信息排序功能:4.圖書的修改功能:!»5.圖書而刪語可卷6.圖書宿阿歷能,7.圖書后還功能:年退出家冢:請選擇你需要的操作;詢息作 :查信操 詢皆行

25、 詢詢查名借進(jìn) 查查名社書f 號名圖1- 書書作出詢回?fù)?12 3 4 5 6 T1F輸入書名C:*詢行 詢詢甘茗曾進(jìn) 杳香品社書-6 號名圖 書書備詢回?fù)癫榉颠x 12 3 4 5 6- 2* 蕤* *2田號書名作者出版社名稱現(xiàn)存量總存量5c1g1717繼續(xù)選擇2圖書查詢功能選才¥3按作者查詢輸入作者名e詢息,查信:詢詢詢寰信查查名社書號名圖書書作出詞回?fù)?23456請總存量總儲量總%量10現(xiàn)存量熟*矗量is號號號書書7書6繼續(xù)選擇2圖書查詢功能選才¥4按出版社查詢隊(duì)退出系統(tǒng):請選擇你需要的操作:工圖書歸還功能;»詢息作:查信操詢詢查名Ini進(jìn)事茗社書f號名以圖1

26、-書書畬詢回揖ww查返選123456注邛2*好*輸入出版社名稱gH1套書f真詞:卜2按書名與詢:卜3或作者有查調(diào)工卜4按出版社名稱查詢工k5套國圖書借詞蓿息P請選洋1-6進(jìn)行操作;4情輸入圖書的出版社名稱:性號書名作者出版社名稱現(xiàn)存量總存量C1M號W書名咯者出版It名稱5現(xiàn)存量總存量bA18ia的號書名居出版社名稱現(xiàn)存量總存量5C91717用號書名居出版社名稱現(xiàn)存量總存量11m191313選¥4圖書修改功能:.號令名作者出版黑名稱現(xiàn)存量總存量:*!*11n1g1313歡迎光臨圖書管理系統(tǒng)1圖書信息錄入功能:廄圖書信息查詢功能,"圖書信息排序功能:工圖書的修改功能:5.圖書的

27、刪除功能:E.圖書借閱功能:入圖書歸還功能,機(jī)退出系統(tǒng):請選擇你需要的操作:4情輸入要修改的圖書的書名:輸入要修改的書名w按照測試數(shù)據(jù)輸入修改信息玨;*請輸入要修改的圖書的書名二腦入隼雪后的II,出版社名稱現(xiàn)存量總存量1wegf66修改成珈i|l;MHaaMB!MB!BMBBBTBVMM-BM-MB!BM!HBI'BTIBHrtTMHWHiai!BHVMBMBBBi|擊;m*后囪木窖二日區(qū)赤1選才¥ 5圖書刪除功能3.圖書信息排序功能:4.圖書的修改功能:5.圖書的刪除功能t著圖可歸還功能:8.圖書借|司功能瓦退出系統(tǒng):請選擇你需要的操作二精輸入要刪除的書名二輸入要刪除的書名

28、d選擇3圖書信息排序功能I7.圖書歸還功能:6.圖書借閱功能;5退出系統(tǒng):號書名作者出版社名稱出版社名稱出版社名稱出贏t名稱出食社名稱出版社名稱i號書名作者出版社名稱weg號書名作者出版社名棟請選擇你需要的操作;|號卓名作善號若名作雪c1號書名作者號卡名作善ye號書名作者if號書名作者號尚名作譽(yù)P出順社名稱出祓社名稱量量量i量量帚量量量存存電存存1?存10存存20存14存日存總6總總4總總總y總總總總量量量量量量量量量量存存存存存存存存存存現(xiàn)6現(xiàn)16現(xiàn)4現(xiàn)1?現(xiàn)10現(xiàn)9現(xiàn)20現(xiàn)14現(xiàn)8現(xiàn)選才¥ 6圖書借閱工.圖書信息表.功能:一一歡迎光臨圖書管理系統(tǒng),-一2.圖書信息查詢功能:3.圖

29、書信息排序功能: 弓.圖書的刪誣劫能:H 7.圖書歸還功能!4.圖書的修改功能:二6圖:借閱功0*退出無統(tǒng)E請選擇你需要的操作:-二括輸入要借閱的圖書書名:輸入要借閱的圖書w輸入圖書證號15輸入歸還日期20140101重復(fù)選擇6輸入w1720140715w2520141109選擇2圖書查詢功能選才¥5查詢圖書借閱信息詢&隹;查臨操:詢麓行詢詢查名借進(jìn)查查名社書f號名需圖一書書/詢回?fù)馱W.查返選1234-56?請輸入圖書書名:輸入書名w查詢圖書借閱信睛輸入圖書書名借閱者圖書證號歸還時(shí)間2014Q1Q12014071520141109歡迎光臨圖書管理系統(tǒng),選;f¥7圖

30、書歸還卜九圖書歸還功能,Xi,I7輸入歸還書的書名:請選擇你需要的操作;-退出系統(tǒng):輸入歸還書書名輸入圖書證17選擇2圖書查詢功能選才¥5查詢圖書借閱信息123456M審8SS®詢息*信詢時(shí)貨名借善茗社書號名圖輸入圖書名w/頭文件七、附錄head.h#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#defineTRUE1#defineFALSE0typedefstructUserintnumber;intlimitdate;struc

31、tUser*next;User;typedefstructintnum;charname20;charauthor20;charpress20;intleft;intcount;User*user;ElemType;typedefstructLNodeElemTypedata;structLNode*next;/借閱者的存儲結(jié)構(gòu)體/借書證號碼/歸還時(shí)間/下一個(gè)借閱者定義用戶的的信息圖書的書號/書名/著者/出版社名稱/現(xiàn)存量/總存量/借閱該書的人/定義書的信息/定義單鏈表結(jié)點(diǎn)類型/初始化線性表LinkList;voidInitList(LinkList*&L);intCreateList

32、R(LinkList*&L);voidSearch(LinkList*&L);intSort(LinkList*&L);voidDisplay(LinkList*&L);intListDelete(LinkList*&L);intModifyList(LinkList*&L);voidInUserMess(User*user);voidBorrow(LinkList*&L);voidReturn(LinkList*&L);main.cpp#include<head.h>/錄入圖書/查詢圖書/圖書按書號遞增有序排序/輸出

33、排序結(jié)果/刪除圖書/修改圖書信息/輸入借閱者的信息/借閱圖書/歸還圖書/主函數(shù)文件voidmain()主函數(shù)ints;LinkList*L;L=(LinkList*)malloc(sizeof(LinkList);InitList(*&L);w:while(s!=0)printf("*|1*n");printf("*|歡迎光臨圖書管理系統(tǒng)!1*n");printf("*|1.圖書信息錄入功能:2.圖書信息查詢功能:|*n");printf("*|1*n");printf("*|3.圖書信息排序功能

34、:4.圖書的修改功能:|*n");printf("*|1*n");printf("*|5.圖書的刪除功能:6.圖書借閱功能:|*n");printf("*|1*n");printf("*|7.圖書歸還功能:0.退出系統(tǒng):|*n");printf("*|請選擇你需要的操作:1*n");printf("*|1*n");scanf("%d",&s);switch(s)case 1: CreateListR(L);break;case 2: Se

35、arch(L);break;case 3: Sort(L);Display(L);break;case 4: ModifyList(L);break;case 5: ListDelete(L);break;case 6: Borrow(L);break;case 7: Return(L);break;case0:printf("謝謝使用n");break;gotow;InitList.cpp/線性表初始化函數(shù)#include<head.h>voidInitList(LinkList*&L)/初始化線性表L=(LinkList*)malloczeof(Li

36、nkList);/創(chuàng)建頭結(jié)點(diǎn)L->next=NULL;CreateListR.cpp圖書錄入函數(shù)文件#include<head.h>intCreateListR(LinkList*&L)/尾插法建表inti,n;LinkList*s,*q,*p;p=L;while(p->next!=NULL)p=p->next;printf(”請輸入需要錄入的圖書信息的個(gè)數(shù):n=");scanf("%d",&n);for(i=1;i<n+1;i+)s=(LinkList*)malloc(sizeof(LinkList);prin

37、tf("書號書名作者出版社名稱現(xiàn)存量總存量n");scanf("%d%s%s%s%d%d”,&s->data.num,s->,s->data.author,s->data.press,&s->data.left,&s->data.count);s->data.user=NULL;q=L->next;if(q=NULL)p->next=s;p=s;p->next=NULL;printf("錄入成功!n");continue;while(q!=NU

38、LL)if(strcmp(s->,q->)=0)printf("此圖書已存在!");printf("請重新輸入:n");printf("書號書名作者出版社名稱現(xiàn)存量總存量n");scanf("%d%s%s%s%d%d”,&s->data.num,s->,s->data.author,s->data.press,&s->data.left,&s->data.count);q=q->next;p-&

39、gt;next=s;p=s;p->next=NULL;printf("錄入成功!n");return0;Search.cpp/圖書查詢函數(shù)文件#include<head.h>void Search(LinkList *&L)/查詢LinkList *p=L->next;/p指向第一個(gè)數(shù)據(jù)結(jié)點(diǎn)intc;intx=0,n;charname110,author110,press110;printf("*1按書號查詢:n");printf("*2按書名查詢:n");printf("*3按作者名查詢:n

40、");printf("*4按出版社名稱查詢:n");printf("*5查詢圖書借閱信息n");printf("*6返回n");printf("*請選擇1-6進(jìn)行操作:n");scanf("%d",&c);if(c>6|c<1)printf("您的輸入有誤!n");scanf("%d",&c);switch(c)case1:printf”青輸入圖書書號:n");scanf("%d",&am

41、p;n);while(p!=NULL)if(n!=p->data.num)查找圖書書號p=p->next;elseprintf("書號書名作者出版社名稱現(xiàn)存量總存量n");printf("%d%s%s%s%d%d”,p->data.num,p->,p->data.author,p->data.press,p->data.left,p->data.count);printf("n");p=p->next;x+;if(p=NULL&&x=0)printf(&qu

42、ot;對不起,不存在此圖書!n");break;case2:printf”青輸入圖書書名:n");scanf("%s”,&name1);while(p!=NULL)if(strcmp(name1,p->)!=0)/您找圖書書名p=p->next;elseprintf("書號書名作者出版社名稱現(xiàn)存量總存量n");printf("%d%s%s%s%d%d”,p->data.num,p->,p->data.author,p->data.press,p->d

43、ata.left,p->data.count);printf("n");p=p->next;x+;if(p=NULL&&x=0)printf("對不起,不存在此圖書!n");break;case3:printf”青輸入圖書作者:n");scanf("%s",author1);while(p!=NULL)if(strcmp(authoU,p->data.author)!=0)/脩找圖書作者p=p->next;elseprintf("書號書名作者出版社名稱現(xiàn)存量總存量n"

44、;);printf("%d%s%s%s%d%d”,p->data.num,p->,p->data.author,p->data.press,p->data.left,p->data.count);printf("n");p=p->next;x+;if(p=NULL&&x=0)printf("對不起,不存在此作者的圖書!n");break;case4:printf”青輸入圖書的出版社名稱:n");scanf("%s",press1);whil

45、e(p!=NULL)if(strcmp(press1,p->data.press)!=0)/S找圖書出版社名稱p=p->next;elseprintf("書號書名作者出版社名稱現(xiàn)存量總存量n");printf("%d%s%s%s%d%d”,p->data.num,p->,p->data.author,p->data.press,p->data.left,p->data.count);printf("n");p=p->next;x+;if(p=NULL&&x=

46、0)printf("對不起!不存在此圖書n");break;case5:printf”青輸入圖書書名:n");scanf("%s”,&name1);while(p!=NULL)if(strcmp(name1,p->)!=0)/您找圖書書名p=p->next;elseprintf("借閱者圖書證號歸還時(shí)間n");User*user=p->data.user;for(;user!=NULL;user=user->next)printf("%d%dn”,user->numbe

47、r,user->limitdate);x+;p=p->next;if(p=NULL&&x=0)printf("對不起,不存在此圖書!n");break;case6:break;Sort.cpp/排序函數(shù)文件/按書號遞增有序排序(直接插入排序法)#include<head.h>intSort(LinkList*&L)LinkList*p=L->next,*q,*r;/p指向第一個(gè)數(shù)據(jù)結(jié)點(diǎn)if(p!=NULL)/若原單鏈表中有一個(gè)或以上的數(shù)據(jù)結(jié)點(diǎn)r=p->next;/r保存*p結(jié)點(diǎn)直接后繼結(jié)點(diǎn)的指針p->next

48、=NULL;/構(gòu)造只含一個(gè)數(shù)據(jù)結(jié)點(diǎn)的有序表p=r;while(p!=NULL)r=p->next;/r保存*p結(jié)點(diǎn)的直接后繼結(jié)點(diǎn)的指針q=L;while(q->next!=NULL&&q->next->data.num<p->data.num)q=q->next;/在有序表中找插入*p的直接前驅(qū)結(jié)點(diǎn)*q的位置p->next=q->next;/將*p插入到*q之后q->next=p;p=r;/掃描原單鏈表余下的結(jié)點(diǎn)return0;/輸出書庫信息函數(shù)文件/輸出排序結(jié)果Display.cpp#include<head.

49、h>voidDisplay(LinkList*&L)LinkList*p=L->next;while(p!=NULL)printf("書號書名作者出版社名稱現(xiàn)存量總存量n");printf("%d%s%s%s%d%d”,p->data.num,p->,p->data.author,p->data.press,p->data.left,p->data.count);printf("n");p=p->next;ModifyList.cpp#include<head

50、.h>/圖書修改函數(shù)文件intModifyList(LinkList*&L)修改LinkList*p=L;charname110;printf("請輸入要修改的圖書的書名:n");scanf("%s",name1);while(p!=NULL)if(strcmp(name1,p->)=0)/玳找所要修改的書名printf("請輸入修改后的信息!n");printf("書號書名作者出版社名稱現(xiàn)存量總存量n");scanf("%d%s%s%s%d%d”,&p-&g

51、t;data.num,p->,p->data.author,p->data.press,&p->data.left,&p->data.count);printf("修改成功!n");return0;p=p->next;printf("不存在此圖書n");return0;ListDelete,cpp圖書刪除函數(shù)文件#include<head.h>intListDelete(LinkList*&L)/刪除LinkList*p=L->next,*q=L;charna

52、me110;if(p!=NULL)printf("請輸入要刪除的書名:");scanf("%s”,&name1);while(p->next!=NULL&&strcmp(p->,name1)!=0)p=p->next;q=q->next;if(p->next!=NULL)/如果p此時(shí)不是最后一個(gè)節(jié)點(diǎn),說明此時(shí)已經(jīng)找到書q->next=p->next;printf("刪除成功!n");free(p);return0;if(p->next=NULL&&strcmp(name1,p->)!=0)如果p此時(shí)為最后一個(gè)結(jié)點(diǎn)并且沒有找到與之相符的書名printf("你輸入的書名不存在,請核實(shí)后重新輸入!n");elseq->next=NULL;printf("刪除成功!n");free(p);return0;Borr

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論