c語言圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁
c語言圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁
c語言圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁
c語言圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁
c語言圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)沈航北方科技學(xué)院沈航北方科技學(xué)院課程設(shè)計(jì)說明書課程設(shè)計(jì)說明書 課程名稱課程名稱 c 語言課程設(shè)計(jì)語言課程設(shè)計(jì) 教教 學(xué)學(xué) 部部 機(jī)械工程系機(jī)械工程系 專專 業(yè)業(yè) 數(shù)控?cái)?shù)控 班班 級(jí)級(jí) B B 學(xué)學(xué) 號(hào)號(hào) B B 學(xué)生姓名學(xué)生姓名 田文田文 指導(dǎo)教師指導(dǎo)教師 趙小磊趙小磊 _ _ 20122012 年年 6 6 月月精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)鏈表實(shí)現(xiàn)圖書信息操作鏈表實(shí)現(xiàn)圖書信息操作田文田文目錄摘摘 要要.11 緒論緒論.12 系統(tǒng)分析系統(tǒng)分析.12.1 功能需求.12.2 數(shù)據(jù)需求.22.3 性能需求.23 總體設(shè)計(jì)總體設(shè)計(jì).23.1 功

2、能模塊設(shè)計(jì).23.2 系統(tǒng)設(shè)計(jì)方案.64 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì).74.1 登錄模塊.74.2 借書管理模塊.84.3 還書管理模塊.95 調(diào)試與測(cè)試調(diào)試與測(cè)試.105.1 調(diào)試.105.2 測(cè)試.116 結(jié)論結(jié)論.12結(jié)束語結(jié)束語.12參考文獻(xiàn)參考文獻(xiàn).12附錄附錄 1用戶手冊(cè)用戶手冊(cè)(另起一頁)(另起一頁).13附錄附錄 2源程序源程序(另起一頁)(另起一頁).15精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)摘摘 要要經(jīng)過對(duì)程序設(shè)計(jì)題目的分析可知,整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為五個(gè)模塊,其中每一個(gè)模塊對(duì)應(yīng)一個(gè)函數(shù),他們的功能分別是:圖書信息輸入函數(shù) input(),借閱圖書函數(shù)(borrow),增加刪

3、除圖書函數(shù)(adddelet),圖書查詢函數(shù)(search),以及歸還圖書信息函數(shù)(giveback)。在這些函數(shù)當(dāng)中,這四個(gè)函數(shù)的實(shí)現(xiàn)嚴(yán)格按照題目的要求。1、圖書信息輸入函數(shù) 主要功能是從鍵盤輸入圖書信息并將其寫入文件中,作為圖書館的書庫(kù),以便對(duì)下面的函數(shù)進(jìn)行運(yùn)行,此函數(shù)是基礎(chǔ).2、圖書借閱函數(shù) 主要借閱圖書的功能和錄入學(xué)生應(yīng)該還書的時(shí)間;3、圖書歸還函數(shù) 主要實(shí)現(xiàn)借閱圖書后,歸還圖書的功能,并把應(yīng)該還書的時(shí)間和實(shí)際還書的時(shí)間進(jìn)行比較過期時(shí)輸出學(xué)生的信息,也是該程序的的一個(gè)重點(diǎn)4、增加刪除圖書函數(shù) 實(shí)現(xiàn)的功能是實(shí)現(xiàn)對(duì)圖書的刪除;5、圖書查詢函數(shù) 允許按照?qǐng)D書編號(hào),書名,作者,出版社進(jìn)行查詢,

4、并將查詢信息輸出;6、退出函數(shù) 該函數(shù)主要實(shí)現(xiàn)退出運(yùn)行界面的功能.除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運(yùn)行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。每一個(gè)圖書記錄都包含:圖書編號(hào),名稱,出版社,作者,現(xiàn)有數(shù)量和總量在程序當(dāng)中,將圖書記錄類型定義為結(jié)構(gòu)體類型,并把它寫入 d:liuyan.txt 中,其他函數(shù)每次對(duì)圖書記錄的訪問,其數(shù)據(jù)來源都是 d:liuyan.txt 文件,這樣做不但可以保證圖書數(shù)據(jù)的一致性,而且可以對(duì)圖書數(shù)據(jù)進(jìn)行永久保存,保證每次運(yùn)行程序都可以采用原來的數(shù)據(jù)。1 1 緒論緒論整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為五個(gè)模塊,其中每一個(gè)模塊對(duì)應(yīng)一個(gè)函數(shù),他們的

