畢業(yè)設(shè)計 圖書管理系統(tǒng)畢業(yè)設(shè)計
《畢業(yè)設(shè)計 圖書管理系統(tǒng)畢業(yè)設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計 圖書管理系統(tǒng)畢業(yè)設(shè)計(40頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日1繼續(xù)教育學院綜合作業(yè)報告繼續(xù)教育學院綜合作業(yè)報告二一年五月十五日課程名稱:課程名稱: 圖書管理系統(tǒng) 考考 號:號: 100205200460 姓姓 名:名: 鄭 莉 專專 業(yè):業(yè): 計算機及應(yīng)用 單 位: 山西計算機科技學院 指導老師:指導老師: 段利國 成成 績:績: 優(yōu) 良 中 及格 不及格 太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日2摘要本文首先介紹了數(shù)據(jù)庫管理系統(tǒng) (DBMS)的基本概念及關(guān)系模型等。然后對問題的來源進行深入分析,指出 圖書借閱者、圖書館工作人員和圖書館管理人員 是問
2、題主要來源,并指出本數(shù)據(jù)管理系統(tǒng)的實用性功能就是 管理好圖書館信息,提高工作效率,避免數(shù)據(jù)處理手工操作,工作量大,出錯率高 的弊端。接著對需求分析進行細致的分析,特別對圖書借閱者、圖書館工作人員和圖書館管理人員 三者權(quán)限進行分配。接著對系統(tǒng)功能模塊進行分析,指出本系統(tǒng)功能模塊主要分為 “圖書資料管理”模塊、“學生資料管理”模塊、“借還書操作”模塊??偟膩碚f,本圖書管理系統(tǒng),介紹了該系統(tǒng)組成結(jié)構(gòu)、功能特點、使用原理和方法,本系統(tǒng)實現(xiàn)了系統(tǒng)登陸、圖書管理、學生管理圖書的借閱與歸還、圖書借閱排行榜和查看逾期未還圖書以及各種信息的 打印等功能。有了這個系統(tǒng)就使圖書館的工作變得簡單了許多,使圖書館的圖書
3、管 理形成了一個整體自動化管理模式。管理信息系統(tǒng)的實施在技術(shù)上已逐步成熟。管理信息系統(tǒng)是一個不斷發(fā)展的新 型學科,企業(yè)要生存要發(fā)展,要高效率地把企業(yè)活動有機地組織起來,就必須加強 企業(yè)管理,即加強對企業(yè)內(nèi)部的各種資源(人、財、物等)的有效管理,建立與自 身特點相適應(yīng)的管理信息系統(tǒng)。圖書館管理系統(tǒng)是典型的信息管理系統(tǒng),其開發(fā)主 要包括后臺數(shù)據(jù)庫的建立和維護以及前端的應(yīng)用程序的開發(fā)兩個方面。對于前者要 求建立數(shù)據(jù)的一致性和完整性,對于后者則要求應(yīng)用程序功能的完備,易用等的特 點?;谏鲜隹紤]本系統(tǒng)主要利用Microsoft Visual Studio 2005 作前端的應(yīng)用開發(fā)工具 ,利用SQL
4、Server 2000 作為后臺的數(shù)據(jù)庫,利用WINDOWS 作為系統(tǒng)平臺開發(fā)的圖書管理系統(tǒng)。另外本圖書館管理系統(tǒng)利用軟件工程化思想和方法,總體上是 采用結(jié)構(gòu)化生命法進行系統(tǒng)分析和設(shè)計的,而系統(tǒng)實現(xiàn)等步驟則采用了原型法和面 對對象的方法。關(guān)鍵詞關(guān)鍵詞:C#程序設(shè)計語言, SQL SERVER 2000,軟件工程太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日3目錄目錄 摘摘要要.2第第 1 1 章章 基礎(chǔ)理論知識基礎(chǔ)理論知識.51.1 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介.51.2 數(shù)據(jù)庫管理系統(tǒng).51.3 MICROSOFT VISUAL STUDIO 2005 簡介.61.4 C
5、#語言簡介.61.4.11.4.1 C#C#中中 OOPOOP 概述概述.61.4.21.4.2 面向?qū)ο蟮拿嫦驅(qū)ο蟮?C#C# 編程編程.81.4.31.4.3 接口與繼承接口與繼承.12第二章第二章 系統(tǒng)開發(fā)背景系統(tǒng)開發(fā)背景.14第三章第三章 需求分析需求分析.153.1 應(yīng)用需求分析.153.2 實際需求分析 .15第四章第四章 可行性分析可行性分析.164.1 環(huán)境可行性分析.164.2 面向?qū)ο蟮某绦蚍治?16第五章第五章 系統(tǒng)概要設(shè)計系統(tǒng)概要設(shè)計.175.1 模塊分析.175.1.15.1.1 功能模塊圖功能模塊圖.175.2 模塊分析.175.2.15.2.1 “圖書資料管理圖書
6、資料管理”模塊模塊.175.2.25.2.2 “學生資料管理學生資料管理”模塊模塊.185.2.35.2.3 “借還書操作借還書操作”模塊模塊.18第六章第六章 詳細設(shè)計詳細設(shè)計.186.1 設(shè)計創(chuàng)建數(shù)據(jù)庫.186.1.16.1.1 設(shè)計數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫.186.1.26.1.2 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫.196.2 創(chuàng)建系統(tǒng)主程序.226.3 創(chuàng)建系統(tǒng)常用類.226.3.16.3.1 創(chuàng)建創(chuàng)建“移動記錄工具欄移動記錄工具欄”類類.236.3.26.3.2 創(chuàng)建創(chuàng)建“命令按鈕工具欄命令按鈕工具欄”類類.236.4 創(chuàng)建登錄表單.236.4.16.4.1 系統(tǒng)主表單的功能系統(tǒng)主表單的功能.236.4
7、.26.4.2 創(chuàng)建系統(tǒng)主表單界面創(chuàng)建系統(tǒng)主表單界面.246.4.3.6.4.3. 新書入庫新書入庫.25太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日46.4.46.4.4 圖書借閱圖書借閱.266.4.56.4.5 圖書歸還圖書歸還.276.4.66.4.6 圖書信息查詢圖書信息查詢.286.4.76.4.7 圖書信息修改圖書信息修改.296.4.86.4.8 舊書銷毀舊書銷毀.306.4.96.4.9 圖書證的辦理及證件信息修改圖書證的辦理及證件信息修改.326.4.106.4.10 證件掛失與注銷證件掛失與注銷.326.4.116.4.11 圖書類別信息排行圖
8、書類別信息排行.336.4.126.4.12 庫存外借信息庫存外借信息.346.4.136.4.13 圖書借閱排行榜圖書借閱排行榜.35第七章第七章 結(jié)果分析結(jié)果分析.36項目學習心得體會項目學習心得體會.37結(jié)結(jié)束束語語.38致致謝謝.39太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日5第第 1 1 章章 基礎(chǔ)理論知識基礎(chǔ)理論知識1.11.1 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介在數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)之前,對開發(fā)數(shù)據(jù)庫的基本概念應(yīng)當了解,對數(shù)據(jù)庫的結(jié)構(gòu)、開發(fā)數(shù)據(jù)庫應(yīng)用程序的步驟、開發(fā)體系及方法都應(yīng)當有相當清晰的了解和認識。數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的目標是建立一個滿足
9、用戶長期需求的產(chǎn)品。開發(fā)的主要過程為:理解用戶的需求,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?shù)據(jù)庫設(shè)計。把設(shè)計轉(zhuǎn)變?yōu)閷嶋H的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應(yīng)用。數(shù)據(jù)庫技術(shù)在計算機軟件鄰域研究中一直是非常重要的主題,產(chǎn)生于 60 年代,40 多年來數(shù)據(jù)庫技術(shù)得到了迅速發(fā)展,并已形成較為完整的理論體系和一大批實用系統(tǒng)。并且,近年來,隨著 World Wide Web(WWW)的猛增及 Internet 技術(shù)的迅速發(fā)展,使得數(shù)據(jù)庫技術(shù)一時成為最熱門技術(shù)之一。1.21.2 數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。DBMS 是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對數(shù)
10、據(jù)庫的一切操作,包括定義、更新及各種控制,都是通過 DBMS 進行的。DBMS 總是基于某種數(shù)據(jù)模型,可以把 DBMS 看成是某種數(shù)據(jù)模型在計算機系統(tǒng)上的具體實現(xiàn)。根據(jù)數(shù)據(jù)模型的不同,DBMS 可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷?。SQL Server 2000 就是一種關(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)狀模型的最大判別是用關(guān)鍵碼而不是用指針導航數(shù)據(jù),表格簡單用戶易懂,編程時并不涉及存儲結(jié)構(gòu)
11、,訪問技術(shù)等細節(jié)。關(guān)系模型是數(shù)學化模型。SQL 語言是關(guān)系數(shù)據(jù)庫的標準化語言,已得到了廣泛的應(yīng)用。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日61.31.3 MicrosoftMicrosoft VisualVisual StudioStudio 20052005 簡介簡介2005 年,微軟發(fā)布了 Visual Studio 2005。.NET 字眼從各種語言的名字中被抹去,但是這個版本的 Visual Studio 仍然還是面向 .NET 框架的(版本 2.0) 。它同時也能開發(fā)跨平臺的應(yīng)用程序,如開發(fā)使用微軟操作系統(tǒng)的手機的程序等??傮w來說是一個非常龐大的軟件,
12、甚至包含代碼測試功能。這個版本的 Visual Studio 包含有眾多版本,分別面向不同的開發(fā)角色。同時還永久提供免費的 Visual Studio Express 版本運行庫實際上在組件的運行時和開發(fā)時操作中都起到很大的作用,盡管名稱中沒有體現(xiàn)這個意思。在組件運行時,運行庫除了負責滿足此組件在其他組件上可能具有的依賴項外,還負責管理內(nèi)存分配、啟動和停止線程和進程,以及強制執(zhí)行安全策略。在開發(fā)時,運行庫的作用稍有變化;由于做了大量的自動處理工作(如內(nèi)存管理),運行庫使開發(fā)人員的操作非常簡單,尤其是與今天的 COM 相比。特別是反射等功能顯著減少了開發(fā)人員為將業(yè)務(wù)邏輯轉(zhuǎn)變?yōu)榭芍赜媒M件而必須編寫
13、的代碼量。1.41.4 C#C#語言簡介語言簡介C#(C Sharp)是微軟于 2000 年提出的一種源于 C+、類似于 Java 的面向?qū)ο缶幊陶Z言,適合于分布式環(huán)境中的組件開發(fā)。C# 是專門為.NET 設(shè)計的,也是.NET 編程的首選語言。1.4.11.4.1 C#C#中中 OOPOOP 概述概述程序設(shè)計語言,在思想上發(fā)展很快,在技術(shù)上也是不斷創(chuàng)新。經(jīng)歷了手工操作(控制面板) 、機器語言、匯編語言、宏匯編語言、高級語言和第 4 代語言等多個階段。OOP 只是在高級程序設(shè)計語言中,流行的多種編程技術(shù)之一。1基本特征面向?qū)ο缶幊痰娜齻€基本特征是:封裝(encapsulation) 是對問題的抽
14、象,以達到信息隱藏的目的。通過類和對象,將屬性(數(shù)據(jù)/變量)和方法(操作/函數(shù))封裝在一個黑箱內(nèi),太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日7將細節(jié)隱藏起來。既可以保護數(shù)據(jù)不被他人惡意或大意地修改,又能防止其他程序員編寫高耦合度的代碼,還方便了今后對對象內(nèi)部的修改和升級。繼承(inheritance) 利用問題和事物的相似性,通過類的(多層)繼承機制,可以達到減少軟件開發(fā)難度和重用已有對象的屬性和方法之目的。多態(tài)(polymorphism) 同一操作或響應(yīng),可以同時針對多個可選的類型和對象,并且能夠自動在它們中間選擇最合適的來進行。多態(tài)可以分為:編譯時多態(tài):包括函
15、數(shù)和運算符的重載(overload) ,通過早期的靜態(tài)綁定(binding)來實現(xiàn)。運行時多態(tài):通過繼承結(jié)合晚期動態(tài)綁定來實現(xiàn)用同一基類的指針,可以訪問各個不同派生類中的同名方法和函數(shù)。2基本概念面向?qū)ο缶幊痰幕靖拍睿愃频母拍疃?、表達不夠準確、各處的用法各異):抽象(abstraction) 一個問題的本質(zhì)特征。忽略一個對象的細節(jié),致力于一般的合適級別的程序能力。抽象是在事物的周圍繪制透明的盒子,是定義事物接口的行為。信息隱藏(information hiding) 限制外部對類屬性(數(shù)據(jù)成員)的訪問。封裝(encapsulation) 將某種保密和隱匿應(yīng)用到類中的數(shù)據(jù)和一些方法(函數(shù)或子
16、例程)上。封裝確保一個對象只能通過確定的渠道(即類的公用方法)才可被修改。封裝意味著將數(shù)據(jù)及相關(guān)函數(shù)打包到一個單一的單元(類)中。每個對象暴露一個接口(公用方法) ,規(guī)定其他對象可以如何讀取或修改它。類(class) 問題的抽象,對象的模版,接口的實現(xiàn)。例如 int 是整數(shù)的模版、CPoint 是點的模版。對象(object) 問題中的事物,類的實例(變量) ,擁有數(shù)據(jù)和功能。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日8若 int i; CPoint p; 則 i 是 int 的實例變量,p 是 CPoint 的實例對象。實例(instance) 一個對象,是某個
17、類的示例。實例化(intantiate) 由類定義創(chuàng)建對象。繼承(inheritance) 創(chuàng)建子類的機制,一種“is a”或“is like”關(guān)系,形成類層次結(jié)構(gòu)。是 OOP 中對象重用的核心概念。子類(subclass) 繼承自另一個類的派生類(derived class) 。超類(superclass 父類) 被另一個類繼承的基類(base class) 。虛函數(shù)(virtual function) 可以在子類中被覆蓋(override)的函數(shù)。純虛函數(shù)(pure virtual function) 只有聲明沒有定義的函數(shù),必須在派生類中被覆蓋。抽象類(abstract class) 至
18、少包含一個純虛函數(shù)的類,不能被實例化。具體類(concrete class) 可以實例化的類,不包含純虛函數(shù)。接口(interface) 純抽象的類,類的模版。接口中的所有的方法(成員函數(shù))都只有聲明,沒有定義(都是純虛函數(shù)) 。必須在接口的派生類中,實現(xiàn)接口的全部方法。接口可以看成是一個,定義了一套內(nèi)部行為的,若干操作特征標記的集合。 (在 C+中,也把類的公用成員函數(shù)叫做接口) 。屬性(attribute) 類和接口中的數(shù)據(jù)信息,又叫數(shù)據(jù)成員(data member)或成員變量(member variable) 。屬性是類知道的事物。方法(method) 類操作的實現(xiàn),又叫成員函數(shù)(mem
19、ber function) 。方法是類要做的事情。 (在 C+中,也把虛函數(shù)叫做方法) 。重載(overload) 一個類中的,參數(shù)的數(shù)目、類型或排列順序不同的多個同名方法(成員函數(shù)) 。覆蓋(override) 在子類中重新定義(與父類中的定義有區(qū)別的)屬性和方法。持久化(persistence) 將對象存入永久存儲中(如文件、數(shù)據(jù)庫等) 。持久對象(persistent object) 存入永久存儲的對象。1.4.21.4.2 面向?qū)ο蟮拿嫦驅(qū)ο蟮?C#C# 編程編程1類類類型定義包含數(shù)據(jù)成員、函數(shù)成員和嵌套類型的數(shù)據(jù)結(jié)構(gòu),其中數(shù)據(jù)成員包太原理工大學高等教育自學考試 學生:鄭莉 2010
20、年 5 月 10 日9括常量和字段,函數(shù)成員包括方法、屬性、事件、索引器、運算符、實例構(gòu)造函數(shù)、析構(gòu)函數(shù)和靜態(tài)構(gòu)造函數(shù)。類類型支持繼承,繼承是派生類可用來擴展和專門化基類的一種機制。功能與 C+/CLI 的可見性說明符類似,只是增加了 static 修飾符。partial(分部的)用于定義分部類、結(jié)構(gòu)和接口等對象類型,即將它們的定義分成多個部分,保存到多個代碼文件中。這是 C# 2.0 新引進的功能,用于解決大型對象類型的定義問題,因為 C# 不支持類體之外的方法和函數(shù)體定義。(1)訪問修飾符類成員可以有如下訪問修飾符(access modifiers):public(公用的)訪問無限制。pr
21、otected(保護的)只可被包含類(containing class)或其派生的類型訪問。internal(內(nèi)部的)只能被此程序訪問。protected internal(保護內(nèi)部的)只能被此程序或其包含類所派生的類型訪問。private(私有的)只能被其包含類訪問,為默認的。C# 類的 public、protected、private 等成員修飾符,每次只能修飾一個成員,直接位于成員聲明的開始處,而且沒有冒號分隔符。而不是像 C+那樣,一個修飾符可以修飾位于其后(直到下一個修飾符為止)的若干成員。(2)數(shù)據(jù)成員類的數(shù)據(jù)成員(data member)有: 屬性 常量修飾符 const 標識符
22、 = 常量表達式 , ;其中,常量修飾符有:new、public、protected、internal、private 及它們的有效組合。類的數(shù)據(jù)成員可以是靜態(tài)數(shù)據(jù)(使用了 static 修飾符) ,也可以是實例數(shù)據(jù)(未使用 static 修飾符) 。靜態(tài)數(shù)據(jù)為類的所有實例對象所共有,而實例數(shù)據(jù)則每個實例對象都自己的副本。常量默認是(總是)靜態(tài)的。字段還可以是只讀的(使用了 readonly 關(guān)鍵字,這是 C# 新增的)和易變的(使用了 volatile 關(guān)鍵字,字段值一般位于 CPU 中的寄存器中,高效但是有效期短太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日10暫
23、) 。(3)函數(shù)成員類的函數(shù)成員(function member)有:屬性(property)提供對對象或類的特性(characteristic)進行訪問的成員。聲明格式為:其中,屬性修飾符與方法修飾符相同,訪問修飾符有protected、internal、private、protected internal 和 internal protected,與類成員的普通訪問修飾符相比,沒有 public、多了 internal protected(內(nèi)部保護的) 。事件(event)定義該類可生成的通知(notifications) 。在發(fā)生某些行為時,可讓對象通知程序??蛻舫绦蚩梢哉{(diào)用事件處理程序
24、代碼來響應(yīng)該事件。聲明格式為:其中,事件修飾符與方法修飾符相同。索引器(indexer)允許對象像數(shù)組一樣被索引的一種成員。聲明格式為:其中,索引器修飾符與方法修飾符類似,只是少了 static。用戶定義的運算符(operator)運算符重載函數(shù)。聲明格式為:構(gòu)造函數(shù)(constructor)包括實例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù)。實例構(gòu)造函數(shù)(instance constructor)實現(xiàn)初始化一個類實例所需的行為,會在創(chuàng)建每個類實例時被系統(tǒng)調(diào)用。注意:因為 C# 會自動給字段初始化,所以構(gòu)造函數(shù)在 C# 中的作用沒有在 C+的大。格式為:類型名(參數(shù)列表);注意:即使調(diào)用沒有任何參數(shù)的默認構(gòu)造函數(shù)
25、,也不能省去后面的圓括號“()” ,不然是語法錯誤。例如:A a = new A();靜態(tài)構(gòu)造函數(shù)(static constructor)實現(xiàn)初始化一個類所需的行為,會在程序裝入時被系統(tǒng)調(diào)用。為類編寫無參數(shù)的具體構(gòu)造函數(shù)是 C# 的一個新特征,主要用于類的靜態(tài)字段或?qū)傩缘倪\行時初始化。格式為:static 類型名(參數(shù)列表);太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日11終結(jié)器(finalizer)在 C# 的舊版本中叫析構(gòu)函數(shù)(destructor) ,但由于引用類型的對象是位于具有垃圾內(nèi)存自動回收功能的 CLR 堆上,所以C# 中的析構(gòu)函數(shù)的功能與 C+的很不
26、一樣。為了與 C+的析構(gòu)函數(shù)有所區(qū)別,在 C# 的新版本中,改叫終結(jié)器。格式(與 C+的析構(gòu)函數(shù)相同)為:類型名();。2結(jié)構(gòu)C# 中的結(jié)構(gòu)(struct)與 C+中的類似,也可以封裝數(shù)據(jù)和函數(shù)(屬性和行為),是一種輕量級的類。但是它與 C# 的(位于 CLR 堆中的)類(為引用類型)不同,它是一種(位于局部棧中的)值類型。1)結(jié)構(gòu)與類的區(qū)別C# 中的結(jié)構(gòu)與類的區(qū)別有:結(jié)構(gòu)是值類型,而類是引用類型。結(jié)構(gòu)是密封的(sealed) ,因此不能被繼承。結(jié)構(gòu)不能繼承類和其他的結(jié)構(gòu)。結(jié)構(gòu)隱式地繼承了 System.ValueType 類型。結(jié)構(gòu)的(無參數(shù))默認構(gòu)造函數(shù)不能被自定義的構(gòu)造函數(shù)取代。結(jié)構(gòu)的自
27、定義的構(gòu)造函數(shù),必須初始化結(jié)構(gòu)中全部成員的值。結(jié)構(gòu)沒有析構(gòu)函數(shù)。不允許初始化結(jié)構(gòu)的字段,但是可以初始化結(jié)構(gòu)的常量成員。2)結(jié)構(gòu)聲明結(jié)構(gòu)的完整聲明格式為:其中,結(jié)構(gòu)的修飾符與枚舉修飾符相同:new、public、protected、internal、private,但是與類的有所不同:因為 C# 的結(jié)構(gòu)不支持繼承,所以沒有類的 sealed 和 abstract 修飾符;也沒有 static 修飾符;還與C+一樣,結(jié)構(gòu)的默認修飾符為 public(類的默認修飾符為 private) 。結(jié)構(gòu)成員聲明與類的基本相同,只是沒有 finalizer-declaration(終結(jié)器聲明,即析構(gòu)函數(shù)定義)
28、。C# 的結(jié)構(gòu)和類一樣,其 public、protected、private 等成員修飾符,每次只能修飾一個成員,也是直接位于成員聲明的開始處,而且也沒有冒號分隔符。而不是像太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日12C+那樣,一個修飾符可以修飾位于其后(直到下一個修飾符為止)的若干成員。3分部類和靜態(tài)類分部類和靜態(tài)類都是 C# 所特有的,而且都是 C# 2.0 版新增加的。前者允許將一個類、結(jié)構(gòu)或接口的定義,放到多個文件中;后者則是僅包含靜態(tài)成員的類。1)分部類分部類和結(jié)構(gòu)是在類和結(jié)構(gòu)的聲明中,使用了 partial 修飾符的類和結(jié)構(gòu)。位于不同文件中的同一個分
29、部類,必須位于同一個命名空間或包含類型(對嵌入式分部類)之中,而且在所有類修飾符必須完全一致。對泛型類,還要求聲明中的類型參數(shù)和對類型參數(shù)的約束也完全一致。但是類的屬性、基類和實現(xiàn)接口的列表卻可以不同。另外,分部類也可以用作嵌套類,不過其包含類必須也是分部類。編譯時,編譯器會合并位于不同文件中的同一個分部類的 XML 注釋、屬性、基類、接口和成員。2)靜態(tài)類靜態(tài)類是在類的聲明中,使用了 static 修飾符的類。靜態(tài)類中只能包含靜態(tài)成員,可以用靜態(tài)構(gòu)造函數(shù)來初始化這些靜態(tài)成員。靜態(tài)類是密封的(不能派生其他類) ,靜態(tài)類不能被實例化,也不能包含實例構(gòu)造函數(shù)。靜態(tài)類一般用于定義公用的常數(shù)和方法(如
30、.NET 中的 Math 類) ,使用時不需要創(chuàng)建實例,直接用“類名.字段”或“類名.方法”即可。例如:1.4.31.4.3 接口與繼承接口與繼承繼承(inheritance)是面向?qū)ο蟮幕咎卣?,所有?C# 類和結(jié)構(gòu)都是直接或間接地從類 Object 派生的。C# 中沒有明確指出基類的類,都以 Object 作為其默認基類。C# 中的結(jié)構(gòu)不支持繼承,但是 C# 支持類的單一繼承(single inheritance) ,多重繼承的問題(與 Java 一樣)需通過接口來解決。1接口接口(interface,界面)的概念來源于組件編程的思想。接口定義統(tǒng)一的公用方法的原型,但是不包含方法的具體實
31、現(xiàn)代碼,方法體(代碼)由實現(xiàn)接口的類來定義(編寫) 。所以接口定義的是一種契約(contract) ,實現(xiàn)該接口的類則遵守(adhere)此契約。接口相當于組件的界面,供使用組件的用戶查詢和調(diào)用,而實現(xiàn)接口的類則是組件的編碼模塊本身。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日13在 C# 中,一個接口可以繼承自多個接口,一個類也可以實現(xiàn)多個接口。實現(xiàn)某個接口的類,必須實現(xiàn)該接口中的所有方法。2繼承的種類C# 中的繼承有兩種類型:實現(xiàn)繼承(類繼承)派生類型繼承了基類型的所有成員,包括方法、屬性、事件和索引的實現(xiàn)代碼,派生類既可以直接調(diào)用基類的各種函數(shù)成員的實現(xiàn)代碼,
32、也可以自己編寫代碼來覆蓋或重寫它們,還可以為派生類添加新的數(shù)據(jù)和函數(shù)成員。接口繼承(非實現(xiàn)繼承)派生類型只繼承了基類型中的函數(shù)簽名(signature of a function) ,包括函數(shù)名、類型參數(shù)的個數(shù)、每個形參(formal parameter)的類型和種類(kind,值、引用、輸出) ,從左到右的順序,但是不包括函數(shù)的返回類型、參數(shù)名稱、類型參數(shù)的名稱、以及可對最右邊的參數(shù)指定的參數(shù)修飾符。而沒有繼承基類型中的實現(xiàn)代碼。接口繼承主要用于指定派生類應(yīng)該具有什么特性和功能。接口繼承相當于接口的實現(xiàn)。C+只支持實現(xiàn)繼承,VB 則只支持接口繼承,C+/CLI、Java 和 C# 都既支持實
33、現(xiàn)繼承,也支持接口繼承,所以非常適用于編寫基于組件的分布式軟件。C# 中的結(jié)構(gòu),支持(多重)接口繼承,但是不支持實現(xiàn)繼承。即,你可以在結(jié)構(gòu)中實現(xiàn)多個接口中定義的函數(shù)成員,但是你卻不能從類或結(jié)構(gòu)來派生新的結(jié)構(gòu),也不能從結(jié)構(gòu)派生新的類。不過,用戶定義的結(jié)構(gòu),總是自動派生于System.ValueType 抽象類,還可以派生于(實現(xiàn))多個接口。C# 中的類,則支持單一實現(xiàn)繼承和多重接口繼承。3方法的繼承C# 中方法的繼承關(guān)系非常多樣,除了傳統(tǒng) C+的虛函數(shù)(C# 增加了 override修飾符)和純虛函數(shù)(即 C# 的 abstract 抽象函數(shù))外,還增加了隱藏方法(new) 、密封方法(seal
34、ed)和基類方法的調(diào)用指令(base.方法名)等諸多新方式。1)虛方法 override虛函數(shù)是面向?qū)ο缶幊讨袑崿F(xiàn)運行時多態(tài)性的標準途徑,而編譯時的多態(tài)性則是由具有同樣函數(shù)名,但是函數(shù)簽名不同的多個重載(overload)函數(shù)來實現(xiàn)的。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日14與 C+不同的是,在 C# 中重寫基類的虛方法時,必須使用 C# 特有的重寫修飾符 override(覆蓋) 。2)隱藏方法 new在 C+中,不需要添加任何修飾符,就可以任意重載或覆蓋基類的虛函數(shù)和非虛函數(shù),但是在 C# 中,這樣做會得到一個編譯警告。目的是,為了避免程序員的筆誤,也為
35、了適應(yīng)代碼的維護與升級。解決辦法是,上面介紹過的使用 override 修飾符來明確重載基類的虛方法,以及使用 new 修飾符來顯式隱藏(覆蓋)基類中具有同樣簽名的(非虛)方法。第二章 系統(tǒng)開發(fā)背景當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復(fù)雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機進行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好圖書館信息而設(shè)計的。圖書館作為一種信
36、息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計算機進行信息管理。根據(jù)調(diào)查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況(如借書天數(shù)、超過限定借書時間的天數(shù))的統(tǒng)計和核實等往往采用對借書卡的人工檢查進行,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計算、手抄進行。數(shù)據(jù)信息處理工作量大,容易出錯;由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng)、規(guī)范的信息管理手段。盡管有的圖書館有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。數(shù)據(jù)
37、處理手工操作,工作量大,出錯率高,出錯后不易更改。圖書館采取手工太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日15方式對圖書借閱情況進行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當時對它比較清楚,時間一長,如再要進行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費時、費力。如要對很長時間以前的圖書進行更改就更加困難了?;谶@些問題,我認為有必要建立一個圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準確性,能夠及時
38、、準確、有效的查詢和修改圖書情況。第三章 需求分析3.13.1 應(yīng)用需求分析應(yīng)用需求分析圖書管理系統(tǒng)需要滿足來自三方面的需求,這三個方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個人借閱情況及個人信息的修改;圖書館工作人員對圖書借閱者的借閱及還書要求進行操作,同時形成借書或還書報表給借閱者查看確認;圖書館管理人員的功能最為復(fù)雜,包括對工作人員、圖書借閱者、圖書進行管理和維護及系統(tǒng)狀態(tài)的查看、維護并生成催還圖書報表。3.23.2 實際需求分析實際需求分析圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據(jù)本人借書證號和密碼登錄系統(tǒng),還可以進行本人
39、借書情況的查詢和維護部分個人信息。一般情況下,圖書借閱者只應(yīng)該查詢和維護本人的借書情況和個人信息,若查詢和維護其他借閱者的借書情況和個人信息,就要知道其他圖書借閱者的借書證號和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖書借閱者的要求,還保護了圖書借閱者的個人隱私。圖書館工作人員有修改圖書借閱者借書和還書記錄的權(quán)限,所以需對工作人員太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日16登陸本模塊進行更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或是還書記錄,并打印生成相應(yīng)的報表給用戶查看和確認。圖書館管理人員功能的信息量大,數(shù)據(jù)安全性和保密性要
40、求最高。本功能實現(xiàn)對圖書信息、借閱者信息、總體借閱情況信息的管理和統(tǒng)計、工作人員和管理人員信息查看及維護。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統(tǒng)計圖書的基本信息;瀏覽、查詢、統(tǒng)計、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統(tǒng)計圖書館的借閱信息。 第四章第四章 可行性分析可行性分析4.14.1 環(huán)境可行性分析環(huán)境可行性分析由于本系統(tǒng)管理的對象單一,都是學生,且每個數(shù)據(jù)內(nèi)容具有較強的關(guān)聯(lián)性,涉及的計算過程不是很復(fù)雜。因此,比較適合于采用數(shù)據(jù)庫管理。在技術(shù)難度方面,由于有指導老師的指導和相關(guān)參考文獻,特別是網(wǎng)上資料,特別是參考其它程序的功能,因此完全可以實現(xiàn)。本系統(tǒng)的設(shè)計是在 Wi
41、ndows XPXP 操作系統(tǒng)環(huán)境下,使用 Visual Studio.NET 2003 中文版開發(fā)成功的。Visual Studio 具有以下特點:4.24.2 面向?qū)ο蟮某绦蛎嫦驅(qū)ο蟮某绦蚍治龇治?、面向?qū)ο笤O(shè)計不再是單純的從代碼的第一行一直編到最后一行,而是考慮如何創(chuàng)建類和對象,利用類和對象來簡化程序設(shè)計,并提供代碼的封裝和可重用性,便于程序的維護與擴展。2、所謂的對象是一種抽象的名稱,用來對應(yīng)實現(xiàn)世界存在的“東西” 。一個窗口、一個按鈕、一個菜單都可視為一個對象,而按鈕對象、菜單對象、又會出現(xiàn)在窗口對象中,因此按鈕對象、菜單對象便是窗口的組件之一。對象內(nèi)部的數(shù)據(jù)是不能隨意更改的,必須由
42、外部向其傳遞信息,再由對象按其方法加以處理。用戶無需太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日17知道其任何細節(jié),操作是封閉的,對象之間能通過函數(shù)調(diào)用相互通信。3、類可視為一個產(chǎn)品模具、一個模塊。在面向?qū)ο笤O(shè)計中,類是對象的原型,是對象的制作器。類的概念是面向?qū)ο蟪绦蛟O(shè)計最重要的特征。所謂類,是指由數(shù)據(jù)結(jié)構(gòu)及其相關(guān)操作所形成的集合,描述該類任一對象的共同的行為特征,是對一組性質(zhì)相同的對象的程序描述,概括了對象的共同性質(zhì)和數(shù)據(jù)。4、面向?qū)ο笤O(shè)計的核心是類的設(shè)計。例如:可以定義一個“成績查詢”類,該類中可以定義查詢的姓名、學號、班級等信息,則以此類為原型可以設(shè)計出眾多
43、的“成績查詢”類的對象實例,這些實體都具有類中所定義的特征。第五章第五章 系統(tǒng)概要設(shè)計系統(tǒng)概要設(shè)計5.15.1 模塊分析模塊分析5.1.15.1.1 功能模塊圖功能模塊圖 太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日18圖示 3.2.15.25.2 模塊分析模塊分析5.2.15.2.1 “圖書資料管理圖書資料管理”模塊模塊“圖書資料管理”模塊主要實現(xiàn)圖書資料的分條瀏覽、添加、修改、刪除、查詢和打印功能。在表單的“書籍資料”頁框中可以通過“移動記錄工具欄”分條查看系統(tǒng)內(nèi)所有的圖書的詳細資料,包括圖書的名稱、類別、作者、出版社、購買日期等。單擊“命令按鈕工具欄”中的按鈕
44、可以對 “書籍資料”頁框中的記錄進行相應(yīng)的操作。5.2.25.2.2 “學生資料管理學生資料管理”模塊模塊“學生資料管理”模塊主要實現(xiàn)學生資料的分條瀏覽、添加、修改、刪除、查詢和打印功能。在表單的“學生資料”頁框中可以通過“移動記錄工具欄”分條查看系統(tǒng)內(nèi)所有的學生詳細資料,包括學生姓名、性別、系別、班級等資料。單擊“命令按鈕工具欄”中的按鈕可以對“學生資料”頁框中的記錄進行相應(yīng)的操作。5.2.35.2.3 “借還書操作借還書操作”模塊模塊“借還書操作”模塊主要實現(xiàn)讀者借書記錄的查看、借還書操作、圖書借閱排行榜、查看逾期未歸還圖書和記錄打印等功能。讀者借書記錄查看功能可以查看所有的借書記錄 ,也
45、可以只查看目前尚未歸還的借書記錄。在“讀者借書記錄”表單中單擊“借書”按鈕 ,在打開的“輸入”表單中 ,輸入要借出的圖書編號 ,如果該圖書在館中而且該讀者還能借書 , 則借書成功?!白x者借書記錄”表單中單擊“還書”按鈕 , 在打開的“輸入”表單中輸入要歸還的圖書的圖書編號 ,如果該圖書是被當前讀者借出 ,則還書成功。當表單中顯示的是讀者未歸還的圖書列表時 , 在列出借書記錄的表格中雙擊要歸還的圖書的“圖書編號”欄即可將此圖書還入。在“讀者借書記錄”表單中 , 單擊“過期”按鈕 , 可以查看系統(tǒng)內(nèi)到了歸還日期而未歸還的圖書的借閱記錄。在“讀者借書記錄”表單中 ,單擊“排行”按鈕 ,可以查看系統(tǒng)內(nèi)
46、借閱次數(shù)在所有圖書內(nèi)排行前 10 名的圖書的列表。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日19第六章第六章 詳細設(shè)計詳細設(shè)計6.16.1 設(shè)計創(chuàng)建數(shù)據(jù)庫設(shè)計創(chuàng)建數(shù)據(jù)庫6.1.16.1.1 設(shè)計數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫本系統(tǒng)實現(xiàn)了系統(tǒng)登錄功能 , 而系統(tǒng)登錄需要賬號和密碼 , 這就需要 創(chuàng)建一個“系統(tǒng)帳號”(Accounts) 數(shù)據(jù)表 , 用來存儲系統(tǒng)登錄用的賬號和密碼。本系統(tǒng)要實現(xiàn)圖書資料和學生資料的管理 , 所以需要創(chuàng)建 “學生信息” (Student)數(shù)據(jù)表和“圖書信息 ”(Book) 數(shù)據(jù)表。 “學生信息 ”(Student) 數(shù)據(jù)表中包含了學生的“系別”信息 ,
47、 在本系統(tǒng)中為了簡化系別的管理 , 另外創(chuàng)建了一個“系別”(Xibie)數(shù)據(jù)表用來存儲系別的信息 , 在“學生信息”(Student) 數(shù)據(jù)表中只存儲系別的編號。由于系統(tǒng)要實現(xiàn)讀者借還書功能、還要實現(xiàn)讀者借還書記錄的查看 ,所以還需創(chuàng)建一個“讀者借書記錄 ”(JyRec) 數(shù)據(jù)表來保存讀者的借閱記錄。6.1.26.1.2 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫“圖書借閱管理系統(tǒng)”作為一個完整的數(shù)據(jù)庫管理系統(tǒng) , 在創(chuàng)建階段利用項目管理器可以更好組織管理各種格式的文件 , 因此首先需要創(chuàng)建一個項目 , 然后在項目管理器創(chuàng)建其他格式的文件。在 VFP 主窗口中選擇“文件”菜單下“新建”子菜單 , 在打開的“新建”對
48、話框的“文件類型“區(qū)域中選中”項目”,然后單擊右側(cè)的”新建文件”按鈕,打開”創(chuàng)建“對話框中的”項目文件“文本框中輸入項目名稱 , 在此輸入 Tushu”,單擊“保存”按鈕即創(chuàng)建了一個項目。在項目管理器的“數(shù)據(jù)”選項卡中選中“數(shù)據(jù)庫”單擊右側(cè)的“新建”按鈕,在彈出的“新建數(shù)據(jù)庫”對話框中單擊“新建數(shù)據(jù)庫”, 在彈出的“創(chuàng)建”對話框的“數(shù)據(jù)庫名”文本框中輸入數(shù)據(jù)庫的名稱 , 在此輸入“Tushu”作為數(shù)據(jù)庫名 , 單擊“保存“按鈕即創(chuàng)建了一個空的數(shù)據(jù)庫。在項目管理器的“數(shù)據(jù)”選項卡中打開剛才創(chuàng)建的“Tushu”數(shù)據(jù)庫的目錄樹,選中“數(shù)據(jù)表”,單擊右側(cè)的“新建”按鈕即可開始數(shù)據(jù)表的創(chuàng)建。系統(tǒng)關(guān)系圖如
49、下圖所示太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日20圖示 4.1.2本系統(tǒng)中要用到的數(shù)據(jù)表的字段的屬性設(shè)置分別設(shè)置如下?!跋到y(tǒng)賬號”(圖書卡號) 數(shù)據(jù)表的宇段屬性設(shè)置如表 1 所示。表 1“圖書卡號” (LentCardType)數(shù)據(jù)表字段屬性設(shè)置字段名數(shù)據(jù)類型說明帳號字符型字段寬度 20,主索引字段,不能為空姓名字符型字段寬度 20密碼字符型字段寬度 20創(chuàng)建“系統(tǒng)賬號”(圖書卡號) 數(shù)據(jù)表后向數(shù)據(jù)庫中添加一條記錄作為系統(tǒng)的默認帳號,該記錄的各字段的值如下 :“cyr”,“cyr”,“楚雅茹”。“學生信息”(BookInformation) 數(shù)據(jù)表各字段的屬性
50、設(shè)置如表 2 所示。表 2“圖書類型” ( BookInformation)數(shù)據(jù)表字段屬性設(shè)置圖書 Id數(shù)據(jù)類型說明圖書編號字符型字段寬度 6,主索引字段,輸入掩碼為“999999”太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日21書名字符型字段寬度 20作者名字符型字段寬度 20出版社字符型字段寬度 4,為普通索引出版日期字符型字段寬度 10圖書價格字符型字段寬度 12,輸入掩碼為“999#9999999”郵件字符型字段寬度 30借出次數(shù)數(shù)據(jù)類型整數(shù)據(jù);圖書狀態(tài)字符型字段寬度 10“系別信息” (圖書類別)數(shù)據(jù)表各字段的屬性設(shè)置如表 3 所示表 3“圖書類別” (
51、圖書類別)數(shù)據(jù)表字段屬性設(shè)置類型編號字符型字段寬度 4,主索引字段,輸入掩碼為“9999”類型名稱字符型字段寬度 20“圖書信息” (Book)數(shù)據(jù)表各字段的屬性設(shè)置如表 4 所示表 4“圖書信息” (Tushu)數(shù)據(jù)表字段屬性設(shè)置字段名數(shù)據(jù)類型說明圖書編號字符型字段寬度 6,主索引字段,輸入掩碼為“AA9999”圖書類別字符型字段寬度 10圖書名稱字符型字段寬度 40圖書作者字符型字段寬度 20出版社字符型字段寬度 40購買日期日期型字段寬度 8購買價格貨幣型字段寬度 8借閱次數(shù)數(shù)值型字段寬度 4,默認值 0是否借出邏輯型字段寬度 1,默認值“.F.”對“圖書信息” (Book)數(shù)據(jù)表的字段
52、屬性設(shè)置需要說明的是“借閱次數(shù)”和“是否借出”字段的默認值一定要設(shè)置,因為對于新添加的圖書,其一定是沒有被借出的,而且其借閱次數(shù)一定是 0,所以在表單中向數(shù)據(jù)表添加記錄時,這兩個字段應(yīng)該是不需要添加的,可以由默認值生成。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日22“讀者借書記錄” (JyRec)數(shù)據(jù)表的字段屬性如表 5 所示。表 5“讀者借書記錄” (ReaderInfor)數(shù)據(jù)表字段屬性設(shè)置字段名數(shù)據(jù)類型說明學號字符型字段寬度 6,普通索引字段,輸入掩碼為“999999”圖書編號字符型字段寬度 6,普通索引字段,輸入掩碼為“AA9999”借閱日期日期型字段寬度
53、 8歸還日期日期型字段寬度 8數(shù)據(jù)表之間的關(guān)系,將在具體表單的數(shù)據(jù)環(huán)境中設(shè)置。將“借書卡” (LentBookCard)數(shù)據(jù)表、 “借書卡類別” (LentCardType)數(shù)據(jù)表、 “圖書信息” (BookInformation)數(shù)據(jù)表、 “讀者借書記錄” (LentNoteInfor)數(shù)據(jù)表添加到表單的數(shù)據(jù)環(huán)境中,用主外鍵建立關(guān)聯(lián)。6.26.2 創(chuàng)建系統(tǒng)主程序創(chuàng)建系統(tǒng)主程序WinForm 是.Net 開發(fā)平臺中對 Windows Form 的一種稱謂。 .Net 為開發(fā)WinForm 的應(yīng)用程序提供了豐富的 Class Library(類庫) 。這些 WinForm 類庫支持 RAD(快速
54、應(yīng)用程序開發(fā) ),這些類庫被封裝在一個名稱空間之中,這個名稱空間就是 System.Windows.Forms。在此名稱空間中定義了許多類,在開發(fā)基于.Net 的 GUI 應(yīng)用程序的時候,就是通過繼承和擴展這些類才使得我們的程序有著多樣的用戶界面。將一個文件設(shè)為項目主文件的方法是在項目管理器中選中該文件 , 然后在右鍵快捷菜單中選擇“設(shè)為主文件”子菜單或者選擇“項目”菜單下“設(shè)為主文件”子菜單即可。一個文件設(shè)為項目的主文件后 , 該文件的將以粗體顯示LibraryLogin 程序的代碼為:(見附表)6.36.3 創(chuàng)建系統(tǒng)常用類創(chuàng)建系統(tǒng)常用類系統(tǒng)主表單中“學生資料”和“書籍資料”頁框控件中都需要
55、用到“移動記錄工具欄”和“命令按鈕工具欄”, 這兩個命令按鈕工具欄如果在表單中分別創(chuàng)建會太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日23使工作變得繁瑣,可以采用創(chuàng)建工具欄類 , 然后在表單中用實例化的方式來簡化工作。6.3.16.3.1 創(chuàng)建創(chuàng)建“移動記錄工具欄移動記錄工具欄”類類“移動記錄工具欄”類基于“CommandGroup”基類,存儲于“AdminButton”可視類庫中,命名為“MoveRecord”?!耙苿佑涗浌ぞ邫凇鳖惏ā笆子涗洝?、“上一個”、“下一個”和“末記錄”4 個按鈕,在表單中可以利用這 4 個按鈕定位數(shù)據(jù)表中的記錄指針。需要指出的是,在本系
56、統(tǒng)中當鼠標移動到按鈕上時,鼠標指針變?yōu)橐粋€特定指針,這就需要一個鼠標指定文件,在本系統(tǒng)中使用“H_point.cur”文件,將該鼠標指針文件放在系統(tǒng)的根目錄下,添加按鈕“MouseMove”事件如下:(見附表)6.3.26.3.2 創(chuàng)建創(chuàng)建“命令按鈕工具欄命令按鈕工具欄”類類與“移動記錄工具欄”類相同,為了改變鼠標停留在按鈕時的指針,還需添加按鈕的“MouseMove”事件,代碼與“移動記錄工具欄”類中的相同。6.46.4 創(chuàng)建登錄表單創(chuàng)建登錄表單 6.4.16.4.1 系統(tǒng)主表單的功能系統(tǒng)主表單的功能為了系統(tǒng)有安全,一般系統(tǒng)都設(shè)有登錄窗體,登錄該系統(tǒng)除了輸入正確的用戶名和密碼外,還必須選擇用
57、戶登錄的權(quán)限.不同權(quán)限的用戶登錄系統(tǒng)分別執(zhí)行不同有操作. 本系統(tǒng)登錄權(quán)限分為四類:圖書管理員:能夠?qū)D書進行增加,刪除,修改,查詢,以及圖書證件的查詢操作.證件管理員:能對圖書證件進行增加,刪除,修改,查詢操作等.普通管理員:能對圖書信息進行增,刪,改,查,并能對圖書證件進行增,刪,改,查.高級管理員:能執(zhí)行本系統(tǒng)全部功能.太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日24圖示 6.4.16.4.26.4.2 創(chuàng)建系統(tǒng)主表單界面創(chuàng)建系統(tǒng)主表單界面設(shè)計 Winform 父窗體,命名為“LibraryMainWindow” 。創(chuàng)建好的表單效果中有兩個頁框,其中“學生資料”
58、頁面效果如下圖所示。圖示 6.4.2太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日25圖書管理主窗體主窗體主要包括:標題欄:圖書管理系統(tǒng);菜單欄:圖書管理(新書入庫,圖書查詢,圖書借閱,圖書歸還,圖書信息修改,舊書銷毀),證件管理(新證辦理,證件信息修改,圖書證掛失、注銷) ,圖書預(yù)覽(熱門圖書排行) ,信息統(tǒng)計(庫存借出比例,類別信息統(tǒng)計) ,系統(tǒng)設(shè)置(用戶設(shè)置) ,幫助(關(guān)于窗體) 。工具欄:相當于工具欄的快捷方式,包括圖書信息(圖書查詢,圖書借閱,圖書歸還) ,修改信息(圖書修改,證件修改,添加代碼) ,新書入庫,新政辦理,證件掛失、注銷,舊書銷毀,借出比例,圖
59、書類別信息,用戶設(shè)置,窗體容器區(qū):存放子窗體;狀態(tài)欄(初始化信息,系統(tǒng)當前時間) ;6.4.3.6.4.3. 新書入庫新書入庫 當圖書館新進一批圖書時,管理員要通過該系統(tǒng)將所有圖書添加到系統(tǒng)數(shù)據(jù)庫中。為了保證系統(tǒng)的安全性和 健壯性,該系統(tǒng)的文本框。 使用設(shè)置掩碼控件限制用戶的輸入。從而保證系統(tǒng)的安全性。該窗體用 TabCotrol 控件將同類型的信息層疊在一個窗體以方便操作。如果用戶輸入有誤將給出提示,不得將錯誤信息插入數(shù)據(jù)庫??梢渣c擊重置按鈕清空文本框。以便重新輸入。如果用戶輸入正確無誤,單擊保存,將輸入的圖書信息插入庫存中。如果用戶要退出系統(tǒng),單擊退出按鈕,用戶還可以通過點擊 page 頁
60、查看其它頁面。也可以點擊下一頁按鈕跳到下一頁??丶械臄?shù)據(jù)處于可修改狀態(tài), “移動記錄工具欄”處于不可用狀態(tài), “命令按鈕工具欄”中除了“保存”和“取消”按鈕外其他按鈕都處于不可用狀態(tài), “借還書”按鈕處于可用狀態(tài), “書籍信息”頁面處于不可用狀態(tài)。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日26圖示 6.4.36.4.46.4.4 圖書借閱圖書借閱在“學生信息” (StuPage)被激活時,應(yīng)該將“學生信息” (Student)數(shù)據(jù)表所在工作區(qū)作為表單的當前工作區(qū),取消由其他表單設(shè)置的過慮條件,并且使頁面進入瀏覽狀態(tài)。添加“學生信息”頁面的 Activate 事件
61、代碼如下:(見附表)“學生信息”頁面中的“系別”組合框中選擇某一個系編號后,要在“名稱”欄顯示系統(tǒng)編號所代碼的系別名稱,由于在數(shù)據(jù)環(huán)境中將兩者做了關(guān)連,所以在選擇了某個系編號后只需要刷新表單即可。圖書借閱介紹:首先用戶先選定自己要借閱的圖書,然后通過管理員輸入用戶的卡號,然后要判斷用戶的卡號是否正確,如果不正確給出提示,其次判斷用戶的卡號是普通卡還是貴賓卡,是否能滿足用戶借閱圖書的數(shù)量。如果不能滿足用戶的借閱將給出提示。當用戶借閱圖書成功后,將更新圖書信息,用戶圖書證件性息。單擊退出將退出此窗體。單擊上一頁可以跳轉(zhuǎn)至圖書查詢。單擊下一頁可以跳至圖書歸還。 太原理工大學高等教育自學考試 學生:鄭
62、莉 2010 年 5 月 10 日27圖示 6.4.4 6.4.56.4.5 圖書歸還圖書歸還在“書籍信息” (BookPage)頁面被激活時,表單中的當前數(shù)據(jù)工作期應(yīng)該變?yōu)椤皥D書信息”數(shù)據(jù)表所在的工作期,將可能由其他表單對該數(shù)據(jù)表設(shè)置的過慮條件去掉,同時要使該頁面進入瀏覽狀態(tài)。用戶歸還圖書時,管理員先輸入圖書編號,點擊顯示圖書信息。顯示圖書的其他信息。然后輸入用戶的圖書證件號,點擊顯示圖書證件信息,顯示圖書證件的其他信息。檢查用戶信息無誤后,點擊還書。點擊還書后,系統(tǒng)將更改用戶的圖書卡的借閱信息。并修改圖書信;。上一頁跳至圖書借閱;下一頁跳至舊書銷毀;點擊退出將退出該窗體。單擊“還書”按鈕
63、,可以調(diào)用“輸入”表單用來輸入要歸還的圖書編號,如果該圖書由當前讀者借出,則還書成功,否則失敗。另外,當表單中的表格控件中顯示的是當前讀者的“已借出”圖書記錄時,可以通過雙擊列表中的某本書的“圖書編號”欄來快速還書。太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日28圖示 6.4.56.4.66.4.6 圖書信息查詢圖書信息查詢左邊采用樹控件顯示圖書信息當用戶單擊該數(shù)節(jié)點是將展開以下信息。如果用戶單擊圖書編號節(jié)點以及字節(jié)點后,單擊工具欄上對應(yīng)的按鈕將在表里顯示對應(yīng)的圖書信息。右邊的圖書信息表采用分頁技術(shù)將成千上百條信息分成多頁,管理員上一頁按鈕,下一頁按鈕,首頁按鈕,尾
64、頁按鈕,分別瀏覽圖書所有信息。左上角按鈕上一頁可以跳至圖書歸還,下一頁跳至舊書銷毀;退出-退出窗體。在對圖書信息查詢,為了能快速查詢所要顯示的圖書信息,設(shè)置了多個條件查詢,如按照作者信息查詢,按照出版社信息查詢,按照圖書名稱信息查詢,按照圖書類別信息查詢等條件,查詢顯示頁面為了美觀,采取了分頁功能,單擊上一頁,可以瀏覽上一頁的信息,單擊下一頁能瀏覽下一頁的信息,也可以直接瀏覽首頁和尾頁的信息。 太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日29圖示 6.4.66.4.76.4.7 圖書信息修改圖書信息修改圖書信息修改表采用分頁技術(shù)。通過單擊按鈕分別瀏覽圖書所有信息。并
65、且在文本框能顯示數(shù)據(jù)表的當前頁數(shù)和總頁數(shù)。在數(shù)據(jù)表可以執(zhí)行增加,刪除,修改等的批量更新。刷新按鈕可以將修改的最新信息顯示到表中。關(guān)閉按鈕退出該窗體圖書管理系統(tǒng)示例代碼:如下1.MessageBox.Show(您確定要修改該圖書信息嗎?, 系統(tǒng)提示, MessageBoxButtons.YesNo, MessageBoxIcon.Information)太原理工大學高等教育自學考試 學生:鄭莉 2010 年 5 月 10 日30圖示 6.4.76.4.86.4.8 舊書銷毀舊書銷毀 “書籍信息”頁面的查詢功能由“輸入查詢條件”表單和“圖書信息查詢結(jié)果”表單組成。圖書高級管理員在城需求下要銷毀一部
66、分舊書,按照多個條件進行查詢所有要銷毀的圖書信息,同樣也提供了分頁功能,單擊按鈕查詢,根據(jù)圖書編號查詢到要刪除的圖書,單擊銷毀按鈕即刪除該圖書。此“輸入查詢條件”表單也是用來向用戶收集查詢條件。單擊“過期”按鈕可以查看系統(tǒng)中的逾期未歸還的圖書的列表。單擊“排行”按鈕可以查看系統(tǒng)中借出次數(shù)最多的 10 本書的列表。 void btnDestroyBook_Click(object sender, EventArgs e) BookInformationModel objBookInformationmodel = new BookInformationModel(); objBookInformationmodel.BookId = this.txtOldBookID.Text.Trim().ToString(); string bookstatus = null; if (BookInformationBll.SelectBookstatus(objBookInformationmodel).TablesBooktype.Rows.Count 0) foreach (DataRow r
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。