圖書借閱管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁(yè)
圖書借閱管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁(yè)
圖書借閱管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁(yè)
圖書借閱管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁(yè)
圖書借閱管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河南城建學(xué)院課程設(shè)計(jì)報(bào)告書專 業(yè):計(jì)算機(jī)信息管理與信息系統(tǒng) 課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目:圖書借閱管理系統(tǒng)班級(jí):信管二班設(shè)計(jì)者學(xué)號(hào):083215203設(shè)計(jì)者姓名:耿曉業(yè) 同組人員:劉利指導(dǎo)老師:張延紅 完成時(shí)|0j: 2016年6月10日摘要隨著信息技術(shù)的迅猛發(fā)展,信息化已經(jīng)滲透到社會(huì)生活的各個(gè)領(lǐng)域和各個(gè)層面, 并日益成為提高效率,消除差錯(cuò),節(jié)約成本的有效途徑。20世紀(jì)60年代以來(lái),在微 電子技術(shù)和通信技術(shù)迅速發(fā)展的推動(dòng)下,圖書館圖書借閱管理也充分利用軟件來(lái)進(jìn)行 管理,其目標(biāo)是借助先進(jìn)的信息處理技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)來(lái)提高圖書管理的效率和 質(zhì)量,將管理與辦公活動(dòng)納入到自動(dòng)化,現(xiàn)代化的軌道中

2、。各大中小學(xué)圖書館中傳統(tǒng)的圖書借閱管理模式也越來(lái)越不能滿足現(xiàn)代教育發(fā)展 的需要。對(duì)于一個(gè)有著成百上千的學(xué)生的學(xué)校來(lái)說(shuō),用手工管理數(shù)以千計(jì)圖書的借閱 以及歸還,是一項(xiàng)非常繁瑣的工作,而相應(yīng)的階段性盤點(diǎn)圖書、圖書查詢等,其工作 量都讓人望而生畏,而且還極易出錯(cuò)。所以我們提出了開發(fā)圖書館圖書借閱管理系統(tǒng), 采取會(huì)員制的方式進(jìn)行會(huì)員管理,包括增加會(huì)員,查詢會(huì)員,刪除會(huì)員,會(huì)員借書信 息等。另外采取圖書流通借還管理,對(duì)圖書查詢借閱,增加圖書,刪除圖書等功能進(jìn) 行統(tǒng)一管理,為各大中小學(xué)實(shí)現(xiàn)圖書館信息化管理提供有效工具。本系統(tǒng)采用數(shù)據(jù)結(jié) 構(gòu),C+程序設(shè)計(jì)語(yǔ)言,系統(tǒng)開發(fā)平臺(tái)為Windows XP,使用Visu

3、al C+6. 0進(jìn)行程序 設(shè)計(jì)開發(fā),本系統(tǒng)是各大中小學(xué)實(shí)現(xiàn)圖書館信息化管理的有效工具,同時(shí)本系統(tǒng)中采 用的新技術(shù)可作為其他信息系統(tǒng)構(gòu)建時(shí)的參考。關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);算法設(shè)計(jì);C+程序設(shè)計(jì)語(yǔ)言;目錄1第一章開發(fā)環(huán)境和開發(fā)工具31.1 C+簡(jiǎn)介312 J 1 31.3 開發(fā)環(huán)境4第二章算法思想2. 1系統(tǒng)需求分析51.1 .1會(huì)員管理功能.51.2 . 2圖書管理功能.61.3 系統(tǒng)總體設(shè)計(jì)61.3.1 系統(tǒng)設(shè)計(jì)目標(biāo).61.3.2 開發(fā)設(shè)計(jì)思想.72. 2 3系統(tǒng)功能模塊設(shè)計(jì).723 11第三章算法實(shí)現(xiàn)1231 1232 133.3各模塊之間的調(diào)用關(guān)系1434 14第四章測(cè)試與分析324.2測(cè)試結(jié)

4、果分析3237總 結(jié)36心得體會(huì)38參考文獻(xiàn)18第一章開發(fā)環(huán)境和開發(fā)工具1.1 C+簡(jiǎn)介C+是一種面向?qū)ο蟮拈_發(fā)語(yǔ)言,是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。 他是在c語(yǔ)言的基礎(chǔ)上開發(fā)的一種面向?qū)ο缶幊陶Z(yǔ)言,應(yīng)用廣泛。C+支持靜態(tài) 數(shù)據(jù)類型檢查的,支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言,支持過(guò)程化程序設(shè)計(jì)、 數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、制作圖標(biāo)等等泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。 語(yǔ)言靈活,運(yùn)算符的數(shù)據(jù)結(jié)構(gòu)豐富、具有結(jié)構(gòu)化控制語(yǔ)句、程序執(zhí)行效率高,而 且同時(shí)具有高級(jí)語(yǔ)言與匯編語(yǔ)言的優(yōu)點(diǎn),與其它語(yǔ)言相比,可以直接訪問(wèn)物理 地址,與匯編語(yǔ)言相比乂具有良好的可讀性和可移植性。其編程領(lǐng)域眾廣,常用 于系統(tǒng)開發(fā)

