畢業(yè)論文--圖書管理系統(tǒng)_第1頁
已閱讀1頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  圖書管理系統(tǒng)</b></p><p><b>  \</b></p><p>  學生姓名: 學生學號: </p><p>  年 級: 專 業(yè): 軟件技術</p><p>  指導教師: 職 稱: 講 師

2、</p><p><b>  2012年05月</b></p><p><b>  內 容 摘 要</b></p><p>  科研管理系統(tǒng)是針對我校日??蒲泄芾砉ぷ鞯木唧w要求,從科研成果管理、科研項目管理、科研經(jīng)費管理、科研機構及科研人員等方面進行建設的系統(tǒng)。</p><p>  隨著科研管理系統(tǒng)

3、數(shù)據(jù)日益增加,數(shù)據(jù)量的龐大,教師對數(shù)據(jù)查看的要求也隨之提高,尤其是報表方面,舊的報表已經(jīng)不能滿足教師的需求。為此,對科研系統(tǒng)進行改進,主要是報表數(shù)據(jù)顯示方面。本系統(tǒng)是在Windows XP下,采用ASP.NET\WEB技術和Microsoft SQL Server 2000數(shù)據(jù)庫,開發(fā)工具為Microsoft Visual Studio 2008,采用C#技術模擬Pet.Shop架構開發(fā)的一種系統(tǒng)。應用數(shù)據(jù)層基類 、數(shù)據(jù)層工廠

4、類、接口層 、接口實現(xiàn)層 、實體類 、業(yè)務邏輯層、表示層的分層體系結構。主要用了ASP.NET中的用戶自定義控件和UserControl類。</p><p>  關鍵字:C#;SQLserver2005; Pet.Shop架構;報表; 科研管理系統(tǒng)</p><p><b>  目 錄</b></p><p>

5、  中英文摘要 (I)</p><p><b>  1.引 言(1)</b></p><p>  2.可行性分析(1)</p><p>  2.1 可行性研究的前提(1)</p><p>  2.1.1 目的(1)</p><p>  2.1.2 條件(1)</p>&l

6、t;p>  2.1.3 決定可行性的主要因素(1)</p><p>  2.2 系統(tǒng)技術可行性分析(2)</p><p>  2.2.1開發(fā)環(huán)境的選擇(2)</p><p>  2.2.2 編程語言的選擇(4)</p><p>  2.2.3數(shù)據(jù)庫服務器的選擇(4)</p><p>  3.模塊分析及總

7、體設計(4)</p><p>  3.1模塊需求 (4)</p><p>  3.1.1系統(tǒng)結構分析(5)</p><p>  3.1.2功能描述(6)</p><p>  3.1.3功能模塊詳細描述(6)</p><p>  3.2系統(tǒng)開發(fā)工具 (6)</p><p>  3

8、.2.1系統(tǒng)開發(fā)所用技術(7)</p><p>  3.2.2運行環(huán)境(7)</p><p>  4.模塊開發(fā)設計(7)</p><p>  4.1開發(fā)框架的設計 (7)</p><p>  4.1.1模型設計(10)</p><p>  4.1.2控制器設計(11)</p><

9、p>  4.1.3視圖設計(11)</p><p>  4.2數(shù)據(jù)庫設計 (11)</p><p>  4.2.1數(shù)據(jù)庫表設計的準則(11)</p><p>  4.2.2數(shù)據(jù)庫表的設計(前臺)(11)</p><p>  5.系統(tǒng)設計(15)</p><p>  5.1首頁登錄界面(15)&l

10、t;/p><p>  5.2報表分析(16)</p><p>  5.3年度報表(18)</p><p>  5.3.1年度報表(18)</p><p>  5.3.2個人報表(27)</p><p>  5.3.3年度工作(32)</p><p><b>  6.總結(

11、21)</b></p><p><b>  致謝(33)</b></p><p><b>  參考文獻(34)</b></p><p><b>  1.引 言</b></p><p>  計算機是新技術革命的一支主力,也是推動社會向現(xiàn)代化邁進的活躍因素。計算機科

12、學與技術是第二次世界大戰(zhàn)以來發(fā)展最快、影響最為深遠的新興學科之一。計算機產(chǎn)業(yè)已在世界范圍內發(fā)展成為一種極富生命力的戰(zhàn)略產(chǎn)業(yè)。隨著社會的發(fā)展,計算機網(wǎng)絡日趨成熟,走進了我們的生活,成為我們生活的主流,同時也被廣泛應用于教學,科研,事業(yè)等各個方面。所謂科研管理系統(tǒng)就是針對日??蒲泄芾砉ぷ鞯木唧w要求而實現(xiàn)科研工作的網(wǎng)絡化管理的一種系統(tǒng),本系統(tǒng)的建設也是計算機網(wǎng)絡飛速發(fā)展給人們帶來方便的一種表現(xiàn)。</p><p>  本

13、系統(tǒng)模擬Pet.Shop框架開發(fā),在Microsoft Visual Studio 2005平臺下使用C#語言開發(fā)的,數(shù)據(jù)庫使用Microsoft SQL Server 2005。通過前用戶界面和后臺代碼的建設共同完成了科研成果管理、科研項目管理、科研經(jīng)費管理、科研機構及科研人員等模塊從而充分展示了科研管理系統(tǒng)所帶來的便利。</p><p><b>  2.可行性分析</b></p&g