5、功能分別是:圖書信息輸入函數(shù) input(),借閱圖書函數(shù)(borrow),增加刪除圖書函數(shù)(adddelet),圖書查詢函數(shù)(search),以及歸還圖書信息函數(shù)(giveback)。在這些函數(shù)當(dāng)中,這四個(gè)函數(shù)的實(shí)現(xiàn)嚴(yán)格按照題目的要求。2 2 系統(tǒng)分析系統(tǒng)分析2.12.1 功能需求功能需求設(shè)計(jì)一個(gè)通過鏈表實(shí)現(xiàn)對(duì)圖書信息進(jìn)行管理的程序,要求完成以下功能:1. 建立一個(gè)鏈表,每個(gè)結(jié)點(diǎn)應(yīng)包含以下信息:圖書號(hào)、書名及出版社、價(jià)格、ISBN、作者、冊(cè)數(shù);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)2. 將輸入信息按圖書號(hào)進(jìn)行從小到大的排序;3. 實(shí)現(xiàn)查詢功能輸入書名,查詢輸出相關(guān)信息;4. 實(shí)現(xiàn)插入功能

6、輸入圖書信息并插入有序鏈表中;5. 實(shí)現(xiàn)刪除功能輸入書名或書號(hào),可將其信息從鏈表中刪除;6. 統(tǒng)計(jì)鏈表中圖書總價(jià)值,并在屏幕上輸出;7. 統(tǒng)計(jì)該鏈表中價(jià)值超過某一數(shù)目的圖書總數(shù),并在屏幕上輸出。8. 有界面友好易于使用的菜單。2.2 數(shù)據(jù)需求數(shù)據(jù)需求需要向系統(tǒng)輸入圖書號(hào)、書名及出版社、價(jià)格、ISBN、作者、冊(cè)數(shù)2.3 性能需求性能需求在運(yùn)行本程序時(shí)只要按照正確的操作方法不會(huì)出現(xiàn)無法運(yùn)行的情況,系統(tǒng)穩(wěn)定性好,安全,可靠。3 總體設(shè)計(jì)總體設(shè)計(jì)3.1 功能模塊設(shè)計(jì)功能模塊設(shè)計(jì)根據(jù)分析整個(gè)系統(tǒng)主要?jiǎng)澐譃?4 個(gè)功能模塊,分別執(zhí)行要求中的功能。該系統(tǒng)需要有添加,刪除,查詢,修改,累加,循環(huán)顯示主菜單,保

7、存信息功能,能將會(huì)員卡進(jìn)行注銷,利用顯示函數(shù)將會(huì)員卡內(nèi)所有信息顯示。要求有循環(huán)顯示菜單工能。功能模塊圖如圖 1 所示。(1)輸入讀者輸入相關(guān)讀者信息至內(nèi)存中;(2) 輸入書籍輸入書籍號(hào),對(duì)已存的書籍信息進(jìn)行查詢;(3) 書籍管理模塊輸入相應(yīng)代碼,對(duì)相關(guān)信息進(jìn)行查詢;(4) 退出管理模塊主菜單中輸入 0 退出系統(tǒng)登錄;精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 圖書管理系統(tǒng) 輸 入 讀 者 輸 入 書 籍 書 籍 管 理 退 出 系 統(tǒng) 登 錄 圖圖 1 圖書管理系統(tǒng)流程圖圖書管理系統(tǒng)流程圖管管理理員員版版圖圖書書管管理理系系統(tǒng)統(tǒng)新新書書入入庫(kù)庫(kù)查查詢?cè)兘杞钑鴷堑怯浻洉鴷當(dāng)?shù)數(shù)量量書書籍籍信

8、信息息修修改改還還書書管管理理書書籍籍信信息息查查詢?cè)儓D圖 2 管理員版圖書管理系統(tǒng)流程圖管理員版圖書管理系統(tǒng)流程圖退退出出查查詢?cè)儼窗凑照兆x讀者者姓姓名名查查詢?cè)儼窗凑照兆x讀者者編編號(hào)號(hào)查查詢?cè)儼窗凑照請(qǐng)D圖書書作作者者查查詢?cè)儼窗凑照請(qǐng)D圖書書名名查查詢?cè)儼窗凑照請(qǐng)D圖書書編編號(hào)號(hào)查查詢?cè)儓D圖書書查查詢?cè)兿迪到y(tǒng)統(tǒng)主主界界面面圖圖 3 圖書查詢主界面流程圖圖書查詢主界面流程圖精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)3.2 系統(tǒng)設(shè)計(jì)方案系統(tǒng)設(shè)計(jì)方案設(shè)計(jì)一個(gè)總菜單,1 登錄信息,2 查詢管理,3 書籍管理系統(tǒng),4 退出系統(tǒng)。基本功能的實(shí)現(xiàn)都將體現(xiàn)在這幾個(gè)菜單選項(xiàng)中。struct reader *ne

