版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p> 一、需求分析- 2 -</p><p> 二、概要設(shè)計(jì)- 2 -</p><p> 2.1 設(shè)計(jì)思想- 2 -</p><p> 2.2運(yùn)行平臺(tái)及開發(fā)環(huán)境- 2 -</p><p> 2.3 數(shù)據(jù)結(jié)構(gòu)- 3 -<
2、;/p><p> 2.4 系統(tǒng)結(jié)構(gòu)圖- 3 -</p><p> 三、詳細(xì)設(shè)計(jì)- 3 -</p><p> 3.1 主函數(shù)- 3 -</p><p> 3.2 圖書基本信息輸入- 4 -</p><p> 3.3查詢模塊- 5 -</p><p> 3.4 刪除模塊- 6 -
3、</p><p> 3.5 辦理借書手續(xù)模塊- 7 -</p><p> 3.6 辦理還書手續(xù)模塊- 8 -</p><p> 四、測(cè)試結(jié)果分析- 9 -</p><p> 4.1 輸入圖書信息模塊效果- 9 -</p><p> 4.2 查詢模塊效果示意- 10 -</p><
4、p> 4.3 刪除模塊效果圖- 12 -</p><p> 4.4 借閱圖書模塊效果示意圖- 12 -</p><p> 4.5 歸還圖書模塊效果示意圖- 13 -</p><p> 五、總結(jié)- 14 -</p><p> 5.1 優(yōu)缺點(diǎn)分析- 14 -</p><p> 5.2 心得體會(huì)與
5、收獲- 15 -</p><p> 六、參考文獻(xiàn)- 15 -</p><p> 七、附錄- 16 -</p><p><b> 一、需求分析</b></p><p> 先分析我所拿到的題目,我需要設(shè)計(jì)一個(gè)簡(jiǎn)單的圖書管理系統(tǒng)。分為兩個(gè)方面,一方面是對(duì)圖書的管理。首先需將圖書的基本信息寫入到指定的儲(chǔ)存圖書信息的
6、文件中;接下來是查詢功能,要實(shí)現(xiàn)根據(jù)圖書的序號(hào)和書名查詢圖書的基本信息;然后是刪除功能,要求根據(jù)輸入序號(hào)刪除對(duì)應(yīng)圖書所有信息。另一方面是學(xué)生借書和還書系統(tǒng)。借書后,要求輸入學(xué)生信息,并且與所借書本對(duì)應(yīng),并且借出后,書本所存狀態(tài)隨之發(fā)生改變,并儲(chǔ)存;還書時(shí),要求輸入學(xué)生的信息,并且將還書信息儲(chǔ)存。</p><p> 根據(jù)以上分析可知,由于圖書的信息是存放在文件中,所以要有文件的寫入讀出等操作;同時(shí)要對(duì)圖書信息和對(duì)
7、應(yīng)學(xué)生的信息進(jìn)行瀏覽、查找或刪除等一系列的操作,就要對(duì)文件的內(nèi)容進(jìn)行讀出寫入保存,就要涉及到一些簡(jiǎn)單的算法;此外,由于是一個(gè)操作系統(tǒng),就需要有主菜單實(shí)現(xiàn)選擇操作。</p><p><b> 二、概要設(shè)計(jì)</b></p><p><b> 2.1 設(shè)計(jì)思想</b></p><p> 根據(jù)以上的需求分析可以將整個(gè)系統(tǒng)的設(shè)
8、計(jì)分為六個(gè)模塊:1、輸入圖書基本信息模塊, 2、查詢圖書基本信息模塊,3、刪除圖書信息模塊,4、辦理借書手續(xù)模塊,5、辦理還書手續(xù)模塊。另外加上系統(tǒng)主菜單的選擇的設(shè)計(jì)。</p><p> 2.2運(yùn)行平臺(tái)及開發(fā)環(huán)境</p><p> 此程序是在Microsoft Visual C++軟件平臺(tái)上編譯的,具有集成開發(fā)環(huán)境,可提供編輯C語(yǔ)言,C++以及C++/CLI等等編程語(yǔ)言。VC++整合了
9、便利的除錯(cuò)工具,特別是整合了微軟視窗程式設(shè)計(jì)(Windows API)、三維動(dòng)畫DirectX API,Microsoft .NET框架。</p><p><b> 2.3 數(shù)據(jù)結(jié)構(gòu)</b></p><p> 綜合以上的分析及開發(fā)平臺(tái)特點(diǎn),我決定采用結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu),將圖書的基本信息設(shè)計(jì)為結(jié)構(gòu)體數(shù)據(jù),用來存放多種圖書的信息,把圖書的名稱、編號(hào)、單價(jià)、作者、存在狀態(tài),
10、包括與之對(duì)應(yīng)的借書人姓名、性別、學(xué)號(hào)作為結(jié)構(gòu)體成員,然后將結(jié)構(gòu)體數(shù)據(jù)存儲(chǔ)到文件中,以便實(shí)現(xiàn)信息之間的對(duì)應(yīng)輸入輸出,以及存儲(chǔ)。</p><p><b> 2.4 系統(tǒng)結(jié)構(gòu)圖</b></p><p> 根據(jù)以上分析,可得以下圖書管理系統(tǒng)設(shè)計(jì)的框圖:</p><p> 圖2-1 圖書管理系統(tǒng)設(shè)計(jì)框圖</p><p>
11、<b> 三、詳細(xì)設(shè)計(jì)</b></p><p><b> 3.1 主函數(shù)</b></p><p> 主函數(shù)的設(shè)計(jì)主要是為調(diào)用菜單函數(shù),在菜單函數(shù)中實(shí)現(xiàn)各個(gè)模塊功能子函數(shù)的調(diào)用,同時(shí)為用戶提供一個(gè)較為人性化的操作界面,能夠提示用戶進(jìn)行正確的操作,在輸入出錯(cuò)后可以有出錯(cuò)提示。具體流程圖如圖:</p><p> 圖 3-
12、1 主函數(shù)操作流程圖</p><p> 實(shí)現(xiàn)這部分功能是主要采用switch語(yǔ)句。首先用printf函數(shù)在運(yùn)行界面上打出學(xué)籍管理系統(tǒng)和個(gè)功能模塊及其對(duì)應(yīng)的數(shù)字選項(xiàng)。然后輸入要進(jìn)行的操作選項(xiàng),利用switch語(yǔ)句進(jìn)行判斷,而后進(jìn)入到不同的功能函數(shù)中,進(jìn)行不同的操作。當(dāng)然,要在進(jìn)行完某一項(xiàng)操作要調(diào)用main函數(shù),方便用戶進(jìn)行線下一項(xiàng)的操作</p><p> 3.2 圖書基本信息輸入<
13、;/p><p> 在定義變量時(shí)采用結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu),圖書編號(hào)、儲(chǔ)存的數(shù)量是整型,圖書的價(jià)格在此定義為整型(本也可以定義為float型),圖書名稱、圖書的作者是字符型,采用字符型數(shù)組,但數(shù)組長(zhǎng)度一定要足夠,否則會(huì)出現(xiàn)數(shù)據(jù)丟失錯(cuò)誤,考慮到圖書名稱、作者的字符長(zhǎng)度,在此定義它們的長(zhǎng)度要足夠。將涉及到的圖書和對(duì)應(yīng)學(xué)生的基本信息定義為結(jié)構(gòu)體。</p><p> 在將圖書的基本信息輸入時(shí),要將其保存為b
14、ook_list1.txt,用來存放所有輸入的圖書的信息。這時(shí)就涉及到文件的建立和寫入,選取較為簡(jiǎn)單的fprintf函數(shù)作為寫入文件的函數(shù)。首先定義一個(gè)指向文件的指針,再定義一個(gè)整型變量,該整型變量count是人為輸入的,其目的是為了實(shí)現(xiàn)輸入書本數(shù)目的多少,利用循環(huán)輸入。在循環(huán)輸入之前通過指針打開建立一個(gè)文本文件,循環(huán)輸入時(shí)fprintf函數(shù)自動(dòng)建立一個(gè)文本文件,實(shí)現(xiàn)向文件中寫入count組數(shù)據(jù)的功能。循環(huán)結(jié)束后文件中已經(jīng)寫入要輸入的信
15、息。流程圖如下;</p><p> 圖3-2 圖書信息輸入模塊操作流程圖</p><p><b> 3.3查詢模塊</b></p><p> 查詢模塊的基本思想比較簡(jiǎn)單,就是在已輸入的文件信息中讀取出原文件信息。我設(shè)計(jì)的具體查詢方法和操作分為兩方面:一方面是通過圖書編號(hào)進(jìn)行查詢,另一方面是通過書名進(jìn)行查詢。</p><
16、;p> 第一方面,首先在查詢函數(shù)中定義文件指針,指向要打開的文件,利用fscanf函數(shù)讀取文件中信息,如果文件指針查到的圖書編號(hào)與用戶輸入的序號(hào)相同,就將該結(jié)構(gòu)體中的圖書的基本信息從文件中輸出,顯示在屏幕上,從而實(shí)現(xiàn)基本信息的查詢。</p><p> 第二方面,首先在查詢函數(shù)中定義文件指針,指向要打開的文件,利用fscanf函數(shù)讀取文件中信息,如果文件指針查到的圖書名稱的長(zhǎng)度與用戶輸入的書名相同(利用s
17、trcmp比較字符串),就將該結(jié)構(gòu)體中的該圖書的基本信息從文件中輸出,顯示在屏幕上,從而實(shí)現(xiàn)基本信息的查詢。</p><p> 在查詢模塊成績(jī)查詢與基本信息查詢的流程一樣,應(yīng)此將二者作為一起。流程圖如下:</p><p> 圖3-3 圖書信息查詢模塊操作流程圖</p><p><b> 3.4 刪除模塊</b></p>&
18、lt;p> 刪除模快的基本思想就是后面的信息覆蓋前面的信息,后面的信息被0代替,從而實(shí)現(xiàn)刪除功能。具體實(shí)現(xiàn)方法就是選擇刪除功能,利用文件指針和fscanf函數(shù),將文件內(nèi)容讀出,顯示在屏幕上,讓用戶決定刪除哪一個(gè)學(xué)生的基本信息,然后輸入該學(xué)生的學(xué)號(hào)賦值給一個(gè)整型變量,利用for循環(huán)在文件中查找與該變量值相同的學(xué)生,找到之后將結(jié)構(gòu)體中一組空的信息(全為0)賦值給當(dāng)前結(jié)構(gòu)體,從而將該學(xué)生信息“刪除”。</p><p
19、> 同時(shí)要實(shí)現(xiàn)的是在存放成績(jī)的文件中也要該同學(xué)的成績(jī)信息刪除,原理相同,就是在找到該同學(xué)的信息之后,保留循環(huán)變量的值,再對(duì)成績(jī)文件里該同學(xué)的進(jìn)行相同覆蓋操作,即可實(shí)現(xiàn)同時(shí)在B文件刪除信息。流程圖如下;</p><p> 圖3-4 刪除模塊操作流程圖</p><p> 3.5 辦理借書手續(xù)模塊</p><p> 辦理借書手續(xù)模塊的基本思想是將文件打開,
20、然后輸入并儲(chǔ)存對(duì)應(yīng)該圖書的學(xué)生的相關(guān)信息,同時(shí),讓所存書本的數(shù)目減少借走的書的數(shù)目。在編寫函數(shù)時(shí),首先要打開圖書存儲(chǔ)所在的文件,將圖書的信息讀回到結(jié)構(gòu)體中。然后輸入要借的圖書的序號(hào),通過循環(huán)查找結(jié)構(gòu)體中圖書的編號(hào),直到找到該圖書時(shí),輸入該組對(duì)應(yīng)的學(xué)生的信息。并且輸入要借的書本的數(shù)目,此時(shí),讓所存書本的數(shù)目減少借走的書的數(shù)目,之后將這一組信息全部?jī)?chǔ)存到文件里面,完成辦理借書手續(xù)。流程圖如下:</p><p> 圖
21、3-5 辦理借書手續(xù)操作流程圖</p><p> 3.6 辦理還書手續(xù)模塊</p><p> 辦理借書手續(xù)模塊的基本思想是將文件打開,改變并儲(chǔ)該文件的信息。在編寫函數(shù)時(shí),首先要打開圖書存儲(chǔ)所在的文件,將圖書的信息讀回到結(jié)構(gòu)體中。然后輸入學(xué)生的學(xué)號(hào),通過循環(huán)查找結(jié)構(gòu)體中對(duì)應(yīng)學(xué)生的學(xué)號(hào),直到找到對(duì)應(yīng)該組圖書的信息時(shí),輸入該組圖書和學(xué)生的所有信息,之后輸入要還的書本的數(shù)目,此時(shí),讓所存書本
22、的數(shù)目增加還書的數(shù)目。如果存數(shù)等于總數(shù),則顯示完全儲(chǔ)存。之后將這結(jié)構(gòu)體信息全部存回到文件里面,完成辦理還書手續(xù)。流程圖如下:</p><p> 圖3-5 辦理還書手續(xù)操作流程圖</p><p> 以上就是各模塊的詳細(xì)設(shè)計(jì),在主菜單中選擇調(diào)用各個(gè)模塊子的函數(shù),從而實(shí)現(xiàn)不同功能。</p><p><b> 四、測(cè)試結(jié)果分析</b></
23、p><p> 4.1 輸入圖書信息模塊效果</p><p> 存放文件的位置可以有自己指定,如在打開建立一個(gè)新文件時(shí),指定存放到F://Csheji時(shí),則要在此位置才能找到文件。此時(shí),對(duì)應(yīng)學(xué)生的信息全部為0。其輸入信息與文件寫入文件的結(jié)果如下圖:</p><p> 圖 4-1 圖書信息輸入</p><p> 文件按內(nèi)容寫入如圖:<
24、/p><p> 圖 4-2 圖書信息儲(chǔ)存到文件</p><p> 4.2 查詢模塊效果示意</p><p><b> 基本信息查詢:</b></p><p> ?。?)按圖書序號(hào)查詢。過程及結(jié)果如圖4—3:(輸入圖書編號(hào))</p><p> 圖 4-3 按圖書序號(hào)查詢結(jié)果</p>
25、;<p> ?。?)按圖書名稱查詢。過程及結(jié)果如圖4—4:(輸入圖書名稱)</p><p> 圖 4-4 按圖書名稱查詢結(jié)果</p><p> 4.3 刪除模塊效果圖</p><p> 圖 4-5 注銷圖書的操作過程</p><p><b> 文件中被刪除效果:</b></p>&
26、lt;p> 圖 4-6 圖書注銷的結(jié)果顯示</p><p> 4.4 借閱圖書模塊效果示意圖</p><p> 借閱過程和結(jié)果如圖:</p><p> 圖 4-7 借閱圖書的操作示意圖</p><p> 此時(shí)文件中的儲(chǔ)存效果:(注意第二組信息:所存書本數(shù)目減少了2本,并輸入了學(xué)生信息)</p><p&g
27、t; 圖 4-8 借閱圖書的操作結(jié)果示意圖</p><p> 4.5 歸還圖書模塊效果示意圖</p><p> 歸還過程和結(jié)果如圖:</p><p> 圖 4-9 歸還圖書的操作過程示意圖</p><p> 文件中保存的結(jié)果如圖:</p><p> 圖 4-8 歸還圖書的操作結(jié)果示意圖</p&g
28、t;<p><b> 五、總結(jié)</b></p><p><b> 5.1 優(yōu)缺點(diǎn)分析</b></p><p> 優(yōu)點(diǎn)分析:針對(duì)書本題目所設(shè)計(jì)的圖書管理系統(tǒng)基本上能完成題目規(guī)定的要求。整個(gè)系統(tǒng),結(jié)構(gòu)清晰,程序思維一目了然。其中查詢模塊,我還加入了兩種查詢功能(通過編號(hào)查詢,通過書名查詢)。各個(gè)模塊運(yùn)行較好,并且并加入了模塊的完善
29、部分。比如輸入出錯(cuò),并且能從各個(gè)模塊回到主菜單進(jìn)行下一步操作等。缺點(diǎn):程序較為冗長(zhǎng),而且中間很多重復(fù)的部分因?yàn)闀r(shí)間原因未采用函數(shù)的調(diào)用,使得各個(gè)模塊中都有很多重復(fù)的部分,如回到主菜單等,造成了各個(gè)函數(shù)程序較長(zhǎng),未能精煉。</p><p> 5.2 心得體會(huì)與收獲</p><p> 個(gè)人心得體會(huì):之前剛剛拿到題目的時(shí)候,我傻眼了。一方面,C語(yǔ)言課程去年上半年就結(jié)束了,而現(xiàn)在才開始課程設(shè)計(jì)
30、,感覺很多知識(shí)都已忘卻。第二方面,本身C語(yǔ)言基礎(chǔ)不是很好,而且面對(duì)如此龐大的系統(tǒng),我感到束手無策,無從下手。而且因?yàn)闀r(shí)間原因,前面的兩天都耽誤了很多。這個(gè)時(shí)候,我很著急。后來,我決定仔細(xì)分析題目,在自己腦海里構(gòu)造一個(gè)整個(gè)系統(tǒng)的框架和模塊。各個(gè)模塊分別可以怎樣實(shí)現(xiàn)。在遇到問題和知識(shí)點(diǎn)遺漏的時(shí)候,我決定回歸課本,仔細(xì)研讀和回憶學(xué)過的知識(shí)。在我把第一個(gè)模塊成功的編寫出來的時(shí)候,我興奮了!看著程序暢通的運(yùn)行,我真的體會(huì)到了學(xué)習(xí)的快樂和成就感。但
31、是,之后我發(fā)現(xiàn),存入文件的全部是亂碼。我調(diào)試了好幾次都不行。后來我虛心向同學(xué)請(qǐng)教,才發(fā)現(xiàn)原來是文件的寫入有問題。后來經(jīng)過糾正,果然,信息能正確的儲(chǔ)存在文件里了。</p><p> 諸如這種遇到困難,然后不斷摸索和解決問題的過程,在實(shí)習(xí)的過程中還遇到了很多很多??傊诮?jīng)過無數(shù)次挑燈夜戰(zhàn)之后,程序和系統(tǒng)能正確運(yùn)行了!那種苦盡甘來,客服磨難,到達(dá)成功的彼岸的感覺,真的是太深刻,太讓我銘記了。</p>
32、<p> 同時(shí),我在編程時(shí)收獲很多,學(xué)會(huì)了如何將信息寫入到文件里,如何將文件里的內(nèi)容讀出來,學(xué)會(huì)了如何使用結(jié)構(gòu)體變量,學(xué)會(huì)了調(diào)用函數(shù),學(xué)會(huì)了用簡(jiǎn)單的算法得到想要的數(shù)據(jù),最重要的是對(duì)整個(gè)C語(yǔ)言有了一個(gè)良好的把握和正確的理解。這些,在別人眼里也許是微不足道的,但我卻覺得受益匪淺。我甚至覺得此次課程設(shè)計(jì)實(shí)習(xí)所收獲到的東西,甚至比一個(gè)學(xué)期的課堂學(xué)習(xí)都多,也可以說經(jīng)過這次的課程設(shè)計(jì)的實(shí)習(xí),我自己也成長(zhǎng)了很多。這些微小的成績(jī),都來自我的
33、刻苦努力,還有老師和同學(xué)們的熱心幫助。我還要真心的感謝給我?guī)椭睦蠋熀屯瑢W(xué)!</p><p><b> 六、參考文獻(xiàn)</b></p><p> ?。郏保葑T浩強(qiáng)《C程序設(shè)計(jì)》 第三版 清華大學(xué)出版社 2005</p><p> ?。郏玻輳埗返取禖語(yǔ)言課程設(shè)計(jì)與實(shí)習(xí)指導(dǎo)》 第一版 中國(guó)鐵道出版社 2008</p><p&
34、gt;<b> 七、附錄</b></p><p><b> 1、變量定義:</b></p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<conio.h><
35、/p><p> #include <string.h></p><p><b> int get()</b></p><p><b> {</b></p><p><b> int o;</b></p><p> scanf("
36、;%d",&o);</p><p><b> return o;</b></p><p><b> }</b></p><p> struct BOOK /*用結(jié)構(gòu)體存放書籍及借書和借閱人的信息。*/ </p><p><b> {<
37、/b></p><p><b> int num;</b></p><p> int price;</p><p> char aurthor[21];</p><p> int total;</p><p> int store;</p><p> in
38、t xuehao;</p><p> char name[31];</p><p> char sex[8];</p><p> char borrow_name[20];</p><p> }books[4];</p><p> void page_title(char*menu_item)</p&g
39、t;<p><b> {</b></p><p> printf(" 圖書管理系統(tǒng) \n-%s-\n",menu_item);</p><p><b> }</b></p><p><b> 2、主函數(shù):</b></
40、p><p> void main()</p><p><b> { </b></p><p><b> while(1)</b></p><p><b> {</b></p><p> void book_add();</p><
41、;p> void search_of_book();</p><p> void book_del();</p><p> void book_out();</p><p> void book_in();</p><p> printf(" /*************系統(tǒng)菜單*******
42、******/\n\n");</p><p> printf("\n 請(qǐng)用數(shù)字選擇操作 \n\n");</p><p> printf(" /********* 1,注冊(cè)新圖書 ***********/\n");</p>
43、<p> printf(" /********* 2,查詢圖書 ***********/\n");</p><p> printf(" /********* 3,注銷舊書 ***********/\n");</p><p> printf("
44、 /********* 4,借閱圖書 ************/\n");</p><p> printf(" /********* 5,歸還圖書 ***********/\n");</p><p> printf("\n /********* 0,退
45、 出 ***********/\n");</p><p> switch(get())</p><p><b> { </b></p><p> case 1: book_add();break;</p><p> case 2: search_of_book();break;<
46、/p><p> case 3: book_del();break;</p><p> case 4: book_out();break;</p><p> case 5: book_in();break;</p><p> default : exit(0);</p><p><b> }</b&
47、gt;</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p> 3、圖書基本信息輸入函數(shù):</p><p> void book_add()
48、 /*新圖書基本信息的輸入*/</p><p><b> {</b></p><p> int n,count,i;</p><p><b> FILE *fp;</b></p><p> page_title("/************** 注冊(cè)新圖書 ****
49、**********/");</p><p> if((fp=fopen("book_list1.txt","a+"))==NULL)</p><p> {printf("cannot open the file\n");</p><p><b> }</b></
50、p><p> printf("您需要注冊(cè)幾本書:");</p><p> scanf("%d",&count);</p><p> printf("請(qǐng)按如下順序輸入圖書信息:序號(hào) 書名 單價(jià) 作者 數(shù)量 學(xué)生姓名 性別 學(xué)號(hào)\n");</p><p> fo
51、r(n=0;n<count;n++)</p><p><b> {</b></p><p> scanf("%d %s %d %s %d %s %s %d\n",&books[n].num,books[n].name,&books[n].price,books[n].aurthor,&books[n]
52、.total,books[n].borrow_name,books[n].sex,&books[n].xuehao);</p><p> books[n].store=books[n].total;</p><p> fprintf(fp,"%d %s %d %s %d %d %s %s %d\n",books[n].num,books[n]
53、.name,books[n].price,books[n].aurthor,books[n].total,books[n].store,books[n].borrow_name,books[n].sex,books[n].xuehao);</p><p><b> }</b></p><p> fclose(fp);</p><p> p
54、rintf("1,返回主菜單 2,退出\n");</p><p> scanf("%d",&i);</p><p><b> switch(i)</b></p><p><b> {</b></p><p> case 1:main();b
55、reak;</p><p> default: exit(0);</p><p><b> }</b></p><p><b> }</b></p><p> 4、新圖書基本信息的查找函數(shù):</p><p> void search_of_book()
56、 /*新圖書基本信息的查找*/</p><p><b> {</b></p><p> int n=0,a,m,i,j=0;</p><p><b> FILE *fp;</b></p><p> char b[10];</p><p> page_title(
57、"/************** 查詢圖書信息 **************/");</p><p> printf("\n1.按圖書序號(hào)查詢,2.按圖書名稱查詢.\n");</p><p> printf(" 請(qǐng)用數(shù)字選擇操作--> \n\n&quo
58、t;);</p><p> scanf("%d",&a);</p><p> if(a==1) //按圖書序號(hào)查詢</p><p><b> {</b></p><p> printf("請(qǐng)輸入圖書序號(hào):\n");</p>
59、<p> scanf("%d",&i);</p><p> if((fp=fopen("book_list1.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("\nCannot open
60、book_list1!\n");</p><p><b> }</b></p><p> for(;!feof(fp);)</p><p><b> {</b></p><p> fscanf(fp,"%d %s %d %s %d %d %s %s %d\
61、n",&books[n].num,books[n].name,&books[n].price,books[n].aurthor,&books[n].total,&books[n].store,books[n].borrow_name,books[n].sex,&books[n].xuehao);</p><p><b> n++;</b>&
62、lt;/p><p><b> }</b></p><p> for(n=0;n<4;n++)</p><p><b> {</b></p><p> if(books[n].num==i)</p><p><b> {</b></p&
63、gt;<p> printf("書名:%s\n",books[n].name);</p><p> printf("圖書編號(hào):%d\n",books[n].num);</p><p> printf("單價(jià):%d 元\n",books[n].price);</p><p> print
64、f("作者:%s\n",books[n].aurthor);</p><p> printf("現(xiàn)存:%d 本\n",books[n].store);</p><p> printf("總數(shù):%d 本\n",books[n].total);</p><p><b> break;</b
65、></p><p><b> }</b></p><p> else printf("there is no record!!!\n");</p><p><b> }</b></p><p><b> }</b></p>&l
66、t;p> else if(a==2) //按圖書名稱查詢</p><p><b> {</b></p><p> printf("\n請(qǐng)輸入您要查詢的書名:");</p><p> scanf("%s",&b);</p><p> if((fp=fop
67、en("book_list1.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("\nCannot open book_list1!\n");</p><p><b> }</b></p>
68、<p> for(;!feof(fp);)</p><p><b> {</b></p><p> fscanf(fp,"%d %s %d %s %d %d %s %s %d\n",&books[j].num,books[j].name,&books[j].price,books[j].aurtho
69、r,&books[j].total,&books[j].store,books[j].borrow_name,books[j].sex,&books[j].xuehao);</p><p><b> j++;</b></p><p><b> }</b></p><p> for(j=0;j&
70、lt;4;j++)</p><p> if(strcmp(books[j].name,b)==0)</p><p><b> {</b></p><p> printf("書名:%s\n",books[j].name); </p><p> printf("圖書編號(hào):%d\n&
71、quot;,books[j].num);</p><p> printf("單價(jià):%d 元\n",books[j].price);</p><p> printf("作者:%s\n",books[j].aurthor );</p><p> printf("現(xiàn)存:%d 本\n",books[j].st
72、ore );</p><p> printf("總數(shù):%d 本\n",books[j].total);</p><p><b> }</b></p><p><b> }</b></p><p><b> else </b></p>&
73、lt;p><b> {</b></p><p> printf("\n輸入錯(cuò)誤(無效圖書序號(hào)或圖書名)!\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> fclose(fp
74、);</p><p> printf("1,返回主菜單 2,退出");</p><p> scanf("%d",&m);</p><p><b> switch(m)</b></p><p><b> {</b></p>&l
75、t;p> case 1:main();break;</p><p> default: exit(0);</p><p><b> }</b></p><p><b> }</b></p><p> 5、舊書的注銷函數(shù):</p><p> void book
76、_del()</p><p><b> {</b></p><p> int n,m,a,j=0;</p><p><b> FILE *fp;</b></p><p> page_title("/************** 注銷圖書信息 **************
77、/");</p><p> printf("請(qǐng)輸入您要注銷的圖書序號(hào):(<4)\n");</p><p> scanf("%d",&a);</p><p> if((fp=fopen("book_list1.txt","r"))==NULL)</p&g
78、t;<p><b> {</b></p><p> printf("\nCannot open book_list1!\n");</p><p><b> }</b></p><p> for(;!feof(fp);)</p><p><b>
79、{</b></p><p> fscanf(fp,"%d %s %d %s %d %d %s %s %d\n",&books[j].num,books[j].name,&books[j].price,books[j].aurthor,&books[j].total,&books[j].store,books[j].borrow_na
80、me,books[j].sex,&books[j].xuehao);</p><p> if(books[j].num==a)</p><p><b> {</b></p><p> printf("您要注銷的舊書的信息:圖書編號(hào) 書名 價(jià)格 作者 總數(shù) 現(xiàn)存 借閱者姓名 性別 學(xué)號(hào)\n");
81、</p><p> printf("%d %s %d %s %d %d %s %s %d\n",books[j].num,books[j].name,books[j].price,books[j].aurthor,books[j].total,books[j].store,books[j].borrow_name,books[j].sex,books[j].xuehao);&
82、lt;/p><p> books[j]=books[4];</p><p><b> }</b></p><p><b> j++;</b></p><p><b> }</b></p><p> for(n=0;n<4;n++)</p
83、><p> {fprintf(fp,"%d %s %d %s %d %d %s %s %d\n",books[n].num,books[n].name,books[n].price,books[n].aurthor,books[n].total,books[n].store,books[n].borrow_name,books[n].sex,books[n].xuehao);&l
84、t;/p><p><b> }</b></p><p> fclose(fp);</p><p> printf("圖書已成功注銷??!\n");</p><p> printf("\n1,返回主菜單 2,退出");</p><p> scanf(&
85、quot;%d",&m);</p><p><b> switch(m)</b></p><p><b> {</b></p><p> case 1:main();break;</p><p> default: exit(0);</p><p>
86、<b> }</b></p><p><b> }</b></p><p> 6、辦理借閱手續(xù)的函數(shù):</p><p> void book_out() /*借書函數(shù),首先要找書*/ </p><p><b> {</b></p><
87、p> int n=0,m,k,x,j=0,a=0;</p><p><b> FILE *fp;</b></p><p> page_title("/************** 借閱圖書 **************/");</p><p> printf("請(qǐng)輸入您想借的圖書的序號(hào):&
88、quot;);</p><p> scanf("%d",&x);</p><p> if((fp=fopen("book_list1.txt","r"))==NULL)</p><p><b> {</b></p><p> printf(&qu
89、ot;\nCannot open book_list1!\n");</p><p><b> }</b></p><p> for(;!feof(fp);)</p><p><b> {</b></p><p> fscanf(fp,"%d %s %d %s %d
90、 %d %s %s %d\n",&books[j].num,books[j].name,&books[j].price,books[j].aurthor,&books[j].total,&books[j].store,books[j].borrow_name,books[j].sex,&books[j].xuehao);</p><p><b>
91、 j++;</b></p><p><b> }</b></p><p><b> do{</b></p><p> if((books[n].num==x) && books[n].store >0)</p><p><b> {</b&
92、gt;</p><p> printf("請(qǐng)按如下順序輸入您的信息:姓名 性別 學(xué)號(hào) 想借幾本書(<= %d 本)\n",books[n].store);</p><p> scanf("%s%s%d%d",books[n].borrow_name,books[n].sex,&books[n].xuehao,&k);&
93、lt;/p><p> printf("本書現(xiàn)存: %d 本\n",books[n].store);</p><p> books[n].store=books[n].store-k;</p><p> printf("本書還有: %d 本\n",books[n].store);</p><p> p
94、rintf("借閱成功?。n");</p><p><b> a=1;</b></p><p><b> }</b></p><p><b> n++;</b></p><p> if(n==4) { a=2; break;}</p>
95、<p> //else if(a==0) printf("此書已借完或輸入錯(cuò)誤(本館沒有您想要的書)。\n");</p><p> }while(a==0);</p><p> if(a==2) printf("此書已借完或輸入錯(cuò)誤(本館沒有您想要的書)。\n");</p><p> fclose(fp);
96、</p><p> if((fp=fopen("book_list1.txt","w+"))==NULL) //重新寫入并替換文件</p><p> {printf("cannot open the file\n");</p><p><b> }</b></p>
97、<p> for(n=0;n<4;n++)</p><p> {fprintf(fp,"%d %s %d %s %d %d %s %s %d\n",books[n].num,books[n].name,books[n].price,books[n].aurthor,books[n].total,books[n].store,books[n].borrow
98、_name,books[n].sex,books[n].xuehao);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("1,返回主菜單 2,退出");</p><p> scanf("%d",&
99、m);</p><p><b> switch(m)</b></p><p><b> {</b></p><p> case 1:main();break;</p><p> default: exit(0);</p><p><b> }</b&
100、gt;</p><p><b> }</b></p><p> 7、辦理還書手續(xù)的函數(shù):</p><p> void book_in() /*還書函數(shù)*/</p><p><b> {</b></p><p> int n,a,b,m,j=0;</p&g
101、t;<p><b> FILE *fp;</b></p><p> page_title("/************** 還圖書 **************/");</p><p> printf("輸入您的學(xué)號(hào):\n");</p><p> scanf("
102、%d",&a);</p><p> if((fp=fopen("book_list1.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("\nCannot open book_list1!\n");<
103、/p><p><b> }</b></p><p> for(;!feof(fp);)</p><p><b> {</b></p><p> fscanf(fp,"%d %s %d %s %d %d %s %s %d\n",&books[j].num
104、,books[j].name,&books[j].price,books[j].aurthor,&books[j].total,&books[j].store,books[j].borrow_name,books[j].sex,&books[j].xuehao);</p><p> if(books[j].xuehao==a)</p><p><b&
105、gt; {</b></p><p> printf("您的信息:\n");</p><p> printf("姓名:%s\n",books[j].borrow_name);</p><p> printf("性別:%s\n",books[j].sex);</p><p
106、> printf("學(xué)號(hào):%d\n",books[j].xuehao);</p><p> printf("\n您的相關(guān)借閱信息:\n");</p><p> printf("書名:%s\n",books[j].name);</p><p> printf("作者:%s\n"
107、;,books[j].aurthor);</p><p> printf("本書現(xiàn)存:%d\n",books[j].store);</p><p> printf("\n您還幾本書:\n");</p><p> scanf("%d",&b);</p><p> boo
108、ks[j].store=books[j].store+b;</p><p> printf("還書成功。\n\n");</p><p><b> }</b></p><p><b> }</b></p><p> fclose(fp);</p><p&
109、gt; if((fp=fopen("book_list001.txt","w+"))==NULL) //重新寫入并替換文件</p><p> {printf("cannot open the file\n");</p><p><b> }</b></p><p> for
110、(n=0;n<4;n++)</p><p> {fprintf(fp,"%d %s %d %s %d %d\n",books[n].num,books[n].name,books[n].price,books[n].aurthor,books[n].total,books[n].store);</p><p><b> }</b>
111、;</p><p> fclose(fp);</p><p> printf("1,返回主菜單 2,退出");</p><p> scanf("%d",&m);</p><p><b> switch(m)</b></p><p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)--圖書管理系統(tǒng)
- 圖書管理系統(tǒng)c++課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--圖書管理系統(tǒng)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--圖書管理系統(tǒng)
- c課程設(shè)計(jì)報(bào)告-- 圖書管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)(圖書管理系統(tǒng))
- c#-圖書管理系統(tǒng)-課程設(shè)計(jì)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)-圖書管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---圖書管理系統(tǒng)
- 課程設(shè)計(jì)---課程設(shè)計(jì)圖書管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--圖書管理
- 《圖書管理系統(tǒng)》課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告~圖書管理系統(tǒng)
- 圖書管理系統(tǒng)課程設(shè)計(jì)
- 圖書管理系統(tǒng)課程設(shè)計(jì)
- 圖書管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)---圖書管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論