![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/d6b32e5f-bb9f-4af8-bc05-e8803a045c68/d6b32e5f-bb9f-4af8-bc05-e8803a045c68pic.jpg)
![課程設計--圖書館管理系統(tǒng)_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/d6b32e5f-bb9f-4af8-bc05-e8803a045c68/d6b32e5f-bb9f-4af8-bc05-e8803a045c681.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 第一章 課程設計目的和要求</p><p> 1.1 課程設計教學環(huán)節(jié)的主要目的</p><p> 學生已學完《C++語言程序設計》課程,并進行了第一次課程設計,學習了如何將有關(guān)處理文件的數(shù)據(jù)結(jié)構(gòu)和操作進行封裝,從而掌握了C++語言程序設計中的一些基本知識與方法,且對抽象、封裝、繼承與多態(tài)有了一定的了解。為鞏固C++有關(guān)知識,加強面向?qū)ο缶幊痰姆椒ㄓ柧?,增加學生軟
2、件設計能力和動手能力,學習使用現(xiàn)有工具,特設計了這個利用MFC類開發(fā)一個小型完整應用程序的題目。主要要求如下: </p><p> 1、學會在自己的軟件工程中利用MFC提供的成熟數(shù)據(jù)類型(class),這里主要要用的類有,CString,CFile,CArchive,CObject以及CObArray等一些通用類; </p><p> 2、掌握冒泡法。掌握數(shù)據(jù)類型大小(operator
3、 < 或operator >)的重載,進而利用冒泡法對數(shù)據(jù)進行排序。 </p><p> 3、學習MFC中數(shù)據(jù)序列化(Serialize)的方法,掌握如何利用MFC提供的數(shù)據(jù)類型進行數(shù)據(jù)序列化。</p><p> 1.2課程設計的目標</p><p> 1.練習用所學的C語言和C++的相關(guān)知識;</p><p> 2.掌握
4、C語言和C++函數(shù)應用,學會用C語言和C++來編寫程序。</p><p> 3.掌握C語言和C++編程和程序調(diào)試的基本技能;</p><p> 4.掌握利用C語言和C++進行軟件設計的方法;</p><p> 5.提高書寫程序設計說明的能力;</p><p> 6.提高運用C語言和C++解決實際問題的能力.</p>&l
5、t;p><b> 1.3課程設計要求</b></p><p> 1.了解軟件開發(fā)的相關(guān)背景和內(nèi)容;</p><p> 2.參考書籍學習相關(guān)課程設計的知識,增加所需知識;</p><p> 3.清楚開發(fā)軟件的各個相關(guān)功能,以便順利開發(fā)軟件,應用軟件。</p><p> 第二章 課程設計任務背景與內(nèi)容<
6、/p><p> 2.1 任務背景介紹</p><p> 當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。</p><p> 尤其對于復雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機進行信息管理與
7、信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好圖書館信息而設計的。</p><p> 圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計算機進行信息管理。根據(jù)調(diào)查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況(如借書天數(shù)、超過限定借書時間的天數(shù))的統(tǒng)計和核實等
8、往往采用對借書卡的人工檢查進行,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計算、手抄進行。數(shù)據(jù)信息處理工作量大,容易出錯;由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。</p><p> 隨著圖書館規(guī)模的不斷擴大,圖書數(shù)量也相應的增加,有關(guān)圖書的各種信息量也成倍增加,
9、面對著龐大的信息量,傳統(tǒng)的人工方式管理會導致圖書館管理上的混亂,人力與物力過多浪費,圖書館管理費用的增加,從而使圖書館的負擔過重,影響整個圖書館的運作和控制管理,因此,必須制定一套合理、有效,規(guī)范和實用的圖書管理系統(tǒng),對圖書資料進行集中統(tǒng)一的管理。</p><p> 另一方面,IT產(chǎn)業(yè)和Internet獲得了飛速發(fā)展,計算機應用已滲透到了各個領(lǐng)域,引起信息管理的革命,實現(xiàn)了信息的自動化處理,提高了處理的及時性和
10、正確性。</p><p> 提高圖書管理工作效率,作到信息的規(guī)范管理,科學統(tǒng)計和快速查詢,讓圖書館更好的為學校,社會服務。</p><p> 數(shù)據(jù)處理手工操作,工作量大,出錯率高,出錯后不易更改。圖書館采取手工方式對圖書借閱情況進行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當時
11、對它比較清楚,時間一長,如再要進行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費時、費力。如要對很長時間以前的圖書進行更改就更加困難了。</p><p> 基于這此問題,我認為有必要建立一個圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改圖書情況。</p><p> 而圖書管理系統(tǒng)是一些單位不可缺少
12、的部分,書籍是人類不可缺少的精神食糧,尤其對一些學校來說,尤其重要。所以圖書管理系統(tǒng)應該能夠為用戶提供充足的信息和快捷的查詢手段。但傳統(tǒng)人工管理方式存在著許多缺點,如:效率低、保密性差,另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。</p><p> 針對目前中小圖書管理實際,從系統(tǒng)的開發(fā)背景、需求分析、設計原則開發(fā)過程等方面進行了全面的闡述,采用Visual Frxpro6.
13、0和ACCESS 2000等軟件為開發(fā)工具。</p><p><b> 2.2 任務內(nèi)容</b></p><p> 下面是本程序的具體操作內(nèi)容:</p><p> 1. 采編入庫:新購入一種書,如果該書在圖書賬目中已經(jīng)存在, 則將其庫存量增加(包括總庫存量和現(xiàn)庫存量)。如果該書不存在,則在圖書賬目中增加一種書,總庫存量和現(xiàn)庫存量均為輸入的
14、數(shù)字。</p><p> 2. 清空庫存:某一種書已無保留價值,將它從圖書賬目中注銷。</p><p> 3. 借閱:如果一種書的現(xiàn)庫存量大于零,則借出一本書,將現(xiàn)庫存量減1, 并登記借閱者的圖書證號和歸還期限。</p><p> 4.歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。</p><p><b> 5. 按書號查找。
15、</b></p><p><b> 6 .按書名查找。</b></p><p> 7. 按作者查找。 </p><p> 8. 查看某圖書證號的借閱者借閱的全部圖書。 </p><p> 9. 查看全部超期未還的圖書。</p><p> 0. 退出圖書管理系統(tǒng)。<
16、;/p><p> 2.3 系統(tǒng)需求分析</p><p> 2.3.1 系統(tǒng)需求說明</p><p> 1.滿足圖書借閱管理的基本要求。</p><p> 2.滿足圖書書庫管理的基本要求。</p><p> 3.滿足圖書借閱人員的基本要求。</p><p> 4.對操作人員的技能要求比較底
17、,操作方便。</p><p> 5.能夠?qū)崿F(xiàn)方便的擴展,滿足圖書館發(fā)展的需要。</p><p> 2.3.2 功能需求說明</p><p> 基于系統(tǒng)需求分析,該系統(tǒng)需要實現(xiàn)以下基本功能:</p><p> 1.用戶管理:管理系統(tǒng)操作人員,設置操作人員口令和權(quán)限。在滿足不同系統(tǒng)用戶的操作需求的基礎上,提高系統(tǒng)的安全性。</p&g
18、t;<p> 2.基礎數(shù)據(jù)管理:維護圖書管理相關(guān)類別信息,并設定各種類別圖書能借出的天數(shù)。</p><p> 圖書類別設置:設置管理圖書的類別信息,并設定各種類別圖書能借出的天數(shù)。</p><p> 讀者類型設置:設置圖書讀者的類別信息,并設定各種類別讀者能同時借閱圖書的冊數(shù)。</p><p> 3.借閱管理:完成圖書的借出登記,歸還登記信息,
19、以及借書信息和還書信息的查詢?yōu)g覽等借閱相關(guān)的管理功能。</p><p> 4.書庫管理:維護書庫中的圖書信息,能夠完成新書的入庫登記,圖書信息的查詢以及圖書丟失處理等功能。</p><p> 5.讀者管理:讀者的相關(guān)信息,能夠完成新讀者信息的登記,讀者信息的 查詢以及注銷等功能。</p><p> 第三章 詳細設計說明</p><p>
20、 3.1程序的流程包括采編入庫,清除入庫等操作</p><p> 圖3-1 程序總體結(jié)構(gòu)圖</p><p><b> 3.2 系統(tǒng)流程圖</b></p><p><b> 圖3-2 流程圖</b></p><p><b> 圖3-3整體步驟圖</b></p&g
21、t;<p><b> 3.3函數(shù)說明</b></p><p> 1.采編入庫:查找書籍。</p><p> 圖3-4采編入庫流程圖</p><p> 2.借閱:從圖書館借閱書籍。</p><p><b> 圖3-5借閱圖</b></p><p><
22、;b> 第四章 軟件說明</b></p><p><b> 1.采編入庫</b></p><p> 執(zhí)行void uy()//采編入庫函數(shù)</p><p> 圖4-1采編入庫調(diào)試圖</p><p><b> 2.清空入庫</b></p><p>
23、 void elete()//清空入庫函數(shù)</p><p> 圖4-2清空入庫調(diào)試圖</p><p><b> 3.借閱</b></p><p> void orrow()//借閱函數(shù)</p><p><b> 圖4-3借閱調(diào)試圖</b></p><p><
24、;b> 4.歸還</b></p><p> void turn()//歸還函數(shù)</p><p><b> 圖4-4歸還調(diào)試圖</b></p><p><b> 5.按書號查找</b></p><p> void SearchByNum()//按書號查找函數(shù)</p
25、><p> 圖4-5按書號查找調(diào)試圖</p><p><b> 6.按書名查找</b></p><p> void SearchByName()//按書名查找函數(shù)</p><p><b> 圖4-6按書名查找</b></p><p><b> 7.按作者查找
26、</b></p><p> void SearchByAuth()//按作者查找函數(shù)</p><p> 圖4-7按作者查找調(diào)試圖</p><p> 8.查看某圖書證號的借閱者借閱的全部圖書</p><p> void ViewCard()//查看某圖書證號的借閱者借閱的全部圖書</p><p>
27、 圖4-8查看某圖書證號的借閱者借閱的全部圖書</p><p> 9.查看全部超期未還的圖書</p><p> void ViewBook()//查看全部超期未還的圖書</p><p> 圖4-9查看全部超期未還的圖書</p><p> 第五章 課程設計心得與體會</p><p> 課程設計是培養(yǎng)學生綜合
28、運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術(shù)發(fā)展的日新月異,計算機軟件技術(shù)在這樣一個時代中已空前活躍,在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握一門軟件技術(shù)的系統(tǒng)開發(fā)是十分重要的。</p><p> 回顧此次課程設計過程,我感慨頗多。的確,從選題到定稿,從理論到實踐,在整整三個星期的日子里,可以說得上是苦多于甜,但
29、是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題時,可以說得上是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對
30、以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說對各種語句的用法不夠熟練,沒有徹底熟悉一些重要的操作。經(jīng)過這次課程設計之后,一定把以前所學過的知識重新溫故。而且這次課程設計讓我了解了許多以前沒有學到的知識,Visual C++6. 0程序是我自己看的,但是指導老師提供的資料。從這本書中我學習了許多知識。它讓我從中發(fā)現(xiàn)自己有太多的不足,知道書本應該與實際操作聯(lián)合在一起,有些東西必須自己實際操作才可以懂得。</p>&
31、lt;p> 這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在老師的辛勤指導下,終于迎刃而解。同時,在老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W和各位指導老師再次表示衷心的感謝。</p><p> 附錄一 參考文獻</p><p> 【1】黃明 梁旭 周紹斌:Visual C++ 信息系統(tǒng) 設計與開發(fā)實力,機械工業(yè)出版社,20
32、05年3月第一版</p><p> 【2】章五一:Visual C++ 項目開發(fā) 實例導航,上??茖W普及出版社,2004年11月第一版</p><p> 【3】譚浩強:C++ 程序設計,清華大學出版社,2004年6月第一版</p><p> 【4】嚴蔚敏 吳偉民:數(shù)據(jù)結(jié)構(gòu)(C語言版),清華大學出版社,1997年4月第一版</p><p&g
33、t; 【5】張堯?qū)W:計算機操作系統(tǒng)教程(第2版),清華大學出版社,2009年1月第一版</p><p> 【6】殷人昆:數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++描述),清華大學出版社,1999年7月第一版</p><p><b> 附錄二 清單程序</b></p><p> #include <stdio.h></p>
34、<p> #include <string.h></p><p> #include <stdlib.h></p><p> #define LIST_INIT_SIZE 100//圖書證使用者最大值定義為100</p><p><b> //借書人的結(jié)構(gòu)體</b></p><p
35、> typedef struct Boro//借書行為</p><p><b> {</b></p><p> char BNum[20];//借書的書號</p><p> char RetDate[8];//歸還日期</p><p> struct Boro *next;</p><
36、p><b> }Bor;</b></p><p> typedef struct LinkBook</p><p><b> {</b></p><p> Bor *next;//該圖書證的借書行為</p><p> char CNum[20];//證號</p><
37、;p> int Total;//借書的數(shù)量</p><p> }lend[LIST_INIT_SIZE];//借書人數(shù)組</p><p> //圖書的結(jié)構(gòu)體信息</p><p> typedef struct LNode</p><p><b> {</b></p><p> c
38、har CardNum[20];//圖書證號</p><p> struct LNode *next;</p><p> }LinkList; //借書人</p><p> typedef struct book</p><p> {//每種圖書需要登記的內(nèi)容包括書號ISBN、書名、作者、出版社、總庫存量和現(xiàn)庫存量。</p&g
39、t;<p> char num[20];//書號</p><p> char name[20];//書名</p><p> char auth[20];//作者</p><p> char pub[20];//出版社</p><p> int TotNum;//總庫存</p><p> int
40、 NowNum;//現(xiàn)庫存</p><p> LinkList *next;//借了該書的人</p><p> }ook[MAXSIZE];//</p><p> int Retotal;//讀者數(shù)量</p><p> int total; //定義外部變量.書的種類數(shù)</p><p><b> /
41、/</b></p><p><b> //結(jié)構(gòu)體初始化</b></p><p> void InitBo(ook &boo) //初始化圖書信息</p><p><b> {</b></p><p> for(int i=0;i<MAXSIZE;i++)<
42、/p><p><b> {</b></p><p> boo[i].NowNum=0;</p><p> boo[i].TotNum=0;</p><p> boo[i].next=NULL;</p><p><b> }</b></p><p>
43、;<b> }</b></p><p> void InitRe(lend &Lin) //初始化借閱者信息</p><p><b> {</b></p><p> for(int i=0;i<LIST_INIT_SIZE;i++)</p><p> Lin[i].next
44、=NULL;</p><p><b> }//</b></p><p> int mid=0;//外部函數(shù)mid,用來返回查找到的位置</p><p> bool BinarySearch(ook boo,char SearchNum[]) //二分法查找比較書號</p><p> { //用bool函數(shù),但
45、由于函數(shù)不能有兩個返回值,所以設置一個外部變量mid,用來返回查找到的位置</p><p> int low=0,high=total-1;</p><p> int found=0;</p><p> while(low<=high)</p><p><b> {</b></p><p
46、> mid=(low+high)/2; //中間點</p><p> if(strcmp(boo[mid].num,SearchNum)==0) //書號相同</p><p><b> {</b></p><p><b> found=1;</b></p><p> return t
47、rue;</p><p><b> }//查找成功</b></p><p> if(strcmp(boo[mid].num,SearchNum)!=0)//書號不同</p><p> high=mid-1;</p><p> else low=mid+1;</p><p><b&g
48、t; }</b></p><p> if(found==0)</p><p> return false; //查找失敗</p><p><b> }</b></p><p> void Buy(ook &boo, char BuyNum[])</p><p> {
49、//1、 采編入庫:新購入一種書,如果該書在圖書賬目中已經(jīng)存在,則將其庫存量增加(包</p><p> //括總庫存量和現(xiàn)庫存量),如果該書不存在,則在圖書賬目中增加一種書,總庫存量和現(xiàn)庫存量均為1。</p><p> if(BinarySearch(boo,BuyNum)) //如果書庫中有此書</p><p><b> {</b>
50、</p><p> boo[mid].TotNum++; //總庫存加1</p><p> boo[mid].NowNum++; //現(xiàn)庫存加1</p><p> printf("入庫成功.\n");</p><p> printf("已更改書庫中該書的
51、信息。編號 %s 的書 %s 作者是 %s ,出版社是 %s ,目前的總庫存是 %d ,現(xiàn)庫存是 %d 。\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);</p><p><b> }</b></p><p> if(!B
52、inarySearch(boo,BuyNum))</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=total;i>mid&&total;i--) //插在適合位置 保持有序</p><p> boo[
53、i]=boo[i-1]; //空出插入位置</p><p> printf("該書在書庫中不存在。設立新書目,請補全書的詳細信息。\n");</p><p> strcpy(boo[i].num,BuyNum);</p><p> printf("該書購入的數(shù)量是:");</p>
54、<p> scanf(" %d",&boo[i].NowNum);</p><p> boo[i].TotNum=boo[i].NowNum;</p><p> printf("該書的名字是:");</p><p> scanf(" %s",&boo[i].name);
55、</p><p> printf("該書的作者是:");</p><p> scanf(" %s",&boo[i].auth);</p><p> printf("該書的出版社是:");</p><p> scanf(" %s",&boo[
56、i].pub);//補全信息</p><p> boo[i].next=NULL;</p><p> total++;//總量+1</p><p> printf("已增加該書的信息。編號 %s 的書 %s 作者是 %s ,出版社是 %s ,目前的總庫存是 %d ,現(xiàn)庫存是 %d 。\n",boo[i].num,boo[i].name,bo
57、o[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);</p><p> printf("入庫成功.\n");</p><p><b> }</b></p><p><b> }</b></p><p> void Delet
58、e(ook &boo,char DeleteNum[])</p><p> {//2、 清空庫存:某一種書已無保留價值,將它從圖書賬目中注銷。</p><p> if(BinarySearch(boo,DeleteNum)==false||total==0) //如果無此書</p><p> printf("書庫中沒有該書.\n"
59、;);</p><p> if(BinarySearch(boo,DeleteNum))//若有</p><p><b> {</b></p><p> if(!boo[mid].next)</p><p><b> {</b></p><p><b>
60、int j;</b></p><p> for( j=mid;j<total;j++)</p><p> boo[j]=boo[j+1];</p><p> strcpy(boo[j].num,boo[j+1].num);</p><p> strcpy(boo[j].name,boo[j+1].name);<
61、/p><p> strcpy(boo[j].auth,boo[j+1].auth);</p><p> strcpy(boo[j].pub,boo[j+1].pub);</p><p> boo[j].TotNum=boo[j+1].TotNum;</p><p> boo[j].NowNum=boo[j+1].NowNum;</p
62、><p> printf("已成功刪除該書.\n");</p><p><b> }</b></p><p> else printf("該書有借閱者,無法刪除。\n");</p><p><b> }</b></p><p>&l
63、t;b> }</b></p><p> void Borrow(ook &boo,lend &Lin,char BorrowNum[],char CaNum[])</p><p> {//3、 借閱:如果一種書的現(xiàn)庫存量大于零,則借出一本書,將現(xiàn)庫存量減1,</p><p> //并登記借閱者的圖書證號和歸還期限。</
64、p><p> Bor *p,*q;</p><p> LinkList *m,*n;</p><p> if(!BinarySearch(boo,BorrowNum)||total==0) //如果沒有找到此書</p><p> printf("書庫里沒這書。\n");//如果有這書</p><p&
65、gt; if(BinarySearch(boo,BorrowNum)) //書庫里有</p><p><b> {</b></p><p> if(boo[mid].NowNum>0) //看現(xiàn)庫存是否大于0</p><p><b> {</b></p><p> bo
66、o[mid].NowNum--;//借出一本,少1</p><p> if(boo[mid].next==NULL) //若該書信息下顯示該種書還沒被人借過</p><p><b> {</b></p><p> m=(LinkList *)malloc(sizeof(LNode));//分配</p><p>
67、 boo[mid].next=m;//該圖書信息中的鏈表的第一個結(jié)點</p><p> strcpy(m->CardNum,CaNum);</p><p> m->next=NULL;//后一個結(jié)點為空</p><p><b> }</b></p><p> else //如果已經(jīng)有人在借這書了
68、</p><p><b> {</b></p><p> m=boo[mid].next;</p><p> while(m->next) //遍歷到最后一個結(jié)點</p><p> m=m->next;</p><p> n=(LinkList *)malloc(sizeof
69、(LNode));//分配空間,增加1個結(jié)點</p><p> m->next=n;</p><p> strcpy(n->CardNum,CaNum);//記錄證號</p><p> n->next=NULL;</p><p><b> }</b></p><p>&l
70、t;b> int i=0;</b></p><p> for(i=0;i<Retotal;i++)//</p><p><b> {</b></p><p> if(!strcmp(Lin[i].CNum,CaNum))//如果已經(jīng)有該圖書證的信息</p><p><b> {
71、</b></p><p> p=Lin[i].next;</p><p> while(p->next)p=p->next;//遍歷到最后一個結(jié)點</p><p> q=(Bor *)malloc(sizeof(Boro));//分配空間</p><p> p->next=q;</p>&l
72、t;p> strcpy(q->BNum,BorrowNum); //記錄書號</p><p> printf("輸入歸還日期:");</p><p> scanf("%s",&q->RetDate);</p><p> q->next=NULL;</p><p&
73、gt; printf("借閱成功.\n");</p><p> break; //找到證了就跳出循環(huán)</p><p><b> }</b></p><p><b> }</b></p><p> if(i==Retotal)//如果沒有這張證的信息</p>
74、<p><b> {</b></p><p> strcpy(Lin[i].CNum,CaNum); //記錄證號</p><p> p=(Bor *)malloc(sizeof(Boro)); //分配空間</p><p> Lin[i].next=p;</p><p> strcpy(p-&g
75、t;BNum,BorrowNum);</p><p> printf("輸入歸還日期:");</p><p> scanf(" %s",&p->RetDate);</p><p> p->next=NULL;</p><p> Retotal++;
76、 //借閱證號信息總數(shù)加1</p><p> printf("借閱成功.\n");</p><p><b> }</b></p><p><b> }</b></p><p> else printf("借閱失敗.該書現(xiàn)在庫存為0.\n");<
77、/p><p><b> }</b></p><p><b> }</b></p><p> void Return(ook &boo,lend &Lin,char ReturnNum[],char BorrowerNum[])</p><p> {//4、 歸還:注銷對借閱者的登
78、記,改變該書的現(xiàn)存量。</p><p> Bor *p,*q;</p><p> LinkList *m,*n;</p><p> int flag=0;//設置一個參數(shù)</p><p> if(!BinarySearch(boo,ReturnNum)||!total) //沒書</p><p> pri
79、ntf("書庫中無此書.\n");</p><p> if(BinarySearch(boo,ReturnNum)) //有書</p><p><b> {</b></p><p> m=boo[mid].next;</p><p> if(!strcmp(m->CardNu
80、m,BorrowerNum)) //如果是第一個借的人還的</p><p><b> {</b></p><p> boo[mid].NowNum++; //現(xiàn)庫存加1</p><p> boo[mid].next=m->next; //刪除結(jié)點</p><p>
81、; free(m); //釋放該結(jié)點的空間空間</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> while(m->next)
82、 //查找歸還者的借閱者結(jié)點</p><p><b> {</b></p><p> if(!strcmp(m->next->CardNum,BorrowerNum)) //如果找到</p><p><b> {</b></p><p> n=m->next;
83、 //n為歸還者的借閱結(jié)點</p><p> m->next=n->next; //m指向歸還者的借閱結(jié)點的下一結(jié)點</p><p> free(n); //釋放空間</p><p> boo[mid].NowNum++; //現(xiàn)庫存加1</p><p><b> break;&
84、lt;/b></p><p><b> }</b></p><p> m=m->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b><
85、;/p><p> //在借閱者表里查找借閱者信息</p><p> for(int i=0;i<Retotal;i++)</p><p><b> {</b></p><p> if(!strcmp(Lin[i].CNum,BorrowerNum)) //如果找到借閱者</p><p&g
86、t;<b> {</b></p><p> p=Lin[i].next;</p><p> if(!strcmp(p->BNum,ReturnNum)) //如果是歸還的是借的第一本書</p><p><b> {</b></p><p> Lin[i].next=p->nex
87、t; //指向下一借書結(jié)點</p><p> free(p); //釋放結(jié)點空間</p><p> printf("成功歸還該書.\n");</p><p><b> flag=1;</b></p><p><b> break;</b><
88、;/p><p><b> }</b></p><p> else //找不到</p><p><b> {</b></p><p> while(p->next) //找到歸還書的借書結(jié)點</p><p><b> {</b>&l
89、t;/p><p> if(!strcmp(p->next->BNum,ReturnNum)) //如果找到</p><p><b> {</b></p><p> q=p->next; //q為歸還書的借書結(jié)點</p><p> p->next=q->next; //p指向下一借書結(jié)點
90、</p><p> free(q); //釋放空間</p><p> printf("成功歸還該書.\n");</p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b>
91、; }</b></p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
92、t;</p><p> for(int k=0;k<Retotal;k++)</p><p> if(!Lin[k].next)</p><p><b> {</b></p><p><b> int j;</b></p><p> for(j=k;j<
93、Retotal;j++)</p><p> Lin[j]=Lin[j+1]; //其后都往前移一位,覆蓋掉當前信息</p><p> strcpy(Lin[j].CNum," "); //刪除圖書證號</p><p> Retotal--; //圖書證數(shù)減1</p&
94、gt;<p> } //刪除當前狀態(tài)下沒借書的圖書證的信息,節(jié)省空間</p><p> if(flag==0) printf("無該證信息.\n");</p><p> }//5、 查找:實現(xiàn)按三種查詢條件之一查找:按書號查找、</p><p> //按書名查找、按作者查找。注:可不實現(xiàn)組合查找,即幾個條件組合查找。&l
95、t;/p><p> void SearchByNum(ook &boo,char SeaNum[])</p><p> {//BY NUM 根據(jù)書號查找</p><p> LinkList *p;</p><p> p=boo[mid].next;</p><p> if(BinarySearch(boo
96、,SeaNum)==false)printf("對不起,未找到您想查找的書。\n");//二分查找 沒找到</p><p> else//找到了的話</p><p><b> {</b></p><p><b> {</b></p><p> printf("┏
97、━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┓\n");</p><p> printf("┃ 書號 ┃ 書名 ┃ 作者 ┃ 出版社 ┃ 現(xiàn)庫存 ┃ 總庫存 ┃\n");</p><p> printf("┣━━━━━━━╋━
98、━━━━━━╋━━━━━━━━╋━━━━━━━━╋━━━━━╋━━━━━┫\n");</p><p> printf("┃%14s┃%14s┃%16s┃%16s┃%10d┃%10d┃\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].NowNum,boo[mid].TotNum);</p>
99、<p> printf("┗━━━━━━━┻━━━━━━━┻━━━━━━━━┻━━━━━━━━┻━━━━━┻━━━━━┛\n");</p><p> if(boo[mid].next!=NULL)</p><p> {printf("┏━━━━━━━┓\n");</p><p> printf("
100、;┃ 已借該書的 ┃\n");</p><p> printf("┃ 圖書證號 ┃\n");</p><p><b> while(p)</b></p><p><b> {</b></p><p> printf("┣━━━━━━━┫\n
101、");</p><p> printf("┃%14s┃\n",p->CardNum);</p><p> p=p->next;</p><p><b> }</b></p><p> printf("┗━━━━━━━┛\n");</p>
102、<p><b> }</b></p><p><b> }</b></p><p><b> while(p)</b></p><p><b> {</b></p><p> printf(" %s ",p-&g
103、t;CardNum);//在按書號查找的函數(shù)里也顯示借了這本書的借閱者的證號</p><p> p=p->next;</p><p><b> }</b></p><p> printf(" \n");</p><p> }//顯示查找的書籍的信息</p><p>
104、;<b> }</b></p><p> void SearchByName(ook &boo)</p><p> {//BY NAME 根據(jù)書名查找</p><p> char SeaName[20];</p><p> printf("輸入想查找的書的書名:\n");</p
105、><p> scanf(" %s",&SeaName);</p><p> printf("找到符合該書名的書的詳細信息如下:\n");</p><p> for(int i=0;i<total;i++)</p><p><b> {</b></p>
106、<p> if(strcmp(SeaName,boo[i].name)==0)//如果書名一樣</p><p><b> {</b></p><p> printf("書號:%s\n書名:%s\n作者:%s\n出版社:%s\n總庫存量:%d\n現(xiàn)庫存量:%d\n\n",boo[i].num,boo[i].name,boo[i].a
107、uth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);</p><p> }//顯示符合信息的所有書籍的信息</p><p><b> }</b></p><p><b> }</b></p><p> void SearchByAuth(ook &
108、boo)</p><p> {// BY AUTH 根據(jù)作者查找</p><p> char SeaAuth[20];</p><p> printf("輸入想查找的書的作者:\n");</p><p> scanf(" %s",&SeaAuth);</p><p&g
109、t; printf("找到符合該作者的書的詳細信息如下:\n");</p><p> for(int i=0;i<total;i++)</p><p><b> {</b></p><p> if(strcmp(SeaAuth,boo[i].auth)==0)//如果作者一樣</p><p&
110、gt;<b> {</b></p><p> printf("書號:%s\n書名:%s\n作者:%s\n出版社:%s\n總庫存量:%d\n現(xiàn)%d\n\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);</p><p> }//顯示符合信息
111、的所有書籍的信息</p><p><b> }</b></p><p> }//6、 查看:可查看某圖書證號的借閱者借閱的全部圖書,可查看全部超期未還的圖書。</p><p> void ViewCard(ook &boo,lend &Lin)</p><p> {//查看某圖書證號的借閱者借閱的
112、全部圖書</p><p> char Num[20];</p><p> printf("請輸入您所想要查看的圖書證號:\n");</p><p> scanf(" %s",&Num);</p><p><b> Bor *p;</b></p><
113、;p> int qqq=0;</p><p> for(int i=0;i<Retotal;i++)</p><p><b> {</b></p><p> if(strcmp(Lin[i].CNum,Num)==0) //找到該證</p><p><b> {</b><
114、;/p><p> printf("這個證借的書有:\n");</p><p> p=Lin[i].next;</p><p><b> while(p)</b></p><p><b> {</b></p><p> printf(" %s
115、 ",p->BNum); //書號</p><p> p=p->next;</p><p><b> }</b></p><p> printf("\n");</p><p><b> qqq=1;</b></p><p>
116、<b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(qqq==0)</p><p> printf("該證不存在.\n");</p><p>&
117、lt;b> }</b></p><p> void ViewBook(ook &boo,lend &Lin)</p><p> {//查看全部超期未還的圖書</p><p> char date[8];</p><p><b> Bor *p;</b></p>&
118、lt;p> printf("請輸入日期(請按格式20080101輸入):\n");</p><p> scanf(" %s",&date);</p><p> printf("所有超期未還的書有:\n");</p><p> for(int i=0;i<Retotal;i++)&
119、lt;/p><p><b> {</b></p><p> p=Lin[i].next;</p><p> while(p)//當p不空時</p><p><b> {</b></p><p> if(strcmp(p->RetDate,date)<0)
120、//超過日期</p><p><b> {</b></p><p> printf("書號為 %s 證號為 %s 應歸還日期為 %s \n",p->BNum,Lin[i].CNum,p->RetDate);</p><p> }//顯示所有超期未還的書的信息</p><
121、;p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void Menu() //菜單</p><p><b>
122、 {</b></p><p> printf("┏—————————————————M E N U————————————————┓\n");</p><p> printf("│ │\n
123、");</p><p> printf("│ 1. 采編入庫:新購入一種書,如果該書在圖書賬目中已經(jīng)存在, │\n");</p><p> printf("│ 則將其庫存量增加(包括總庫存量和現(xiàn)庫存量)。 │\n");</p>
124、<p> printf("│ 如果該書不存在,則在圖書賬目中增加一種書, │\n");</p><p> printf("│ 總庫存量和現(xiàn)庫存量均為輸入的數(shù)字。 │\n");</p><p>
125、 printf("│ 2. 清空庫存:某一種書已無保留價值,將它從圖書賬目中注銷。 │\n");</p><p> printf("│ 3. 借閱:如果一種書的現(xiàn)庫存量大于零,則借出一本書,將現(xiàn)庫存量減1, │\n");</p><p> printf("│ 并登記
126、借閱者的圖書證號和歸還期限。 │\n");</p><p> printf("│ 4. 歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。 │\n");</p><p> printf("│ 5. 按書號查找。
127、 │\n");</p><p> printf("│ 6. 按書名查找。 │\n");</p><p> printf("│ 7. 按作者查
128、找。 │\n");</p><p> printf("│ 8. 查看某圖書證號的借閱者借閱的全部圖書。 │\n");</p><p> printf("│ 9. 查
129、看全部超期未還的圖書。 │\n");</p><p> printf("│ 0. 退出圖書管理系統(tǒng)。 │\n");</p><p> printf("
130、│ │\n");</p><p> printf("┗—————————————請 選 擇 你 需 要 的 操 作————————————┛\n");</p><p><b> }</b>
131、;</p><p> void main()</p><p><b> { </b></p><p><b> ook Bo;</b></p><p><b> lend Lin;</b></p><p> char BNum[20];<
132、/p><p> char CNum[20];</p><p> printf("-----------------------歡 迎 進 入 圖 書 管 理 系 統(tǒng)!---------------------------\n\n");</p><p> int choice=10;</p><p> int Searc
133、hCho=10,ViewCho=10;</p><p> while(choice!=0)</p><p> { Menu();//顯示菜單</p><p> scanf(" %d",&choice);</p><p> switch(choice)</p><p> {case
134、1://采編入庫</p><p> printf("請輸入入庫的書的書號:");</p><p> scanf(" %s",BNum);</p><p> Buy(Bo,BNum);</p><p><b> break;</b></p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設計--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計
- c語言圖書館管理系統(tǒng)課程設計---高校圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計報告
- 圖書館管理信息------系統(tǒng)課程設計
- jsp課程設計《圖書館管理系統(tǒng)》
- sqlserver課程設計——圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計報告
- 軟件課程設計--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計報告
- vfp圖書館管理系統(tǒng)課程設計
- java課程設計----圖書館管理系統(tǒng)
- 圖書館系統(tǒng)課程設計
- javaweb課程設計——圖書館管理系統(tǒng)
- java課程設計——圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)mis課程設計
- 課程設計報告---圖書館管理系統(tǒng)
- 圖書館書籍管理系統(tǒng)課程設計
- java圖書館管理系統(tǒng)課程設計
- 圖書館管理系統(tǒng)_pb課程設計報告
評論
0/150
提交評論