5、,引擎開發(fā)等應(yīng)用領(lǐng)域,是至今為止最受廣大程序員受用的最強(qiáng)大編 程語(yǔ)言之一,且支持封裝、繼承、多態(tài)等特性!1.2 開發(fā)背景隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)科學(xué)日漸成熟,計(jì)算機(jī)知識(shí)的普及使更多用 戶懂得利用計(jì)算機(jī)為自己的工作,生活提供方便。計(jì)算機(jī)其強(qiáng)大的功能已為人們所深 刻認(rèn)識(shí),它己進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。采用計(jì)算機(jī)進(jìn)行 信息化管理已成為衡量高校圖書管理科學(xué)化和現(xiàn)代化的重要標(biāo)志,而圖書館圖書借閱 管理的全面自動(dòng)化、信息化則是其中重要的組成部分。本系統(tǒng)是以建立一個(gè)以通過(guò)計(jì)算機(jī)數(shù)據(jù)管理圖書借閱系統(tǒng)為目的,以用戶瀏覽 圖書信息的網(wǎng)站系統(tǒng)。本系統(tǒng)具有靈活、方便、快捷、界面友好等優(yōu)點(diǎn),

6、更加方便 的在線了解圖書信息,以及借閱圖書。本系統(tǒng)研究的課題主要意義是通過(guò)完成這個(gè) 圖書管理系統(tǒng),方便管理者的管理以及用戶所需要查詢的書籍,使大家在盡可能短 的時(shí)間內(nèi)完成對(duì)所需要圖書的借閱。大大的方便了用戶的需求在很大程度上提升了 高校的教學(xué)水平。因此,本文所研究的圖書館借閱管理信息系統(tǒng)具有一定的使用價(jià) 值和現(xiàn)實(shí)意義。1.3 開發(fā)環(huán)境軟件平臺(tái)是信息系統(tǒng)開發(fā)和運(yùn)行所需的集成軟件環(huán)境,設(shè)計(jì)和選擇高效、實(shí)用、 方便、功能齊全的軟件平臺(tái),對(duì)信息系統(tǒng)的開發(fā)具有十分重要的意義。在結(jié)合實(shí)際開 發(fā)的需要并充分考慮各種軟件平臺(tái)的性能及適用范圍和對(duì)軟件平臺(tái)的使用能力,本系 統(tǒng)的軟件平臺(tái)選擇如下:(1)操作系統(tǒng)操作

7、系統(tǒng)是計(jì)算機(jī)系統(tǒng)中最重要的系統(tǒng)軟件,目前在微機(jī)上使用的桌面操作系 統(tǒng)有Windows 95/98/2000/me/xp/2003server等,可運(yùn)行于前面所列舉的各種操作系統(tǒng), 但建議使用Windows 2000以上系統(tǒng)。本系統(tǒng)在Windows XP操作系統(tǒng)下進(jìn)行開發(fā)。(2)支撐軟件支撐軟件是協(xié)助人們開發(fā)和維護(hù)軟件的工具和環(huán)境軟件,包括編輯程序,數(shù)據(jù)庫(kù) 系統(tǒng),集成開發(fā)環(huán)境等,本系統(tǒng)的支撐軟件如下:系統(tǒng)運(yùn)行環(huán)境:visual C+6. 0系統(tǒng)編程語(yǔ)言:C/C+程序設(shè)計(jì)語(yǔ)言第二章算法思想隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,采用計(jì)算機(jī)進(jìn)行信息化管理已成為衡量高校圖書管 理科學(xué)化和現(xiàn)代化的重要標(biāo)志。為了減少工

8、作人員的工作量,提高各個(gè)環(huán)節(jié)的工作效 率,優(yōu)化人師生的學(xué)習(xí)環(huán)境,我們需要研究一個(gè)高效快捷的圖書借閱管理系統(tǒng)。本系統(tǒng)是以建立一個(gè)以通過(guò)計(jì)算機(jī)數(shù)據(jù)管理圖書借閱系統(tǒng)為目的,以用戶瀏覽圖 書信息的系統(tǒng)。該系統(tǒng)的功能強(qiáng)大,其具有良好的界面,操作方便靈活、簡(jiǎn)潔高效。 具有良好的健壯性,以會(huì)員制為主要借還書手段,各種功能設(shè)置方便圖書管圖書借閱 管理。2.1 系統(tǒng)需求分析1 .1.1會(huì)員管理功能(1)添加會(huì)員:輸入會(huì)員編號(hào)、會(huì)員姓名,進(jìn)行會(huì)員添加,添加成功顯示添加 完畢。此功能可連續(xù)添加。新用戶經(jīng)注冊(cè)方可登錄系統(tǒng)并使用讀者服務(wù)功能。(2)查詢會(huì)員:輸入查詢的會(huì)員編號(hào),如果存在該會(huì)員,則會(huì)顯示該會(huì)員信息, 包括

9、會(huì)員編號(hào),會(huì)員姓名,已借出的圖書數(shù)為幾本;如果查詢的會(huì)員編號(hào)不存在,則 顯示沒(méi)找到指定會(huì)員。(3)刪除會(huì)員:請(qǐng)輸入要?jiǎng)h除的會(huì)員的編號(hào),如果輸入的會(huì)員編號(hào)不存在,則 顯示沒(méi)有找到要?jiǎng)h除的會(huì)員編號(hào)。系統(tǒng)會(huì)提示你還有會(huì)員要?jiǎng)h除嗎?輸入Y,則可以 繼續(xù)輸入想要?jiǎng)h除的會(huì)員編號(hào),并進(jìn)行刪除,如果不想在進(jìn)行刪除的話,可以選擇N, 進(jìn)行刪除會(huì)員結(jié)束操作,退回主界面。(4)載入數(shù)據(jù):實(shí)現(xiàn)數(shù)據(jù)載入功能。(5)保存功能:能將記錄保存在任何自定義的文件中。(6)退出程序:如果想要退出程序,系統(tǒng)會(huì)提示警告:程序結(jié)束后未存儲(chǔ)的數(shù) 據(jù)將消失確定要退出嗎?(Y/N),選擇y,則直接退出程序。2 . 1.2圖書管理功能(1)增

