

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 圖書管理系統(tǒng)</b></p><p><b> \</b></p><p> 學(xué)生姓名: 學(xué)生學(xué)號: </p><p> 年 級: 專 業(yè): 軟件技術(shù)</p><p> 指導(dǎo)教師: 職 稱: 講 師
2、</p><p><b> 2012年05月</b></p><p><b> 內(nèi) 容 摘 要</b></p><p> 科研管理系統(tǒng)是針對我校日??蒲泄芾砉ぷ鞯木唧w要求,從科研成果管理、科研項目管理、科研經(jīng)費管理、科研機(jī)構(gòu)及科研人員等方面進(jìn)行建設(shè)的系統(tǒng)。</p><p> 隨著科研管理系統(tǒng)
3、數(shù)據(jù)日益增加,數(shù)據(jù)量的龐大,教師對數(shù)據(jù)查看的要求也隨之提高,尤其是報表方面,舊的報表已經(jīng)不能滿足教師的需求。為此,對科研系統(tǒng)進(jìn)行改進(jìn),主要是報表數(shù)據(jù)顯示方面。本系統(tǒng)是在Windows XP下,采用ASP.NET\WEB技術(shù)和Microsoft SQL Server 2000數(shù)據(jù)庫,開發(fā)工具為Microsoft Visual Studio 2008,采用C#技術(shù)模擬Pet.Shop架構(gòu)開發(fā)的一種系統(tǒng)。應(yīng)用數(shù)據(jù)層基類 、數(shù)據(jù)層工廠
4、類、接口層 、接口實現(xiàn)層 、實體類 、業(yè)務(wù)邏輯層、表示層的分層體系結(jié)構(gòu)。主要用了ASP.NET中的用戶自定義控件和UserControl類。</p><p> 關(guān)鍵字:C#;SQLserver2005; Pet.Shop架構(gòu);報表; 科研管理系統(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)技術(shù)可行性分析(2)</p><p> 2.2.1開發(fā)環(huán)境的選擇(2)</p><p> 2.2.2 編程語言的選擇(4)</p><p> 2.2.3數(shù)據(jù)庫服務(wù)器的選擇(4)</p><p> 3.模塊分析及總
7、體設(shè)計(4)</p><p> 3.1模塊需求 (4)</p><p> 3.1.1系統(tǒng)結(jié)構(gòu)分析(5)</p><p> 3.1.2功能描述(6)</p><p> 3.1.3功能模塊詳細(xì)描述(6)</p><p> 3.2系統(tǒng)開發(fā)工具 (6)</p><p> 3
8、.2.1系統(tǒng)開發(fā)所用技術(shù)(7)</p><p> 3.2.2運行環(huán)境(7)</p><p> 4.模塊開發(fā)設(shè)計(7)</p><p> 4.1開發(fā)框架的設(shè)計 (7)</p><p> 4.1.1模型設(shè)計(10)</p><p> 4.1.2控制器設(shè)計(11)</p><
9、p> 4.1.3視圖設(shè)計(11)</p><p> 4.2數(shù)據(jù)庫設(shè)計 (11)</p><p> 4.2.1數(shù)據(jù)庫表設(shè)計的準(zhǔn)則(11)</p><p> 4.2.2數(shù)據(jù)庫表的設(shè)計(前臺)(11)</p><p> 5.系統(tǒng)設(shè)計(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.總結(jié)(
11、21)</b></p><p><b> 致謝(33)</b></p><p><b> 參考文獻(xiàn)(34)</b></p><p><b> 1.引 言</b></p><p> 計算機(jī)是新技術(shù)革命的一支主力,也是推動社會向現(xiàn)代化邁進(jìn)的活躍因素。計算機(jī)科
12、學(xué)與技術(shù)是第二次世界大戰(zhàn)以來發(fā)展最快、影響最為深遠(yuǎn)的新興學(xué)科之一。計算機(jī)產(chǎn)業(yè)已在世界范圍內(nèi)發(fā)展成為一種極富生命力的戰(zhàn)略產(chǎn)業(yè)。隨著社會的發(fā)展,計算機(jī)網(wǎng)絡(luò)日趨成熟,走進(jìn)了我們的生活,成為我們生活的主流,同時也被廣泛應(yīng)用于教學(xué),科研,事業(yè)等各個方面。所謂科研管理系統(tǒng)就是針對日??蒲泄芾砉ぷ鞯木唧w要求而實現(xiàn)科研工作的網(wǎng)絡(luò)化管理的一種系統(tǒng),本系統(tǒng)的建設(shè)也是計算機(jī)網(wǎng)絡(luò)飛速發(fā)展給人們帶來方便的一種表現(xiàn)。</p><p> 本
13、系統(tǒng)模擬Pet.Shop框架開發(fā),在Microsoft Visual Studio 2005平臺下使用C#語言開發(fā)的,數(shù)據(jù)庫使用Microsoft SQL Server 2005。通過前用戶界面和后臺代碼的建設(shè)共同完成了科研成果管理、科研項目管理、科研經(jīng)費管理、科研機(jī)構(gòu)及科研人員等模塊從而充分展示了科研管理系統(tǒng)所帶來的便利。</p><p><b> 2.可行性分析</b></p&g
14、t;<p><b> 可行性研究的前提</b></p><p><b> 目的</b></p><p> 盡可能在最短的時間內(nèi)確定完成系統(tǒng)模塊,以便學(xué)??蒲泄ぷ鞲禹樌M(jìn)行。</p><p><b> 條件</b></p><p> 現(xiàn)所具有的軟、硬件設(shè)
15、備如下:</p><p> 開發(fā)設(shè)備:PC機(jī)(CPU:Intel(R) Core(TM)2 CPU 4300 @1.80GHz (2 CPUs) ,內(nèi)存:2046MB)</p><p> 開發(fā)環(huán)境:Windows XP</p><p> 開發(fā)軟件:Visual Studio 2008</p><p> 數(shù)據(jù)庫服務(wù)器:SQL Serve
16、r 2005</p><p> 其它輔助工具:Dreamweaver </p><p> 以上設(shè)備可以滿足本系統(tǒng)的開發(fā)。</p><p> 決定可行性的主要因素</p><p> 一個良好的科研管理系統(tǒng)可以幫助我??蒲泄ぷ鞯木W(wǎng)絡(luò)化管理。完成此系統(tǒng)有助于科研管理溝通平臺的構(gòu)建,系統(tǒng)維護(hù)只要在后臺進(jìn)行編輯,前臺的用戶界面操作就能很好地按一
17、定方式進(jìn)行以達(dá)到你所要的效果。服務(wù)于學(xué)校科研工作人員的工作,具有較強(qiáng)的使用性。當(dāng)然,系統(tǒng)的完整性離不開各模塊的完整性。</p><p><b> 系統(tǒng)技術(shù)可行性分析</b></p><p><b> 開發(fā)環(huán)境的選擇</b></p><p> C#(讀做 "C sharp") 是微軟推出的一種基于.
18、NET框架的、面向?qū)ο蟮母呒壘幊陶Z言。C#由C語言和C++派生而來,繼承了其強(qiáng)大的性能,同時又以.NET 框架類庫作為基礎(chǔ),擁有類似Visual Basic的快速開發(fā)能力。C#由安德斯·海爾斯伯格主持開發(fā),微軟在2000年發(fā)布了這種語言。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程.但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與CO
19、M(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角. </p><p><b> 其特性:</b></p><p><b> ?。?)語言特性</b></p><p> 相對于C和C++,這個語言在許多方面進(jìn)行了限制和增強(qiáng):</p><p> 指針(Poin
20、ter)只能被用于不安全模式。大多數(shù)對象訪問通過安全的引用實現(xiàn),以避免無效的調(diào)用,并且有許多算法用于驗證溢出,指針只能用于調(diào)用值類型,以及受垃圾收集控制的托管對象。對象不能被顯式釋放,代替為當(dāng)不存在被引用時通過垃圾回收器回收。只允許單一繼承(single inheritance),但是一個類可以實現(xiàn)多個接口(interfaces)。</p><p> C#比C++更加類型安全。默認(rèn)的安全轉(zhuǎn)換是隱含轉(zhuǎn)換,例如由短
21、整型轉(zhuǎn)換為長整型和從派生類轉(zhuǎn)換為基類。而接口布爾型同整型,及枚舉型同整型不允許隱含轉(zhuǎn)換,非空指針(通過引用相似對象)同用戶定義類型的隱含轉(zhuǎn)換必段被顯式的確定,不同于C++的復(fù)制構(gòu)造函數(shù)。數(shù)組聲明語法不同("int[] a = new int[5]" 而不是 "int a[5]")。枚舉位于其所在的命名空間中。</p><p> C#中沒有模版(Template),但是在C
22、# 2.0中引入了泛型(Generic programming),并且支持一些C++模版不支持的特性。比如泛型參數(shù)中的類型約束。另一方面,表達(dá)式不能像C++模版中被用于類型參數(shù)。屬性支持,使用類似訪問成員的方式調(diào)用。完整的反射支持。</p><p><b> ?。?)泛型</b></p><p> 泛型,或參數(shù)化類型,是被C#支持的.NET 2.0特性。不同于C+
23、+模版,.NET 參數(shù)化類型是在運行時被實例化,而不是編譯時,因此它可以跨語言,而C++模版卻不行。它支持的一些特性并不被C++模版直接支持,比如約束泛型參數(shù)實現(xiàn)一個接口。另一方面,C# 不支持無類型的泛型參數(shù)。不像Java中的泛型,在CLI虛擬機(jī)中,.NET generics 使用 具化 生成泛型參數(shù),它允許優(yōu)化和保存類型信息。</p><p><b> ?。?)靜態(tài)類</b
24、></p><p> 靜態(tài)類它不能被實例化,并且只能有靜態(tài)成員。這同很多過程語言中的模塊概念相類似。</p><p> (4)兩個基本類分部方法</p><p> 允許代碼生成器生成方法聲明作為擴(kuò)展點,如果有人在另一個部分類實現(xiàn)了它才會被包含于原代碼編譯。分部方法 (Partial methods) 必須定義在分部類 (partial classes)
25、中。定義分部方法 需要用 partial 做修飾符。分部方法不一定總是有執(zhí)行內(nèi)容的,也就是說定義的方法 可以一句操作語句都沒有。分部方法返回值必須是void。分部方法可以是靜態(tài) (static) 方法。分部方法可以包含參數(shù),參數(shù)可以包含以下修飾詞:this,ref,params。分部方法必須是私有 (private) 方法</p><p><b> (5)Linq</b></p>
26、;<p> 語言集成查詢(英語:Language Integrated Query,縮寫:LINQ):[5] 上下文相關(guān)關(guān)鍵字"from, where, select" 可用于查詢SQL、XML、集合等。這些標(biāo)識符在LINQ上下文中被作為關(guān)鍵字,但是它們的增加不會破壞原有的名為from、where或select的變量。</p><p
27、><b> ?。?)程序的執(zhí)行</b></p><p> C#并不被編譯成為能夠直接在計算機(jī)上執(zhí)行的二進(jìn)制本地代碼。與Java類似,它被編譯成為中間代碼(Microsoft Intermediate Language),然后通過.NET Framework的虛擬機(jī)——被稱之為通用語言運行庫(Common Language Runtime)——執(zhí)行。</p><p&
28、gt; 所有的.Net編程語言都被編譯成這種被稱為MSIL(Microsoft Intermediate Language )的中間代碼。因此雖然最終的程序在表面上仍然與傳統(tǒng)意義上的可執(zhí)行文件都具有“.exe”的后綴名。但是實際上,如果計算機(jī)上沒有安裝.Net Framework,那么這些程序?qū)⒉荒軌虮粓?zhí)行。</p><p> 在程序執(zhí)行時,.Net Framework將中間代碼翻譯成為二進(jìn)制機(jī)器碼,從而使它
29、得到正確的運行。最終的二進(jìn)制代碼被存儲在一個緩沖區(qū)(Buffer)中。所以一旦程序使用了相同的代碼,那么將會調(diào)用緩沖區(qū)中的版本。這樣如果一個.Net程序第二次被運行,那么這種翻譯不需要進(jìn)行第二次,速度明顯加快。</p><p> (7)索引下標(biāo)標(biāo)準(zhǔn)化</p><p> 一個索引與屬性除了不使用屬性名來引用類成員而是用一個方括號中的數(shù)字來匿名引用(就象用數(shù)組下標(biāo)一樣)以外是相似的. 可
30、以用一個循環(huán)器來匿名引用字符串內(nèi)部數(shù)組成員.</p><p> 微軟公司已經(jīng)向ECMA申請將C#作為一種標(biāo)準(zhǔn)。在2001年12月,ECMA發(fā)布了ECMA-334 C#語言規(guī)范。C#在2003年成為一個ISO標(biāo)準(zhǔn)(ISO/IEC 23270)?,F(xiàn)在有一些獨立的實現(xiàn)正在進(jìn)行,包括:自由軟件基金會的dotGNU Portable.NET、Mono、Baltie - C# IDE for children a
31、nd young Baltie</p><p><b> ?。?)編譯器</b></p><p> C# 有5個著名的編譯器(compilers):</p><p> 最標(biāo)準(zhǔn)的 C# 的實現(xiàn)當(dāng)屬微軟自己推出、并被包含在 .NET Framework 內(nèi)的 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)境,內(nèi)部所使用的編譯器仍是微軟.NET Framework所提供的 C# 編譯器(這也意味著你仍須安裝微軟的.NET Framework)。產(chǎn)品: C# Bu
34、ilder(商業(yè)版本),Turbo C# Explorer(免費版本)。</p><p><b> 編程語言的選擇</b></p><p> C# 無疑是這個星球上有史以來最好的編程語言,它幾乎集中了所有關(guān)于軟件開發(fā)和軟件工程研究的最新成果。面向?qū)ο?、類型安全、組件技術(shù)、自動內(nèi)存管理、跨平臺異常處理、版本控制、代碼安全管理……你不可能在另外的一種語言中找到所有這些
35、特性。C# 和JAVA一樣,簡直就是照搬了C++的部分語法,用C# 開發(fā)應(yīng)用軟件可以大大縮短開發(fā)周期,同時可以利用原來除用戶界面代碼之外的C++代碼。</p><p><b> 數(shù)據(jù)庫服務(wù)器的選擇</b></p><p> 該網(wǎng)站的數(shù)據(jù)庫選擇Microsoft公司出的SQL Server 2005,該數(shù)據(jù)庫具有高可用性,SQL Server 2005的失敗轉(zhuǎn)移集群
36、和數(shù)據(jù)庫鏡像技術(shù)確保企業(yè)向員工、客戶和合作伙伴提交高度可靠和可用的應(yīng)用系統(tǒng);管理工具則引進(jìn)了一套集成的管理工具和管理應(yīng)用編程接口(APIs),以提供易用性、可管理性、及對大型SQL Server配置的支持;通過數(shù)據(jù)庫加密、更加安全的默認(rèn)設(shè)置、加強(qiáng)的密碼政策和細(xì)化許可控制、及加強(qiáng)的安全模型等特性,為企業(yè)數(shù)據(jù)提供最高級別的安全性。安全性增強(qiáng);可伸縮性的先進(jìn)性包括表格分區(qū)、復(fù)制能力的增強(qiáng)和64位支持。較為良好。</p><
37、p> SQL Server 2005 通過在可伸縮性、數(shù)據(jù)集成、開發(fā)工具和強(qiáng)大的分析等方面的革新更好的確立了微軟在BI領(lǐng)域的領(lǐng)導(dǎo)地位。SQL Server 2005 能夠把關(guān)鍵的信息及時的傳遞到組織內(nèi)員工的手中,從而實現(xiàn)了可伸縮的商業(yè)智能。從CEO 到信息工作者,員工可以快速的、容易的處理數(shù)據(jù),以更快更好的做出決策。SQL Server 2005全面的集成、分析和報表功能使企業(yè)能夠提高他們已有應(yīng)用的價值,即便這些應(yīng)用是在不同的平
38、臺上。其服務(wù)器強(qiáng)大的性能和完備的功能已能得到大眾的認(rèn)可。且開發(fā)該網(wǎng)站所用的開發(fā)工具、開發(fā)語言、Web服務(wù)器等都是Microsoft公司的產(chǎn)品,所以選擇Microsoft SQL Server 2005作為該系統(tǒng)的數(shù)據(jù)庫服務(wù)器。</p><p> 3.模塊分析及總體設(shè)計</p><p><b> 模塊需求</b></p><p> 此系統(tǒng)主
39、要供學(xué)校科研工作者使用,其中報表分析、年度報表模塊主要包括以下用戶界面:</p><p> 報表分析:論文/專著等一覽表、研究項目/課題一覽表、教材成果一覽表、著作成果一覽表等</p><p> 年度報表:年度報表、年度工作、個人報表</p><p><b> 模塊結(jié)構(gòu)分析</b></p><p> 模塊結(jié)構(gòu)圖如
40、下圖3-1所示:</p><p><b> 圖3-1</b></p><p><b> 功能描述</b></p><p><b> 報表分析:</b></p><p> 論文/專著等一覽表:將各院系的論文/專著使用列表形式展示,使科研工作人員有選擇性的查看其想要的論文/
41、專著內(nèi)容。并有導(dǎo)出、查詢操作。</p><p> 研究項目/課題一覽表:將各院系的研究項目/課題使用列表形式展示,方便科研工作人員查看歷年的研究項目/課題信息。并有導(dǎo)出、查詢操作。</p><p> 教材成果一覽表:將各院系的教材成果進(jìn)行匯總,去除重復(fù)的數(shù)據(jù),并通過列表形式展示,并有導(dǎo)出、查詢操作。</p><p> 著作成果一覽表:以列表的形式將著作成果顯示
42、,方便用戶查看,同時可對其進(jìn)行導(dǎo)出、查詢操作。</p><p><b> 年度報表:</b></p><p> 年度報表:將各院系的教師的科研情況進(jìn)行匯總,方便科研工作者查看,同時具有打印、導(dǎo)出Word、導(dǎo)出Excel、查詢功能,科研工作者可以將選定的年度科研信息備份成文檔。</p><p> 年度工作:通過該界面可以將個人的科研工作進(jìn)行
43、年度工作匯總,并支持打印導(dǎo)出功能。</p><p> 個人報表:此用戶界面主要用于查詢當(dāng)前用戶一年內(nèi)的科研項目、科研成果、科研活動信息。</p><p> 3.1.3 功能模塊詳細(xì)描述</p><p><b> (1)登入界面</b></p><p> 程序啟動后,進(jìn)入用戶登陸界面。用戶登錄頁面包括用戶名稱和用戶
44、口令的文本輸入框,確定按鈕。輸入正確用戶名稱和用戶口令,只有經(jīng)驗證身份成功后,才進(jìn)入我的主頁的功能,通過導(dǎo)航菜單,繼而可進(jìn)行具體模塊的操作。</p><p> (2) 報表分析模塊</p><p> 展示所有的報表數(shù)據(jù),根據(jù)自己的意愿進(jìn)行相應(yīng)的操作。</p><p> (3) 年度報表模塊</p><p> 顯示所有教師的年度科研工作
45、,教師需有這項的權(quán)限才可以進(jìn)行各項具體的操作。</p><p><b> 系統(tǒng)開發(fā)工具</b></p><p><b> 系統(tǒng)開發(fā)所用技術(shù)</b></p><p> C#:C#是微軟推出的一種基于.NET框架的、面向?qū)ο蟮母呒壘幊陶Z言。C#由C語言和C++派生而來,繼承了其強(qiáng)大的性能,同時又以.NET 框架類庫作為基
46、礎(chǔ),擁有類似Visual Basic的快速開發(fā)能力。此次修改系統(tǒng)的.NET 框架是用.NET Framework 3.5。這個版本將包含一個支持C#和VB.Net中心的語言特性的編譯器,以及對語言整合查詢(LINQ, Language-Integrated Query)的支援。.NET框架是以一種采用系統(tǒng)虛擬機(jī)運行的編程平臺,以通用語言運行庫(Common Language Runtime)為基礎(chǔ),支援多種語言(C#、VB.NET、C+
47、+、Python等)的開發(fā)。</p><p> SQL:SQL全名是結(jié)構(gòu)化查詢語言(Structured Query Language),是用于數(shù)據(jù)庫中的標(biāo)準(zhǔn)數(shù)據(jù)查詢語言,IBM 公司最早使用在其開發(fā)的數(shù)據(jù)庫系統(tǒng)中。其功能強(qiáng)大,簡單易學(xué),自從推出以來,得到了廣泛的應(yīng)用,如今大多數(shù)的數(shù)據(jù)庫管理系統(tǒng)都支持SQL。</p><p> JavaScript:使用JavaScript(
48、客戶端腳本語言)實現(xiàn)客戶端快速響應(yīng)的要求以及網(wǎng)頁添加動態(tài)功能。</p><p> XML:使用XML作為少量數(shù)據(jù)的存儲。</p><p> CSS:使用CSS來控制網(wǎng)站的統(tǒng)一界面風(fēng)格,方便修改。</p><p> Pet.shop的三層架構(gòu):使用分層架構(gòu)來提高代碼的可讀性和可重用性。</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ā)設(shè)計</b></p><p><b> 開發(fā)框架的設(shè)
50、計</b></p><p> 1.項目概述與架構(gòu)分析 </p><p> 微軟剛推出了基于ASP.NET 2.0下的Pet Shop 4, 該版本有了一個全新的用戶界面。是研究ASP.NET 2.0的好范例,一直以來,在.NET和Java之間爭論不休,到底使用哪個平臺開發(fā)的企業(yè)級應(yīng)用性能最好、結(jié)構(gòu)最優(yōu)、生產(chǎn)力最高。為了用事實說話,通過對項目各方面的性能評估進(jìn)而在比較.NET
51、和Java的高下。用戶做比較的這個項目就是Petshop。正因為Petshop肩負(fù)著上面所說的重任,各方面必須是最優(yōu)的,架構(gòu)設(shè)計應(yīng)該是經(jīng)過慎重考慮的。所以其一經(jīng)推出,便成為了開發(fā)者、架構(gòu)師等人學(xué)習(xí)、研究的典范。微軟推薦的分層式結(jié)構(gòu)一般分為三層,從下至上分別為:數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層(又或成為領(lǐng)域?qū)樱?、表示層,日前微軟推出了基?NET Framework 2.0開發(fā)的Petshop 4。新的Petshop4實現(xiàn)了與Petshop 3相同
52、甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代碼量卻減少了四分之一。同時,在事務(wù)、數(shù)據(jù)緩存、安全方面使用了.NET 2.0附帶的特性,構(gòu)建了一個靈活的最佳實踐的應(yīng)用程</p><p> Pet Shop利用了Project Conversion Wizard把項目從ASP.NET 1.1移植到了ASP.NET 2.0,然
53、后做了以下改動:</p><p> 1.用System.Transactions代替了原來的Serviced Components提供的事務(wù)功能</p><p> 代碼實現(xiàn):PetShop.BLL.OrderSynch的 publicvoid Insert(PetShop.Model.OrderInfo order)。</p><p> 2.用強(qiáng)類型的范型集合
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來做認(rèn)證和授權(quán)</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.整體架構(gòu):</b></p><p><b> 項目列表:</b></p><p> 從整體可以看出,Pet Shop 4的項目體系已經(jīng)很龐大,考慮的方面也較3.0更全面復(fù)雜。</p
59、><p><b> 項目分解:</b></p><p> 由于整體已經(jīng)有22個項目,所以,對于初學(xué)者不易接受,經(jīng)分解,可以大體上分幾塊去理解。</p><p> 3.Petshop 4中的設(shè)計模式:</p><p><b> 工廠模式:</b></p><p> 首當(dāng)其
60、沖的就是工廠模式,很容易就可以看出來,也是應(yīng)用最多的。</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> 模型設(shè)計</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è)計相應(yīng)的數(shù)據(jù)模型;</p><p><b> 控制器設(shè)計</b>&l
64、t;/p><p> 通過IIS可瀏覽主界面,根據(jù)客戶的請求來操作模型,并把模型的響應(yīng)結(jié)果由用戶界面展現(xiàn)給客戶</p><p><b> 視圖設(shè)計</b></p><p> 系統(tǒng)模塊開發(fā)中所用到的C#控件顯示頁面和后臺代碼</p><p><b> 數(shù)據(jù)庫設(shè)計</b></p><
65、;p> 數(shù)據(jù)庫設(shè)計是項目開發(fā)中非常重要的一個環(huán)節(jié),它是整個項目的根基,如果設(shè)計不好,在后來的系統(tǒng)開發(fā),維護(hù),變更和功能擴(kuò)充時,將會遇到非常大的困難,大量工作可能需要重新進(jìn)行。</p><p><b> 數(shù)據(jù)庫表設(shè)計的準(zhǔn)則</b></p><p> 數(shù)據(jù)庫設(shè)計一個表最好只存儲一個實體或?qū)ο蟮南嚓P(guān)信息,不同的實體最好存儲在不同的數(shù)據(jù)表中,如果實體還可以再劃分,
66、實體的劃分原則是最好能夠比當(dāng)前系統(tǒng)要開發(fā)的實體的顆粒度要小;數(shù)據(jù)庫表的信息結(jié)構(gòu)一定要合適,表的字段的數(shù)量一定不要過多;擴(kuò)充信息和動態(tài)變化的信息一定要分開在不同的表里;對于出現(xiàn)多對多這樣的表關(guān)系系統(tǒng),盡量不出現(xiàn)。</p><p><b> 數(shù)據(jù)庫表的設(shè)計</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)設(shè)計</b></p><p> 5.1 首頁登錄界面</p><p> 只有當(dāng)用戶輸入正確的口令和密碼時才顯示主頁面。主頁面中包括綜合辦公、科研機(jī)構(gòu)、科研人員、科研項目、科研經(jīng)費、科研成果、科研活動、報表分析、科研考核、科研審核、科研統(tǒng)計、年度報表、科研設(shè)置等模塊。點擊我所負(fù)責(zé)的報
69、表分析或年度報表,可以在左邊出現(xiàn)相應(yīng)的子模塊,右邊則是子模塊相應(yīng)的界面,我們可以通過該界面進(jìn)行各種操作。</p><p><b> 5.2 報表分析</b></p><p> 報表分析模塊下主要包括的子模塊有:論文/專著一覽表、研究項目/課題一覽表、教材成果一覽表、著作成果一覽表等,接下來將會著重介論文/專著一覽表。</p><p> 5
70、.2.1論文/專著一覽表(列表)</p><p> 結(jié)構(gòu)思路及主要代碼:</p><p> 去除列表中的查詢條件,增加查詢按鈕,以及查詢頁面。先拖動工具箱中的按鈕到Report_DisquisionList.aspx頁面,分別將值設(shè)為查詢、導(dǎo)出。其中查詢按鈕功能實現(xiàn)的是轉(zhuǎn)到查詢頁面。在此主要是通過javascript腳本語言實現(xiàn)的,其關(guā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> 導(dǎo)出功能:點擊列表中的導(dǎo)出按鈕,調(diào)用導(dǎo)出的方法,代碼如下:</p><p> protected void BtnExp_Click(object sender, EventArgs e)
89、</p><p> { </p><p> EnterpriseService.ExportService.ToExcel("Report.xls", this.DataGridList); //將當(dāng)前列表中的數(shù)據(jù)導(dǎo)出(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è)、科研考核得分等,該用戶界面包括的查功能、導(dǎo)出Word、導(dǎo)出Excel、打印功能。</p><p><b> 圖5.3.1</b></p><p> 結(jié)構(gòu)思路及主要代碼:</p><p> 首先需要在ReportPersonalYear.aspx源程序中用javascript實現(xiàn)導(dǎo)出Word、Excel、打印功能。其代碼如下:<
92、/p><p> <script language="javascript"></p><p> function AllAreaExcel()//指定頁面區(qū)域內(nèi)容導(dǎo)入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ū)域內(nèi)容導(dǎo)入Word</p><p><b> {</b></p><p> if(document.all("PrintA").rows.length==0)</p>
96、<p><b> {</b></p><p> alert("沒有內(nèi)容可導(dǎo)!");</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("無法調(diào)用Office對象,請確保您的機(jī)器已安裝了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 為導(dǎo)出數(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;//獲取當(dāng)前頁的html代碼</p>
102、<p> var sprnstr="<!--startprint-->";//設(shè)置打印開始區(qū)域</p><p> var eprnstr="<!--endprint-->";//設(shè)置打印結(jié)束區(qū)域</p><p> var prnhtml=bdhtml.substr(bdhtml.indexOf(sprnst
103、r)+17);//從開始代碼向后取html</p><p> prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//從結(jié)束代碼向前取html</p><p> window.document.body.innerHTML=prnhtml;</p><p> window.print();</p&g
104、t;<p> //恢復(fù)頁面,可再次打印</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)列表選擇不同年度、系別、人員顯示年度科研信息,關(guā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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-圖書管理系統(tǒng)
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文-圖書管理系統(tǒng)
- 圖書管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文——圖書管理系統(tǒng)
- 圖書管理系統(tǒng) 畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)-畢業(yè)論文
- 畢業(yè)論文--圖書管理系統(tǒng)
- 畢業(yè)論文——圖書管理系統(tǒng)
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文
- 圖書管理系統(tǒng)測試畢業(yè)論文
- 圖書管理系統(tǒng)畢業(yè)論文 (3)
- 圖書管理系統(tǒng)畢業(yè)論文7
評論
0/150
提交評論