![C語言編寫圖書管理系統(tǒng)--精選文檔_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/ab9d6f51-60a2-4852-bbb6-4232c7e0dfd4/ab9d6f51-60a2-4852-bbb6-4232c7e0dfd41.gif)
![C語言編寫圖書管理系統(tǒng)--精選文檔_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/13/ab9d6f51-60a2-4852-bbb6-4232c7e0dfd4/ab9d6f51-60a2-4852-bbb6-4232c7e0dfd42.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、臨沂大學2012屆本科畢業(yè)設計說明書2012屆 分 類 號: 單位代碼:本科畢業(yè)設計說明書C語言編寫圖書管理系統(tǒng)姓 名 李 彬 學 號 200815840114 年 級 2008級本科3班 專 業(yè) 機械設計制造及其自動化 系(院)機械工程學院 指導教師 李培珍 年 月 日28目 錄第一部分1職業(yè)生涯規(guī)劃十年創(chuàng)業(yè)路11前 言12自我剖析13環(huán)境分析13.1國家環(huán)境13.2社會環(huán)境13.3職業(yè)環(huán)境23.4分析小結(jié)24未來人生職業(yè)規(guī)劃25總 結(jié)2第二部分4C語言編寫圖書管理系統(tǒng)4摘 要4Abstract51需求分析61.1 系統(tǒng)需求61.2 功能分析62系統(tǒng)功能模塊結(jié)構(gòu)圖62.1 系統(tǒng)調(diào)用的函數(shù)72
2、.2 圖書管理系統(tǒng)模塊93 圖書管理系統(tǒng)的結(jié)構(gòu)103.1 主函數(shù)流程圖103.1.1主控模塊103.1.2讀者登陸模塊113.1.3管理員登陸模塊123.1.4圖書管理模塊133.1.5讀者管理模塊143.2 實體數(shù)據(jù)結(jié)構(gòu)153.2.1讀者類別結(jié)構(gòu)153.2.2讀者信息結(jié)構(gòu)153.2.3圖書類別結(jié)構(gòu)163.2.4圖書數(shù)據(jù)結(jié)構(gòu)163.2.5管理員類別結(jié)構(gòu)173.2.6管理員數(shù)據(jù)結(jié)構(gòu)173.2.7借閱信息結(jié)構(gòu)183.2.8違規(guī)記錄數(shù)據(jù)結(jié)構(gòu)183.3 程序文件存儲設計193.3.1鏈表存儲結(jié)構(gòu)簡述193.3.2動態(tài)鏈表的建立193.3.3動態(tài)鏈表的刪除213.3.4動態(tài)鏈表的插入233.3.5數(shù)據(jù)文
3、件存儲244 圖書管理系統(tǒng)測試254.1 測試過程254.2 實驗結(jié)果254.3 系統(tǒng)缺陷255出錯處理255.1 出錯輸出信息255.2 出錯處理對策256安全設計257 設計心得26參 考 文 獻27附 錄27第一部分職業(yè)生涯規(guī)劃十年創(chuàng)業(yè)路1前 言 在今天這個人才競爭的時代,職業(yè)生涯規(guī)劃開始成為在人爭奪戰(zhàn)中的另一重要利器。對企業(yè)而言,如何體現(xiàn)公司“以人為本”的人才理念,關注員工的人才理念,關注員工的持續(xù)成長,職業(yè)生涯規(guī)劃是一種有效的手段;而對每個人而言,職業(yè)生命是有限的,如果不進行有效的規(guī)劃,勢必會造成生命和時間的浪費。作為當代大學生,若是帶著一臉茫然,踏入這個擁擠的社會怎能滿足社會的需要
4、,使自己占有一席之地?因此,我試著為自己擬定一份職業(yè)生涯規(guī)劃,將自己的未來好好的設計一下。有了目標,才會有動力。2自我剖析優(yōu)點:做事仔細認真、踏實、有耐心、肯吃苦耐勞。 為人和藹、友善、安分、忠實可靠、很好相處而且能以一種 實事求是的態(tài)度接受他人的行為,但我需要基本的信任和理解。總是避免矛盾,更在意維護人際關系。只要可能,就會使自己適應他人的需要和期望。 缺點:性格偏內(nèi)向,不太善于表達自己,語言表達還很欠缺。交際能力較差,膽小,思想上屬保守派,積極主動性不夠。有時偷懶,知識面不廣,經(jīng)驗不足。缺乏毅力、恒心有時多愁善感。 興趣愛好:1.cad、PRO/E繪圖。2.看書。3.編程。4.聽音樂。3環(huán)
5、境分析3.1國家環(huán)境機械自動化技術從上個世紀2O年代開始發(fā)展應用以來,已經(jīng)得到了迅速的發(fā)展,特別是近年來計算機的高度集成化,開始采用了計算機集成制造系統(tǒng),大大加快了機械自動化的發(fā)展,但我國仍處于初級操作階段的自動化。我國機械制造業(yè)目前有1 14萬個企業(yè),發(fā)展很不平衡,有大量落后于現(xiàn)代水準的產(chǎn)業(yè),大部分企業(yè)還比較落后,手工勞動占有相當?shù)谋戎兀覈塥毩㈤_發(fā)現(xiàn)代機械自動化技術的企業(yè)可以說沒有;我國機械制造業(yè)企業(yè)中自動化裝備少、水準低,不僅在數(shù)量上同世界先進國家有較大差距,而且在品種上、質(zhì)量上、使用上,同世界先進水準也存在階段性差距。實現(xiàn)我國機械自動化技術是一個長期的過程,不可能一蹴而就,需要循序漸
6、進,不斷努力,創(chuàng)造條件,向自動化的高級理想階段邁進。 3.2社會環(huán)境國產(chǎn)造型生產(chǎn)線因產(chǎn)品質(zhì)量差、可靠性低、實用性差,開工率一般僅在5060。而能在生產(chǎn)中長期服役的主力生產(chǎn)線很少,像第一汽車制造廠的01線、第二汽車制造廠的BMD線等具有全年開工業(yè)績的線更是風毛麟角。這種現(xiàn)象不屬偶然或局部,而是帶有普遍性。據(jù)調(diào)查,我國引進的弧焊機器人,完全正常運轉(zhuǎn)、充分發(fā)揮效益的只占13,另外13處于負荷不滿或不能完全正常運轉(zhuǎn)狀態(tài):還有13不能正常使用,直接影響了用戶使用更多機器人的信心。所以,我國現(xiàn)在需要自動化控制方面的人才,以提高利用率、生產(chǎn)率。3.3職業(yè)環(huán)境由于大力發(fā)展工業(yè)自動化是加快傳統(tǒng)產(chǎn)業(yè)改造提升、提高
7、企業(yè)整體素質(zhì)、提高國家整體國力、調(diào)整工業(yè)結(jié)構(gòu)、迅速搞活大中型企業(yè)的有效途徑和手段,國家將繼續(xù)通過實施一系列工業(yè)過程自動化高技術產(chǎn)業(yè)化專項,用信息化帶動工業(yè)化,推動工業(yè)自動化技術的進一步發(fā)展,加強技術創(chuàng)新,實現(xiàn)產(chǎn)業(yè)化,解決國民經(jīng)濟發(fā)展面臨的深層問題,進一步提高國民經(jīng)濟整體素質(zhì)和綜合國力,實現(xiàn)跨越式發(fā)展。此時很多企業(yè)都需要自動化控制方面的人才。3.4分析小結(jié)前景是樂觀的,但是經(jīng)濟的發(fā)展和全球化的到來必將導致人才精英化,這就需要我更加努力學習與專業(yè)相關的拓展知識,完善自己,讓自己更容易融入社會,融入工作。 4未來人生職業(yè)規(guī)劃技術學習期:對于我們剛畢業(yè)的大學生來說,最缺乏的應該就是動手操作的能力了,也
8、就是技術!所以,畢業(yè)后先學一門技術在這個高速發(fā)展的社會里是刻不容緩的。我需要三年的時間去學習一門技術,這不僅會是為了未來的生活,我還必須根據(jù)自己的知識去完善它,讓它成為我自己的技術。經(jīng)驗累積期:在這個時期,我已經(jīng)可以獨立工作,并且還要多學習經(jīng)驗,多與同行師傅學習。并且要學習企業(yè)管理,為以后的創(chuàng)業(yè)打下堅實的基礎。這個時期我定為五年。自主創(chuàng)業(yè)期:在這個時期,我已經(jīng)學習到了技術,積累了經(jīng)驗,有了廣闊的人際關系和豐富的管理知識。我需要的是拼搏。在未來的兩年,我會用我積攢的知識、技術、資金和人脈組成一個二十人左右的團隊,走上我的創(chuàng)業(yè)路。創(chuàng)業(yè)的路一定是艱辛的,一定會遇到各種各樣的問題,我會在接下來的兩年里
9、不斷改善我的團隊,發(fā)展她5總 結(jié) 通過規(guī)劃,我清楚地認識了自己,確立了自己的努力方向和職業(yè)定位,這樣就可以使自己保持平穩(wěn)和正常的心態(tài),按照目標和理想有條不紊、循序漸進地努力。當然,計劃雖好,最重要的還是在于其具體的實踐和所取得的成效。任何目標,只說不做到頭來都會是一場空。然而現(xiàn)實是未知多變的,定出的計劃隨時都會遭遇問題,這就要求我們有清醒的頭腦,客觀的分析和全面的認知。每個人都有自己的理想信念,抱負和追求,每個人都渴望成功,但在此過程中我們必須堅持信念,必須持之以恒,必須腳踏實第二部分C語言編寫圖書管理系統(tǒng)摘 要 論文主要講述的是用C語言編寫圖書管理系統(tǒng)。在本次設計中,先是對系統(tǒng)的需求進行分析
10、,得到了圖書管理系統(tǒng)所需要的基本功能。再進行了模塊化的分組,將圖書管理系統(tǒng)所需要的功能細分為多個模塊進行各模塊的開發(fā)。繼而對各功能菜單和流程進行設計。數(shù)據(jù)結(jié)構(gòu)是這個系統(tǒng)最重要的部分之一,因為它承擔著整個系統(tǒng)數(shù)據(jù)存儲的重擔。而圖書管理系統(tǒng)的數(shù)據(jù)時非常多的。最后進行系統(tǒng)測試和調(diào)試。關鍵詞:C語言;圖書管理系統(tǒng);需求;模塊;結(jié)構(gòu);流程;數(shù)據(jù)測試Abstract The paper is talking about written a Books Management System in C programming language. In this design, I get the system
11、requirements first and I know what function is the Books Management System need. Secondly, I divide the Books Management System into severy modules and development each module. And then designs each function menu and process. The data structure of this system is one of the most important parts, beca
12、use it bear the burden of the whole system data storage. And the data of the books management system is so much. Finally, testing and debugging The Books Management System.Keywords: C programming language; Books Management System; Requirement; Module; Structure; Process; Data testing;1需求分析1.1 系統(tǒng)需求為了
13、方便讀者查找自己需要的書籍及圖書館人員的管理,需要對書籍進行必要的分類處理,這樣既方便管理人員對圖書的管理,也方便讀者的借閱,使圖書管理井然有序。1.2 功能分析圖書分類管理:為了便于不同書籍的管理,圖書可分為不同的類別,用于編輯不同的權(quán)限,設置不同的管理方式。讀者分類管理:為了讀者管理方便,可以將讀者分為不同的類別,定義不同的屬性,靈活的管理讀者信息。管理員分類管理:為了便于對管理員的管理,管理員可分為多種類別,并且可以編輯,各級管理員權(quán)限亦不同,實現(xiàn)管理員對圖書管理系統(tǒng)的管理。圖書查詢:設定多種搜索條件,按條件搜索符合讀者要求的圖書。如果讀者知道某本書的書名、作者等相關信息,利用圖書搜索功
14、能就很方便了。權(quán)限管理:權(quán)限管理包括兩部分內(nèi)容:對讀者帳號的管理和對書籍信息的管理。管理員需要給用戶分配用戶名和密碼,同時設定用戶的類別。同時,管理員還需要給書籍規(guī)定類別,用以圖書和讀者的管理。違規(guī)管理:用以管理圖書借閱超期的讀者,違規(guī)讀者在得到相應處罰后才能繼續(xù)借閱圖書。2系統(tǒng)功能模塊結(jié)構(gòu)圖本圖書管理系統(tǒng)由圖書管理,讀者管理,圖書借閱,管理員管理四個大的菜單模塊組成,其總體結(jié)構(gòu)圖如下:圖書管理系統(tǒng)圖書管理模塊讀者管理模塊圖書借閱模塊管理員模塊圖1圖書管理系統(tǒng)總體結(jié)構(gòu)圖2.1 系統(tǒng)調(diào)用的函數(shù)函數(shù)名稱函數(shù)功能Administers_show()顯示管理員數(shù)據(jù)Administers()修改管理員數(shù)
15、據(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_BookTy
16、pe()刪除圖書類別BorrowInfo_show()顯示借閱信息Add_BorrowInfo()增加借閱信息Surch_BorrowInfo()搜索借閱信息Return_BorrowInfo()歸還圖書date_show()顯示時間datecpy()時間復制函數(shù)return_date()還書日期計算函數(shù)date_compare()時間比較函數(shù)get_time()獲取系統(tǒng)時間OutLine_show()顯示違規(guī)記錄OutLine()修改違規(guī)記錄Add_OutLine()增加違規(guī)記錄OutLine_Judge()判斷圖書是否過期OutLine_Surch()搜索違規(guī)記錄Readers_show(
17、)顯示讀者信息Readers()修改讀者信息Add_Readers()增加讀者Dele_Readers()刪除讀者ReaderType_show()顯示讀者類別ReaderType()修改讀者類別Add_ReaderType()增加讀者類別Dele_ReaderType()刪除讀者類別圖2系統(tǒng)調(diào)用的函數(shù)圖2.2 圖書管理系統(tǒng)模塊主菜單包括:讀者登陸,管理員登陸,圖書查詢,退出。讀者登陸:圖書借閱,已借圖書,借閱歷史,違規(guī)記錄,退出。管理員登陸:圖書查詢,圖書管理,讀者管理,違規(guī)處理,返回上層,退出。圖書查詢:根據(jù)圖書名稱查詢圖書。退出:退出圖書管理系統(tǒng)。主菜單讀者登陸管理員登陸圖書查詢退出圖書
18、借閱退出違規(guī)記錄借閱歷史已借圖書圖書查詢退出返回上一層違規(guī)處理讀者管理圖書管理添加圖書返回刪除類別添加類別刪除圖書添加讀者刪除讀者返回刪除類別添加類別圖3圖書管理系統(tǒng)模塊3 圖書管理系統(tǒng)的結(jié)構(gòu)3.1 主函數(shù)流程圖3.1.1主控模塊在該模塊中,提供系統(tǒng)主菜單,通過主菜單用戶選擇讀者登陸、管理員登陸、圖書查詢和退出。開始顯示系統(tǒng)菜單b=1?b=2?b=3?b=4?調(diào)用讀者登錄菜單ReaderMenu()調(diào)用管理員登陸菜單AdminMenu()調(diào)用圖書查詢函數(shù)Surch_Books()退出數(shù)據(jù)結(jié)構(gòu)定義YYYYNNNNYYY圖4主控模塊流程圖3.1.2讀者登陸模塊在該模塊中,提供子菜單供用戶選擇圖書查
19、詢,已借書目,借閱歷史,違規(guī)記錄和退出。查詢函數(shù)直接調(diào)用借閱函數(shù)借閱圖書。已借書目查詢未歸還圖書。借閱歷史查詢已還圖書。違規(guī)記錄查詢超期未還圖書。開始顯示讀者菜單調(diào)用圖書借閱函數(shù)Borrow_Books()b=1?b=2?b=3?b=4?b=5?退出 YN調(diào)用借閱信息查詢函數(shù)Surch_BowwowInfo()調(diào)用借閱信息查詢函數(shù)Surch_BowwowInfo()調(diào)用違規(guī)記錄查詢函數(shù)OutLine_Surch() Y N Y N Y N N Y圖5讀者登陸模塊流程圖3.1.3管理員登陸模塊調(diào)用圖書查詢函數(shù)Surch_Books()b=1?調(diào)用圖書管理菜單Book_Admin_Menu()b=
20、2?調(diào)用讀者管理菜單Reader_Admin_Menu()b=3?調(diào)用違規(guī)處理函數(shù)OutLine_alter()b=4?b=5?b=6?在該模塊中,提供子菜單供用戶選擇圖書查詢,圖書管理,讀者管理,違規(guī)記錄,返回上層和退出。查詢菜單調(diào)用圖書查詢函數(shù)查詢圖書。圖書館里調(diào)用圖書管理菜單,對圖書管理進行各種操作。讀者管理調(diào)用讀者管理菜單,對讀者進行各種操作。違規(guī)記錄調(diào)用違規(guī)記錄處理函數(shù),對讀者超期的圖書進行管理。返回上一層為保持管理員的登陸狀態(tài),以便讀者借閱圖書。退出為管理員退出登陸,此狀態(tài)下讀者不可借閱圖書。開始顯示管理員菜單 Y N Y N Y N Y NYN NY退出圖6管理員登陸模塊流程圖3
21、.1.4圖書管理模塊在該菜單中供用戶選擇添加圖書,刪除圖書,添加類別,刪除類別和返回。添加圖書調(diào)用添加圖書函數(shù)。刪除圖書調(diào)用圖書刪除函數(shù)。添加類別調(diào)用添加類別函數(shù)。刪除類別調(diào)用類別刪除函數(shù)。返回為退出圖書圖書管理菜單,并返回上層菜單。開始b=1?顯示圖書管理菜單b=2?b=3?b=4?b=5?調(diào)用添加圖書函數(shù)Add_Books()調(diào)用刪除圖書函數(shù)Dele_Books()調(diào)用添加圖書類別函數(shù)Add_BookType()調(diào)用刪除圖書類別函數(shù)Dele_BookType()返回YNYNYNYNNY圖7圖書管理模塊流程圖3.1.5讀者管理模塊在該菜單中供用戶選擇添加讀者,刪除讀者,添加類別,刪除類別和返
22、回。添加讀者調(diào)用讀者添加函數(shù)。刪除讀者調(diào)用讀者刪除函數(shù)。添加類別調(diào)用讀者類別添加函數(shù),刪除類別調(diào)用讀者類別刪除函數(shù)。返回為退出讀者管理菜單,并返回上一層。開始b=1?顯示圖書管理菜單b=2?b=3?b=4?b=5?調(diào)用添加讀者函數(shù)Add_Readers()調(diào)用刪除讀者函數(shù)Dele_Readers()調(diào)用添加讀者類別函數(shù)Add_ReaderType()調(diào)用刪除讀者類別函數(shù)Dele_ReaderType()返回NYNYNYNYNY圖8讀者管理模塊流程圖3.2 實體數(shù)據(jù)結(jié)構(gòu)3.2.1讀者類別結(jié)構(gòu)讀者類別next指針備注最多節(jié)約數(shù)量借閱期限類別名稱類別編號圖9讀者類別結(jié)構(gòu)圖3.2.2讀者信息結(jié)構(gòu)讀者信
23、息備注密碼next指針姓名證件號院系電話電子郵箱辦證日期有效期限類別圖10讀者信息結(jié)構(gòu)圖3.2.3圖書類別結(jié)構(gòu)圖書類別類別編號類別名稱圖書關鍵字備注next指針圖11圖書類別結(jié)構(gòu)圖3.2.4圖書數(shù)據(jù)結(jié)構(gòu)剩余數(shù)量圖書信息館藏地址備注索書號next指針圖書編號圖書名稱圖書類別作者出版社出版日期單價頁數(shù)登記時間總數(shù)關鍵字圖12圖書信息結(jié)構(gòu)圖3.2.5管理員類別結(jié)構(gòu)管理員類別類別編號next指針類別名稱管理級別管理期限備注管理員類別next指針類別證件號姓名電話電郵密碼辦理日期備注圖13管理員類別結(jié)構(gòu)圖3.2.6管理員數(shù)據(jù)結(jié)構(gòu)圖14管理員數(shù)據(jù)結(jié)構(gòu)圖3.2.7借閱信息結(jié)構(gòu)借閱信息next指針圖書編號圖書
24、名稱讀者證號讀者姓名借閱日期還書日期借閱狀態(tài)備注圖15借閱信息結(jié)構(gòu)圖3.2.8違規(guī)記錄數(shù)據(jù)結(jié)構(gòu)違規(guī)記錄next指針處理狀態(tài)書籍名稱書籍編號讀者姓名讀者證號圖16違規(guī)記錄結(jié)構(gòu)圖3.3 程序文件存儲設計程序數(shù)據(jù)采用鏈表結(jié)構(gòu)。鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。它是動態(tài)地進行存儲分配的一種結(jié)構(gòu)。用數(shù)組存儲數(shù)據(jù)時,必須事先定義固定的長度(即元素個數(shù))。如果事先難以確定元素個數(shù),則必須把數(shù)組定義的足夠大,以便能存放任意數(shù)目的數(shù)據(jù),顯然這將會浪費內(nèi)存。鏈表則沒有這種缺點,它根據(jù)需要開辟內(nèi)存單元。所以本程序選用鏈表結(jié)構(gòu)存儲數(shù)據(jù)。3.3.1鏈表存儲結(jié)構(gòu)簡述 head 1249 1356 1475 10211249
25、A1356B1475C1021DNULL圖17鏈表示意圖鏈表有一個“頭指針”變量,圖中head表示,它存放一個地址,該地址指向一個元素。鏈表中每一個元素成為“結(jié)點”,每個結(jié)點都應包括兩個部分;用戶需要用的實際數(shù)據(jù)和下一個結(jié)點的地址。head指向第一個元素;第一個元素又指向第二個元素直到最后一個元素,該元素不再指向其它元素,它稱為“表尾”,它的地址部分放一個“NULL”(表示“空地址”),鏈表到此結(jié)束。鏈表中各個元素在內(nèi)存中可以不是連續(xù)存放的。要找某一元素,必須先找到上一個元素,根據(jù)它提供的下一元素地址才能找到下一元素。如果不提供“頭指針”(head),則整個鏈表都無法訪問。由此可見,頭指針在鏈
26、表中得重要性。由此,本程序中頭指針都列為全局變量,可供各個文件中函數(shù)調(diào)用,保證數(shù)據(jù)的流通。同時,頭指針也不直接應用,而是傳遞給同類型指針后再應用,用以保證頭指針不被隨意修改,保證程序的穩(wěn)定性。3.3.2動態(tài)鏈表的建立建立動態(tài)鏈表是指在程序執(zhí)行過程中從無到有地建立起一個鏈表,即一個一個地開辟結(jié)點和輸入各結(jié)點數(shù)據(jù),并建立起前后相連的關系。10101A head p1 p2 (a) head p110101A10103B P2 (b) head p110101A10103B p2 (c) P110101A10103B head P2 (d)10101A10103B10107B p1 head p2
27、(e)10101A10103B10107C P1 head p2 (f)圖18鏈表建立示意圖 當輸入第一個結(jié)點數(shù)據(jù)時,令head=p1,即把p1的值賦給head,也就是使head也指向新開辟的結(jié)點(圖18a)。p1所指向的新開辟的結(jié)點就成為鏈表中第一個結(jié)點。然后再開辟另一個結(jié)點并使p1指向它,接著輸入該結(jié)點的數(shù)據(jù)(圖18b)。當鏈入第二個結(jié)點時,將p1的值賦給p2-next,此時p2指向第一個結(jié)點,因此執(zhí)行“p2-next=p1”就將新結(jié)點的地址賦給第一個結(jié)點的next成員,使第一個結(jié)點的next成員指向第二個結(jié)點(圖18c)。接著使p2=p1,也就是使p2指向剛才建立的結(jié)點(圖18d)。接著
28、再開辟一個結(jié)點并使p1指向它,并輸入該結(jié)點的數(shù)據(jù)(圖18e)。再次循環(huán)建立結(jié)點,又將p1的值賦給p2-next,也就是將第3個結(jié)點連接到第2個結(jié)點之后,并使p2=p1,使p2指向最后一個結(jié)點(圖18f)。在結(jié)束結(jié)點建立時,最后一個結(jié)點next成員應被賦給NULL,它不指向任何結(jié)點。3.3.3動態(tài)鏈表的刪除 動態(tài)鏈表的刪除指刪除鏈表中得某一個結(jié)點。即查找到要刪除的結(jié)點后刪除此結(jié)點,再將其余鏈表連接。ABCDE (a)ABCDE(b)圖19 與此相仿,從一個動態(tài)鏈表中刪去一個結(jié)點,并不是真正從內(nèi)存中把它抹掉,而是把它從鏈表中分離開來,只要撤銷原來的連接關系即可。101011010310107NUL
29、L head p1 (a)101011010310107NULL head p1 p2 (b) head p1101011010310107NULL (c)101011010310107NULL head p1 p2 (d)圖20動態(tài)鏈表刪除示意圖設兩個指針變量p1和p2,先使p1指向第一個結(jié)點(圖20a)。如果要刪除的不是第一個結(jié)點,則使p1后移指向下一個結(jié)點(將p1-next賦給p1),在此之前應將p1的值賦給p2,是p2指向剛才檢查過的那個結(jié)點(圖20b)。如此一次一次地使p1后移,直到找到所要刪除的結(jié)點或檢查完全部鏈表都找不到要刪除的結(jié)點為止。如果找到某一結(jié)點是要刪除的結(jié)點,還要區(qū)分兩
30、種情況:要刪除的是第一個結(jié)點(p1的值等于head的值,如圖20a那樣),則應將p1-next賦給head(圖20c)。這時head指向原來的第二個結(jié)點。第一個結(jié)點雖然仍存在,但它已與鏈表脫離,因為鏈表中沒有一個結(jié)點或頭指針指向它。雖然p1還指向它,它仍指向第二個結(jié)點,但仍無濟于事,現(xiàn)在鏈表的第一個結(jié)點是原來的第二個結(jié)點,原來第一個結(jié)點已“丟失”,即不再是鏈表中得一部分了。如果要刪除的不是第一個結(jié)點,則將p1-next賦給p2-next(圖20d)。p2-next原來指向p1指向的結(jié)點(圖中第二個結(jié)點),現(xiàn)在p2-next改為指向p1-next所指向的結(jié)點(圖中第三個結(jié)點)。P1所指向的結(jié)點不
31、再是鏈表的一部分。還要烤爐鏈表是空表(無結(jié)點)和鏈表中找不到要刪除的結(jié)點的情況。3.3.4動態(tài)鏈表的插入對鏈表的插入是指將一個結(jié)點插入到一個已有的鏈表中。根據(jù)插入的位置不同,可分為三種插入方式:插在鏈表開頭。插在鏈表結(jié)尾。插在鏈表中間。1010110103NULL10108 p1 head p0 (a) head p11010110103NULL p010108 (b)圖21動態(tài)鏈表插入示意圖由于在本程序中只用到第一種插入方式,所以此處只對第一種插入方式進行講解。先將指針變量p0指向待插入結(jié)點,p1指向第一個結(jié)點,見圖21a。插入位置為第一個結(jié)點之前(即p1等于head),將p0賦給head,
32、將p1賦給p0-next,見圖21b。3.3.5數(shù)據(jù)文件存儲 為了使用方便,容易理解和對文件直接訪問,本程序用fprintf和fscanf函數(shù)對磁盤文件讀寫。這種存儲方式在輸入時要將ASC碼轉(zhuǎn)換為二進制形式,在輸出是又要將二進制形式轉(zhuǎn)換成字符,花費時間比較多。此處可以用fread和fwrite函數(shù)代替,但是為了更方便閱讀文件,此處不做代替。程序數(shù)據(jù)存取主要由八個文件:Administers.dat、AdminType.dat、Books.dat、BookType.dat、Readers.dat、ReaderType.dat、BorrowInfo.dat、OutLine.dat組成。Administers.dat:用于存儲管理員信息。程序的增加管理員、刪除管理員等功能均是對此文件進行讀寫操作。AdminType.dat:用于存儲管理員類別信息。程序的增加管理員類
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個體員工勞動合同樣本(三篇)
- 產(chǎn)業(yè)園裝修合同終止范例
- 大數(shù)據(jù)中心居間合同
- 醫(yī)藥代表傭金居間合同
- 化工原料居間服務合同模板
- 圖書快遞批量運輸合同樣本
- 服裝面料物流采購協(xié)議
- 服裝店裝修合同樣本及清單
- 便捷電子元器件居間協(xié)議
- 公寓裝修保修協(xié)議樣本
- 《鋼鐵是怎樣煉成的》名著閱讀(精講課件) 初中語文名著導讀
- 縮窄性心包炎課件
- 《工程電磁場》配套教學課件
- 遼寧省錦州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細及行政區(qū)劃代碼
- 改革開放的歷程(終稿)課件
- 職位管理手冊
- IPQC首檢巡檢操作培訓
- 東南大學 固體物理課件
- 行政人事助理崗位月度KPI績效考核表
- 紀檢監(jiān)察機關派駐機構(gòu)工作規(guī)則全文詳解PPT
- BP-2C 微機母線保護裝置技術說明書 (3)
評論
0/150
提交評論