




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)據(jù)結(jié)構(gòu)課程設(shè)計圖書管理系統(tǒng)一 需求分析該程序是模擬圖書館管理系統(tǒng),實現(xiàn)圖書采編入庫、借書、還書、查詢等基本業(yè)務(wù)。此程序規(guī)定:(1) 管理員能夠向系統(tǒng)中輸入每種書的基本信息,包括書號、書名、作者、現(xiàn)存量和庫存量、借閱記錄,并保存記錄;(2) 用戶(讀者)能夠按書號、書名、作者查詢圖書信息;(3) 管理員能夠?qū)崿F(xiàn)圖書采編入庫(新購入一本書,經(jīng)分類和確定書號之后登記到圖書賬目中去。如果這種書在帳中已有,則只將總庫存量增加)、借閱(如果書的現(xiàn)存量大于0,則借出一本,登記借閱者的圖書證號和歸還期限)、歸還(刪除對借閱者的登記,改變該書的現(xiàn)存量)、銷毀(將圖書從賬目中刪除)等操
2、作。二 概要設(shè)計l 系統(tǒng)用到的抽象數(shù)據(jù)類型定義: 1、ADT LinearList數(shù)據(jù)元素:D=ai|aiD0,i=1,2,n,n0,D0為某一數(shù)據(jù)對象關(guān)系:S=|ai,ai+1D0,i=1,2,n-1基本操作:(1) InitList(L)(2) DestroyList(L)(3) ClearList(L)(4) EmptyList(L)(5) ListLength(L)(6) Locate(L,e)(7) GetData(L,i)(8) InsList(L,i,e)(9) DelList(L,i,&e)ADT LinearList2、ADT String 數(shù)據(jù)對象:D=ai|aiChara
3、cterSet,i=1,2,n;n0 數(shù)據(jù)關(guān)系:R=|ai-1,aiD,i=2,n;n0 基本操作:(1) StrAsign(S,chars)(2) StrInsert(S,pos,T)(3) StrDelete(S,pos,len)(4) StrCopy(S,T)(5) StrEmpty(S)(6) StrCompare(S,T)(7) StrLength(S)(8) StrClear(S)(9) StrCat(S,T)(10)SubString(Sub,S,pos,len)(11)StrIndex(S,pos,T)(12)StrReplace(S,T,V)(13)StrDestroy(S)
4、ADT Stringl 系統(tǒng)中的子程序和功能說明:InitBo(Book &boo);初始化圖書信息InitRe(lend &Lin);初始化借閱者信息BinarySearch(Book boo,char SearchNum);二分法查找比較書號Buy(Book &boo, char BuyNum);新書采編入庫系統(tǒng)Delete(Book &boo,char DeleteNum);清除圖書信息系統(tǒng)Borrow(Book &boo,lend &Lin,char BorrowNum,char CaNum);借閱圖書處理系統(tǒng)Return(Book &boo,lend &Lin,char Return
5、Num,char BorrowerNum);歸還圖書系統(tǒng)SearchByNum(Book &boo,char SeaNum);按書號查找系統(tǒng)SearchByName(Book &boo);按書名查找系統(tǒng)SearchByAuth(Book &boo);按作者查詢系統(tǒng)Menu();主菜單顯示系統(tǒng)Search();查詢系統(tǒng)子菜單main();主函數(shù)l 系統(tǒng)程序功能結(jié)構(gòu)圖圖書館管理系統(tǒng)圖書信息錄入查詢圖書信息處理圖書信息基本信息借閱記錄按書號查詢按書名查詢按作者查詢圖書采編入庫圖書借閱情況圖書歸還情況圖書銷毀情況三 詳細設(shè)計l 功能實現(xiàn)過程bool BinarySearch(Book boo,char
6、 SearchNum) /二分法查找比較書號while(lowmid&total;i-)/*將新采購的書插在適合位置,保持有序*/ 空出插入位置; 輸入新購書籍的相關(guān)信息:書號、書名、作者、出版社;booi.next=NULL;total+;/*總量加1*/void Delete(Book &boo,char DeleteNum)/*清除圖書信息*/ if(書庫中沒有此書)輸出“無此書”;if(書庫中有此書) strcpy(連續(xù)兩本書的相關(guān)信息);現(xiàn)存量減1;庫存量減1;else 輸出“此書已有借閱者,無法刪除!”;void Borrow(Book &boo,lend &Lin,char Bo
7、rrowNum,char CaNum)/*借閱圖書信息*/ if(沒有找到此書) 輸出“書庫中無此書!”; if(書庫中有此書) 借出一本書后,該書的現(xiàn)存量減1;并在借閱記錄鏈表中插入該條記錄;再對應讀者信息記錄鏈表,如果已有該讀者證號信息,直接在該鏈表中插入此次借閱記錄;如果無該讀者證號信息,申請新單鏈表存放借閱記錄。 else 輸出“該書現(xiàn)存量為0”;void Return(Book &boo,lend &Lin,char ReturnNum,char BorrowerNum)/*歸還圖書信息*/ if(書庫中無此書)輸出“無此書記錄”; if(書庫中有此書) 查找圖書文件,修改圖書的現(xiàn)存
8、量;查找記錄借閱信息的單鏈表,填入還書日期,刪除借閱信息;查找記錄讀者信息的單鏈表,刪除證號信息。void SearchByNum(Book &boo,char SeaNum)/*按書號查找*/ if(書庫中無此書信息)/*用二分法查找*/ 輸出“無此書”; else/*書庫中有此書信息*/ 輸出與此書有關(guān)的相關(guān)信息;void SearchByName(Book &boo)/*按書名查找*/輸入想要查找書的書名;用順序查找法查找;if(查找到需要查找的書) 輸出與此書相關(guān)的信息;建議畫出主要模塊流程圖。四 設(shè)計與調(diào)試分析1、這個程序設(shè)計中要注意定義兩個結(jié)構(gòu)體:圖書結(jié)構(gòu)體、借閱人結(jié)構(gòu)體。其中定義
9、數(shù)組存放圖書信息,申請鏈表存放借閱記錄和讀者信息記錄。2、程序中運用到大多的插入與刪除,所以申請鏈表比較方便插入與刪除。但應前期需求分析的準備工作不充分,導致程序運行功能不全,比如查找時關(guān)于此書的信息不能全部顯示出來,并且添加刪除時庫存的變化不能直接顯示出來。程序的健壯性不能達到預期的結(jié)果,這些都是需要改進的。3、在程序中的函數(shù)調(diào)用是個非常重要的部分,也是經(jīng)常需要用到的,在編寫程序過程中,因為函數(shù)調(diào)用不準確,使得循環(huán)進不去,后來改變函數(shù)的調(diào)用關(guān)系,才達到了預期結(jié)果。4、程序中還定義了全局變量,之前沒定義全局變量,在下面的編寫過程,同樣性質(zhì)的地方需要重復定義,比較麻煩,定義全局變量使得程序比較簡
10、明一點。五 用戶手冊【 使用說明 】1、進入圖書館管理系統(tǒng)主頁面2、若有新書要新編入庫,選擇1,進入新書入庫系統(tǒng),輸入入庫書的書號,若書庫中無該書,則設(shè)立新書目,輸入新書信息。若書庫中已有該書,則輸入新信息覆蓋修改原書庫中該書號對應書的信息。3、若有書籍信息需要刪除,選擇2,進入清空庫存系統(tǒng),輸入想要刪除書的書號,則此書信息就已刪除。4、若要借閱圖書,選擇3,進入圖書借閱系統(tǒng),輸入需要借閱書的書號以及讀者證號,并輸入還書日期,則借書成功。5、若要歸還圖書,選擇4,進入圖書歸還系統(tǒng),輸入需要歸還圖書的書號以及讀者證號,則還書成功。6、若要查找信息,選擇5,進入查找信息子系統(tǒng)。若要按書號查找,則選
11、擇子系統(tǒng)中的1,輸入需要查找的書的書號,若按書名查找,則選擇子系統(tǒng)中的2,輸入需要查找的書名,若按作者查找,輸入需要查找書的作者進行查找,若查找結(jié)束,則按0退出。7、若系統(tǒng)使用結(jié)束,按0退出。【 程序中的頭文件 】#include #include #include #define MAXSIZE 100 #define LIST_INIT_SIZE 100int Retotal;/*定義的全局變量*/int total;六 測試成果1、采編入庫2、清空庫存3、圖書借閱4、圖書歸還5、圖書查找七 附錄(源程序清單)#include #include #include #define MAXSI
12、ZE 100 #define LIST_INIT_SIZE 100typedef struct Borochar BNum20; char RetDate8; struct Boro *next;Bor;typedef struct LinkBook Bor *next;char CNum20;int Total;lendLIST_INIT_SIZE;typedef struct LNodechar CardNum20;struct LNode *next;LinkList; typedef struct bookchar num20;char name20;char auth20;char
13、pub20;int TotNum;int NowNum;LinkList *next;BookMAXSIZE;int Retotal;int total; void InitBo(Book &boo) for(int i=0;iMAXSIZE;i+)booi.NowNum=0;booi.TotNum=0;booi.next=NULL;void InitRe(lend &Lin) for(int i=0;iLIST_INIT_SIZE;i+)Lini.next=NULL;int mid=0;bool BinarySearch(Book boo,char SearchNum) int low=0,
14、high=total;int found=0;while(lowmid&total;i-) booi=booi-1; printf(該書在書庫中不存在,設(shè)立新書目!n);strcpy(booi.num,BuyNum);printf(該書購入的數(shù)量是:);scanf( %d,&booi.NowNum);booi.TotNum=booi.NowNum;printf(該書的名字是:);scanf( %s,&);printf(該書的作者是:);scanf( %s,&booi.auth);printf(該書的出版社是:);scanf( %s,&booi.pub);booi.next=N
15、ULL;total+;printf(已增加該書的信息!n);printf(編號 :%s 書名:%s ,booi.num,);printf(作者:%s 出版社:%s,booi.auth,booi.pub);printf(n);printf(入庫成功.n);void Delete(Book &boo,char DeleteNum)if(BinarySearch(boo,DeleteNum)=false|total=0) printf(書庫中沒有該書.n);if(BinarySearch(boo,DeleteNum)if(!boomid.next)int j;for(j=mid;j
16、0) boomid.NowNum-;if(boomid.next=NULL) m=(LinkList *)malloc(sizeof(LNode);boomid.next=m;strcpy(m-CardNum,CaNum);m-next=NULL;else m=boomid.next;while(m-next) m=m-next;n=(LinkList *)malloc(sizeof(LNode);m-next=n;strcpy(n-CardNum,CaNum);n-next=NULL; int i=0;for(i=0;inext)p=p-next;q=(Bor *)malloc(sizeof
17、(Boro);p-next=q;strcpy(q-BNum,BorrowNum); printf(輸入歸還日期:);scanf(%s,&q-RetDate);q-next=NULL;printf(借閱成功.n);break; if(i=Retotal)strcpy(Lini.CNum,CaNum); p=(Bor *)malloc(sizeof(Boro);Lini.next=p;strcpy(p-BNum,BorrowNum);printf(輸入歸還日期:);scanf( %s,&p-RetDate);p-next=NULL;Retotal+; printf(借閱成功.n);else pri
18、ntf(借閱失敗.該書現(xiàn)在庫存為0.n);void Return(Book &boo,lend &Lin,char ReturnNum,char BorrowerNum)Bor *p,*q;LinkList *m,*n;int flag=0;if(!BinarySearch(boo,ReturnNum)|!total) printf(書庫中無此書.n);if(BinarySearch(boo,ReturnNum) m=boomid.next;if(!strcmp(m-CardNum,BorrowerNum) boomid.NowNum+; boomid.next=m-next; free(m)
19、; elsewhile(m-next) if(!strcmp(m-next-CardNum,BorrowerNum) n=m-next; m-next=n-next; free(n); boomid.NowNum+; break;m=m-next;for(int i=0;iBNum,ReturnNum) Lini.next=p-next; free(p); printf(成功歸還該書.n);flag=1;break;else while(p-next) if(!strcmp(p-next-BNum,ReturnNum) q=p-next; p-next=q-next; free(q); pri
20、ntf(成功歸還該書.n);flag=1;break;p=p-next;for(int k=0;kRetotal;k+)if(!Link.next)int j;for(j=k;jRetotal;j+)Linj=Linj+1; strcpy(Linj.CNum, ); Retotal-; if(flag=0) printf(無該證信息.n);void SearchByNum(Book &boo,char SeaNum)LinkList *p;p=boomid.next;if(BinarySearch(boo,SeaNum)=true)printf(書號:%sn,boomid.num);print
21、f(書名:%sn,);printf(作者名:%sn,boomid.auth);printf(出版社:%sn,boomid.pub);printf(現(xiàn)存量:%sn,boomid.NowNum);printf(庫存量:%sn,boomid.TotNum);printf( n);elseprintf(對不起,未找到您想查找的書。n);void SearchByName(Book &boo)char SeaName20;printf(輸入想查找的書的書名:n);scanf( %s,&SeaName);printf(此書存在!n);for(int i=0;itotal;i+)if(
22、strcmp(SeaName,)=0)printf(編號:%s 書名:%s ,booi.num,);printf(作者:%s 出版社:%s,booi.auth,booi.pub);printf(總庫存量:%s,booi.TotNum);printf(現(xiàn)庫存量:%s,booi.NowNum);printf(n);void SearchByAuth(Book &boo)char SeaAuth20;printf(輸入想查找的書的作者:n);scanf( %s,&SeaAuth);printf(找到符合該作者的書的詳細信息如下:n);for(int i=0;ito
23、tal;i+)if(strcmp(SeaAuth,booi.auth)=0) printf(編號 :%s 書名:%s ,booi.num,); printf(作者:%s 出版社:%s,booi.auth,booi.pub); printf(n);void Menu() printf( 圖書館管理系統(tǒng) n);printf(1. 采編入庫 2. 清空庫存nn);printf(3. 圖書借閱 4、圖書歸還nn); printf(5. 按要求查找 0. 退出nn); printf(請選擇:);void Search()char BNum20;Book Bo;int k;printf( 圖書館查詢子系統(tǒng)n);printf(1、按書號查詢 2、按書名查找nn);printf(3、按作者查詢 4、退出子系統(tǒng)nn);printf(請選擇:);scanf(%d,&k);switch(k)case 1:printf(請輸入書號:);/輸入書號查找scanf( %s,&BNum);S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電池原材料項目可行性研究報告
- 2025年中國口腔醫(yī)療器械行業(yè)發(fā)展前景預測及投資戰(zhàn)略研究報告
- 2021-2026年中國復方茶堿麻黃堿片行業(yè)投資分析及發(fā)展戰(zhàn)略咨詢報告
- 2025年中國褲裝行業(yè)市場全景評估及發(fā)展趨勢研究預測報告
- 印刷機項目投資計劃可行性報告(模板參考范文)
- 2022-2027年中國家用美容保健電器制造行業(yè)發(fā)展前景及投資戰(zhàn)略咨詢報告
- 中國輕型卡車行業(yè)市場全景評估及投資前景展望報告
- 2025年鐵絲網(wǎng)架項目可行性研究報告
- 碗窯可行性報告
- 防洪閘項目可行性研究報告
- 學校2025年春季學期學校安全工作計劃+行事歷
- 廣西壯族自治區(qū)柳州市2025年中考物理模擬考試卷三套附答案
- 2024中國糖果、巧克力制造市場前景及投資研究報告
- 第11課《山地回憶》說課稿 2024-2025學年統(tǒng)編版語文七年級下冊
- 2023年H3CNE題庫附答案
- 2024年首都醫(yī)科大學附屬北京安定醫(yī)院招聘筆試真題
- 老舊小區(qū)改造項目施工組織設(shè)計方案
- 【招商手冊】杭州ICON CENTER 社交娛樂中心年輕人潮流消費創(chuàng)新實驗
- AI一體化智慧校園建設(shè)方案中學版
- 2025年國家稅務(wù)總局遼寧省稅務(wù)局系統(tǒng)招聘事業(yè)單位工作人員管理單位筆試遴選500模擬題附帶答案詳解
- 2024年思想道德與政治考試題庫 (單選、多選)
評論
0/150
提交評論