10、加圖書:增加新的圖書資料,同時(shí)需檢查新書的圖書編號(hào)是否已存在于 原圖書資料中,若已存在則顯示這類書已有庫(kù)存,可輸入圖書的入庫(kù)量進(jìn)行添加圖書 操作;如果該類圖書為第一次進(jìn)行添加,則應(yīng)該輸入該圖書的圖書編號(hào),圖書的名稱, 以及圖書的入庫(kù)量,輸入完畢則圖書添加完畢,可繼續(xù)選擇是否繼續(xù)添加。(2)查詢圖書:查詢圖書時(shí)需要輸入查詢的圖書編號(hào),如果該圖書存在則會(huì)顯 示該圖書的圖書編號(hào),圖書名稱,該圖書的庫(kù)存量以及圖書的借出量。其中圖書的庫(kù) 存量以及圖書的借出量均可以累加。如果該圖書已經(jīng)被借出,則查詢結(jié)果顯示圖書庫(kù) 存量以及圖書的借出量。(3)刪除圖書:通過(guò)圖書編號(hào)查詢?cè)搱D書資料,若該編號(hào)存在,允許刪除,否

11、 則提示沒(méi)有找到你所要的圖書。刪除對(duì)象包括該圖書資料以及“圖書狀態(tài)”和“借閱 人”中與此書相關(guān)的所有記錄。一旦進(jìn)行刪除成功,則所有該圖書信息都將不存在。(4)借書處理:如果需要進(jìn)行借書操作,則必須保證該借書者已經(jīng)進(jìn)行過(guò)會(huì)員 注冊(cè),借書操作需要輸入要借出的書號(hào),以及會(huì)員編號(hào),如果會(huì)員編號(hào)輸入錯(cuò)誤,則 顯示會(huì)員編號(hào)輸入錯(cuò)誤,外借失??;如果輸入要借出的書號(hào)進(jìn)行借書操作,則系統(tǒng)會(huì) 顯示該編號(hào)圖書的現(xiàn)有庫(kù)存量,如果沒(méi)有查詢到該圖書的編號(hào)則顯示沒(méi)有找到要借出 的圖書,如果借出成功,顯示外借成功。(5)還書處理:如果需要進(jìn)行還書操作,則必須保證該借書者是會(huì)員,還書操 作需要輸入要借出的書號(hào),以及會(huì)員編號(hào),如

12、果會(huì)員編號(hào)輸入錯(cuò)誤,則顯示會(huì)員編號(hào) 輸入錯(cuò)誤,還書失敗;如果輸入要借出的書號(hào)進(jìn)行借書操作,則系統(tǒng)會(huì)顯示該編號(hào)圖 書的現(xiàn)有庫(kù)存量,如果沒(méi)有查詢到該圖書的編號(hào)則顯示沒(méi)有找到要借出的圖書,如果 還書成功,而顯示歸還成功。2.2 系統(tǒng)總體設(shè)計(jì)2.2.1 系統(tǒng)設(shè)計(jì)目標(biāo)本文研究開發(fā)的圖書借閱管理系統(tǒng)用于支持高校完成圖書館圖書借閱工作,有如 下三個(gè)方面的目標(biāo):支持圖書館實(shí)現(xiàn)規(guī)范化的管理。支持圖書館高效率完成圖書館增加圖書以及會(huì)員借還書管理的日常業(yè)務(wù),包括 圖書借閱管理系統(tǒng)的兩大功能:(1)圖書管理(增加圖書、查詢圖書、刪除圖書、圖書借閱、還書)(2)會(huì)員管理(增加會(huì)員、查詢會(huì)員、刪除會(huì)員、借書信息)支持圖書

13、館實(shí)現(xiàn)無(wú)紙化辦公,方便快捷,提高圖書館的管理效率,便利師生進(jìn)入圖書館 進(jìn)行學(xué)習(xí)。2. 2. 2開發(fā)設(shè)計(jì)思想基于以上系統(tǒng)設(shè)計(jì)目標(biāo),本文在圖書館圖書借閱管理系統(tǒng)時(shí)遵循了以下開發(fā)設(shè) 計(jì)思想: 采用現(xiàn)有的軟硬件環(huán)境及先進(jìn)的管理系統(tǒng)開發(fā)方案,從而達(dá)到充分利用現(xiàn)有資 源,提高系統(tǒng)開發(fā)水平和應(yīng)用效果的目的。 盡量達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等要求。 系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,乂便于未 參與開發(fā)的技術(shù)維護(hù)人員補(bǔ)充、維護(hù)。系統(tǒng)應(yīng)具備數(shù)據(jù)維護(hù)功能,及時(shí)根據(jù)用戶需求進(jìn)行數(shù)據(jù)的添加、刪除、修改、 備份等操作。2. 2. 3系統(tǒng)功能模塊設(shè)計(jì)本系統(tǒng)開發(fā)的意圖是借由網(wǎng)絡(luò)化的管理減

14、輕圖書館工作人員的工作量,全面提高 圖書館的管理效率及服務(wù)質(zhì)量。實(shí)現(xiàn)兩方面的功能,這兩個(gè)方面分別是圖書管理和會(huì) 員管理。(1)圖書管理(增加圖書、查詢圖書、刪除圖書、圖書借閱、還書);(2)會(huì)員管理(增加會(huì)員、查詢會(huì)員、刪除會(huì)員、借書信息)。圖書借閱管理系統(tǒng)主要包括以下功能模塊,如圖所示。增加圖書1HH帚加z :,L-系統(tǒng)功能模塊圖進(jìn)入系統(tǒng)后需要先進(jìn)行會(huì)員注冊(cè),才可以進(jìn)行圖書管理和會(huì)員管理。如圖221進(jìn)行進(jìn)入系統(tǒng),顯示功能列表,可選擇任意系統(tǒng),但在操作之前先要進(jìn)行增加圖書。如圖222圖222如果會(huì)員注冊(cè)完畢,新書添加完畢,讀者可以進(jìn)行借書操作。如圖223圖223查詢圖書操作。如圖224圖224

