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

下載本文檔

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

文檔簡介

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

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

3、圖書錄入信息:輸入需要錄入的圖書信息的個數(shù),依次錄入以下信息書號書名作者出版社名稱現(xiàn)存量總存量1weg554xhj447yez992sap16166rej10108ift20203dfg18185clg171711mlg13139qat141410bop88成功則輸出“錄入成功"錯誤則輸出“此圖書已存在!”、“請重新輸入”輸入2進入圖書查詢:1. 按書號查詢輸入2成功則輸出書號書名作者出版社名稱現(xiàn)存量總存量2sap1616錯誤則輸出“對不起,不存在此圖書!”2. 按書名查詢 輸入c 成功則輸出書號書名作者出版社名稱現(xiàn)存量總存量5clg1717錯誤則輸出“對不起,不存在此圖書!&quo

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

5、"輸入3進入圖書排序 輸出書號書名作者出版社名稱現(xiàn)存量總存量1weg662sap16164xhj445clg17176rej10107yez998ift20209qat141410bop8811mlg1313輸入6進入圖書借閱 輸入w 成功則繼續(xù)輸入 錯誤則輸出“此圖書不存在!”輸入15成功則繼續(xù)輸入 錯誤則輸出“輸入有誤,請重新輸入” 輸入20140101 成功輸出“借書成功!" 錯誤則輸出“此圖書不存在!”、“不好意思,此書已借完!”、“你已經(jīng)借了 這本書,不能夠重復(fù)借!”輸入6進入圖書借閱 重復(fù)輸入w 17 20140715 w 25 20141109輸入2進入圖書查

6、詢 輸入2按書名查詢輸入w成功則輸出書號書名作者出版社名稱現(xiàn)存量總存量1weg36錯誤則輸出“對不起,不存在此圖書!”輸入2進入圖書查詢 輸入5查詢圖書借閱信息輸入w成功則輸出借閱者圖書證號歸還時間152014010117201407152520141109錯誤則輸出“不存在此圖書"輸入7進入圖書歸還 輸入w 成功則繼續(xù)輸入 錯誤則輸出“此圖書不存在!"輸入17成功則輸出“該書歸還成功!”錯誤則輸出“你輸入的圖書證號不正確!請重 新操作!”輸入2進入圖書查詢 輸入5查詢圖書借閱信息輸入w成功則輸出借閱者圖書證號歸還時間15201401012520141109錯誤則輸出“不存

7、在此圖書”輸入0退出系統(tǒng)成功則輸出“謝謝使用”2、 概要設(shè)計所用數(shù)據(jù)結(jié)構(gòu):線性表、查找、排序借閱者的存儲結(jié)構(gòu)體數(shù)據(jù)類型是無表頭單鏈表.typedef struct User /借閱者的存儲結(jié)構(gòu)體 int number; /借書證號碼 int limitdate; /歸還時間 struct User next; /下一個借閱者User; /定義用戶的的信息圖書信息的存儲結(jié)構(gòu)是帶表頭單鏈表。typedef struct int num; /圖書的書號 char name20; /書名 char author20; /著者 char press20; /出版社名稱 int left; /現(xiàn)存量 in

8、t count; /總存量 User user; /借閱該書的人ElemType; /定義書的信息typedef struct LNode /定義單鏈表結(jié)點類型ElemType data; struct LNode *next; LinkList;主程序流程以及各程序模塊之間的調(diào)用關(guān)系:主程序模塊圖書管理系統(tǒng)借閱者信息模塊圖書信息的錄入添加圖書信息的查詢模塊圖書信息的排序模塊圖書信息的修改模塊圖書信息的刪除模塊圖書的借閱模塊圖書的歸還模塊退出圖書管理系統(tǒng)開始輸入功能所對應(yīng)的數(shù)字輸入的數(shù)字小于0大于7執(zhí)行所選功能 N Y重新輸入 1。圖書信息錄入功能輸入需要錄入的圖書信息的個數(shù)n循環(huán)輸入n個圖書

