版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.軟件工程報告圖書管理系統(tǒng)需求性分析姓名:蔣維佳學(xué)號: 20122018班級:應(yīng)數(shù) 01班1. 引言1.1 編寫目的此規(guī)格說明書是為了對圖書館管理系統(tǒng)做一個概要的說明,是軟件的大概的分析過程,對最終的軟件加以說明。主要的讀者為軟件設(shè)計人員,程序編寫員,以及老師。.1.2 項目背景該項目作為計算機學(xué)院 05 級的軟件課程設(shè)計題目,學(xué)生應(yīng)該在規(guī)定的時間之內(nèi)完成,時間是第七周( 4 月 7 日)到第十二周( 5 月 16 日),學(xué)生應(yīng)該在這個時間之內(nèi)做好需求規(guī)格說明書,概要設(shè)計說明書,詳細設(shè)計說明書,以及做好程序,并在最后加以用戶操作手冊等一系列詳細的設(shè)計要求。1.3 定義1.4 參考資料實用軟件工
2、程第二版 鄭人杰 殷人昆 陶永雷等主編 清華大學(xué)出版社 delphi 程序員成長攻略蒙祖強 龔濤等編著 中國水利水電出版社 delphi7 開發(fā)實例完全剖析 王志強 編著 中國電力出版社精通 delphi 數(shù)據(jù)庫設(shè)計與實例開發(fā)陳潤編著中國青年出版社2. 任務(wù)概述2.1 目標(biāo)通過該系統(tǒng)可以實現(xiàn)最基本的圖書館的一系列的操作流程,其中包括:圖書的借閱,圖書的查找,圖書的退還,借書證的申請,圖書的上架處理,圖書的過期未還的處罰等等功能。這些功能要用delphi 以及后臺的數(shù)據(jù)庫SQL來實現(xiàn)。2.2 運行環(huán)境Windows 98/2000/XP/2003 操作系統(tǒng)下,安裝并配置軟件 Microsoft
3、SQLServer 2000 數(shù)據(jù)庫管理系統(tǒng)。作者用的是windows XP操作系統(tǒng), 理論上可以在windows 98/2000/2003下運行的。2.3 條件與限制因現(xiàn)在配有 windows98 與 windows2003 的操作系統(tǒng)的電腦較少,不易找到,所以在這兩種操作系統(tǒng)上實驗比較困難。3、數(shù)據(jù)描述3.1 靜態(tài)數(shù)據(jù)圖書:圖書編碼,書名,書號,圖書類別,作者,出版社,出版時間,單價管理員:用戶名,密碼,權(quán)限,姓名讀者:借書卡號,姓名,性別,讀者類別,所屬系部,部門或班級3.2 動態(tài)數(shù)據(jù)輸入數(shù)據(jù):鼠標(biāo)對按鈕的點擊,查詢方式,查詢關(guān)鍵字,新建圖書項,新建讀者項,圖書項、讀者項記錄的修改,圖書
4、借還以及注銷操作時的輸入信息,受限操作所需的密碼等。輸出數(shù)據(jù): 查詢關(guān)鍵字所確定的數(shù)據(jù)庫子集,統(tǒng)計結(jié)果, 操作成功或失敗的消息,圖書借還以及注銷操作時的結(jié)果信息。3.3 數(shù)據(jù)庫描述數(shù)據(jù)庫采用 SQL Server 數(shù)據(jù)庫。.3.4 數(shù)據(jù)流圖與數(shù)據(jù)字典1、數(shù)據(jù)流圖(1) 頂層數(shù)據(jù)流圖( 2) 0層數(shù)據(jù)流圖( 3) 1層數(shù)據(jù)流圖? 1.讀者信息管理.? 2.圖書信息管理? 3.圖書借還管理ER圖:.Name genderclassIDKeystuIDgroupuserKeyAdministratorborrowdatareturndataborrowenddatabookIDbookpublicb
5、ookNametotalNumclassNamepriceleftNumIDKeyIDKeyadvancedAdmgeneralAdmasiKeyIDAdministrator3.4 數(shù)據(jù)詞典( DD)高級管理員(帳號,姓名).名字:帳號名字:姓名簡述:用以唯一標(biāo)識用戶的簡述:對用戶加以說明,修信息。飾。不能標(biāo)識具體用戶。范圍:范圍:長度:長度:使用位置:用戶登錄時進行使用位置:在進入系統(tǒng)時,相應(yīng)的判斷核對。顯示相關(guān)的信息。一般管理員(帳號,姓名)名字:帳號名字:姓名簡述:用以唯一標(biāo)識用戶的簡述:對用戶加以說明,修信息。飾。不能標(biāo)識具體用戶。范圍:范圍:長度:長度:使用位置:用戶登錄時進行使用
6、位置:在進入系統(tǒng)時,相應(yīng)的判斷核對。顯示相關(guān)的信息。普通用戶(帳號,姓名,班級,性別,組號)名字:帳號名字:姓名名字:性別簡述:用以唯一標(biāo)識用戶的簡述:對用戶加以說明,修簡述:對用戶加以說明,修信息。飾。不能標(biāo)識具體用戶。飾。不能標(biāo)識具體用戶。范圍:范圍:范圍:長度:長度:長度:使用位置:用戶登錄時進行使用位置:在進入系統(tǒng)時,使用位置:在進入系統(tǒng)時,相應(yīng)的判斷核對。顯示相關(guān)的信息。顯示相關(guān)的信息。名字:班級名字:組號簡述:對用戶加以說明,修簡述:對用戶的等級說明,飾。不能標(biāo)識具體用戶。并且管理最大借書量。范圍:范圍:” 01 ” 05長度:長度:使用位置:在進入系統(tǒng)時,使用位置:借書時對借書量
7、顯示相關(guān)的信息。進行限制。登錄用戶(帳號,密碼,權(quán)限).名字:密碼名字:帳號簡述:與用戶帳號對應(yīng),判簡述:用以唯一標(biāo)識用戶的斷是否能夠進入界面信息。取值范圍:“ 01” .“03”范圍:長度:長度:使用位置:用戶登錄時進行使用位置:用戶登錄時進行權(quán)限的判斷,并進入相應(yīng)的相應(yīng)的判斷核對。界面名字:權(quán)限簡述:登錄用戶的權(quán)利范圍進行管理取值范圍:“01” .“ 03”長度: 2使用位置:用戶登錄時進行權(quán)限的判斷,并進入相應(yīng)的界面圖書類別 (類別,類名)名字:類別名字:類名簡述:每一個圖書有一個類簡述:每一個圖書有一個類別,用以管理員分類管理別,用以管理員分類管理范圍:范圍:長度:長度:使用位置:用戶
8、查找的時候使用位置:用戶查找的時候可以對查找的項目進行限制可以對查找的項目進行限制圖書(圖書編號 ,類別, 書名, 作者,出版日期 , 出版社 ,定價, 總數(shù)量 , 剩下數(shù)量 , 備注)名字:圖書編號名字:書名簡述:唯一標(biāo)識每一本圖書名述字:標(biāo)類識名每一本圖書的十簡名字:作者的關(guān)鍵域簡述:每一個圖書有一個類簡述:標(biāo)識每一本圖書的寫幾名字范圍:別,用以管理員分類管理作者范圍:長度:范圍范圍:長度:使用位置:在新書入庫,長用度位:置:在在新書入庫,使長度:借閱登記 ,借閱查詢,使閱用登位記置:用,戶查借找閱的查時詢候借,使用位置:在新書入庫,借圖書整理,超期提示中使用圖書整理,超期提示中使用閱等級
9、,圖書整理中使用到可以對查找的項目進行限制到到名字:定類價別名字:類型名名字:圖書庫存數(shù)量簡述:標(biāo)每識一每個一圖本書圖有書一的個實類每一個圖書有一個簡述:管理每一種圖書的現(xiàn)簡述:標(biāo)識圖書的分類種類際別價,格用以管理員分類管理別,用以管理員分類管理存量范圍:范圍:范圍范圍:長度:長度:長用度位:置:在新書入庫,借使長度:使用位置:在用新戶書查入找?guī)斓?,時借候使用位置:用戶查找的時候使用位置:在新書入庫,借閱等級,圖書整理中使用到閱可等以級對,查圖找書的整項理目中進使行用限到制可以對查找的項目進行限制閱等級,圖書整理中使用到名字:出版日期名字:出版社簡述:標(biāo)識每一本圖書的出簡述:標(biāo)識每一個圖書的出
10、版日期版處范圍:范圍:長度:長度:使用位置:在新書入庫,借使用位置:在新書入庫,借閱等級,圖書整理中使用到閱等級,圖書整理中使用到借閱 ( 用戶帳號 , 圖書編號 , 借書日期 , 到期日期 , 數(shù)量 , 還書日期 ).名字:圖書編號名字:帳號簡述:唯一標(biāo)識每一本圖書名字:數(shù)量簡述:用以唯一標(biāo)識用戶的的關(guān)鍵域簡述:管理每一種圖書的現(xiàn)信息。范圍:存量范圍:長度:范圍:長度:使用位置:在新書入庫,長度:使用位置:用戶登錄時進行借閱登記 , 借閱查詢,使用位置:在新書入庫,借相應(yīng)的判斷核對。圖書整理,超期提示中使用閱等級,圖書整理中使用到到名字:借書日期名字:到期日期名字:還書日期簡述:標(biāo)識用戶在何
11、時借書簡述:標(biāo)識用戶在何時還書簡述:標(biāo)識用戶應(yīng)在何時還范圍:范圍:書長度:長度:范圍:使用位置:在借閱等級中使使用位置:在借閱登記中使長度:用用使用位置:借閱登記中使用3.5 數(shù)據(jù)采集數(shù)據(jù)通過事先的錄入, 形成最基本的管理人員帳號, 通過管理人員的管理, 可以實現(xiàn)相應(yīng)的數(shù)據(jù)的添加, 刪減。比如,管理員可以添加用戶的相關(guān)信息 (通過辦理借書證)還可以添加圖書(通過新書上架)來辦理。3. 功能需求4.1 功能劃分圖書管理系統(tǒng)主要實現(xiàn)以下七方面的功能:a. 查詢b.圖書借還c.圖書入庫d.圖書維護e. 圖書超期提示f.環(huán)境管理4.2 功能描述圖書管理包括查詢、借還、入庫、維護、超期提示、環(huán)境管理七方
12、面功能。圖書入庫,主要實現(xiàn)入庫登記。圖書借閱,用戶需憑相應(yīng)證件到圖書館進行借書,并由圖書管理員進行相應(yīng)的登記記錄檔案。查詢,當(dāng)用戶要查詢自己的借閱情況時,可以進行借閱查詢。用戶可以通過此系統(tǒng)進行圖書的查詢和讀者查詢(即用戶自己的相關(guān)信息查詢)。圖書超期提示,當(dāng)借閱者在已到借書期限時仍未歸還圖書,提示其盡快辦理歸還手續(xù)。并由系統(tǒng)計算相應(yīng)的處罰。圖書維護,圖書管理員可以通過此系統(tǒng)進行相應(yīng)的圖書的維護計算。4.3 數(shù)據(jù)流圖( DFD)a新書入庫D1庫存清單1 11 21 3圖 書更 新數(shù)接 受管理書 刊據(jù)處 理員庫 存庫事 務(wù)清 單入 庫.D2b圖書借閱D1 庫存清單進行處 理借 閱 者借閱數(shù)據(jù)庫登
13、記借 閱C過期提示進 行處 理圖書日 期通 知管理員顯示器處 理信 息d借閱查詢1 11 22借閱者顯示操 作處 理產(chǎn) 生事 務(wù)查 詢匯 總器D1借閱查詢清單e.還書處理D1庫存清單1 2131 1數(shù)圖書更 新接 受處 理據(jù)管理員圖 書事 務(wù)庫借書:庫 存歸 還清 單.提出借書要求管理員 查看數(shù) 據(jù)庫反饋信息圖書館數(shù)據(jù)庫讀者圖書館前臺存庫看取書查庫存還書:還書管理員 查看數(shù) 據(jù)庫是 否超期, 做相應(yīng) 的處罰圖書館數(shù)據(jù)庫讀者圖書館前臺架上書送庫存新書上架:登記上架圖書館數(shù)據(jù)庫圖書管理員庫存.4、4 需求規(guī)定在圖書管理系統(tǒng)中, 管理員要為每個讀者建立借閱賬戶, 并給讀者發(fā)放不同類別的借閱卡(借閱卡
14、可提供卡號、讀者姓名) ,賬戶內(nèi)存儲讀者的個人信息和借閱記錄信息。 持有借閱卡的讀者可以通過管理員 (作為讀者的代理人與系統(tǒng)交互)借閱、歸還圖書,不同類別的讀者可借閱圖書的范圍、數(shù)量和期限不同,可通過互聯(lián)網(wǎng)或圖書館內(nèi)查詢終端查詢圖書信息和個人借閱情況,以及續(xù)借圖書(系統(tǒng)審核符合續(xù)借條件) 。借閱圖書時,先輸入讀者的借閱卡號, 系統(tǒng)驗證借閱卡的有效性和讀者是否可繼續(xù)借閱圖書, 無效則提示其原因, 有效則顯示讀者的基本信息(包括照片),供管理員人工核對。 然后輸入要借閱的書號, 系統(tǒng)查閱圖書信息數(shù)據(jù)庫,顯示圖書的基本信息, 供管理員人工核對。 最后提交借閱請求, 若被系統(tǒng)接受則存儲借閱紀(jì)錄,并修改
15、可借閱圖書的數(shù)量。 歸還圖書時,輸入讀者借閱卡號和圖書號 (或丟失標(biāo)記號),系統(tǒng)驗證是否有此借閱紀(jì)錄以及是否超期借閱,無則提示,有則顯示讀者和圖書的基本信息供管理員人工審核。 如果有超期借閱或丟失情況, 先轉(zhuǎn)入過期罰款或圖書丟失處理。然后提交還書請求,系統(tǒng)接受后刪除借閱紀(jì)錄,并登記并修改可借閱圖書的數(shù)量。圖書管理員定期或不定期對圖書信息進行入庫、 修改、刪除等圖書信息管理以及注銷(不外借),包括圖書類別和出版社管理。為系統(tǒng)維護人員提供權(quán)限管理、數(shù)據(jù)備份等通用功能。4、5 功能分類.圖書館信息系統(tǒng)參數(shù)設(shè)置基礎(chǔ)信息管理管理員設(shè)置書架設(shè)置圖書詞庫設(shè)置新書購入管理子系統(tǒng)學(xué)生借書學(xué)生還書圖書館系統(tǒng)登管理
16、系陸統(tǒng)圖書注銷學(xué)生信息查詢查詢子系統(tǒng)圖書信息查詢4、6具體需求.系統(tǒng)的總體圖見圖圖書館管理人員用戶名和密碼1輸入管理請求數(shù)據(jù)2顯示顯示器登陸信息驗證處理管理請求數(shù)據(jù)密碼錯誤信息當(dāng)前日期系統(tǒng)時鐘管理員表當(dāng)前日期用戶輸入查詢信息查詢結(jié)果3處理查詢請求數(shù)據(jù)第一層圖:(1):登陸子系統(tǒng)圖書館管理人員用戶名和密碼1.1用戶名1.2顯示器密碼驗證驗證權(quán)限登陸錯誤信息權(quán)限顯示1.3管理員表顯示可用的控件和界面( 2 )管理子模塊.圖書館管理人員輸入購入新書數(shù)據(jù)2.1非法信息處理新書購入圖書目錄文件入庫單輸入圖書字段和學(xué)生字段罰款單2.2處理學(xué)生借書輸入圖書字段學(xué)生文件借書文件輸入注銷圖書字段2.3處理學(xué)生還
17、書罰款單圖書目錄文件退貨單接受借書罰款單非法信息當(dāng)前日期顯示器當(dāng)前日期欠款金額信息非法信息還書成功當(dāng)前日期非法信息2.4注銷成功圖書注銷當(dāng)前日期系統(tǒng)時鐘( 3)查詢模塊.圖書館管理人員 |輸入學(xué)生查詢關(guān)鍵字3.1學(xué)生信息學(xué)生學(xué)生信息查詢學(xué)生文件借書文件顯示器輸入圖書查詢關(guān)鍵字圖書目錄文件3.2圖書信息圖書信息查詢第二層圖:( 1):處理新書購入1)規(guī)格說明輸入新書的全部信息。2) 引言為了輸入新書的全部信息(包括:分類目錄號,流水號書名,作者,內(nèi)容摘要,價格和購書日期等) 。3)輸入新書的全部信息。4)處理通過圖書管理系統(tǒng)寫入圖書目錄文件。5)輸出新書的全部信息。.出版社檔案文入庫單件2.1.
18、1圖書館管理人員輸入購入新書數(shù)據(jù)查找數(shù)據(jù)庫,確認(rèn)非法輸入數(shù)據(jù)(采購員)信息退貨單添加操作顯示器管理員表2.1.2非法操作操作驗證輸入添加信息顯示結(jié)果系統(tǒng)時鐘當(dāng)前日期2.1.3圖書目錄文件保存添加記錄( 2) 處理學(xué)生借書1)規(guī)格說明查詢讀者借書的相關(guān)信息。2) 引言為了查詢讀者借書的相關(guān)信息。3) 輸入借書信息的關(guān)鍵字。4) 處理利用關(guān)鍵字在借書文件中找到此流水號圖書的相關(guān)信息。5) 輸出借書相關(guān)信息。.罰款單學(xué)生文件非法學(xué)生信息圖書館管理人員輸入學(xué)生字段2.2.1欠款超額,拒絕借書顯示器檢查學(xué)生欠費情況接受借書,輸入圖書信息系統(tǒng)時鐘當(dāng)前日期借書成功2.2.2更新數(shù)據(jù)庫借書文件(3):處理學(xué)生
19、還書1)規(guī)格說明輸入讀者還書信息。2)引言為了把讀者還書的相關(guān)信息(包括:圖書分類號,流水號,讀者號,借閱日期和還書日期等)寫入還書文件中。3)輸入讀者還書信息。4) 處理通過圖書管理系統(tǒng)寫入還書文件中。5)輸出讀者還書信息的全部內(nèi)容。.2圖書館管理人員輸入圖書字段根據(jù)圖書字段查找借書信息和學(xué)生信息欠款金額顯示器計算欠款結(jié)果數(shù)據(jù)庫還書成功借書文件當(dāng)前日期系統(tǒng)時鐘學(xué)生文件圖書目錄文件罰款單.(4):處理圖書注銷1) 規(guī)格說明注銷圖書的相關(guān)內(nèi)容。2) 引言為了注銷圖書的相關(guān)信息。3) 輸入圖書信息的關(guān)鍵字(圖書分類號或書名)。4) 處理利用關(guān)鍵字在圖書目錄文件中找到此圖書分類號或書
20、名圖書的相關(guān)信息。5) 輸出圖書的注銷信息 。.2圖書館管理人員輸入注銷圖書字段根據(jù)圖書字段,查修改操作操作驗證找數(shù)據(jù)庫非法操作輸入修改信息圖書目錄文件系統(tǒng)時鐘當(dāng)前日期2.4.3注銷成功顯示器保存修改記錄( 5)處理學(xué)生信息查詢1 )規(guī)格說明讀者登記,即讀者的具體信息。.2)引言為了把讀者的具體信息(包括:讀者編號,姓名,學(xué)院,專業(yè),年級等)寫入讀者目錄文件中。3)輸入讀者具體信息。4)處理通過圖書管理系統(tǒng)寫入讀者目錄文件中。5)輸出讀者具體信息。圖書館管理人員 |.2輸入查找字段確定查詢類型及字查找字段,關(guān)鍵字查詢結(jié)果顯示器學(xué)生查找數(shù)據(jù)庫段學(xué)生文件借書文件(6
21、)處理圖書信息查詢1)規(guī)格說明查詢圖書的相關(guān)內(nèi)容。2)引言為了查找圖書的相關(guān)信息。3)輸入圖書信息的關(guān)鍵字(圖書分類號或書名)。4)處理利用關(guān)鍵字在圖書目錄文件中找到此圖書分類號或書名圖書的相關(guān)信息。5)輸出圖書的相關(guān)信息 。.圖書館管理人員 |.2輸入查詢關(guān)鍵字確定查詢類型及字查詢字段及關(guān)鍵字查詢結(jié)果顯示器學(xué)生查找數(shù)據(jù)庫段借書文件圖書目錄文件4、 7數(shù)據(jù)結(jié)構(gòu)的設(shè)計typedef struct BookList char num10; char name20; char author20; int total;int leavings;struct BookList *next
22、;Book;采用鏈表的結(jié)構(gòu)來進行數(shù)據(jù)操作,一本書的數(shù)據(jù)包括:書號、書名、作者、庫存總量、現(xiàn)存量以及指針區(qū)域。算法的設(shè)計()關(guān)鍵算法設(shè)計思路描述在構(gòu)思圖書館管理系統(tǒng)的結(jié)構(gòu)時,我將整個程序劃分為五個模塊,分別定義了五個函數(shù)來實現(xiàn)管理系統(tǒng)的功能, 除此之外在對程序的界面設(shè)計上加入了一些動畫效果。 在數(shù)據(jù)結(jié)構(gòu)上采用單鏈表的結(jié)構(gòu)方式,這樣在讀取文件中數(shù)據(jù)的時候能夠節(jié)省內(nèi)存空間。設(shè)計主菜單時,用while(1) 和 switch() 來實現(xiàn)功能的選擇以及運行一項功能后返回主菜單。在整個程序中, 統(tǒng)一采用了以輸入的方式返回或退出,并在模塊有需要鍵盤輸入地方加入了防錯誤輸入的功能,防止輸入錯誤導(dǎo)致程序錯誤運行
23、,此功能采用判斷輸入值的ASCII碼或字符串的比較。入庫模塊 :首先判斷數(shù)據(jù)文件是否存在,如存在以追加的方式打開,如不存在以寫入的方式打開。 輸入圖書的具體數(shù)據(jù)(在輸入過程中,如輸入的書號為則返回主菜單)、存盤,判斷存盤成功則打印“成功添加”,如存盤失敗打印“添加失敗”。最后返回入起始界面(入庫模塊)。清除模塊 :進入清除模塊則將文件中的全部數(shù)據(jù)用單鏈表的結(jié)構(gòu)讀入內(nèi)存,提示輸入要刪除的書號, 在內(nèi)存中尋找并刪除,刪除后可以馬上存盤或是直到全部刪除完成后再選擇操作,在防止操作后忘記存盤,在程序中加入了自動判斷操作過的數(shù)據(jù)是否己經(jīng)進行過存盤的功能。查詢模塊 :本模塊分為三個子模塊:以書號方式查詢、
24、以書名的方式查詢、以作者的方式查詢。 前兩個查詢功能只要找到符合條件的數(shù)據(jù)時就停止,以作者方式因為考慮到一個作者不止一本作品,所以對全部的數(shù)據(jù)進行查找,并打印出所有符合條件的數(shù)據(jù)。如果未找到則打印“沒有找到” ,最后返回子功能模塊起始,直到輸入返回上一級。借出、 還書模塊: 這兩個功能的思路完全一樣,不同的是對數(shù)據(jù)中的現(xiàn)存量的運算。兩個功能都是先建立一個圖書類型的數(shù)據(jù)指針,逐條將文件中的數(shù)據(jù)讀入內(nèi)存,并與輸入的數(shù).據(jù)進行比較,如果一致則先對內(nèi)存中的數(shù)據(jù)進行操作,再將文件中的fp 指針后退sizeof(Book)個字節(jié),將內(nèi)存中的經(jīng)過修改過的數(shù)據(jù)寫入文件。完成一條操作后,提示進行下一條操作,輸入
25、時返回主菜單。()程序結(jié)構(gòu)及模塊名稱描述主程序界面初始化入庫清除查詢借出歸還書號查詢書名查詢作者查詢?nèi)苛斜韆 )void main()/ 主程序b )void s(long)/ 時間延遲函數(shù)c )void sta()/ 界面初始效果d )void wel()/ 界面初始效果e )void bookadd()/ 入庫f )void sa_ve(sqtype)/ 清除函數(shù)中保存文件函數(shù)g )void del()/ 清除h )void r()/ 查詢j )void s_1()/ 查詢功能中以書號方式查詢k )void s_2()/ 以書名方式查詢l )void s_3()/ 以作者方式查詢m )v
26、oid readall()/ 列出全部圖書n )void borrow()/ 借出o )void back()/ 歸還p )void bye()/ 退出效果()主要模塊算法描述/* 添加 */void bookadd()/* 添加圖書 */FILE *fp; Book finger; char temp10;fp=fopen(blist.db,rb);/*讀方式打開文件*/if(fp=NULL)fp=fopen(blist.db,wb); /*寫方式打開文件*/else/* 如果有書就添加*/.fclose(fp);fp=fopen(blist.db,ab);/*追加方式打開文件*/clrsc
27、r();while(1)printf(n請輸入數(shù)據(jù) :n);/* 逐個輸入新圖書的資料*/printf( 請輸入書號 (輸入 0 結(jié)束添加 ):);gets(temp);if(strcmp(temp,0) strcpy(finger.num,temp);else break;printf( 請輸入書名 : );scanf(%s,);printf( 請輸入書的作者: );scanf(%s,finger.author);printf( 請輸入書的總數(shù): );scanf(%d,&finger.total);b=getchar();finger.leavings=finger.t
28、otal;finger.next=NULL;if(fwrite(&finger,sizeof(Book),1,fp)/*塊寫 */printf(-n);printf( 己 成 功 添 加 :n書 號 :%s書 名 :%s作 者 :%s庫 存 總 量 :%d現(xiàn) 存量:%dn,finger.num,,finger.author,finger.total,finger.leavings);printf(-);else printf( 對不起 ,數(shù)據(jù)寫入文件錯誤!);fclose(fp);clrscr();/* 刪除 */del()/* 刪除功能函數(shù)*/FILE *fp;Book
29、 *head,*p,*q,*temp;char a10,s;int flag=0,flag2,flag3=0; fp=fopen(blist.db,rb); head=p=q=(Book*)malloc(sizeof(Book); fread(p,sizeof(Book),1,fp);while(!feof(fp)q=p;p=(Book*)malloc(sizeof(Book);fread(p,sizeof(Book),1,fp);q-next=p;p-next=NULL;del_re:.flag2=0; clrscr();gotoxy(1,3);textcolor(4);cprintf(提示
30、 :);textcolor(7);gotoxy(6,4);printf(您可以逐次操作后存盤,也可以完成全部);gotoxy(6,5);printf( 操作后退出時存盤,不進行存盤您所有刪);gotoxy(6,6);printf(除操作對文件無效!);gotoxy(1,23);printf( 請輸入要刪除的書號(0 退出 ,00 存盤 ):);gets(a);if(!strcmp(a,0) goto del_end;else if(!strcmp(a,00) if(flag=0) gotoxy(50,24);textcolor(4);cprintf( 您還未進行任何刪除操作!);textcol
31、or(7);getch();clreol();goto del_re;else flag3+=sa_ve(head);goto del_re;p=head;while(p!=q-next) if(!strcmp(a,p-num)if(p=head)head=p-next;flag+;flag2=1;gotoxy(35,13);printf(刪除成功!);getch();goto del_re;elsetemp-next=p-next;flag+;flag2=1;gotoxy(35,13);printf(刪除成功!);getch();goto del_re; temp=p;p=p-next;if
32、(flag2=0)gotoxy(50,24);textcolor(4);cprintf(對 不 起 沒 有 找 到 你 要 刪 除 的 數(shù)據(jù)!);textcolor(7);getch();clreol();gotodel_re;del_end:if(flagflag3) gotoxy(22,13);clreol();printf( 您還有刪除操作未存盤 ,是否存盤 (Y/N):);s=getchar(); if(s=78|s=89|s=110|s=121) if(s=89|s=121) gotoxy(1,13);clreol();sa_ve(head);b=getchar(); else b=
33、getchar();goto del_end2;else goto del_end;del_end2: fclose(fp);/* 查找 (按書號查找 )*/s_1()/* 查找子函數(shù)中的按書號查詢功能*/char temp_num10;Book finger; int flag;.FILE *fp; fp=fopen(blist.db,rb);s_1re:flag=0;gotoxy(1,25);printf( 請輸入書號 (輸入 0 返回 ):);scanf(%s,temp_num);if(!strcmp(temp_num,0) fclose(fp);goto s_1end;while(!f
34、eof(fp)fread(&finger,sizeof(Book),1,fp);if(!strcmp(finger.num,temp_num) clrscr();textcolor(4);cprintf( 書號 );gotoxy(17,1);cprintf( 書名 ); gotoxy(33,1);cprintf( 作者 );gotoxy(47,1);cprintf( 總庫存 ); gotoxy(63,1);cprintf( 現(xiàn)存量 rn);textcolor(7);printf(%stt%stt%stt%dtt%dn,finger.num,,finger.author,f
35、inger.total,finger.leavings);flag=1;rewind(fp);break;if(flag=0)clrscr();gotoxy(28,12);printf(沒有找到您要查詢的書!);rewind(fp);getch();clrscr(); goto s_1re;s_1end: b=getchar();/* 借書功能 */borrow()FILE *fp;char a10;int flag;Book n;fp=fopen(blist.db,rb+);clrscr();borrow_re:flag=0;gotoxy(1,13);clreol();gotoxy(1,24
36、); clreol();gotoxy(1,23);printf( 請輸入要借的書號 (輸入 0 返回 ):);clreol(); gets(a);if(!strcmp(a,0) goto borrow_end;fread(&n,sizeof(Book),1,fp);while(!feof(fp)if(!strcmp(a,n.num)/* 一樣的話 */if(n.leavings=0) printf( 對不起 ,此書全部借出 .n);else -n.leavings;.fseek(fp,-56L,1);fwrite(&n,sizeof(Book),1,fp);gotoxy(35,13);prin
37、tf( 借出成功 !);flag=1;getch();rewind(fp);break;fread(&n,sizeof(Book),1,fp);if(flag=0) gotoxy(35,13);printf( 借書失敗 !);rewind(fp);getch(); goto borrow_re;borrow_end: fclose(fp);四、源程序清單: (見源程序文件名:_lib.c_ )五、測試數(shù)據(jù)及測試結(jié)果:(一)添加輸入數(shù)據(jù):書號書名作者庫存1001h1li81002h2ki81003h3fd91004h4li101005h5sdfs111006h6ed91007h7tio7(二)清
38、除輸入清除的書號: 1006提示刪除成功,運行查詢功能中的查詢?nèi)抗δ埽_認(rèn)1006 己被刪除(三)查詢書號查詢,輸入:1005輸出: 1005h5sdfs11書名查詢,輸入:h7輸出: 1007h7tio7作者查詢,輸入:li輸出: 1001h1li81004h4li10(四)借出輸入: 1004輸出:借出成功運行查詢功能中的查詢?nèi)抗δ?,顯示:書號書名作者庫存現(xiàn)存1004h4li109(五)歸還輸入:輸出:歸還成功.運行查詢功能中查詢?nèi)?,顯示:書號書名作者庫存現(xiàn)存1004h4li1010六、心得體會:編寫整個模擬圖書館管理程序歷時五天,五個功能模塊中的入庫與查詢模塊由于定義函數(shù)名與語言中自帶函數(shù)名沖突,到發(fā)現(xiàn)原因并修改,期間耗時三天。在三天期間,在不知道沖突原因之前,我在幾個論壇上發(fā)貼,有回貼的竟沒人知道原因,后來偶然的靈機一動,將函數(shù)名更改, 程序順利運行。 我還從網(wǎng)上下了一本語言函數(shù)的電子書,經(jīng)查確實是由于函數(shù)名沖突。所以,我們在定義函數(shù)的時候,在注意函數(shù)名是否與語言自帶的函數(shù)沖突。因為我比較喜歡有應(yīng)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海工藝美術(shù)職業(yè)學(xué)院《大地測量學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海工商職業(yè)技術(shù)學(xué)院《機械原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 檢驗科三基三嚴(yán)培訓(xùn)
- 幼兒園戶外探險課程設(shè)計
- 擺式飛剪課程設(shè)計
- 學(xué)籍管理系統(tǒng)課程設(shè)計c語言
- 婦女節(jié)手工制作課程設(shè)計
- 電氣檢查人員規(guī)章制度
- 探索宇宙活動課程設(shè)計
- 機器設(shè)計基礎(chǔ)課程設(shè)計
- 12二年級《跳躍:多種形式跳躍的練習(xí)方法》
- 電動給水泵液力耦合器基礎(chǔ)知識ppt課件
- 樣品管理控制流程圖
- 超實用-組合房貸計算表
- 屋面細石混凝土保護層施工方案及方法
- 西方經(jīng)濟學(xué)考試題庫含答案
- 監(jiān)理公司各部門職責(zé)
- 論辛棄疾詞作的愁情主題及其審美價值
- 新形勢下我國保險市場營銷的現(xiàn)狀、問題及對策
- 完整版焦慮抑郁自評量表SASSDS
- ISO14001內(nèi)審檢查表
評論
0/150
提交評論