14、t;<p><b>  可行性研究的前提</b></p><p><b>  目的</b></p><p>  盡可能在最短的時間內確定完成系統(tǒng)模塊,以便學校科研工作更加順利進行。</p><p><b>  條件</b></p><p>  現(xiàn)所具有的軟、硬件設

15、備如下:</p><p>  開發(fā)設備:PC機(CPU:Intel(R) Core(TM)2 CPU 4300 @1.80GHz (2 CPUs) ,內存:2046MB)</p><p>  開發(fā)環(huán)境:Windows XP</p><p>  開發(fā)軟件:Visual Studio 2008</p><p>  數(shù)據(jù)庫服務器:SQL Serve

16、r 2005</p><p>  其它輔助工具:Dreamweaver </p><p>  以上設備可以滿足本系統(tǒng)的開發(fā)。</p><p>  決定可行性的主要因素</p><p>  一個良好的科研管理系統(tǒng)可以幫助我??蒲泄ぷ鞯木W(wǎng)絡化管理。完成此系統(tǒng)有助于科研管理溝通平臺的構建,系統(tǒng)維護只要在后臺進行編輯,前臺的用戶界面操作就能很好地按一

17、定方式進行以達到你所要的效果。服務于學??蒲泄ぷ魅藛T的工作,具有較強的使用性。當然,系統(tǒng)的完整性離不開各模塊的完整性。</p><p><b>  系統(tǒng)技術可行性分析</b></p><p><b>  開發(fā)環(huán)境的選擇</b></p><p>  C#(讀做 "C sharp") 是微軟推出的一種基于.

18、NET框架的、面向對象的高級編程語言。C#由C語言和C++派生而來,繼承了其強大的性能,同時又以.NET 框架類庫作為基礎,擁有類似Visual Basic的快速開發(fā)能力。C#由安德斯·海爾斯伯格主持開發(fā),微軟在2000年發(fā)布了這種語言。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程.但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與CO

19、M(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡框架的主角. </p><p><b>  其特性:</b></p><p><b> ?。?)語言特性</b></p><p>  相對于C和C++,這個語言在許多方面進行了限制和增強:</p><p>  指針(Poin

20、ter)只能被用于不安全模式。大多數(shù)對象訪問通過安全的引用實現(xiàn),以避免無效的調用,并且有許多算法用于驗證溢出,指針只能用于調用值類型,以及受垃圾收集控制的托管對象。對象不能被顯式釋放,代替為當不存在被引用時通過垃圾回收器回收。只允許單一繼承(single inheritance),但是一個類可以實現(xiàn)多個接口(interfaces)。</p><p>  C#比C++更加類型安全。默認的安全轉換是隱含轉換,例如由短

21、整型轉換為長整型和從派生類轉換為基類。而接口布爾型同整型,及枚舉型同整型不允許隱含轉換,非空指針(通過引用相似對象)同用戶定義類型的隱含轉換必段被顯式的確定,不同于C++的復制構造函數(shù)。數(shù)組聲明語法不同("int[] a = new int[5]" 而不是 "int a[5]")。枚舉位于其所在的命名空間中。</p><p>  C#中沒有模版(Template),但是在C

22、# 2.0中引入了泛型(Generic programming),并且支持一些C++模版不支持的特性。比如泛型參數(shù)中的類型約束。另一方面,表達式不能像C++模版中被用于類型參數(shù)。屬性支持,使用類似訪問成員的方式調用。完整的反射支持。</p><p><b>  (2)泛型</b></p><p>  泛型,或參數(shù)化類型,是被C#支持的.NET 2.0特性。不同于C+

23、+模版,.NET 參數(shù)化類型是在運行時被實例化,而不是編譯時,因此它可以跨語言,而C++模版卻不行。它支持的一些特性并不被C++模版直接支持,比如約束泛型參數(shù)實現(xiàn)一個接口。另一方面,C# 不支持無類型的泛型參數(shù)。不像Java中的泛型,在CLI虛擬機中,.NET generics 使用 具化 生成泛型參數(shù),它允許優(yōu)化和保存類型信息。</p><p><b> ?。?)靜態(tài)類</b

24、></p><p>  靜態(tài)類它不能被實例化,并且只能有靜態(tài)成員。這同很多過程語言中的模塊概念相類似。</p><p>  (4)兩個基本類分部方法</p><p>  允許代碼生成器生成方法聲明作為擴展點,如果有人在另一個部分類實現(xiàn)了它才會被包含于原代碼編譯。分部方法 (Partial methods) 必須定義在分部類 (partial classes)

25、中。定義分部方法 需要用 partial 做修飾符。分部方法不一定總是有執(zhí)行內容的,也就是說定義的方法 可以一句操作語句都沒有。分部方法返回值必須是void。分部方法可以是靜態(tài) (static) 方法。分部方法可以包含參數(shù),參數(shù)可以包含以下修飾詞:this,ref,params。分部方法必須是私有 (private) 方法</p><p><b>  (5)Linq</b></p>