9、xt;RD;BK *h_book;RD *h_reader;void Login(); /*登陸*/int Menu(); /*主菜單*/void Menu_select(); /*主菜單選擇函數(shù)*/void Init(); /*初始化*/void Init_reader(); /*初始化讀者*/void Init_book(); /*初始化圖書*/void Insert_New_Book(); /*新書入庫(kù)*/int Find(); /*查找菜單*/void Find_Select(); /*查找菜單選擇函數(shù)*/void Find_Reader(); /*查找讀者信息*/void Find_

10、Book(); /*查找圖書信息*/ void Print_reader(); /*打印讀者信息*/void Print_book(); /*打印圖書信息*/void Borrow_Book(); /*借書函數(shù)*/void Return_Book(); /*還書函數(shù)*/void Save(); /*保存信息*/void Save_Reader(); /*保存讀者信息*/void Save_Book(); /*保存圖書信息*/ void Load(); /*加載信息*/void Load_Reader(); /*加載讀者信息*/void Load_Book(); /*加載圖書信息*/void L

11、ogin()/*登陸*/system(cls);printf(nnnttt 歡迎登陸本系統(tǒng)n);printf(nntt 系統(tǒng)版權(quán)所有nnnnnnn);printf(nnntt 按 任 意 鍵 進(jìn) 入 系 統(tǒng) .);getchar(); system(cls);int Menu() /*主菜單*/ int sn;printf(ntt 圖書管理系統(tǒng)主菜單n);printf(=n);printf(*t0-退出系統(tǒng) *n);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)printf(*t1-新書入庫(kù) *n);printf(*t2- 查詢 *n);printf(*t3-借書登記 *n);printf(*t4

12、-還書管理 *n);printf(=n);printf(請(qǐng)選擇相應(yīng)代碼:); 4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 4.1 登錄模塊登錄模塊開始intj=1,m;m=1!InsertLinklist(Linklist)L)printf(t輸入下一個(gè)讀者信息?n);printf(內(nèi)存已滿n);exit(OVERFLOW);結(jié)束圖圖 4 4:輸入讀者信息:輸入讀者信息精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)開始intj=1,m;m=1!InsertLinklist(Linklist)L)printf(內(nèi)存已滿n);exit(OVERFLOW);結(jié)束printf(t輸入下一個(gè)書籍信息?n);圖圖 5 5:輸入書籍

13、信息:輸入書籍信息4.2 借書管理模塊借書管理模塊主菜單中輸入讀者和書籍信息后,對(duì)已存的書籍進(jìn)行借閱,程序流程如圖4 所示。精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 開開始始 讀讀方方式式打打開開文文件件不不成成功功? 輸輸入入你你的的學(xué)學(xué)號(hào)號(hào)和和要要借借書書的的名名 循循環(huán)環(huán)變變量量 i i0? 輸輸出出 borrow success和和輸輸入入應(yīng)應(yīng)還還書書的的日日期期 輸輸入入應(yīng)應(yīng)書書日日期期 關(guān)關(guān)閉閉文文件件! 結(jié)結(jié)束束 borrow failed returnYN NY YN NN NY Y圖圖 6 6 借書模塊流程圖借書模塊流程圖4.3 還書管理模塊還書管理模塊對(duì)于已還書籍進(jìn)行管理

14、,程序流程如圖 4 所示。精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 開開始始以以讀讀取取方方式式打打開開文文件件不不成成功功輸輸入入讀讀者者信信息息輸輸入入書書籍籍信信息息循循環(huán)環(huán)變變量量i ii i 1 10 00 00 0輸輸入入編編號(hào)號(hào)與與書書庫(kù)庫(kù)編編號(hào)號(hào)一一致致輸輸出出還還書書成成功功關(guān)關(guān)閉閉文文件件結(jié)結(jié)束束b br re ea ak kr re et tu ur rn n圖圖 7 7 還書模塊流程圖還書模塊流程圖5 調(diào)試調(diào)試與測(cè)試與測(cè)試5.1 調(diào)試調(diào)試調(diào)試是軟件開發(fā)過程中的一個(gè)重要環(huán)節(jié),也是最復(fù)雜,對(duì)軟件開發(fā)者者來說也是最艱巨的任務(wù)。調(diào)試的任務(wù)是及時(shí)改正測(cè)試過程中發(fā)現(xiàn)的軟件錯(cuò)誤。具

