已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
沈航北方科技學(xué)院沈航北方科技學(xué)院 課程設(shè)計(jì)說明書課程設(shè)計(jì)說明書 課程名稱課程名稱 c c 語言課程設(shè)計(jì)語言課程設(shè)計(jì) 教教 學(xué)學(xué) 部部 機(jī)械工程系機(jī)械工程系 專專 業(yè)業(yè) 數(shù)控?cái)?shù)控 班班 級(jí)級(jí) B042111B042111 學(xué)學(xué) 號(hào)號(hào) B04211123B04211123 學(xué)生姓名學(xué)生姓名 田文田文 指導(dǎo)教師指導(dǎo)教師 趙小磊趙小磊 20122012 年年 6 6 月月 鏈表實(shí)現(xiàn)圖書信息操作鏈表實(shí)現(xiàn)圖書信息操作 田文田文 目錄 摘摘 要要 1 1 1 1 緒論緒論 1 1 2 2 系統(tǒng)分析系統(tǒng)分析 1 1 功能需求 1 數(shù)據(jù)需求 2 性能需求 2 3 3 總體設(shè)計(jì)總體設(shè)計(jì) 2 2 功能模塊設(shè)計(jì) 2 系統(tǒng)設(shè)計(jì)方案 6 4 4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 7 7 登錄模塊 7 借書管理模塊 8 還書管理模塊 9 5 5 調(diào)試與測(cè)試調(diào)試與測(cè)試 1010 調(diào)試 10 測(cè)試 11 6 6 結(jié)論結(jié)論 1212 結(jié)束語結(jié)束語 1212 參考文獻(xiàn)參考文獻(xiàn) 1212 附錄附錄 1 1 用戶手冊(cè) 用戶手冊(cè) 另起一頁 另起一頁 1313 附錄附錄 2 2 源程序 源程序 另起一頁 另起一頁 1515 摘摘 要要 經(jīng)過對(duì)程序設(shè)計(jì)題目的分析可知 整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為五個(gè)模塊 其中每一個(gè)模塊對(duì)應(yīng)一個(gè)函數(shù) 他們的功能分別是 圖書信息輸入函數(shù) input 借閱圖書函數(shù) borrow 增加刪除圖書函數(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)行查詢 并將查 詢信息輸出 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 中 其他函數(shù)每次對(duì) 圖書記錄的訪問 其數(shù)據(jù)來源都是 d 文件 這樣做不但可以保證圖書數(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ù) 他們的功能分別是 圖書信息輸入函數(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)分析 功能需求功能需求 設(shè)計(jì)一個(gè)通過鏈表實(shí)現(xiàn)對(duì)圖書信息進(jìn)行管理的程序 要求完成以下功能 1 建立一個(gè)鏈表 每個(gè)結(jié)點(diǎn)應(yīng)包含以下信息 圖書號(hào) 書名及出版社 價(jià) 格 ISBN 作者 冊(cè)數(shù) 2 將輸入信息按圖書號(hào)進(jìn)行從小到大的排序 3 實(shí)現(xiàn)查詢功能 輸入書名 查詢輸出相關(guān)信息 4 實(shí)現(xiàn)插入功能 輸入圖書信息并插入有序鏈表中 5 實(shí)現(xiàn)刪除功能 輸入書名或書號(hào) 可將其信息從鏈表中刪除 6 統(tǒng)計(jì)鏈表中圖書總價(jià)值 并在屏幕上輸出 7 統(tǒng)計(jì)該鏈表中價(jià)值超過某一數(shù)目的圖書總數(shù) 并在屏幕上輸出 8 有界面友好易于使用的菜單 數(shù)據(jù)需求數(shù)據(jù)需求 需要向系統(tǒng)輸入圖書號(hào) 書名及出版社 價(jià)格 ISBN 作者 冊(cè)數(shù) 性能需求性能需求 在運(yùn)行本程序時(shí)只要按照正確的操作方法不會(huì)出現(xiàn)無法運(yùn)行的情況 系統(tǒng) 穩(wěn)定性好 安全 可靠 3 3 總體設(shè)計(jì)總體設(shè)計(jì) 功能模塊設(shè)計(jì)功能模塊設(shè)計(jì) 根據(jù)分析整個(gè)系統(tǒng)主要?jiǎng)澐譃?4 個(gè)功能模塊 分別執(zhí)行要求中的功能 該系統(tǒng)需要有 添加 刪除 查詢 修改 累加 循環(huán)顯示主菜單 保存信息功能 能將會(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)登錄 圖書管理系統(tǒng) 輸 入 讀 者 輸 入 書 籍 書 籍 管 理 退 出 系 統(tǒng) 登 錄 圖圖 1 1 圖書管理系統(tǒng)流程圖圖書管理系統(tǒng)流程圖 管管理理員員版版圖圖書書管管理理系系統(tǒng)統(tǒng) 新新 書書 入入 庫(kù)庫(kù) 查查 詢?cè)?借借 書書 登登 記記 書書 籍籍 數(shù)數(shù) 量量 書書 籍籍 信信 息息 修修 改改 還還 書書 管管 理理 書書 籍籍 信信 息息 查查 詢?cè)?圖圖 2 2 管理員版圖書管理系統(tǒng)流程圖管理員版圖書管理系統(tǒng)流程圖 退退 出出 查查 詢?cè)?按按 照照 讀讀 者者 姓姓 名名 查查 詢?cè)?按按 照照 讀讀 者者 編編 號(hào)號(hào) 查查 詢?cè)?按按 照照 圖圖 書書 作作 者者 查查 詢?cè)?按按 照照 圖圖 書書 名名 查查 詢?cè)?按按 照照 圖圖 書書 編編 號(hào)號(hào) 查查 詢?cè)?圖圖書書查查詢?cè)兿迪到y(tǒng)統(tǒng)主主界界面面 圖圖 3 3 圖書查詢主界面流程圖圖書查詢主界面流程圖 系統(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 next 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 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 Login 登陸 system cls printf n n n t t t 歡迎登陸本系統(tǒng) n printf n n t t 系統(tǒng)版權(quán)所有 n n n n n n n printf n n n t t 按 任 意 鍵 進(jìn) 入 系 統(tǒng) getchar system cls int Menu 主菜單 int sn printf n t t 圖書管理系統(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)代碼 4 4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 登錄模塊登錄模塊 開始 intj 1 m m 1 InsertLinklist Linklist L printf t輸入下一個(gè)讀者信息 n printf 內(nèi)存已滿 n exit OVERFLOW 結(jié)束 圖圖 4 4 輸入讀者信息 輸入讀者信息 開始 intj 1 m m 1 InsertLinklist Linklist L printf 內(nèi)存已滿 n exit OVERFLOW 結(jié)束 printf t輸入下一個(gè)書籍信息 n 圖圖 5 5 輸入書籍信息 輸入書籍信息 借書管理模塊借書管理模塊 主菜單中輸入讀者和書籍信息后 對(duì)已存的書籍進(jìn)行借閱 程序流程如圖 4 所示 開開始始 讀讀方方式式打打開開文文件件不不成成功功 輸輸入入你你的的學(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 return Y N N Y Y N N N N Y Y 圖圖 6 6 借書模塊流程圖借書模塊流程圖 還書管理模塊還書管理模塊 對(duì)于已還書籍進(jìn)行管理 程序流程如圖 4 所示 開開始始 以以讀讀取取方方式式打打開開 文文件件不不成成功功 輸輸入入讀讀者者信信息息 輸輸入入書書籍籍信信息息 循循環(huán)環(huán)變變量量i i i 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 k r re et tu ur rn n 圖圖 7 7 還書模塊流程圖還書模塊流程圖 5 5 調(diào)試調(diào)試與測(cè)試與測(cè)試 調(diào)試調(diào)試 調(diào)試是軟件開發(fā)過程中的一個(gè)重要環(huán)節(jié) 也是最復(fù)雜 對(duì)軟件開發(fā)者者來 說也是最艱巨的任務(wù) 調(diào)試的任務(wù)是及時(shí)改正測(cè)試過程中發(fā)現(xiàn)的軟件錯(cuò)誤 具 體地說 調(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) 再次打開添加新讀者又從 0 開始與之前的讀者重復(fù) 導(dǎo)致借還信息程序管理混 亂 無法正確運(yùn)行 原因 在執(zhí)行后系統(tǒng)沒有記錄當(dāng)前的讀者信息 因?yàn)樽x者信息自動(dòng)按 1 2 3 4 依次遞增生成系統(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)的過程中也遇到了很多問題 有的是知識(shí)不足 有 的是考慮不夠周全 事實(shí)證明 只靠自己的知識(shí)面還是很窄 獨(dú)立處理問題能 力不是很強(qiáng) 以后還要加強(qiáng)對(duì) c 語言的學(xué)習(xí) 我認(rèn)為對(duì)于 C 語言編寫的程序來說 使用方法大致都是一樣的 所以如果 要改進(jìn)的話 就是要改進(jìn)一些算法 盡量把界面編寫清楚 提示信息全面 方便易用 測(cè)試測(cè)試 軟件測(cè)試是軟件生存期中的一個(gè)重要階段 是軟件質(zhì)量保證的關(guān)鍵步驟從 用戶的角度來看 普遍希望通過軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷 所以 軟件測(cè)試應(yīng)該是 為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程 或者說 軟件測(cè)試應(yīng)該根 據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例 即 輸入數(shù)據(jù)及其預(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ù)期結(jié)果 數(shù)據(jù)輸入到系統(tǒng)中 運(yùn)行結(jié)果 出現(xiàn)圖書管理系統(tǒng)主菜單 說明 登陸功能實(shí)現(xiàn) 2 借書功能測(cè)試 3 還書功能測(cè)試 6 6 結(jié)論結(jié)論 計(jì)算機(jī)綜合訓(xùn)練順利完成 任務(wù)書中所提出的要求全部實(shí)現(xiàn) 可以對(duì)會(huì)員 信息進(jìn)行添加 修改 刪除以及按各種信息查找 可將會(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 語言程序的編寫首先要從大局考慮 把自己編寫整個(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)參考文獻(xiàn) 附錄附錄 1 1 用戶手冊(cè) 用戶手冊(cè) 點(diǎn)擊運(yùn)行 首先出現(xiàn)的是菜單界面 選擇菜單選項(xiàng)進(jìn)行操作 可進(jìn)行如圖 8 所示 系統(tǒng)主界面 選擇數(shù)字進(jìn)入 退出系統(tǒng) 圖圖 8 8 菜單界面菜單界面 選擇 1 進(jìn)入系統(tǒng) 然后出現(xiàn)功能菜單 圖圖 9 9 登陸功能登陸功能 輸入讀者和書籍 然后出現(xiàn)功能菜單 圖圖 1010 圖書管理系統(tǒng)主菜單圖書管理系統(tǒng)主菜單 附錄附錄 2 2 源程序 源程序 include include include define Max 3 typedef struct book char book num 10 char book name 20 char book writer 10 int book kc int book xy struct book next BK typedef struct borrow char borrow book num 10 char limit date 8 BO typedef struct reader char reader num 10 char reader name 10 int right BO borrow Max struct reader next 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 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 Login 登陸 system cls printf n n n t t t 歡迎登陸本系統(tǒng) n printf n n t t 系統(tǒng)版權(quán)所有 n n n n n n n printf n n n t t 按 任 意 鍵 進(jìn) 入 系 統(tǒng) getchar system cls int Menu 主菜單 int sn printf n t t 圖書管理系統(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 scanf d 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 n n t 文件保存成功 n printf n n t 歡迎下次使用本系統(tǒng) n getchar exit 0 case 1 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 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 iborrow i borrow book num 0 所借圖書直接置為 0 即沒有借書 strcpy p0 borrow i limit date 0 p0 next NULL printf n 讀者信息初始化完畢 按任意鍵繼續(xù)下一步操作 n getchar system cls void Init book 初始化圖書信息 BK p0 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 printf BookWriter 輸入圖書作者 scanf s p0 book writer printf Number 輸入圖書數(shù)量 scanf d 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 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 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 p1 book kc p0 book kc p1 book xy p0 book kc else 若不存在 則需要輸入其他的信息 然后在進(jìn)行插入操作 printf BookName scanf s p0 book name printf BookWriter scanf s p0 book writer printf Number scanf d while p next p p next if h book NULL h book 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 n t t 信息查詢菜單 n printf n printf t0 返回上級(jí) t n printf t t n printf t1 查找圖書 2 查找讀者 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 fflush stdin if sn4 printf n 錯(cuò)誤 請(qǐng)重新輸入 else break return sn void Find Select 查找菜單選擇函數(shù) system cls for 循環(huán)調(diào)用模式 保證能進(jìn)行重復(fù)操作 switch Find 功能選擇 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 reader 10 p h reader printf n 讀者信息查詢模塊 n printf n 請(qǐng)輸入你要查詢讀者編號(hào) scanf s find reader while strcmp p reader num find reader 0 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 s t t s p reader num p reader name for i 0 iborrow i borrow book num printf t t s p borrow i limit date printf n else printf n 此讀者編號(hào)不存在 請(qǐng)核對(duì) 按任意鍵返回 getchar system cls void Find Book 查找圖書信息 BK p char find book 10 功能很簡(jiǎn)單 讀者編號(hào)唯一 查找只須一次遍歷 p h book printf n 圖書信息查詢模塊 n printf n 請(qǐng)輸入你要查詢圖書編號(hào) scanf s find book while strcmp p book num find book 0 if strcmp p book num find book 0 找到了就打印 否則提示不存在 或出錯(cuò) printf n 圖書編號(hào) s 的信息為 n find book printf nBookNo t tBookName tBookWriter tXianYou tKuCun n printf s t t s t t s t t d t t d n p book num p book name p book writer p book xy p book kc else printf n 此圖書編號(hào)不存在 請(qǐng)核對(duì) 按任意鍵返回 getchar system cls void Print reader 打印讀者信息 RD p int i p h reader printf n 讀者信息如下 n n printf ReaderNo tReaderName 此處這樣處理 是為了能實(shí)現(xiàn)一個(gè)讀者能借多本書 Max 可以改 printf n while p NULL 遍歷鏈表一次就可以了 printf t s t t s p reader num p reader name for i 0 iborrow i borrow book num printf t t s p borrow i limit date printf n p p next printf n 讀者信息打印完畢 按任意鍵繼續(xù)下一步操作 getchar system cls void Print book 打印圖書信息 BK p p h book printf n 圖書信息如下 n n printf BookNo t tBookName tBookWriter tXianYou tKuCun n 直接打印所有圖書的信息 遍歷鏈表一次就可 while p NULL printf s t t s t t s t t d t t d n 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 num 10 rea num 10 lim date 8 int i p0 h book p1 h reader printf n 借書模塊 n printf n 請(qǐng)輸入借書的讀者編號(hào) 先輸入借書的讀者信息 scanf s rea num while p1 next NULL if p1 next NULL goto END printf n 請(qǐng)輸入你要借的書的編號(hào) scanf s bo num while strcmp bo num p0 book num 0 if p0 next NULL else if p0 book xyright Max 判斷此讀者借書權(quán)限是否已達(dá)最大 printf n 不好意思 借書數(shù)目已滿 不能借書 n 按任意鍵返回 else if strcmp p1 borrow 0 borrow book num 0 0 此讀者若已經(jīng) 借書 再判斷此讀者是否要借兩本一樣的書 for i 0 iborrow i borrow book num bo num 0 printf n 抱歉 同一個(gè)讀者不能同借兩本相同的書 n else if strcmp p1 borrow i borrow book num 0 0 如果沒有重復(fù) printf n 請(qǐng)輸入你要?dú)w還圖書的日期 scanf s lim date strcpy p1 borrow p1 right borrow book num bo num 記錄 所借書號(hào) 并且借書數(shù)目加一 現(xiàn)存量減一 strcpy p1 borrow p1 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 borrow p1 right borrow book num bo num 記錄所借書號(hào) 并 且借書數(shù)目加一 現(xiàn)存量減一 strcpy p1 borrow p1 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 num 10 return reader num 10 p h book q h reader printf n 還書模塊 n printf n 請(qǐng)輸入要還書的讀者編號(hào) 基本同上 scanf s return reader num 注意 數(shù)組的輸入沒有 if q next NULL 設(shè)置標(biāo)志 用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束 若提前出錯(cuò) 則 find 2 若 借了 則 find 1 若沒借為 find 0 printf n 此讀者編號(hào)不存在 按任意鍵返回 n goto end printf n 請(qǐng)輸入讀者還書的編號(hào) scanf s return book num while p next NULL if p next NULL 設(shè)置標(biāo)志 用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束 若提前出錯(cuò) 則 find 2 若借了 則 find 1 若沒借為 find 0 printf n 錯(cuò)誤 此圖書編號(hào)不存在 按任意鍵返回 n goto end for i 0 iborrow i borrow book num 0 如果此讀者 借了此書 find 1 設(shè)置標(biāo)志 用于判斷讀者是否借了此書或是否出錯(cuò)提前結(jié)束 若提前 出錯(cuò) 則 find 2 若借了 則 find 1 若沒借為 find 0 for j i jborrow j borrow book num q borrow j 1 borrow book num strcpy q borrow j limit date q borrow j 1 limit date strcpy q borrow Max 1 borrow book num 0 strcpy q borrow Max 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)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 渠道清淤合同范本
- 苗木議標(biāo)協(xié)議書
- 蒙牛乳業(yè)協(xié)議書
- 視頻采購(gòu)協(xié)議書
- 認(rèn)證費(fèi)協(xié)議合同
- 設(shè)備修復(fù)協(xié)議書
- 設(shè)備收購(gòu)協(xié)議書
- 設(shè)立分廠協(xié)議書
- 設(shè)計(jì)注銷協(xié)議書
- 訴訟調(diào)解協(xié)議書
- 廣東省湛江市2024-2025學(xué)年高一上學(xué)期1月期末調(diào)研考試物理試卷(含答案)
- 道路運(yùn)輸從業(yè)人員安全培訓(xùn)內(nèi)容
- DB33∕T 2099-2025 高速公路邊坡養(yǎng)護(hù)技術(shù)規(guī)范
- 2025版合規(guī)管理培訓(xùn)與文化深化試卷及答案
- 加盟鹵菜合同范本
- 重精管理培訓(xùn)
- 2023-2024學(xué)年廣東省深圳市南山區(qū)七年級(jí)(上)期末地理試卷
- 《無機(jī)及分析化學(xué)》實(shí)驗(yàn)教學(xué)大綱
- 2023巖溶塌陷調(diào)查規(guī)范1:50000
- JJG 548-2018測(cè)汞儀行業(yè)標(biāo)準(zhǔn)
- 二年級(jí)【語文(統(tǒng)編版)】語文園地一(第二課時(shí))課件
評(píng)論
0/150
提交評(píng)論