26、;<p>  語言集成查詢(英語:Language Integrated Query,縮寫:LINQ):[5] 上下文相關關鍵字"from, where, select" 可用于查詢SQL、XML、集合等。這些標識符在LINQ上下文中被作為關鍵字,但是它們的增加不會破壞原有的名為from、where或select的變量。</p><p

27、><b> ?。?)程序的執(zhí)行</b></p><p>  C#并不被編譯成為能夠直接在計算機上執(zhí)行的二進制本地代碼。與Java類似,它被編譯成為中間代碼(Microsoft Intermediate Language),然后通過.NET Framework的虛擬機——被稱之為通用語言運行庫(Common Language Runtime)——執(zhí)行。</p><p&

28、gt;  所有的.Net編程語言都被編譯成這種被稱為MSIL(Microsoft Intermediate Language )的中間代碼。因此雖然最終的程序在表面上仍然與傳統(tǒng)意義上的可執(zhí)行文件都具有“.exe”的后綴名。但是實際上,如果計算機上沒有安裝.Net Framework,那么這些程序將不能夠被執(zhí)行。</p><p>  在程序執(zhí)行時,.Net Framework將中間代碼翻譯成為二進制機器碼,從而使它

29、得到正確的運行。最終的二進制代碼被存儲在一個緩沖區(qū)(Buffer)中。所以一旦程序使用了相同的代碼,那么將會調用緩沖區(qū)中的版本。這樣如果一個.Net程序第二次被運行,那么這種翻譯不需要進行第二次,速度明顯加快。</p><p>  (7)索引下標標準化</p><p>  一個索引與屬性除了不使用屬性名來引用類成員而是用一個方括號中的數(shù)字來匿名引用(就象用數(shù)組下標一樣)以外是相似的.  可

30、以用一個循環(huán)器來匿名引用字符串內部數(shù)組成員.</p><p>  微軟公司已經(jīng)向ECMA申請將C#作為一種標準。在2001年12月,ECMA發(fā)布了ECMA-334 C#語言規(guī)范。C#在2003年成為一個ISO標準(ISO/IEC 23270)?,F(xiàn)在有一些獨立的實現(xiàn)正在進行,包括:自由軟件基金會的dotGNU Portable.NET、Mono、Baltie - C# IDE for children a

31、nd young Baltie</p><p><b>  (8)編譯器</b></p><p>  C# 有5個著名的編譯器(compilers):</p><p>  最標準的 C# 的實現(xiàn)當屬微軟自己推出、并被包含在 .NET Framework 內的 C# 編譯器。</p><p>

32、  微軟的Rotor項目(Rotor Project)(目前稱為 Shared Source Common Language Infrastructure),提供了 通用語言運行庫(Common Language Runtime)的實現(xiàn)與 c# 編譯器。</p><p>  由 Novell 贊助的 Mono 項目提供了 C# 編譯器,同時也接近百分之百地實現(xiàn)了.NET F

33、ramework類庫。</p><p>  Dot GNU 項目也提供了另一個自由版本的 C# 編譯器, 也提供了.NET Framework類庫的實現(xiàn)。</p><p>  Borland 提供了項目級的 C# 集成開發(fā)環(huán)境,內部所使用的編譯器仍是微軟.NET Framework所提供的 C# 編譯器(這也意味著你仍須安裝微軟的.NET Framework)。產(chǎn)品: C# Bu

34、ilder(商業(yè)版本),Turbo C# Explorer(免費版本)。</p><p><b>  編程語言的選擇</b></p><p>  C# 無疑是這個星球上有史以來最好的編程語言,它幾乎集中了所有關于軟件開發(fā)和軟件工程研究的最新成果。面向對象、類型安全、組件技術、自動內存管理、跨平臺異常處理、版本控制、代碼安全管理……你不可能在另外的一種語言中找到所有這些

35、特性。C# 和JAVA一樣,簡直就是照搬了C++的部分語法,用C# 開發(fā)應用軟件可以大大縮短開發(fā)周期,同時可以利用原來除用戶界面代碼之外的C++代碼。</p><p><b>  數(shù)據(jù)庫服務器的選擇</b></p><p>  該網(wǎng)站的數(shù)據(jù)庫選擇Microsoft公司出的SQL Server 2005,該數(shù)據(jù)庫具有高可用性,SQL Server 2005的失敗轉移集群

36、和數(shù)據(jù)庫鏡像技術確保企業(yè)向員工、客戶和合作伙伴提交高度可靠和可用的應用系統(tǒng);管理工具則引進了一套集成的管理工具和管理應用編程接口(APIs),以提供易用性、可管理性、及對大型SQL Server配置的支持;通過數(shù)據(jù)庫加密、更加安全的默認設置、加強的密碼政策和細化許可控制、及加強的安全模型等特性,為企業(yè)數(shù)據(jù)提供最高級別的安全性。安全性增強;可伸縮性的先進性包括表格分區(qū)、復制能力的增強和64位支持。較為良好。</p><