15、刪除會(huì)員操作。如圖225圖2252.3算法思想描述本項(xiàng)目的實(shí)質(zhì)是完成對(duì)學(xué)生成績(jī)信息的建立、查找、插入、修改、刪除等功能, 可以首先定義項(xiàng)目的數(shù)據(jù)結(jié)構(gòu),然后將每個(gè)功能寫成一個(gè)函數(shù)來(lái)完成對(duì)數(shù)據(jù)的操作, 最后完成主函數(shù)以驗(yàn)證各個(gè)函數(shù)功能并得出運(yùn)行結(jié)果。該程序的由多種函數(shù)實(shí)現(xiàn),每個(gè)函數(shù)具有不同的功能,主要有主菜單函數(shù),插入 功能子菜單函數(shù),查找功能子菜單函數(shù),會(huì)員信息錄入函數(shù),顯示函數(shù),排序函數(shù), 插入函數(shù)以及查找函數(shù)。在每個(gè)區(qū)域中會(huì)調(diào)用不同的函數(shù)來(lái)實(shí)現(xiàn)主要的功能比如,在 新增功能里調(diào)用子菜單函數(shù);在顯示信息時(shí)調(diào)用排序函數(shù)先對(duì)需要輸出的信息進(jìn)行排 序,然后再輸出;在查找功能里會(huì)調(diào)用查找函數(shù)來(lái)進(jìn)行查找。

16、而最主要的函數(shù)有添加圖書:考慮到圖書的信息較多,所以用結(jié)構(gòu)體對(duì)其定義。 乂考慮到圖書量大,所以添加后要保存到文件中去。圖書查詢:用所學(xué)過(guò)的順序查找 法來(lái)寫。刪除圖書:把保存到文件中的內(nèi)容寫到鏈表中去,用鏈表刪除結(jié)點(diǎn)的方法來(lái) 刪除圖書。我們所學(xué)過(guò)的指針這時(shí)正好用上。最后把各函數(shù)同主函數(shù)相連,用主函數(shù) 調(diào)用它們,主要函數(shù)如下:插入函數(shù),它用插入排序來(lái)實(shí)現(xiàn);2查找函數(shù),用順序查找法;刪除函數(shù),用鏈表刪除結(jié)點(diǎn)的方法第三章算法實(shí)現(xiàn)3.1 數(shù)據(jù)結(jié)構(gòu)要完成這個(gè)題目,主要是建立解決圖書和會(huì)員的信息的存儲(chǔ),解決的方法是建 立兩個(gè)帶頭結(jié)點(diǎn)的單鏈表,分別用于存儲(chǔ)圖書和會(huì)員。解決了這個(gè)問(wèn)題后就是如何建 立這兩個(gè)鏈表的

17、聯(lián)系了,解決的方法是在圖書結(jié)點(diǎn)中設(shè)一個(gè)借書人編號(hào),在會(huì)員結(jié)點(diǎn) 中設(shè)一個(gè)數(shù)組用于存會(huì)員借的書。解決了這兩個(gè)問(wèn)題,剩下的工作就簡(jiǎn)單了。只需按 鏈表的操作就可以了。以會(huì)員管理為例,本項(xiàng)目的數(shù)據(jù)是一組會(huì)員的借閱信息,每條學(xué)生的借閱信息由 會(huì)員編號(hào)、會(huì)員姓名和組成,這組會(huì)員的借閱信息具有相同特性,屬于同一數(shù)據(jù)對(duì)象, 相鄰數(shù)據(jù)元素之間存在序偶關(guān)系。由此可以看出,這些數(shù)據(jù)具有線性表中數(shù)據(jù)元素的 性質(zhì),所以該系統(tǒng)的數(shù)據(jù)采用線性表來(lái)存儲(chǔ)。順序表是線性表的順序存儲(chǔ)結(jié)構(gòu),是指用一組連續(xù)的內(nèi)存單元依次存放線性表的 數(shù)據(jù)元素。在順序存儲(chǔ)結(jié)構(gòu)下,邏輯關(guān)系相鄰的兩個(gè)元素在物理位置上也相鄰,這是 順序表的特點(diǎn)。本項(xiàng)目可以采用

18、順序表的線性表順序存儲(chǔ)結(jié)構(gòu)。若一個(gè)數(shù)據(jù)元素僅占一個(gè)存儲(chǔ)單元,第i個(gè)數(shù)據(jù)元素的地址為L(zhǎng)oc (ai) =loc (al) + (i-l)假設(shè)線性表中每個(gè)元素占用k個(gè)存儲(chǔ)單元,那么在順序表中,線性表的第i個(gè)元 素的存儲(chǔ)位置與第1個(gè)元素的存儲(chǔ)位置的關(guān)系是Loc (ai)=loc (al) + (i-l)*k這里L(fēng)oc (ai)是第i個(gè)元素的存儲(chǔ)位置,loc (al)是第1個(gè)元素的存儲(chǔ)位置,也 稱為線性表的基址。顯然,順序表便于進(jìn)行隨機(jī)訪問(wèn),故線性表的順序存儲(chǔ)結(jié)構(gòu)是一 種隨機(jī)存儲(chǔ)結(jié)構(gòu)。順序表適宜于做查找這樣的靜態(tài)操作;順序存儲(chǔ)的優(yōu)點(diǎn)是存儲(chǔ)密度大,存儲(chǔ)空間 利用率高。缺點(diǎn)是插入或刪除元素時(shí)不方便。由于C