9、信息是否有此圖書向系統(tǒng)錄入此書信息 Y Y N 2. 圖書查詢功能選擇查詢方式輸入的數(shù)字小于0大于6執(zhí)行所選功能 Y N按書號查詢遍歷書庫查找輸出書本信息不存在此書 1。 N Y按書名查詢遍歷書庫查找輸出書本信息不存在此書 2. N Y按作者查詢遍歷書庫查找輸出書本信息不存在此作者的書 3。 N Y按出版社查詢遍歷書庫查找輸出書本信息不存在此作者的書 4。 N Y查詢圖書借閱信息遍歷書庫查找輸出借閱信息不存在此書 5。 N Y返回6。按書號遞增有序排序(直接插入排序法)3. 圖書排序功能輸入書名遍歷書庫查找修改書本信息不存在此書4. 圖書修改N Y輸入書名遍歷書庫查找刪除書本信息不存在此書5.

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

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

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

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

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

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

16、e(user后繼指針不為空&user的圖書證號不等于n) pre保存user指針; user指向下一個結(jié)點; Endwhile if(user的圖書證號等于n) 歸還成功;pre的第一個結(jié)點指向user的下一個結(jié)點;現(xiàn)存量加1; else 輸入圖書證號不正確,重新操作; Endelse 1 Endelse函數(shù)調(diào)用關(guān)系圖mainSwitch()()CreateListR(L)Search(L)Sort(L);Display(L);ModifyList(L);ListDelete(L);Borrow(L); Return(L);InitList(L)InUserMess(user)4、 調(diào)

17、試分析(一) 問題:錄入圖書信息后,輸出圖書信息時有些項目輸出亂碼。采取的措施:檢查代碼在輸入語句中,定義為int型的項目在輸入語句中加上取地址符號“"。(二)問題:添加圖書信息,雖然顯示“錄入成功!",但是實際上并沒有與之前已經(jīng)存在的圖書信息存放在一起。采取的措施:修改錄入添加圖書信息的算法,修改結(jié)點的指向,使之后添加的圖書信息與之前已經(jīng)存在的圖書信息存放在一起.(三)問題:多個借閱者借閱同一本圖書,借閱成功后查詢該書借閱者信息,發(fā)現(xiàn)只有最新的借閱者信息。采取的措施:修改借閱信息插入算法,修改結(jié)點指針指向,使之不會有舊結(jié)點被新結(jié)點覆蓋的情況發(fā)生。算法時空分析基本操作時間復(fù)

18、雜度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ù)的時間復(fù)雜度都是O(n),但錄入函數(shù)是受錄入圖書信息個數(shù)m影響,因此在錄入一種書的信息時的時間復(fù)雜度也是O(n);此外排序函數(shù)在時間復(fù)雜度O(n)O(n2)之間仍有改進的空間,這需要算法的改進,這也是需要繼續(xù)努力學(xué)習(xí)的方面.心得與體會選擇了“圖書管理系統(tǒng)”這個課題.程序的大部分函數(shù)的算法在很短的時

19、間內(nèi)就差不多寫好了,可是在調(diào)試的過程中卻發(fā)現(xiàn)了不少問題。譬如錄入圖書的信息后,在進行圖書信息排序時有些項目的輸出會出現(xiàn)亂碼。仔細檢查后才發(fā)現(xiàn)在錄入int型的數(shù)據(jù)時,沒有添加取地址符號.還有在信息錄入的過程中,程序也出現(xiàn)了漏洞.添加圖書信息,雖然顯示“錄入成功!",但是實際上并沒有與之前已經(jīng)存在的圖書信息存放在一起。最后修改了錄入圖書信息的算法,修改了結(jié)點的指向,使之后添加的圖書信息與之前已經(jīng)存在的圖書信息存放在一起。多個借閱者借閱同一本圖書,借閱成功后查詢該書借閱者信息,發(fā)現(xiàn)只有最新的借閱者信息。修改借閱信息插入算法,修改結(jié)點指針指向,使之不會有舊結(jié)點被新結(jié)點覆蓋的情況發(fā)生.在整個課