37、p>  SQL Server 2005 通過在可伸縮性、數(shù)據(jù)集成、開發(fā)工具和強大的分析等方面的革新更好的確立了微軟在BI領域的領導地位。SQL Server 2005 能夠把關鍵的信息及時的傳遞到組織內員工的手中,從而實現(xiàn)了可伸縮的商業(yè)智能。從CEO 到信息工作者,員工可以快速的、容易的處理數(shù)據(jù),以更快更好的做出決策。SQL Server 2005全面的集成、分析和報表功能使企業(yè)能夠提高他們已有應用的價值,即便這些應用是在不同的平

38、臺上。其服務器強大的性能和完備的功能已能得到大眾的認可。且開發(fā)該網(wǎng)站所用的開發(fā)工具、開發(fā)語言、Web服務器等都是Microsoft公司的產(chǎn)品,所以選擇Microsoft SQL Server 2005作為該系統(tǒng)的數(shù)據(jù)庫服務器。</p><p>  3.模塊分析及總體設計</p><p><b>  模塊需求</b></p><p>  此系統(tǒng)主

39、要供學??蒲泄ぷ髡呤褂茫渲袌蟊矸治觥⒛甓葓蟊砟K主要包括以下用戶界面:</p><p>  報表分析:論文/專著等一覽表、研究項目/課題一覽表、教材成果一覽表、著作成果一覽表等</p><p>  年度報表:年度報表、年度工作、個人報表</p><p><b>  模塊結構分析</b></p><p>  模塊結構圖如

40、下圖3-1所示:</p><p><b>  圖3-1</b></p><p><b>  功能描述</b></p><p><b>  報表分析:</b></p><p>  論文/專著等一覽表:將各院系的論文/專著使用列表形式展示,使科研工作人員有選擇性的查看其想要的論文/

41、專著內容。并有導出、查詢操作。</p><p>  研究項目/課題一覽表:將各院系的研究項目/課題使用列表形式展示,方便科研工作人員查看歷年的研究項目/課題信息。并有導出、查詢操作。</p><p>  教材成果一覽表:將各院系的教材成果進行匯總,去除重復的數(shù)據(jù),并通過列表形式展示,并有導出、查詢操作。</p><p>  著作成果一覽表:以列表的形式將著作成果顯示

42、,方便用戶查看,同時可對其進行導出、查詢操作。</p><p><b>  年度報表:</b></p><p>  年度報表:將各院系的教師的科研情況進行匯總,方便科研工作者查看,同時具有打印、導出Word、導出Excel、查詢功能,科研工作者可以將選定的年度科研信息備份成文檔。</p><p>  年度工作:通過該界面可以將個人的科研工作進行

43、年度工作匯總,并支持打印導出功能。</p><p>  個人報表:此用戶界面主要用于查詢當前用戶一年內的科研項目、科研成果、科研活動信息。</p><p>  3.1.3 功能模塊詳細描述</p><p><b>  (1)登入界面</b></p><p>  程序啟動后,進入用戶登陸界面。用戶登錄頁面包括用戶名稱和用戶

44、口令的文本輸入框,確定按鈕。輸入正確用戶名稱和用戶口令,只有經(jīng)驗證身份成功后,才進入我的主頁的功能,通過導航菜單,繼而可進行具體模塊的操作。</p><p>  (2) 報表分析模塊</p><p>  展示所有的報表數(shù)據(jù),根據(jù)自己的意愿進行相應的操作。</p><p>  (3) 年度報表模塊</p><p>  顯示所有教師的年度科研工作

45、,教師需有這項的權限才可以進行各項具體的操作。</p><p><b>  系統(tǒng)開發(fā)工具</b></p><p><b>  系統(tǒng)開發(fā)所用技術</b></p><p>  C#:C#是微軟推出的一種基于.NET框架的、面向對象的高級編程語言。C#由C語言和C++派生而來,繼承了其強大的性能,同時又以.NET 框架類庫作為基

46、礎,擁有類似Visual Basic的快速開發(fā)能力。此次修改系統(tǒng)的.NET 框架是用.NET Framework 3.5。這個版本將包含一個支持C#和VB.Net中心的語言特性的編譯器,以及對語言整合查詢(LINQ, Language-Integrated Query)的支援。.NET框架是以一種采用系統(tǒng)虛擬機運行的編程平臺,以通用語言運行庫(Common Language Runtime)為基礎,支援多種語言(C#、VB.NET、C+

47、+、Python等)的開發(fā)。</p><p>  SQL:SQL全名是結構化查詢語言(Structured Query Language),是用于數(shù)據(jù)庫中的標準數(shù)據(jù)查詢語言,IBM 公司最早使用在其開發(fā)的數(shù)據(jù)庫系統(tǒng)中。其功能強大,簡單易學,自從推出以來,得到了廣泛的應用,如今大多數(shù)的數(shù)據(jù)庫管理系統(tǒng)都支持SQL。</p><p>  JavaScript:使用JavaScript(

48、客戶端腳本語言)實現(xiàn)客戶端快速響應的要求以及網(wǎng)頁添加動態(tài)功能。</p><p>  XML:使用XML作為少量數(shù)據(jù)的存儲。</p><p>  CSS:使用CSS來控制網(wǎng)站的統(tǒng)一界面風格,方便修改。</p><p>  Pet.shop的三層架構:使用分層架構來提高代碼的可讀性和可重用性。</p><p><b>  運行環(huán)境<

