版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計圖書管理系統(tǒng)一需求分析該程序是模擬圖書館管理系統(tǒng),實現(xiàn)圖書采編入庫、借書、還書、查詢等基本業(yè)務(wù)。此程序 規(guī)定:(1) 管理員能夠向系統(tǒng)中輸入每種書的基本信息,包括書號、書名-作者、現(xiàn)存量和庫存量、 借閱記錄,并保存記錄;(2) 用戶(讀者)能夠按書號、書名、作者查詢圖書信息;管理員能夠?qū)崿F(xiàn)圖書采編入庫(新購入一本書,經(jīng)分類和確定書號之后登記到圖書賬目 中去。如果這種書在帳中巳有,則只將總庫存量増加)、借閱(如果書的現(xiàn)存量大于0, 則借出一本,登記借閱者的圖書證號和歸還期限)、歸還(刪除對借閱者的登記, 改變該書的現(xiàn)存量)、銷毀(將圖書從賬目中刪除)等操作。二概要時 系統(tǒng)用到的抽
2、象敷據(jù)類型定義:1、ADT LinearListI數(shù)據(jù)元素:D=a1Do,i=l,2,.,n,nO,Do為某一數(shù)據(jù)對象關(guān)系:S=<ai,ai÷> Iai,ai+ D0,i=l,2,n-l基本操作:(1) InitLiSt(L)(2) DeStrOyLiSt(L)(3) CIearLiSt(L)(4) EmPtyLiSt(L)(5) LiStLength(L)(6) LOCate(L,e)(7) GetData(LJ)(8) InSLiSt(L,i,e)(9) DeILiSt(L,i,&e)ADT LinearLiSt2、ADT String數(shù)據(jù)對象:D=aJ a1
3、 CharacterSetJ= 12,n;nM0數(shù)據(jù)關(guān)系:R=<ai.bai> I D,i=2,njnO基本操作:(1) StrASign(S ,chars)(2) StrInSert(S,pos,T)(3) StrDeIete(S,pos,Ien)(4) StrCopy(SJ)(5) StrEmPty(S)(6) StrCOmPare(S,T)(7) StrLength(S)(8) StrCIear(S)(9) StrCat(SJ)(10) SUbString(SUb, S ,pos ,len)(11) StrlndeX(S,pos,T)(12) StrRePIaCe(S,T,V
4、)(13) StrDeStrOy(S)(ADT String 系統(tǒng)中的子程序和功能說明:InitBO(BoOk &boo);初始化圖書信息InitRe(Iend &Lin);初始化借閱者信息BinarySearCh(BOOk boo,Char SearCIlNUm);二分法查找比較書號BUy(BOOk &boo, Char BUyNUm);新書采編入庫系統(tǒng)Delete(BOOk &boo,Char DeIeteNUm);清除圖書信息系統(tǒng)BOrrOW(BOOk &boo,lend &Lin,char BOrrOWNUm,char CaNUnl);借
5、閱圖書處理 系統(tǒng)RetUrn(BOOk &boo,Iend &Lin,char ReturnNUm,char BorrowerNum(I);歸還圖 書系統(tǒng)SearChByNUm(BOOk &boo,Char SeaNUn);按書號查找系統(tǒng)SearClIByNanle(BOOk &boo);按書名查找系統(tǒng)SearClIByAUth(BOOk &boo);按作者查詢系統(tǒng)Menu();主菜單顯示系統(tǒng)SearCho ;査詢系統(tǒng)于菜單main();主函數(shù)系統(tǒng)程序功能結(jié)構(gòu)圖三詳細(xì)設(shè)計 功能實現(xiàn)過租bool BinarySearCh(BOOk boo,char Sea
6、rChNUn) /二分法查找比較書號While(IOW<=Iiigh)計算中間點;以査找到書號相同的)返回值true;H (查找書號不相同)用二分法進(jìn)一步進(jìn)行査找;氓庫中沒有所要查找的書)返回值false;VOid BUy(BOOk &boo, Char BUyNUm)/*采編入庫*/if(書庫中有此書)總庫存加1;現(xiàn)庫存加1;氓書庫中無此書)for(i=total;i>mid&&total;!-)/*將新采購的書插在適合位直,保持有序*/ 空出插入位置;輸入新購書籍的相關(guān)信息:書號、書名、作者、出版社;booi.ncxt=NULL;total+;/* 總量
7、加 1*/VOid DeIete(BOOk &boo,Char DeleteNum,)/*清除圖書信息*/if(書庫中沒有此書)輸出“無此書”;if (書庫中有此書)StrCPy(連續(xù)兩本書的相關(guān)信息);現(xiàn)存量減1;庫存量減1;else輸出“此書巳有借閱者,無法刪除!” ;VOid BOrrOW(BOOk &boo,Iend &Lin,char BOrrOWNUn,char CaNUm)/*借閱圖書信息*/if(沒有找到此書)輸出“書庫中無此書! ” ;if(書庫中有此書)借出一本書后,該書的現(xiàn)存量減1;并在借閱記錄鏈表中描入該條記錄;再對應(yīng)讀者信息 記錄鏈表,如果巳有
8、該讀者證號信息,直接在該鏈表中插入此次借閱記錄;如果無該讀者 證號信息,申請新單鏈表存放借閱記錄。else 輸出“該書現(xiàn)存量為OM ;VOid RetUrn(BOOk &boo,lend &Lin,char ReturnNUm ,clar BOrrOWerNUnl)/*歸還 圖書信息*/if(書庫中無此書)輸出“無此書記錄”;if(書庫中有此書)査找圖書文件,修改圖書的現(xiàn)存量;查找記錄借閱信息的單鏈表,填入還書日期,刪除 借閱信息;查找記錄讀者信息的單鏈表,刪除證號信息。VOid SearClIByNUm(BOOk &boo,char SeaNUm)/*按書號査找*/i
9、f(書庫中無此書信息)/*用二分法查找*/輸出“無此書”;else/*書庫中有此書信息*/輸出與此書有關(guān)的相關(guān)信息;VOid SearCIIByName(BOOk &boo)/*按書名查找*/輸入想要查找書的書名;用順序查找法查找;氓查找到需要查找的書)輸出與此書相關(guān)的信息;建議畫出主婆模塊流程圖。四設(shè)計與調(diào)試分析1、這個程序設(shè)計中要注意定義兩個結(jié)構(gòu)體:圖書結(jié)構(gòu)體、借閱人結(jié)構(gòu)體。其中定義數(shù)組存放圖書信息,申請鏈表存放借閱記錄和讀者信息記錄。2、程序中運用到大多的插入與刪除,所以申請鏈表比較方便插入與刪除。但應(yīng)前期需求分 析的準(zhǔn)備工作不充分,導(dǎo)致程序運行功能不全,比如査找時關(guān)于此書的信息
10、不能全部顯示出 來,并且添加刪除時庫存的變化不能直接顯示出來。程序的健壯性不能達(dá)到預(yù)期的結(jié)果,這 些都是需要改進(jìn)的。3、在程序中的函數(shù)調(diào)用是個非常重要的部分,也是經(jīng)常需要用到的,在編寫程序過程中, 因為函數(shù)調(diào)用不準(zhǔn)確,使得循環(huán)進(jìn)不去,后來改變函數(shù)的調(diào)用關(guān)系,才達(dá)到了預(yù)期結(jié)果。4、程序中還定義了全局變量,之前沒定義全局變量,在下面的編寫過程,同樣性質(zhì)的地方 需要重復(fù)定義,比較麻煩,定義全局變量使得程序比較簡明一點。五用戶手冊【使用說明】1、進(jìn)入圖書館管理系統(tǒng)主頁面2、若有新書要新編入庫,選擇1,進(jìn)入新書入庫系統(tǒng),輸入入庫書的書號,若書庫中無該 書,則設(shè)立新書目,輸入新書信息。若書庫中巳有該書,則
11、輸入新信息覆蓋修改原書庫中該 書號對應(yīng)書的信息。3、若有書籍信息需要刪除,選擇2,進(jìn)入清空庫存系統(tǒng),輸入想要刪除書的書號,則此書 信息就已刪除。4、若要借閱圖書,選擇3,進(jìn)入圖書借閱系統(tǒng),輸入需要借閱書的書號以及讀者證號,并 輸入還書日期,則借書成功。5、若要歸還圖書,選擇4,進(jìn)入圖書歸還系統(tǒng),輸入需要歸還圖書的書號以及讀者證號, 則還書成功。6、若要查找信息,選擇5,進(jìn)入查找信息子系統(tǒng)。若要按書號査找,則選擇于系統(tǒng)中的1, 輸入需要查找的書的書號,若按書名查找,則選擇子系統(tǒng)中的2,輸入需要查找的書名,若 按作者査找,輸入需要査找書的作者進(jìn)行查找,若查找結(jié)束,則按O退出。7、若系統(tǒng)使用結(jié)束,按
12、O退出?!境绦蛑械念^文件#include <stdio.h>#include <string.h>#include <stdlib.h> #define MAXSIZE 100#define LISTJNITeSIZE IOO int Retotal;/*定義的全局變量*/ int total;六測試成果1、采編入庫卜-來入一丿圭2 .""zic-*國書借閱r.閨書歸d!按亜節(jié)査找A.i因?qū)鏛LI iJv¾t = HQCEdLeS CM5r5yctouD5ktopCE-T5reJfl0buQD15.-xI的ZE" I-
13、i紗 sl継 X ii艇 XXii 煲i夠軽 131A# mLl*rjfl>rl0、清空庫存3. 圖書借閱圖書歸還2淆空庫存4.、圖書歸誣P*-退1出l一心臬書館脅玉里殺紓 X編入庫圖書債閱按孌求査找詰痛入想變歸還的書的書號M 3i5A圖荃渥號mu¾W8. -5. 圖書査找十心臬書t官管理茨級g -來編入M2沽空庫存3-圖書借閱J圖書歸還按妾衣査找H-退出i青選扌辛 5一技亭詢子書"找5 按作者查詢心退岀子系統(tǒng)llfe的韋的書名=ChUlJlSte. -空庫存3.按作者查詢4 J退出子系統(tǒng)請選擇:5-技4詢子欲按書名査找乩按要茅查找 «退山處圖書歸還3圖書借
14、閱 擇入起任 選輸不按我 您- 11七附錄(源程序清單)#include <stdio.h>#include <string.h>#inCIUde <stdlib.h>#define MAXSlZE 100#define LISTJNITeSIZE 100 typedef StrUCt BOrOChar BNUm20;Char RetDate;StrUCt BOrO *next;(Bor;typedef StrUCt LinkBOOkBOr *next;Char CNUm20;int Total;lendLISTJNIT_SIZEl;typedef StrU
15、Ct LNOdeChar CardNUm20;StrUCt LNOde *next;LinkList;typedef StrUCt bookChar num20;Char name20;Char auth20;Char pub20;int TotNum;int NowNum;LinkLiSt *next;BookM AXSIZE;int Retotal;int total;VOid In讓BO(BOOk &boo)for(int i=O;i<MAXSIZE;i+)boo i .NowNum=O;booi .TotNum=O;booi .next=NULL;VOid InitRe(
16、Iend &Lin)for(int i=O;ivLIST_INIT_SIZE;i+)Lini.next=NULL;int mid=0;bool BinarySearCh(BOOk boo,char SearChNUm)int IOW=O,high=total;int found=O;While(IOW<=1IigrI)mid=(low+ligh)/ 2;if(strcmp(boomid.num,SearchNum)=0)found= 1; return true; if(strcmp(boomid.num,SearchNum)!=0)Iligh=mid-1;elselow=mid
17、+1;if(found=0)return false;VOid BUy(BOOk &boo, Char BUyNUm)int i;if(BinarySearch(boo,BuyNum)boomid.TotNum+;boo mid NOWNUm+;Printf (" 庫成功.n");Printf("巳更改書庫中該書的信息。n");Printf編號:%S 書名:S l, boo mid .num,boo mid .name);Printf作者:s出版社:%s",boomid.auth,boomid.pub);Printf(H n,t);if
18、 (! Binary S ear ch (boo, Buy Num)for(i=total;i>mid &&total;i)booi=booi-l;Printf("該書在書庫中不存在,設(shè)立新書g!");StrCPy( boo i num, BUyNUm);Printf("該書購入的數(shù)量是:"); scanf(,* %d”,&booi.NowNum); booi .TotNum=booi.NowNum;PrintfC該書的名字是:”);SCanf(, %s役&);Print1("該書的作者是
19、:");SCanf(, %s,&booi.auth);Pnntf('該書的出版社是門;SCanf(, %s,booi.pub);booi .next=NULL;total+;PrintfCI巳增加該書的信息!n1);Printf編號:%S 書名:s lbooi.num,);Prmtf(,作者:s出版社:s” ,booi .auth,booi.pub);Printl (,n);PrintfC 入庫成功.n");VOid DeIete(BOOk &boo,Char DeleteNum(J)if(BinarySearch(boo,Dele
20、teNumJ=Ialse total=0)Printf("書庫中沒有該書.n");if (BinarySearcl(boo,DeleteNum)if(!boomid.next)int j;for(j=mid;j<total;j+)booj=booj+l;StrCPy(booj.num,booj+1 .num);StrCPy(boo j name,boo j+l. name);StrCPy(booj.auth,booj+l.auth);StrCPy (boo j. PUb ,boo j ÷ 1 .pub);booj .TotNum=booj+1.TOtNUn;
21、boo j.NowNum=booj÷l.NowNum;Printf ("B成功刪除該書.n");elsePrintf("該書有借閱者,無法刪除。n");VOid BOrrOW(BOOk &boo,lend &Lin,char BOrrOWNUm ,char CaNUnl) BOr *p,*q;LiIlkLiSt *mn;if(!BinarySearch(boo,BrrwNum) total=0)Printf("書庫里沒這書。n");if (BinarySearch(boo,BorrowNum)if(boomi
22、d.NowNum>0)boo mid. NowNum-; if(boomid .next=NULL)m= (LinkList *)malloc(sizeof(LNode); boomid next=m;StrCPy (m->CardNum,CaNum); m->next=NULL;elsem=boomid .next;While(m->next) m=m->next; n=(LinkList *) malloc (SiZeOf(LNode); m->next=n;StrCPy (n-> CardNUnl, CaN Um); n->next=NUL
23、L;int i=0;for(i=0;i<Retotal;i+)if(!strcmp(Lini.CNum,CaNum)P=Lini.next;Whiie(P->next)p=p->next; q=(Bor *)malloc(sizeof(Boro); p->next=q;StrCPy(q->BNum,BorrowNum); Printf("輸入歸還日期:”); SCanf(,l%SM,&q- > RetDate); q->next=NULL;Printf("借閱成功.n"); break; if(i=Retotal)
24、StrCPy(Lin i .CNum,CaNum);P=(BOr *)malloc(sizeof(Boro); Lini.next=p;StrCPy(P->BNum,BorrowNum); Printf("輸入歸還日期:”); scanff, %s,sp->RetDate); p->next=NULL;Retotal+;Nintfr借閱成功.n,3;elsePnntf("借閱失敗該書現(xiàn)在庫存為O.n");VOid RetUrn(BOOk &boo,Iend &Lin,Char RetUrnNUm,char BOrrOWerNUm)
25、 BOr *p,*q;LiIlkLiSt *mn;int ag=O;if(!BinarySearcl(boo,ReturnNum) !total)Printf(”書庫中無此書n");if (BinarySearCh(boo, RetUrnNUm)m=boomid.next;if(!strcmp(m->CardNum,BorrowerNum)boo mid. NowNum+;boomid.next=m->next;free(m);elseWhile(m-> next)if(!strcmp(m->next->CardNum,BorrowerNum)n=m-&
26、gt;next;m->next=n->next;free(n);boomid .NowNum+;break;m=m->next;for(int i=0;i<Retotal;i+)if(!strcmp(Lini.CNum,BorrowerNum)P=Lini. next; if (!strcmp(p->BNum,ReturnNum)Lini.next=p->next;free(p);Printf,'成功歸還該書n");flag=l;break;elseWhiIe(P->next)if (!strcmp(p->next->BN
27、um,ReturnNum) q=p->next;p->next=q->next;free(q);Printf("成功歸還該書.n");flag=l;break;p=p->next;for(int k=0;k<Retotal;k+)if(!Link.next)int j;for(j=k;j<Retotal;j+)Linj=Linj+l;StrCPy(Linj.CNum,);Retotal-;il(flag=O)Printfr無該證信息n");VOid SearChByNUm(BOOk &boo,char SeaNUm)Li
28、nkLiSt *p; p=boo mid, next; if(BinarySearch(boo,SeaNum)=true) Pnntf書號:%snl*,boomid.num);Printf書名:%snf,boomid .name);Pnntf作者名:%snM,boomid.auth);Printfr出版社:%sn,boomid.pub);Printf現(xiàn)存量:%sn,boomid.NOWNUm);Prmtf(,庫存量:%snn,boomid.TotNum); Printl(H n");elsePrintf(',對不起,未找到您想查找的書。n”);VOid SearChByNam
29、e(BOOk &boo)Char SeaName20;Printf("輸入想査找的書的書名: n");SCanI(H %s,t,&SeaName);Printf("1書存在! n");for(int i=0;i<total;i+)if(strcmp(SeaName,)=0)PTintfr編號:s 書名:s ,booi.num,); Printf (,作者:s 出版社:%sM,booi.autli,booi|.pub); Piintfr 總庫存重 z%s'*,booi.TotNum);Pri
30、ntfr 現(xiàn)庫存量:s",booi .NowNum);Printf(Hnn);VOiel SearCIIByAUth(BOOk &boo)Char SeaAUth20;Printf("輸入想查找的書的作者:n");SCanI(H %sH,&SeaAuth);Printfr找到符合該作者的書的詳細(xì)信息如下:n");for(int i=0;i<total;i+)il(strcmp(SeaAuth,booi.auth)=0)Printf(,編號:S 書名:s m,booi.num,); Printf(M 作者:s 出版社 r%s,booi.auth,booi.pub); PrintfC,n,);VOid MenUOPrintf(M圖書館管理系統(tǒng));2.清空庫存nn,);4、圖書歸還nn");0.退出m);Printf(H 1采編入庫Printf("3.圖書借閱Printf("5.按要求查找 Printfr請選擇:,);VOid SearCl1()Char BNUm20;BOOk Bo;int k;Printf("圖書館查詢子系統(tǒng)n");Printf("K按書號查詢2、按書名査找nn")
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版國際貿(mào)易合同履行中的知識產(chǎn)權(quán)保護(hù)協(xié)議2篇
- 中醫(yī)學(xué)徒師承合同模板(2024年版)版B版
- 二零二五年生物制藥技術(shù)合同認(rèn)定與登記服務(wù)協(xié)議3篇
- 2025年度二零二五年度商業(yè)綜合體攤位租賃服務(wù)協(xié)議3篇
- 二零二五版信息技術(shù)企業(yè)股權(quán)托管與產(chǎn)業(yè)協(xié)同協(xié)議3篇
- 2025年度城市排水系統(tǒng)改造與安裝服務(wù)合同3篇
- 2025年度智能停車設(shè)施運營管理合同范本2篇
- 二零二五版出租汽車行業(yè)駕駛員勞動合同標(biāo)準(zhǔn)文本3篇
- 2024手繪墻繪藝術(shù)作品展覽與推廣合同3篇
- 2024離婚彩禮退還與財產(chǎn)分割爭議解決執(zhí)行服務(wù)協(xié)議3篇
- 大型活動聯(lián)合承辦協(xié)議
- 工程項目采購與供應(yīng)鏈管理研究
- 2024年吉林高考語文試題及答案 (2) - 副本
- 拆除電纜線施工方案
- 搭竹架合同范本
- Neo4j介紹及實現(xiàn)原理
- 焊接材料-DIN-8555-標(biāo)準(zhǔn)
- 工程索賠真實案例范本
- 重癥醫(yī)學(xué)科運用PDCA循環(huán)降低ICU失禁性皮炎發(fā)生率品管圈QCC持續(xù)質(zhì)量改進(jìn)成果匯報
- 個人股權(quán)證明書
- 醫(yī)院運送工作介紹
評論
0/150
提交評論