c語言編寫圖書管理系統(tǒng).doc_第1頁
c語言編寫圖書管理系統(tǒng).doc_第2頁
c語言編寫圖書管理系統(tǒng).doc_第3頁
c語言編寫圖書管理系統(tǒng).doc_第4頁
c語言編寫圖書管理系統(tǒng).doc_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2012屆分類號(hào)單位代碼本科畢業(yè)設(shè)計(jì)說明書C語言編寫圖書管理系統(tǒng)姓名李彬?qū)W號(hào)200815840114年級(jí)2008級(jí)本科3班專業(yè)機(jī)械設(shè)計(jì)制造及其自動(dòng)化系(院)機(jī)械工程學(xué)院指導(dǎo)教師李培珍年月日目錄第一部分1職業(yè)生涯規(guī)劃十年創(chuàng)業(yè)路11前言12自我剖析13環(huán)境分析131國家環(huán)境132社會(huì)環(huán)境133職業(yè)環(huán)境234分析小結(jié)24未來人生職業(yè)規(guī)劃25總結(jié)2第二部分4C語言編寫圖書管理系統(tǒng)4摘要4ABSTRACT51需求分析611系統(tǒng)需求612功能分析62系統(tǒng)功能模塊結(jié)構(gòu)圖621系統(tǒng)調(diào)用的函數(shù)722圖書管理系統(tǒng)模塊93圖書管理系統(tǒng)的結(jié)構(gòu)1031主函數(shù)流程圖10311主控模塊10312讀者登陸模塊11313管理員登陸模塊12314圖書管理模塊13315讀者管理模塊1432實(shí)體數(shù)據(jù)結(jié)構(gòu)15321讀者類別結(jié)構(gòu)15322讀者信息結(jié)構(gòu)15323圖書類別結(jié)構(gòu)16324圖書數(shù)據(jù)結(jié)構(gòu)16325管理員類別結(jié)構(gòu)17326管理員數(shù)據(jù)結(jié)構(gòu)17327借閱信息結(jié)構(gòu)18328違規(guī)記錄數(shù)據(jù)結(jié)構(gòu)1833程序文件存儲(chǔ)設(shè)計(jì)19331鏈表存儲(chǔ)結(jié)構(gòu)簡述19332動(dòng)態(tài)鏈表的建立19333動(dòng)態(tài)鏈表的刪除21334動(dòng)態(tài)鏈表的插入23335數(shù)據(jù)文件存儲(chǔ)244圖書管理系統(tǒng)測試2541測試過程2542實(shí)驗(yàn)結(jié)果2543系統(tǒng)缺陷255出錯(cuò)處理2551出錯(cuò)輸出信息2552出錯(cuò)處理對(duì)策256安全設(shè)計(jì)257設(shè)計(jì)心得26參考文獻(xiàn)27附錄27第一部分職業(yè)生涯規(guī)劃十年創(chuàng)業(yè)路1前言在今天這個(gè)人才競爭的時(shí)代,職業(yè)生涯規(guī)劃開始成為在人爭奪戰(zhàn)中的另一重要利器。對(duì)企業(yè)而言,如何體現(xiàn)公司“以人為本”的人才理念,關(guān)注員工的人才理念,關(guān)注員工的持續(xù)成長,職業(yè)生涯規(guī)劃是一種有效的手段;而對(duì)每個(gè)人而言,職業(yè)生命是有限的,如果不進(jìn)行有效的規(guī)劃,勢必會(huì)造成生命和時(shí)間的浪費(fèi)。作為當(dāng)代大學(xué)生,若是帶著一臉茫然,踏入這個(gè)擁擠的社會(huì)怎能滿足社會(huì)的需要,使自己占有一席之地因此,我試著為自己擬定一份職業(yè)生涯規(guī)劃,將自己的未來好好的設(shè)計(jì)一下。有了目標(biāo),才會(huì)有動(dòng)力。2自我剖析優(yōu)點(diǎn)做事仔細(xì)認(rèn)真、踏實(shí)、有耐心、肯吃苦耐勞。為人和藹、友善、安分、忠實(shí)可靠、很好相處而且能以一種實(shí)事求是的態(tài)度接受他人的行為,但我需要基本的信任和理解??偸潜苊饷?,更在意維護(hù)人際關(guān)系。只要可能,就會(huì)使自己適應(yīng)他人的需要和期望。缺點(diǎn)性格偏內(nèi)向,不太善于表達(dá)自己,語言表達(dá)還很欠缺。交際能力較差,膽小,思想上屬保守派,積極主動(dòng)性不夠。有時(shí)偷懶,知識(shí)面不廣,經(jīng)驗(yàn)不足。缺乏毅力、恒心有時(shí)多愁善感。興趣愛好1CAD、PRO/E繪圖。2看書。3編程。4聽音樂。3環(huán)境分析31國家環(huán)境機(jī)械自動(dòng)化技術(shù)從上個(gè)世紀(jì)2O年代開始發(fā)展應(yīng)用以來,已經(jīng)得到了迅速的發(fā)展,特別是近年來計(jì)算機(jī)的高度集成化,開始采用了計(jì)算機(jī)集成制造系統(tǒng),大大加快了機(jī)械自動(dòng)化的發(fā)展,但我國仍處于初級(jí)操作階段的自動(dòng)化。我國機(jī)械制造業(yè)目前有114萬個(gè)企業(yè),發(fā)展很不平衡,有大量落后于現(xiàn)代水準(zhǔn)的產(chǎn)業(yè),大部分企業(yè)還比較落后,手工勞動(dòng)占有相當(dāng)?shù)谋戎?,我國能?dú)立開發(fā)現(xiàn)代機(jī)械自動(dòng)化技術(shù)的企業(yè)可以說沒有;我國機(jī)械制造業(yè)企業(yè)中自動(dòng)化裝備少、水準(zhǔn)低,不僅在數(shù)量上同世界先進(jìn)國家有較大差距,而且在品種上、質(zhì)量上、使用上,同世界先進(jìn)水準(zhǔn)也存在階段性差距。實(shí)現(xiàn)我國機(jī)械自動(dòng)化技術(shù)是一個(gè)長期的過程,不可能一蹴而就,需要循序漸進(jìn),不斷努力,創(chuàng)造條件,向自動(dòng)化的高級(jí)理想階段邁進(jìn)。32社會(huì)環(huán)境國產(chǎn)造型生產(chǎn)線因產(chǎn)品質(zhì)量差、可靠性低、實(shí)用性差,開工率一般僅在5060。而能在生產(chǎn)中長期服役的主力生產(chǎn)線很少,像第一汽車制造廠的01線、第二汽車制造廠的BMD線等具有全年開工業(yè)績的線更是風(fēng)毛麟角。這種現(xiàn)象不屬偶然或局部,而是帶有普遍性。據(jù)調(diào)查,我國引進(jìn)的弧焊機(jī)器人,完全正常運(yùn)轉(zhuǎn)、充分發(fā)揮效益的只占13,另外13處于負(fù)荷不滿或不能完全正常運(yùn)轉(zhuǎn)狀態(tài)還有13不能正常使用,直接影響了用戶使用更多機(jī)器人的信心。所以,我國現(xiàn)在需要自動(dòng)化控制方面的人才,以提高利用率、生產(chǎn)率。33職業(yè)環(huán)境由于大力發(fā)展工業(yè)自動(dòng)化是加快傳統(tǒng)產(chǎn)業(yè)改造提升、提高企業(yè)整體素質(zhì)、提高國家整體國力、調(diào)整工業(yè)結(jié)構(gòu)、迅速搞活大中型企業(yè)的有效途徑和手段,國家將繼續(xù)通過實(shí)施一系列工業(yè)過程自動(dòng)化高技術(shù)產(chǎn)業(yè)化專項(xiàng),用信息化帶動(dòng)工業(yè)化,推動(dòng)工業(yè)自動(dòng)化技術(shù)的進(jìn)一步發(fā)展,加強(qiáng)技術(shù)創(chuàng)新,實(shí)現(xiàn)產(chǎn)業(yè)化,解決國民經(jīng)濟(jì)發(fā)展面臨的深層問題,進(jìn)一步提高國民經(jīng)濟(jì)整體素質(zhì)和綜合國力,實(shí)現(xiàn)跨越式發(fā)展。此時(shí)很多企業(yè)都需要自動(dòng)化控制方面的人才。34分析小結(jié)前景是樂觀的,但是經(jīng)濟(jì)的發(fā)展和全球化的到來必將導(dǎo)致人才精英化,這就需要我更加努力學(xué)習(xí)與專業(yè)相關(guān)的拓展知識(shí),完善自己,讓自己更容易融入社會(huì),融入工作。4未來人生職業(yè)規(guī)劃技術(shù)學(xué)習(xí)期對(duì)于我們剛畢業(yè)的大學(xué)生來說,最缺乏的應(yīng)該就是動(dòng)手操作的能力了,也就是技術(shù)所以,畢業(yè)后先學(xué)一門技術(shù)在這個(gè)高速發(fā)展的社會(huì)里是刻不容緩的。我需要三年的時(shí)間去學(xué)習(xí)一門技術(shù),這不僅會(huì)是為了未來的生活,我還必須根據(jù)自己的知識(shí)去完善它,讓它成為我自己的技術(shù)。經(jīng)驗(yàn)累積期在這個(gè)時(shí)期,我已經(jīng)可以獨(dú)立工作,并且還要多學(xué)習(xí)經(jīng)驗(yàn),多與同行師傅學(xué)習(xí)。并且要學(xué)習(xí)企業(yè)管理,為以后的創(chuàng)業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。這個(gè)時(shí)期我定為五年。自主創(chuàng)業(yè)期在這個(gè)時(shí)期,我已經(jīng)學(xué)習(xí)到了技術(shù),積累了經(jīng)驗(yàn),有了廣闊的人際關(guān)系和豐富的管理知識(shí)。我需要的是拼搏。在未來的兩年,我會(huì)用我積攢的知識(shí)、技術(shù)、資金和人脈組成一個(gè)二十人左右的團(tuán)隊(duì),走上我的創(chuàng)業(yè)路。創(chuàng)業(yè)的路一定是艱辛的,一定會(huì)遇到各種各樣的問題,我會(huì)在接下來的兩年里不斷改善我的團(tuán)隊(duì),發(fā)展她5總結(jié)通過規(guī)劃,我清楚地認(rèn)識(shí)了自己,確立了自己的努力方向和職業(yè)定位,這樣就可以使自己保持平穩(wěn)和正常的心態(tài),按照目標(biāo)和理想有條不紊、循序漸進(jìn)地努力。當(dāng)然,計(jì)劃雖好,最重要的還是在于其具體的實(shí)踐和所取得的成效。任何目標(biāo),只說不做到頭來都會(huì)是一場空。然而現(xiàn)實(shí)是未知多變的,定出的計(jì)劃隨時(shí)都會(huì)遭遇問題,這就要求我們有清醒的頭腦,客觀的分析和全面的認(rèn)知。每個(gè)人都有自己的理想信念,抱負(fù)和追求,每個(gè)人都渴望成功,但在此過程中我們必須堅(jiān)持信念,必須持之以恒,必須腳踏實(shí)第二部分C語言編寫圖書管理系統(tǒng)摘要論文主要講述的是用C語言編寫圖書管理系統(tǒng)。在本次設(shè)計(jì)中,先是對(duì)系統(tǒng)的需求進(jìn)行分析,得到了圖書管理系統(tǒng)所需要的基本功能。再進(jìn)行了模塊化的分組,將圖書管理系統(tǒng)所需要的功能細(xì)分為多個(gè)模塊進(jìn)行各模塊的開發(fā)。繼而對(duì)各功能菜單和流程進(jìn)行設(shè)計(jì)。數(shù)據(jù)結(jié)構(gòu)是這個(gè)系統(tǒng)最重要的部分之一,因?yàn)樗袚?dān)著整個(gè)系統(tǒng)數(shù)據(jù)存儲(chǔ)的重?fù)?dān)。而圖書管理系統(tǒng)的數(shù)據(jù)時(shí)非常多的。最后進(jìn)行系統(tǒng)測試和調(diào)試。關(guān)鍵詞C語言;圖書管理系統(tǒng);需求;模塊;結(jié)構(gòu);流程;數(shù)據(jù)測試ABSTRACTTHEPAPERISTALKINGABOUTWRITTENABOOKSMANAGEMENTSYSTEMINCPROGRAMMINGLANGUAGEINTHISDESIGN,IGETTHESYSTEMREQUIREMENTSFIRSTANDIKNOWWHATFUNCTIONISTHEBOOKSMANAGEMENTSYSTEMNEEDSECONDLY,IDIVIDETHEBOOKSMANAGEMENTSYSTEMINTOSEVERYMODULESANDDEVELOPMENTEACHMODULEANDTHENDESIGNSEACHFUNCTIONMENUANDPROCESSTHEDATASTRUCTUREOFTHISSYSTEMISONEOFTHEMOSTIMPORTANTPARTS,BECAUSEITBEARTHEBURDENOFTHEWHOLESYSTEMDATASTORAGEANDTHEDATAOFTHEBOOKSMANAGEMENTSYSTEMISSOMUCHFINALLY,TESTINGANDDEBUGGINGTHEBOOKSMANAGEMENTSYSTEMKEYWORDSCPROGRAMMINGLANGUAGEBOOKSMANAGEMENTSYSTEMREQUIREMENTMODULESTRUCTUREPROCESSDATATESTING1需求分析11系統(tǒng)需求為了方便讀者查找自己需要的書籍及圖書館人員的管理,需要對(duì)書籍進(jìn)行必要的分類處理,這樣既方便管理人員對(duì)圖書的管理,也方便讀者的借閱,使圖書管理井然有序。12功能分析圖書分類管理為了便于不同書籍的管理,圖書可分為不同的類別,用于編輯不同的權(quán)限,設(shè)置不同的管理方式。讀者分類管理為了讀者管理方便,可以將讀者分為不同的類別,定義不同的屬性,靈活的管理讀者信息。管理員分類管理為了便于對(duì)管理員的管理,管理員可分為多種類別,并且可以編輯,各級(jí)管理員權(quán)限亦不同,實(shí)現(xiàn)管理員對(duì)圖書管理系統(tǒng)的管理。圖書查詢?cè)O(shè)定多種搜索條件,按條件搜索符合讀者要求的圖書。如果讀者知道某本書的書名、作者等相關(guān)信息,利用圖書搜索功能就很方便了。權(quán)限管理權(quán)限管理包括兩部分內(nèi)容對(duì)讀者帳號(hào)的管理和對(duì)書籍信息的管理。管理員需要給用戶分配用戶名和密碼,同時(shí)設(shè)定用戶的類別。同時(shí),管理員還需要給書籍規(guī)定類別,用以圖書和讀者的管理。違規(guī)管理用以管理圖書借閱超期的讀者,違規(guī)讀者在得到相應(yīng)處罰后才能繼續(xù)借閱圖書。2系統(tǒng)功能模塊結(jié)構(gòu)圖本圖書管理系統(tǒng)由圖書管理,讀者管理,圖書借閱,管理員管理四個(gè)大的菜單模塊組成,其總體結(jié)構(gòu)圖如下圖書管理模塊讀者管理模塊圖書借閱模塊管理員模塊圖1圖書管理系統(tǒng)總體結(jié)構(gòu)圖圖書管理系統(tǒng)21系統(tǒng)調(diào)用的函數(shù)函數(shù)名稱函數(shù)功能ADMINISTERS_SHOW顯示管理員數(shù)據(jù)ADMINISTERS修改管理員數(shù)據(jù)ADD_ADMINISTERS增加管理員DELE_ADMINISTERS刪除管理ADMINTYPE_SHOW顯示管理員類別數(shù)據(jù)ADMINTYPE修改管理員類別數(shù)據(jù)ADD_ADMINTYPE增加管理員類別DELE_ADMINTYPE刪除管理員類別BOOKS_SHOW顯示書籍信息BOOKS修改書籍信息ADD_BOOKS增加書籍DELE_BOOKS刪除書籍SURCH_BOOKS搜索書籍BORROW_BOOKS書籍借閱BOOKTYPE_SHOW顯示圖書類別BOOKTYPE修改圖書類別ADD_BOOKTYPE增加圖書類別DELE_BOOKTYPE刪除圖書類別BORROWINFO_SHOW顯示借閱信息ADD_BORROWINFO增加借閱信息SURCH_BORROWINFO搜索借閱信息RETURN_BORROWINFO歸還圖書DATE_SHOW顯示時(shí)間DATECPY時(shí)間復(fù)制函數(shù)RETURN_DATE還書日期計(jì)算函數(shù)DATE_COMPARE時(shí)間比較函數(shù)GET_TIME獲取系統(tǒng)時(shí)間OUTLINE_SHOW顯示違規(guī)記錄OUTLINE修改違規(guī)記錄ADD_OUTLINE增加違規(guī)記錄OUTLINE_JUDGE判斷圖書是否過期OUTLINE_SURCH搜索違規(guī)記錄READERS_SHOW顯示讀者信息READERS修改讀者信息ADD_READERS增加讀者DELE_READERS刪除讀者READERTYPE_SHOW顯示讀者類別READERTYPE修改讀者類別ADD_READERTYPE增加讀者類別DELE_READERTYPE刪除讀者類別圖2系統(tǒng)調(diào)用的函數(shù)圖22圖書管理系統(tǒng)模塊主菜單包括讀者登陸,管理員登陸,圖書查詢,退出。讀者登陸圖書借閱,已借圖書,借閱歷史,違規(guī)記錄,退出。管理員登陸圖書查詢,圖書管理,讀者管理,違規(guī)處理,返回上層,退出。圖書查詢根據(jù)圖書名稱查詢圖書。退出退出圖書管理系統(tǒng)。主菜單讀者登陸管理員登陸圖書查詢退出圖書借閱退出違規(guī)記錄借閱歷史已借圖書圖書查詢退出返回上一層違規(guī)處理讀者管理圖書管理添加圖書返回刪除類別添加類別刪除圖書添加讀者刪除讀者返回刪除類別添加類別圖3圖書管理系統(tǒng)模塊3圖書管理系統(tǒng)的結(jié)構(gòu)31主函數(shù)流程圖311主控模塊在該模塊中,提供系統(tǒng)主菜單,通過主菜單用戶選擇讀者登陸、管理員登陸、圖書查詢和退出。開始顯示系統(tǒng)菜單B1B2B3B4調(diào)用讀者登錄菜單READERMENU調(diào)用管理員登陸菜單ADMINMENU調(diào)用圖書查詢函數(shù)SURCH_BOOKS退出數(shù)據(jù)結(jié)構(gòu)定義YYYYNNNNYYY圖4主控模塊流程圖312讀者登陸模塊在該模塊中,提供子菜單供用戶選擇圖書查詢,已借書目,借閱歷史,違規(guī)記錄和退出。查詢函數(shù)直接調(diào)用借閱函數(shù)借閱圖書。已借書目查詢未歸還圖書。借閱歷史查詢已還圖書。違規(guī)記錄查詢超期未還圖書。YNYNYNYNNY圖5讀者登陸模塊流程圖開始B1顯示讀者菜單B2B3B4B5退出調(diào)用圖書借閱函數(shù)BORROW_BOOKS調(diào)用借閱信息查詢函數(shù)SURCH_BOWWOWINFO調(diào)用借閱信息查詢函數(shù)SURCH_BOWWOWINFO調(diào)用違規(guī)記錄查詢函數(shù)OUTLINE_SURCH313管理員登陸模塊在該模塊中,提供子菜單供用戶選擇圖書查詢,圖書管理,讀者管理,違規(guī)記錄,返回上層和退出。查詢菜單調(diào)用圖書查詢函數(shù)查詢圖書。圖書館里調(diào)用圖書管理菜單,對(duì)圖書管理進(jìn)行各種操作。讀者管理調(diào)用讀者管理菜單,對(duì)讀者進(jìn)行各種操作。違規(guī)記錄調(diào)用違規(guī)記錄處理函數(shù),對(duì)讀者超期的圖書進(jìn)行管理。返回上一層為保持管理員的登陸狀態(tài),以便讀者借閱圖書。退出為管理員退出登陸,此狀態(tài)下讀者不可借閱圖書。YNYNYNYN圖6管理員登陸模塊流程圖B6YN開始B2顯示管理員菜單B3B4B1B5退出調(diào)用圖書查詢函數(shù)SURCH_BOOKS調(diào)用圖書管理菜單BOOK_ADMIN_MENU調(diào)用讀者管理菜單READER_ADMIN_MENU調(diào)用違規(guī)處理函數(shù)OUTLINE_ALTERYN314圖書管理模塊在該菜單中供用戶選擇添加圖書,刪除圖書,添加類別,刪除類別和返回。添加圖書調(diào)用添加圖書函數(shù)。刪除圖書調(diào)用圖書刪除函數(shù)。添加類別調(diào)用添加類別函數(shù)。刪除類別調(diào)用類別刪除函數(shù)。返回為退出圖書圖書管理菜單,并返回上層菜單。圖7圖書管理模塊流程圖開始B1顯示圖書管理菜單B2B3B4B5調(diào)用添加圖書函數(shù)ADD_BOOKS調(diào)用刪除圖書函數(shù)DELE_BOOKS調(diào)用添加圖書類別函數(shù)ADD_BOOKTYPE調(diào)用刪除圖書類別函數(shù)DELE_BOOKTYPE返回YYYYYNNNNN315讀者管理模塊在該菜單中供用戶選擇添加讀者,刪除讀者,添加類別,刪除類別和返回。添加讀者調(diào)用讀者添加函數(shù)。刪除讀者調(diào)用讀者刪除函數(shù)。添加類別調(diào)用讀者類別添加函數(shù),刪除類別調(diào)用讀者類別刪除函數(shù)。返回為退出讀者管理菜單,并返回上一層。圖8讀者管理模塊流程圖開始B1顯示圖書管理菜單B2B3B4B5調(diào)用添加讀者函數(shù)ADD_READERS調(diào)用刪除讀者函數(shù)DELE_READERS調(diào)用添加讀者類別函數(shù)ADD_READERTYPE調(diào)用刪除讀者類別函數(shù)DELE_READERTYPE返回NYYYYYNNNN32實(shí)體數(shù)據(jù)結(jié)構(gòu)321讀者類別結(jié)構(gòu)圖9讀者類別結(jié)構(gòu)圖322讀者信息結(jié)構(gòu)圖10讀者信息結(jié)構(gòu)圖讀者類別NEXT指針備注最多節(jié)約數(shù)量借閱期限類別名稱類別編號(hào)讀者信息備注密碼NEXT指針姓名證件號(hào)院系電話電子郵箱辦證日期有效期限類別323圖書類別結(jié)構(gòu)圖11圖書類別結(jié)構(gòu)圖324圖書數(shù)據(jù)結(jié)構(gòu)圖12圖書信息結(jié)構(gòu)圖圖書類別類別編號(hào)類別名稱圖書關(guān)鍵字備注NEXT指針剩余數(shù)量圖書信息館藏地址備注索書號(hào)NEXT指針圖書編號(hào)圖書名稱圖書類別作者出版社出版日期單價(jià)頁數(shù)登記時(shí)間總數(shù)關(guān)鍵字325管理員類別結(jié)構(gòu)圖13管理員類別結(jié)構(gòu)圖326管理員數(shù)據(jù)結(jié)構(gòu)圖14管理員數(shù)據(jù)結(jié)構(gòu)圖管理員類別類別編號(hào)NEXT指針類別名稱管理級(jí)別管理期限備注管理員類別NEXT指針類別證件號(hào)姓名電話電郵密碼辦理日期備注327借閱信息結(jié)構(gòu)圖15借閱信息結(jié)構(gòu)圖328違規(guī)記錄數(shù)據(jù)結(jié)構(gòu)圖16違規(guī)記錄結(jié)構(gòu)圖借閱信息NEXT指針圖書編號(hào)圖書名稱讀者證號(hào)讀者姓名借閱日期還書日期借閱狀態(tài)備注違規(guī)記錄NEXT指針處理狀態(tài)書籍名稱書籍編號(hào)讀者姓名讀者證號(hào)33程序文件存儲(chǔ)設(shè)計(jì)程序數(shù)據(jù)采用鏈表結(jié)構(gòu)。鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)。用數(shù)組存儲(chǔ)數(shù)據(jù)時(shí),必須事先定義固定的長度(即元素個(gè)數(shù))。如果事先難以確定元素個(gè)數(shù),則必須把數(shù)組定義的足夠大,以便能存放任意數(shù)目的數(shù)據(jù),顯然這將會(huì)浪費(fèi)內(nèi)存。鏈表則沒有這種缺點(diǎn),它根據(jù)需要開辟內(nèi)存單元。所以本程序選用鏈表結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)。331鏈表存儲(chǔ)結(jié)構(gòu)簡述HEAD1249135614751021圖17鏈表示意圖鏈表有一個(gè)“頭指針”變量,圖中HEAD表示,它存放一個(gè)地址,該地址指向一個(gè)元素。鏈表中每一個(gè)元素成為“結(jié)點(diǎn)”,每個(gè)結(jié)點(diǎn)都應(yīng)包括兩個(gè)部分;用戶需要用的實(shí)際數(shù)據(jù)和下一個(gè)結(jié)點(diǎn)的地址。HEAD指向第一個(gè)元素;第一個(gè)元素又指向第二個(gè)元素直到最后一個(gè)元素,該元素不再指向其它元素,它稱為“表尾”,它的地址部分放一個(gè)“NULL”(表示“空地址”),鏈表到此結(jié)束。鏈表中各個(gè)元素在內(nèi)存中可以不是連續(xù)存放的。要找某一元素,必須先找到上一個(gè)元素,根據(jù)它提供的下一元素地址才能找到下一元素。如果不提供“頭指針”(HEAD),則整個(gè)鏈表都無法訪問。由此可見,頭指針在鏈表中得重要性。由此,本程序中頭指針都列為全局變量,可供各個(gè)文件中函數(shù)調(diào)用,保證數(shù)據(jù)的流通。同時(shí),頭指針也不直接應(yīng)用,而是傳遞給同類型指針后再應(yīng)用,用以保證頭指針不被隨意修改,保證程序的穩(wěn)定性。332動(dòng)態(tài)鏈表的建立建立動(dòng)態(tài)鏈表是指在程序執(zhí)行過程中從無到有地建立起一個(gè)鏈表,即一個(gè)一個(gè)地開辟結(jié)點(diǎn)和輸入各結(jié)點(diǎn)數(shù)據(jù),并建立起前后相連的關(guān)系。HEADP1P2A1249A1356B1475C1021DNULL10101AHEADP1P2BHEADP1P2CP1HEADP2DP1HEADP2E10101A10103B10101A10103B10101A10103B10101A10103B10107BP1HEADP2F圖18鏈表建立示意圖當(dāng)輸入第一個(gè)結(jié)點(diǎn)數(shù)據(jù)時(shí),令HEADP1,即把P1的值賦給HEAD,也就是使HEAD也指向新開辟的結(jié)點(diǎn)(圖18A)。P1所指向的新開辟的結(jié)點(diǎn)就成為鏈表中第一個(gè)結(jié)點(diǎn)。然后再開辟另一個(gè)結(jié)點(diǎn)并使P1指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)(圖18B)。當(dāng)鏈入第二個(gè)結(jié)點(diǎn)時(shí),將P1的值賦給P2NEXT,此時(shí)P2指向第一個(gè)結(jié)點(diǎn),因此執(zhí)行“P2NEXTP1”就將新結(jié)點(diǎn)的地址賦給第一個(gè)結(jié)點(diǎn)的NEXT成員,使第一個(gè)結(jié)點(diǎn)的NEXT成員指向第二個(gè)結(jié)點(diǎn)(圖18C)。接著使P2P1,也就是使P2指向剛才建立的結(jié)點(diǎn)(圖18D)。接著再開辟一個(gè)結(jié)點(diǎn)并使P1指向它,并輸入該結(jié)點(diǎn)的數(shù)據(jù)(圖18E)。再次循環(huán)建立結(jié)點(diǎn),又將P1的值賦給P2NEXT,也就是將第3個(gè)結(jié)點(diǎn)連接到第2個(gè)結(jié)點(diǎn)之后,并使P2P1,使P2指向最后一個(gè)結(jié)點(diǎn)(圖18F)。在結(jié)束結(jié)點(diǎn)建立時(shí),最后一個(gè)結(jié)點(diǎn)NEXT成員應(yīng)被賦給NULL,它不指向任何結(jié)點(diǎn)。333動(dòng)態(tài)鏈表的刪除動(dòng)態(tài)鏈表的刪除指刪除鏈表中得某一個(gè)結(jié)點(diǎn)。即查找到要?jiǎng)h除的結(jié)點(diǎn)后刪除此結(jié)點(diǎn),再將其余鏈表連接。(A)(B)圖1910101A10103B10107CABCDEABCDE與此相仿,從一個(gè)動(dòng)態(tài)鏈表中刪去一個(gè)結(jié)點(diǎn),并不是真正從內(nèi)存中把它抹掉,而是把它從鏈表中分離開來,只要撤銷原來的連接關(guān)系即可。HEADP1(A)HEADP1P2BHEADP1CHEADP1P2D圖20動(dòng)態(tài)鏈表刪除示意圖101011010310107NULL101011010310107NULL101011010310107NULL101011010310107NULL設(shè)兩個(gè)指針變量P1和P2,先使P1指向第一個(gè)結(jié)點(diǎn)(圖20A)。如果要?jiǎng)h除的不是第一個(gè)結(jié)點(diǎn),則使P1后移指向下一個(gè)結(jié)點(diǎn)(將P1NEXT賦給P1),在此之前應(yīng)將P1的值賦給P2,是P2指向剛才檢查過的那個(gè)結(jié)點(diǎn)(圖20B)。如此一次一次地使P1后移,直到找到所要?jiǎng)h除的結(jié)點(diǎn)或檢查完全部鏈表都找不到要?jiǎng)h除的結(jié)點(diǎn)為止。如果找到某一結(jié)點(diǎn)是要?jiǎng)h除的結(jié)點(diǎn),還要區(qū)分兩種情況要?jiǎng)h除的是第一個(gè)結(jié)點(diǎn)(P1的值等于HEAD的值,如圖20A那樣),則應(yīng)將P1NEXT賦給HEAD(圖20C)。這時(shí)HEAD指向原來的第二個(gè)結(jié)點(diǎn)。第一個(gè)結(jié)點(diǎn)雖然仍存在,但它已與鏈表脫離,因?yàn)殒湵碇袥]有一個(gè)結(jié)點(diǎn)或頭指針指向它。雖然P1還指向它,它仍指向第二個(gè)結(jié)點(diǎn),但仍無濟(jì)于事,現(xiàn)在鏈表的第一個(gè)結(jié)點(diǎn)是原來的第二個(gè)結(jié)點(diǎn),原來第一個(gè)結(jié)點(diǎn)已“丟失”,即不再是鏈表中得一部分了。如果要?jiǎng)h除的不是第一個(gè)結(jié)點(diǎn),則將P1NEXT賦給P2NEXT圖20D。P2NEXT原來指向P1指向的結(jié)點(diǎn)(圖中第二個(gè)結(jié)點(diǎn)),現(xiàn)在P2NEXT改為指向P1NEXT所指向的結(jié)點(diǎn)(圖中第三個(gè)結(jié)點(diǎn))。P1所指向的結(jié)點(diǎn)不再是鏈表的一部分。還要烤爐鏈表是空表(無結(jié)點(diǎn))和鏈表中找不到要?jiǎng)h除的結(jié)點(diǎn)的情況。334動(dòng)態(tài)鏈表的插入對(duì)鏈表的插入是指將一個(gè)結(jié)點(diǎn)插入到一個(gè)已有的鏈表中。根據(jù)插入的位置不同,可分為三種插入方式插在鏈表開頭。插在鏈表結(jié)尾。插在鏈表中間。P1HEADP0(A)1010110103NULL10108HEADP1P0B圖21動(dòng)態(tài)鏈表插入示意圖由于在本程序中只用到第一種插入方式,所以此處只對(duì)第一種插入方式進(jìn)行講解。先將指針變量P0指向待插入結(jié)點(diǎn),P1指向第一個(gè)結(jié)點(diǎn),見圖21A。插入位置為第一個(gè)結(jié)點(diǎn)之前(即P1等于HEAD),將P0賦給HEAD,將P1賦給P0NEXT,見圖21B。335數(shù)據(jù)文件存儲(chǔ)為了使用方便,容易理解和對(duì)文件直接訪問,本程序用FPRINTF和FSCANF函數(shù)對(duì)磁盤文件讀寫。這種存儲(chǔ)方式在輸入時(shí)要將ASC碼轉(zhuǎn)換為二進(jìn)制形式,在輸出是又要將二進(jìn)制形式轉(zhuǎn)換成字符,花費(fèi)時(shí)間比較多。此處可以用FREAD和FWRITE函數(shù)代替,但是為了更方便閱讀文件,此處不做代替。程序數(shù)據(jù)存取主要由八個(gè)文件ADMINISTERSDAT、ADMINTYPEDAT、BOOKSDAT、BOOKTYPEDAT、READERSDAT、READERTYPEDAT、BORROWINFODAT、OUTLINEDAT組成。ADMINISTERSDAT用于存儲(chǔ)管理員信息。程序的增加管理員、刪除管理員等功能均是對(duì)此文件進(jìn)行讀寫操作。ADMINTYPEDAT用于存儲(chǔ)管理員類別信息。程序的增加管理員類別、刪除管理員類別等功能均是對(duì)此文件的讀寫操作。BOOK

溫馨提示

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