49、;/b></p><p>  Microsoft Visual Studio 2005</p><p>  SQL Server 2005</p><p>  IIS或IE6.0 瀏覽器</p><p><b>  4.模塊開發(fā)設計</b></p><p><b>  開發(fā)框架的設

50、計</b></p><p>  1.項目概述與架構分析 </p><p>  微軟剛推出了基于ASP.NET 2.0下的Pet Shop 4, 該版本有了一個全新的用戶界面。是研究ASP.NET 2.0的好范例,一直以來,在.NET和Java之間爭論不休,到底使用哪個平臺開發(fā)的企業(yè)級應用性能最好、結構最優(yōu)、生產(chǎn)力最高。為了用事實說話,通過對項目各方面的性能評估進而在比較.NET

51、和Java的高下。用戶做比較的這個項目就是Petshop。正因為Petshop肩負著上面所說的重任,各方面必須是最優(yōu)的,架構設計應該是經(jīng)過慎重考慮的。所以其一經(jīng)推出,便成為了開發(fā)者、架構師等人學習、研究的典范。微軟推薦的分層式結構一般分為三層,從下至上分別為:數(shù)據(jù)訪問層、業(yè)務邏輯層(又或成為領域層)、表示層,日前微軟推出了基于.NET Framework 2.0開發(fā)的Petshop 4。新的Petshop4實現(xiàn)了與Petshop 3相同

52、甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代碼量卻減少了四分之一。同時,在事務、數(shù)據(jù)緩存、安全方面使用了.NET 2.0附帶的特性,構建了一個靈活的最佳實踐的應用程</p><p>  Pet Shop利用了Project Conversion Wizard把項目從ASP.NET 1.1移植到了ASP.NET 2.0,然

53、后做了以下改動:</p><p>  1.用System.Transactions代替了原來的Serviced Components提供的事務功能</p><p>  代碼實現(xiàn):PetShop.BLL.OrderSynch的 publicvoid Insert(PetShop.Model.OrderInfo order)。</p><p>  2.用強類型的范型集合

54、代替了原來的弱類型集合</p><p>  publicIList<ProductInfo> GetProductsByCategory(string category)</p><p>  { // Return new if the string is empty</p><p>  if (string.IsNullOrEmpty(categor

55、y))</p><p>  returnnewList<ProductInfo>();</p><p>  // Run a search against the data store</p><p>  return dal.GetProductsByCategory(category);</p><p><b>  

56、}</b></p><p>  3.采用ASP.NET 2.0 Membership來做認證和授權</p><p>  4.創(chuàng)建了針對Oracle 10g的Custom ASP.NET 2.0 Membership Provider</p><p>  5.利用ASP.NET 2.0的Custom Oracle 和 SQL Server Profile

57、Providers 做用戶狀態(tài)管理,包括購物車等</p><p>  6.采用了Master Pages,取代了原來的用戶控件,來實現(xiàn)統(tǒng)一的界面效果</p><p>  7.使用了ASP.NET 2.0 Wizard控件實現(xiàn)check-out </p><p>  8.使用了SqlCacheDependency來實現(xiàn)數(shù)據(jù)庫層次的緩存更新(cache invalida

58、tion)功能</p><p>  9.使用了消息隊列來實現(xiàn)異時訂單處理。 </p><p><b>  2.整體架構:</b></p><p><b>  項目列表:</b></p><p>  從整體可以看出,Pet Shop 4的項目體系已經(jīng)很龐大,考慮的方面也較3.0更全面復雜。</p

59、><p><b>  項目分解:</b></p><p>  由于整體已經(jīng)有22個項目,所以,對于初學者不易接受,經(jīng)分解,可以大體上分幾塊去理解。</p><p>  3.Petshop 4中的設計模式:</p><p><b>  工廠模式:</b></p><p>  首當其

60、沖的就是工廠模式,很容易就可以看出來,也是應用最多的。</p><p>  DALFactory:數(shù)據(jù)訪問層的抽象工廠(決定創(chuàng)建哪種數(shù)據(jù)庫類型的數(shù)據(jù)訪問層??梢赃x擇:SQLServer,Oracle)</p><p>  CacheDependencyFactory:緩存依賴類的工廠類。(創(chuàng)建具體表的緩存依賴)</p><p>  MessagingFactory

61、:異時處理消息隊列的抽象工廠(反射創(chuàng)建具體的異時處理類)</p><p>  ProfileDALFactory:ProfileDAL的工廠類(反射選擇創(chuàng)建Oracle 和SQL Server的 ProfileDAL) </p><p><b>  策略模式:</b></p><p>  IorderStrategy </p>&

62、lt;p><b>  中介模式</b></p><p>  CategoryDataProxy ItemDataProxy ProductDataProxy</p><p><b>  模型設計</b></p><p>  在SQL Server 2005中建立KyMis數(shù)據(jù)庫,并在數(shù)據(jù)庫上創(chuàng)建Tab_Income