15、體地說,調(diào)試過程由兩個(gè)步驟組成,它從表示程序中存在錯(cuò)誤的某跡象開始,首先確定錯(cuò)誤的準(zhǔn)確位置,也就是找出哪個(gè)模塊或哪個(gè)語句引起的錯(cuò)誤。然后仔細(xì)研究推斷代碼以確定問題的原因,并設(shè)法改正。調(diào)試過程主要是運(yùn)行編制好的程序,然后遇到錯(cuò)誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到問題、原因和解決方法如下面介紹。(1) 程序只能在當(dāng)前運(yùn)行時(shí)才能實(shí)現(xiàn)自動(dòng)生成書籍信息,而關(guān)閉系統(tǒng)再次精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)打開添加新讀者又從 0 開始與之前的讀者重復(fù),導(dǎo)致借還信息程序管理混亂,無法正確運(yùn)行。原因:在執(zhí)行后系統(tǒng)沒有記錄當(dāng)前的讀者信息,因?yàn)樽x者信息自動(dòng)按1、2、3、4 依次遞增生成

16、系統(tǒng);應(yīng)該記錄最后所生成的讀者信息,在下次運(yùn)行程序時(shí)系統(tǒng)會(huì)接著上次記錄的讀者信息自動(dòng)依次生成。(2)運(yùn)行完程序一次有錯(cuò)誤提醒原因:上次運(yùn)行程序后沒有關(guān)閉操作界面當(dāng)點(diǎn)擊編譯時(shí)會(huì)有一個(gè)錯(cuò)誤提示,解決方法:將上一次運(yùn)行時(shí)的操作界面關(guān)閉。(3)設(shè)計(jì)過程中的想法與程序中的不足總的來說這個(gè)程序大致實(shí)現(xiàn)了題目的要求,但是這套程序仍然存在著很多的問題與不足。比如,程序中主函數(shù)寫的有點(diǎn)繁瑣,有太多的嵌套,不是那么井然有序,條理清晰,程序注釋也不是很完善,對(duì)信息處理功能還有些不足之處,提示信息不明確。還有就是沒能做到模糊查詢。這個(gè)系統(tǒng)主要是參照課本手機(jī)通訊錄模版編寫的,同時(shí)也得到了老師和同學(xué)的一些幫助。我在做系統(tǒng)

17、的過程中也遇到了很多問題,有的是知識(shí)不足,有的是考慮不夠周全。事實(shí)證明,只靠自己的知識(shí)面還是很窄,獨(dú)立處理問題能力不是很強(qiáng),以后還要加強(qiáng)對(duì) c 語言的學(xué)習(xí)。 我認(rèn)為對(duì)于 C 語言編寫的程序來說,使用方法大致都是一樣的,所以如果要改進(jìn)的話,就是要改進(jìn)一些算法,盡量把界面編寫清楚,提示信息全面,方便易用。5.2 測(cè)試測(cè)試軟件測(cè)試是軟件生存期中的一個(gè)重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,所以軟件測(cè)試應(yīng)該是“為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程” ?;蛘哒f,軟件測(cè)試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及

18、其預(yù)期的輸出結(jié)果) ,并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤或缺陷。過度測(cè)試則會(huì)浪費(fèi)許多寶貴的資源。到測(cè)試后期,即使找到了錯(cuò)誤,然而付出了過高的代價(jià)。測(cè)試數(shù)據(jù)過程如下。(1) 登陸功能測(cè)試輸入數(shù)據(jù) 1:讀者編號(hào):23,讀者姓名:tianwen,書籍編號(hào):01,書名:xyz 作者:xxx,數(shù)量:10精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)預(yù)期結(jié)果:數(shù)據(jù)輸入到系統(tǒng)中;運(yùn)行結(jié)果:出現(xiàn)圖書管理系統(tǒng)主菜單說明:登陸功能實(shí)現(xiàn)(2) 借書功能測(cè)試。 。 。(3) 還書功能測(cè)試。 。 。6 結(jié)論結(jié)論計(jì)算機(jī)綜合訓(xùn)練順利完成,任務(wù)書中所提出的要求全部實(shí)現(xiàn),可以對(duì)會(huì)員信息進(jìn)行添加、修改、刪除以及按各種信息查

19、找,可將會(huì)員本次消費(fèi)金額累加到會(huì)員卡上,能夠自動(dòng)生成會(huì)員卡號(hào)并且將各種信息保存到文本文件中。不過這個(gè)程序還有些不夠完善,例如:在添加新會(huì)員時(shí)當(dāng)會(huì)員信息全部輸入之后系統(tǒng)中的全部會(huì)員信息自動(dòng)顯示,這樣非常占用操作界面,使操作不是十分清晰;再一個(gè)就是系統(tǒng)無法正確識(shí)別身份證號(hào)和電話好碼只能靠會(huì)員卡管理員的認(rèn)真細(xì)心才能減少出錯(cuò),改進(jìn)方式:調(diào)用一個(gè)可以判斷號(hào)碼位數(shù)的函數(shù),如果輸入位數(shù)不合法則提出警告重新輸入。結(jié)束語結(jié)束語在這一個(gè)星期的實(shí)踐中,通過編寫這個(gè)圖書管理系統(tǒng),我體會(huì)到了 c 語言學(xué)習(xí)的實(shí)用性。將理論和實(shí)踐結(jié)合在一起,用先進(jìn)的計(jì)算機(jī)工具方便人們的生活。C 語言程序的編寫首先要從大局考慮,把自己編寫整

