版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
.....摘要圖書管理是圖書館或閱覽室的重要工作,具有量大、重復(fù)的特點,其中的信息錄入、讀者管理、書目查詢、書籍借閱是經(jīng)常性的工作。為方便檢索和管理,借助計算機開發(fā)相應(yīng)的圖書館信息系統(tǒng)可以提高工作效率。本文進行了圖書館信息系統(tǒng)的設(shè)計和開發(fā),包含數(shù)據(jù)庫設(shè)計和系統(tǒng)功能設(shè)計,將圖書入庫、查詢、借閱、維護、用戶信息等功能集成在一起,具有用戶界面友好、操作簡單、數(shù)據(jù)安全、功能強大、實用性強的特點。測試表明該系統(tǒng)可有效提高大學圖書館的圖書管理效率。關(guān)鍵詞:圖書管理,查詢,設(shè)計,數(shù)據(jù)庫..AbstractBooksmanagementisanimportantworkinlibraryorreadingroom.Itisavastandrepetitiveone.Theworkoftenincludessomuchworksuchaswritinginformation,managingreaders’information,queryingbibliographyandlendingbooks.Inordertoqueryandmanageinformationconveniently,thelibraryinformationsystemcanimproveworkeffectively.Designandexploitationoflibraryinformationsystemisgiveninthispaper,itincludesthedesignofdatabaseandprogramfunctions.Thesystemintegratessuchfunctionsasstorage,consult,lend,safeguardandthemanagementofusers’information.Theuserinterfaceisgoodandthedataissafe,theoperationisconvenientandpractical.Thetestingshowsthatthissystemcanimprovetheaffectivityofbooksmanagementintheuniversitylibrary.Keywords:booksmanagement,search,design,database..目錄第1章引言11.1設(shè)計目的和意義11.2論文的結(jié)構(gòu)與安排1第2章相關(guān)知識簡介32.1信息管理系統(tǒng)概述3信息管理系統(tǒng)3MIS系統(tǒng)開發(fā)過程32.2數(shù)據(jù)庫概述4數(shù)據(jù)庫的概念4數(shù)據(jù)庫管理系統(tǒng)4數(shù)據(jù)庫技術(shù)52.3SQL語言介紹5SQL基礎(chǔ)52.3.2SQL的特點62.3.3SQL語句的分類及基本語法62.4應(yīng)用程序開發(fā)工具7VisualC#7應(yīng)用程序開發(fā)的基本步驟102.5相關(guān)定義11第3章圖書信息系統(tǒng)概要設(shè)計123.1需求分析123.2系統(tǒng)功能設(shè)計及目標133.3系統(tǒng)總體架構(gòu)14模塊描述14系統(tǒng)的總體結(jié)構(gòu)圖153.4數(shù)據(jù)庫設(shè)計16數(shù)據(jù)庫設(shè)計簡介16數(shù)據(jù)庫設(shè)計16數(shù)據(jù)庫需求分析17數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計17數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計21第4章圖書信息系統(tǒng)詳細設(shè)計254.1總體處理流程254.2用戶界面設(shè)計254.3系統(tǒng)窗體模塊設(shè)計25用戶登陸模塊的實現(xiàn)25用戶主界面的實現(xiàn)29出版社信息模塊的實現(xiàn)30客戶信息模塊的實現(xiàn)32圖書借閱模塊的實現(xiàn)34圖書信息模塊的實現(xiàn)36用戶信息模塊的實現(xiàn)38綜合查詢模塊的實現(xiàn)40數(shù)據(jù)導(dǎo)入模塊的實現(xiàn)41綜合設(shè)置模塊的實現(xiàn)42第5章測試455.1引言455.2目的455.3測試策略45面向?qū)ο蟮膯卧獪y試45面向?qū)ο蟮募蓽y試46面向?qū)ο蟮拇_認測試465.4測試方法465.5測試結(jié)果46結(jié)論48參考文獻50致謝51外文資料原文52翻譯文稿55..引言設(shè)計目的和意義當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行大量而復(fù)雜的信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性,尤其對于復(fù)雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。圖書館是為教學服務(wù)的,在圖書館的日常運作過程中,最主要的工作就是對大量的讀者信息、書籍信息以及兩者相互作用產(chǎn)生的圖書流通信息等的管理。建立一個圖書館信息系統(tǒng),使圖書管理工作規(guī)范化、系統(tǒng)化、程序化,避免圖書管理的隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改圖書情況,提高圖書信息管理的效率,這也是管理科學化、正規(guī)化重要途徑。有了圖書館信息系統(tǒng),我們可以對圖書進館實行書目編排,并對其進行數(shù)據(jù)庫備份,以便我們以后對其進行管理和出錯恢復(fù);圖書借閱時,我們可以通過模糊查詢實現(xiàn)對用戶要求圖書的查找,并對圖書進行各項統(tǒng)計,如果用戶需要借閱的圖書已被借出,可以及時反饋給用戶,避免時間的浪費;對于各類用戶的借閱權(quán)限,時間可以通過系統(tǒng)進行設(shè)定,滿足各類用戶的最大需求。本論文是從學校圖書館的實際操作流程出發(fā),經(jīng)過詳細的系統(tǒng)調(diào)查,對圖書館信息系統(tǒng)進行了詳細的分析和設(shè)計,重點進行了各功能模塊和界面的詳細設(shè)計,并對系統(tǒng)功能進行了測試,為學校圖書館開發(fā)出的一個實用的圖書館信息系統(tǒng)。本系統(tǒng)的前端開發(fā)工具是VisualC#,后臺數(shù)據(jù)庫選用的是大型關(guān)系數(shù)據(jù)庫MicrosoftSQLServer2000。論文的結(jié)構(gòu)與安排本文第一章介紹圖書館信息系統(tǒng)的設(shè)計背景,設(shè)計目的和意義;第二章對本系統(tǒng)涉及到的幾個相關(guān)知識點,如信息管理系統(tǒng),數(shù)據(jù)庫,SQL語言,開發(fā)平臺進行了簡單的介紹;第三章介紹了圖書館信息系統(tǒng)的概要設(shè)計和數(shù)據(jù)庫設(shè)計;第四章介紹了系統(tǒng)的詳細設(shè)計、功能設(shè)計和界面設(shè)計;第五章對系統(tǒng)測試進行了介紹;最后對整個設(shè)計做出的總結(jié)。..相關(guān)知識簡介信息管理系統(tǒng)概述信息管理系統(tǒng)信息管理系統(tǒng)是一個利用計算機軟硬件資源,手工作業(yè),分析、計劃、控制和決策模型以及數(shù)據(jù)庫的人機系統(tǒng)。它能提供信息支持企業(yè)或組織的運行、管理和決策功能。圖書館信息系統(tǒng)是典型的信息管理系統(tǒng)<MIS>,其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的數(shù)據(jù)庫,而對于后者則要求應(yīng)用程序功能完備,易使用等特點。MIS系統(tǒng)開發(fā)過程一個MIS系統(tǒng)的開發(fā)過程一般包括如下幾個步驟:需求分析:需求分析主要是了解用戶的需求。需求了解得越詳細,程序的后期開發(fā)與維護費用就會越少。一般的開發(fā)團隊中,需求分析都是由資歷較深的系統(tǒng)分析員或項目經(jīng)理擔當,可見它的重要性。需求分析制訂好后,需要反復(fù)修改。將最后的結(jié)果交給用戶審定,確認無誤后,由系統(tǒng)分析員完成需求分析文檔,再開始下一步工作。概要設(shè)計:概要設(shè)計緊跟在需求分析之后。用戶需求明確后,將得到的數(shù)據(jù)分析后,開始構(gòu)建數(shù)據(jù)庫的邏輯結(jié)構(gòu)。此時,數(shù)據(jù)庫中的表格還未成形,通過各種分析工具〔如PowerDesigner等畫出數(shù)據(jù)流圖,最后就可抽象出數(shù)據(jù)庫的具體表結(jié)構(gòu)。這由系統(tǒng)分析人員反復(fù)審核,確認所有的需求都考慮在內(nèi),沒有遺漏后,就可以開始制訂概要設(shè)計文檔。概要設(shè)計文檔形成后,整個程序的邏輯框架也就形成了。詳細設(shè)計:概要設(shè)計完成后,根據(jù)設(shè)計中制訂的業(yè)務(wù)模塊。就可以進行詳細分析設(shè)計了。詳細設(shè)計就是將各個業(yè)務(wù)模塊的窗口全部建好,各個窗口控件的處理代碼全部用語言表達出,所以詳細設(shè)計是整個系統(tǒng)中最繁瑣的環(huán)節(jié)。詳細設(shè)計完成后,整個程序就確定了,再由編程人員根據(jù)詳細設(shè)計文檔將代碼完成。整個開發(fā)工作就宣告結(jié)束。數(shù)據(jù)庫概述從20世紀50年代中期開始,計算機的應(yīng)用由科學研究部門逐步擴展至企業(yè)、行政部門。至60年代,數(shù)據(jù)處理成為計算機的主要應(yīng)用。數(shù)據(jù)庫技術(shù)作為數(shù)據(jù)管理技術(shù),是計算機軟件領(lǐng)域的一個重要分支,產(chǎn)生于60年代末。現(xiàn)已形成相當規(guī)模的理論體系和實用技術(shù)。數(shù)據(jù)庫的概念數(shù)據(jù)庫〔DatabaseDB是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。本系統(tǒng)采用SQLServer2000數(shù)據(jù)庫。數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)〔DatabaseManagementSystemDBMS是位于用戶和操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法,包括DB的建立、查詢、更新及各種數(shù)據(jù)控制。DBMS是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對數(shù)據(jù)庫的一切操作,包括定義、更新及各種控制,都是通過DBMS進行的。DBMS總是基于某種數(shù)據(jù)模型,可以把DBMS看成是某種數(shù)據(jù)模型在計算機系統(tǒng)上的具體實現(xiàn)。根據(jù)數(shù)據(jù)模型的不同,DBMS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷?。MSSQLServer2000就是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。關(guān)系模型。關(guān)系模型主要是用二維表格結(jié)構(gòu)表達實體集,用外鍵表示實體間聯(lián)系。關(guān)系模型是由若干個關(guān)系模式組成的集合。關(guān)系模式相當于前面提到的記錄類型,它的實例稱為關(guān)系,每個關(guān)系實際上是一張二維表格。關(guān)系模型和層次、網(wǎng)狀模型的最大區(qū)別是用關(guān)鍵碼而不是用指針導(dǎo)航數(shù)據(jù),表格簡單用戶易懂,編程時并不涉及存儲結(jié)構(gòu),訪問技術(shù)等細節(jié)。關(guān)系模型是數(shù)學化模型。SQL語言是關(guān)系數(shù)據(jù)庫的標準化語言,已得到了廣泛的應(yīng)用。DBMS的特點和功能可以分為三個子系統(tǒng):設(shè)計工具子系統(tǒng)、運行子系統(tǒng)和DBMS引擎。設(shè)計子系統(tǒng)有一個方便數(shù)據(jù)庫及其應(yīng)用創(chuàng)建的工具集。它包含產(chǎn)生表、窗體、查詢和報表的工具。DBMS產(chǎn)品還提供編程語言和對編程語言的接口。運行子系統(tǒng)處理用設(shè)計子系統(tǒng)開發(fā)的應(yīng)用組件。它所包含的運行處理器用來處理窗體和數(shù)據(jù)庫的數(shù)據(jù)交互,以及回答查詢和打印報表等。DBMS引擎從其他兩個組件接受請求,并把它們翻譯成對操作系統(tǒng)的命令,以便讀寫物理介質(zhì)上的數(shù)據(jù)。DBMS引擎還涉及事務(wù)管理、鎖、備份和恢復(fù)[1][2]。數(shù)據(jù)庫技術(shù)數(shù)據(jù)庫技術(shù):是一門研究數(shù)據(jù)庫的結(jié)構(gòu)、存儲、管理和使用的軟件學科。SQL語言介紹SQL基礎(chǔ)SQL<StructuredQueryLanguage,結(jié)構(gòu)查詢語言>是一個功能強大的數(shù)據(jù)庫語言。SQL通常使用于數(shù)據(jù)庫的通訊。ANSI〔美國國家標準學會聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標準語言。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比如在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有:Oracle、Sybase、MicrosoftSQLServer、Access等等。雖然絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴展功能用于它們的系統(tǒng)。但是,標準的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成絕大多數(shù)數(shù)據(jù)庫的操作。MSSQLServer就是用的Transact-SQL[3]。SQL的特點SQL語言之所以能夠為用戶和業(yè)界所接受,成為國際標準,是因為它是一個綜合的、通用的、功能極強、同時又簡潔易學的語言。其主要特點包括∶綜合統(tǒng)一高度非過程化面向集合的操作方式以同一種語法結(jié)構(gòu)提供兩種使用方式語言簡潔,易學易用[3]SQL語句的分類及基本語法SQL語句可以分為4大類∶數(shù)據(jù)定義語言<DDL>,用于定義數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)操縱語言<DML>,用于檢索和修改數(shù)據(jù)。數(shù)據(jù)控制語言<DCL>,用于規(guī)定數(shù)據(jù)庫用戶的各種權(quán)限。數(shù)據(jù)庫事務(wù)處理,事務(wù)處理語句用來保證數(shù)據(jù)庫的完整性。SQL語句基本語法包括如下幾點∶每條SQL語句必須以分號結(jié)束。每條SQL語句可以單獨寫成一行,但為了清楚,也可以分成若干行。SQL語句對大小寫不敏感,對于SQL語句的關(guān)鍵字,表名,列名等,可以大小寫混合;但對列的內(nèi)容則是大小敏感的。數(shù)據(jù)定義語言∶數(shù)據(jù)定義語言用來定義數(shù)據(jù)的結(jié)構(gòu),如創(chuàng)建、修改或者刪除數(shù)據(jù)庫對象,常用的數(shù)據(jù)定義語言有∶CREATE、ALTER、DROP等。各定義語言的語法結(jié)構(gòu)如下∶CREATETABLEtable_nameField_namedata_type[NOTNULL|NULL],[PRIMARYKEY]...>ALTERTABLEtable_nameADDCOLUMNfield_nameDATATYPEDROPTABLEtable_name數(shù)據(jù)操縱語言∶數(shù)據(jù)操縱語言用于對表的操作,包括SELECT、INSERT、UPDATE、DELETE等。各操縱語言的語法結(jié)構(gòu)如下∶SELECTselect_list[INTOnew_table]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]]INSERTINTOtable_nameVALUES<...>UPDATEtable_nameSETvaluesWHEREsearch_condition[3]應(yīng)用程序開發(fā)工具VisualC#MicrosoftVisualC#是一種編程語言,它是為生成在.NETFramework上運行的多種應(yīng)用程序而設(shè)計的。C#簡單、功能強大、類型安全,而且是面向?qū)ο蟮摹#憑借它的許多創(chuàng)新,在保持C樣式語言的表示形式和優(yōu)美的同時,實現(xiàn)了應(yīng)用程序的快速開發(fā)。VisualStudio支持VisualC#,這是通過功能齊全的代碼編輯器、項目模板、設(shè)計器、代碼向?qū)?、功能強大且易于使用的調(diào)試器以及其他工具實現(xiàn)的。通過.NETFramework類庫,可以訪問多種操作系統(tǒng)服務(wù)和其他有用的精心設(shè)計的類,這些類可顯著加快開發(fā)周期[4]。2.4.1在C#中類的申明與Java很相似,這是合理的因為經(jīng)驗告訴我們Java模型工作得很好。Java的關(guān)鍵字import已經(jīng)被替換成using,它起到了同樣的作用。一個類開始執(zhí)行的起點是靜態(tài)方法Main<>。.下面的HelloWorld程序展示了基本的形式:usingSystem;classHello{
staticvoidMain<>
{
Console.WriteLine<"Hello,world">;
}}在這個例子中,System這個名字指向一個包括了基本C#實用類集合的命名空間<namespace>。這個命名空間包括了Console類,它在這個例子中被用來輸出一個字符串.類可以是抽象的和不可繼承的:一個被申明成abstract的類不能被實例化;它只能被用做一個基類。C#關(guān)鍵字sealed就像Java關(guān)鍵字final,它申明一個類不是抽象的,但是它也不能被用做另一個類的基類界面;就像在Java中一樣,一個界面是一組方法集合的抽象定義。當一個類或結(jié)構(gòu)體實現(xiàn)一個界面的時候,它必須實現(xiàn)這個界面中定義的所有方法。一個單一的類可以實現(xiàn)幾個界面。也許以后會出現(xiàn)一些微妙的差別,但是這個特點看起來與Java相比沒有變化。如Java中那樣,通過拋出和捕捉異常對象來管理錯誤處理過程。內(nèi)存管理:由底層.NET框架進行自動內(nèi)存垃圾回收[4][5]。2.4.1程序可以直接編譯成標準的二進制可執(zhí)行形式,但C#的源程序并不是被編譯成二進制可執(zhí)行形式,而是一種中間語言,類似于JAVA字節(jié)碼。如果前面的HelloWorld程序被保存成一個文本文件并被命名為Hello.cs,它將被編譯成命名Hello.exe的可執(zhí)行程序。一個C#的結(jié)構(gòu)體與C++的結(jié)構(gòu)體是相似的,因為它能夠包含數(shù)據(jù)聲明和方法。但是,不同于C++,C#結(jié)構(gòu)體與類是不同的而且不支持繼承。但是,與Java相同的是,一個結(jié)構(gòu)體可以實現(xiàn)界面。C#中存在預(yù)編譯指令支持條件編譯,警告,錯誤報告和編譯行控制。沒有了#include偽指令,你無法再用#define語句對符號賦值,所以就不存在源代碼替換的概念。2.4.1C#中可以進行命名空間中的申明:當你創(chuàng)建一個程序的時候,你在一個命名空間里創(chuàng)建了一個或多個類。同在這個命名空間里<在類的外面>你還有可能聲明界面,枚舉類型和結(jié)構(gòu)體。必須使用using關(guān)鍵字來引用其他命名空間的內(nèi)容。C#擁有比C,C++或者Java更廣泛的數(shù)據(jù)類型。這些類型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal。像Java一樣,所有這些類型都有一個固定的大小,又同C和C++一樣,每個數(shù)據(jù)類型都有符號和無符號兩種類型。與Java相同的是,一個字符變量包含的是一個16位的Unicode字符。C#新的數(shù)據(jù)類型是decimal數(shù)據(jù)類型,對于貨幣數(shù)據(jù),它能存放28位10進制數(shù)字。C#具有兩個基本類:一個名叫object的類是所有其他類的基類,而一個名叫string的類也像object一樣是這個語言的一部分。作為語言的一部分存在意味著編譯器有可能使用它。無論何時你在程序中寫入一句帶引號的字符串,編譯器會創(chuàng)建一個string對象來保存它。C#中方法可以被聲明接受可變數(shù)目的參數(shù)。缺省的參數(shù)傳遞方法是對基本數(shù)據(jù)類型進行值傳遞,.ref關(guān)鍵字可以用來強迫一個變量通過引用傳遞,這使得一個變量可以接受一個返回值。out關(guān)鍵字也能聲明引用傳遞過程,與ref不同的地方是,它指明這個參數(shù)并不需要初始值。C#對Windows程序最大的賣點可能就是它與COM的無縫集成了,COM就是微軟的Win32組件技術(shù)。實際上,最終有可能在任何.NET語言里編寫COM客戶和服務(wù)器端。C#編寫的類可以子類化一個以存在的COM組件,生成的類也能被作為一個COM組件使用,然后又能使用[4][5]。應(yīng)用程序開發(fā)的基本步驟我們要開發(fā)應(yīng)用程序時,首先要對它進行分析。無論哪種、哪方面的應(yīng)用程序,都要先建立一個應(yīng)用對象。下面我們介紹應(yīng)用程序開發(fā)的基本步驟:首先要建立應(yīng)用對象。創(chuàng)建窗口。在窗口里放置各種控件和編寫事件響應(yīng)的腳本。創(chuàng)建菜單。窗口里的菜單可包括菜單條,下拉式菜單,級聯(lián)菜單和彈出式菜單為菜單編寫事件響應(yīng)的腳本。創(chuàng)建用戶對象。如果想要重復(fù)使用某個控件的功能,可以把窗口上經(jīng)常放置的控件定義為用戶對象。創(chuàng)建數(shù)據(jù)窗口。數(shù)據(jù)窗口可以檢索數(shù)據(jù)庫中的數(shù)據(jù),可以建立各種報或統(tǒng)計表,可以修改數(shù)據(jù)庫。創(chuàng)建函數(shù)、結(jié)構(gòu)、事件。為了能夠更好地支持腳本,編寫自定義的函數(shù),定義結(jié)構(gòu)類型變量,也可以為對象和控件定義自己的事件。運行與調(diào)試??梢栽陂_發(fā)環(huán)境中隨時運行應(yīng)用程序,發(fā)現(xiàn)錯誤后,可以用調(diào)試工具進行調(diào)試。當應(yīng)用程序開發(fā)完畢后,可以把它編譯成可執(zhí)行的文件,讓用戶比較容易地建立應(yīng)用系統(tǒng)的運行環(huán)境[6]。相關(guān)定義DFD:數(shù)據(jù)流程圖。SQLSERVER:系統(tǒng)服務(wù)器所使用的數(shù)據(jù)庫管理系統(tǒng)〔DBMS。SQL:一種用于訪問查詢數(shù)據(jù)庫的語言事務(wù)流:數(shù)據(jù)進入模塊后可能有多種路徑進行處理。主鍵:數(shù)據(jù)庫表中的關(guān)鍵域。值互不相同。外鍵:數(shù)據(jù)庫表中與其它表主鍵關(guān)聯(lián)的域。[1][3][7]..圖書信息系統(tǒng)概要設(shè)計需求分析圖書管理涉及圖書信息、系統(tǒng)用戶信息、讀者信息、圖書借閱等多種數(shù)據(jù)管理。從管理的角度可將圖書分為三類:圖書信息管理、系統(tǒng)用戶管理、讀者數(shù)據(jù)管理。圖書信息管理包括圖書錄入、借還、查詢等操作,系統(tǒng)用戶管理包括系統(tǒng)用戶類別和用戶數(shù)據(jù)管理,讀者數(shù)據(jù)管理包括讀者類別管理和個人數(shù)據(jù)的錄入、修改和刪除。圖書借閱者的需求是查詢圖書館所存的圖書、個人借閱情況及個人信息的修改;管理員對圖書借閱者的借閱及還書要求進行操作,同時給借閱者查看確認;圖書館管理人員的功能最為復(fù)雜,包括對圖書借閱者、圖書進行管理和維護,及系統(tǒng)狀態(tài)的查看、維護等。圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據(jù)本人借書證號和密碼登錄系統(tǒng),還可以進行本人借書情況的查詢和維護部分個人信息。管理員功能的信息量大,數(shù)據(jù)安全性和保密性要求最高。要能實現(xiàn)對圖書信息、借閱者信息、總體借閱情況信息的管理和統(tǒng)計、用戶和管理人員信息查看及維護。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統(tǒng)計圖書的基本信息;瀏覽、查詢、統(tǒng)計、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統(tǒng)計圖書館的借閱信息,添加、刪除和修改借閱信息,刪除某條圖書借閱者基本信息記錄時,應(yīng)實現(xiàn)對該圖書借閱者借閱記錄的級聯(lián)刪除。具體功能如下∶借閱者維護借閱者個人部分信息借閱者查看個人借閱情況信息維護借閱者個人密碼查詢及統(tǒng)計各種信息維護圖書信息維護管理員信息維護借閱者信息系統(tǒng)功能設(shè)計及目標對于圖書館主要負責提供的功能是指從圖書的購入開始直到該圖書過期下架的整個流通過程,這其中包括圖書入庫、借出、歸還以及對參與此流通過程的讀者的信息管理。圖書信息管理:建立圖書信息庫,以便讀者進行查詢和借閱。在建立信息庫時可能因操作錯誤或其它情況而造成數(shù)據(jù)庫里圖書信息的錯誤,需要修改這些錯誤。圖書因使用過久或在讀者借閱書籍時發(fā)生遺失的情況下需做遺失處理,這些都需要修改數(shù)據(jù)庫關(guān)于書籍的信息。出版社信息管理:建立出版社信息庫,在圖書入庫的時候及時添加出版社信息,并按需要隨時修改和更新。讀者信息管理:讀者一般都是在校的學生和教師??砂葱枰薷臄?shù)據(jù)庫關(guān)于讀者的信息。借還書管理:圖書館主要的功能就是提供書籍供讀者借閱,在借閱圖書時應(yīng)按圖書館的規(guī)則進行借閱,例如如果已有超時借閱的圖書,則在歸還前不允許再借閱等等。對于圖書遺失或超期歸還的情況應(yīng)根據(jù)圖書館的規(guī)則進行處罰。規(guī)則管理:對于讀者借閱書籍的權(quán)限〔可借閱書籍數(shù)目,每人每本書可持有天數(shù)等應(yīng)該能加以分類,若有圖書遺失或超期未還的情況發(fā)生,圖書館都應(yīng)該規(guī)定處罰的條例。權(quán)限管理:另外對于操作此系統(tǒng)的前端工作人員的權(quán)限也應(yīng)該有一定限制。這些都應(yīng)該只能由系統(tǒng)管理員來進行操作和修改。信息查詢:讀者在借閱書籍前都需查詢圖書館關(guān)于所借書籍的大概信息:該圖書是否在館,是否已借出,在館中的書架號;除查詢書籍外,圖書管理員還可查詢關(guān)于讀者的信息,是否有超期未還的圖書,還可借閱書籍數(shù)目等。系統(tǒng)總體架構(gòu)模塊描述圖書信息管理系統(tǒng)共分為七個模塊:"客戶信息維護模塊"、"圖書信息維護模塊"、"出版社信息管理模塊"、"用戶信息管理模塊"、"客戶借還書管理模塊"、"綜合查詢模塊"、"綜合設(shè)置模塊"。圖書信息系統(tǒng)的功能模塊如圖:圖書信息系統(tǒng)圖書信息系統(tǒng)用戶用戶系統(tǒng)管理員客戶用戶信息管理租書還書客戶信息維護圖書信息維護出版社信息管理客戶租還書信息管理綜合查詢綜合設(shè)置功能模塊圖其中,客戶租還書管理模塊包括以下3個子模塊租借圖書歸還圖書查詢租借信息客戶信息維護模塊包括以下5個子模塊增加客戶信息刪除客戶信息修改客戶信息查詢客戶信息遍歷客戶信息同理,如圖書信息管理、出版社信息管理、用戶信息管理模塊也被類似地劃分為增加、刪除、修改、查詢和遍歷5個模塊。系統(tǒng)的總體結(jié)構(gòu)圖用戶信息模塊用戶信息模塊客戶信息模塊綜合信息管理系統(tǒng)客戶信息模塊綜合信息管理系統(tǒng)圖書信息系統(tǒng)圖書信息模塊圖書信息系統(tǒng)圖書信息模塊出版社信息模塊出版社信息模塊客戶租還書信息模塊客戶租還書信息模塊綜合查詢模塊綜合查詢模塊綜合設(shè)置模塊綜合設(shè)置模塊系統(tǒng)的總體結(jié)構(gòu)圖數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計簡介數(shù)據(jù)庫設(shè)計有幾個范式:第一范式:要求數(shù)據(jù)表中的每一個字段都不可再分,也就是說同一個數(shù)據(jù)表中同類字段不允許重復(fù)出現(xiàn),在一個字段內(nèi)也不允許放置多個數(shù)據(jù)項。第二范式:要求所有的非主鍵字段完全依賴于整個主鍵,而不是只依賴于構(gòu)成主鍵的個別字段。第三范式:要求第一個非主鍵字段列中沒有可傳遞的依賴性,即一個非主鍵列不能依賴于另一個非主鍵列。一般我們要做到的是第三范式,即數(shù)據(jù)表中沒有冗余字段以及同一個表中的字段沒有函數(shù)依賴關(guān)系,函數(shù)依賴性就是一個表中的字段間不應(yīng)該有計算關(guān)系,如一個表中有單價字段、數(shù)量字段,就不應(yīng)該有一個總金額字段。如果程序運行過程中需要總金額,可以實時計算。不過在一些較常用的表中,我們可以適當?shù)乇A羧哂嘧侄?這樣,在程序運行過程中可以減少由于表間互相關(guān)聯(lián)而使用速度降低等問題。這就是所謂的第四范式。數(shù)據(jù)表設(shè)計時,最好不要使用用戶輸入的信息作為主鍵,每一個數(shù)據(jù)表自己定義一個主鍵,添加信息是由程序自動添加,這樣就可以減少數(shù)據(jù)更新時產(chǎn)生的錯誤。表與表相關(guān)聯(lián)的外鍵最好是由程序自動生成的主鍵,這樣數(shù)據(jù)庫就比較規(guī)范了。數(shù)據(jù)庫初期設(shè)計時一定要謹慎,把所有可能的情況都考慮進去,即使當時沒有用到,也要將它留在數(shù)據(jù)庫中作為備用字段以便將來擴充。程序一旦開始編碼,就應(yīng)該盡量避免再修改數(shù)據(jù)庫。因為如果數(shù)據(jù)庫結(jié)構(gòu)一旦改變,所有與修改的數(shù)據(jù)表相關(guān)的業(yè)務(wù)都有可能受到影響,而某些影響還很難看到,這樣就容易形成一個惡性循環(huán)。只要數(shù)據(jù)庫結(jié)構(gòu)改動。相應(yīng)的模塊就一定要重新修改,否則一定會出問題[1][3][7]。數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫平臺:MicrosoftSQLServer2000數(shù)據(jù)庫中各種元素的命名約定。例如表名,字段名的命名約定。表名命名約定:表名為該表的英文縮寫;字段命名約定:字段名為該字段名的英文縮寫按照每個模塊要實現(xiàn)的功能,通過其英文簡寫后,為每張表命名,每張表的字段名也是通過按其英文簡寫后命名。數(shù)據(jù)庫的用戶創(chuàng)建以及安全性檢查在前面已經(jīng)說明,包括給用戶賦予權(quán)限、密碼等。設(shè)計數(shù)據(jù)庫系統(tǒng)時應(yīng)該首先充分了解用戶各個方面的需求,包括現(xiàn)有的以及將來可能增加的需求。數(shù)據(jù)庫設(shè)計一般包括如下幾個步驟:數(shù)據(jù)庫需求分析。數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計。數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計[1][3][7]。數(shù)據(jù)庫需求分析用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢,這就要求數(shù)據(jù)庫結(jié)構(gòu)能充分滿足各種信息的輸出和輸入,收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為后而后具體設(shè)計打下基礎(chǔ)。根據(jù)數(shù)據(jù)流程圖,可以列出以下數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):圖書信息,包括的數(shù)據(jù)項有:圖書編號、圖書書名、圖書類別、圖書作者、出版社、價格、圖書庫存數(shù)量、現(xiàn)在庫存數(shù)量等。借閱信息,包括的數(shù)據(jù)項有:圖書編號、客戶編號、借閱時間、應(yīng)歸還日期、實際歸還日期等。出版社信息,其數(shù)據(jù)項有:出版社名稱、地址、電話、郵件地址等??蛻艋拘畔?其數(shù)據(jù)項有:客戶編號、客戶姓名、密碼、電話號碼,電子郵件地址、借書數(shù)量等。用戶信息,包括的數(shù)據(jù)項有:用戶編號、密碼、權(quán)限等。數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計得到上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)后,就可以設(shè)計出能夠滿足用戶需求的各種實體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。以下分別為系統(tǒng)E-R圖,圖書信息實體E-R圖、租借書信息實體E-R圖、客戶信息實體E-R圖、出版社信息實體E-R圖、用戶信息實體E-R圖。系統(tǒng)E-R圖圖書圖書圖書編號圖書作者出版社圖書定價圖書分類圖書庫存數(shù)量數(shù)量現(xiàn)在庫存數(shù)量數(shù)量出版日期圖書名稱圖書信息實體E-R圖租租借書客戶編號圖書編號應(yīng)歸還日期實際歸還日期租借日期租借書信息實體E-R圖出版社出版社出版社名稱出版社地址電子郵件出版社電話出版社信息實體E-R圖客戶客戶客戶編號客戶姓名客戶密碼借書數(shù)量電子郵件電話號碼客戶信息實體E-R圖用戶用戶用戶編號用戶分類用戶密碼用戶信息實體E-R圖數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計在上面的實體以及實體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表格以及各個表格之間的關(guān)系。圖書管理系統(tǒng)數(shù)據(jù)庫中各個表格的設(shè)計結(jié)果如下面的幾個表格所示。每個表格表示在數(shù)據(jù)庫中的一個表。圖書表<Book>編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明備注1BookIDChar<10>圖書編號主鍵2BookNameVarchar<30>圖書名稱允許為空3BookWriterVarchar<20>圖書作者允許為空4BookPublishVarchar<50>出版社允許為空5BookNameDateDateTime出版日期允許為空6BookPriceFloat圖書定價允許為空7BookSortVarchar<20>圖書分類允許為空8BookAmountInt圖書庫存數(shù)量允許為空9BookRemainInt現(xiàn)在庫存數(shù)量允許為空租借信息表<BorrowBook>編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明備注1ReaderIDChar<6>客戶編號主鍵2BookIDChar<10>圖書編號外鍵3BorrowBookDateTime租借日期允許為空4ReturnDateDateTime應(yīng)歸還日期允許為空5FactReturnDateDateTime實際歸還日期允許為空出版社表<PublishCompany>編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明備注1PublishNameVarChar<50>出版社名稱主鍵2PublishAddressVarchar<50>出版社地址允許為空3PublishPhoneNumberVarchar<15>出版社電話允許為空4PublishEmailVarchar<30>電子郵件允許為空客戶表<Reader>編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明備注1ReaderIDChar<6>客戶編號主鍵2ReaderNameVarchar<20>客戶姓名允許為空3ReaderPasswordVarchar<10>客戶密碼允許為空4ReaderPhoneNumberVarchar<15>電話號碼允許為空5ReaderEmailVarchar<50>電子郵件允許為空6ReaderBorrowBooksInt借書數(shù)量允許為空用戶表<User>編號字段名稱數(shù)據(jù)結(jié)構(gòu)說明備注1UserIDChar<10>用戶編號主鍵2UserPasswordChar<10>用戶密碼允許為空3BookSortVarchar<10>用戶分類允許為空規(guī)劃有效的索引在組合表的列中創(chuàng)建索引,包括主關(guān)鍵字和外部關(guān)鍵字所在的列。在列或類組合中創(chuàng)建唯一的索引能增強唯一性。瀏覽索引并卸載不使用的索引。索引需要一定硬盤空間和時間來維護。具有較高數(shù)據(jù)插入操作頻率的數(shù)據(jù)庫最好不要索引。有較高讀操作頻率的數(shù)據(jù)庫應(yīng)該有更多的索引。避免在簇索引中包括不必要的列。在可能的情況下,使用較小的數(shù)據(jù)類型,例如用varchar替代char??紤]使用簇索引來支持排序和范圍化查詢。在為數(shù)據(jù)檢索優(yōu)化表時,簇索引必須支持數(shù)據(jù)的分組索引。為簇關(guān)鍵字選擇列或列組,簇關(guān)鍵字以經(jīng)常需要的順序排序數(shù)據(jù)或以必須被一起訪問的記錄而分組記錄。創(chuàng)建支持一般查詢的查找參數(shù)索引。具有高選擇性的列是索引的最好候選列。具有高密度的列是索引糟糕的候選列。使用約束實現(xiàn)數(shù)據(jù)的完整性PRIMARYKEY約束在表中定義了主關(guān)鍵字,它是行唯一的標識符,它可以強制實體完整性。在使用PRIMARYKEY約束時考慮以下事實:每個表只能有一個PRIMARYKEY約束。鍵入的值必須是唯一的。不允許有空值。PRIMARYKEY約束在指定的列創(chuàng)建唯一的索引,可以指定簇索引和非簇索引〔如果非簇索引先前并不存在,簇索引是默認的。UNIQUE約束指定,在一列中的兩行不能有相同的值。該約束使用唯一的索引來強制實體的完整性。在已有一個主關(guān)鍵字時UNIQUE約束很有用。在使用UNIQUE約束時,考慮以下事實;允許有空值。在一個表中可以設(shè)置多個UNIQUE約束??梢詫NIQUE約束運用于具有唯一值的單列或多列,但不能用于表的主關(guān)鍵字。通過在指定的列或列組中創(chuàng)建唯一的索引,可以使UNIQUE索引得到強制[3][10][11]。..圖書信息系統(tǒng)詳細設(shè)計總體處理流程用戶從客戶端登錄系統(tǒng)。服務(wù)器收到登錄命令后要在已有的管理員資料數(shù)據(jù)表中讀出管理員ID和密碼,并檢驗該密碼和用戶輸入的密碼是否匹配。用戶登錄成功后就可以進行各種操作了,正確的填寫各個界面的內(nèi)容后,客戶端就會向服務(wù)器發(fā)送命令,服務(wù)器按照要求對數(shù)據(jù)庫進行處理〔寫入、讀出、修改,然后返回操作結(jié)果或查詢的數(shù)據(jù)。用戶界面設(shè)計當今軟件界的所有軟件無不是可視化的用戶界面,它的好處不外乎它有美觀、直接、操作者易懂和操作方便等好處。本系統(tǒng)設(shè)計思想:"為用戶設(shè)計,而不是設(shè)計者"本系統(tǒng)設(shè)計原則:界面美觀、操作方便并能高效率地完成工作。
界面根據(jù)用戶需求設(shè)計。
界面能引導(dǎo)用戶操作的功能,并能提供一些幫助功能。系統(tǒng)窗體模塊設(shè)計系統(tǒng)窗體由登陸界面,系統(tǒng)主界面和多個功能模塊界面組成,基本上一個模塊完成一個或幾個功能。用戶登陸模塊的實現(xiàn)用戶登陸界面如圖4-1∶用戶登陸界面該模塊主要實現(xiàn)系統(tǒng)的登陸。在用戶名和密碼中輸入用戶的賬號和密碼,點擊確定,將調(diào)用privatevoidbtnOk_Click<objectsender,System.EventArgse>{//系統(tǒng)管理員登陸if<UserCheck<this.textUserID.Text,this.textUserPassword.Text>=="system">{this.Visible=false;Formmainform=newMainForm<this.textUserID.Text,"system">; mainform.ShowDialog<>;this.Close<>; }//普通用戶登錄elseif<UserCheck<this.textUserID.Text,this.textUserPassword.Text>=="user">{this.Visible=false;Formmainform=newMainForm<this.textUserID.Text,"user">; mainform.ShowDialog<>; this.Close<>; }else{//錯誤信息提示if<MessageBox.Show<"輸入用戶密碼有誤,是否重新登陸","輸入有誤",MessageBoxButtons.OKCancel,MessageBoxIcon.Question>==DialogResult.OK>{this.textUserID.Clear<>;this.textUserPassword.Clear<>;}else{this.Close<>; } }}進行驗證,如果用戶名或者密碼輸入不正確即提示"輸入用戶密碼有誤,是否重新登陸"。用戶名和密碼都正確,則進入系統(tǒng)的主界面。登陸模塊運行時通過語句stringfileName="config.ini";try{sReader=newStreamReader<fileName,System.Text.Encoding.Default>;connectionString=sReader.ReadLine<>;conday=Convert.ToInt16<sReader.ReadLine<>>;sum=Convert.ToInt16<sReader.ReadLine<>>;day=Convert.ToInt16<sReader.ReadLine<>>;rate=Convert.ToDouble<sReader.ReadLine<>>;}catch<System.Exceptionerror>{MessageBox.Show<"錯誤信息是:"+error.Message,"警告",MessageBoxButtons.OK,MessageBoxIcon.Error>;}finally{if<sReader!=null>sReader.Close<>;}this.sqlConnectionLogin=newSqlConnection<>;this.sqlConnectionLogin.ConnectionString=connectionString;從config.ini文件讀入數(shù)據(jù)庫連接字符串,續(xù)借天數(shù),借書天數(shù),罰款金額,最大借書數(shù)信息,設(shè)置為靜態(tài)變量,為其它窗體使用。 為了區(qū)分管理員中系統(tǒng)管理員和普通圖書管理員的權(quán)限,在登陸模塊中通過stringUserCheck<stringusername,stringuserpassword>{stringtxtSql,usersort; usersort="nobody"; //在數(shù)據(jù)庫表User中查詢合法用戶 txtSql="SELECT*FROM[User]";SqlCommandcheckuser=newSqlCommand<txtSql,this.sqlConnectionLogin>;try{this.sqlConnectionLogin.Open<>;SqlDataReadersqlreader=checkuser.ExecuteReader<>;while<sqlreader.Read<>>{if<<sqlreader[0].ToString<>.Trim<>==username>&&<sqlreader[1].ToString<>.Trim<>==userpassword>>{ usersort=sqlreader[2].ToString<>.Trim<>;break; } } }catch<Exceptione>{MessageBox.Show<e.ToString<>>; } sqlConnectionLogin.Close<>; returnusersort; }根據(jù)用戶名和密碼對管理員信息表逐行對比,返回權(quán)限說明。并把參數(shù)傳給主功能模塊,如果是系統(tǒng)管理員權(quán)限則管理員信息功能可用。用戶主界面的實現(xiàn)主界面如圖4-2:圖書管理系統(tǒng)主界面在主界面中,通過文件MainForm.cs中/*退出系統(tǒng)模塊*/privatevoidbtnExit_Click<objectsender,System.EventArgse>/*圖書信息模塊*/privatevoidbtnBook_Click<objectsender,System.EventArgse>/*用戶信息模塊*/privatevoidbtnUser_Click<objectsender,System.EventArgse>/*客戶信息模塊*/privatevoidbtnReader_Click<objectsender,System.EventArgse>/*綜合查詢模塊*/privatevoidbtnQuery_Click<objectsender,System.EventArgse>/*出版社信息模塊*/privatevoidbtnPublishing_Click<objectsender,System.EventArgse>/*客戶租還書模塊*/privatevoidbtnBorrow_Click<objectsender,System.EventArgse>/*綜合設(shè)置模塊*/privatevoidbtnset_Click<objectsender,System.EventArgse>/*數(shù)據(jù)導(dǎo)入模塊*/privatevoidbtnexcel_Click<objectsender,System.EventArgse>函數(shù)來調(diào)用所有功能模塊,是系統(tǒng)的主要框架。出版社信息模塊的實現(xiàn)出版社信息模塊界面如圖4-3:出版社信息界面該模塊通過文件PublishConpany.cs中/*初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter類的新實例。通過this.sqlConnectionBook.ConnectionString=Library.Login.connectionString;獲取用于打開SQL數(shù)據(jù)庫的字符串*/publicPublishing<>/*使用SqlDataAdapter的Fill方法填充DataSet及顯示該表*/privatevoidShowGrid<>/*初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter類的新實例。通過comm.CommandText=commString;獲取對數(shù)據(jù)源執(zhí)行的Transact-SQL語句或存儲過程;通過dataAdapter.SelectCommand=comm;獲取該語句或存儲過程用于在數(shù)據(jù)源中選擇記錄;通過dataAdapter.Fill<dataSetBook,"PublishCompany">;在System.Data.DataTable中添加或刷新行以匹配使用System.Data.DataTable名稱,指定的SQLSELECT語句和System.Data.CommandBehavior的數(shù)據(jù)源中的行。通過this.textName.Text=;獲取當前文本并為該控件獲取數(shù)據(jù)綁定*/privatevoidDataBinding<>函數(shù)來實現(xiàn)數(shù)據(jù)庫的連接及數(shù)據(jù)顯示。通過函數(shù):/*添加數(shù)據(jù)*/privatevoidbtnAdd_Click<objectsender,System.EventArgse>/*修改數(shù)據(jù)*/privatevoidbtnModify_Click<objectsender,System.EventArgse>/*刪除數(shù)據(jù)*/privatevoidbtnDelete_Click<objectsender,System.EventArgse>來實現(xiàn)對出版社信息的添加,修改及刪除操作。點擊"退出"返回主界面??蛻粜畔⒛K的實現(xiàn)客戶信息功能模塊界面如圖4-4:客戶信息界面該模塊通過文件Reader.cs中publicReader<>privatevoidShowGrid<>privatevoidDataBinding<>函數(shù)來實現(xiàn)數(shù)據(jù)庫的連接及數(shù)據(jù)顯示,其數(shù)據(jù)庫操作的具體實現(xiàn)方法同出版社信息模塊一致。圖書借閱模塊的實現(xiàn)圖書借閱模塊界面如圖4-5:借閱圖書界面該模塊通過文件BorrowReturn.cs中/*通過語句cd=Library.Login.conday;d=Library.Login.day;s=Library.Login.sum;r=Library.Login.rate;來讀取用戶的借書天數(shù),借書最長時間,借書數(shù)量及罰款金額。初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter類的新實例。通過this.sqlConnectionBook.ConnectionString=Library.Login.connectionString;獲取用于打開SQL數(shù)據(jù)庫的字符串*/publicBorrowReturn<>/*查看租借功能的實現(xiàn)函數(shù)*/privatevoidbtnLoad_Click<objectsender,System.EventArgse>{strings="'"+this.textReaderID.Text+"'";if<this.textReaderID.Text=="">{MessageBox.Show<"該用戶沒有租借圖書!">; }else{m="SELECT*FROMBorrowBookWHEREReaderID="+s; } ShowGrid<>;}/*續(xù)借功能的實現(xiàn)函數(shù)*/privatevoidbtnContinue_Click<objectsender,System.EventArgse>/*圖書租借信息中讀者ID必須與讀者信息記錄中的讀者ID相同,以該函數(shù)來驗證,相同則租借,不同就會報錯*/privateboolReturnReader<stringReaderID>/*圖書租借信息中借閱圖書號必須與讀者信息記錄中的圖書號相同,以該函數(shù)來驗證,相同則租借,不同就會報錯*/privateboolReturnBook<stringBookID>/*歸還圖書,顯示是否應(yīng)繳納罰款及應(yīng)該繳納多少罰款功能的實現(xiàn)函數(shù)*/privatevoidbtnReturn_Click<objectsender,System.EventArgse>函數(shù)實現(xiàn)圖書借閱,歸還,續(xù)借及罰款等。管理員可添加圖書借閱、圖書歸還和繳納罰款記錄。圖書借閱信息中的讀者ID必須與讀者信息記錄中的讀者ID相關(guān)聯(lián)。圖書借閱信息中的借閱圖書號必須與圖書資料記錄中的圖書號相關(guān)聯(lián)。還書功能要判斷讀者編號和圖書編號為主鍵查找借書信息表,若借書時間與系統(tǒng)當前時間天數(shù)超過設(shè)定的借書天數(shù)則計算罰款。圖書歸還后圖書信息表中該圖書未借數(shù)加一,用戶信息表中借書數(shù)減一。 借書功能中若該用戶借書數(shù)未到上限,圖書未借數(shù)未為零,則將更新借書表,用戶信息表,圖書信息表。借還書功能模塊對數(shù)據(jù)庫操作多所以所有數(shù)據(jù)庫的操作都是通過存儲過程實現(xiàn)對表的操作更新。點擊"退出"返回主界面。圖書信息模塊的實現(xiàn)圖書信息模塊界面如圖4-6:圖書信息界面該模塊通過文件Book.cs中類似方法來實現(xiàn)對圖書信息的添加,修改及刪除操作,點擊"退出"返回主界面,其數(shù)據(jù)庫操作的具體實現(xiàn)方法同出版社信息模塊一致。用戶信息模塊的實現(xiàn)用戶信息模塊界面如圖4-7:用戶信息界面該模塊通過文件User.cs中類似方法來實現(xiàn)來實現(xiàn)對用戶信息的添加,修改及刪除操作,點擊"退出"返回主界面,其數(shù)據(jù)庫操作的具體實現(xiàn)方法同出版社信息模塊一致。綜合查詢模塊的實現(xiàn)綜合信息模塊界面如圖4-8:綜合查詢界面該模塊通過文件Query.cs中函數(shù):/*初始化SqlConnection,DataSet,SqlCommand,SqlDataAdapter類的新實例。通過this.sqlConnectionBook.ConnectionString=Library.Login.connectionString;獲取用于打開SQL數(shù)據(jù)庫的字符串,并根據(jù)查詢條件,在數(shù)據(jù)庫表中逐一對比,如有合要求的數(shù)據(jù)項,則綁定該控件*/PublicQuery<>來實現(xiàn)信息的綜合查詢。點擊"退出"返回主界面。數(shù)據(jù)導(dǎo)入模塊的實現(xiàn)數(shù)據(jù)導(dǎo)入模塊界面如圖4-9:數(shù)據(jù)導(dǎo)入界面考慮到圖書信息有時會需要對表的大量導(dǎo)入,我們設(shè)計了從EXCEL表加入數(shù)據(jù)庫中相應(yīng)表的功能。所以該模塊通過Excel.cs中/*通過對表名的選擇,對應(yīng)我們提供的EXCEL模版的表使用OLEDB連接EXCEL文件,并把表讀到數(shù)據(jù)集,顯示到程序中,然后從數(shù)據(jù)集導(dǎo)入SQL數(shù)據(jù)庫相應(yīng)的表。*/privatevoidbtnView_Click<objectsender,System.EventArgse>{MySheet=boDataTable.Text;try{OleDbConnectionMyConnection=newOleDbConnection<@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+MyExcel+";Excel8.0;HDR=YES">;stringMySQL="SELECT*FROM["+MySheet+"$]";OleDbCommandMyCommand=newOleDbCommand<MySQL,MyConnection>;OleDbDataAdapterMyAdapter=newOleDbDataAdapter<MyCommand>; MySet=newDataSet<>; MyAdapter.Fill<MySet>;this.dataGrid1.DataSource=MySet.Tables[0]; }catch<System.ExceptionMyEx>{MessageBox.Show<MyEx.Message>; }綜合設(shè)置模塊的實現(xiàn)綜合設(shè)置模塊界面如圖4-10綜合設(shè)置界面該模塊主要通過Set.cs中/*從config.ini文件讀入用戶的續(xù)借天數(shù),借書天數(shù),罰款金額,最大借書數(shù)信息,管理員可按需要隨時對用戶終于大借書數(shù),借書月數(shù),圖書超期罰款/天,續(xù)借天數(shù)進行修改,并通過IO操作更新到config.ini文件。*/privatevoidSetForm<objectsender,System.EventArgse>{strings;stringfileName="config.ini";StreamWritersWriter=null;s=Library.Login.connectionString;try{sWriter=newStreamWriter<fileName,false,System.Text.Encoding.Default>;sWriter.WriteLine<s>;cd=Convert.ToInt16<this.textCd.Text.ToString<>>;this.s=Convert.ToInt16<this.textSum.Text.ToString<>>;d=Convert.ToInt16<this.textDay.Text.ToString<>>;r=Convert.ToDouble<this.textRate.Text.ToString<>>;sWriter.WriteLine<cd.ToString<>>;sWriter.WriteLine<this.s.ToString<>>;sWriter.WriteLine<d.ToString<>>;sWriter.WriteLine<r.ToString<>>;if<MessageBox.Show<"更新成功!若使更新生效需要重新啟動程序。您確定關(guān)閉當前程序嗎?","確定關(guān)閉程序",MessageBoxButtons.OKCancel,MessageBoxIcon.Question>.Equals<DialogResult.OK>>{Application.Exit<>; } }catch<System.Exceptionerror>{MessageBox.Show<"錯誤信息是:"+error.Message,"警告",MessageBoxButtons.OK,MessageBoxIcon.Error>;}finally{if<sWriter!=null> sWriter.Close<>; }}函數(shù)實現(xiàn)信息的綜合設(shè)置,修改。點擊"退出"返回主界面。..測試引言軟件測試是保證軟件質(zhì)量的關(guān)鍵,它是對需求分析和編碼的最后復(fù)審。在開發(fā)軟件的過程中,雖然使用了許多保證軟件質(zhì)量的方法,分析、設(shè)計和實現(xiàn)軟件,但難免還會在實際的操作中犯錯誤,這樣就會在軟件產(chǎn)品中埋藏隱患。如果不能在設(shè)計階段排除這些錯誤,就會導(dǎo)致系統(tǒng)功能不能正常實現(xiàn),有時候會造成巨大的經(jīng)濟損失。為了保證軟件質(zhì)量,且在今后的使用過程中保證軟件的精確性、安全性和較長時間的使用壽命,軟件必須經(jīng)過充分的測試[12]。目的編寫測試計劃的目的是對工程質(zhì)量的實驗,檢測管理系統(tǒng)的硬軟件分析與設(shè)計中的每一個模塊和各模塊的組裝、業(yè)務(wù)實現(xiàn)等測試活動進行安排。根據(jù)軟件工程規(guī)范的要求,其內(nèi)容包括測試用例的設(shè)計、測試數(shù)據(jù)的錄入方法和評價準則[12]。測試策略面向?qū)ο蟮膯卧獪y試當考慮面向?qū)ο蟮能浖r,單元的概念改變了。"封裝"導(dǎo)致了類和對象的定義,這意味著類和類的實例包裝了屬性和處理這些數(shù)據(jù)的操作。現(xiàn)在,最小的可測試單元是封裝起來的類和對象。一個類可以包含一組不同的操作,而一個特定的操作也可能存在于一組不同的類中。因此,對于面向?qū)ο蟮能浖碚f,單元測試的含義發(fā)生了很大變化。測試面向?qū)ο筌浖r,不能再孤立地測試單個操作,而應(yīng)該把操作作為類的一部分來測試[13][14]。面向?qū)ο蟮募蓽y試面向?qū)ο筌浖蓽y試主要有下述兩種不同的策略?;诰€程的測試:這種策略把響應(yīng)系統(tǒng)的一個輸入或一個時間所需要的類集成起來,分別集成并測試每個線程,同時應(yīng)用回歸測試以保證沒有產(chǎn)生副作用。基于使用的測試:這種方法首先測試幾乎不使用服務(wù)器類的那些類,把獨立類都測試完之后,再測試使用獨立類的下一個層次的類。對依賴類的測試一個層次一個層次地持續(xù)進行下去,直至把整個軟件系統(tǒng)構(gòu)造完為止[13][14]。面向?qū)ο蟮拇_認測試在確認測試或系統(tǒng)測試層次,不同考慮類之間相互連接的細節(jié)。和傳統(tǒng)的確認測試一樣,面向?qū)ο筌浖拇_認測試也集中檢查用戶可見的動作和用戶可識別的輸出。為了導(dǎo)出確認測試用例,測試人員應(yīng)該認真研究動態(tài)模型和描述系統(tǒng)行為的腳本,以確定最可能發(fā)現(xiàn)用戶交互需求錯誤的情景[13][14]。測試方法通過輸入測試數(shù)據(jù)對系統(tǒng)功能進行功能測試。進行添加,更新,刪除,查找等操作,測試系統(tǒng)性能是否達到要求。測試結(jié)果經(jīng)過多次測試,數(shù)據(jù)輸入時如果出錯,系統(tǒng)提示錯誤信息。比如主鍵項目不能為空,年月輸入項目必須滿足年月格式要求,輸入開始年月和結(jié)束年月時,時間順序又要求。在進行DB操作時,若不能查找數(shù)據(jù),則返回信息提示出錯。通過測試,系統(tǒng)能夠達到功能需求設(shè)計。在軟件測試過程中,由于輸入數(shù)據(jù)不夠充分,某些功能的錯誤沒有能夠測出。另外,在某些方面,由于硬件上的原因,暫時不能投入正式使用,希望日后能夠加以改進。其他尚有部分錯誤建議通過測試,對軟件測試欠缺的方面加以總結(jié)。通過測試,該系統(tǒng)達到了功能設(shè)計的要求,但由于操作方式多變,所以建議使用更多測試用例及測試方法來進行測試。..結(jié)論經(jīng)過以上的步驟,系統(tǒng)的開發(fā)告一個段落。作為一個圖書信息系統(tǒng)軟件,本系統(tǒng)具有以下幾個特點:安裝使用方便,只要正常登陸客戶端,就可以進入系統(tǒng),察看資料。開發(fā),維護方便,降低了維護成本。操作使用簡單:具有良好的用戶界面,易于操作,功能完善,用戶不需要專門學習如何進行操作。系統(tǒng)架構(gòu)靈活,可擴展性強:該系統(tǒng)耦合程度低,具有強大可擴展性,需要時可以通過增加子模塊的方法增加新的功能,同時原有功能不受影響。通過該管理軟件的使用,取代手工紙筆管理,大大提高效率,降低資源浪費,提高管理效率,節(jié)省人力物力。雖然系統(tǒng)開發(fā)已經(jīng)完成,但由于時間倉促,還遺留有很多問題,例如,系統(tǒng)對于訪問人數(shù)的測試,在訪問者眾多的情況下,是否會由于網(wǎng)絡(luò)原因造成訪問困難。系統(tǒng)有的地方功能上做的不夠合理,會對用戶的使用造成一定程度的障礙,等等。還有可以增加本系統(tǒng)特有的功能等等。這些不足都需要在日后時間充裕的情況下一一補充,加以完善。爭取能夠在實際使用當中進一步擴展。在這次系統(tǒng)開發(fā)過程中,通過自己動手,從查找資料開始,經(jīng)過系統(tǒng)調(diào)研,可行性分析,總體設(shè)計,詳細設(shè)計,系統(tǒng)測試等步驟,到系統(tǒng)實現(xiàn),達到了畢業(yè)設(shè)計對學生能力的要求。通過對開發(fā)工具的使用和掌握,學習到C#開發(fā)和應(yīng)用方面的經(jīng)驗。雖然在此過程當中遇到了很多困難,但是通過各種方式將問題逐一解決。在此過程當中,不僅學習到了很多知識和新的技術(shù),還學習到了解決問題的方法:不能單靠別人指教,很多問題只有靠自己通過思考問題發(fā)生的原因,查找相應(yīng)資料,對比進行思考,再對程序反復(fù)進行調(diào)試。當問題得到解決后,不能就此忘記,應(yīng)該通過對問題的解決中學習到在以后遇到類似問題時如何解決,從中吸取教訓,總結(jié)經(jīng)驗。研究總結(jié)∶本系統(tǒng)完成了圖書管理系統(tǒng)的大多數(shù)功能,可以滿足大多數(shù)的用戶需求。當今的圖書管理系統(tǒng)已經(jīng)成為圖書管理的必然趨勢,比起原來的手工操作,一個完善的圖書管理系統(tǒng)可以更好的幫助管理員和用戶進行各種操作,數(shù)據(jù)處理,從而減少出錯的可能性。本系統(tǒng)在使用性上并沒有達到很高的水平,在盡可能的情況下,要對系統(tǒng)再做多次的修改。未來展望∶今后的圖書管理系統(tǒng)將更加頻繁的被使用,不管大中小型的圖書館都將離不開系統(tǒng)的實時管理。在今后我們會更加努力的進行開發(fā)和設(shè)計,爭取做出可移植性佳且代碼更優(yōu)化的圖書管理系統(tǒng)。任務(wù)總結(jié)∶通過這次畢業(yè)設(shè)計,把本科四年所學展現(xiàn)出來,是對我的一種很大的考驗,我在某些方面還做的不足,今后會不斷的改正。..參考文獻[1]丁寶康,李大學編著.《數(shù)據(jù)庫原理》.經(jīng)濟科學出版社,2000[2]趙杰李濤朱慧.《SQLServer數(shù)據(jù)庫管理.設(shè)計與實現(xiàn)教程》.清華大學出版社,2004.3[3]Microsoft著.《數(shù)據(jù)庫程序設(shè)計——SQLServer2000數(shù)據(jù)庫程序設(shè)計》.高等教育出版社,2004.2[4]Microsoft著.《C#程序設(shè)計語言》.高等教育出版社,2005.8[5]王振江,王添添著.《C#課程設(shè)計案例精編》.中國水利水電出版社,2006.12[6]Microsoft著.《基于C#的Windows應(yīng)用程序設(shè)計》.高等教育出版社,2004.2[7]
郭盈發(fā),張紅娟著.《數(shù)據(jù)庫原理》.XX電子科技大學出版社,2002[8]王昌達著.《深入SQLserver2000》.電子工業(yè)出版社,2003[9]李代平,章文著.《中文SQLServer2000數(shù)據(jù)庫應(yīng)用基礎(chǔ)》.冶金工業(yè)出版社,2002[10]
趙松濤著.《中文版SQLSERVER2000應(yīng)用及實例集錦》.人民郵電出社,2002[11]劉衛(wèi)宏著.《SQLServer2000使用教程》.
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防安全員證書報考指南
- 郵政消防安全講座
- 工業(yè)安全檢查指南講解
- 輸血護理科普
- 2.4 認識感官 教案
- 2.1生物體的基本單位第二課時(教案分欄式)
- 輸血培訓課件內(nèi)容
- 2025年四川城市職業(yè)學院輔導(dǎo)員招聘筆試真題附答案
- (2025年)醫(yī)療衛(wèi)生系統(tǒng)招聘考試(醫(yī)學基礎(chǔ)知識)題庫及答案
- 生命安全培訓課件
- 高壓注漿施工方案(3篇)
- 高強混凝土知識培訓課件
- (高清版)DB11∕T 1455-2025 電動汽車充電基礎(chǔ)設(shè)施規(guī)劃設(shè)計標準
- 暖通工程施工環(huán)保措施
- 宗族團年活動方案
- 2025至2030中國碳納米管行業(yè)市場發(fā)展分析及風險與對策報告
- 車企核心用戶(KOC)分層運營指南
- 兒童課件小學生講繪本成語故事《69狐假虎威》課件
- 湖北中煙2025年招聘綜合測試
- 不銹鋼管道酸洗鈍化方案
- 2025年高考時事政治高頻考點(107條)
評論
0/150
提交評論