63、AndExpenditure表,Tab_IncomeAndExpenditure_Item表,Tab_CustomerBilling表,Tab_CustomerBilling表,Tab_EmployeeBilling表,Tab_EmployeeBilling_Income表</p><p>  并設計相應的數(shù)據(jù)模型;</p><p><b>  控制器設計</b>&l

64、t;/p><p>  通過IIS可瀏覽主界面,根據(jù)客戶的請求來操作模型,并把模型的響應結果由用戶界面展現(xiàn)給客戶</p><p><b>  視圖設計</b></p><p>  系統(tǒng)模塊開發(fā)中所用到的C#控件顯示頁面和后臺代碼</p><p><b>  數(shù)據(jù)庫設計</b></p><

65、;p>  數(shù)據(jù)庫設計是項目開發(fā)中非常重要的一個環(huán)節(jié),它是整個項目的根基,如果設計不好,在后來的系統(tǒng)開發(fā),維護,變更和功能擴充時,將會遇到非常大的困難,大量工作可能需要重新進行。</p><p><b>  數(shù)據(jù)庫表設計的準則</b></p><p>  數(shù)據(jù)庫設計一個表最好只存儲一個實體或對象的相關信息,不同的實體最好存儲在不同的數(shù)據(jù)表中,如果實體還可以再劃分,

66、實體的劃分原則是最好能夠比當前系統(tǒng)要開發(fā)的實體的顆粒度要?。粩?shù)據(jù)庫表的信息結構一定要合適,表的字段的數(shù)量一定不要過多;擴充信息和動態(tài)變化的信息一定要分開在不同的表里;對于出現(xiàn)多對多這樣的表關系系統(tǒng),盡量不出現(xiàn)。</p><p><b>  數(shù)據(jù)庫表的設計</b></p><p>  表4-1論文/專著等一覽表Tab_Disquisition</p>&l

67、t;p>  表4-2研究項目/課題一覽表Tab_Project</p><p>  表4-3 研究項目/課題人員信息表Tab_Project_Empl</p><p>  表4-4教材成果一覽表Tab_Book</p><p>  表4-5教材成果人員表Tab_Book_Author</p><p>  表4-6 教材成果匯總表Tab_

68、reportbooks</p><p><b>  5.系統(tǒng)設計</b></p><p>  5.1 首頁登錄界面</p><p>  只有當用戶輸入正確的口令和密碼時才顯示主頁面。主頁面中包括綜合辦公、科研機構、科研人員、科研項目、科研經(jīng)費、科研成果、科研活動、報表分析、科研考核、科研審核、科研統(tǒng)計、年度報表、科研設置等模塊。點擊我所負責的報

69、表分析或年度報表,可以在左邊出現(xiàn)相應的子模塊,右邊則是子模塊相應的界面,我們可以通過該界面進行各種操作。</p><p><b>  5.2 報表分析</b></p><p>  報表分析模塊下主要包括的子模塊有:論文/專著一覽表、研究項目/課題一覽表、教材成果一覽表、著作成果一覽表等,接下來將會著重介論文/專著一覽表。</p><p>  5

70、.2.1論文/專著一覽表(列表)</p><p>  結構思路及主要代碼:</p><p>  去除列表中的查詢條件,增加查詢按鈕,以及查詢頁面。先拖動工具箱中的按鈕到Report_DisquisionList.aspx頁面,分別將值設為查詢、導出。其中查詢按鈕功能實現(xiàn)的是轉到查詢頁面。在此主要是通過javascript腳本語言實現(xiàn)的,其關鍵代碼如下:</p><p&g

71、t;  <script type="text/javascript" language="javascript"></p><p>  function Search()</p><p><b>  {</b></p><p>  location="Report_Disquisio

72、nSearch.aspx";</p><p><b>  }</b></p><p><b>  </script></b></p><p>  用location="Report_DisquisionSearch.aspx";即可定位到查詢頁面,其中Report_Disquisi

73、onSearch.aspx是查詢界面。修改后支持更多的查詢條件,如作者姓名、所屬單位、刊物級別等等查詢條件。在查詢條件代碼實現(xiàn)如下:</p><p>  protected void btnSearch_Click(object sender, EventArgs e)</p><p>  { string strQuery = string.Empty;</p><

74、p>  if (this.txtAuthor.Text != "")//作者姓名</p><p><b>  {</b></p><p>  strQuery += "&AuthorName=" + his.txtAuthor.Text.Trim();</p><p><b>  

75、} </b></p><p>  if (this.ddlOrgID.SelectedValue != "")//所屬單位</p><p><b>  {</b></p><p>  strQuery += "&OrgID=" + this.ddlOrgID.SelectedValu

76、e;</p><p><b>  }</b></p><p>  if (this.ddlLevel.SelectedValue != "")//刊物級別</p><p><b>  {</b></p><p>  strQuery += "&Level=&qu

77、ot; + this.ddlLevel.SelectedValue;</p><p>  } </p><p>  if (strQuery.Length > 0)</p><p>  strQuery = strQuery.Substring(1);</p><p><b>  //返回列表頁面</

