




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-PAGE . z.-. z.城建學院課程設計報告書專業:計算機信息管理與信息系統課程設計名稱:數據結構課程設計題目:圖書借閱管理系統班級:信管二班設 計 者 學 號:083215203設 計 者 姓 名:耿曉業同組人員:利指導老師:延紅完成時間:2016年6月10日摘 要隨著信息技術的迅猛發展,信息化已經滲透到社會生活的各個領域和各個層面,并日益成為提高效率,消除差錯,節約成本的有效途徑。20世紀60年代以來,在微電子技術和通信技術迅速發展的推動下,圖書館圖書借閱管理也充分利用軟件來進行管理,其目標是借助先進的信息處理技術和計算機網絡技術來提高圖書管理的效率和質量,將管理與辦公活動納入到自動
2、化,現代化的軌道中。各大中小學圖書館中傳統的圖書借閱管理模式也越來越不能滿足現代教育發展的需要。對于一個有著成百上千的學生的學校來說,用手工管理數以千計圖書的借閱以及歸還,是一項非常繁瑣的工作,而相應的階段性盤點圖書、圖書查詢等,其工作量都讓人望而生畏,而且還極易出錯。所以我們提出了開發圖書館圖書借閱管理系統,采取會員制的方式進行會員管理,包括增加會員,查詢會員,刪除會員,會員借書信息等。另外采取圖書流通借還管理,對圖書查詢借閱,增加圖書,刪除圖書等功能進行統一管理,為各大中小學實現圖書館信息化管理提供有效工具。本系統采用數據結構,C+程序設計語言,系統開發平臺為Windows *P,使用Vi
3、sual C+6.0進行程序設計開發,本系統是各大中小學實現圖書館信息化管理的有效工具,同時本系統中采用的新技術可作為其他信息系統構建時的參考。關鍵詞:數據結構;算法設計;C+程序設計語言;-. z.目錄 TOC o 1-3 h z u HYPERLINK l _Toc453500934目錄 PAGEREF _Toc453500934 h 1HYPERLINK l _Toc453500935第一章開發環境和開發工具 PAGEREF _Toc453500935 h 3HYPERLINK l _Toc4535009361.1C+簡介 PAGEREF _Toc453500936 h 3HYPERLI
4、NK l _Toc4535009371.2 開發背景 PAGEREF _Toc453500937 h 3HYPERLINK l _Toc4535009381.3 開發環境 PAGEREF _Toc453500938 h 4HYPERLINK l _Toc453500939第二章算法思想 PAGEREF _Toc453500939 h 5HYPERLINK l _Toc4535009402.1 系統需求分析 PAGEREF _Toc453500940 h 5HYPERLINK l _Toc453500941會員管理功能 PAGEREF _Toc453500941 h 5HYPERLINK l _
5、Toc453500942圖書管理功能 PAGEREF _Toc453500942 h 6HYPERLINK l _Toc4535009432.2 系統總體設計 PAGEREF _Toc453500943 h 6HYPERLINK l _Toc4535009442.2.1 系統設計目標 PAGEREF _Toc453500944 h 6HYPERLINK l _Toc4535009452.2.2 開發設計思想 PAGEREF _Toc453500945 h 7HYPERLINK l _Toc4535009462.2.3 系統功能模塊設計 PAGEREF _Toc453500946 h 7HYPE
6、RLINK l _Toc4535009472.3 算法思想描述 PAGEREF _Toc453500947 h 11HYPERLINK l _Toc453500948第三章算法實現 PAGEREF _Toc453500948 h 12HYPERLINK l _Toc4535009493.1 數據結構 PAGEREF _Toc453500949 h 12HYPERLINK l _Toc4535009503.2 程序模塊 PAGEREF _Toc453500950 h 13HYPERLINK l _Toc4535009513.3 各模塊之間的調用關系 PAGEREF _Toc453500951 h
7、 14HYPERLINK l _Toc4535009523.4 源程序代碼 PAGEREF _Toc453500952 h 14HYPERLINK l _Toc453500953第四章測試與分析 PAGEREF _Toc453500953 h 32HYPERLINK l _Toc4535009544.1 測試數據選擇 PAGEREF _Toc453500954 h 32HYPERLINK l _Toc4535009554.2 測試結果分析 PAGEREF _Toc453500955 h 32HYPERLINK l _Toc453500956總結 PAGEREF _Toc453500956 h
8、36HYPERLINK l _Toc453500957心得體會 PAGEREF _Toc453500957 h 37HYPERLINK l _Toc453500958參考文獻 PAGEREF _Toc453500958 h 38開發環境和開發工具C+簡介C+是一種面向對象的開發語言,是一種使用非常廣泛的計算機編程語言。他是在C語言的基礎上開發的一種面向對象編程語言,應用廣泛。C+支持靜態數據類型檢查的,支持多重編程式的通用程序設計語言,支持過程化程序設計、數據抽象、面向對象程序設計、制作圖標等等泛型程序設計等多種程序設計風格。語言靈活,運算符的數據結構豐富、具有結構化控制語句、程序執行效率高,
9、而且同時具有高級語言與匯編語言的優點,與其它語言相比 ,可以直接訪問物理地址,與匯編語言相比又具有良好的可讀性和可移植性。其編程領域眾廣,常用于系統開發,引擎開發等應用領域,是至今為止最受廣大程序員受用的最強大編程語言之一,且支持封裝、繼承、多態等特性!1.2 開發背景 隨著科學技術的不斷發展,計算機科學日漸成熟,計算機知識的普及使更多用戶懂得利用計算機為自己的工作,生活提供方便。計算機其強大的功能已為人們所深刻認識,它己進入人類社會的各個領域并發揮著越來越重要的作用。采用計算機進行信息化管理已成為衡量高校圖書管理科學化和現代化的重要標志,而圖書館圖書借閱管理的全面自動化、信息化則是其中重要的
10、組成部分。本系統是以建立一個以通過計算機數據管理圖書借閱系統為目的,以用戶瀏覽圖書信息的系統。本系統具有靈活、方便、快捷、界面友好等優點,更加方便的在線了解圖書信息,以及借閱圖書。本系統研究的課題主要意義是通過完成這個圖書管理系統,方便管理者的管理以及用戶所需要查詢的書籍,使大家在盡可能短的時間完成對所需要圖書的借閱。大大的方便了用戶的需求在很大程度上提升了高校的教學水平。因此,本文所研究的圖書館借閱管理信息系統具有一定的使用價值和現實意義。1.3 開發環境軟件平臺是信息系統開發和運行所需的集成軟件環境,設計和選擇高效、實用、方便、功能齊全的軟件平臺,對信息系統的開發具有十分重要的意義。在結合
11、實際開發的需要并充分考慮各種軟件平臺的性能及適用圍和對軟件平臺的使用能力,本系統的軟件平臺選擇如下: (1)操作系統 操作系統是計算機系統中最重要的系統軟件,目前在微機上使用的桌面操作系統有Windows 95/98/2000/me/*p/2003server等,可運行于前面所列舉的各種操作系統,但建議使用Windows 2000以上系統。本系統在Windows *P操作系統下進行開發。 (2)支撐軟件 支撐軟件是協助人們開發和維護軟件的工具和環境軟件,包括編輯程序,數據庫系統,集成開發環境等,本系統的支撐軟件如下: 系統運行環境:visual C+6.0系統編程語言:C/C+程序設計語言第二
12、章 算法思想隨著計算機技術的飛速發展,采用計算機進行信息化管理已成為衡量高校圖書管理科學化和現代化的重要標志。為了減少工作人員的工作量,提高各個環節的工作效率,優化人師生的學習環境,我們需要研究一個高效快捷的圖書借閱管理系統。本系統是以建立一個以通過計算機數據管理圖書借閱系統為目的,以用戶瀏覽圖書信息的系統。該系統的功能強大,其具有良好的界面,操作方便靈活、簡潔高效。具有良好的健壯性,以會員制為主要借還書手段,各種功能設置方便圖書管圖書借閱管理。2.1 系統需求分析2.1.1會員管理功能(1)添加會員:輸入會員編號、會員,進行會員添加,添加成功顯示添加完畢。此功能可連續添加。新用戶經注冊方可登
13、錄系統并使用讀者服務功能。(2)查詢會員:輸入查詢的會員編號,如果存在該會員,則會顯示該會員信息,包括會員編號,會員,已借出的圖書數為幾本;如果查詢的會員編號不存在,則顯示沒找到指定會員。(3)刪除會員:請輸入要刪除的會員的編號,如果輸入的會員編號不存在,則顯示沒有找到要刪除的會員編號。系統會提示你還有會員要刪除嗎?輸入Y,則可以繼續輸入想要刪除的會員編號,并進行刪除,如果不想在進行刪除的話,可以選擇N,進行刪除會員結束操作,退回主界面。(4)載入數據:實現數據載入功能。(5)保存功能:能將記錄保存在任何自定義的文件中。(6)退出程序:如果想要退出程序,系統會提示警告: 程序結束后未存儲的數據
14、將消失確定要退出嗎(Y/N),選擇y,則直接退出程序。2.1.2圖書管理功能(1)增加圖書:增加新的圖書資料,同時需檢查新書的圖書編號是否已存在于原圖書資料中,若已存在則顯示這類書已有庫存,可輸入圖書的入庫量進行添加圖書操作;如果該類圖書為第一次進行添加,則應該輸入該圖書的圖書編號,圖書的名稱,以及圖書的入庫量,輸入完畢則圖書添加完畢,可繼續選擇是否繼續添加。(2)查詢圖書:查詢圖書時需要輸入查詢的圖書編號,如果該圖書存在則會顯示該圖書的圖書編號,圖書名稱,該圖書的庫存量以及圖書的借出量。其中圖書的庫存量以及圖書的借出量均可以累加。如果該圖書已經被借出,則查詢結果顯示圖書庫存量以及圖書的借出量
15、。(3)刪除圖書:通過圖書編號查詢該圖書資料,若該編號存在,允許刪除,否則提示沒有找到你所要的圖書。刪除對象包括該圖書資料以及圖書狀態”和借閱人”中與此書相關的所有記錄。一旦進行刪除成功,則所有該圖書信息都將不存在。(4)借書處理:如果需要進行借書操作,則必須保證該借書者已經進行過會員注冊,借書操作需要輸入要借出的書號,以及會員編號,如果會員編號輸入錯誤,則顯示會員編號輸入錯誤,外借失敗;如果輸入要借出的書號進行借書操作,則系統會顯示該編號圖書的現有庫存量,如果沒有查詢到該圖書的編號則顯示沒有找到要借出的圖書,如果借出成功,顯示外借成功。(5)還書處理: 如果需要進行還書操作,則必須保證該借書
16、者是會員,還書操作需要輸入要借出的書號,以及會員編號,如果會員編號輸入錯誤,則顯示會員編號輸入錯誤,還書失敗;如果輸入要借出的書號進行借書操作,則系統會顯示該編號圖書的現有庫存量,如果沒有查詢到該圖書的編號則顯示沒有找到要借出的圖書,如果還書成功,而顯示歸還成功。2.2 系統總體設計2.2.1 系統設計目標 本文研究開發的圖書借閱管理系統用于支持高校完成圖書館圖書借閱工作,有如下三個方面的目標:支持圖書館實現規化的管理。支持圖書館高效率完成圖書館增加圖書以及會員借還書管理的日常業務,包括圖書借閱管理系統的兩大功能:(1)圖書管理(增加圖書、查詢圖書、刪除圖書、圖書借閱、還書)(2)會員管理(增
17、加會員、查詢會員、刪除會員、借書信息) 支持圖書館實現無紙化辦公,方便快捷,提高圖書館的管理效率,便利師生進入圖書館進行學習。2.2.2 開發設計思想 基于以上系統設計目標,本文在圖書館圖書借閱管理系統時遵循了以下開發設計思想:采用現有的軟硬件環境及先進的管理系統開發方案,從而達到充分利用現有資源,提高系統開發水平和應用效果的目的。盡量達到操作過程中的直觀、方便、實用、安全等要求。系統采用模塊化程序設計方法,既便于系統功能的各種組合和修改,又便于未參與開發的技術維護人員補充、維護。系統應具備數據維護功能,及時根據用戶需求進行數據的添加、刪除、修改、備份等操作。2.2.3 系統功能模塊設計本系統
18、開發的意圖是借由網絡化的管理減輕圖書館工作人員的工作量,全面提高圖書館的管理效率及服務質量。實現兩方面的功能,這兩個方面分別是圖書管理和會員管理。(1)圖書管理(增加圖書、查詢圖書、刪除圖書、圖書借閱、還書);(2)會員管理(增加會員、查詢會員、刪除會員、借書信息)。圖書借閱管理系統主要包括以下功能模塊,如圖所示。系統功能模塊圖2.3 算法思想描述本項目的實質是完成對學生成績信息的建立、查找、插入、修改、刪除等功能,可以首先定義項目的數據結構,然后將每個功能寫成一個函數來完成對數據的操作,最后完成主函數以驗證各個函數功能并得出運行結果。該程序的由多種函數實現,每個函數具有不同的功能,主要有主菜
19、單函數,插入功能子菜單函數,查找功能子菜單函數,會員信息錄入函數,顯示函數,排序函數,插入函數以及查找函數。在每個區域中會調用不同的函數來實現主要的功能比如,在新增功能里調用子菜單函數;在顯示信息時調用排序函數先對需要輸出的信息進行排序,然后再輸出;在查找功能里會調用查找函數來進行查找。而最主要的函數有添加圖書:考慮到圖書的信息較多,所以用結構體對其定義。又考慮到圖書量大,所以添加后要保存到文件中去。圖書查詢:用所學過的順序查找法來寫。刪除圖書:把保存到文件中的容寫到鏈表中去,用鏈表刪除結點的方法來刪除圖書。我們所學過的指針這時正好用上。最后把各函數同主函數相連,用主函數調用它們,主要函數如下
20、: 插入函數,它用插入排序來實現;查找函數,用順序查找法;刪除函數, 用鏈表刪除結點的方法算法實現3.1 數據結構要完成這個題目,主要是建立解決圖書和會員的信息的存儲,解決的方法是建立兩個帶頭結點的單鏈表,分別用于存儲圖書和會員。解決了這個問題后就是如何建立這兩個鏈表的聯系了,解決的方法是在圖書結點中設一個借書人編號,在會員結點中設一個數組用于存會員借的書。解決了這兩個問題,剩下的工作就簡單了。只需按鏈表的操作就可以了。以會員管理為例,本項目的數據是一組會員的借閱信息,每條學生的借閱信息由會員編號、會員和組成,這組會員的借閱信息具有相同特性,屬于同一數據對象,相鄰數據元素之間存在序偶關系。由此
21、可以看出,這些數據具有線性表中數據元素的性質,所以該系統的數據采用線性表來存儲。 順序表是線性表的順序存儲結構,是指用一組連續的存單元依次存放線性表的數據元素。在順序存儲結構下,邏輯關系相鄰的兩個元素在物理位置上也相鄰,這是順序表的特點。本項目可以采用順序表的線性表順序存儲結構。 若一個數據元素僅占一個存儲單元,第i個數據元素的地址為Loc(ai)=loc(a1)+(i-1) 假設線性表中每個元素占用k個存儲單元,則在順序表中,線性表的第i個元素的存儲位置與第1個元素的存儲位置的關系是 Loc(ai)=loc(a1)+(i-1)*k 這里Loc(ai)是第i個元素的存儲位置,loc(a1)是第
22、1個元素的存儲位置,也稱為線性表的基址。顯然,順序表便于進行隨機訪問,故線性表的順序存儲結構是一種隨機存儲結構。 順序表適宜于做查找這樣的靜態操作;順序存儲的優點是存儲密度大,存儲空間利用率高。缺點是插入或刪除元素時不方便。 由于C語言的數組類型也有隨機存儲的特點,一維數組的機表示就是順序結構。因此,可用C語言的一維數組實現線性表的順序存儲。數組實現線性表的順序存儲的優點是可以隨機存取表中任一元素O(1),存儲空間使用緊湊;缺點是在插入,刪除*一元素時,需要移動大量元素O(n),預先分配空間需按最大空間分配,利用不充分,表容量難以擴充。用結構體類型定義每個會員數據,故該數組中的每個數據的結構可
23、描述為:typedef struct MemberInfo/會員結構long m_Code; /會員編號char m_Name20; /會員名字int l_Codes6; /已借書的編號,最多5 MemberInfo* ne*tmember; /下一會員 MemberInfo; 3.2 程序模塊頭文件及散列定義關鍵字#include #include #include #define NULL 0 定義圖書結構類型typedef struct BookInfo/圖書結構int b_Code; /圖書編號char b_Name20; /名稱int b_Total; /總數int b_Out; /
24、借出數BookInfo* ne*tbook; /下一類圖書 BookInfo;3.3 各模塊之間的調用關系模塊部的具體算法,包括輸入、處理和輸出,相當于c+語言的過程或函數設計。整體算法描述:建立一個結構來存放學生信息,再將這個結構存放在文件中,按要求通過調用各個函數對文件的數據進行操縱及處理。各個分函數算法描述:由主函數調用建立一個新的文件用于存儲圖書以及會員記錄。3.4 源程序代碼#include #include #include #define NULL 0 typedef struct BookInfo/圖書結構int b_Code; /圖書編號char b_Name20; /名稱i
25、nt b_Total; /總數int b_Out; /借出數BookInfo* ne*tbook; /下一類圖書 BookInfo; typedef struct MemberInfo/會員結構long m_Code; /會員編號char m_Name20; /會員名字int l_Codes6; /已借書的編號,最多5 MemberInfo* ne*tmember; /下一會員 MemberInfo; typedef struct System/管理系統結構 BookInfo* BI; MemberInfo* MI; int BookTotal; /圖書類庫存量int MemberTota;
26、/會員數量System; System* InitSystem();/ 系統初始化 void AddBook(System*);/增加圖書 BookInfo* SearchBook(System*,int);/查詢圖書信息 void DelBook(System*);/刪除圖書 void BrrowBook(System*);/借書處理 void TurnBackBook(System*);/還書處理 void AddMember(System*);/添加會員 void DelMember(System*);/刪除會員 MemberInfo* SearchMember(System*,int)
27、;/查詢會員信息 void StoreData(System*); /定義一個空的數據存儲(系統) void LoadData(System*); /加載所有數據 void E*itSystem(); /退出程序 void main() System* S=InitSystem(); int sel; docoutntttt圖書借閱管理系統主界面endl; couttttendl; coutttt 1.增加圖書. tendl;coutttt 2.查詢圖書. tendl;coutttt 3.刪除圖書. tendl;coutttt 4.借書處理. tendl;coutttt 5.還書處理. ten
28、dl;coutttt 6.添加會員. tendl;coutttt 7.刪除會員. tendl;coutttt 8.查詢會員. tendl;coutttt 9.載入數據. tendl;coutttt 10.保存數據. tendl;coutttt 11.退出程序tendl;couttttendl; coutsel; if(sel=1&sel=11)break; /選擇1到11cout選擇錯誤!n重新輸入BI=(BookInfo*)malloc(sizeof(BookInfo); /圖書信息初始化,sizeof是C/C+中的一個操作符(operator),簡單的說其作用就是返回一個對象或者類型所占的
29、存字節數S-BookTotal=0; /圖書數量初始為0S-BI-ne*tbook=NULL; /下一類圖書信息初始為空S-MI=(MemberInfo*)malloc(sizeof(MemberInfo); /初始化會員信息S-MemberTota=0; /圖書總數初始為0 S-MI-ne*tmember=NULL; /下一個會員信息初始為空return S; void AddBook(System* S) /添加圖書模塊 int Tempcode; /圖書編號char sel; /查詢該圖書編號是否已存在BookInfo* p=S-BI; /p指向圖書結構BookInfo* t; /添加的
30、圖書庫存沒有BookInfo* m; /添加的圖書庫存已有int num; /入庫量do coutTempcode; if(m=SearchBook(S,Tempcode) /圖書編號庫存已有 cout這類書已有庫存.n輸入圖書的入庫量:num; m-b_Total+=num; /*圖書數量累加。m-b_Total間接引用運算符,表達式m-b_Total引用了指針m指向的結構體的成員b_Total。*/ else t=(BookInfo*)malloc(sizeof(BookInfo); /在圖書信息中定義一個t的存空間t-b_Code=Tempcode; /*添加的圖書編號與庫存已有。間接引
31、用運算符,表達式t-b_Code引用了指針t指向的結構體的成員b_Code。*/coutt-b_Name; coutt-b_Total; t-b_Out=0; /圖書借出量為0 t-ne*tbook=p-ne*tbook; p-ne*tbook=t; S-BookTotal+; /圖書總數 cout添加完畢!endl; coutsel; if(sel=n|sel=N) cout結束添加BI-ne*tbook; /下一本圖書int bookcode; /圖書編號if(code=-1) coutbookcode; /輸入圖書編號 else bookcode=code; while(bi&bi-b_
32、Code!=bookcode)bi=bi-ne*tbook; /判斷輸入圖書編號于庫存中的*個編號是否相等if(code=-1) if(!bi)/如果庫存中沒有此編號cout沒找到你所要的圖書.endl; else /庫存中有此編號,顯示信息 cout圖書編號為:b_Codeendl; cout圖書名稱為:b_Nameendl; cout圖書庫存量為:b_Totalendl; cout圖書借出量為:b_OutBI;/定義一個系統中指向圖書管理的plMemberInfo* memi; /會員結構中定義一個memichar sel; int tempcode; /輸入的圖書編號int i; do
33、pl=S-BI; /間接引用運算符,表達式S-BI引用了指針s指向的結構體的成員BI。bi=pl-ne*tbook; /下一本圖書 memi=S-MI-ne*tmember; /下一個會員couttempcode;/輸入要刪除的圖書編號 while(bi) if(bi-b_Code=tempcode)/圖書存在直接刪除cout刪除圖書成功ne*tbook; if(bi=0)/圖書編號不存在cout沒有找到要刪除的圖書ne*tbook=bi-ne*tbook; S-BookTotal-; while(memi) for(i=1;il_Codes0;i+)if(memi-l_Codesi=temp
34、code)break; if(il_Codes0) for(;il_Codes0;i+)memi-l_Codesi=memi-l_Codesi+1; memi-l_Codes0-; memi=memi-ne*tmember; free(bi); coutsel; if(sel=N|sel=n) cout刪除圖書結束BI-ne*tbook; BookInfo* p; char sel; int memcode; MemberInfo* mp; int tempcode; do couttempcode; p=SearchBook(S,tempcode); if(!p) cout沒有找到要借出的圖
35、書.endl; else cout此書的現存量為b_Total-p-b_Out)b_Total-p-b_Out)cout沒有足夠的書了,外借失敗.endl; else coutmemcode; mp=SearchMember(S,memcode); if(!mp)cout會員編號輸入錯誤,外借失敗l_Codes0=5)coutb_Out+; mp-l_Codes+mp-l_Codes0=tempcode; cout外借成功.endl; coutsel; if(sel=N|sel=n) cout外借操作結束.BI-ne*tbook; BookInfo* p; MemberInfo* mp; in
36、t membercode; int tempcode; int i; char sel; do couttempcode; p=SearchBook(S,tempcode); if(!p) cout書號輸入錯誤.endl; else cout此書的現存量為b_Total-p-b_Out)endl; coutmembercode; if(!(mp=SearchMember(S,membercode)cout會員編號輸入錯誤,歸還失敗b_Out-; for(i=1;il_Codes0;i+) if(mp-l_Codesi=tempcode)break; while(il_Codes0) mp-l_
37、Codesi=mp-l_Codesi+1; i+; mp-l_Codes0-; cout歸還成功.endl; coutsel; if(sel=N|sel=n) cout歸還結束.MI; MemberInfo* t; do coutTempcode; t=(MemberInfo*)malloc(sizeof(MemberInfo); t-m_Code=Tempcode; coutt-m_Name; t-l_Codes0=0; t-ne*tmember=p-ne*tmember; p-ne*tmember=t; S-MemberTota+; cout添加完畢!endl; coutsel; if(s
38、el=n|sel=N) cout結束添加MI-ne*tmember; int membercode; int i; if(code=-1) coutmembercode; else membercode=code; while(bi&bi-m_Code!=membercode)bi=bi-ne*tmember; if(code=-1) if(!bi)cout沒找到指定會員.endl; else cout會員編號為:m_Codeendl; cout名稱為:m_Nameendl; cout已借的圖書有:l_Codes0本.endl; for(i=1;il_Codes0;i+) coutl_Code
39、si ; coutMI-ne*tmember; pl=S-MI; couttempcode; while(bi) if(bi-m_Code=tempcode)break; pl=bi; bi=bi-ne*tmember; if(!bi)coutne*tmember=bi-ne*tmember; S-MemberTota-; for(i=1;il_Codes0;i+) if(!(book=SearchBook(S,bi-l_Codesi) cout刪除會員出錯!b_Out-; book-b_Total-; free(bi); coutsel; if(sel=N|sel=n) cout刪除會員結束
40、BI-ne*tbook; if(!(fp=fopen(BookSys,wb) cout打開文件BookSys失敗!BookTotal),sizeof(int),1,fp); while(bi) fwrite(bi,sizeof(BookInfo),1,fp); bi=bi-ne*tbook; MemberInfo* mi=S-MI-ne*tmember; fwrite(&(S-MemberTota),sizeof(int),1,fp); while(mi) fwrite(mi,sizeof(MemberInfo),1,fp); mi=mi-ne*tmember; fclose(fp); voi
41、d LoadData(System* S)/載入數據 FILE* fp; if(!(fp=fopen(BookSys,rb) cout打開文件BookSys失敗BI; BookInfo* tempbi; fread(&(S-BookTotal),sizeof(int),1,fp); for(int i=1;iBookTotal;i+) tempbi=(BookInfo*)malloc(sizeof(BookInfo); fread(tempbi,sizeof(BookInfo),1,fp); bi-ne*tbook=tempbi; bi=tempbi; bi-ne*tbook=NULL; Me
42、mberInfo* mi=S-MI; MemberInfo* tempmi; fread(&(S-MemberTota),sizeof(int),1,fp); for(i=1;iMemberTota;i+) tempmi=(MemberInfo*)malloc(sizeof(MemberInfo); fread(tempmi,sizeof(MemberInfo),1,fp); mi-ne*tmember=tempmi; mi=tempmi; mi-ne*tmember=NULL; fclose(fp); void E*itSystem()/退出程序 char select; cout警告: 程
43、序結束后未存儲的數據將消失.endl; coutselect; if(select=y|select=Y)e*it(0); /退出if(select=n|select=N)return; 測試與分析4.1 測試數據選擇 功能測試:1.增加圖書. 2.查詢圖書.3.刪除圖書. 4.借書處理. 5.還書處理.6.添加會員.7.刪除會員.8.查詢會員.9.載入數據.10.保存數據. 11.退出程序。4.2 測試結果分析圖書管理系統主界面:包含該系統所有功能提示,如圖4.2.1所示增加圖書操作界面:如果該類圖書為第一次進行添加,則應該輸入該圖書的圖書編號,圖書的名稱,以及圖書的入庫量為多少,輸入完畢則
44、圖書添加完畢;若已存在則顯示這類書已有庫存,可輸入圖書的入庫量進行添加圖書操作。如圖4.2.2所示查詢圖書操作界面:查詢圖書時需要輸入查詢的圖書編號,如果該圖書存在則會顯示該圖書的圖書編號,圖書名稱,該圖書的庫存量以及圖書的借出量。如圖4.2.3所示借書操作界面,保證借書者是會員,并且所借圖書有庫存,借書時需要輸入會員編號和圖書編號。如果沒有查詢到該圖書的編號則顯示沒有找到要借出的圖書,如果會員編號輸入錯誤,則顯示會員編號輸入錯誤,外借失敗;如圖4.2.4及圖4.2.5所示還書操作界面: 如果需要進行還書操作,則必須保證該借書者已經進行過會員注冊,還書操作需要輸入要借出的書號,以及會員編號,如
45、果會員編號輸入錯誤,則顯示會員編號輸入錯誤,還書失敗。正確則顯示還書成功并顯示圖書信息如圖4.2.6所示查詢圖書操作界面:查詢圖書時需要輸入查詢的圖書編號,如果該圖書存在則會顯示該圖書的圖書編號,圖書名稱,該圖書的庫存量以及圖書的借出量。其中圖書的庫存量以及圖書的借出量均可以累加。如果該圖書已經被借出,則查詢結果顯示圖書庫存量以及圖書的借出量。如圖4.2.7所示刪除圖書操作界面:通過圖書編號查詢該圖書資料,若該編號存在,允許刪除,否則提示沒有找到你所要的圖書。刪除對象包括該圖書資料以及圖書狀態”和借閱人”中與此書相關的所有記錄。一旦進行刪除成功,則所有該圖書信息都將不存在。如圖4.2.8所示總
46、 結圖書借閱系統的實現與設計,這個題目相對來說貼近生活,比較容易理解。但是設計一個較為完整的程序卻不是這么簡單的。首先我分析了相關的題目容,并由此而進行了相關資料和書籍的查詢工作然后才開始正式進行設計。一開始不知從何下手但后來分析了一下題目,并結合這學期所學的知識,再加上相關提示我決定用指針、鏈表和文件的容來編寫程序。圖書管理主要就是有一些操作來完成,這些操作包括:新進圖書基本信息的輸入、圖書基本信息的查詢、對撤消圖書信息的刪除、為借書人辦理注冊、辦理借書手續(非注冊會員不能借書)、辦理還書手續等等。我想這正好用C+的知識來實現函數。在具體編寫程序時考慮到圖書的相關操作與會員基本相同,所以實際上只要編寫前三個函數。添加圖書:考慮到圖書的信息較多,所以用結構體對其定義。又考
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空發動機維修技術革新2025年市場前景與成本優化報告
- 2025年江西省中考歷史真題(解析版)
- 公司大小周休息管理制度
- 旅游安全生產管理制度
- 公司資料防外泄管理制度
- 公司員工洗澡間管理制度
- 施工現場積分管理制度
- 天然氣銷售定價管理制度
- 亞馬遜公司運營管理制度
- 旅游規劃公司管理制度
- 110kv升壓站施工組織設計
- “安全生產課件:如何預防工傷事故”
- 《教育學原理》馬工程教材第二章教育與社會發展
- 西藏農村公路管理辦法
- 野外生存優秀課件
- 國際投資學教程(第四版)綦建紅答案
- 福建省福州市福建師大附中2023年自主招生樣卷--數學試卷
- GB/T 16622-2022壓配式實心輪胎規格、尺寸與負荷
- GB/T 3620.1-2016鈦及鈦合金牌號和化學成分
- GB/T 2878.2-2011液壓傳動連接帶米制螺紋和O形圈密封的油口和螺柱端第2部分:重型螺柱端(S系列)
- GB/T 23858-2009檢查井蓋
評論
0/150
提交評論