版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書(shū)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)小組成員:王林、王浩然指導(dǎo)教師:鄭琦、林娜(網(wǎng)絡(luò))專(zhuān) 業(yè): 網(wǎng)絡(luò)工程所在單位:電氣與計(jì)算機(jī)學(xué)院目 錄一、需求分析11.1 系統(tǒng)開(kāi)發(fā)背景和意義11.2 設(shè)計(jì)題目與要求1二、總體結(jié)構(gòu)設(shè)計(jì)2三、各子模塊設(shè)計(jì)33.1 初始化圖書(shū)信息33.2 系統(tǒng)主界面33.3 采編入庫(kù)43.4 輸入讀者信息43.5 借閱圖書(shū)43.6 歸還圖書(shū)63.7 查詢圖書(shū)信息73.8 查詢讀者信息7四、程序設(shè)計(jì)調(diào)試情況分析9五、測(cè)試結(jié)果125.1 歡迎界面125.2 初始化圖書(shū)信息125.3 系統(tǒng)主界面135.4 采編入庫(kù)135.5 輸入讀者信息145.6 借閱圖書(shū)155.7 歸還圖書(shū)165
2、.8 查詢圖書(shū)信息165.9 查詢讀者信息175.10 保存文件,退出18六、總結(jié)19七、參考文獻(xiàn)20八、附錄(源代碼)21一、需求分析1.1 系統(tǒng)開(kāi)發(fā)背景和意義圖書(shū)管理作為計(jì)算機(jī)應(yīng)用的一個(gè)分支,有著手工管理無(wú)法比擬的優(yōu)點(diǎn),如檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高圖書(shū)管理的效率。因此,開(kāi)發(fā)一套能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄蔚膱D書(shū)管理系統(tǒng),將是非常必要的,也是十分及時(shí)的。圖書(shū)管理系統(tǒng)需要滿足來(lái)自圖書(shū)館工作人員、普通用戶和借閱者三方面人員的需求。圖書(shū)館工作人員對(duì)圖書(shū)借閱者的借閱及還書(shū)要求進(jìn)行操作,同時(shí)還可通過(guò)圖書(shū)編號(hào)等查詢相應(yīng)的借閱情況
3、;普通用戶的需求是查詢圖書(shū)館所存的圖書(shū)的相關(guān)情況;圖書(shū)借閱者的需求是查看自己的相關(guān)信息及查詢自己的借閱情況。1.2 設(shè)計(jì)題目與要求【問(wèn)題描述】設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書(shū)管理基本業(yè)務(wù)?!净疽蟆?)每種書(shū)的登記內(nèi)容包括書(shū)號(hào)、書(shū)名、著作者、現(xiàn)存量和庫(kù)存量;2)對(duì)書(shū)號(hào)建立索引表(線性表)以提高查找效率;3)系統(tǒng)主要功能如下:*采編入庫(kù):新購(gòu)一種書(shū),確定書(shū)號(hào)后,登記到圖書(shū)帳目表中,如果表中已有,則只將庫(kù)存量增加;*借閱:如果一種書(shū)的現(xiàn)存量大于0,則借出一本,登記借閱者的書(shū)證號(hào)和歸還期限,改變現(xiàn)存量;*歸還:注銷(xiāo)對(duì)借閱者的登記,改變?cè)摃?shū)的現(xiàn)存量。二、總體結(jié)構(gòu)設(shè)計(jì)有八個(gè)模塊1)圖書(shū)初始化輸入圖書(shū)的一
4、些信息,編號(hào)、作者、書(shū)名、數(shù)量,使有一定的庫(kù)存。2)新書(shū)入庫(kù)新書(shū)采編入庫(kù),輸入編號(hào)后如果有次數(shù)只需輸入數(shù)量,沒(méi)有則繼續(xù)輸入書(shū)名、作者、數(shù)量。3)添加讀者信息讀者信息初始化,輸入讀書(shū)證號(hào)和姓名,只有輸入書(shū)證號(hào)和姓名才能進(jìn)行借書(shū)還書(shū)4)借書(shū)模塊讀者輸入讀書(shū)證號(hào),證號(hào)存在輸入要借的圖書(shū)編號(hào),不能借同一本書(shū),如果借書(shū)數(shù)量以達(dá)到最大也不能借書(shū)。5)還書(shū)模塊歸還已借的圖書(shū),要先輸入讀者書(shū)證號(hào),書(shū)證號(hào)存在繼續(xù)輸入要還的圖書(shū)編號(hào),圖書(shū)編號(hào)存在并且借來(lái)此書(shū),歸還成功。6)查詢圖書(shū)信息7)查詢讀者信息可查詢讀者姓名書(shū)證號(hào),借了幾本書(shū),都是什么書(shū)和還書(shū)日期,還可以借幾本書(shū)。8)退出退出讀書(shū)管理系統(tǒng)并保存讀者和圖書(shū)信
5、息。圖書(shū)管理系統(tǒng) 查詢操作模塊讀者管理模塊借閱操作模塊圖書(shū)管理模塊理退出圖書(shū)信息查詢讀者信息查詢還書(shū)系統(tǒng)借書(shū)系統(tǒng)輸入讀者信息采編入庫(kù)初始化圖書(shū)信息圖2-1 主控模塊三、各子模塊設(shè)計(jì)3.1 初始化圖書(shū)信息進(jìn)入系統(tǒng)后首先進(jìn)行圖書(shū)初始化,輸入圖書(shū)的信息。開(kāi)始輸入圖書(shū)編號(hào)、名稱(chēng)、作者和圖書(shū)數(shù)量進(jìn)入系統(tǒng)圖3-1 初始化圖書(shū)信息流程圖3.2 系統(tǒng)主界面初始化之后,進(jìn)入系統(tǒng),顯示功能列表,可選擇任意系統(tǒng),但在借書(shū)之前先要輸入讀者信息。開(kāi)始輸入功能所對(duì)應(yīng)的數(shù)字輸入的數(shù)字小于0大于6 否錯(cuò)誤!請(qǐng)重新輸入 是執(zhí)行所選功能圖3-2 系統(tǒng)主界面流程圖3.3 采編入庫(kù)選擇采編入庫(kù)的功能后,先輸入圖書(shū)編號(hào)判斷是否存在,若
6、存在,則在原有記錄上加上添加的圖書(shū)數(shù)量;若不存在,則加入新的記錄。錄入圖書(shū)信息判斷是否有此圖書(shū)是在原有的紀(jì)錄上加上現(xiàn)有的圖書(shū)數(shù)量否向系統(tǒng)中加入新紀(jì)錄圖3-3 采編入庫(kù)流程圖3.4 輸入讀者信息選擇讀者登記后,輸入讀者編號(hào)跟姓名。開(kāi)始輸入讀者信息:讀者書(shū)證號(hào)、姓名結(jié)束圖3-4 輸入讀者信息流程圖3.5 借閱圖書(shū)選擇借閱圖書(shū)功能后,輸入讀者證號(hào),判斷該讀者是否存在,若存在則輸入借閱圖書(shū)的編號(hào),判斷該圖書(shū)編號(hào)是否存在,若存在,則判斷讀者借閱的圖書(shū)數(shù)量是否滿了和是否借閱了相同的書(shū)籍,判斷成功后,則輸入歸還該圖書(shū)的日期,該圖書(shū)現(xiàn)有量減一,借閱成功;若讀者不存在則返回。輸入讀者書(shū)證號(hào)判斷讀者是否存在否輸出
7、次讀者編號(hào)不存在!按任意鍵返回是輸入要借的圖書(shū)編號(hào)判斷圖書(shū)編號(hào)是否存在否輸出此圖書(shū)編號(hào)不存在!按任意鍵返回是看是否還有此圖書(shū)否輸出此書(shū)已借完,按任意鍵返回是看讀者的借書(shū)數(shù)目是否滿了是輸出借書(shū)數(shù)目已滿不能借書(shū),按任意鍵返回否看讀者是否借了相同的書(shū)是輸出同一讀者不能借相同的兩本書(shū)否輸入歸還圖書(shū)的日期圖書(shū)現(xiàn)有數(shù)量減1輸出讀者結(jié)束成功,按任意鍵返回結(jié)束圖3-5 借閱圖書(shū)流程圖3.6 歸還圖書(shū)實(shí)現(xiàn)歸還圖書(shū)功能時(shí),首先輸入讀者編號(hào),并判斷是否存在,若不存在就按任意鍵返回,;若存在輸入歸還的圖書(shū)編號(hào)并判斷是否存在,若歸還圖書(shū)編號(hào)不存在,則返回。存在后,將讀者借閱該圖書(shū)的信息清空,該圖書(shū)的現(xiàn)有量加一。最后按任
8、意鍵返回輸入要還書(shū)的讀者編號(hào)判斷讀者編號(hào)是否存在 否輸出讀者編號(hào)不存在按任意鍵返回是輸入讀者還書(shū)編號(hào)判斷圖書(shū)編號(hào)是否存在否輸出此圖書(shū)編號(hào)不存在按任意鍵返回 是此圖書(shū)編號(hào)和還書(shū)日期等于0現(xiàn)有圖書(shū)數(shù)量加1輸出讀者還書(shū)完畢,按任意鍵返回結(jié)束圖3-6 歸還圖書(shū)流程圖3.7 查詢圖書(shū)信息查詢圖書(shū)信息時(shí),輸入圖書(shū)的編號(hào),判斷是否存在。不存在則返回;存在則輸出圖書(shū)的編號(hào),書(shū)名,作者,現(xiàn)有量,跟庫(kù)存量。判斷圖書(shū)信息是否為空 是輸出此圖書(shū)編號(hào)不存在按任意鍵返回 否輸出圖書(shū)信息:編號(hào)、名稱(chēng)、作者、現(xiàn)有和庫(kù)存結(jié)束圖3-7 查詢圖書(shū)信息流程圖3.8 查詢讀者信息查詢讀者信息時(shí),首先判斷讀者的編號(hào)是否存在,不存在就按任
9、意鍵返回。若存在,則輸出讀者的證號(hào),姓名,和借閱的圖書(shū)編碼及其還書(shū)日期。判斷讀者信息是否為空 是輸出此讀者編號(hào)不存在按任意鍵返回否輸出讀者書(shū)證號(hào)、姓名、圖書(shū)編碼和還書(shū)日期輸出讀者信息打印完畢結(jié)束圖3-8 查詢讀者信息流程圖四、程序設(shè)計(jì)調(diào)試情況分析在整個(gè)課程設(shè)計(jì)中,我們遇到了許多的問(wèn)題。有些問(wèn)題吧,我們?cè)诳嗨稼は氲臅r(shí)候,突然我們的編譯器顯示出了正確的結(jié)果,當(dāng)我們欣喜若狂的在運(yùn)行下一次的時(shí)候又會(huì)出現(xiàn)相同的問(wèn)題,在借閱的過(guò)程中,在一個(gè)讀者借閱了兩本書(shū)以上的時(shí)候,上一本書(shū)的歸還日期上還有下一本書(shū)上的編號(hào),最后一本書(shū)輸出的才是正確的結(jié)果。下圖是借閱了兩本書(shū)的截圖:圖4-1看到這里我們也知道是第一本書(shū)的還
10、書(shū)日期的地址空間跟第二本書(shū)的編號(hào)連接在了一起導(dǎo)致輸出的時(shí)候一直到第二本書(shū)編號(hào)的的字符串后面的/0結(jié)束。最后發(fā)現(xiàn)是我們?cè)诙x還書(shū)日期這個(gè)字符串的時(shí)候開(kāi)辟的空間太小。我們把char limit_date8;改為char limit_date10就好了。圖4-2五、測(cè)試結(jié)果5.1 歡迎界面程序運(yùn)行顯示“歡迎使用圖書(shū)管理系統(tǒng)”,按任意鍵進(jìn)入到主菜單如圖5-1所示。圖5-1 歡迎界面5.2 初始化圖書(shū)信息在沒(méi)有文件的時(shí)候會(huì)進(jìn)入到初始化界面,需要輸入一本圖書(shū)的相關(guān)信息,如圖5-2所示。圖5-2 初始化圖書(shū)信息5.3 系統(tǒng)主界面接著進(jìn)入的系統(tǒng)的主菜單,如圖5-3所示。圖5-3 系統(tǒng)主界面5.4 采編入庫(kù)實(shí)現(xiàn)
11、采編入庫(kù)功能按照系統(tǒng)提示輸入信息。如圖5-4。如果該圖書(shū)已存在,則直接輸入圖書(shū)的數(shù)量如圖5-5所示。圖5-4 采編入庫(kù)(書(shū)不存在)圖5-5 采編入庫(kù)(書(shū)已存在)5.5 輸入讀者信息按照要求輸入讀者信息,如圖5-6所示。圖5-6 輸入讀者信息5.6 借閱圖書(shū)按照要求先輸入讀者證號(hào),在輸入借閱的圖書(shū)編號(hào)如圖5-7所示。如果讀者已經(jīng)借閱了一本書(shū)之后不能借閱同一本圖書(shū)如圖5-8所示。圖5-7 借閱圖書(shū)圖5-8 同一個(gè)讀者不能借閱同一本圖書(shū)5.7 歸還圖書(shū)歸還圖書(shū)的要求按著圖5-9輸入即可。圖5-9 歸還圖書(shū)5.8 查詢圖書(shū)信息圖5-10 是沒(méi)有借閱之前的圖書(shū)的相關(guān)信息,圖5-11是讀者借閱了圖書(shū)之后的
12、信息,只改變了現(xiàn)有量。圖5-10 借閱登記后圖5-11 歸還圖書(shū)后5.9 查詢讀者信息查詢讀者的信息時(shí),會(huì)輸出相關(guān)借閱的圖書(shū)編號(hào)以及還書(shū)日期如圖5-12,5-13所示。圖5-12 查詢讀者信息(一)圖5-13 查詢讀者信息(二)5.10 保存文件,退出在系統(tǒng)的主菜單后,按0 功能保存并退出系統(tǒng)。圖5-14 文件保存六、總結(jié)個(gè)人覺(jué)得課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程. 在生活中可以說(shuō)得是無(wú)處不在。因此作為新世紀(jì)的大學(xué)來(lái)說(shuō)能夠分析,并解決程序中出現(xiàn)的問(wèn)題是十分重要的。課程設(shè)計(jì)就能體現(xiàn)到這一方面。能夠?qū)?/p>
13、你所學(xué)到的理論跟實(shí)際結(jié)合在一起。通過(guò)本次課程設(shè)計(jì)感慨良多。從課堂上聽(tīng)到的到課后應(yīng)用到的根本就不是一回事。課堂上,老師在上面說(shuō),自己在下面聽(tīng),到也能聽(tīng)懂。可是到了應(yīng)用上,自己倒也是知道要用到哪方面的內(nèi)容,但是偏偏不知道從何處下手;好不容易寫(xiě)好的一小段代碼,還要跟其他功能不相沖突,這又需要我們自己去想辦法去兼容好他們。通過(guò)本次課程設(shè)計(jì)試我懂得理論要跟實(shí)踐相結(jié)合。正所謂“臺(tái)上十分鐘,臺(tái)下十年功”,別人在臺(tái)上表演了十分鐘,你覺(jué)得很容易,可那里知道別人在下面做的努力呢。同樣的,我們?cè)谡n堂上聽(tīng)老師講確實(shí)覺(jué)得是那么回事,但是真正做下去,也只有自己知道是何種滋味。理論始終是理論,不能都熟練應(yīng)用自己所學(xué)到的知識(shí)
14、,到頭來(lái)也是一場(chǎng)空。在這次的課程設(shè)計(jì)過(guò)程中,我們也遇到了不能解決的難題,比如說(shuō)在讀者查詢的時(shí)候,第二個(gè)讀者始終會(huì)覆蓋第一個(gè)讀者的數(shù)據(jù)。我們始終沒(méi)有搞明白問(wèn)題的所在,只知道不是在輸出讀者信息的問(wèn)題,應(yīng)該是添加讀者過(guò)程中指針始終指在第一個(gè)地址,沒(méi)有移動(dòng)。我們按照查詢圖書(shū)的函數(shù)重新編寫(xiě)了一次還是同樣問(wèn)題。一直到答辯前一天晚上還沒(méi)有解決,之后只能放棄。還有在最開(kāi)始的時(shí)候我們的程序功能并沒(méi)有清屏功能,整個(gè)界面看起來(lái)并不是那么整潔。于是我用用getch();system(“cls”);來(lái)進(jìn)行清屏,最后會(huì)出先一個(gè)小問(wèn)題,在我們查詢了一些資料后,又再次基礎(chǔ)上加上了goto end;這個(gè)函數(shù)來(lái)加以完善。這次課程
15、設(shè)計(jì),我們也遇到了很多問(wèn)題,比如說(shuō),我們?cè)佥斎氲诙€(gè)讀者的信息后會(huì)覆蓋第一個(gè)讀者的信息,想了半天沒(méi)有弄懂是哪里錯(cuò)了,最后才看出來(lái)我們定義的結(jié)構(gòu)體指針沒(méi)有移動(dòng),導(dǎo)致我們輸入的讀者信息一直存放在同一個(gè)地址中。也有些不懂需要在網(wǎng)上查詢的代碼,組員之間相互配合,不懂就詢問(wèn)其他同學(xué)或者查詢資料亦或者自己去弄懂問(wèn)題的根結(jié),團(tuán)結(jié)協(xié)作的精神在這次課程設(shè)計(jì)中表現(xiàn)的淋漓盡致。我們不僅將以前的知識(shí)復(fù)習(xí)一遍;同時(shí)也弄懂了一些平常自己似懂非懂的;最后同學(xué)之間的友誼也慢慢變的深厚起來(lái)小組分工:孫澤銘:采編入庫(kù)、查詢圖書(shū)信息、查詢讀者信息黃響:添加讀者、借閱圖書(shū)、歸還圖書(shū)七、參考文獻(xiàn)1 嚴(yán)蔚敏 吳偉民編著 數(shù)據(jù)結(jié)構(gòu) 清華大
16、學(xué)出版社,20002 黃國(guó)瑜 葉乃菁編著 數(shù)據(jù)結(jié)構(gòu) 清華大學(xué)出版社,2001 3 胡學(xué)鋼編著 數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)指導(dǎo) 清華大學(xué)出版社,19994 王士元編著 數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)系統(tǒng) 南開(kāi)大學(xué)出版社,20005 李強(qiáng)根主編 數(shù)據(jù)結(jié)構(gòu)(C+描述) 中國(guó)水利水電出版社, 20016 楊正宏編著 數(shù)據(jù)結(jié)構(gòu) 中國(guó)鐵道出版社,20027 胡學(xué)鋼編著 數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)指導(dǎo) 清華大學(xué)出版社,19998 殷人昆 徐孝凱編著 數(shù)據(jù)結(jié)構(gòu)習(xí)題解析 清華大學(xué)出版社,20029 李春葆編著 數(shù)據(jù)結(jié)構(gòu)習(xí)題與解析 清華大學(xué)出版社,200110 咨訊教育小組編著 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)版 中國(guó)鐵道出版社,2002八、附錄(源代碼)#in
17、clude<stdio.h>#include <string.h>#include <stdlib.h>#include<conio.h>#define Max 4 typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy;int book_kc;int n;struct book *next;BK;typedef struct borrowchar borrow_book_num10;char limit_date10;BO;typede
18、f struct readerchar reader_num10;char reader_name10;int right;int m;BO borrowMax;struct reader *next;RD;BK *h_book;RD *h_reader;int n=0;int m=0;void Login(); int Menu(); void Init(); void Menu_select(); void Insert_New_Book(); void add_reader();void Print_reader(); void Print_book(); void Borrow_Boo
19、k(); void Return_Book(); void Save(); void Save_Book(); void Save_Reader(); void Load();void Load_Reader(); void Load_Book(); void Login()system("cls");printf("nnntt*n");printf("nnntt* 歡迎使用圖書(shū)管理系統(tǒng) *n");printf("nnntt*n");printf("nnntt 按任意鍵進(jìn)入系統(tǒng).");getch
20、(); system("cls");int Menu() /*主菜單*/ int dm;printf("ntt圖書(shū)管理系統(tǒng)主菜單n");printf("=n");printf("*t1-采編入庫(kù) n");printf("*t2-登記讀者 n"); printf("*t3-借閱登記 n");printf("*t4-還書(shū)管理 n");printf("*t5-查詢圖書(shū)信息 n");printf("*t6-查詢讀者信息 n"
21、);printf("*t0-退出系統(tǒng) n");printf("=n");printf("請(qǐng)選擇相應(yīng)的代碼:"); for(;) scanf("%d",&dm); /dm輸入的數(shù)字if(dm<0|dm>6)printf("n錯(cuò)誤!請(qǐng)重新輸入:");else break;return dm; void Menu_select()/*主菜單選擇函數(shù)*/for(;) switch(Menu() /*功能選擇*/ case 0: system("cls"); Sav
22、e();printf("nnt文件保存成功!n"); printf("nnt歡迎下次使用本系統(tǒng)!n"); getch(); exit(0);case 1: Insert_New_Book();break; case 2: add_reader();break;case 3: Borrow_Book();break;case 4: Return_Book();break;case 5: Print_book();break;case 6: Print_reader();break;default:printf("n錯(cuò)誤!");exit(
23、0);void Init() /*初始化*/BK *p0;printf("n圖書(shū)初始化開(kāi)始,請(qǐng)輸入圖書(shū)信息.n包括編號(hào).書(shū)名.數(shù)量.n");p0=(BK*)malloc(sizeof(BK);h_book=p0;printf("n請(qǐng)輸入圖書(shū)信息:n");printf("圖書(shū)編號(hào):"); /*輸入圖書(shū)編號(hào)(唯一)*/scanf("%s",p0->book_num);printf("圖書(shū)名稱(chēng):"); /*輸入圖書(shū)名稱(chēng)*/scanf("%s",p0->book_name
24、);printf("圖書(shū)作者:"); /*輸入圖書(shū)作者*/scanf("%s",p0->book_writer);printf("圖書(shū)數(shù)量:"); /*輸入圖書(shū)數(shù)量*/scanf("%d",&p0->book_kc);p0->book_xy=p0->book_kc; /*開(kāi)始時(shí)圖書(shū)現(xiàn)有量和庫(kù)存量相等*/p0->next=NULL;p0->n=+n;printf("n圖書(shū)信息初始化完畢!按任意鍵繼續(xù)下一步操作.n");getch();system(&qu
25、ot;cls");void Insert_New_Book()/*新書(shū)入庫(kù)*/BK *p,*p0,*p1; p=p1=h_book;printf("n新書(shū)入庫(kù)模塊.n");printf("n請(qǐng)輸入新書(shū)信息.n包括書(shū)號(hào).書(shū)名.數(shù)量.n");p0=(BK *)malloc(sizeof(BK);printf("圖書(shū)編號(hào):");scanf("%s",p0->book_num);while(strcmp(p0->book_num,p1->book_num)!=0&&p1->
26、next!=NULL)p1=p1->next;if(strcmp(p0->book_num,p1->book_num)=0) /*此處分兩種情況,若圖書(shū)編號(hào)存在,則直接進(jìn)庫(kù),只須輸入書(shū)的數(shù)量*/printf("n此編號(hào)圖書(shū)已存在!直接入庫(kù)!n"); printf("圖書(shū)數(shù)量:"); scanf("%d",&p0->book_kc); p1->book_kc+=p0->book_kc; p1->book_xy+=p0->book_kc;else/*若不存在,則需要輸入其他的信息,然
27、后在進(jìn)行插入操作*/printf("圖書(shū)名稱(chēng):");scanf("%s",p0->book_name);printf("圖書(shū)作者:");scanf("%s",p0->book_writer);printf("圖書(shū)數(shù)量:");scanf("%d",&p0->book_kc);/庫(kù)存數(shù)量while(p->next) p=p->next;if(h_book=NULL) h_book=p0; /*此處分兩種情況,鏈表中沒(méi)有數(shù)據(jù),head直接指向p
28、0處*/else p->next=p0; /*此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/ p0->next=NULL; p0->book_xy=p0->book_kc; p0->n=+n; printf("n新書(shū)入庫(kù)完畢!按任意鍵繼續(xù)下一步操作.n");getch();system("cls");void add_reader()/*添加讀者*/ RD *p0; int i; printf("n讀者初始化開(kāi)始,請(qǐng)輸入讀者信息.n包括書(shū)證號(hào).姓名.n");p0=(RD*)mallo
29、c(sizeof(RD); /*申請(qǐng)新結(jié)點(diǎn)存儲(chǔ)空間*/h_reader=p0;printf("n請(qǐng)輸入讀者的信息:n"); printf("讀者書(shū)證號(hào):"); scanf("%s",p0->reader_num); printf("讀者姓名:"); scanf("%s",p0->reader_name); p0->right=0; for(i=0;i<Max;i+) strcpy(p0->borrowi.borrow_book_num,"0");
30、 /*所借圖書(shū)直接置為(即沒(méi)有借書(shū))*/strcpy(p0->borrowi.limit_date,"0"); p0->next=NULL;p0->m=+m;printf("n讀者信息初始化完畢!按任意鍵繼續(xù)下一步操作.n"); getch();system("cls");void Borrow_Book() /*借書(shū)模塊*/BK *p0; RD *p1;char bo_num10,rea_num10,lim_date8;int i;p0=h_book; p1=h_reader;printf("n借書(shū)模塊.
31、n");printf("n請(qǐng)輸入借書(shū)的讀者書(shū)證號(hào):"); 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) printf("n此讀者編號(hào)不存在!按任意鍵返回.n");goto END; printf("n請(qǐng)輸入你要借的書(shū)的
32、編號(hào):"); scanf("%s",bo_num);while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL) p0=p0->next; if(p0->next=NULL&&strcmp(bo_num,p0->book_num)!=0) printf("n此圖書(shū)編號(hào)不存在!按任意鍵返回.n");goto END;else if(p0->book_xy<=0) printf("n抱歉,此書(shū)已借完!請(qǐng)等待新書(shū)的到來(lái)!n
33、按任意鍵返回.");goto END; else if(p1->right>Max|p1->right=Max) printf("n不好意思,借書(shū)數(shù)目已滿!不能借書(shū)!n按任意鍵返回.");goto END;else if(strcmp(p1->borrow0.borrow_book_num,"0")!=0) for(i=0;i<Max;i+) if(strcmp(p1->borrowi.borrow_book_num,bo_num)=0)printf("n抱歉!同一個(gè)讀者不能同借兩本相同的書(shū)!n按任
34、意鍵返回.");goto END;else if(strcmp(p1->borrowi.borrow_book_num,"0")=0) printf("n請(qǐng)輸入你要?dú)w還圖書(shū)的日期:"); scanf("%s",lim_date); strcpy(p1->borrowp1->right+.borrow_book_num,bo_num); strcpy(p1->borrowp1->right-1.limit_date,lim_date); p0->book_xy-; printf("
35、n讀者編號(hào)%s借書(shū)完畢!按任意鍵繼續(xù)下步操作.",p1->reader_num); goto END; else printf("n請(qǐng)輸入你要?dú)w還圖書(shū)的日期:"); scanf("%s",lim_date); strcpy(p1->borrowp1->right+.borrow_book_num,bo_num); strcpy(p1->borrowp1->right-1.limit_date ,lim_date ); p0->book_xy-;p0->book_kc-; printf("n讀者
36、編號(hào)%s借書(shū)完畢!按任意鍵繼續(xù)下步操作.",p1->reader_num); goto END; END:getch(); system("cls"); void Return_Book() /*還書(shū)模塊*/BK *p; RD *q;int i,j,find=0;char return_book_num10,return_reader_num10;p=h_book; q=h_reader;printf("n還書(shū)模塊.n");printf("n請(qǐng)輸入要還書(shū)的讀者編號(hào):"); scanf("%s",re
37、turn_reader_num); 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;printf("n此讀者編號(hào)不存在!按任意鍵返回.n");goto end;printf("n請(qǐng)輸入讀者還書(shū)的編號(hào):");scanf("%s",return
38、_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;printf("n錯(cuò)誤!此圖書(shū)編號(hào)不存在!按任意鍵返回.n");goto end; for(i=0;i<Max;i+)if(strcmp(return_book_num,q->borrowi.borrow_book
39、_num)=0) /*如果此讀者借了此書(shū)*/find=1; for(j=i;j<Max-1;j+) strcpy(q->borrowj.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->b
40、ook_xy+; q->right-; printf("n編號(hào)%s的讀者還書(shū)完畢!按任意鍵繼續(xù)下步操作.",return_reader_num); goto end; if(find=0) printf("n錯(cuò)誤!此讀者未借此書(shū)!按任意鍵返回.n"); end: getch(); system("cls"); void Print_book() /*查詢圖書(shū)信息*/BK *p;int i;char e10; p=h_book;printf("輸入查詢的圖書(shū)編號(hào):");scanf("%s",
41、 e);for(i=0;i<n;i+)if(strcmp(p->book_num,e)=0)printf("n圖書(shū)信息如下:nn");printf("圖書(shū)編號(hào)t圖書(shū)名稱(chēng)t圖書(shū)作者t現(xiàn)有t庫(kù)存n");printf("%stt%stt%stt%dt%dn",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);break;elsep=p->next;printf("n圖書(shū)信息打印完畢!按任意鍵繼續(xù)下一步操作.&
42、quot;);getch();system("cls");void Print_reader() /*查詢讀者信息*/RD *p;int i, j;char e10;p=h_reader;printf("輸入查詢的讀者編號(hào):");scanf("%s", e);for(j=0;j<m;j+)if(strcmp(p->reader_num,e)=0)printf("n讀者信息如下:nn");printf("讀者書(shū)證號(hào)t讀者姓名n"); printf("%stt%s",
43、p->reader_num,p->reader_name);for(i=0;i<Max;i+)printf("n");printf("圖書(shū)編號(hào)",i+1); printf("t還書(shū)日期",i+1); printf("n");printf("t%s",p->borrowi.borrow_book_num);printf("tt%s",p->borrowi.limit_date); printf("n");break;elsep=
44、p->next;printf("n讀者信息打印完畢!按任意鍵繼續(xù)下一步操作.");getch();system("cls");void Save() /*保存信息*/Save_Reader();Save_Book();void Save_Reader() /*保存讀者信息*/FILE *fp_reader; RD *p,*p0;p=h_reader;if(fp_reader=fopen("Reader.txt","wb")=NULL) /*創(chuàng)建文件,進(jìn)行保存*/printf("n文件保存失敗!n請(qǐng)重新啟動(dòng)本系統(tǒng).n");exit(0);while(p!=NULL) if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*將鏈表
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年數(shù)據(jù)服務(wù)與云存儲(chǔ)技術(shù)許可合同
- 福建省控規(guī)入庫(kù)合同范例
- 餐廳管理托管合同范例
- 商洛學(xué)院《機(jī)電傳動(dòng)控制》2023-2024學(xué)年第一學(xué)期期末試卷
- 個(gè)人買(mǎi)貓合同范例
- 汕頭大學(xué)《中學(xué)思想政治課課程標(biāo)準(zhǔn)與教材研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 陜西中醫(yī)藥大學(xué)《新聞傳播大講堂》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024至2030年車(chē)床標(biāo)牌項(xiàng)目投資價(jià)值分析報(bào)告
- 種苗訂購(gòu)合同范例
- 放射防護(hù)合同范例
- 輕食行業(yè)宏觀環(huán)境分析報(bào)告
- 中外鋼琴名作賞析智慧樹(shù)知到期末考試答案2024年
- 小學(xué)心理健康教育主題班會(huì)活動(dòng)記錄表
- 河北省滄州市2022-2023學(xué)年高一年級(jí)上冊(cè)期末考試英語(yǔ)試題(解析版)
- 太常引建康中秋夜為呂叔潛賦課件
- 韓國(guó)豪華游輪7日游課件
- 高中數(shù)學(xué)成績(jī)分析報(bào)告
- 自來(lái)水廠安全教育課件
- 關(guān)愛(ài)自己從心開(kāi)始課件
- 2024歷史建筑測(cè)繪建檔規(guī)程
- 工地水電倉(cāng)庫(kù)管理制度
評(píng)論
0/150
提交評(píng)論