20、程設(shè)計的過程中,遇到了很多困難,花費了很多時間去解決,也讓我深刻體會到要圓滿完成一個程序的不易。大到算法,小到一個符號,都會影響整個程序的執(zhí)行狀況.這也警惕我要注意細節(jié)。5、 用戶使用說明開發(fā)軟件環(huán)境: 操作系統(tǒng)為XP 開發(fā)環(huán)境軟件為Ms visual C+6。0 開發(fā)語言為C語言程序運行說明:登入界面后輸入0-7選擇需要執(zhí)行的操作;選擇1圖書錄入則輸入需要錄入的圖書信息的個數(shù)n,然后依次錄入圖書信息,輸出錄入成功即可繼續(xù);選擇2圖書查詢輸入0-6選擇需要執(zhí)行的操作; 選擇1按書號查詢 輸入書號即可 成功則輸出該書信息; 選擇2按書名查詢 輸入書名即可 成功則輸出該書信息; 選擇3按作者查詢

21、輸入作者即可 成功則輸出書庫中該作者的所有著作; 選擇4按出版社查詢 輸入出版社即可 成功則輸出書庫中該出版社出版的所有書籍; 選擇5查詢圖書借閱信息 輸入書名即可 成功則輸出該書當(dāng)前所有借閱者的信息(圖書證號和歸還日期);選擇3圖書排序 程序自動將書庫中的書按書號排序輸出;選擇4圖書修改 輸入書名 成功則依次輸入該書更新后的信息,成功后系統(tǒng)便會更新信息;選擇5圖書刪除 輸入書名即可 成功則在書庫中注銷該書的信息;選擇6圖書借閱 輸入書名 成功則登記借閱者信息 輸入圖書證號和歸還日期,若信息正確和該書現(xiàn)存量大于0,則借閱成功,該書現(xiàn)存量減1,并將該借閱者信息錄入該書借閱信息中;選擇7圖書歸還

22、輸入書名 成功則輸入圖書證號 若信息正確則該書現(xiàn)存量加1,注銷該圖書證號在該書借閱信息中的信息;選擇0退出系統(tǒng)。6、 測試結(jié)果程序運行開始界面按照測試數(shù)據(jù)的步驟進行:選擇1。圖書信息錄入功能輸入需要錄入的圖書信息個數(shù)n=11;依次按照測試數(shù)據(jù)輸入11個圖書信息選擇2圖書查詢功能選擇1按書號查詢輸入書號2繼續(xù)選擇2圖書查詢功能 選擇2按書名查詢 輸入書名c繼續(xù)選擇2圖書查詢功能 選擇3按作者查詢輸入作者名e繼續(xù)選擇2圖書查詢功能 選擇4按出版社查詢輸入出版社名稱g選擇4圖書修改功能輸入要修改的書名w按照測試數(shù)據(jù)輸入修改信息選擇5圖書刪除功能輸入要刪除的書名d選擇3圖書信息排序功能選擇6圖書借閱輸

23、入要借閱的圖書w輸入圖書證號15輸入歸還日期20140101重復(fù)選擇6輸入w 17 20140715 w 25 20141109選擇2圖書查詢功能 選擇5查詢圖書借閱信息輸入書名w選擇7圖書歸還輸入歸還書書名w輸入圖書證17選擇2圖書查詢功能 選擇5查詢圖書借閱信息輸入圖書名w7、 附錄head。h /頭文件include<stdio。hincludestdlib。hincludestring。hincludemalloc。hdefine TRUE 1define FALSE 0typedef struct User /借閱者的存儲結(jié)構(gòu)體 int number; /借書證號碼 int l

24、imitdate; /歸還時間 struct User next; /下一個借閱者User; /定義用戶的的信息typedef struct int num; /圖書的書號 char name20; /書名 char author20; /著者 char press20; /出版社名稱 int left; /現(xiàn)存量 int count; /總存量 User user; /借閱該書的人ElemType; /定義書的信息typedef struct LNode /定義單鏈表結(jié)點類型ElemType data; struct LNode next; LinkList;void InitList(Li

25、nkList &L); /初始化線性表int CreateListR(LinkList &L); /錄入圖書void Search(LinkList L); /查詢圖書int Sort(LinkList L); /圖書按書號遞增有序排序void Display(LinkList L); /輸出排序結(jié)果int ListDelete(LinkList *L); /刪除圖書int ModifyList(LinkList &L); /修改圖書信息void InUserMess(User *user); /輸入借閱者的信息void Borrow(LinkList L); /借閱圖