20、個(gè)程序的思想都寫在草稿上,這樣有助于自己編寫程序,在編寫時(shí)要完善注釋,方便其他人理解程序。編寫的程序從理論上來說并沒有錯(cuò),但一上機(jī)就問題不斷。甚至有些課本上的知識(shí)照搬不變,也不能得到正確的結(jié)果。有時(shí)一個(gè)程序改了一遍又一遍,但就是不能成功,編程顯得枯燥乏味,看似簡(jiǎn)單的程序題,在調(diào)試時(shí)卻屢屢出錯(cuò)。經(jīng)反復(fù)的修改后,結(jié)果正確了,這時(shí)所有的乏味都顯得那么無力,一切都是值得的。我認(rèn)為,開發(fā)一套系統(tǒng),最重要的是細(xì)心,并且思考要全面,結(jié)合實(shí)際,充分考慮到客戶的需求和現(xiàn)實(shí)意義。不管什么系統(tǒng),只用運(yùn)用到實(shí)際應(yīng)用中,才具有現(xiàn)實(shí)意義。 所以 c 語言程序的實(shí)用性很強(qiáng),我們以后還要更加努力認(rèn)真地學(xué)習(xí)編程語言。參考文獻(xiàn)參

21、考文獻(xiàn)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)附錄附錄 1用戶手冊(cè)用戶手冊(cè)點(diǎn)擊運(yùn)行,首先出現(xiàn)的是菜單界面,選擇菜單選項(xiàng)進(jìn)行操作,可進(jìn)行如圖8 所示。系統(tǒng)主界面(選擇數(shù)字進(jìn)入,退出系統(tǒng))圖圖 8 菜單界面菜單界面選擇 1 進(jìn)入系統(tǒng),然后出現(xiàn)功能菜單精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 圖圖 9 登陸功能登陸功能;輸入讀者和書籍,然后出現(xiàn)功能菜單;圖圖 10 圖書管理系統(tǒng)主菜單圖書管理系統(tǒng)主菜單精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)附錄附錄 2源程序源程序#include #include #include #define Max 3 typedef struct bookchar b

22、ook_num10;char book_name20;char book_writer10;int book_kc;int book_xy;struct book *next;BK;typedef struct borrowchar borrow_book_num10;char limit_date8;BO;typedef struct readerchar reader_num10;char reader_name10;int right;BO borrowMax;struct reader *next;RD;BK *h_book;RD *h_reader;void Login(); /*登

23、陸*/int Menu(); /*主菜單*/void Menu_select(); /*主菜單選擇函數(shù)*/void Init(); /*初始化*/void Init_reader(); /*初始化讀者*/void Init_book(); /*初始化圖書*/void Insert_New_Book(); /*新書入庫(kù)*/int Find(); /*查找菜單*/void Find_Select(); /*查找菜單選擇函數(shù)*/void Find_Reader(); /*查找讀者信息*/void Find_Book(); /*查找圖書信息*/ void Print_reader(); /*打印讀者信

24、息*/void Print_book(); /*打印圖書信息*/void Borrow_Book(); /*借書函數(shù)*/精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)void Return_Book(); /*還書函數(shù)*/void Save(); /*保存信息*/void Save_Reader(); /*保存讀者信息*/void Save_Book(); /*保存圖書信息*/ void Load(); /*加載信息*/void Load_Reader(); /*加載讀者信息*/void Load_Book(); /*加載圖書信息*/void Login()/*登陸*/system(cls);pr

25、intf(nnnttt 歡迎登陸本系統(tǒng)n);printf(nntt 系統(tǒng)版權(quán)所有nnnnnnn);printf(nnntt 按 任 意 鍵 進(jìn) 入 系 統(tǒng) .);getchar(); system(cls);int Menu() /*主菜單*/ int sn;printf(ntt 圖書管理系統(tǒng)主菜單n);printf(=n);printf(*t0-退出系統(tǒng) *n);printf(*t1-新書入庫(kù) *n);printf(*t2- 查詢 *n);printf(*t3-借書登記 *n);printf(*t4-還書管理 *n);printf(=n);printf(請(qǐng)選擇相應(yīng)代碼:); for(;) s