78、b></p><p>  Response.Redirect("Report_DisquisionList.aspx?" + strQuery, true);</p><p><b>  }</b></p><p>  在列表頁面的Report_DisquisionList.aspx.cs接收查詢條件,然后查詢數(shù)據(jù),最

79、后顯示在列表中,代碼實現(xiàn)如下:</p><p>  private void ShowData()</p><p><b>  { //這段有改動</b></p><p>  string strQuery = string.Empty;</p><p>  if (Request["AuthorName&qu

80、ot;] != null && Request["AuthorName"] != "")</p><p><b>  {</b></p><p>  strQuery += " and A.AuthorName like '%" + Request["AuthorName&q

81、uot;] + "%'";//作者姓名 </p><p><b>  }</b></p><p>  if (Request.QueryString["OrgID"] != null && Request.QueryString["OrgID"] != &qu

82、ot;")</p><p><b>  {</b></p><p>  strQuery += " and A.OrgID like '%" + Request.QueryString["OrgID"] + "%'";//所屬單位</p><p>  }

83、 </p><p>  string strSQL = "select A.Title,A.AuthorName,C.Name Source,D.Name Kind,A.Cn,A.Period,A.Publications,Convert(varchar(10),A.PublishingDate,120) PublishingDate from Tab_Disquisition A le

84、ft join Tab_CodeLibrary_Item B on A.KnowledgeClass=B.ID and B.CodeLibraryID='KnowledgeClass' left join Tab_CodeLibrary_Item C on A.Source=C.ID and C.CodeLibraryID='Source' left join Tab_CodeLibrary_Item

85、D on A.Kind=D.ID and D.CodeLibraryID='DisquisionKind' where 1=1 " + strQuery;</p><p>  strSQL += " order by A.PublishingDate desc,A.OrgID desc,A.Kind desc,A.Publications desc ";</p&

86、gt;<p>  objDataTable = Comm.ExecuteDataTable(strSQL);</p><p>  objDataTable.Columns.Add("infoNo");</p><p>  for (int i = 0; i < objDataTable.Rows.Count; i++)</p><

87、p><b>  {</b></p><p>  objDataTable.Rows[i]["infoNo"] = i + 1;</p><p><b>  }</b></p><p>  this.DataGridList.DataSource = objDataTable;</p>

88、<p>  this.DataGridList.DataBind();//綁定數(shù)據(jù)</p><p><b>  }</b></p><p>  導出功能:點擊列表中的導出按鈕,調用導出的方法,代碼如下:</p><p>  protected void BtnExp_Click(object sender, EventArgs e)

89、</p><p>  { </p><p>  EnterpriseService.ExportService.ToExcel("Report.xls", this.DataGridList); //將當前列表中的數(shù)據(jù)導出(this.DataGridList數(shù)據(jù)源)</p><p><b>  }</b>

90、</p><p><b>  5.3 年度報表</b></p><p>  年度報表模塊主要包括的子模塊有:年度報表、個人報表、年度工作,如圖5.3.1所示:</p><p>  5.3.1 年度報表</p><p>  年度報表也是通過綁定數(shù)據(jù)庫將選定年度科研工作信息展示給用戶,其基本信息包括:姓名、職 稱、單位和從事

91、專業(yè)、科研考核得分等,該用戶界面包括的查功能、導出Word、導出Excel、打印功能。</p><p><b>  圖5.3.1</b></p><p>  結構思路及主要代碼:</p><p>  首先需要在ReportPersonalYear.aspx源程序中用javascript實現(xiàn)導出Word、Excel、打印功能。其代碼如下:<

92、/p><p>  <script language="javascript"></p><p>  function AllAreaExcel()//指定頁面區(qū)域內容導入Excel</p><p><b>  {</b></p><p>  var oXL = new ActiveXObjec

93、t("Excel.Application");</p><p>  var oWB = oXL.Workbooks.Add();</p><p>  var oSheet = oWB.ActiveSheet; </p><p>  var sel=document.body.createTextRange();</p><p&

94、gt;  sel.moveToElementText(PrintA);</p><p>  sel.select();</p><p>  sel.execCommand("Copy");</p><p>  oSheet.Paste();</p><p>  oXL.Visible = true;</p>

95、<p><b>  }</b></p><p>  function AllAreaWord()//指定頁面區(qū)域內容導入Word</p><p><b>  {</b></p><p>  if(document.all("PrintA").rows.length==0)</p>

96、<p><b>  {</b></p><p>  alert("沒有內容可導!");</p><p><b>  return;</b></p><p>  } try{</p><p>  var oWD = new ActiveXObject(&quo

97、t;Word.Application"); </p><p><b>  }catch(e)</b></p><p><b>  {</b></p><p>  alert("無法調用Office對象,請確保您的機器已安裝了Office并已將本系統(tǒng)的站點名加入到IE的信任站點列表中!");&l

98、t;/p><p><b>  return;</b></p><p><b>  }</b></p><p>  var oDC = oWD.Documents.Add("",0,1); </p><p>  var oRange =oDC.Range(0,1); </p>

99、;<p>  var sel = document.body.createTextRange(); </p><p>  sel.moveToElementText(PrintA); //tab 為導出數(shù)據(jù)所在的表格ID</p><p>  sel.select(); </p><p>  sel.execCommand("Copy"

100、;); </p><p>  oRange.Paste(); </p><p>  oWD.Application.Visible = true; </p><p><b>  }</b></p><p><b>  </script></b></p><p> 

