




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)沈航北方科技學院沈航北方科技學院課程設(shè)計說明書課程設(shè)計說明書 課程名稱課程名稱 c 語言課程設(shè)計語言課程設(shè)計 教教 學學 部部 機械工程系機械工程系 專專 業(yè)業(yè) 數(shù)控數(shù)控 班班 級級 B B 學學 號號 B B 學生姓名學生姓名 田文田文 指導教師指導教師 趙小磊趙小磊 _ _ 20122012 年年 6 6 月月精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)鏈表實現(xiàn)圖書信息操作鏈表實現(xiàn)圖書信息操作田文田文目錄摘摘 要要.11 緒論緒論.12 系統(tǒng)分析系統(tǒng)分析.12.1 功能需求.12.2 數(shù)據(jù)需求.22.3 性能需求.23 總體設(shè)計總體設(shè)計.23.1 功
2、能模塊設(shè)計.23.2 系統(tǒng)設(shè)計方案.64 詳細設(shè)計詳細設(shè)計.74.1 登錄模塊.74.2 借書管理模塊.84.3 還書管理模塊.95 調(diào)試與測試調(diào)試與測試.105.1 調(diào)試.105.2 測試.116 結(jié)論結(jié)論.12結(jié)束語結(jié)束語.12參考文獻參考文獻.12附錄附錄 1用戶手冊用戶手冊(另起一頁)(另起一頁).13附錄附錄 2源程序源程序(另起一頁)(另起一頁).15精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)摘摘 要要經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致分為五個模塊,其中每一個模塊對應(yīng)一個函數(shù),他們的功能分別是:圖書信息輸入函數(shù) input(),借閱圖書函數(shù)(borrow),增加刪
3、除圖書函數(shù)(adddelet),圖書查詢函數(shù)(search),以及歸還圖書信息函數(shù)(giveback)。在這些函數(shù)當中,這四個函數(shù)的實現(xiàn)嚴格按照題目的要求。1、圖書信息輸入函數(shù) 主要功能是從鍵盤輸入圖書信息并將其寫入文件中,作為圖書館的書庫,以便對下面的函數(shù)進行運行,此函數(shù)是基礎(chǔ).2、圖書借閱函數(shù) 主要借閱圖書的功能和錄入學生應(yīng)該還書的時間;3、圖書歸還函數(shù) 主要實現(xiàn)借閱圖書后,歸還圖書的功能,并把應(yīng)該還書的時間和實際還書的時間進行比較過期時輸出學生的信息,也是該程序的的一個重點4、增加刪除圖書函數(shù) 實現(xiàn)的功能是實現(xiàn)對圖書的刪除;5、圖書查詢函數(shù) 允許按照圖書編號,書名,作者,出版社進行查詢,
4、并將查詢信息輸出;6、退出函數(shù) 該函數(shù)主要實現(xiàn)退出運行界面的功能.除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運行當中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。每一個圖書記錄都包含:圖書編號,名稱,出版社,作者,現(xiàn)有數(shù)量和總量在程序當中,將圖書記錄類型定義為結(jié)構(gòu)體類型,并把它寫入 d:liuyan.txt 中,其他函數(shù)每次對圖書記錄的訪問,其數(shù)據(jù)來源都是 d:liuyan.txt 文件,這樣做不但可以保證圖書數(shù)據(jù)的一致性,而且可以對圖書數(shù)據(jù)進行永久保存,保證每次運行程序都可以采用原來的數(shù)據(jù)。1 1 緒論緒論整個程序的設(shè)計實現(xiàn)大致分為五個模塊,其中每一個模塊對應(yīng)一個函數(shù),他們的
5、功能分別是:圖書信息輸入函數(shù) input(),借閱圖書函數(shù)(borrow),增加刪除圖書函數(shù)(adddelet),圖書查詢函數(shù)(search),以及歸還圖書信息函數(shù)(giveback)。在這些函數(shù)當中,這四個函數(shù)的實現(xiàn)嚴格按照題目的要求。2 2 系統(tǒng)分析系統(tǒng)分析2.12.1 功能需求功能需求設(shè)計一個通過鏈表實現(xiàn)對圖書信息進行管理的程序,要求完成以下功能:1. 建立一個鏈表,每個結(jié)點應(yīng)包含以下信息:圖書號、書名及出版社、價格、ISBN、作者、冊數(shù);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)2. 將輸入信息按圖書號進行從小到大的排序;3. 實現(xiàn)查詢功能輸入書名,查詢輸出相關(guān)信息;4. 實現(xiàn)插入功能
6、輸入圖書信息并插入有序鏈表中;5. 實現(xiàn)刪除功能輸入書名或書號,可將其信息從鏈表中刪除;6. 統(tǒng)計鏈表中圖書總價值,并在屏幕上輸出;7. 統(tǒng)計該鏈表中價值超過某一數(shù)目的圖書總數(shù),并在屏幕上輸出。8. 有界面友好易于使用的菜單。2.2 數(shù)據(jù)需求數(shù)據(jù)需求需要向系統(tǒng)輸入圖書號、書名及出版社、價格、ISBN、作者、冊數(shù)2.3 性能需求性能需求在運行本程序時只要按照正確的操作方法不會出現(xiàn)無法運行的情況,系統(tǒng)穩(wěn)定性好,安全,可靠。3 總體設(shè)計總體設(shè)計3.1 功能模塊設(shè)計功能模塊設(shè)計根據(jù)分析整個系統(tǒng)主要劃分為 4 個功能模塊,分別執(zhí)行要求中的功能。該系統(tǒng)需要有添加,刪除,查詢,修改,累加,循環(huán)顯示主菜單,保
7、存信息功能,能將會員卡進行注銷,利用顯示函數(shù)將會員卡內(nèi)所有信息顯示。要求有循環(huán)顯示菜單工能。功能模塊圖如圖 1 所示。(1)輸入讀者輸入相關(guān)讀者信息至內(nèi)存中;(2) 輸入書籍輸入書籍號,對已存的書籍信息進行查詢;(3) 書籍管理模塊輸入相應(yīng)代碼,對相關(guān)信息進行查詢;(4) 退出管理模塊主菜單中輸入 0 退出系統(tǒng)登錄;精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 圖書管理系統(tǒng) 輸 入 讀 者 輸 入 書 籍 書 籍 管 理 退 出 系 統(tǒng) 登 錄 圖圖 1 圖書管理系統(tǒng)流程圖圖書管理系統(tǒng)流程圖管管理理員員版版圖圖書書管管理理系系統(tǒng)統(tǒng)新新書書入入庫庫查查詢詢借借書書登登記記書書籍籍數(shù)數(shù)量量書書籍籍信
8、信息息修修改改還還書書管管理理書書籍籍信信息息查查詢詢圖圖 2 管理員版圖書管理系統(tǒng)流程圖管理員版圖書管理系統(tǒng)流程圖退退出出查查詢詢按按照照讀讀者者姓姓名名查查詢詢按按照照讀讀者者編編號號查查詢詢按按照照圖圖書書作作者者查查詢詢按按照照圖圖書書名名查查詢詢按按照照圖圖書書編編號號查查詢詢圖圖書書查查詢詢系系統(tǒng)統(tǒng)主主界界面面圖圖 3 圖書查詢主界面流程圖圖書查詢主界面流程圖精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)3.2 系統(tǒng)設(shè)計方案系統(tǒng)設(shè)計方案設(shè)計一個總菜單,1 登錄信息,2 查詢管理,3 書籍管理系統(tǒng),4 退出系統(tǒng)?;竟δ艿膶崿F(xiàn)都將體現(xiàn)在這幾個菜單選項中。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(); /*新書入庫*/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 按 任 意 鍵 進 入 系 統(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-新書入庫 *n);printf(*t2- 查詢 *n);printf(*t3-借書登記 *n);printf(*t4
12、-還書管理 *n);printf(=n);printf(請選擇相應(yīng)代碼:); 4 詳細設(shè)計詳細設(shè)計 4.1 登錄模塊登錄模塊開始intj=1,m;m=1!InsertLinklist(Linklist)L)printf(t輸入下一個讀者信息?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輸入下一個書籍信息?n);圖圖 5 5:輸入書籍
13、信息:輸入書籍信息4.2 借書管理模塊借書管理模塊主菜單中輸入讀者和書籍信息后,對已存的書籍進行借閱,程序流程如圖4 所示。精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 開開始始 讀讀方方式式打打開開文文件件不不成成功功? 輸輸入入你你的的學學號號和和要要借借書書的的名名 循循環(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 還書管理模塊還書管理模塊對于已還書籍進行管理
14、,程序流程如圖 4 所示。精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 開開始始以以讀讀取取方方式式打打開開文文件件不不成成功功輸輸入入讀讀者者信信息息輸輸入入書書籍籍信信息息循循環(huán)環(huán)變變量量i ii i 1 10 00 00 0輸輸入入編編號號與與書書庫庫編編號號一一致致輸輸出出還還書書成成功功關(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)試與測試與測試5.1 調(diào)試調(diào)試調(diào)試是軟件開發(fā)過程中的一個重要環(huán)節(jié),也是最復雜,對軟件開發(fā)者者來說也是最艱巨的任務(wù)。調(diào)試的任務(wù)是及時改正測試過程中發(fā)現(xiàn)的軟件錯誤。具
15、體地說,調(diào)試過程由兩個步驟組成,它從表示程序中存在錯誤的某跡象開始,首先確定錯誤的準確位置,也就是找出哪個模塊或哪個語句引起的錯誤。然后仔細研究推斷代碼以確定問題的原因,并設(shè)法改正。調(diào)試過程主要是運行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到問題、原因和解決方法如下面介紹。(1) 程序只能在當前運行時才能實現(xiàn)自動生成書籍信息,而關(guān)閉系統(tǒng)再次精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)打開添加新讀者又從 0 開始與之前的讀者重復,導致借還信息程序管理混亂,無法正確運行。原因:在執(zhí)行后系統(tǒng)沒有記錄當前的讀者信息,因為讀者信息自動按1、2、3、4 依次遞增生成
16、系統(tǒng);應(yīng)該記錄最后所生成的讀者信息,在下次運行程序時系統(tǒng)會接著上次記錄的讀者信息自動依次生成。(2)運行完程序一次有錯誤提醒原因:上次運行程序后沒有關(guān)閉操作界面當點擊編譯時會有一個錯誤提示,解決方法:將上一次運行時的操作界面關(guān)閉。(3)設(shè)計過程中的想法與程序中的不足總的來說這個程序大致實現(xiàn)了題目的要求,但是這套程序仍然存在著很多的問題與不足。比如,程序中主函數(shù)寫的有點繁瑣,有太多的嵌套,不是那么井然有序,條理清晰,程序注釋也不是很完善,對信息處理功能還有些不足之處,提示信息不明確。還有就是沒能做到模糊查詢。這個系統(tǒng)主要是參照課本手機通訊錄模版編寫的,同時也得到了老師和同學的一些幫助。我在做系統(tǒng)
17、的過程中也遇到了很多問題,有的是知識不足,有的是考慮不夠周全。事實證明,只靠自己的知識面還是很窄,獨立處理問題能力不是很強,以后還要加強對 c 語言的學習。 我認為對于 C 語言編寫的程序來說,使用方法大致都是一樣的,所以如果要改進的話,就是要改進一些算法,盡量把界面編寫清楚,提示信息全面,方便易用。5.2 測試測試軟件測試是軟件生存期中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程” ?;蛘哒f,軟件測試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及
18、其預期的輸出結(jié)果) ,并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤或缺陷。過度測試則會浪費許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出了過高的代價。測試數(shù)據(jù)過程如下。(1) 登陸功能測試輸入數(shù)據(jù) 1:讀者編號:23,讀者姓名:tianwen,書籍編號:01,書名:xyz 作者:xxx,數(shù)量:10精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)預期結(jié)果:數(shù)據(jù)輸入到系統(tǒng)中;運行結(jié)果:出現(xiàn)圖書管理系統(tǒng)主菜單說明:登陸功能實現(xiàn)(2) 借書功能測試。 。 。(3) 還書功能測試。 。 。6 結(jié)論結(jié)論計算機綜合訓練順利完成,任務(wù)書中所提出的要求全部實現(xiàn),可以對會員信息進行添加、修改、刪除以及按各種信息查
19、找,可將會員本次消費金額累加到會員卡上,能夠自動生成會員卡號并且將各種信息保存到文本文件中。不過這個程序還有些不夠完善,例如:在添加新會員時當會員信息全部輸入之后系統(tǒng)中的全部會員信息自動顯示,這樣非常占用操作界面,使操作不是十分清晰;再一個就是系統(tǒng)無法正確識別身份證號和電話好碼只能靠會員卡管理員的認真細心才能減少出錯,改進方式:調(diào)用一個可以判斷號碼位數(shù)的函數(shù),如果輸入位數(shù)不合法則提出警告重新輸入。結(jié)束語結(jié)束語在這一個星期的實踐中,通過編寫這個圖書管理系統(tǒng),我體會到了 c 語言學習的實用性。將理論和實踐結(jié)合在一起,用先進的計算機工具方便人們的生活。C 語言程序的編寫首先要從大局考慮,把自己編寫整
20、個程序的思想都寫在草稿上,這樣有助于自己編寫程序,在編寫時要完善注釋,方便其他人理解程序。編寫的程序從理論上來說并沒有錯,但一上機就問題不斷。甚至有些課本上的知識照搬不變,也不能得到正確的結(jié)果。有時一個程序改了一遍又一遍,但就是不能成功,編程顯得枯燥乏味,看似簡單的程序題,在調(diào)試時卻屢屢出錯。經(jīng)反復的修改后,結(jié)果正確了,這時所有的乏味都顯得那么無力,一切都是值得的。我認為,開發(fā)一套系統(tǒng),最重要的是細心,并且思考要全面,結(jié)合實際,充分考慮到客戶的需求和現(xiàn)實意義。不管什么系統(tǒng),只用運用到實際應(yīng)用中,才具有現(xiàn)實意義。 所以 c 語言程序的實用性很強,我們以后還要更加努力認真地學習編程語言。參考文獻參
21、考文獻精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)附錄附錄 1用戶手冊用戶手冊點擊運行,首先出現(xiàn)的是菜單界面,選擇菜單選項進行操作,可進行如圖8 所示。系統(tǒng)主界面(選擇數(shù)字進入,退出系統(tǒng))圖圖 8 菜單界面菜單界面選擇 1 進入系統(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(); /*新書入庫*/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 按 任 意 鍵 進 入 系 統(tǒng) .);getchar(); system(cls);int Menu() /*主菜單*/ int sn;printf(ntt 圖書管理系統(tǒng)主菜單n);printf(=n);printf(*t0-退出系統(tǒng) *n);printf(*t1-新書入庫 *n);printf(*t2- 查詢 *n);printf(*t3-借書登記 *n);printf(*t4-還書管理 *n);printf(=n);printf(請選擇相應(yīng)代碼:); for(;) s
26、canf(%d,&sn); fflush(stdin); if(sn4) printf(n 錯誤!請重新輸入:); else break;return sn; void Menu_select()/*主菜單選擇函數(shù)*/for(;) /*循環(huán)調(diào)用模式,保證能進行重復操作*/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 錯誤!);exit(0); void Init() /*初始化*/ Init_reader(); Init_book();void Init_reader() /*初始化讀者信息*/ RD *p0; int i; printf(n 讀者初始化開始,請輸入讀者信息.n 包括編號.姓名.n); p0=(RD*)malloc(sizeof(RD);
28、h_reader=p0; printf(n 請輸入讀者的信息:n); printf(ReaderNo.:); /*輸入讀者編號(唯一)*/ 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 圖書初始化開始,請輸入圖書信息.n 包括編號.書名.數(shù)量.n);p0=(BK*)malloc(sizeof(BK);h_book=p0; printf(n 請輸入圖書信息:n); printf(BookNo.:); /*輸入圖書編號(唯一)*/ 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; /*開始時圖書現(xiàn)有量和庫存量相等*/ p0-next=NULL; printf(n 圖書信息初始化完畢!按任意鍵繼續(xù)下一步操作.n); getchar(); system(cls);void Insert_New_Book()/*新書入庫*/BK *p,*p0,*p1; p=p1=h_book;printf(n 新書入庫模塊.n)
31、;printf(n 請輸入新書信息.n 包括書號.書名.數(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) /*此處分兩種情況,若圖書編號存在,則直接進庫,只須輸入書的數(shù)量*/ printf(n 此編號圖書已存在!直接入庫!n); printf(Number:); scanf(%d
32、,&p0-book_kc); p1-book_kc+=p0-book_kc; p1-book_xy+=p0-book_kc; else/*若不存在,則需要輸入其他的信息 ,然后在進行插入操作*/ 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 新書入庫完畢!按任意鍵繼續(xù)下一步操作.n); getchar(); system(cls);int Find() /*查找菜單*/int sn;printf(ntt 信息查詢菜單n);printf(=n);printf(*t0-返回上級 t*n);printf(*t t*n);printf(*t1-查找圖書 2-查
34、找讀者 t*n);printf(*t t*n);printf(*t3-打印圖書 4-打印讀者 t*n);printf(=n);printf(請選擇相應(yīng)代碼:);for(;) /*循環(huán)調(diào)用模式,保證能進行重復操作*/ scanf(%d,&sn); fflush(stdin); if(sn4) printf(n 錯誤!請重新輸入:); else break; return sn; void Find_Select() /*查找菜單選擇函數(shù)*/system(cls);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)for(;) /*循環(huán)調(diào)用模式,保證能進行重復操作*/ 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 錯誤!);exit(0); void Find_Reader() /*查找讀者信息*/RD *p;int i;char find_reader10;p=h_reader;printf(n 讀者信息查詢模塊n);printf(n 請輸入你要查詢讀
36、者編號:);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 讀者編號:%s 的信息為:n,find_reader); printf(ReaderNo.tReaderName); /*此處這樣處理,是為了能實現(xiàn)一個讀者能借多本書 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 此讀者編號不存在,請核對!按任意鍵返回.);精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)getchar(); system(cls);void Find_Book() /*查找圖書信息*/BK *p;char find_book10; /*功能很簡單,讀者編號唯一,查找只須一次遍歷*/p=h_book;printf(n 圖書信息查詢模塊n);printf(n 請輸入你要查詢圖書編號:);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) /*找到了就打印,否則提示不存在,或出錯*/ printf(n 圖書編號:%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 此圖書編號不存在,請核對!按任意鍵返回.);getchar(); system(cls);void Print_reader() /*打印讀者信息*/ RD *p;int i;p=h_reader;printf(n 讀者信息如下:nn);printf(ReaderNo.tReaderName); /*此處這樣處理,是為了能實現(xiàn)一個讀者能借多本書 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 請輸入借書的讀者編號:); /*先輸入借書的讀者信息*/
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ù),不存在就、則提示錯誤!*/ printf(n 此讀者編號不存在!按任意鍵返回.n); goto END; 精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) printf(n 請輸入你要借的書的編號:); 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ù),不存在就、則提示錯誤!*/ printf(n 此圖書編號不存在!按任意鍵返回.n); else if(p0-book_xyright=Max) /*判斷此讀者借書權(quán)限是否已達最大*/ 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 抱歉!同一個讀者不能同借兩本相同的書!n); else if(strcmp(p1-borrowi.borrow_book_num,0)=0) /*如果沒有重復*/ printf(n 請輸入你要歸還圖書的日期:); scanf(%s,lim_date); strcpy(p1-borrowp1-right+.borrow_book_num,bo_num); /*記錄所借書號,并且借書數(shù)目加
45、一,現(xiàn)存量減一*/ strcpy(p1-borrowp1-right-1.limit_date,lim_date); p0-book_xy-; printf(n 讀者編號%s 借書完畢!按任意鍵繼續(xù)下步操作.,p1-reader_num); else /*此讀者從未借過書*/ printf(n 請輸入你要歸還圖書的日期:); scanf(%s,lim_date); strcpy(p1-borrowp1-right+.borrow_book_num,bo_num); /*記錄所借書號,并且精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)借書數(shù)目加一,現(xiàn)存量減一*/ strcpy(p1-borrowp1
46、-right-1.limit_date,lim_date); p0-book_xy-; printf(n 讀者編號%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 請輸入要還書的讀者編號:); /*基本同上*/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è)置標志,用于判斷讀者是否借了此書或是否出錯提前結(jié)束,若提前出錯,則 find=2,若借了,則 find=1,若沒借為 find=0*/ printf(n 此讀者編號不存在!按任意鍵返回.n); goto end; printf(n 請
48、輸入讀者還書的編號:); 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è)置標志,用于判斷讀者是否借了此書或是否出錯提前結(jié)束,若提前出錯,則find=2,若借了,則 find=1,若沒借為 find=0*/ printf(n 錯誤!此圖書編號不存在!按任意鍵返回.n); goto end; for(i=0;ibo
49、rrowi.borrow_book_num)=0) /*如果此讀者借了此書*/ find=1; /*設(shè)置標志,用于判斷讀者是否借了此書或是否出錯提前結(jié)束,若提前出錯,則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 編號%s 的讀者還書完畢!按任意鍵繼續(xù)下步操作.,return_reader_num); if(find=0) /*為什么有個 find=0,因為遍歷時循環(huán) Max 次,如循環(huán)完畢還沒有找到,則說明讀者沒有借此書,find 用來保證只打印一次結(jié)果,否則每循環(huán)一次就會打印一個結(jié)果*/ printf(n 錯誤!此讀者未借此書!按任意鍵返回.n); /*如果遍歷讀者所借的書號,發(fā)現(xiàn)讀者未借此書,則提示錯誤!*/ end: getchar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 30105-2:2024 EN Information technology - IT Enabled Services-Business Process Outsourcing (ITES-BPO) lifecycle processes - Part 2: Process assessment model (PAM)
- 【正版授權(quán)】 ISO 13315-2:2025 EN Environmental management for concrete and concrete structures - Part 2: System boundary and inventory data
- 2025年度公共設(shè)施裝修工期延誤賠償及質(zhì)量保證協(xié)議
- 2025年度電子商務(wù)交易安全保障合同
- 2025高考作文預測:正確“出圈”才能出彩
- 個人職業(yè)能力提升計劃
- 未來年的市場拓展計劃
- 提升職業(yè)道德與素養(yǎng)的工作計劃
- 班級網(wǎng)絡(luò)學習平臺的搭建與維護計劃
- 2025年休閑專用車及其零附件項目建議書
- 小學期末班級頒獎典禮動態(tài)PPT模板
- 液堿生產(chǎn)工序及生產(chǎn)流程敘述
- 心理抗壓能力測試例題
- 三年級學生《成長記錄》模板
- 好書推薦——《三毛流浪記》
- 方菱F2100B中文系統(tǒng)說明書
- 人教版動手動腦學物理答案 八下
- 九宮格數(shù)獨題目(打印版)
- 內(nèi)燃機基本知識
- 抹灰工程施工合同-
- 2019.2青島版五四制五年級下冊數(shù)學教學計劃(附教學進度表)
評論
0/150
提交評論