26、canf(%d,&sn); fflush(stdin); if(sn4) printf(n 錯(cuò)誤!請(qǐng)重新輸入:); else break;return sn; void Menu_select()/*主菜單選擇函數(shù)*/for(;) /*循環(huán)調(diào)用模式,保證能進(jìn)行重復(fù)操作*/switch(Menu() /*功能選擇*/ case 0: system(cls);/*清楚屏幕先前的顯示內(nèi)容*/ Save();printf(nnt 文件保存成功!n); 精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)printf(nnt 歡迎下次使用本系統(tǒng)!n); getchar(); exit(0); case 1

27、:Insert_New_Book();break; case 2:Find_Select();break; case 3:Borrow_Book();break; case 4:Return_Book();break; default:printf(n 錯(cuò)誤!);exit(0); void Init() /*初始化*/ Init_reader(); Init_book();void Init_reader() /*初始化讀者信息*/ RD *p0; int i; printf(n 讀者初始化開始,請(qǐng)輸入讀者信息.n 包括編號(hào).姓名.n); p0=(RD*)malloc(sizeof(RD);

28、h_reader=p0; printf(n 請(qǐng)輸入讀者的信息:n); printf(ReaderNo.:); /*輸入讀者編號(hào)(唯一)*/ scanf(%s,p0-reader_num); printf(ReaderName:); /*輸入讀者姓名(不唯一)*/ scanf(%s,p0-reader_name); p0-right=0; for(i=0;iborrowi.borrow_book_num,0); /*所借圖書直接置為 0(即沒有借書)*/ strcpy(p0-borrowi.limit_date,0); p0-next=NULL; printf(n 讀者信息初始化完畢!按任意鍵繼

29、續(xù)下一步操作.n); getchar(); system(cls);void Init_book() /*初始化圖書信息*/BK *p0;精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)printf(n 圖書初始化開始,請(qǐng)輸入圖書信息.n 包括編號(hào).書名.數(shù)量.n);p0=(BK*)malloc(sizeof(BK);h_book=p0; printf(n 請(qǐng)輸入圖書信息:n); printf(BookNo.:); /*輸入圖書編號(hào)(唯一)*/ scanf(%s,p0-book_num); printf(BookName:); /*輸入圖書名稱*/ scanf(%s,p0-book_name);pr

30、intf(BookWriter:); /*輸入圖書作者*/ scanf(%s,p0-book_writer); printf(Number:); /*輸入圖書數(shù)量*/ scanf(%d,&p0-book_kc); p0-book_xy=p0-book_kc; /*開始時(shí)圖書現(xiàn)有量和庫(kù)存量相等*/ p0-next=NULL; printf(n 圖書信息初始化完畢!按任意鍵繼續(xù)下一步操作.n); getchar(); system(cls);void Insert_New_Book()/*新書入庫(kù)*/BK *p,*p0,*p1; p=p1=h_book;printf(n 新書入庫(kù)模塊.n)

31、;printf(n 請(qǐng)輸入新書信息.n 包括書號(hào).書名.數(shù)量.n);p0=(BK *)malloc(sizeof(BK); printf(BookNo.:); scanf(%s,p0-book_num); while(strcmp(p0-book_num,p1-book_num)!=0&p1-next!=NULL) p1=p1-next; if(strcmp(p0-book_num,p1-book_num)=0) /*此處分兩種情況,若圖書編號(hào)存在,則直接進(jìn)庫(kù),只須輸入書的數(shù)量*/ printf(n 此編號(hào)圖書已存在!直接入庫(kù)!n); printf(Number:); scanf(%d

32、,&p0-book_kc); p1-book_kc+=p0-book_kc; p1-book_xy+=p0-book_kc; else/*若不存在,則需要輸入其他的信息 ,然后在進(jìn)行插入操作*/ printf(BookName:); scanf(%s,p0-book_name);printf(BookWriter:);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) scanf(%s,p0-book_writer); printf(Number:); scanf(%d,&p0-book_kc);while(p-next) p=p-next; if(h_book=NULL) h_boo

33、k=p0; /*此處分兩種情況,鏈表中沒有數(shù)據(jù),head 直接指向 p0處*/ else p-next=p0; /*此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的next 指向 p0 處*/ p0-next=NULL; p0-book_xy=p0-book_kc; printf(n 新書入庫(kù)完畢!按任意鍵繼續(xù)下一步操作.n); getchar(); system(cls);int Find() /*查找菜單*/int sn;printf(ntt 信息查詢菜單n);printf(=n);printf(*t0-返回上級(jí) t*n);printf(*t t*n);printf(*t1-查找圖書 2-查

34、找讀者 t*n);printf(*t t*n);printf(*t3-打印圖書 4-打印讀者 t*n);printf(=n);printf(請(qǐng)選擇相應(yīng)代碼:);for(;) /*循環(huán)調(diào)用模式,保證能進(jìn)行重復(fù)操作*/ scanf(%d,&sn); fflush(stdin); if(sn4) printf(n 錯(cuò)誤!請(qǐng)重新輸入:); else break; return sn; void Find_Select() /*查找菜單選擇函數(shù)*/system(cls);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)for(;) /*循環(huán)調(diào)用模式,保證能進(jìn)行重復(fù)操作*/ switch(Find()

35、/*功能選擇*/ case 0:system(cls); Menu_select(); break; case 1:Find_Book();break; case 2:Find_Reader();break; case 3:Print_book();break; case 4:Print_reader();break; default:printf(n 錯(cuò)誤!);exit(0); void Find_Reader() /*查找讀者信息*/RD *p;int i;char find_reader10;p=h_reader;printf(n 讀者信息查詢模塊n);printf(n 請(qǐng)輸入你要查詢讀

36、者編號(hào):);scanf(%s,find_reader);while(strcmp(p-reader_num,find_reader)!=0&p-next) p=p-next;if(strcmp(p-reader_num,find_reader)=0) printf(n 讀者編號(hào):%s 的信息為:n,find_reader); printf(ReaderNo.tReaderName); /*此處這樣處理,是為了能實(shí)現(xiàn)一個(gè)讀者能借多本書 Max 可以改*/ printf(n);printf(t%stt%s,p-reader_num,p-reader_name); for(i=0;iborr

37、owi.borrow_book_num); printf(tt%s,p-borrowi.limit_date); printf(n);else printf(n 此讀者編號(hào)不存在,請(qǐng)核對(duì)!按任意鍵返回.);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)getchar(); system(cls);void Find_Book() /*查找圖書信息*/BK *p;char find_book10; /*功能很簡(jiǎn)單,讀者編號(hào)唯一,查找只須一次遍歷*/p=h_book;printf(n 圖書信息查詢模塊n);printf(n 請(qǐng)輸入你要查詢圖書編號(hào):);scanf(%s,find_book);while

