版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、沈 陽 工 程 學(xué) 院課 程 設(shè) 計(jì)設(shè)計(jì)題目: c程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì) -圖書信息管理系統(tǒng) 沈 陽 工 程 學(xué) 院課程設(shè)計(jì)任務(wù)書 課程設(shè)計(jì)題目: 圖書信息管理系統(tǒng) 一、課程設(shè)計(jì)的原始資料及依據(jù)目前,隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,人工的圖書管理顯得十分的落后而且效率低下,尤其在查詢方面效率低。為了適應(yīng)現(xiàn)代化的環(huán)境,許多的管理事務(wù)都由電腦來管理,從而提高了管理的速率,效率。查閱有關(guān)資料,進(jìn)一步理解程序設(shè)計(jì)模塊化的思想,并利用此思想編寫一個(gè)簡(jiǎn)單的圖書信息管理系統(tǒng)。通過本設(shè)計(jì)可以加深理解利用程序設(shè)計(jì)思想開發(fā)一個(gè)系統(tǒng)的整個(gè)流程,提高分析問題、解決問題和實(shí)際動(dòng)手的能力。二、課程設(shè)計(jì)主要內(nèi)容及要求基本要求:(1
2、)試設(shè)計(jì)一圖書信息管理系統(tǒng),使之能提供以下功能:(2)系統(tǒng)以菜單方式工作v(3)圖書信息錄入功能(圖書信息用文件保存)(4)圖書信息瀏覽功能(5)查詢和排序功能:(至少一種查詢方式)l 按書名查詢l 按作者名查詢(6)圖書信息的刪除與修改v(7)圖書信息在程序運(yùn)行期間用鏈表表示,程序關(guān)閉則保存至文件。創(chuàng)新要求:(1)在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如實(shí)現(xiàn)會(huì)員資料的查詢、會(huì)員注銷,對(duì)撤消圖書信息的刪除。(2)為借書人辦理注冊(cè)。(3)辦理借書手續(xù)(非注冊(cè)會(huì)員不能借書)。(4)辦理還書手續(xù)等等。信息描述:圖書信息包括:登錄號(hào)、書名、圖書編號(hào)、單價(jià)、作者名、分類號(hào)、出版單位、出版時(shí)間、價(jià)格等。借閱人
3、信息包括:借書人姓名、性別、學(xué)號(hào)等。三、對(duì)課程設(shè)計(jì)說明書撰寫內(nèi)容、格式、字?jǐn)?shù)的要求1課程設(shè)計(jì)說明書是體現(xiàn)和總結(jié)課程設(shè)計(jì)成果的載體,主要內(nèi)容包括:設(shè)計(jì)題目、設(shè)計(jì)目的、設(shè)備器材、設(shè)計(jì)原理及內(nèi)容、設(shè)計(jì)步驟、遇到的問題及解決方法、設(shè)計(jì)總結(jié)、參考文獻(xiàn)等。一般不應(yīng)少于3000字。2在適當(dāng)位置配合相應(yīng)的實(shí)驗(yàn)原理圖、功能模塊圖、算法流程圖等圖表進(jìn)行說明。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。3設(shè)計(jì)總結(jié)部分主要寫本人完成工作簡(jiǎn)介以及自己的設(shè)計(jì)體會(huì),包括通過課程設(shè)計(jì)學(xué)到了什么,哪里遇到了困難,解決的辦法以及今后的目標(biāo)。4課程設(shè)計(jì)說明書手寫或打印均可。手寫要用學(xué)校統(tǒng)一的課程設(shè)計(jì)用紙,用黑或藍(lán)黑墨水工整書
4、寫;打印時(shí)采用a4紙,頁邊距均為20mm,正文采用宋體小四號(hào)字,行間距18磅。文中大標(biāo)題采用黑體小三號(hào)字,一級(jí)節(jié)標(biāo)題采用黑體四號(hào)字,二級(jí)節(jié)標(biāo)題采用黑體小四號(hào)字,表題與圖題采用宋體五號(hào)字。5課程設(shè)計(jì)說明書裝訂順序?yàn)椋悍饷?、任?wù)書、成績(jī)?cè)u(píng)定表、目錄、正文、參考文獻(xiàn)四、設(shè)計(jì)完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量等方面的要求1完成“任務(wù)書”中指定的功能,運(yùn)行結(jié)果正確。2課程設(shè)計(jì)說明書。五、時(shí)間進(jìn)度安排順序階段日期計(jì) 劃 完 成 內(nèi) 容備注1第1天閱讀資料2第23天系統(tǒng)分析設(shè)計(jì)3第48天程序編制、調(diào)試及運(yùn)行4第9天成績(jī)?cè)u(píng)定5第10天撰寫課程設(shè)計(jì)說明書六、主要參考資料(文獻(xiàn))1譚浩強(qiáng).c程序設(shè)計(jì)(第三版).北
5、京: 清華大學(xué)出版社.20062陳天洲.c語言高級(jí)程序設(shè)計(jì). 北京:人民郵電出版社.2002 3楊旭.c語言程序設(shè)計(jì)案例教程.北京: 人民郵電出版社.20054郭翠英.程序設(shè)計(jì)案例經(jīng)典.中國水利電力出版社.20045譚浩強(qiáng).程序設(shè)計(jì)基礎(chǔ).北京:清華大學(xué)出版社.20046王為青.c語言高級(jí)編程及實(shí)例剖析.北京:人民郵電出版社.2008.027徐慧.c語言實(shí)例解析精粹.北京:人民郵電出版社.2006.04 8周蘇、金海溶. 程序設(shè)計(jì)案例經(jīng)典.北京: 科學(xué)出版社.20009姚大鵬 欒好利 張翼英 等編著.c語言程序設(shè)計(jì)教程習(xí)題與上機(jī)實(shí)訓(xùn)指導(dǎo).中國水利水電出版社.200510鄭莉 董淵 張瑞豐 編著.
6、 c+語言程序設(shè)計(jì)(第3版). 北京:清華大學(xué)出版社.2006沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 摘要摘 要圖書借閱管理系統(tǒng)產(chǎn)生的主要目的是解決一些實(shí)際問題,用來方便和準(zhǔn)確的管理圖書和會(huì)員的各項(xiàng)紀(jì)錄,使得圖書信息的管理既方便又完備。它的產(chǎn)生和發(fā)展給圖書館管理帶來了巨大的便捷。計(jì)算機(jī)今后將會(huì)應(yīng)用在各個(gè)領(lǐng)域,所以,完善的圖書借閱管理程序是很有必要的。它在管理的過程中,對(duì)一些數(shù)據(jù)的存儲(chǔ)和計(jì)算是相當(dāng)方便,當(dāng)然它的準(zhǔn)確性很高幾乎為無誤。圖書借閱管理程序的操作也是相當(dāng)方便和快捷的,并且所用的人力也是相當(dāng)少的。下面就此課題介紹一下圖書借閱管理系統(tǒng)的功能:系統(tǒng)的設(shè)計(jì)我們主要分為八大塊:圖書添加、圖書查詢、圖書刪除、會(huì)員
7、借書、會(huì)員還書、會(huì)員注冊(cè)、會(huì)員注銷。會(huì)員借書,還書是按照會(huì)員的姓名來實(shí)現(xiàn)的,圖書的查詢,刪除是運(yùn)用比較函數(shù)來實(shí)現(xiàn)的。 在此系統(tǒng)中應(yīng)用了結(jié)構(gòu)體,動(dòng)態(tài)鏈表,基本的指針運(yùn)用,基本的循環(huán)語句,函數(shù)的調(diào)用,switch語句等來實(shí)現(xiàn)的。關(guān)鍵詞 圖書管理系統(tǒng)、圖書添加、圖書查詢、圖書刪除、會(huì)員借書、會(huì)員還書、會(huì)員注冊(cè)、會(huì)員注銷沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 目錄目 錄摘 要i第1章 緒 論1第2章 系統(tǒng)功能介紹32.1 功能介紹32.2 功能說明3第3章 詳細(xì)設(shè)計(jì)53.1 界面設(shè)計(jì)53.2 圖書添加功能設(shè)計(jì)53.3 圖書查找功能設(shè)計(jì)73.4刪除圖書功能設(shè)計(jì)83.5會(huì)員借書功能設(shè)計(jì)83.6會(huì)員還書功能設(shè)計(jì)93.7會(huì)
8、員注冊(cè)功能設(shè)計(jì)113.8 會(huì)員注銷功能設(shè)計(jì)12第4章 系統(tǒng)功能實(shí)現(xiàn)154.1 圖書管理系統(tǒng)主界面154.2 圖書添加功能164.3 圖書查找功能174.4 圖書刪除功能184.5 會(huì)員借書功能204.6 會(huì)員還書功能224.7 會(huì)員注冊(cè)234.8會(huì)員注銷23結(jié) 論26致 謝30參考文獻(xiàn)31 沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第1章 緒論第1章 緒 論c語言的發(fā)展:早期的操作系統(tǒng)等系統(tǒng)軟件主要是用匯編語言編寫的(包括 unix操作系 統(tǒng)在內(nèi))。由于匯編語言依賴于計(jì)算機(jī)硬件,程序的可讀性和可移植性都比較 差。為了提高可讀性和可移植性,最好改用高級(jí)語言,但一般的高級(jí)語言難以 實(shí)現(xiàn)匯編語言的某些功能,人們?cè)O(shè)想
9、能否找到一種既具有一般高級(jí)語言特性 ,又具有低級(jí)語言特性的語言,集它們的優(yōu)點(diǎn)于一身。于是,c語言就在這種情況下應(yīng)運(yùn)而生了。c語言是國際上廣泛流行的、很有發(fā)展前途的計(jì)算機(jī)高級(jí)語言。它適合作為系統(tǒng)描述語言,即可用來編寫系統(tǒng)軟件,也可用來編寫應(yīng)用軟件。c語言是在b語言的基礎(chǔ)上發(fā)展起來的,經(jīng)過了1960年的algol60,1963年劍橋大學(xué)推出的cpl、bcpl,1970年貝爾實(shí)驗(yàn)室簡(jiǎn)化出的b語言,后衍變出的c語言經(jīng)多次改進(jìn),它的突出優(yōu)點(diǎn)最終引起人們的廣泛關(guān)注,至此,c語言便很快風(fēng)靡全世界,成為世界上應(yīng)用最廣泛的語言之一。c語言的特點(diǎn):1.語言簡(jiǎn)潔、緊湊,使用方便、靈活。c語言一共只有32個(gè)關(guān)鍵字,9
10、種控制語句,程序書寫自由,它把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來。程序比其他許多高級(jí)語言簡(jiǎn)練,源程序短,而且可以象匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作。2.運(yùn)算符豐富c的運(yùn)算符包含的范圍很廣泛,共有種34個(gè)運(yùn)算符。c語言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而運(yùn)算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語言中難以實(shí)現(xiàn)的運(yùn)算。3. 數(shù)據(jù)結(jié)構(gòu)豐富整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等數(shù)據(jù)類型。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。并引入了指針概念,使程序效率更高。4c語法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大對(duì)變量的類型使用比較靈
11、活,某些類型數(shù)據(jù)可以通用;一般的高級(jí)語言語法檢查比較嚴(yán),能夠檢查出幾乎所有的語法錯(cuò)誤。而c允許程序編寫者有較大的自由度,放寬了語法檢查。5c語言允許直接訪問物理地址,可以直接對(duì)硬件進(jìn)行操作能實(shí)現(xiàn)匯編語言的大部分功能,可直接對(duì)硬件進(jìn)行操作,可用來編寫系統(tǒng)軟件。6.生成代碼質(zhì)量高,程序執(zhí)行效率高,可移植性好。一般只比匯編程序生成的目標(biāo)代碼效率低10%20%,與匯編語言相比,c程序基本上不做修改就能用于各種型號(hào)的計(jì)算機(jī)和各種操作系統(tǒng)。由于c語言的這些優(yōu)點(diǎn),使其應(yīng)用面很廣,許多大的軟件都用c語言編寫自20世紀(jì)九十年代初以來,我國學(xué)習(xí)和使用c語言的人越來越多,掌握次語言已成為計(jì)算機(jī)開發(fā)人員的一項(xiàng)基本功。
12、22沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第2章 系統(tǒng)功能介紹第2章 系統(tǒng)功能介紹 2.1 功能介紹圖書館管理系統(tǒng)操作界面添加圖書信息函數(shù)刪除圖書信息函數(shù)查詢圖書信息函數(shù)會(huì)員注冊(cè)信息函數(shù)借書記錄信息函數(shù)歸還記錄信息函數(shù)會(huì)員注銷信息函數(shù)圖書管理包括以下功能:1. 圖書添加功能;2. 圖書信息查找功能;3. 圖書信息刪除功能;4. 會(huì)員借書功能;5. 會(huì)員還書功能;6. 會(huì)員注冊(cè)功能;7. 會(huì)員注銷功能; 2.2 功能說明 1圖書添加功能是將圖書信息存入文件夾中,其中圖書信息包括圖書名字、圖書編號(hào)、圖書作者、圖書價(jià)格。2. 圖書信息查找功能是將要查找的圖書信息通過輸入圖書名字查找并從文件中提取出來顯示。3圖書
13、信息刪除功能是將無用的圖書信息刪除4會(huì)員借書功能,僅有會(huì)員才可以借書,借書之后還會(huì)標(biāo)記該書已借出。5會(huì)員還書功能是會(huì)員借書之后將書還回并將圖書狀態(tài)改為圖書未借出。6會(huì)員注冊(cè)是將會(huì)員信息存入文件夾中,會(huì)員信息包括會(huì)員姓名、會(huì)員性別、會(huì)員年齡。7會(huì)員注銷功能是將該會(huì)員信息從文件中刪除。4沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第3章 詳細(xì)設(shè)計(jì)第3章 詳細(xì)設(shè)計(jì) 3.1 界面設(shè)計(jì)通過printf函數(shù)輸出“1.添加圖書 2.圖書查詢3.刪除圖書 4. 會(huì)員借書5. 會(huì)員還書6. 會(huì)員注冊(cè)7.會(huì)員注銷8.退出”,再通過scanf函數(shù)輸入n,最后利用switch(n)函數(shù)執(zhí)行標(biāo)號(hào)為n 的程序。流程圖如下圖3.1所示 開
14、始利用printf函數(shù)輸出8個(gè)功能分別為1.添加圖書 2.圖書查詢3.刪除圖書 4. 會(huì)員借書5. 會(huì)員還書6. 會(huì)員注冊(cè)7.會(huì)員注銷8.退出利用scanf函數(shù)用鍵盤輸入n結(jié) 束利用switch(n)函數(shù)執(zhí)行標(biāo)號(hào)為n 的程序n=8否圖3.1 界面管理流程圖3.2 圖書添加功能設(shè)計(jì)添加圖書功能,先輸入會(huì)員姓名,如果不是會(huì)員,此系統(tǒng)為了使用更加方便快捷,要求您先注冊(cè)會(huì)員,然后進(jìn)行借書功能。當(dāng)你已是會(huì)員時(shí),輸入會(huì)員姓名,再輸入想要借閱的圖書名稱,就可以實(shí)現(xiàn)借閱圖書這一功能,我運(yùn)用了指針、數(shù)組、鏈表等基本操作完成了這一功能的操作。流程圖如下圖3.2所示開始定義指向文件的指針定義結(jié)構(gòu)體以讀取的方式打開文
15、件文件為空以寫的方式打開文件以追加的方式打開文件輸入圖書信息圖書編號(hào)書名作者姓名圖書價(jià)格否是結(jié)束圖3.2 圖書添加功能流程圖3.3 圖書查找功能設(shè)計(jì)查詢功能:查詢者在此功能界面輸入所查詢的圖書名稱,系統(tǒng)自動(dòng)按圖書的名字進(jìn)行查詢,可以顯示圖書是否存在、以及圖書的詳細(xì)的信息;該功能的實(shí)現(xiàn)主要應(yīng)用scanf函數(shù)實(shí)現(xiàn)查詢者對(duì)查詢圖書名稱的輸入。if語句來判斷所查詢圖書是否存在于源文件庫中,若存在,則以查找的圖書名稱為指針,建立該指針到源文件庫中的具體指向,最后應(yīng)用printf函數(shù)輸出所查詢圖書的詳細(xì)信息;若不存在,則顯示“該圖書不存在”類似字樣。流程圖如下圖3.3所示yyfp=null?strcmp(
16、查詢圖書,文件中圖書)=0?printf函數(shù)輸出圖書信息,i+結(jié)束、是否繼續(xù)查找nyynfp=fopen,打開文件scanf函數(shù)輸入圖書名稱開始yfeof(fp)?yn 圖3.3圖書查找功能流程圖3.4刪除圖書功能設(shè)計(jì)按書名進(jìn)行刪除。輸入書名后,調(diào)用函數(shù),在函數(shù)體里利用指針與每一個(gè)書名比較,如果相等就說明找到要?jiǎng)h除的圖書,用后一個(gè)覆蓋前一個(gè)信息來刪除圖書信息,并用指針調(diào)整地址就完成圖書信息的刪除了。流程圖如下圖3.4所示開始打開文件判斷文件為空讀入信息輸入要?jiǎng)h除的圖書名判斷刪除條件關(guān)閉文件輸出未找到圖書信息關(guān)閉文件判斷為文件最后結(jié)點(diǎn)輸出無此信息關(guān)閉文件是否是是否否刪除圖書圖3.4 刪除圖書功能
17、流程圖3.5會(huì)員借書功能設(shè)計(jì)借閱圖書功能首先要輸入會(huì)員姓名,如果不是會(huì)員,此系統(tǒng)為了使用更加方便快捷,要求您先注冊(cè)會(huì)員,然后進(jìn)行借書功能。當(dāng)你已是會(huì)員時(shí),輸入會(huì)員姓名,再輸入想要借閱的圖書名稱,就可以實(shí)現(xiàn)借閱圖書這一功能。此功能的實(shí)現(xiàn)我運(yùn)用了指針、數(shù)組、鏈表等基本操作完成了這項(xiàng)功能。流程圖如下圖3.5所示用scanf函數(shù)輸入會(huì)員姓名用if語句判斷是否是會(huì)員yn請(qǐng)注冊(cè)用scanf函數(shù)輸入圖書名稱用if語句判斷此圖書是否存在yn注冊(cè)成功后用printf函數(shù)輸出借書成功用printf函數(shù)輸出此書已借出結(jié)束開始圖3.5 會(huì)員借書流程圖3.6會(huì)員還書功能設(shè)計(jì)歸還圖書功能:先要求輸入圖書名,如果還書成功顯
18、示還書成功,否則顯示還書失敗。我運(yùn)用了指針、數(shù)組、鏈表等基本操作完成了這項(xiàng)功能的操作。流程圖如下圖3.6所示開始定義指向文件類型的指針*p定義指針類型新結(jié)點(diǎn)定義書名和會(huì)員名數(shù)組用if語句判斷文件是否為空用printf函數(shù)輸出不能打開用printf函數(shù)輸出鍵入書名返回主界面yn1用scanf函數(shù)輸入書名1用if語句判斷書名是否匹配用printf函數(shù)輸出還書失敗將圖書信息寫入文件用printf函數(shù)輸出還書成功返回主界面結(jié)束ny圖3.6 會(huì)員還書功能流程圖3.7會(huì)員注冊(cè)功能設(shè)計(jì)要求輸入該會(huì)員的名字、性別、年齡進(jìn)行注冊(cè),成功注冊(cè)后就可在圖書館里借閱圖書。會(huì)員注冊(cè)可方便圖書歸還的管理,也方便圖書管理人員
19、對(duì)被借圖書信息的管理及圖書歸要。在注冊(cè)會(huì)員后即可進(jìn)行借書的操作了,我們的系統(tǒng)是根據(jù)是否是會(huì)員來判斷能否進(jìn)行借書,并且借書時(shí)按圖書的名字進(jìn)行借閱。并且,如果成功借書,系統(tǒng)還會(huì)顯示成功借書,使此項(xiàng)操作更加簡(jiǎn)單明了。會(huì)員注冊(cè)功能主要使用了scanf函數(shù)、結(jié)構(gòu)體類型等在另一文件中建立個(gè)人信息。流程圖如下圖3.7所示 開 始讀入指針類型結(jié)構(gòu)體*pprintf“請(qǐng)注冊(cè)會(huì)員”用scanf函數(shù)鍵盤輸入會(huì)員信息姓名、性別、年齡結(jié) 束將會(huì)員信息寫入文件中定義數(shù)組struct member member圖3.7會(huì)員注冊(cè)功能流程圖3.8 會(huì)員注銷功能設(shè)計(jì)會(huì)員注銷時(shí)通過輸入會(huì)員姓名在文件中查找到該會(huì)員信息后將其刪除完成
20、的,刪除信息用到鏈表、指針。流程圖如下圖3.8所示開始if條件句判斷fp是否為空將fp指向文件member.txt是輸出未找到信息關(guān)閉文件否將文件放入鏈表并將指針head,p,q指向鏈表的頭部讀鏈表當(dāng)fp不為空時(shí),將p賦值給q,并使p指向鏈表的頭部將q的下一個(gè)結(jié)點(diǎn)作為當(dāng)前結(jié)點(diǎn)當(dāng)p的下一個(gè)結(jié)點(diǎn)為空時(shí)循環(huán)結(jié)束12定義指向文件的指針fp;定義數(shù)組struct consultmember member;定義指向struct consultmember的指針head,p,q1關(guān)閉文件輸入會(huì)員姓名將head賦值給p從頭部逐個(gè)讀取,當(dāng)輸入名字和文件中名字相同時(shí)打開文件將鏈表中的數(shù)據(jù)寫入文件中關(guān)閉文件結(jié)束2刪
21、除結(jié)點(diǎn)圖3.8 會(huì)員注冊(cè)流程圖25沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 第4章 系統(tǒng)功能實(shí)現(xiàn)第4章 系統(tǒng)功能實(shí)現(xiàn)4.1 圖書管理系統(tǒng)主界面 通過輸入編號(hào)實(shí)現(xiàn)編號(hào)所指的程序。4.1.1 負(fù)責(zé)人:孟月4.1.2程序主函數(shù)源代碼/* note:your choice is c ide */#include #include dos.h#include conio.h#include stdlib.h#include math.h#include string.hint bookadd();int bookconsult();int bookdel();int bookborrow();int bookretur
22、n();int memberadd();int memberdel();int bookshow();struct consultbook char num20; char name20; float price; char author20; char person20; int yes; struct consultbook *next;struct consultmember char name20; char sex20; int age; struct consultmember *next;int main() int n; int i=1; for(; i;) printf(1:
23、圖書添加功能n); printf(2:圖書查詢功能n); printf(3:刪除圖書功能n); printf(4:會(huì)員借書功能n); printf(5:會(huì)員還書功能n); printf(6:會(huì)員注冊(cè)功能n); printf(7:會(huì)員注銷功能n); printf(8:退出n); printf(請(qǐng)輸入所要執(zhí)行序號(hào)n); scanf(%d,&n); switch(n) case 1: bookadd(); break; case 2: bookconsult(); break; case 3: bookdel(); break; case 4: bookborrow(); break; case 5
24、: bookreturn(); break; case 6: memberadd(); break; case 7: memberdel(); break; case 8: i=0; return 0;4.2 圖書添加功能圖書添加功能,通過此功能實(shí)現(xiàn)向源文件中添加圖書的有關(guān)信息,實(shí)現(xiàn)對(duì)后續(xù)功能的實(shí)現(xiàn)。4.2.1 負(fù)責(zé)人:李昊航4.2.2圖書添加功能源代碼 int bookadd()/*添加圖書*/ file *fp; struct consultbook book; fp=fopen(book.txt,r);/*以讀取的方式打開文件*/ if(fopen=null) fp=fopen(book
25、.txt,w);/*以寫的方式打開文件*/ else fclose(fp); fp=fopen(book.txt,ab);/*以追加方式打開文件*/ printf(請(qǐng)輸入圖書編號(hào):n); scanf(%s, book.num); printf(請(qǐng)輸入書名:n); scanf(%s,b); printf(請(qǐng)輸入作者姓名:n); scanf(%s, book.author); printf(請(qǐng)輸入圖書價(jià)格:n); scanf(%f,& book.price); book.yes=1;/*表示圖書未出借*/ book.next=null; if(fwrite(&book,sizeof
26、(struct consultmember),1,fp)!=1) printf(操作出現(xiàn)錯(cuò)誤圖書信息未保存n); else printf(圖書信息已保存n); fclose(fp);/*關(guān)閉文件*/ return 1;4.3 圖書查找功能圖書查找功能,通過此功能實(shí)現(xiàn)對(duì)圖書價(jià)格等信息的查詢,方便借書等功能的實(shí)現(xiàn)。4.3.1 負(fù)責(zé)人:張啟明4.3.2圖書管理功能源代碼int bookconsult()/*圖書查找*/ file *fp; struct consultbook book; char bookname20;/*定義書名變量*/ int flag=0,i=0; printf(請(qǐng)輸入要查找
27、的書名:n); scanf(%s,bookname); fp=fopen(book.txt,r); if(fp=null)/*沒有找到文件*/ printf(未找到您所需要的書請(qǐng)核實(shí)是否有誤重新查找); fclose(fp); return -1; else while(!feof(fp)/*feof(fp)為測(cè)試文件是否結(jié)束的函數(shù)*/ fread(&book,sizeof(struct consultmember),1,fp);/*讀取文件*/ if(strcmp(b,bookname)=0)/*兩書名字相同*/ printf(圖書名為:%sn,b); pri
28、ntf(圖書編號(hào)為:%sn,book.num); printf(圖書作者為:%sn,book.author); printf(圖書作價(jià)格為:%fn,book.price); printf(圖書狀態(tài)為:%dn,book.yes); i+;/*i為該書的數(shù)目*/ flag=1;/*查找數(shù)據(jù)標(biāo)志*/ if(flag=0) printf(未找到您所需要的圖書n); return -1; fclose(fp); return 1;4.4 圖書刪除功能由于c語言文件操作沒有提供刪除和移動(dòng)的數(shù)據(jù)功能,所以刪除記錄采用了從文件中讀出所有記錄,刪除后,再將記錄寫回文件的方式。從文件中讀出記錄,以單鏈表的形式保存
29、,塊讀取方式,每讀取一條記錄,按其在文件中的順序要做好指針鏈接關(guān)系,即將其鏈接到當(dāng)前鏈表的尾部。然后從單鏈表中查找要?jiǎng)h除的圖書,如果找到,則從鏈表中刪除該圖書信息,所以刪除圖書資料的操作實(shí)質(zhì)是單鏈表的刪除操作,最后再將變動(dòng)過的單鏈表逐條寫到文件中。4.4.1 負(fù)責(zé)人:王珩4.4.2圖書刪除功能源代碼int bookdel()/*刪除圖書錄*/ file *fp; struct consultbook book; struct consultbook *head; struct consultbook *p,*q; char bookname20; fp=fopen(book.txt,r);/*
30、讀方式打開文件*/ if(fp=null)/*沒有找到文件*/ printf(未找到圖書信息n); fclose(fp); return -1; head=p=q=(struct consultbook*)malloc(sizeof(struct consultbook);/*開辟新的儲(chǔ)存空間*/ fread(p,sizeof(struct consultbook),1,fp);/*讀第一條信息*/ while(!feof(fp)/*feof(fp)為測(cè)試文件是否結(jié)束的函數(shù)*/ q=p; p=(struct consultbook*)malloc(sizeof(struct consultbo
31、ok); fread(p,sizeof(book),1,fp);/*讀記錄*/ q-next=p;/*新記錄插入到鏈表的尾*/ p-next=null;/*已為最后結(jié)點(diǎn)*/ fclose(fp); printf(請(qǐng)輸入要?jiǎng)h除圖書的名:n); scanf(%s,bookname); p=head; while(p!=null)/*按書名刪除圖書*/ if(strcmp(p-name,bookname)=0)/*找到藥刪除的書名*/ if(p=head)/*要?jiǎng)h除的圖書是第一個(gè)結(jié)點(diǎn)*/ head=head-next; else q-next=p-next;/*要?jiǎng)h除的圖書是第一個(gè)結(jié)點(diǎn)*/ brea
32、k; q=p; p=p-next;/*指針后移*/ fp=fopen(book.txt,w);/*以寫的方式打開文件*/ while(head!=null) fwrite(head,sizeof(book),1,fp);/*寫文件*/ head=head-next; fclose(fp); printf(刪除成功!n); return 1;4.5 會(huì)員借書功能借閱圖書功能:先輸入會(huì)員姓名,如果不是會(huì)員,此系統(tǒng)為了使用更加方便快捷,要求您先注冊(cè)會(huì)員,然后進(jìn)行借書功能。當(dāng)你已是會(huì)員時(shí),輸入會(huì)員姓名,再輸入想要借閱的圖書名稱,就可以實(shí)現(xiàn)借閱圖書這一功能。我運(yùn)用了指針、數(shù)組、鏈表等基本操作完成了這項(xiàng)功
33、能的操作。4.5.1負(fù)責(zé)人:趙磊4.5.2會(huì)員借書源代碼int bookborrow()/*借書*/ file *fp; struct consultbook book; struct consultmember member; char bookname20,membername20; int flag=0,mflag=0; printf(請(qǐng)輸入會(huì)員名字:n); scanf(%s,membername); if(fp=fopen(member.txt,r)=null)/*未找到文件*/ printf(無信息n); return -1; else while(!feof(fp)/*查找會(huì)員信息
34、*/ fread(&member,sizeof(struct consultmember),1,fp); if(strcmp(m,membername)=0) mflag=1;/*會(huì)員標(biāo)志*/ break; fclose(fp); if(mflag=0) printf(您不是會(huì)員請(qǐng)先注冊(cè)n); return -1; printf(請(qǐng)輸入圖書名:n); scanf(%s,bookname); if(fp=fopen(book.txt,r+)=null) printf(沒有找到圖書信息n); return -1; while(!feof(fp)/*查詢圖書資料*/ fread(
35、&book,sizeof(struct consultbook),1,fp); if(strcmp(b,bookname)=0) if(book.yes=0)/*圖書已借出*/ printf(此書已借出n); break; else book.yes=0;/*做出借書標(biāo)記*/ strcpy(book.person,m);/*登記借書會(huì)員*/ fseek(fp,sizeof(struct consultbook),1); fwrite(&book,sizeof(struct consultbook),1,fp); printf(借書成功n); flag=1;
36、break; if(flag!=1) printf(借書失敗n); fclose(fp); return 1;4.5.3注意借書采用會(huì)員制方式,即要借書首先要查詢會(huì)員登記文件,不是會(huì)員,則提示先注冊(cè)會(huì)員,如果是會(huì)員,查閱圖書文件,如果找不到,要先判斷圖書是否已先借出,如果沒有借出,則可以借書,修改該圖書的借書標(biāo)志yes值,表示已借出,將變動(dòng)后的數(shù)據(jù)寫入文件,否則,如果沒有此圖書或圖書已借出,本次借書失敗。注意數(shù)據(jù)變動(dòng)后的保存。因?yàn)榻钑皇歉聰?shù)據(jù)的值,所以采用了直接在文件中查找圖書的方法,每讀一條紀(jì)錄進(jìn)行相應(yīng)的比較,文件指針后以移一條記錄,所以如果找到要借的圖書,當(dāng)前的文件指針則指到該記錄的后
37、面,所以要將該數(shù)據(jù)修改后重新寫入,利用函數(shù)fseek將指針前移一條記錄,回到正在修改的記錄,然后將其寫入。4.6 會(huì)員還書功能歸還圖書功能:先要求輸入圖書名,如果還書成功顯示還書成功,否則顯示還書失敗。我運(yùn)用了指針、數(shù)組、鏈表等基本操作完成了這項(xiàng)功能的操作。4.6.1 負(fù)責(zé)人:趙磊4.6.2會(huì)員還書源代碼int bookreturn()/*還書*/ file *fp; struct consultbook book; char bookname20; int flag=0; fp=fopen(book.txt,r); if(fp=null) printf(未找到文件n); return -1;
38、 printf(請(qǐng)輸入圖書名:n); scanf(%s,bookname); while(!feof(fp)/*查詢圖書資料*/ fread(&book,sizeof(struct consultbook),1,fp); if(strcmp(b,bookname)=0) if(book.yes=0)/*圖書已借出*/ book.yes=1;/*圖書未借出*/ strcpy(book.person, ); fseek(fp,sizeof(struct consultbook),1); fwrite(&book,sizeof(struct consultbook),1,fp); p
39、rintf(還書成功n); flag=1; break; if(flag!=1) printf(還書失敗n); fclose(fp);4.6.3注意歸還圖書時(shí),首先輸入書名,然后從圖書文件中查找書名相同的書,同時(shí)標(biāo)志是已借出的書,將借書標(biāo)志值恢復(fù)為未借出書的標(biāo)志值,然后將變動(dòng)后的數(shù)據(jù)重新寫入文件。4.7 會(huì)員注冊(cè)會(huì)員注冊(cè)要求輸入該會(huì)員的名字、性別、年齡進(jìn)行注冊(cè),成功注冊(cè)后就可在圖書館里借閱圖書。會(huì)員注冊(cè)可方便圖書歸還的管理,也方便圖書管理人員對(duì)被借圖書信息的管理及圖書歸要。在注冊(cè)會(huì)員后即可進(jìn)行借書的操作了,我們的系統(tǒng)是根據(jù)是否是會(huì)員來判斷能否進(jìn)行借書,并且借書時(shí)按圖書的名字進(jìn)行借閱。并且,如果
40、成功借書,系統(tǒng)還會(huì)顯示成功借書,使此項(xiàng)操作更加簡(jiǎn)單明了。會(huì)員注冊(cè)功能主要使用了scanf函數(shù)、結(jié)構(gòu)體類型等在另一文件中建立個(gè)人信息。4.7.1負(fù)責(zé)人:孟月4.7.2會(huì)員注冊(cè)源代碼int memberadd() file *fp; struct consultmember member; fp=fopen(member.txt,r); if(fp=null)/*無會(huì)員記錄*/ fp=fopen(member.txt,w); else/*有會(huì)員記錄*/ fclose(fp); fp=fopen(member.txt,a);/*追加方式打開*/ printf(請(qǐng)輸入會(huì)員姓名:n); scanf(%s
41、,m); printf(請(qǐng)輸入會(huì)員性別:n); scanf(%s,member.sex); printf(請(qǐng)輸入會(huì)員年齡:n); scanf(%d,&member.age); fwrite(&member,sizeof(struct consultmember),1,fp);/*寫入會(huì)員信息*/ fclose(fp); return 1;4.8會(huì)員注銷會(huì)員注銷功能,實(shí)現(xiàn)對(duì)退出會(huì)員制度人員信息的刪除,借閱圖書等功能將不對(duì)此人員開放。4.8.1 負(fù)責(zé)人:孟月4.8.2會(huì)員注銷源代碼int memberdel () file *fp; struct consultmember m
42、ember; struct consultmember *head; struct consultmember *p,*q; char membername20; fp=fopen(member.txt,r); if(fp=null) printf(未找到信息); fclose(fp); return -1; head=p=q=(struct consultmember*)malloc(sizeof(struct consultmember);/*開辟一個(gè)新單元*/ fread(p,sizeof(member),1,fp);/*將文件放入鏈表*/ while(!feof(fp) q=p; p=
43、(struct consultmember*)malloc(sizeof(struct consultmember); fread(p,sizeof(struct consultmember),1,fp);/*讀記錄*/ q-next =p; p-next=null; fclose(fp); printf(請(qǐng)輸入會(huì)員名:n); scanf(%s,&membername); p=head; while(p!=null) if(strcmp(p-name,membername)=0); if(p=head) head=head-next; else q-next=p-next; break; q=
44、p; p=p-next; fp=fopen(member.txt,w); while(head!=null) fwrite(head,sizeof(struct consultmember),1,fp); head=head-next; fclose(fp); return 1;沈陽工程學(xué)院課程設(shè)計(jì)報(bào)告 結(jié)論結(jié) 論1. 運(yùn)行程序,進(jìn)入主界面,顯示主菜單,運(yùn)行結(jié)果如圖5.1所示圖5.1主界面菜單2.圖書添加功能,輸入圖書有關(guān)信息,顯示添加成功,運(yùn)行結(jié)果如圖5.2所示圖5.2圖書添加3按圖書名稱查找圖書,輸出查找結(jié)果,運(yùn)行結(jié)果如圖5.3所示圖5.3 圖示查詢4 刪除圖書功能,輸入圖書名,對(duì)已錄入圖書及其信息進(jìn)行刪除,運(yùn)行結(jié)果如圖5.4所示圖5.4刪除5會(huì)員借書功能,實(shí)現(xiàn)已存在會(huì)員對(duì)圖書的借閱情況錄入,運(yùn)行結(jié)果如圖5.5所示圖5.5會(huì)員借書6 會(huì)員還書功能,實(shí)現(xiàn)對(duì)所出圖書歸還信息的管理,運(yùn)行結(jié)果如圖5.6所示圖5.6 會(huì)員還書7員注冊(cè)功能,實(shí)現(xiàn)會(huì)員注冊(cè),方便圖書管理,運(yùn)行結(jié)果如圖5.7所示圖5.7 會(huì)員注冊(cè)8 會(huì)員注銷功能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版企業(yè)財(cái)務(wù)數(shù)據(jù)保密合作合同版B版
- 2024版影視作品制作與發(fā)行協(xié)議
- 2024自然人互貸現(xiàn)金協(xié)議樣式大全版B版
- 2024門店勞動(dòng)法執(zhí)行標(biāo)準(zhǔn)勞動(dòng)合同范本解析3篇
- 二零二五年度鋼筋班組勞務(wù)分包安全生產(chǎn)責(zé)任合同3篇
- 專業(yè)測(cè)量員招聘協(xié)議樣本2024
- 二零二五版保險(xiǎn)資金股權(quán)質(zhì)押反擔(dān)保貸款合同3篇
- 二零二五年度床上用品原材料進(jìn)口與加工合同3篇
- 二零二五版人工智能應(yīng)用第三方履約擔(dān)保協(xié)議3篇
- 沈陽化工大學(xué)《審計(jì)學(xué)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 部編新改版語文一年級(jí)下冊(cè)《語文園地四》教學(xué)設(shè)計(jì)
- 2025年北京鐵路局集團(tuán)招聘筆試參考題庫含答案解析
- 《藥品招商營銷概論》課件
- 曙光磁盤陣列DS800-G10售前培訓(xùn)資料V1.0
- 寺廟祈?;顒?dòng)方案(共6篇)
- 2025年病案編碼員資格證試題庫(含答案)
- 企業(yè)財(cái)務(wù)三年戰(zhàn)略規(guī)劃
- 2025新譯林版英語七年級(jí)下單詞表
- 提高膿毒性休克患者1h集束化措施落實(shí)率
- 山東省濟(jì)南市天橋區(qū)2024-2025學(xué)年八年級(jí)數(shù)學(xué)上學(xué)期期中考試試題
- 主播mcn合同模板
評(píng)論
0/150
提交評(píng)論