101、 <script language="javascript"></p><p>  function preview()</p><p><b>  {</b></p><p>  var bdhtml=window.document.body.innerHTML;//獲取當前頁的html代碼</p>

102、<p>  var sprnstr="<!--startprint-->";//設置打印開始區(qū)域</p><p>  var eprnstr="<!--endprint-->";//設置打印結束區(qū)域</p><p>  var prnhtml=bdhtml.substr(bdhtml.indexOf(sprnst

103、r)+17);//從開始代碼向后取html</p><p>  prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//從結束代碼向前取html</p><p>  window.document.body.innerHTML=prnhtml;</p><p>  window.print();</p&g

104、t;<p>  //恢復頁面,可再次打印</p><p>  window.document.body.innerHTML=bdhtml;</p><p><b>  }</b></p><p><b>  </script></b></p><p>  接著在Report

105、PersonalYear.aspx.cs后臺中編寫語句,實現(xiàn)列表選擇不同年度、系別、人員顯示年度科研信息,關鍵代碼如下:</p><p>  /// <summary></p><p><b>  /// 查詢功能</b></p><p>  /// </summary></p><p>  //

106、/ <param name="sender"></param></p><p>  /// <param name="e"></param></p><p>  protected void btnSearch_Click(object sender, EventArgs e)</p>&

107、lt;p><b>  {//時間</b></p><p>  if (this.ddlYear.SelectedValue != null && this.ddlYearEnd.SelectedValue != null)</p><p><b>  {</b></p><p>  if (Conve

108、rt.ToInt32(this.ddlYear.SelectedValue != null) > Convert.ToInt32(this.ddlYearEnd.SelectedValue != null))</p><p><b>  {</b></p><p>  Year = this.ddlYearEnd.SelectedValue.ToString()

109、;</p><p>  YearEnd = this.ddlYear.SelectedValue.ToString();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><

110、p>  Year = this.ddlYear.SelectedValue.ToString();</p><p>  YearEnd = this.ddlYearEnd.SelectedValue.ToString();</p><p><b>  }</b></p><p><b>  }</b></p&g

111、t;<p>  else if (this.ddlYear.SelectedValue != null)</p><p><b>  {</b></p><p>  Year = this.ddlYear.SelectedValue.ToString();</p><p>  YearEnd = this.ddlYear.Sele

112、ctedValue.ToString();</p><p><b>  }</b></p><p>  else if (this.ddlYearEnd.SelectedValue != null)</p><p><b>  {</b></p><p>  Year = this.ddlYearE

113、nd.SelectedValue.ToString();</p><p>  YearEnd = this.ddlYearEnd.SelectedValue.ToString();</p><p><b>  }</b></p><p>  Session["YearReportStrat"] = Year.ToString

114、();</p><p>  Session["YearReportEnd"] = YearEnd.ToString();</p><p>  string strWhere = " ";//查詢條件</p><p>  if (this.ddlDept.SelectedValue != "" &&a

115、mp; this.ddlDept.SelectedValue != null)</p><p><b>  {</b></p><p>  strWhere += " and A.DeptID='" + this.ddlDept.SelectedValue + "'";</p><p>&

116、lt;b>  }</b></p><p>  if (this.txtName.Text.Trim() != "" && this.txtName.Text.Trim() != null)</p><p><b>  {</b></p><p>  strWhere += " an

117、d A.name like '%" + this.txtName.Text.Trim() + "%'";</p><p><b>  }</b></p><p>  #region 報表</p><p><b>  //獲得人員</b></p><p>

118、;  string PersonSQL = " select A.OID,A.name,B.Name DeptID from Org_EMPLOYEE A,Org_Department B where A.FlagAccount=1 " + strWhere;</p><p>  PersonSQL += " and A.DeptID=B.OID order by A.OrgID,A

119、.name ";</p><p>  DataTable dtPerson = new DataTable();</p><p>  dtPerson = Comm.ExecuteDataTable(PersonSQL);</p><p>  if (dtPerson.Rows.Count > 0)</p><p><b

120、>  {</b></p><p>  Control controlReportPerson = new Control();</p><p>  for (int i = 0; i < dtPerson.Rows.Count; i++)</p><p>  {//是不過慮沒有年度工作的人員信息</p><p>  i

121、f (this.chNoWork.Checked)</p><p><b>  {</b></p><p>  string sql = " exec existYearWork '" + dtPerson.Rows[i][0].ToString() + "','" + Year.ToString() +

122、 "','" + YearEnd.ToString() + "'";</p><p>  DataTable dtExist = new DataTable();</p><p>  dtExist = Comm.ExecuteDataTable(sql);</p><p>  if (dtExist.

123、Rows.Count > 0 && dtExist.Rows[0][0].ToString() != "0")</p><p><b>  {</b></p><p>  showData(dtPerson, controlReportPerson, i);</p><p><b>  }&l

124、t;/b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  showData(dtPerson, controlReportPerson, i);</p>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論