26、書void Return(LinkList L); /歸還圖書main。cpp /主函數(shù)文件includehead。h>void main() /主函數(shù) int s; LinkList *L; L=(LinkList )malloc(sizeof(LinkList); InitList(&L); w:while(s!=0) printf(”|- n"); printf(”-歡迎光臨圖書管理系統(tǒng)!-* n”); printf(” 1。圖書信息錄入功能:- 2.圖書信息查詢功能: n"); printf("- - n”); printf(”* 3。圖書信

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

28、eak; 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; case 0: printf("謝謝使用n”);break;goto w; InitList。cpp /線性表初始化函數(shù)includehead.h>void InitList(LinkList *L) /初始化線性表 L=(LinkList *)malloc(sizeof(LinkL

29、ist)); /創(chuàng)建頭結(jié)點 Lnext=NULL;CreateListR.cpp /圖書錄入函數(shù)文件include<head。hint CreateListR(LinkList L) /尾插法建表 int i,n; LinkList s,q,p; p=L; while(pnext!=NULL) p=pnext; printf(”請輸入需要錄入的圖書信息的個數(shù):n="); scanf(”%d”,&n); for(i=1;i<n+1;i+) s=(LinkList *)malloc(sizeof(LinkList)); printf(”書號 書名 作者 出版社名稱 現(xiàn)

30、存量 總存量n”); scanf(”dsss%dd”,&s->data。num,s>,s-data。author,sdata.press,&s-data。left,&sdata.count); sdata.user=NULL; q=L-next; if(q=NULL) p>next=s; p=s; p-next=NULL; printf("錄入成功!n”); continue; while(q!=NULL) if(strcmp(s->,q>)=0) printf(”此圖書已存在

31、!”); printf("請重新輸入:n”); printf("書號 書名 作者 出版社名稱 現(xiàn)存量 總存量n”);scanf("%d%s%ssd%d”,s-data。num,,s-data。author,s-data.press,s->data。left,&sdata。count); q=q-next; pnext=s; p=s; pnext=NULL; printf(”錄入成功!n"); return 0;Search。cpp /圖書查詢函數(shù)文件#include<head.h>void Search(Li

32、nkList *L) /查詢 LinkList *p=Lnext; /p指向第一個數(shù)據(jù)結(jié)點 int c; int x=0,n; char name110,author110,press110; printf(" 1 按書號查詢: n”); printf(” 2 按書名查詢: n"); printf(" 3 按作者名查詢: n”); printf(”* 4 按出版社名稱查詢: n”); printf(" 5 查詢圖書借閱信息 n”); printf(” 6 返回 n”); printf(” 請選擇16進行操作: n”); scanf(”%d”,c); if

33、(c>6|c<1) printf(”您的輸入有誤!n"); scanf(”d",c); switch(c) case 1:printf(”請輸入圖書書號: n”); scanf(”d",n); while(p!=NULL) if(n!=p-data.num) /查找圖書書號 p=p-next; else printf("書號 書名 作者 出版社名稱 現(xiàn)存量 總存量n”); printf(”d %s %s s %d %d",p>data。num,,p>data。author,pdata.press,p&

34、gt;data.left,p->data。count); printf("n”); p=p->next; x+; if (p=NULL&&x=0) printf(”對不起,不存在此圖書!n”); break; case 2:printf(”請輸入圖書書名: n"); scanf(”%s”,&name1); while(p!=NULL) if(strcmp( name1,)!=0) /查找圖書書名 p=pnext; else printf(”書號 書名 作者 出版社名稱 現(xiàn)存量 總存量n”); printf(”%d s

35、%s s d d",pdata。num,,p-data。author,p>data.press,pdata。left,p>data。count); printf(”n"); p=p>next; x+; if (p=NULLx=0) printf(”對不起,不存在此圖書!n”); break; case 3:printf("請輸入圖書作者:n”); scanf(”s",author1); while(p!=NULL) if(strcmp( author1,p>data。author)!=0)/查找圖書作者 p=p

