




已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設(shè)網(wǎng) ()-大學(xué)生畢業(yè)設(shè)計站 ,免費(fèi)畢業(yè)設(shè)計論文 ,無憂無慮畢設(shè)網(wǎng) 大學(xué)生畢業(yè)設(shè)計 ,出售各類畢業(yè)設(shè)計源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費(fèi)視頻教程 ,我們將竭誠為您服務(wù)! 分分 布布 式式 網(wǎng)網(wǎng) 絡(luò)絡(luò) 考考 試試 系系 統(tǒng)統(tǒng) 原原 型型 分分 析析 及及 實(shí)實(shí) 現(xiàn)現(xiàn) 計算機(jī)中心:火焰晨晨 指導(dǎo)老師: * 摘 要 軟件工程在現(xiàn)代軟件開發(fā)中的作用越來越大,并且發(fā)展出了很多行之有效的軟件工程方法和建模語言。 UML( Unified Modeling Language,統(tǒng)一建模語言)是一種非常流行的,支持面對對象建模方法 的建模語言。到今天 UML 差不多已經(jīng)成為建模語言的事實(shí)標(biāo)準(zhǔn)。本文就采用面對對象的方法以 UML 為建模語言,使用 PowerDesigner這個 case工具分析設(shè)計一個分布式的 B/S結(jié)構(gòu)的基于 COM+和 XML 的網(wǎng)絡(luò)考試系統(tǒng)。并使用 Delphi、 VBScript、 ADO、 XML、 HTML 等編程工具、語言和技術(shù)實(shí)現(xiàn)了這個系統(tǒng)。 關(guān)鍵詞: UML COM+ Delphi ASP ADO XML Abstract Software Engineering is increasingly important in then modern software development. Today there are many functions and many software engineering methods. The UML (Unified Modeling Language) is one of they. In addition, its a popular and Object-Oriented based model language. The UML has almost been the international standard of model language. Using Object-Oriented Model and UML by case tools of PowerDesigner, the paper designs a distributed B/S constructed online test system, which is based on COM+ and XML. In order to realize the system a lots of tools and program languages are used, such as Delphi, VBScript, ADO, XML, and HTML etc. Key Words: UML COM+ Delphi ASP ADO XML 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 目 錄 分布式網(wǎng)絡(luò)考試系統(tǒng)原型分析及實(shí)現(xiàn) 1 1. 問題定義 4 2. 需求分析 4 2.1. 系統(tǒng)目標(biāo) 4 2.2. 可行性分析 4 2.2.1. 現(xiàn)有的數(shù)據(jù)庫應(yīng)用程序的分層結(jié)構(gòu) 4 . 傳統(tǒng)二層結(jié)構(gòu) 4 . 三層數(shù)據(jù)庫應(yīng)用結(jié)構(gòu) 5 . 多層分布式數(shù)據(jù)庫系統(tǒng) 5 2.2.2. 網(wǎng)絡(luò)分布式多層應(yīng)用系統(tǒng) 6 2.2.3. XML 語言 7 2.3. 本系統(tǒng)的方案選擇 8 2.4. 建模工具的選擇 8 3. 基于 UML 的系統(tǒng)分析 8 3.1. 用例圖 8 3.1.1. 用戶關(guān)系圖 8 3.1.2. 系統(tǒng)用例圖 9 3.1.3. 用例圖利用情況清單 9 3.2. 順序圖 10 3.2.1. 老師活動順序圖 10 3.2.2. 學(xué)生活動順序圖 11 3.2.3. 動作清單 11 3.2.4. 通訊清單 12 3.3. 類圖 13 3.3.1. 類圖一 13 3.3.2. 類圖二 14 3.3.3. 類清單 14 3.3.4. 類方法清單 14 3.4. 網(wǎng)站頁面 布置圖 16 4. 數(shù)據(jù)庫的分析設(shè)計 17 4.1. 數(shù)據(jù)庫概念模型( Conceptual Data Model) 17 4.1.1. 圖 17 4.1.2. 資料清單 17 4.1.3. 實(shí)體清單 18 4.1.4. 實(shí)體的識別字清單 18 4.1.5. 關(guān)系清單 19 4.2. 數(shù)據(jù)庫物理模型( Physical Data Model) 19 4.2.1. 圖 19 4.2.2. 物理模型欄位清單 19 4.2.3. 表格索引清單 20 4.2.4. 表格引鍵清單 21 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 4.2.5. 參考清單 21 4.2.6. 表格清單 21 4.3. SQL 語句 21 5. 系統(tǒng)實(shí)現(xiàn) 26 5.1. 開發(fā)平臺的選擇 26 5.2. 編程工具的選擇 27 5.3. XML 和網(wǎng)頁編輯工具的選擇 27 5.4. 系統(tǒng)編碼 27 5.4.1. 源程序文件清單 27 . 網(wǎng)站文件清單: 27 . COM+組件源程序文件清單 28 5.4.2. 程序核心代碼 28 . 學(xué)生進(jìn)行考試頁面的 XLST 文件: Testing.xsl 28 . 定制 ASP 對象主代碼 32 . 學(xué)生對象 COM+組件主代碼 39 . 老師對象 COM+組件主代碼 47 . 管理員 COM+組件主代碼 47 5.4.3. 程序運(yùn)行截圖 47 . 登錄頁面(系統(tǒng)主界面) 47 . 學(xué)生維護(hù)頁主界面 47 . 學(xué)生修改個人資料頁面 47 . 學(xué)生查詢成績頁面 47 . 學(xué)生參加考試頁面 47 . 進(jìn)行考試頁面 47 . 老師維護(hù)頁主界面 47 . 老師生成試卷頁面 47 . 老師修改個人資料頁面 47 0. 管理員維護(hù)頁主界面 47 1. 管理員增加老師頁面 47 2. 管理員增加學(xué)生頁面 47 3. 管理員修改密碼頁面 47 6. 系統(tǒng)安裝分發(fā) 48 6.1. 數(shù)據(jù)庫的設(shè)置 48 6.2. 配置 COM+環(huán)境 49 6.3. IIS 的配置 50 6.4. 注意事項 50 7. 系統(tǒng)不足與展望 50 8. 致謝 51 9. 參考文獻(xiàn) 51 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 1. 問題定義 現(xiàn)在網(wǎng)絡(luò)正在 改變著傳統(tǒng)的教育方式,網(wǎng)絡(luò)教育也越來越多,就算是傳統(tǒng)的教育方式下,把考試搬到網(wǎng)絡(luò)上也是一種趨勢。考試的無紙化網(wǎng)絡(luò)化不僅能有效減少老師的工作量,很好的利用計算機(jī)的優(yōu)勢,提高工作效率,也能使考試更加公平、公正。所以就一定要構(gòu)建一個性能良好安全可靠的可以滿足大量學(xué)生同時使用的網(wǎng)絡(luò)考試系統(tǒng)。 本原型系統(tǒng)主要功能如下: 1. 學(xué)生可以在網(wǎng)上進(jìn)行考試,考試結(jié)束后由計算機(jī)批改試題給出分?jǐn)?shù),并記錄成績。 2. 學(xué)生在還可以在網(wǎng)上查詢自己的考試成績,修改密碼等個人資料。 3. 老師可以在網(wǎng)上出題,修改密碼等個人資料。 4. 管理員可以在網(wǎng)上建立學(xué)生 、老師等用戶。 2. 需求分析 2.1. 系統(tǒng)目標(biāo) 本網(wǎng)絡(luò)考試系統(tǒng)應(yīng)該能滿足學(xué)校幾千學(xué)生在任何地方、任何時間都能參加 考試。本系統(tǒng)要讓學(xué)生、老師和管理員在網(wǎng)絡(luò)上可以維護(hù)自己的個人資料。學(xué)生也可以在網(wǎng)絡(luò)上通過本系統(tǒng)查詢自己考試的成績;老師能通過網(wǎng)絡(luò)生成試卷;管理員在網(wǎng)絡(luò)上通過本系統(tǒng)增加學(xué)生和老師;另外為了讓考試比較公平,試卷的試題由計算機(jī)隨機(jī)從題庫抽取。 2.2. 可行性分析 2.2.1. 現(xiàn)有的數(shù)據(jù)庫應(yīng)用程序的分層結(jié)構(gòu) . 傳統(tǒng)二層結(jié)構(gòu) 傳統(tǒng)的二層式程序,也就是客戶 /服務(wù)器( Client/Server)結(jié)構(gòu),這種程序相對簡單、清楚、開發(fā)容易,其結(jié)構(gòu)如 圖 1。客戶機(jī)都通過網(wǎng)絡(luò)連接到同一個數(shù)據(jù)庫上,不過這樣結(jié)構(gòu)問題很多,最主要的就是性能較差維護(hù)困難已經(jīng)不適應(yīng)在因特網(wǎng)( Internet)上使用。數(shù)據(jù)同一性和完整性難以控制。同時由于每一個客戶機(jī)都必須安裝特定的軟件,且這種客戶端軟件體積還比較大,用戶使用起來非常不方便,所以目前已經(jīng)面臨淘汰。不過這樣的系統(tǒng)開發(fā)比較簡單,對開發(fā)人員的技術(shù)要求也不高,在內(nèi)部局域網(wǎng)上使用還有一定的市場。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: (圖 1) . 三層數(shù)據(jù)庫應(yīng)用結(jié)構(gòu) 三層結(jié)構(gòu)是目前用得最多的,這種結(jié)構(gòu)比傳 統(tǒng)的 C/S 結(jié)構(gòu)增加了一個應(yīng)用程序服務(wù)器,應(yīng)用程序服務(wù)器包括了統(tǒng)一的界面、業(yè)務(wù)規(guī)則和數(shù)據(jù)處理邏輯等等,這樣客戶端程序就可以做得比較小,也就是常說的瘦客戶,更由于業(yè)務(wù)規(guī)則和數(shù)據(jù)處理邏輯的集中在服務(wù)器上統(tǒng)一管理,客戶端無須進(jìn)行復(fù)雜的計算,也不會因為錯誤的操作而影響到其他的用戶,所以他的可靠性、穩(wěn)定性和效率都比較好。當(dāng)然開發(fā)這樣的系統(tǒng)在技術(shù)上和成本上要求就要多一些。(其結(jié)構(gòu)如圖 2) 圖 2 . 多層分布式數(shù)據(jù)庫系統(tǒng) 近年來隨著因特網(wǎng)的快速發(fā)展,許多企業(yè)都 開始上網(wǎng),因此基于網(wǎng)絡(luò)的營銷系統(tǒng)、 MIS 系統(tǒng)、 ERP 系統(tǒng)都快速發(fā)展起來了,這個時候僅僅三層的應(yīng)用程序已經(jīng)不能滿足實(shí)際需求了。因此又發(fā)展出來了多層分布式的數(shù)據(jù)庫系統(tǒng)。在多層分布式系統(tǒng)中,人們把中間的應(yīng)用服務(wù)器再拆分為很多比較小的系統(tǒng),均勻分散到多臺計算機(jī)中處理,這樣就能得到更好的性能并且降低了程序復(fù)雜度。在多層分布式數(shù)據(jù)庫系統(tǒng)中必須要有一個所謂的中間件來支持和管理分散的業(yè)務(wù)處理程序。 在 Windows 平臺下微軟公司推出了的 Windows DNA( Distributed interNet Application Architecture,分布式網(wǎng)絡(luò)應(yīng)用結(jié)構(gòu))策略。把 COM+作為 Windows DNA 策略中的中間件。在 Windows2000 以上操作系統(tǒng)中, COM+成為了系統(tǒng)的無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 一部分。 COM+為中間層提供了負(fù)載平衡、對象池( Object Pooling)、事務(wù)特性等一系列的強(qiáng)力支持,并且在 COM+中工作的程序受到操作系統(tǒng)的保護(hù),從而最大的保證了系統(tǒng)的安全、穩(wěn)定和高效。當(dāng)然開發(fā)這樣的系統(tǒng)要求開發(fā)人員必須掌握 COM( Component Object Model,組件對象模型)和 COM+技術(shù),開發(fā)難度和成本更大了。 圖 3 2.2.2. 網(wǎng)絡(luò)分布式多層應(yīng)用系統(tǒng) 近幾年來因特網(wǎng)飛速發(fā)展,人們的生活因為網(wǎng)絡(luò)而在慢慢的改變。現(xiàn)在的個人電腦( PC)上都安裝了瀏覽器( Browser)因此人們就利用瀏覽器來作為客戶端程序,萬維網(wǎng)服務(wù)器( Web Server)作為中間層和客戶端溝通服務(wù)器,這就是現(xiàn)在流行的 B/S( Browser/Server)結(jié)構(gòu)方式。在這種結(jié)構(gòu)下,本地的計算機(jī)無須安裝任何客戶端程序,只要有瀏覽器,可以使用因特網(wǎng)就可以使用系統(tǒng)了。他不僅僅減少了開發(fā)客戶端帶來的成本,最關(guān)鍵的 是,大大減少了系統(tǒng)維護(hù)的成本和時間,當(dāng)修改系統(tǒng)的時候不需要對客戶做任何的改動。并且客戶也可以在任何計算機(jī)上使用你的系統(tǒng)而不要做特別的設(shè)置。 在 B/S 系統(tǒng)中以微軟公司的 IE 瀏覽器、和 IIS/ASP( Internet Information Server/Active Server Pages)服務(wù)器應(yīng)用最為廣泛,使用最方便,對中文的支持也是最好的。 但是, ASP 有一個天生的缺點(diǎn),就是 ASP 代碼 是采用的 VBScript、 JScript或者 PHP 等腳本語言編寫,運(yùn)行速度相當(dāng)?shù)穆液?HTML 代碼是混在一起的, 使 ASP 程序員既需要考慮與數(shù)據(jù)庫打交道, 又 需要關(guān)心如何與 HTML 配合,有時還需要用 ASP 直接生成 HTML 代碼。 這樣構(gòu)建起來的系統(tǒng)當(dāng)然是不能滿足中、大型網(wǎng)絡(luò)應(yīng)用的需要。 不過好在 ASP 可以通過腳本語言調(diào)用基于 COM 的程序,而得到功能和性能上的提升。在微軟公司最新的 IIS5.0 系統(tǒng)上更可以讓我們使用 VC+、 VB、Delphi 等開發(fā)工具建立定制的運(yùn)行于 COM+環(huán)境中的 ASP 對象,這種對象,還可以和其他的 COM+組件協(xié)同工作。這樣一來我們就可以用 B/S 方式構(gòu)建多層分布式的應(yīng)用系統(tǒng)來滿足大型網(wǎng)絡(luò)應(yīng)用。 這也就是微軟公 司所推出的 Web 分布式多層應(yīng)用程序結(jié)構(gòu)(其結(jié)構(gòu)如圖 4)無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 也就是我們常聽到的 Windows DNA 策略( Windows Distributed internet Application Architecture,視窗系統(tǒng)分布式網(wǎng)絡(luò)應(yīng)用結(jié)構(gòu))。不過開發(fā)這樣的系統(tǒng)需要開發(fā)人員掌握更多的技術(shù),如: ASP、 VBScript、 JavaScript、 HTML/DHTML、ADO、 COM/DCOM、 MTS/COM+等等,同時學(xué)習(xí)這么多的技術(shù)這對程序員來說是一個不小的挑戰(zhàn)! 圖 4 2.2.3. XML 語言 XML( eXtended Markup Language)是一種標(biāo)記語言,就象我們熟悉的 HTML一樣,但是 XML 的標(biāo)簽是由人們根據(jù)自己的需要來定制的,也就是說,任何詞和字都可以做為標(biāo)簽來用,只要能準(zhǔn)確的表達(dá)數(shù)據(jù)的屬性。例如當(dāng)我們要表達(dá)一個人的姓名的時候用 HTML 也許我們會這樣做:“ 張三 ”,但如果用 XML 我們就可以這樣做:“ 張三 ”。數(shù)據(jù)表達(dá)的準(zhǔn)確性 XML絕對比 HTML 好多了!準(zhǔn)確表達(dá)數(shù)據(jù)的含義這就是 XML 帶來的最大好處。 有了 XML,我們就能 定制各行各業(yè)的 XML 標(biāo)簽,這樣對于要傳輸?shù)臄?shù)據(jù)就能用文本方式傳送,并且只要對方有一份標(biāo)簽的定義文件就可以理解我們所表達(dá)的意思,從而在任何程序之間,不管他是用什么語言編寫的;任何系統(tǒng)之間,不管他是運(yùn)行在什么 CPU 上的,是 Windows、 Linux 還是 MAC OS;任何人之間,無論他是什么國籍,說什么語言,是否懂得你的語言,自由交換信息了。而這些正適應(yīng)了目前因特網(wǎng)的發(fā)展,適應(yīng)了人們溝通交流的需要。 XML 出現(xiàn)短短幾年就得到了廣泛的應(yīng)用,目前新推出的軟件幾乎都會支持XML。例如微軟的 Dot Net 系列軟件、 Office 系列軟件等等。不出幾年, XML就會代替 HTML 成為因特網(wǎng)上標(biāo)準(zhǔn)的標(biāo)記語言。 本系統(tǒng)引入 XML 語言表達(dá)數(shù)據(jù)的好處是使得系統(tǒng)中網(wǎng)頁的顯示和系統(tǒng)處理的數(shù)據(jù)分離,可以使系統(tǒng)不必去處理那些用于網(wǎng)頁界面的代碼,減小開發(fā)系統(tǒng)的復(fù)雜度,減少系統(tǒng)處理時間,減少網(wǎng)絡(luò)傳送量,從而提高效率。另外我們知道目前一般程序員開發(fā)網(wǎng)站的時候都要同時完成網(wǎng)頁的制作,但一般來說程序員都不可能設(shè)計出比專業(yè)的美工還好的網(wǎng)頁來。不過請來專業(yè)美工后怎么和程序員進(jìn)行合作呢?懂程序開發(fā)的美工可不會太多。而 XML 就比較好的解決了這個問題,他使程序員不必 去做網(wǎng)頁,網(wǎng)頁設(shè)計者不用去管程序。只要定義好XML 標(biāo)簽,程序員就可以用他來表示數(shù)據(jù),而設(shè)計網(wǎng)頁的也可以用他來制作網(wǎng)無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 頁。 2.3. 本系統(tǒng)的方案選擇 本系統(tǒng)應(yīng)用于因特網(wǎng),并且要滿足一個學(xué)校幾千學(xué)生考試的需要,因此本系統(tǒng)決定采用微軟公司所推出的 Web 分布式多層應(yīng)用程序結(jié)構(gòu),并且數(shù)據(jù)使用XML 表示。 2.4. 建模工具的選擇 以 UML 語言建模應(yīng)該是以 Rational 公司的 Rose 工具為最好。不過 Rose 太貴了,并且 Rose 比較龐大,使用不是太方便。 Sybase 公司出品的 PowerDesigner建模工具也支持 UML,還提供一個 45 天的試用版,在數(shù)據(jù)庫建模上也有他獨(dú)到的地方。因此建模工具就選用 PowerDesigner。 3. 基于 UML 的系統(tǒng)分析 3.1. 用例 tc 圖表用戶圖 l 4圖 3.1.1. 用戶關(guān)系圖 學(xué)生老師管理員用戶 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 3.1.2. 系統(tǒng)用例圖 學(xué)生 選擇考試登錄維護(hù)題庫生成考試查詢成績老師管理員管理老師賬號管理學(xué)生賬戶更新老師的資料更新學(xué)生的資料修改管理員的密碼 3.1.3. 用例圖利用情況清單 名稱 代碼 父 選擇考試 ChoseTest Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 登錄 Login Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 維護(hù)題庫 WHTK Object-Oriented Model 網(wǎng) 絡(luò)考試系統(tǒng) (OOM) 生成考試 shchksh Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 查詢成績 QueryScore Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 管理老師賬號 CreateTeacher Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 管理學(xué)生賬戶 CreateStudent Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 更新老師的資料 UpDateTeacher Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 更新學(xué)生的資料 UpDateStudent Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 修改管理員的密碼 UpDateAdmin Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 3.2. 順序圖 3.2.1. 老師活動順序圖 登錄生成試卷維護(hù)確認(rèn)密碼 試卷老師學(xué)生 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 3.2.2. 學(xué)生活動順序圖 確認(rèn)登錄查詢成績參加考試提交回答返回成績返回成績請求試題返回試題確認(rèn)考生考試成績記錄成績學(xué)生密碼 試卷 試題確認(rèn)學(xué)生可以參加考試 3.2.3. tc 動作清單 l 4動作清單 名稱 代碼 父 學(xué)生 Student Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 老師 Teacher Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 管理員 Admin Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 用戶 User Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 3.2.4. tc 通訊清單 l 4通訊清單 名稱 代碼 父 接收者 輸送者 確認(rèn) True Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) 學(xué)生 密碼 登錄 Login Object-Oriented Model網(wǎng)絡(luò)考試系統(tǒng) 密碼 學(xué)生 查詢成績 QueryScore Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試卷 學(xué)生 參加考試 Testing Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試卷 學(xué)生 提交回答 Submit Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試題 試卷 返回成績 ReScore Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試卷 試題 返回 成績 ReScore Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 學(xué)生 試卷 登錄 Login Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 密碼 老師 生成試卷 CreatePaper Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試卷 老師 維護(hù) weihu Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 學(xué)生 老師 請求試題 GetQuestion Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試題 試卷 返回試題 ReQuestions Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試卷 試題 確認(rèn) Sure Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 老師 密碼 確認(rèn)考生 Sure Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試卷 試卷 考試成績 Score Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 學(xué)生 試卷 記錄成績 WriteScore Object-Oriented Model 網(wǎng)絡(luò)考試系統(tǒng) (OOM) 試卷 試卷 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 3.3. 類圖 3.3.1. 類圖一 學(xué)生+修改 ()增加 ()刪除 ()登錄 ()進(jìn)行考試 ()批改試卷 (): void: void: void: void: void: void老師+修改 ()增加 ()刪除 ()登錄 (): void: void: void: void試題用戶+修改 ()增加 ()刪除 ()登錄 (): void: void: void: void傳遞不同的標(biāo)志,以選擇不同的數(shù)據(jù)表格進(jìn)行相同的操作管理員+修改自己密碼 ()增加用戶 ()刪除用戶 ()登錄 (): void: void: void: void管理員對不同用戶的管理,依賴于不同用戶自身的方法。并且管理員只能創(chuàng)建或者刪除用戶,不能修改用戶的個人資料。密碼+登錄 ()修改 (): void: void用戶登錄最后由密碼類實(shí)現(xiàn) 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 3.3.2. 類圖二 試題+修改 ( )增加 ( )刪除 ( ): void: void: void試卷+-查詢成績 ( )生成試卷 ( )評分 ( )取得試題 ( ): void: void: void: void老師+修改 ( )增加 ( )刪除 ( )登錄 ( ): void: void: void: void試題老師類包含試題類的方法試卷類可以調(diào)用試題類的取得試題方法 3.3.3. 類清單 3.3.4. 類 方法 清單 tc 類清單 l 4 名稱 代碼 結(jié)果類型 可見性 抽象 最終點(diǎn) 靜態(tài) 量詞 登錄 Login void public FALSE FALSE FALSE 密碼 名稱 代碼 父 產(chǎn)生 可見性 抽象 類別類型 密碼 PWD Package 數(shù)據(jù)存取組件 TRUE public FALSE Class 試題 Questions Package 數(shù)據(jù)存取組件 TRUE public FALSE Class 試卷 Paper Package 數(shù)據(jù)存取組件 TRUE public FALSE Class 學(xué)生 Students Package 數(shù)據(jù)存取組件 TRUE public FALSE Class 老師 Teacher Package 數(shù)據(jù)存取組件 TRUE public FALSE Class 用戶 Users Package 數(shù)據(jù)存取組件 TRUE public FALSE Class 管理員 Admin Package 數(shù)據(jù)存取組件 TRUE public FALSE Class 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 修改 UpDate void public FALSE FALSE FALSE 密碼 修改 UpData void public FALSE FALSE FALSE 試題 增加 Add void public FALSE FALSE FALSE 試題 刪除 Del void public FALSE FALSE FALSE 試題 查詢成績 QueryScore void public FALSE FALSE FALSE 試卷 生成試卷 CreatePaper void public FALSE FALSE FALSE 試卷 評分 PutScore void public FALSE FALSE FALSE 試卷 取得試題 GetPaper void private FALSE FALSE FALSE 試卷 修改 UpDate void public FALSE FALSE FALSE 學(xué)生 增加 Add void public FALSE FALSE FALSE 學(xué)生 刪除 Del void public FALSE FALSE FALSE 學(xué)生 登錄 Login void public FALSE FALSE FALSE 學(xué)生 進(jìn)行考試 Testing void public FALSE FALSE FALSE 學(xué)生 批改試卷 CheckPaper void public FALSE FALSE FALSE 學(xué)生 修改 Edit void public FALSE FALSE FALSE 老師 增加 Add void public FALSE FALSE FALSE 老師 刪除 Del void public FALSE FALSE FALSE 老師 登錄 Login void public FALSE FALSE FALSE 老師 修改 UpDate void public FALSE FALSE FALSE 用戶 增加 Add void public FALSE FALSE FALSE 用戶 刪除 Del void public FALSE FALSE FALSE 用戶 登錄 Login void public FALSE FALSE FALSE 用戶 修改自己密碼 UpDate void public FALSE FALSE FALSE 管理員 增加用戶 Add void public FALSE FALSE FALSE 管理員 刪除用戶 Del void public FALSE FALSE FALSE 管理員 登錄 Login void public FALSE FALSE FALSE 管理員 注:因為所使用的 PowerDesigner 并不支持 Delphi 所使用的 Object Pascal 編程語言,所以類的分析中省略了參數(shù)返回值等內(nèi)容。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 3.4. 網(wǎng)站頁面布置圖 密碼驗證學(xué)生老師Students.htm 學(xué)生登錄首頁Index.htmTeachers.htm 老師登錄首頁Admin.htm 管理員登錄首頁UpDateT.htm 維護(hù)自身屬性UpDateS.htm 維護(hù)自身屬性UpDateA.asp 維護(hù)自身屬性Test.htm 進(jìn)行考試QueryScore.htm 查詢成績CreatePaper.htm 生成考試CreateUser.asp 維護(hù)用戶信息管理員 注: 密碼驗證構(gòu)件分別為老師、學(xué)生、管理員三個構(gòu)件的登錄( Login)方法調(diào)用 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 4. 數(shù)據(jù)庫的分析設(shè)計 4.1. 數(shù)據(jù)庫概念模型( Conceptual Data Model) 4.1.1. 圖 參加考試生成老師老師編號姓名密碼科目電子郵件 A10A12A16VA50VA35老師編號 學(xué)生學(xué)號姓名年齡性別入學(xué)時間密碼電子郵件 A10A12SIA2DTA16VA35學(xué)號 試卷流水號試卷號科目成績 NOIVA50SI流水號 試題問題號科目問題選項1選項2選項3選項4答案 NOVA50VA200VA100VA100VA100VA100A1問題號 管理員姓名密碼 A12A16姓名 管理員有且僅有一個,名為Ad mi n老師賬戶由管理員分配試卷由老師生成學(xué)生賬號由老師分配試題由老師管理 4.1.2. 資料清單 名稱 代碼 定義域 數(shù)據(jù)類型 長度 精確度 答案 Answer A1 1 選項 4 Select4 VA100 100 電子郵件 Email VA35 35 電子郵件 Email VA35 35 選項 3 Select3 VA100 100 選項 2 Select2 VA100 100 選項 1 Select1 VA100 100 問題 Question VA200 200 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 問題號 QuestionID NO 成績 Score SI 流水號 ID NO 入學(xué)時間 EnterTime DT 性別 Sex A2 2 年齡 Age SI 學(xué)號 StudentID A10 10 科目 Subject VA50 50 密碼 PWD A16 16 姓名 Name A12 12 老師編號 TeacherID A10 10 試卷號 PaperID I 4.1.3. tc 實(shí)體清單 l 3實(shí)體清單 名稱 代碼 父 產(chǎn)生 管理員 Admin Conceptual Data Model NetTest (CDM) TRUE 老師 Teachers Conceptual Data Model NetTest (CDM) TRUE 學(xué)生 Students Conceptual Data Model NetTest (CDM) TRUE 試卷 Papers Conceptual Data Model NetTest (CDM) TRUE 試題 Questions Conceptual Data Model NetTest (CDM) TRUE 4.1.4. tc 實(shí)體的識別字清單 l 3實(shí)體的識別字清單 名稱 代碼 父 姓名 Key_Name Entity 管理員 老師編號 PK_TeacherID Entity 老師 學(xué)號 PK_StudentID Entity 學(xué)生 流水號 PK_ID Entity 試卷 問題號 PK_QuestionID Entity 試題 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 4.1.5. tc 關(guān)系清單 l 3關(guān)系清單 名稱 代碼 父 實(shí)體 2 實(shí)體 1 參 加 考試 Testing Conceptual Data Model NetTest (CDM) 試卷 學(xué)生 生成 Create Conceptual Data Model NetTest (CDM) 試卷 老師 4.2. 數(shù)據(jù)庫物理模型( Physical Data Model) 4.2.1. 圖 FK_PAPERS_CREATE_TEACHERSFK_PAPERS_TESTING_STUDENTS老師老師編號姓名密碼科目電子郵件char(10)char(12)char(16)varchar(50)varchar(35)學(xué)生學(xué)號姓名年齡性別入學(xué)時間密碼電子郵件char(10)char(12)smallintchar(2)datetimechar(16)varchar(35)試卷流水號老師編號學(xué)號試卷號科目成績bigintchar(10)char(10)intvarchar(50)smallint試題問題號科目問題選項1選項2選項3選項4答案bigintvarchar(50)varchar(200)varchar(100)varchar(100)varchar(100)varchar(100)char(1)管理員姓名密碼char(12)char(16)老師賬戶由管理員分配試卷由老師生成管理員有且僅有一個,名為Admin試題由老師管理學(xué)生賬號由老師分配 4.2.2. 物理模型欄位清單 名稱 代碼 老師編號 TeacherID 姓名 Name 密碼 PWD 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 科目 Subject 電子郵件 Email 學(xué)號 StudentID 姓名 Name 年齡 Age 性別 Sex 入學(xué)時間 EnterTime 密碼 PWD 電子郵件 Email 流水號 ID 老師編號 TeacherID 學(xué)號 StudentID 試卷號 PaperID 科目 Subject 成績 Score 問題號 QuestionID 科目 Subject 問題 Question 選項 1 Select1 選項 2 Select2 選項 3 Select3 選項 4 Select4 答案 Answer 姓名 Name 密碼 PWD 4.2.3. tc 表格索引清單 l 4表格索引清單 名稱 代碼 唯一的 群 主要的 外來鍵 代替鍵 表格 姓名 Index_Name FALSE FALSE FALSE FALSE FALSE 老師 姓名 Index_Name TRUE TRUE TRUE FALSE FALSE 學(xué)生 學(xué)號 Index_StudentID FALSE FALSE FALSE TRUE FALSE 試卷 科目 Index_SubjectID FALSE FALSE FALSE FALSE FALSE 試題 姓名 Index_Name FALSE FALSE FALSE FALSE FALSE 管理員 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 4.2.4. tc 表格引鍵清單 l 4表格引鍵清單 名稱 代碼 表格 老師編號 PK_TeacherID 老師 學(xué)號 PK_StudentID 學(xué)生 流水號 PK_ID 試卷 問題號 PK_QuestionID 試題 姓名 Key_Name 管理員 4.2.5. tc 參考清單 l 4參考清單 名稱 代碼 父表格 子表格 參加考試 Testing 學(xué)生 試卷 生成 Create 老師 試卷 4.2.6. tc 表格清單 l 4表格清單 名稱 代碼 老師 Teachers 學(xué)生 Students 試卷 Papers 試題 Questions 管理員 Admin 4.3. SQL語句 /*=*/ /* Database name: NetTest (PDM) */ /* DBMS name: Microsoft SQL Server 2000 */ /* Created on: 2002-6-11 11:28:20 */ /*=*/ alter table NetTest.Papers drop constraint FK_PAPERS_CREATE_TEACHERS go 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: alter table NetTest.Papers drop constraint FK_PAPERS_TESTING_STUDENTS go if exists (select 1 from sysindexes where id = object_id(NetTest.Admin) and name = Index_Name and indid 0 and indid 0 and indid 0 and indid 0 and indid = 0 ), constraint PK_PAPERS primary key (ID) ) go /*=*/ /* Index: Index_StudentID */ /*=*/ create index Index_StudentID on NetTest.Papers ( StudentID ) go 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: /*=*/ /* Table: Questions */ /*=*/ create table NetTest.Questions ( QuestionID bigint identity, Subject varchar(50) not null, Question varchar(200) not null, Select1 varchar(100) not null, Select2 varchar(100) not null, Select3 varchar(100) not null, Select4 varchar(100) not null, Answer char(1) not null, constraint PK_QUESTIONS primary key (QuestionID) ) go /*=*/ /* Index: Index_SubjectID */ /*=*/ create index Index_SubjectID on NetTest.Questions ( Subject ) go /*=*/ /* Table: Students */ /*=*/ create table NetTest.Students ( StudentID char(10) not null, Name char(12) not null, Age smallint not null constraint CKC_AGE_STUDENTS check (Age between 0 and 100), Sex char(2) not null, EnterTime datetime not null, PWD char(16) not null, Email varchar(35) null, constraint PK_STUDENTS primary key (StudentID) ) go /*=*/ 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: /* Table: Teachers */ /*=*/ create table NetTest.Teachers ( TeacherID char(10) not null, Name char(12) not null, PWD char(16) not null, Subject varchar(50) not null, Email varchar(35) null, constraint PK_TEACHERS primary key (TeacherID) ) go /*=*/ /* Index: Index_Name */ /*=*/ create index Index_Name on NetTest.Teachers ( Name ) go alter table NetTest.Papers add constraint FK_PAPERS_CREATE_TEACHERS foreign key (TeacherID) references NetTest.Teachers (TeacherID) go alter table NetTest.Papers add constraint FK_PAPERS_TESTING_STUDENTS foreign key (StudentID) references NetTest.Students (StudentID) go 5. 系統(tǒng)實(shí)現(xiàn) 5.1. 開發(fā)平臺的選擇 本系統(tǒng)由于是采用的微軟公司所推出的分布式 Web 應(yīng)用構(gòu)架,所以開發(fā)平臺使用了 Windows2000,數(shù)據(jù)庫選用 SQL Server2000, Web 服務(wù)器程序使用無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: IIS5.0。由于使用了 XML,所以客戶端必須是 IE5.0 以上版本的瀏覽器才能正常使用本系統(tǒng)。 5.2. 編程工具的選擇 目前比較流行的開發(fā)工具 VC+、 VB 和 Delphi 等都可以實(shí)現(xiàn)本程序的中間件 COM+程序的開發(fā)。使用 VC+可以得到最好的速度,最大的靈活性,最強(qiáng)大的功能,但使用 VC+開發(fā)系統(tǒng)所要花費(fèi)的時間和開發(fā)成本足以抵消掉他所帶來的好 處;使用 VB 來開發(fā)花費(fèi)的時間是少了,可是 VB 是解釋性的語言,這樣的系統(tǒng)運(yùn)行速度會比 VC+開發(fā)的相同的系統(tǒng)差不少; Delphi 是 Borland 公司出品的 Windows 下的快速開發(fā)工具,具有 VB 的開發(fā)效率和 VC+程序的運(yùn)行速度,所以用來開發(fā)本系統(tǒng)是最合適的選擇。 5.3. XML和網(wǎng)頁編輯工具的選擇 XML 的開發(fā)工具我試過好幾個,可都不理想,不是使用不方便就是對中文的支持不好。最后只能用 Windows 下的記事本( notepad.exe)手工書寫。這樣一來效率很底,也許正因為這個原因 XML 才沒有 HTML 應(yīng)用多。希望不久 以后也能出現(xiàn)比較好用的 XML 可視化編輯工具。 網(wǎng)頁的編輯工具比較好選, Dreamweaver 功能最強(qiáng)大使用方便,并且他還提供 30 天試用版,是不二之選。 5.4. 系統(tǒng)編碼 5.4.1. 源程序文件清單 . 網(wǎng)站文件清單: .nettest 的目錄 . . admin admin.asp images index.htm login.asp NetTest.asp student student.asp style.css SubmitPaper.asp teacher teacher.asp test.asp update.asp .nettestadmin 的目錄 . . admin.htm createstudent.htm createteacher.htm update.htm 4 個文件 14,685 字節(jié) 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: .nettestimages 的目錄 . . bg1.gif main.gif studies_02.gif .netteststudent 的目錄 . . QueryScore.xsl SelectTest.xsl Student.xsl style.css Testing.xsl UpDate.htm .nettestteacher 的目錄 . . createpaper.htm createquestions.htm teacher.xsl UpDate.htm . COM+組件源程序文件清 單 5.4.2. 程序核心代碼 因為本系統(tǒng)源代碼比較多,在這里就僅僅列出比較重要的核心代碼 . 學(xué)生進(jìn)行考試頁面的 XLST文件: Testing.xsl 進(jìn)行考試! 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: .: 解放軍后勤工程學(xué)院網(wǎng)絡(luò)考試系統(tǒng) :. 進(jìn)行考試 考試: 、 A 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: A B B C C D 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: D 設(shè)計制作 (C) 火焰晨晨 2001-2002 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: . 定制 ASP對象主代碼 unit uMain; $WARN SYMBOL_PLATFORM OFF interface uses ComObj, ActiveX, AspTlb, NetTest_TLB, StdVcl, MTSStu_TLB, MTSTeacher_TLB, MTSAdmin_TLB; type TNetTestASP = class(TASPMTSObject, INetTestASP) private protected procedure CopyRight; safecall; procedure Login; safecall; procedure Admin; safecall; procedure Student; safecall; procedure Teacher; safecall; procedure Testing; safecall; procedure UpDate; safecall; procedure SubmitPaper; safecall; end; implementation uses ComServ; const xmlTitle: WideString = ; xsltS: WideString = ; xsltSQS: WideString = ; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: xsltSST: WideString = ; xsltST: WideString = ; xsltT: WideString = ; procedure TNetTestASP.CopyRight; begin Response.Write(本程序由火焰晨晨獨(dú)立制作,并作為畢業(yè)設(shè)計 + 保留所有版權(quán), All Rights Resaved + 有任何問題請 Email 到: ); end; procedure TNetTestASP.Login; var tmpStr, UserID, tmpResult: WideString; PWD: WideString; Student: IMTSDMStu; Teacher: IMTSDMTeacher; Admin: IMTSDMAdmin; begin UserID := Request.Form.ItemUserName; PWD := Request.Form.ItemPWD; tmpStr := Request.Form.ItemSubmit; if tmpStr = 學(xué)生登錄 then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); tmpResult := Student.Login(UserID, PWD); if (tmpResult = 密碼或用戶名錯誤!請重試。 ) or (tmpResult = 數(shù)據(jù)庫讀取錯誤!請和管理員聯(lián)系! ) then Response.Write(tmpResult) else begin Session.Set_Value(UserType, 1); Session.Set_Value(UserID, UserID); Response.Write(xmlTitle + xsltS + tmpResult); end; end else if tmpStr = 老師登錄 then begin 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: Teacher := CoMTSDMTeacher.CreateRemote(Sun1980426); tmpResult := Teacher.Login(UserID, PWD); if (tmpResult = 密碼或用戶名錯誤!請重試。 ) or (tmpResult = 數(shù)據(jù)庫讀取錯誤!請和管理員聯(lián)系! ) then Response.Write(tmpResult) else begin Session.Set_Value(UserType, 2); Session.Set_Value(UserID, UserID); Response.Write(xmlTitle + xsltT + tmpResult); end; end else if tmpStr = 管理員登錄 then begin Admin := CoMTSDMAdmin.CreateRemote(Sun1980426); tmpResult := Admin.Login(PWD); if tmpResult OK then Response.Write(tmpResult) else begin Session.Set_Value(UserType, 3); Session.Set_Value(UserID, Admin); Response.Redirect(./admin/admin.htm); end; end; end; procedure TNetTestASP.Admin; var Subject, PWD, Email, Age, Sex, Name, tmpStr, EnterTime, TeacherID, StudentID: WideString; UserType: Integer; Admin: IMTSDMAdmin; begin UserType := Session.ValueUserType; if 3 = UserType then/管理員 begin tmpStr := Request.QueryString.Itemaction; Admin := CoMTSDMAdmin.CreateRemote(Sun1980426); if tmpStr = CreateStudent then 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin StudentID := Request.Form.ItemStudentID; PWD := Request.Form.ItemPWD; Name := Request.Form.ItemName; Age := Request.Form.ItemAge; Sex := Request.Form.ItemSex; EnterTime := Request.Form.ItemEnterTime; Email := Request.Form.ItemEmail; Response.Write(Admin.CreateStudent(StudentID, Name, Sex, Age, EnterTime, Email, PWD) ); end else if tmpStr = CreateTeacher then begin TeacherID := Request.Form.ItemTeacherID; PWD := Request.Form.ItemPWD; Name := Request.Form.ItemName; Subject := Request.Form.ItemSubject; Email := Request.Form.ItemEmail; Response.Write(Admin.CreateTeacher(TeacherID, Name, Subject, PWD, Email); end; end; end; procedure TNetTestASP.Student; var Student: IMTSDMStu; tmpStr: WideString; UserType: Integer; begin UserType := Session.ValueUserType; if UserType = 1 then begin tmpStr := Request.QueryString.Itemaction; if QueryScore = tmpStr then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); Response.Write(xmlTitle + xsltSQS 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: + Student.QueryScore(Session.ValueUserID); end else if GetTest = tmpStr then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); Response.Write(xmlTitle + xsltSST + Student.GetTest(Session.ValueUserID); end else if GetStudentData = tmpStr then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); Response.Write(xmlTitle + xsltSUD + Student.UpDate(Session.ValueUserID), False, , , ); end else Response.Write(錯誤的請求! ); end else Response.Write(非法用戶! ); end; procedure TNetTestASP.Teacher; var tmpStr, UserID, StudentID, PaperID: WideString; UserType: Integer; Teacher: IMTSDMTeacher; begin tmpStr := Request.QueryString.Itemaction; UserType := Session.ValueUserType; UserID := Session.ValueUserID; if 2 = UserType then/老師 begin if tmpStr = CreatePaper then begin Teacher := CoMTSDMTeacher.CreateRemote(Sun1980426); StudentID := Request.Form.ItemStudentID; PaperID := Request.Form.ItemPaperID; Response.Write(Teacher.CreatePaper(UserID, StudentID, PaperID); end else Response.Write(錯誤的請求! ); end 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: else Response.Write(非法用戶! ); end; procedure TNetTestASP.Testing; var Student: IMTSDMStu; StudentID, PaperID, Answers: WideString; UserType: Integer; begin UserType := Session.ValueUserType; StudentID := Session.ValueUserID; if UserType = 1 then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); PaperID := Request.Form.ItemPaperID; Session.Set_Value(PaperID, PaperID); Response.Write(xmlTitle + xsltST + Student.GetPaper(StudentID, PaperID, Answers); Session.Set_Value(Answers,Answers); end else Response.Write(非法用戶! ); end; procedure TNetTestASP.UpDate; var Subject, PWD, Email, Age, UserID: OleVariant; UserType: Integer; Student: IMTSDMStu; Teacher: IMTSDMTeacher; Admin: IMTSDMAdmin; begin UserType := Session.ValueUserType; UserID := Session.ValueUserID; if 1 = UserType then/學(xué)生 begin Student := CoMTSDMStu.CreateRemote(Sun1980426); PWD := Request.Form.ItemPWD; Age := Request.Form.ItemAge; Email := Request.Form.ItemEmail; Response.Write(Student.UpDate(UserID, Age, PWD, Email); end else if 2 = UserType then/老師 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin Teacher := CoMTSDMTeacher.CreateRemote(Sun1980426); PWD := Request.Form.ItemPWD; Subject := Request.Form.ItemSubject; Email := Request.Form.ItemEmail; Response.Write(Teacher.UpDate(UserID, PWD, Subject, Email); end else if 3 = UserType then/管理員 begin Admin := CoMTSDMAdmin.CreateRemote(Sun1980426); PWD := Request.Form.ItemPWD; Response.Write(Admin.UpDate(PWD); end else Response.Write(非法用戶! ); end; procedure TNetTestASP.SubmitPaper; var Answers, Answer, UserID, PaperID: WideString; UserType, No: Integer; Score, vNo: OleVariant; Student: IMTSDMStu; begin UserType := Session.ValueUserType; Answers := Session.ValueAnswers; UserID := Session.ValueUserID; PaperID := Session.ValuePaperID; Score := 0; Answer := ; if 1 = UserType then/學(xué)生 begin for No := 1 to (Request.Form.Count - 1) do/減去提交按鈕所占數(shù)字 begin vNo := No; Answer := Request.Form.ItemvNo; if AnswersNo = Answer3 then begin Score := Score + 10; end; end;/end for Student := CoMTSDMStu.CreateRemote(Sun1980426); 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: Response.Write(Student.SubmitPaper(UserID, PaperID, Score); end else Response.Write(非法用戶! ); end; initialization TAutoObjectFactory.Create(ComServer, TNetTestASP, Class_NetTestASP, ciMultiInstance, tmApartment); end. . 學(xué)生對象 COM+組件主代碼 unit uMain; $WARN SYMBOL_PLATFORM OFF interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComServ, ComObj, VCLCom, StdVcl, bdemts, DataBkr, DBClient, MtsRdm, Mtx, MTSStu_TLB, DB, ADODB; type TMTSDMStu = class(TMtsDataModule, IMTSDMStu) ADOQuery1: TADOQuery; private / function CreatePaper(Subject: WideString Private declarations protected class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override; function GetPaper(const StudentID, PaperID: WideString; out Answers: WideString): OleVariant; safecall; function Login(const StudentID, PWD: WideString): OleVariant; safecall; function QueryScore(const StudentID: WideString): OleVariant; safecall; function UpDate(const StudentID, Age, PWD, Email: WideString): OleVariant; safecall; function GetTest(const StudentID: WideString): OleVariant; safecall; function SubmitPaper(const StudentID, PaperID, Score: WideString): OleVariant; safecall; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: public Public declarations end; var MTSDMStu: TMTSDMStu; implementation $R *.DFM class procedure TMTSDMStu.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableSocketTransport(ClassID); EnableWebTransport(ClassID); end else begin DisableSocketTransport(ClassID); DisableWebTransport(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID); end; end; function TMTSDMStu.GetPaper(const StudentID, PaperID: WideString; out Answers: WideString): OleVariant; var I, J, C: Integer; sQuestionID, Subject: WideString; aQuestionID: array0.9 of Integer; begin /取考試科目 / ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SELECT Subject FROM NetTest.Papers WHERE + ( +StudentID = + + StudentID + +)AND(PaperID= + + PaperID + + )AND( + Score IS NULL+ ); ADOQuery1.Active := True; if not ADOQuery1.Fields0.IsNull then Subject := ADOQuery1.Fields0.AsString 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: else begin ADOQuery1.Active := False; Result := 不能重復(fù)參加考試! ; Exit; end; ADOQuery1.Active := False; /取試題條數(shù) / ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text := SELECT count(*) FROM NetTest.Questions WHERE Subject= +Subject+; ADOQuery1.Active := True; C := ADOQuery1.Fields0.AsInteger; ADOQuery1.Active := False; /隨機(jī)抽題 / ADOQuery1.SQL.Clear; I := 1; if C I do begin aQuestionIDI := Random(C); for J := 0 to I do if aQuestionIDJ = aQuestionIDI then Break; / if I = J then Inc(I); end;/end while sQuestionID := ( QuestionID= + + IntToStr(aQuestionID0) + + ); for I := 1 to 9 do 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: sQuestionID := sQuestionID + OR ( QuestionID= + IntToStr(aQuestionIDI) + ); ADOQuery1.SQL.Add(SELECT * FROM NetTest.Questions WHERE (Subject= + + Subject + + )AND( + sQuestionID +); end;/end ifsles / / ADOQuery1.Active := True; / Result := ADOQuery1.SQL.Text; / ADOQuery1.Active := False; / Answers := ; try ADOQuery1.Active := True; /建立 XML/ Result := +Subject+radio; Answers := ; I := 1; While not ADOQuery1.Eof do begin Result := Result + + IntToStr(I) + + + ADOQuery1.Fields2.AsString + + ADOQuery1.Fields3.AsString + + ADOQuery1.Fields4.AsString + + ADOQuery1.Fields5.AsString + + ADOQuery1.Fields6.AsString + ; Answers := Answers + ADOQuery1.Fields7.AsString; ADOQuery1.Next; Inc(I); end; Result := Result + ; except ADOQuery1.Active := False; Result := ; end; end; function TMTSDMStu.Login(const StudentID, PWD: WideString): OleVariant; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SELECT Name FROM NetTest.Students WHERE +(StudentID = + + StudentID + + ) +AND + (PWD = + + PWD + + ); try ADOQuery1.Active := True; if ADOQuery1.Fields0.IsNull then Result := 密碼或用戶名錯誤!請重試。 else Result := + ADOQuery1.Fields0.AsString + ; ADOQuery1.Active := False; except ADOQuery1.Active := False; Result := 數(shù)據(jù)庫讀取錯誤!請和管理員聯(lián)系! ; end; end; function TMTSDMStu.QueryScore(const StudentID: WideString): OleVariant; begin Result := ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SELECT PaperID, Subject, Score FROM NetTest.Papers +WHERE (StudentID = +StudentID+ +)AND(Score+); try ADOQuery1.Active := True; if not ADOQuery1.Fields0.IsNull then begin while not ADOQuery1.Eof do begin if ADOQuery1.Fields2.AsInteger 60 then Result := Result + + ADOQuery1.Fields0.AsString + + ADOQuery1.Fields1.AsString + + ADOQuery1.Fields2.AsString + else Result := Result + + ADOQuery1.Fields0.AsString 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: + + ADOQuery1.Fields1.AsString + + ADOQuery1.Fields2.AsString + ; ADOQuery1.Next; end;/end while ADOQUery1.Active := False; end;/end if Result := Result + ; except ADOQUery1.Active := False; Result := ; end; end; function TMTSDMStu.UpDate(const StudentID, Age, PWD, Email: WideString): OleVariant; begin Result := 更新資料成功,請返回進(jìn)行其他操作。 ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(UPDATE NetTest.Students SET Age=+Age+, PWD= +PWD+, Email=+Email+ + WHERE StudentID=+StudentID+); try ADOQuery1.ExecSQL; except ADOQUery1.Active := False; Result := 更新個人資料失敗!請重試! ;
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 武漢體育學(xué)院體育科技學(xué)院《食用真菌學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西省朔州市懷仁市重點(diǎn)中學(xué)2025屆高三下學(xué)期聯(lián)合物理試題含解析
- 認(rèn)識新規(guī)范 爭做文明人
- 2025商業(yè)店鋪?zhàn)赓U保證金合同樣本
- 2025農(nóng)產(chǎn)品買賣合同
- 2025標(biāo)的物買賣合同標(biāo)準(zhǔn)格式
- 2025國際租賃合同 標(biāo)準(zhǔn)版 模板
- 規(guī)劃7路技術(shù)標(biāo)
- 2025農(nóng)副產(chǎn)品采購招標(biāo)合同范本
- 2025年普法知識競賽題庫及答案(共70題)
- 白石洞等四座水庫水資源特許經(jīng)營項目實(shí)施方案
- 2025年承包商入廠安全培訓(xùn)考試試題及答案5A
- 《民航飛機(jī)航電設(shè)備故障檢測與診斷》全套教學(xué)課件
- 2024年廣東公需課《百縣千鎮(zhèn)萬村高質(zhì)量發(fā)展工程與城鄉(xiāng)區(qū)域協(xié)調(diào)發(fā)展》試題及答案
- 工商企業(yè)管理畢業(yè)論文19904
- 防極端天氣安全教育主題班會
- 2025湖北隨州國資本投資運(yùn)營集團(tuán)限公司人員招聘27人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年四川煙草商業(yè)系統(tǒng)招聘考試真題
- 2025年許昌電氣職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案
- 工廠能源知識培訓(xùn)課件
- 患者隱私保護(hù)培訓(xùn)課件
評論
0/150
提交評論