19、語(yǔ)言的數(shù)組類型也有隨機(jī)存儲(chǔ) 的特點(diǎn),一維數(shù)組的機(jī)內(nèi)表示就是順序結(jié)構(gòu)。因此,可用C語(yǔ)言的一維數(shù)組實(shí)現(xiàn)線性 表的順序存儲(chǔ)。數(shù)組實(shí)現(xiàn)線性表的順序存儲(chǔ)的優(yōu)點(diǎn)是可以隨機(jī)存取表中任一元素 0(1),存儲(chǔ)空間使用緊湊;缺點(diǎn)是在插入,刪除某一元素時(shí),需要移動(dòng)大量元素0(n),預(yù)先分配空間需按 最大空間分配,利用不充分,表容量難以擴(kuò)充。用結(jié)構(gòu)體類型定義每個(gè)會(huì)員數(shù)據(jù),故該數(shù)組中的每個(gè)數(shù)據(jù)的結(jié)構(gòu)可描述為:typedef struct Member Inf 0/會(huì)員結(jié)構(gòu)(long m_Code; /會(huì)員編號(hào)char m_Name20; 會(huì)員名字int l_Codes6; /己借書的編號(hào),最多5Member Info*

20、 nextmember; 下一會(huì)員MemberInfo;3.2 程序模塊頭文件及散列定義關(guān)鍵字#iiiclude#iiiclude#iiiclude#define NULL 0定義圖書結(jié)構(gòu)類型typedef stiuct Booklnfb /圖書結(jié)構(gòu)(mtb_Code;圖書編號(hào)char b_Name20; /名稱int b_Total; /總數(shù)mtb_Out;/借出數(shù)Bookliifo* nextbook; /下一類圖書JBooklnfb;3.3 各模塊之間的調(diào)用關(guān)系模塊內(nèi)部的具體算法,包括輸入、處理和輸出,相當(dāng)于C+語(yǔ)言的過(guò)程或函數(shù)設(shè) 計(jì)。整體算法描述:建立一個(gè)結(jié)構(gòu)來(lái)存放學(xué)生信息,再將這個(gè)結(jié)

21、構(gòu)存放在文件中,按 要求通過(guò)調(diào)用各個(gè)函數(shù)對(duì)文件內(nèi)的數(shù)據(jù)進(jìn)行操縱及處理。各個(gè)分函數(shù)算法描述:由主函數(shù)調(diào)用建立一個(gè)新的文件用于存儲(chǔ)圖書以及會(huì)員記錄。3.4 源程序代碼#mclude#mclude#mcludedefine NULL 0typedef stmct Booklnfb /圖書結(jié)構(gòu)mt b_Code;圖書編號(hào)char b_Name20; /名稱int b_Total; /總數(shù)mt b_Out;/借出數(shù)Bookliifo* nextbook; 下一類圖書JBooklnfb;typedef struct Memberlnfb/會(huì)員結(jié)構(gòu)(long m_Code; /會(huì)員編號(hào)char m_Name

22、20; 會(huì)員名字int l_Codes6; /己借書的編號(hào),最多5Memberlnfb* nextmembei; /下一會(huì)員JMembeiliifo;typedef struct System/管理系統(tǒng)結(jié)構(gòu)(Bookliifb* BI;Memberlnfb* MI;int BookTotal; /圖書類庫(kù)存量int MumbuiTota; /會(huì)員數(shù)量 System;System* IiutSystem();/ 系統(tǒng)初始化void AddBook( System*);/增加圖書Bookliifo* SearchBook(System*.int);查詢圖書信息void DelBook(System

23、*);/刪除圖書void BrrowBook(System*);/借書處理void Tu】nBackBook(System*);還書處理void AddMumbeRSystem*);/添加會(huì)員void DulMember(System*);/刪除會(huì)員Memberliifb* SearchMembei(System*,int);/查詢會(huì)員信息 void StoieData(System*); 定義一個(gè)空的數(shù)據(jù)存儲(chǔ)(系統(tǒng)) void LoadData(System*); 加載所有數(shù)據(jù) void ExitSystemQ; 退出程序 void mainQ System* S=IiiitSystemQ;

24、int sei;docoutHntttt |書借閱管理系統(tǒng)主界面”vendl;coutvv”tttX派y endl;coutvtttXL增加圖書.支endl;coutvtttX2.查詢圖書.支endl;coutvtttX3.刪除圖書.支endl;coutvtttX4.借書處理.支endl;coutvtttX5.還書處理.支endl;coutvtttX6.添加會(huì)員.支endl;coutvtttX7.刪除會(huì)員.支endl;coutvtttX8.查詢會(huì)員.支endl;coutvtttX9.載入數(shù)據(jù).支endl;coutvtttX10.保存數(shù)據(jù).cout=l&selBI=(BookInfo*)mall

25、oc(sizeof(BookInfb); /圖書信息初始化,sizeof是 C/C+中的一個(gè)操作 符(operator),簡(jiǎn)單的說(shuō)其作用就是返回一個(gè)對(duì)象或者類型所占的內(nèi)存字節(jié)數(shù)S-BookTotal=0; 圖書數(shù)量初始為0S-BI-nextbook=NULL; 下一類圖書信息初始為空S-MI=(MemburInfb*)nKdloc(sizeof(MeniberInfo); /初始化會(huì)員信息S-MemberTota=0;圖書總數(shù)初始為0S-MI-nextmember=NULL; /下一個(gè)會(huì)員信息初始為空return S;void AddBook(System* S) 添加圖書模塊(int Tem

26、pcode; 圖書編號(hào)char sei;/查詢?cè)搱D書編號(hào)是否已存在Bookhifo* p=S-BI; /p 指向圖書結(jié)構(gòu)Bookliifo* t; 添加的圖書庫(kù)存沒(méi)有Bookliifo* m; 添加的圖書庫(kù)存己有int num; 入庫(kù)量docoutvv”輸入圖書編號(hào):cinTempcode;if(m=SeatchBook(S,Tempcode) 圖書編號(hào)庫(kù)存已有 coutvv這類書已有庫(kù)存An輸入圖書的入庫(kù)量:Wendi;cinnum;m-b_TotaR=num; /*圖書數(shù)量累加。m-b_Total間接引用運(yùn)算符,表達(dá)式 m-b_Total引用了指針m指向的結(jié)構(gòu)體的成員b_TotaL */e

27、lset=(BookInfo*)malloc(sizeof(BooklHfo); 在圖書信息中定義一個(gè)t的內(nèi)存空間 t-b_Code=Tempcode; /*添力口的圖書編號(hào)與庫(kù)存已有。間接引用運(yùn)算符,表達(dá)式tb_Code引用了指針t指向的結(jié)構(gòu)體的成員b.Codeo */coutvv”輸入圖書的名稱:cint-b_Naiiie;coutvv”輸入圖書的入庫(kù)量:cint-b_Total;t-b_Out=0; 圖書借出量為0 t-nextbook=p-nextbook;p-nextbook=t;SBookTo血+; 圖書總數(shù)coutvv11 添加完畢! y Vendl;coutvv”還要添加嗎?(

28、Y/N)”; 是否繼續(xù)添加 cinsel;if(sel=,n*| sel=N)coutvv”結(jié)束添加 Hendl;return;while(l);Bookhifo* SearcliBook(System* Sjnt code)查詢圖書(Bookliifb* bi=S-BI-nextbook; 下一本圖書int bookcode; 圖書編號(hào)if(code=-l)coutvv”請(qǐng)輸入要查詢的圖書編號(hào): cinbookcode; 輸入圖書編號(hào)else bookcode=code;while(bi&bib_Code!=bookcode)bi=bi-nextbook; 判斷輸入圖書編號(hào)于庫(kù)存中的某個(gè)編號(hào)

29、 是否相等if(code=-l)if(山1)如果庫(kù)存中沒(méi)有此編號(hào)coutvv”沒(méi)找到你所要的圖書jvveiidl;else/庫(kù)存中有此編號(hào),顯示信息coutw“圖書編號(hào)為:vbi-b_Codeb_Name endl;coutw“圖書庫(kù)存量為: v b_Tota b_Outvendl;renirn bi;void DelBook(System* S)刪除圖書(Bookliifo* bi; 定義一個(gè) biBookliifo*pl=S-BI;定義一個(gè)系統(tǒng)中指向圖書管理的plMembeilnfb* memi; 會(huì)員結(jié)構(gòu)中定義一個(gè)memichar sei;int tempcode; 輸入的圖書編號(hào)nit

30、 i;dopl=S-BI;間接引用運(yùn)算符,表達(dá)式S-BI引用了指針s指向的結(jié)構(gòu)體的成員BE bi=pl-nextbook; 下一本圖書21menii=S-MI-nextinember; 下一個(gè)會(huì)員coutw”請(qǐng)輸入要?jiǎng)h除的圖書的編號(hào)之cintempcode;輸入要?jiǎng)h除的圖書編號(hào)while(bi)if(歷Ab_Code=tempcode)圖書存在直接刪除coutw”刪除圖書成功V nextbook;if(bi=O)圖書編號(hào)不存在coutw”沒(méi)有找到要?jiǎng)h除的圖書v nextbook=bi-nextbook;S-BookTotal-;while(menu)for(i=l ;iLCodes0;i-H-

31、)(if(meiiii-LCodesi=tempcode)bieak;if(il_Codes0)(fdi(;iLCodes0;i-H-)memi-LCodesi=meiiii-l_Codesi+l;menii-l_Codes0;meini=meiiu-nextmember;fiee(bi);)coutvv”還有圖書要?jiǎng)h除嗎?(Y/N)“;cinsel;if(sel=rN, 11 sel=,n,)coutvv”刪除圖書結(jié)束endl;return;wlule(l);void BnowBook(System* S) 借書(Bookliifb* bi=S-BI-nextbook;Bookliifb*

32、p;char sei;int memcode;Memberlnfb* mp;int tempcode;docoutvv”輸入要借出的書號(hào):;cintempcode;p=SeaicliBook(S,tempcode);if(!p)coutvv”沒(méi)有找到要借出的圖書.”BI-nextbook;Bookliifb* p;Memberliifb* mp;mt membercode;mt tempcode;mti;char sei;do(coutvv輸入歸還書號(hào):cintempcode;p=SearcliBook(S.tempcode);】fCP)(coutvv書號(hào)輸入錯(cuò)誤.vvendl;)else(c

33、outvv此書的現(xiàn)存量為v(p-b_Total-p-b_Out)v Vendl;coutvv請(qǐng)輸入會(huì)員編號(hào):cinmembercode;if(!(mp=SeaicliMember(S4iiembercode)coutvv”會(huì)員編號(hào)輸入錯(cuò)誤,歸還失敗Vendl; else(p-b_Out;fbr(i=l ;iLC odes 0 ;i+) if(mp-LCodesi=tempcode)break;while(il_Codes0)(mp-LCodesi=mp-l_Codesi+l;i+;mp-l_Codes0-;coutH歸還成功. endl;)coutvv”還有要?dú)w還的圖書嗎?(Y/N)”;cin

34、sel;if(sel=rN, 11 sel=,n*) coutM歸還結(jié)束.MI;Memberhifb* t;do(coutvv輸入會(huì)員編號(hào):cinTempcode;t=(MembeiIiifb*)malloc(sizeof(MembeiIiifo);t-nvC ode=Tempcode;coutvv”輸入會(huì)員姓名:cint-m_Name;t-l_Codes0=0;t-nextmember=p-nextmember;p-nextmembei-t;S-MemberTota-H-;cout”添加完畢! ”MI-nextmember;mt membercode;mt i;if(code=-l)cout

35、vv”請(qǐng)輸入要查詢的會(huì)員編號(hào):”; cinmembercode;else membercode=code;while(bi&bi-m_Code?=membercode)bi=bi-nextmember;if(code=-l)coutvv沒(méi)找到指定會(huì)員.V Vendl;elsecoutvv”會(huì)員編號(hào)為:m_Codeendl;coutvv” 名稱 9 :Hbi-m_Nameendl;coutvv” 己借的圖書有:l_Codes0本.Hendl;fbr(i=l ;iLCodes0;i+) coutbi-l_Codesi, coutendl;return bi;void DelMember(Syste

36、m* S) 刪除會(huì)員Memberlnfb* bi;Memberlnfb* pl;Bookliifb* book;char sei;mt i;mt tempcode;dobi=S-MI-nextmember;pl=S-MI;coutvv”請(qǐng)輸入要?jiǎng)h除的會(huì)員的編號(hào):cintempcode;while(bi)if(bi-m_Code=tempcode)break;pl=bi;bi=bi-nextmember;if(!bi)coutvv“沒(méi)有找到要?jiǎng)h除的會(huì)員編號(hào)elsepl-nextmember=bi-nextmembei-;S-MemberTota-;fbr(i=l ;iLCodes0;i+) if

37、(!(book=SearchBook(S,bi-LCodesi)coutw刪除會(huì)員出錯(cuò)! b_Out;book-b_Total;free(bi);coutvv”還有會(huì)員要?jiǎng)h除嗎?(Y/N)”;ciiisel;if(sel=fN|sel=,n,)coutvv”刪除會(huì)員結(jié)束y Vendl;retuni;while(l);void StoieData(System* S)保存數(shù)據(jù)FILE* fp;Bookliifo* bi=S-BI-nextbook;if(!(fp=fopen(nBookSysH;,wbH)coutw”打開文件 BookSys 失敗!”endl;exit(O);fvvrite(&(

38、S-BookTotal),sizeof(mt), 1 ,fp);while(bi)fwTite(bi,sizeof(BookIiifd), 1 ,fp);bi=bi-nextbook;Memberlnfb * ini=S-MI-nextmember;fvvnte(&(S-MemberTota),sizeof(mt), 1 ,fp); while(ini)fwrite(mi,sizeof(MembeiInfb), 1 ,fp);nn=ini-nextmember;fclose(fp);void LoadData(System* S)載入數(shù)據(jù)FILE* fp;if(!(fp=fopenC,Book

39、Sys,7,rbM)coutw”打開文件 BookSys 失敗”BI;Bookliifb* tempbi;fread(&(S-BookTotal),sizeof(mt), 1 ,fp);foi(int i= 1 ;iBookTotal;i+)tempbi=(BookIiifb*)malloc(sizeof(BookInfb);fiead(tempbi,sizeof(BookIiifb), 1 ,fp);bi-nextbook=tempbi;bi=tempbi;bi-nextbook=NULL;Memberlnfb* ini=S-MI;Memberlnfb* tempnii;fread(&(S-

40、MembeiTota),sizeof(mt), 1 ,fp);for(i= 1 ;iMemberTota;i+)tempnu=(MembeiIiifd*)malloc(sizeof(MembeiIiifb);fiead(tempnu,sizeof(MemberIiifb), 1 ,fp);nii-nextmember=tempnii;nn=tempini;nii-nextmember=NULL;fclose(fp);id Exit System。退出程序char select;coutvv”警告:程序結(jié)束后未存儲(chǔ)的數(shù)據(jù)將消失.yVendl;coutvv”確定要退出嗎?ciiiselect;if

41、(select=y|select=rY,)exit(O);/退出if(select=ln,|select=,Nf)retuni;第四章測(cè)試與分析4.1 測(cè)試數(shù)據(jù)選擇功能測(cè)試:1.增加圖書.2.查詢圖書.3.刪除圖書.4.借書處理.5.還書處理.6. 添加會(huì)員.7.刪除會(huì)員.8.查詢會(huì)員.9.載入數(shù)據(jù).10.保存數(shù)據(jù).11.退出程序。4.2 測(cè)試結(jié)果分析圖書管理系統(tǒng)主界面:包含該系統(tǒng)所有功能提示,如圖4. 2.1所示朱H綾案及8圖 4.2.138增加圖書操作界面:如果該類圖書為第一次進(jìn)行添加,則應(yīng)該輸入該圖書的圖書編號(hào),圖書的名稱,以及圖書的入庫(kù)量為多少,輸入完畢則圖書添加完畢;若已存在則顯示這

42、類書已有庫(kù)存,可輸入圖書的入庫(kù)量進(jìn)行添加圖書操作。如圖4. 2. 2所示編ss,grws 圖士蓋圖書圖送入A入人類人加 品管潮之阿匕前5添引名人y3 好 N 2 卞 ?/:!$ ?Dlr據(jù)6 3歲可理理員員如匈亶還漆冊(cè)ge;事o 0 i / 12?q567s91r.、結(jié)半圖 4. 2. 2查詢圖書操作界面:查詢圖書時(shí)需要輸入查詢的圖書編號(hào),如果該圖書存在則會(huì) 顯示該圖書的圖書編號(hào),圖書名稱,該圖書的庫(kù)存量以及圖書的借出量。如圖4. 2. 3 所示圖 4.23借書操作界面,保證借書者是會(huì)員,并且所借圖書有庫(kù)存,借書時(shí)需要輸入會(huì)員 編號(hào)和圖書編號(hào)。如果沒(méi)有查詢到該圖書的編號(hào)則顯示沒(méi)有找到要借出的圖

43、書,如果 會(huì)員編號(hào)輸入錯(cuò)誤,則顯示會(huì)員編號(hào)輸入錯(cuò)誤,外借失??;如圖4.2.4及圖4.2.5所示圖 4.2.444 4 ZX嗎 ar-lfl;1號(hào)11a SW? 出任貝 :4盍窩 捧msa *.書45/二MM3 要出譽(yù)貝 矍的卷一g不丟珊一,FAHHObugff.exe-號(hào)二12311:333誤,外借會(huì)質(zhì)圖 4.2.5還書操作界面:如果需要進(jìn)行還書操作,則必須保證該借書者已經(jīng)進(jìn)行過(guò)會(huì)員注 冊(cè),還書操作需要輸入要借出的書號(hào),以及會(huì)員編號(hào),如果會(huì)員編號(hào)輸入錯(cuò)誤,則顯 示會(huì)員編號(hào)輸入錯(cuò)誤,還書失敗。正確則顯示還書成功并顯示圖書信息如圖4.2.6所示圖 4.2.6泉奈奈冬1閏 惜面 界 王冬段 爾 必統(tǒng)

44、系 理張理理員小X 書1.2.3.丸.9.“11米:5-比雙”一一喈半 擇歸的查詢圖書操作界面:查詢圖書時(shí)需要輸入查詢的圖書編號(hào),如果該圖書存在則會(huì) 顯示該圖書的圖書編號(hào),圖書名稱,該圖書的庫(kù)存量以及圖書的借出量。其中圖書的 庫(kù)存量以及圖書的借出量均可以累加。如果該圖書已經(jīng)被借出,則查詢結(jié)果顯示圖書 庫(kù)存量以及圖書的借出量。如圖4.2.7所示,F;HHDgbugH-. o | 回 |12 要藥 m為: I 簿: / 一11; lIjA/生案案旬的圖書函號(hào):123 123反推蹄勺:11與:2iJiB5.6 7。91H1 米朱奈米奈圖 4.2.7刪除圖書操作界面:通過(guò)圖書編號(hào)查詢?cè)搱D

45、書資料,若該編號(hào)存在,允許刪除, 否則提示沒(méi)有找到你所要的圖書。刪除對(duì)象包括該圖書資料以及“圖書狀態(tài)”和“借 閱人”中與此書相關(guān)的所有記錄。一旦進(jìn)行刪除成功,則所有該圖書信息都將不存在。 如圖4. 2. 8所示L F:HHDe“g*exc朱朱米一理員員。Eb. 管圖0_一會(huì) 耍加滴加雷w1 .2.3.4.S.6.?.8.九1811-米冰米面啜王:3ww 擇-困 除受母書的編號(hào)424圖 4.2.8圖書借閱系統(tǒng)的實(shí)現(xiàn)與設(shè)計(jì),這個(gè)題目相對(duì)來(lái)說(shuō)貼近生活,比較容易理解。但 是設(shè)計(jì)一個(gè)較為完整的程序卻不是這么簡(jiǎn)單的。首先我分析了相關(guān)的題目?jī)?nèi)容,并由此而進(jìn)行了相關(guān)資料和書籍的查詢工作然后 才開始正式進(jìn)行設(shè)計(jì)

46、。一開始不知從何下手但后來(lái)分析了一下題目,并結(jié)合這學(xué)期所 學(xué)的知識(shí),再加上相關(guān)提示我決定用指針、鏈表和文件的內(nèi)容來(lái)編寫程序。圖書管理 主要就是有一些操作來(lái)完成,這些操作包括:新進(jìn)圖書基本信息的輸入、圖書基本信 息的查詢、對(duì)撤消圖書信息的刪除、為借書人辦理注冊(cè)、辦理借書手續(xù)(非注冊(cè)會(huì)員 不能借書)、辦理還書手續(xù)等等。我想這正好用C+的知識(shí)來(lái)實(shí)現(xiàn)函數(shù)。在具體編寫程序時(shí)考慮到圖書的相關(guān)操作與會(huì)員基本相同,所以實(shí)際上只要編寫 前三個(gè)函數(shù)。添加圖書:考慮到圖書的信息較多,所以用結(jié)構(gòu)體對(duì)其定義。乂考慮到 圖書量大,所以添加后要保存到文件中去。圖書查詢:用所學(xué)過(guò)的順序查找法來(lái)寫。 刪除圖書:把保存到文件中的內(nèi)容寫到鏈表中去,用鏈表刪除結(jié)點(diǎn)的方法來(lái)刪除圖書。 我們所學(xué)過(guò)的指

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論