36、next; else printf(”書號 書名 作者 出版社名稱 現(xiàn)存量 總存量n”); printf(”d s s %s %d %d",p-data。num,p>,p->data。author,pdata。press,p>data.left,p->data。count); printf(”n"); p=pnext ; x+; if (p=NULLx=0) printf(”對不起,不存在此作者的圖書!n”); break; case 4:printf(”請輸入圖書的出版社名稱: n"); scanf(”s”,press1

37、); while(p!=NULL) if(strcmp( press1,p>data.press)!=0)/查找圖書出版社名稱 p=p->next; else printf("書號 書名 作者 出版社名稱 現(xiàn)存量 總存量n"); printf(”%d s s s d %d”,p-data。num,,p-data。author,p-data。press,p->data。left,p>data.count); printf(”n"); p=p-next; x+; if (p=NULLx=0) printf(”對不起!不存在

38、此圖書n”); break; case 5:printf("請輸入圖書書名: n”); scanf(”%s",name1); while(p!=NULL) if(strcmp( name1,p>)!=0) /查找圖書書名 p=pnext; else printf(”借閱者圖書證號 歸還時間n”); User user=pdata。user; for(;user!=NULL;user=usernext) printf(” d %dn”,user-number,userlimitdate); x+; p=p>next; if (p=NULL&

39、;&x=0) printf(”對不起,不存在此圖書!n"); break; case 6:break; Sort.cpp /排序函數(shù)文件includehead。h>int Sort(LinkList *&L) /按書號遞增有序排序(直接插入排序法) LinkList p=L>next,q,*r; /p指向第一個數(shù)據(jù)結(jié)點 if(p!=NULL) /若原單鏈表中有一個或以上的數(shù)據(jù)結(jié)點 r=pnext; /r保存p結(jié)點直接后繼結(jié)點的指針 pnext=NULL; /構(gòu)造只含一個數(shù)據(jù)結(jié)點的有序表 p=r; while(p!=NULL) r=p-next; /r保存p

40、結(jié)點的直接后繼結(jié)點的指針 q=L; while(qnext!=NULL&&qnextdata.nump-data。num) q=q-next; /在有序表中找插入p的直接前驅(qū)結(jié)點q的位置 p>next=qnext; /將*p插入到q之后 q-next=p; p=r; /掃描原單鏈表余下的結(jié)點 return 0;Display。cpp /輸出書庫信息函數(shù)文件includehead。hvoid Display(LinkList *L) /輸出排序結(jié)果 LinkList p=L-next; while (p!=NULL) printf(”書號 書名 作者 出版社名稱 現(xiàn)存量 總

41、存量 n"); printf("d s s %s d d”,pdata。num,p>,p->data。author,p-data。press,p-data。left,pdata.count); printf(”n"); p=pnext; ModifyList。cpp /圖書修改函數(shù)文件includehead.hint ModifyList(LinkList L) /修改 LinkList p=L; char name110; printf(”請輸入要修改的圖書的書名:n"); scanf(”s",name1); w

42、hile(p!=NULL) if(strcmp(name1,p>)=0) /查找所要修改的書名 printf(”請輸入修改后的信息!n"); printf("書號 書名 作者 出版社名稱 現(xiàn)存量 總存量n"); scanf(”dsssdd”,p>data。num,p>,pdata.author,p>data。press,p-data。left,&p-data。count); printf(”修改成功!n"); return 0; p=pnext; printf(”不存在此圖書n”); return 0;ListDelete,cpp /圖書刪除函數(shù)文件#includehead。hint ListDelete(LinkList *L) /刪除 LinkList p=L->next,*q=L; char name110; if(p!=NULL) printf(”請輸入要刪除的書名:"); scanf(”s”,name1); while(p>next!=NULL&strcmp(pdata.

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論