38、(strcmp(p-book_num,find_book)!=0&p-next) p=p-next;if(strcmp(p-book_num,find_book)=0) /*找到了就打印,否則提示不存在,或出錯(cuò)*/ printf(n 圖書編號(hào):%s 的信息為:n,find_book); printf(nBookNo.ttBookNametBookWritertXianYou tKuCunn); printf(%stt%stt%stt%dtt%dn,p-book_num,p-book_name,p-book_writer,p-book_xy,p-book_kc); else printf

39、(n 此圖書編號(hào)不存在,請(qǐng)核對(duì)!按任意鍵返回.);getchar(); system(cls);void Print_reader() /*打印讀者信息*/ RD *p;int i;p=h_reader;printf(n 讀者信息如下:nn);printf(ReaderNo.tReaderName); /*此處這樣處理,是為了能實(shí)現(xiàn)一個(gè)讀者能借多本書 Max 可以改*/ printf(n);while(p!=NULL) /*遍歷鏈表一次就可以了*/ printf(t%stt%s,p-reader_num,p-reader_name); for(i=0;iborrowi.borrow_book_

40、num);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) printf(tt%s,p-borrowi.limit_date); printf(n); p=p-next;printf(n 讀者信息打印完畢!按任意鍵繼續(xù)下一步操作.);getchar();system(cls);void Print_book() /*打印圖書信息*/BK *p;p=h_book;printf(n 圖書信息如下:nn);printf(BookNo.ttBookNametBookWritertXianYou tKuCunn); /*直接打印所有圖書的信息,遍歷鏈表一次就可*/while(p!=NULL) printf(%

41、stt%stt%stt%dtt%dn,p-book_num,p-book_name,p-book_writer,p-book_xy,p-book_kc); p=p-next;printf(n 圖書信息打印完畢!按任意鍵繼續(xù)下一步操作.);getchar();system(cls);void Borrow_Book() /*借書模塊*/BK *p0; RD *p1;char bo_num10,rea_num10,lim_date8;int i;p0=h_book; p1=h_reader;printf(n 借書模塊.n);printf(n 請(qǐng)輸入借書的讀者編號(hào):); /*先輸入借書的讀者信息*/

