版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、沈 陽 工 程 學(xué) 院課 程 設(shè) 計設(shè)計題目: c程序設(shè)計基礎(chǔ)課程設(shè)計 -圖書信息管理系統(tǒng) 沈 陽 工 程 學(xué) 院課程設(shè)計任務(wù)書 課程設(shè)計題目: 圖書信息管理系統(tǒng) 一、課程設(shè)計的原始資料及依據(jù)目前,隨著計算機技術(shù)的飛速發(fā)展,人工的圖書管理顯得十分的落后而且效率低下,尤其在查詢方面效率低。為了適應(yīng)現(xiàn)代化的環(huán)境,許多的管理事務(wù)都由電腦來管理,從而提高了管理的速率,效率。查閱有關(guān)資料,進(jìn)一步理解程序設(shè)計模塊化的思想,并利用此思想編寫一個簡單的圖書信息管理系統(tǒng)。通過本設(shè)計可以加深理解利用程序設(shè)計思想開發(fā)一個系統(tǒng)的整個流程,提高分析問題、解決問題和實際動手的能力。二、課程設(shè)計主要內(nèi)容及要求基本要求:(1
2、)試設(shè)計一圖書信息管理系統(tǒng),使之能提供以下功能:(2)系統(tǒng)以菜單方式工作v(3)圖書信息錄入功能(圖書信息用文件保存)(4)圖書信息瀏覽功能(5)查詢和排序功能:(至少一種查詢方式)l 按書名查詢l 按作者名查詢(6)圖書信息的刪除與修改v(7)圖書信息在程序運行期間用鏈表表示,程序關(guān)閉則保存至文件。創(chuàng)新要求:(1)在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計,如實現(xiàn)會員資料的查詢、會員注銷,對撤消圖書信息的刪除。(2)為借書人辦理注冊。(3)辦理借書手續(xù)(非注冊會員不能借書)。(4)辦理還書手續(xù)等等。信息描述:圖書信息包括:登錄號、書名、圖書編號、單價、作者名、分類號、出版單位、出版時間、價格等。借閱人
3、信息包括:借書人姓名、性別、學(xué)號等。三、對課程設(shè)計說明書撰寫內(nèi)容、格式、字?jǐn)?shù)的要求1課程設(shè)計說明書是體現(xiàn)和總結(jié)課程設(shè)計成果的載體,主要內(nèi)容包括:設(shè)計題目、設(shè)計目的、設(shè)備器材、設(shè)計原理及內(nèi)容、設(shè)計步驟、遇到的問題及解決方法、設(shè)計總結(jié)、參考文獻(xiàn)等。一般不應(yīng)少于3000字。2在適當(dāng)位置配合相應(yīng)的實驗原理圖、功能模塊圖、算法流程圖等圖表進(jìn)行說明。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。3設(shè)計總結(jié)部分主要寫本人完成工作簡介以及自己的設(shè)計體會,包括通過課程設(shè)計學(xué)到了什么,哪里遇到了困難,解決的辦法以及今后的目標(biāo)。4課程設(shè)計說明書手寫或打印均可。手寫要用學(xué)校統(tǒng)一的課程設(shè)計用紙,用黑或藍(lán)黑墨水工整書
4、寫;打印時采用a4紙,頁邊距均為20mm,正文采用宋體小四號字,行間距18磅。文中大標(biāo)題采用黑體小三號字,一級節(jié)標(biāo)題采用黑體四號字,二級節(jié)標(biāo)題采用黑體小四號字,表題與圖題采用宋體五號字。5課程設(shè)計說明書裝訂順序為:封面、任務(wù)書、成績評定表、目錄、正文、參考文獻(xiàn)四、設(shè)計完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量等方面的要求1完成“任務(wù)書”中指定的功能,運行結(jié)果正確。2課程設(shè)計說明書。五、時間進(jìn)度安排順序階段日期計 劃 完 成 內(nèi) 容備注1第1天閱讀資料2第23天系統(tǒng)分析設(shè)計3第48天程序編制、調(diào)試及運行4第9天成績評定5第10天撰寫課程設(shè)計說明書六、主要參考資料(文獻(xiàn))1譚浩強.c程序設(shè)計(第三版).北
5、京: 清華大學(xué)出版社.20062陳天洲.c語言高級程序設(shè)計. 北京:人民郵電出版社.2002 3楊旭.c語言程序設(shè)計案例教程.北京: 人民郵電出版社.20054郭翠英.程序設(shè)計案例經(jīng)典.中國水利電力出版社.20045譚浩強.程序設(shè)計基礎(chǔ).北京:清華大學(xué)出版社.20046王為青.c語言高級編程及實例剖析.北京:人民郵電出版社.2008.027徐慧.c語言實例解析精粹.北京:人民郵電出版社.2006.04 8周蘇、金海溶. 程序設(shè)計案例經(jīng)典.北京: 科學(xué)出版社.20009姚大鵬 欒好利 張翼英 等編著.c語言程序設(shè)計教程習(xí)題與上機實訓(xùn)指導(dǎo).中國水利水電出版社.200510鄭莉 董淵 張瑞豐 編著.
6、 c+語言程序設(shè)計(第3版). 北京:清華大學(xué)出版社.2006沈陽工程學(xué)院課程設(shè)計報告 摘要摘 要圖書借閱管理系統(tǒng)產(chǎn)生的主要目的是解決一些實際問題,用來方便和準(zhǔn)確的管理圖書和會員的各項紀(jì)錄,使得圖書信息的管理既方便又完備。它的產(chǎn)生和發(fā)展給圖書館管理帶來了巨大的便捷。計算機今后將會應(yīng)用在各個領(lǐng)域,所以,完善的圖書借閱管理程序是很有必要的。它在管理的過程中,對一些數(shù)據(jù)的存儲和計算是相當(dāng)方便,當(dāng)然它的準(zhǔn)確性很高幾乎為無誤。圖書借閱管理程序的操作也是相當(dāng)方便和快捷的,并且所用的人力也是相當(dāng)少的。下面就此課題介紹一下圖書借閱管理系統(tǒng)的功能:系統(tǒng)的設(shè)計我們主要分為八大塊:圖書添加、圖書查詢、圖書刪除、會員
7、借書、會員還書、會員注冊、會員注銷。會員借書,還書是按照會員的姓名來實現(xiàn)的,圖書的查詢,刪除是運用比較函數(shù)來實現(xiàn)的。 在此系統(tǒng)中應(yīng)用了結(jié)構(gòu)體,動態(tài)鏈表,基本的指針運用,基本的循環(huán)語句,函數(shù)的調(diào)用,switch語句等來實現(xiàn)的。關(guān)鍵詞 圖書管理系統(tǒng)、圖書添加、圖書查詢、圖書刪除、會員借書、會員還書、會員注冊、會員注銷沈陽工程學(xué)院課程設(shè)計報告 目錄目 錄摘 要i第1章 緒 論1第2章 系統(tǒng)功能介紹32.1 功能介紹32.2 功能說明3第3章 詳細(xì)設(shè)計53.1 界面設(shè)計53.2 圖書添加功能設(shè)計53.3 圖書查找功能設(shè)計73.4刪除圖書功能設(shè)計83.5會員借書功能設(shè)計83.6會員還書功能設(shè)計93.7會
8、員注冊功能設(shè)計113.8 會員注銷功能設(shè)計12第4章 系統(tǒng)功能實現(xiàn)154.1 圖書管理系統(tǒng)主界面154.2 圖書添加功能164.3 圖書查找功能174.4 圖書刪除功能184.5 會員借書功能204.6 會員還書功能224.7 會員注冊234.8會員注銷23結(jié) 論26致 謝30參考文獻(xiàn)31 沈陽工程學(xué)院課程設(shè)計報告 第1章 緒論第1章 緒 論c語言的發(fā)展:早期的操作系統(tǒng)等系統(tǒng)軟件主要是用匯編語言編寫的(包括 unix操作系 統(tǒng)在內(nèi))。由于匯編語言依賴于計算機硬件,程序的可讀性和可移植性都比較 差。為了提高可讀性和可移植性,最好改用高級語言,但一般的高級語言難以 實現(xiàn)匯編語言的某些功能,人們設(shè)想
9、能否找到一種既具有一般高級語言特性 ,又具有低級語言特性的語言,集它們的優(yōu)點于一身。于是,c語言就在這種情況下應(yīng)運而生了。c語言是國際上廣泛流行的、很有發(fā)展前途的計算機高級語言。它適合作為系統(tǒng)描述語言,即可用來編寫系統(tǒng)軟件,也可用來編寫應(yīng)用軟件。c語言是在b語言的基礎(chǔ)上發(fā)展起來的,經(jīng)過了1960年的algol60,1963年劍橋大學(xué)推出的cpl、bcpl,1970年貝爾實驗室簡化出的b語言,后衍變出的c語言經(jīng)多次改進(jìn),它的突出優(yōu)點最終引起人們的廣泛關(guān)注,至此,c語言便很快風(fēng)靡全世界,成為世界上應(yīng)用最廣泛的語言之一。c語言的特點:1.語言簡潔、緊湊,使用方便、靈活。c語言一共只有32個關(guān)鍵字,9
10、種控制語句,程序書寫自由,它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。程序比其他許多高級語言簡練,源程序短,而且可以象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作。2.運算符豐富c的運算符包含的范圍很廣泛,共有種34個運算符。c語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。從而運算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。3. 數(shù)據(jù)結(jié)構(gòu)豐富整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等數(shù)據(jù)類型。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運算。并引入了指針概念,使程序效率更高。4c語法限制不太嚴(yán)格、程序設(shè)計自由度大對變量的類型使用比較靈
11、活,某些類型數(shù)據(jù)可以通用;一般的高級語言語法檢查比較嚴(yán),能夠檢查出幾乎所有的語法錯誤。而c允許程序編寫者有較大的自由度,放寬了語法檢查。5c語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作能實現(xiàn)匯編語言的大部分功能,可直接對硬件進(jìn)行操作,可用來編寫系統(tǒng)軟件。6.生成代碼質(zhì)量高,程序執(zhí)行效率高,可移植性好。一般只比匯編程序生成的目標(biāo)代碼效率低10%20%,與匯編語言相比,c程序基本上不做修改就能用于各種型號的計算機和各種操作系統(tǒng)。由于c語言的這些優(yōu)點,使其應(yīng)用面很廣,許多大的軟件都用c語言編寫自20世紀(jì)九十年代初以來,我國學(xué)習(xí)和使用c語言的人越來越多,掌握次語言已成為計算機開發(fā)人員的一項基本功。
12、22沈陽工程學(xué)院課程設(shè)計報告 第2章 系統(tǒng)功能介紹第2章 系統(tǒng)功能介紹 2.1 功能介紹圖書館管理系統(tǒng)操作界面添加圖書信息函數(shù)刪除圖書信息函數(shù)查詢圖書信息函數(shù)會員注冊信息函數(shù)借書記錄信息函數(shù)歸還記錄信息函數(shù)會員注銷信息函數(shù)圖書管理包括以下功能:1. 圖書添加功能;2. 圖書信息查找功能;3. 圖書信息刪除功能;4. 會員借書功能;5. 會員還書功能;6. 會員注冊功能;7. 會員注銷功能; 2.2 功能說明 1圖書添加功能是將圖書信息存入文件夾中,其中圖書信息包括圖書名字、圖書編號、圖書作者、圖書價格。2. 圖書信息查找功能是將要查找的圖書信息通過輸入圖書名字查找并從文件中提取出來顯示。3圖書
13、信息刪除功能是將無用的圖書信息刪除4會員借書功能,僅有會員才可以借書,借書之后還會標(biāo)記該書已借出。5會員還書功能是會員借書之后將書還回并將圖書狀態(tài)改為圖書未借出。6會員注冊是將會員信息存入文件夾中,會員信息包括會員姓名、會員性別、會員年齡。7會員注銷功能是將該會員信息從文件中刪除。4沈陽工程學(xué)院課程設(shè)計報告 第3章 詳細(xì)設(shè)計第3章 詳細(xì)設(shè)計 3.1 界面設(shè)計通過printf函數(shù)輸出“1.添加圖書 2.圖書查詢3.刪除圖書 4. 會員借書5. 會員還書6. 會員注冊7.會員注銷8.退出”,再通過scanf函數(shù)輸入n,最后利用switch(n)函數(shù)執(zhí)行標(biāo)號為n 的程序。流程圖如下圖3.1所示 開
14、始利用printf函數(shù)輸出8個功能分別為1.添加圖書 2.圖書查詢3.刪除圖書 4. 會員借書5. 會員還書6. 會員注冊7.會員注銷8.退出利用scanf函數(shù)用鍵盤輸入n結(jié) 束利用switch(n)函數(shù)執(zhí)行標(biāo)號為n 的程序n=8否圖3.1 界面管理流程圖3.2 圖書添加功能設(shè)計添加圖書功能,先輸入會員姓名,如果不是會員,此系統(tǒng)為了使用更加方便快捷,要求您先注冊會員,然后進(jìn)行借書功能。當(dāng)你已是會員時,輸入會員姓名,再輸入想要借閱的圖書名稱,就可以實現(xiàn)借閱圖書這一功能,我運用了指針、數(shù)組、鏈表等基本操作完成了這一功能的操作。流程圖如下圖3.2所示開始定義指向文件的指針定義結(jié)構(gòu)體以讀取的方式打開文
15、件文件為空以寫的方式打開文件以追加的方式打開文件輸入圖書信息圖書編號書名作者姓名圖書價格否是結(jié)束圖3.2 圖書添加功能流程圖3.3 圖書查找功能設(shè)計查詢功能:查詢者在此功能界面輸入所查詢的圖書名稱,系統(tǒng)自動按圖書的名字進(jìn)行查詢,可以顯示圖書是否存在、以及圖書的詳細(xì)的信息;該功能的實現(xiàn)主要應(yīng)用scanf函數(shù)實現(xiàn)查詢者對查詢圖書名稱的輸入。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ìn)行刪除。輸入書名后,調(diào)用函數(shù),在函數(shù)體里利用指針與每一個書名比較,如果相等就說明找到要刪除的圖書,用后一個覆蓋前一個信息來刪除圖書信息,并用指針調(diào)整地址就完成圖書信息的刪除了。流程圖如下圖3.4所示開始打開文件判斷文件為空讀入信息輸入要刪除的圖書名判斷刪除條件關(guān)閉文件輸出未找到圖書信息關(guān)閉文件判斷為文件最后結(jié)點輸出無此信息關(guān)閉文件是否是是否否刪除圖書圖3.4 刪除圖書功能
17、流程圖3.5會員借書功能設(shè)計借閱圖書功能首先要輸入會員姓名,如果不是會員,此系統(tǒng)為了使用更加方便快捷,要求您先注冊會員,然后進(jìn)行借書功能。當(dāng)你已是會員時,輸入會員姓名,再輸入想要借閱的圖書名稱,就可以實現(xiàn)借閱圖書這一功能。此功能的實現(xiàn)我運用了指針、數(shù)組、鏈表等基本操作完成了這項功能。流程圖如下圖3.5所示用scanf函數(shù)輸入會員姓名用if語句判斷是否是會員yn請注冊用scanf函數(shù)輸入圖書名稱用if語句判斷此圖書是否存在yn注冊成功后用printf函數(shù)輸出借書成功用printf函數(shù)輸出此書已借出結(jié)束開始圖3.5 會員借書流程圖3.6會員還書功能設(shè)計歸還圖書功能:先要求輸入圖書名,如果還書成功顯
18、示還書成功,否則顯示還書失敗。我運用了指針、數(shù)組、鏈表等基本操作完成了這項功能的操作。流程圖如下圖3.6所示開始定義指向文件類型的指針*p定義指針類型新結(jié)點定義書名和會員名數(shù)組用if語句判斷文件是否為空用printf函數(shù)輸出不能打開用printf函數(shù)輸出鍵入書名返回主界面yn1用scanf函數(shù)輸入書名1用if語句判斷書名是否匹配用printf函數(shù)輸出還書失敗將圖書信息寫入文件用printf函數(shù)輸出還書成功返回主界面結(jié)束ny圖3.6 會員還書功能流程圖3.7會員注冊功能設(shè)計要求輸入該會員的名字、性別、年齡進(jìn)行注冊,成功注冊后就可在圖書館里借閱圖書。會員注冊可方便圖書歸還的管理,也方便圖書管理人員
19、對被借圖書信息的管理及圖書歸要。在注冊會員后即可進(jìn)行借書的操作了,我們的系統(tǒng)是根據(jù)是否是會員來判斷能否進(jìn)行借書,并且借書時按圖書的名字進(jìn)行借閱。并且,如果成功借書,系統(tǒng)還會顯示成功借書,使此項操作更加簡單明了。會員注冊功能主要使用了scanf函數(shù)、結(jié)構(gòu)體類型等在另一文件中建立個人信息。流程圖如下圖3.7所示 開 始讀入指針類型結(jié)構(gòu)體*pprintf“請注冊會員”用scanf函數(shù)鍵盤輸入會員信息姓名、性別、年齡結(jié) 束將會員信息寫入文件中定義數(shù)組struct member member圖3.7會員注冊功能流程圖3.8 會員注銷功能設(shè)計會員注銷時通過輸入會員姓名在文件中查找到該會員信息后將其刪除完成
20、的,刪除信息用到鏈表、指針。流程圖如下圖3.8所示開始if條件句判斷fp是否為空將fp指向文件member.txt是輸出未找到信息關(guān)閉文件否將文件放入鏈表并將指針head,p,q指向鏈表的頭部讀鏈表當(dāng)fp不為空時,將p賦值給q,并使p指向鏈表的頭部將q的下一個結(jié)點作為當(dāng)前結(jié)點當(dāng)p的下一個結(jié)點為空時循環(huán)結(jié)束12定義指向文件的指針fp;定義數(shù)組struct consultmember member;定義指向struct consultmember的指針head,p,q1關(guān)閉文件輸入會員姓名將head賦值給p從頭部逐個讀取,當(dāng)輸入名字和文件中名字相同時打開文件將鏈表中的數(shù)據(jù)寫入文件中關(guān)閉文件結(jié)束2刪
21、除結(jié)點圖3.8 會員注冊流程圖25沈陽工程學(xué)院課程設(shè)計報告 第4章 系統(tǒng)功能實現(xiàn)第4章 系統(tǒng)功能實現(xiàn)4.1 圖書管理系統(tǒng)主界面 通過輸入編號實現(xiàn)編號所指的程序。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:會員借書功能n); printf(5:會員還書功能n); printf(6:會員注冊功能n); printf(7:會員注銷功能n); printf(8:退出n); printf(請輸入所要執(zhí)行序號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 圖書添加功能圖書添加功能,通過此功能實現(xiàn)向源文件中添加圖書的有關(guān)信息,實現(xiàn)對后續(xù)功能的實現(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(請輸入圖書編號:n); scanf(%s, book.num); printf(請輸入書名:n); scanf(%s,b); printf(請輸入作者姓名:n); scanf(%s, book.author); printf(請輸入圖書價格:n); scanf(%f,& book.price); book.yes=1;/*表示圖書未出借*/ book.next=null; if(fwrite(&book,sizeof
26、(struct consultmember),1,fp)!=1) printf(操作出現(xiàn)錯誤圖書信息未保存n); else printf(圖書信息已保存n); fclose(fp);/*關(guān)閉文件*/ return 1;4.3 圖書查找功能圖書查找功能,通過此功能實現(xiàn)對圖書價格等信息的查詢,方便借書等功能的實現(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(請輸入要查找
27、的書名:n); scanf(%s,bookname); fp=fopen(book.txt,r); if(fp=null)/*沒有找到文件*/ printf(未找到您所需要的書請核實是否有誤重新查找); fclose(fp); return -1; else while(!feof(fp)/*feof(fp)為測試文件是否結(jié)束的函數(shù)*/ fread(&book,sizeof(struct consultmember),1,fp);/*讀取文件*/ if(strcmp(b,bookname)=0)/*兩書名字相同*/ printf(圖書名為:%sn,b); pri
28、ntf(圖書編號為:%sn,book.num); printf(圖書作者為:%sn,book.author); printf(圖書作價格為:%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語言文件操作沒有提供刪除和移動的數(shù)據(jù)功能,所以刪除記錄采用了從文件中讀出所有記錄,刪除后,再將記錄寫回文件的方式。從文件中讀出記錄,以單鏈表的形式保存
29、,塊讀取方式,每讀取一條記錄,按其在文件中的順序要做好指針鏈接關(guān)系,即將其鏈接到當(dāng)前鏈表的尾部。然后從單鏈表中查找要刪除的圖書,如果找到,則從鏈表中刪除該圖書信息,所以刪除圖書資料的操作實質(zhì)是單鏈表的刪除操作,最后再將變動過的單鏈表逐條寫到文件中。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);/*開辟新的儲存空間*/ fread(p,sizeof(struct consultbook),1,fp);/*讀第一條信息*/ while(!feof(fp)/*feof(fp)為測試文件是否結(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é)點*/ fclose(fp); printf(請輸入要刪除圖書的名:n); scanf(%s,bookname); p=head; while(p!=null)/*按書名刪除圖書*/ if(strcmp(p-name,bookname)=0)/*找到藥刪除的書名*/ if(p=head)/*要刪除的圖書是第一個結(jié)點*/ head=head-next; else q-next=p-next;/*要刪除的圖書是第一個結(jié)點*/ 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 會員借書功能借閱圖書功能:先輸入會員姓名,如果不是會員,此系統(tǒng)為了使用更加方便快捷,要求您先注冊會員,然后進(jìn)行借書功能。當(dāng)你已是會員時,輸入會員姓名,再輸入想要借閱的圖書名稱,就可以實現(xiàn)借閱圖書這一功能。我運用了指針、數(shù)組、鏈表等基本操作完成了這項功
33、能的操作。4.5.1負(fù)責(zé)人:趙磊4.5.2會員借書源代碼int bookborrow()/*借書*/ file *fp; struct consultbook book; struct consultmember member; char bookname20,membername20; int flag=0,mflag=0; printf(請輸入會員名字:n); scanf(%s,membername); if(fp=fopen(member.txt,r)=null)/*未找到文件*/ printf(無信息n); return -1; else while(!feof(fp)/*查找會員信息
34、*/ fread(&member,sizeof(struct consultmember),1,fp); if(strcmp(m,membername)=0) mflag=1;/*會員標(biāo)志*/ break; fclose(fp); if(mflag=0) printf(您不是會員請先注冊n); return -1; printf(請輸入圖書名: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);/*登記借書會員*/ 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注意借書采用會員制方式,即要借書首先要查詢會員登記文件,不是會員,則提示先注冊會員,如果是會員,查閱圖書文件,如果找不到,要先判斷圖書是否已先借出,如果沒有借出,則可以借書,修改該圖書的借書標(biāo)志yes值,表示已借出,將變動后的數(shù)據(jù)寫入文件,否則,如果沒有此圖書或圖書已借出,本次借書失敗。注意數(shù)據(jù)變動后的保存。因為借書只是更新數(shù)據(jù)的值,所以采用了直接在文件中查找圖書的方法,每讀一條紀(jì)錄進(jìn)行相應(yīng)的比較,文件指針后以移一條記錄,所以如果找到要借的圖書,當(dāng)前的文件指針則指到該記錄的后
37、面,所以要將該數(shù)據(jù)修改后重新寫入,利用函數(shù)fseek將指針前移一條記錄,回到正在修改的記錄,然后將其寫入。4.6 會員還書功能歸還圖書功能:先要求輸入圖書名,如果還書成功顯示還書成功,否則顯示還書失敗。我運用了指針、數(shù)組、鏈表等基本操作完成了這項功能的操作。4.6.1 負(fù)責(zé)人:趙磊4.6.2會員還書源代碼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(請輸入圖書名: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注意歸還圖書時,首先輸入書名,然后從圖書文件中查找書名相同的書,同時標(biāo)志是已借出的書,將借書標(biāo)志值恢復(fù)為未借出書的標(biāo)志值,然后將變動后的數(shù)據(jù)重新寫入文件。4.7 會員注冊會員注冊要求輸入該會員的名字、性別、年齡進(jìn)行注冊,成功注冊后就可在圖書館里借閱圖書。會員注冊可方便圖書歸還的管理,也方便圖書管理人員對被借圖書信息的管理及圖書歸要。在注冊會員后即可進(jìn)行借書的操作了,我們的系統(tǒng)是根據(jù)是否是會員來判斷能否進(jìn)行借書,并且借書時按圖書的名字進(jìn)行借閱。并且,如果
40、成功借書,系統(tǒng)還會顯示成功借書,使此項操作更加簡單明了。會員注冊功能主要使用了scanf函數(shù)、結(jié)構(gòu)體類型等在另一文件中建立個人信息。4.7.1負(fù)責(zé)人:孟月4.7.2會員注冊源代碼int memberadd() file *fp; struct consultmember member; fp=fopen(member.txt,r); if(fp=null)/*無會員記錄*/ fp=fopen(member.txt,w); else/*有會員記錄*/ fclose(fp); fp=fopen(member.txt,a);/*追加方式打開*/ printf(請輸入會員姓名:n); scanf(%s
41、,m); printf(請輸入會員性別:n); scanf(%s,member.sex); printf(請輸入會員年齡:n); scanf(%d,&member.age); fwrite(&member,sizeof(struct consultmember),1,fp);/*寫入會員信息*/ fclose(fp); return 1;4.8會員注銷會員注銷功能,實現(xiàn)對退出會員制度人員信息的刪除,借閱圖書等功能將不對此人員開放。4.8.1 負(fù)責(zé)人:孟月4.8.2會員注銷源代碼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);/*開辟一個新單元*/ 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(請輸入會員名: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è)計報告 結(jié)論結(jié) 論1. 運行程序,進(jìn)入主界面,顯示主菜單,運行結(jié)果如圖5.1所示圖5.1主界面菜單2.圖書添加功能,輸入圖書有關(guān)信息,顯示添加成功,運行結(jié)果如圖5.2所示圖5.2圖書添加3按圖書名稱查找圖書,輸出查找結(jié)果,運行結(jié)果如圖5.3所示圖5.3 圖示查詢4 刪除圖書功能,輸入圖書名,對已錄入圖書及其信息進(jìn)行刪除,運行結(jié)果如圖5.4所示圖5.4刪除5會員借書功能,實現(xiàn)已存在會員對圖書的借閱情況錄入,運行結(jié)果如圖5.5所示圖5.5會員借書6 會員還書功能,實現(xiàn)對所出圖書歸還信息的管理,運行結(jié)果如圖5.6所示圖5.6 會員還書7員注冊功能,實現(xiàn)會員注冊,方便圖書管理,運行結(jié)果如圖5.7所示圖5.7 會員注冊8 會員注銷功能
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 思想政治教育理論與實踐期末考試試題及答案
- 籃球比賽的加油稿4篇范文
- 2025年上外版七年級歷史下冊階段測試試卷含答案
- 2025年魯教版七年級化學(xué)下冊月考試卷含答案
- 2025年滬科新版高一數(shù)學(xué)下冊月考試卷
- 二零二五年度房屋買賣及租賃市場分析報告合同3篇
- 2025年浙教版六年級英語上冊階段測試試卷
- 2025年湘教版七年級化學(xué)上冊階段測試試卷含答案
- 2025年度廢棄電池回收處理專項合同2篇
- 二零二五年度帶娃離婚雙方育兒費用分擔(dān)協(xié)議3篇
- 遼寧省大連市2023-2024學(xué)年高三上學(xué)期雙基測試(期末考試) 物理 含解析
- 勞務(wù)分包的工程施工組織設(shè)計方案
- 18項醫(yī)療質(zhì)量安全核心制度
- 智能終端安全檢測
- 新能源發(fā)電技術(shù) 電子課件 1.4 新能源發(fā)電技術(shù)
- DB34-T 4859-2024 農(nóng)村河道清淤規(guī)范
- 中學(xué)物業(yè)管理服務(wù)采購?fù)稑?biāo)方案(技術(shù)方案)
- 康復(fù)科年度工作亮點與展望計劃
- 冀教版二年級(上)數(shù)學(xué)加減乘除口算題卡
- 【期中考后反思】《反躬自省,砥礪奮進(jìn)》-2022-2023學(xué)年初中主題班會課件
- 材料采購服務(wù)方案(技術(shù)方案)
評論
0/150
提交評論