42、scanf(%s,rea_num);while(p1-next!=NULL&strcmp(rea_num,p1-reader_num)!=0) /*遍歷一次讀者鏈表,判斷讀者是否存在*/ p1=p1-next; if(p1-next=NULL&strcmp(rea_num,p1-reader_num)!=0) /*如果存在,則繼續(xù),不存在就、則提示錯(cuò)誤!*/ printf(n 此讀者編號(hào)不存在!按任意鍵返回.n); goto END; 精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) printf(n 請(qǐng)輸入你要借的書的編號(hào):); scanf(%s,bo_num); while(st

43、rcmp(bo_num,p0-book_num)!=0&p0-next!=NULL) /*遍歷一次圖書鏈表,判斷此圖書是否存在*/ p0=p0-next; if(p0-next=NULL&strcmp(bo_num,p0-book_num)!=0) /*如果存在,則繼續(xù),不存在就、則提示錯(cuò)誤!*/ printf(n 此圖書編號(hào)不存在!按任意鍵返回.n); else if(p0-book_xyright=Max) /*判斷此讀者借書權(quán)限是否已達(dá)最大*/ printf(n 不好意思,借書數(shù)目已滿!不能借書!n 按任意鍵返回.); else if(strcmp(p1-borrow0.

44、borrow_book_num,0)!=0) /*此讀者若已經(jīng)借書,再判斷此讀者是否要借兩本一樣的書*/ for(i=0;iborrowi.borrow_book_num,bo_num)=0) printf(n 抱歉!同一個(gè)讀者不能同借兩本相同的書!n); else if(strcmp(p1-borrowi.borrow_book_num,0)=0) /*如果沒有重復(fù)*/ printf(n 請(qǐng)輸入你要?dú)w還圖書的日期:); scanf(%s,lim_date); strcpy(p1-borrowp1-right+.borrow_book_num,bo_num); /*記錄所借書號(hào),并且借書數(shù)目加

45、一,現(xiàn)存量減一*/ strcpy(p1-borrowp1-right-1.limit_date,lim_date); p0-book_xy-; printf(n 讀者編號(hào)%s 借書完畢!按任意鍵繼續(xù)下步操作.,p1-reader_num); else /*此讀者從未借過書*/ printf(n 請(qǐng)輸入你要?dú)w還圖書的日期:); scanf(%s,lim_date); strcpy(p1-borrowp1-right+.borrow_book_num,bo_num); /*記錄所借書號(hào),并且精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)借書數(shù)目加一,現(xiàn)存量減一*/ strcpy(p1-borrowp1

46、-right-1.limit_date,lim_date); p0-book_xy-; printf(n 讀者編號(hào)%s 借書完畢!按任意鍵繼續(xù)下步操作.,p1-reader_num); END:getchar(); system(cls);void Return_Book() /*還書模塊*/BK *p; RD *q;int i,j,find=0;char return_book_num10,return_reader_num10;p=h_book; q=h_reader;printf(n 還書模塊.n);printf(n 請(qǐng)輸入要還書的讀者編號(hào):); /*基本同上*/scanf(%s,ret

47、urn_reader_num); /*注意:數(shù)組的輸入沒有&*/while(q-next!=NULL&strcmp(return_reader_num,q-reader_num)!=0) q=q-next;if(q-next=NULL&strcmp(return_reader_num,q-reader_num)!=0) find=2;/*設(shè)置標(biāo)志,用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束,若提前出錯(cuò),則 find=2,若借了,則 find=1,若沒借為 find=0*/ printf(n 此讀者編號(hào)不存在!按任意鍵返回.n); goto end; printf(n 請(qǐng)

48、輸入讀者還書的編號(hào):); scanf(%s,return_book_num); while(p-next!=NULL&strcmp(return_book_num,p-book_num)!=0) p=p-next; if(p-next=NULL&strcmp(return_book_num,p-book_num)!=0) find=2;/*設(shè)置標(biāo)志,用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束,若提前出錯(cuò),則find=2,若借了,則 find=1,若沒借為 find=0*/ printf(n 錯(cuò)誤!此圖書編號(hào)不存在!按任意鍵返回.n); goto end; for(i=0;ibo

49、rrowi.borrow_book_num)=0) /*如果此讀者借了此書*/ find=1; /*設(shè)置標(biāo)志,用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束,若提前出錯(cuò),則find=2,若借了,則 find=1,若沒借為 find=0*/ for(j=i;jborrowj.borrow_book_num,q-borrowj+1.borrow_book_num); strcpy(q-borrowj.limit_date,q-borrowj+1.limit_date); strcpy(q-borrowMax-1.borrow_book_num,0); strcpy(q-borrowMax-1.limit_date,0); p-book_xy+; q-right-; printf(n 編號(hào)%s 的讀者還書完畢!按任意鍵繼續(xù)下步操作.,return_reader_num); if(find=0) /*為什么有個(gè) find=0,因?yàn)楸闅v時(shí)循環(huán) Max 次,如循環(huán)完畢還沒有找到,則說明讀者沒有借此書,find 用來保證只打印一次結(jié)果,否則每循環(huán)一次就會(huì)打印一個(gè)結(jié)果*/ printf(n 錯(cuò)誤!此讀者未借此書!按任意鍵返回.n); /*如果遍歷讀者所借的書號(hào),發(fā)現(xiàn)讀者未借此書,則提示錯(cuò)誤!*/ end: getchar

溫馨提示

  • 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. 人人文庫(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)論