基于NET的駕校理論考試模擬系統(tǒng)畢業(yè)論文.doc_第1頁(yè)
基于NET的駕校理論考試模擬系統(tǒng)畢業(yè)論文.doc_第2頁(yè)
基于NET的駕校理論考試模擬系統(tǒng)畢業(yè)論文.doc_第3頁(yè)
基于NET的駕校理論考試模擬系統(tǒng)畢業(yè)論文.doc_第4頁(yè)
基于NET的駕校理論考試模擬系統(tǒng)畢業(yè)論文.doc_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄第一章系統(tǒng)概述11.1系統(tǒng)開(kāi)發(fā)背景和意義11.2開(kāi)發(fā)目的11.3開(kāi)發(fā)環(huán)境11.4硬件需求2第二章 系統(tǒng)需求分析32.1系統(tǒng)功能設(shè)計(jì)32.2系統(tǒng)功能模塊劃分42.3系統(tǒng)數(shù)據(jù)流圖52.4數(shù)據(jù)字典6第三章 系統(tǒng)總體設(shè)計(jì)73.1總體設(shè)計(jì)目標(biāo)73.2概念模型(E-R圖)733關(guān)系模式8第四章 系統(tǒng)詳細(xì)設(shè)計(jì)1141系統(tǒng)通用類(lèi)設(shè)計(jì)11411基本通用類(lèi)設(shè)計(jì)114.1.2系統(tǒng)流程圖11第五章 系統(tǒng)程序?qū)崿F(xiàn)與測(cè)試145.1 用戶登錄和新用戶注冊(cè)145.1.1用戶界面設(shè)計(jì)145.1.2用戶登錄145.1.3用戶注冊(cè)155.1.4用戶角色管理165.1.5用戶密碼修改175.2題庫(kù)設(shè)計(jì)175.2.1試題種類(lèi)管理175.2.2試題圖片管理185.2.3添加試題185.2.4修改試題195.2.5刪除試題195.2.6試題答案設(shè)計(jì)195.2.7試題答案添加205.2.8試題答案修改205.2.9試題答案刪除215.3試卷設(shè)計(jì)215.3.1添加新試卷215.3.2修改試卷225.3.3刪除試卷225.4隨機(jī)生成試卷225.5考生在線答題245.6自動(dòng)閱卷265.7考試結(jié)果275.8測(cè)試275.8.1測(cè)試項(xiàng)目285.8.2測(cè)試運(yùn)行結(jié)果28結(jié)束語(yǔ)31參考文獻(xiàn)32第一章系統(tǒng)概述1.1系統(tǒng)開(kāi)發(fā)背景和意義隨著我國(guó)經(jīng)濟(jì)的高速發(fā)展,我國(guó)的交通運(yùn)輸能力不斷提高,越來(lái)越多的人開(kāi)私家車(chē)到異地進(jìn)行商務(wù)或者旅游等活動(dòng)。在這一條件下,我國(guó)的車(chē)輛逐漸增多,最近幾年,學(xué)車(chē)的人也是越來(lái)越多。為了減少交通事故的發(fā)生,車(chē)管所對(duì)駕駛員的交通知識(shí)考核起著至關(guān)重要的作用。隨著信息量的逐步增加,繁雜的數(shù)據(jù)處理費(fèi)時(shí)費(fèi)力,單純以人力進(jìn)行的駕駛員理論考試的考核已經(jīng)不適合駕駛理論考試的現(xiàn)狀?,F(xiàn)在是一個(gè)信息產(chǎn)業(yè)的時(shí)代,國(guó)家把信息產(chǎn)業(yè)作為增長(zhǎng)國(guó)民經(jīng)濟(jì)的重要因數(shù)。在這樣的環(huán)境下,先進(jìn)的信息技術(shù)進(jìn)行駕駛員理論考試已成為必要。駕駛模擬考試系統(tǒng)以計(jì)算機(jī)為操作工具,按照駕駛理論考試的流程,把駕駛理論考試的一些工作人員從繁瑣的數(shù)據(jù)處理中解放出來(lái),從而提高駕駛考試的工作效率。駕駛理論考試系統(tǒng)把駕駛的理論試題保存于數(shù)據(jù)庫(kù)中,通過(guò)計(jì)算機(jī)可以很方便地查詢使用所需要的數(shù)據(jù),而且這些操作全部由系統(tǒng)內(nèi)部的代碼完成??忌拖到y(tǒng)管理員通過(guò)系統(tǒng)的友好界面,輸入一些簡(jiǎn)單的數(shù)據(jù)便可操作。該系統(tǒng)采用B/S模式進(jìn)行設(shè)計(jì),異地的想學(xué)車(chē)的學(xué)員也可以使用該系統(tǒng),進(jìn)行模擬考試,從而了解自己對(duì)交通規(guī)則了解多少。本系統(tǒng)主要由使用Microsoft Visual Studio.NET 2003 開(kāi)發(fā)的頁(yè)面,由SQL Server2000開(kāi)發(fā)的數(shù)據(jù)庫(kù)組成。1.2開(kāi)發(fā)目的本系統(tǒng)采用B/S模式設(shè)計(jì),開(kāi)發(fā)目的除了方便車(chē)輛管理所的工作人員。同時(shí)把駕駛理論所有試題保存到數(shù)據(jù)庫(kù),通過(guò)互聯(lián)網(wǎng)方便地進(jìn)行模擬考試,還能讓學(xué)車(chē)的學(xué)員對(duì)交通規(guī)則和法律知識(shí)有更多的了解。1.3開(kāi)發(fā)環(huán)境本系統(tǒng)是在windows XP操作系統(tǒng)下,使用Microsoft Visual Studio.NET 2003作為開(kāi)發(fā)工具進(jìn)行開(kāi)發(fā)的。數(shù)據(jù)庫(kù)使用的是SQL Server2000。1.4硬件需求在運(yùn)行本系統(tǒng)前,請(qǐng)檢查以下計(jì)算機(jī)是否滿足以下要求。l 服務(wù)器要求的配置為: CPU:Intel 賽揚(yáng)以上,建議Intel Pentium以上 內(nèi)存:128M以上,建議256M以上 硬盤(pán):1G以上的可用硬盤(pán)安裝空間 操作系統(tǒng):Windows 2000以上,Internet信息服務(wù)器5.0(IIS 5.0) 軟件:Microsoft SQL Server 7.0以上版本l 客戶機(jī)硬件配置要求為: CPU:Intel賽揚(yáng) 以上,建議Intel Pentium 以上 內(nèi)存:32M以上,建議64M以上 操作系統(tǒng):Windows2000以上,IE5.0以上版本第二章 系統(tǒng)需求分析2.1系統(tǒng)功能設(shè)計(jì)根據(jù)駕校理論考試的邏輯劃分,本系統(tǒng)一共有六個(gè)子系統(tǒng),分別是用戶登錄和注冊(cè),用戶角色管理,用戶管理,試題管理,題庫(kù)管理,在線答題。其功能結(jié)構(gòu)圖如圖2.1所示。駕駛理論考試系統(tǒng)用戶管理試題管理題庫(kù)管理在線答題圖2.1 系統(tǒng)功能圖 用戶管理 添加用戶,修改用戶,刪除用戶,用戶登錄和注冊(cè)。 試題管理(1)試題類(lèi)別管理,主要是實(shí)現(xiàn)試題類(lèi)別的添加、修改試題類(lèi)別、刪除試題類(lèi)別、和試題的類(lèi)別排序功能。(2)試題圖片管理,主要實(shí)現(xiàn)試題的圖片添加,刪除和修改等功能(3)考試試題管理,主要實(shí)現(xiàn)試題的添加、修改、刪除功能。(4)試題答案管理,主要實(shí)現(xiàn)試題答案的添加、修改、刪除功能。 題庫(kù)管理題庫(kù)管理主要是在系統(tǒng)中構(gòu)造試卷,即試題的每一種題型有多少題,添加試卷、及刪除試卷和修改試卷功能。 在線答題(1)動(dòng)態(tài)隨機(jī)生成試卷,使用隨機(jī)函數(shù)動(dòng)態(tài)地從題庫(kù)中取得整套試卷和題目,每次生成的試卷是不相同的。(2)顯示出整套試卷,依次答題,系統(tǒng)自動(dòng)判斷該題是否正確。(3)最后顯示該考生的考試成績(jī)。2.2系統(tǒng)功能模塊劃分系統(tǒng)整體設(shè)計(jì)如圖2.2所示,此系統(tǒng)可以劃分為業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層和數(shù)據(jù)庫(kù)。數(shù)據(jù)訪問(wèn)層業(yè)務(wù)邏輯層數(shù)據(jù)庫(kù)圖2.2 系統(tǒng)設(shè)計(jì)圖數(shù)據(jù)庫(kù)、數(shù)據(jù)訪問(wèn)層和業(yè)務(wù)邏輯層的具體描述如下:(1)數(shù)據(jù)庫(kù)位于系統(tǒng)最底層,它存儲(chǔ)系統(tǒng)的所有數(shù)據(jù)。(2)數(shù)據(jù)訪問(wèn)層建立在數(shù)據(jù)庫(kù)之上,應(yīng)用程序通過(guò)該層訪問(wèn)數(shù)據(jù)庫(kù)。數(shù)據(jù)訪問(wèn)層一般封裝數(shù)據(jù)庫(kù)的選擇、添加、更新、刪除等操作。同時(shí)還為業(yè)務(wù)邏輯層提供訪問(wèn)數(shù)據(jù)庫(kù)的接口或函數(shù)等。該層直接與數(shù)據(jù)庫(kù)相關(guān)聯(lián),同時(shí)又為業(yè)務(wù)邏輯層服務(wù),所以數(shù)據(jù)庫(kù)訪問(wèn)層設(shè)計(jì)的好壞關(guān)系到整個(gè)系統(tǒng)的成敗。下面以用戶管理模塊的數(shù)據(jù)訪問(wèn)(UserDB類(lèi))為例,介紹數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn)方法。UserDB類(lèi)實(shí)現(xiàn)訪問(wèn)數(shù)據(jù)庫(kù)的方法如下:Public SqlDataReader GetUsers() 從用戶表Users獲取所有用戶信息。Public SqlDataReader GetSingleUser(int nUserID)從用戶表Users獲取單個(gè)用戶信息。Public int AddUser(String sUserName,String sPassword,String sEmail)添加新用戶到用戶表Users中。Public void UpdateUserPassword(int nUserID,string sPassword)更新用戶的密碼。Public void UpdateUserState(int nUserID,int nState)更新用戶的當(dāng)前狀態(tài)。Public void UpdateUserRole(int nUserID,int nRoleID)更新用戶的角色。Public void DeleteUser(int nUserID)從用戶表Users中刪除用戶。Public SqlDataReader GetUserLogin(String nUserName,String sPassword)從用戶表Users中獲取用戶ID,用于用戶登錄。(3)業(yè)務(wù)邏輯層包括題庫(kù)創(chuàng)建、用戶管理、用戶注冊(cè)等業(yè)務(wù)邏輯,它一般由Web頁(yè)面實(shí)現(xiàn),如系統(tǒng)登錄頁(yè)面Default.aspx、用戶管理頁(yè)面UserManage. aspx、隨機(jī)生成試卷頁(yè)面CreateExaminePaper.aspx等。系統(tǒng)是由六個(gè)完整的功能實(shí)現(xiàn)的,根據(jù)這些功能,可以設(shè)計(jì)出系統(tǒng)的功能模塊,各個(gè)系統(tǒng)功能模塊之間的關(guān)系如圖2.3所示。用戶管理試題管理題庫(kù)管理在線考試駕駛理論考試系統(tǒng)圖2.3 模塊關(guān)系圖2.3系統(tǒng)數(shù)據(jù)流圖本系統(tǒng)采用B/S模式設(shè)計(jì),開(kāi)發(fā)目的除了方便車(chē)輛管理所的工作人員。同時(shí)把駕駛理論所有試題保存到數(shù)據(jù)庫(kù),通過(guò)互聯(lián)網(wǎng)方便地進(jìn)行模擬考試,還能讓學(xué)車(chē)的學(xué)員對(duì)交通規(guī)則和法律知識(shí)有更多的了解。該系統(tǒng)數(shù)據(jù)流圖如圖2.4所示。D1用戶信息 D2題庫(kù) 4判卷 核對(duì)信息 題庫(kù)管理3提交試卷2生成試卷1核對(duì)用戶信息考生 登錄 核對(duì)正確 答題 提交5顯示考試成績(jī)考生 查看 計(jì)算考試成績(jī) 讀取成績(jī)D3考試成績(jī)圖2.4系統(tǒng)數(shù)據(jù)流圖2.4數(shù)據(jù)字典數(shù)據(jù)流圖描述了系統(tǒng)的分解,但沒(méi)有對(duì)圖中各成分進(jìn)行說(shuō)明,數(shù)據(jù)字典就是為了數(shù)據(jù)流圖的每個(gè)數(shù)據(jù),以及組成數(shù)據(jù)流或文件的數(shù)據(jù)項(xiàng)作出說(shuō)明。數(shù)據(jù)字典:試題=問(wèn)題內(nèi)容+問(wèn)題類(lèi)型+問(wèn)題選項(xiàng)+問(wèn)題圖片+問(wèn)題分值用戶=用戶名+用戶密碼+用戶Email地址+用戶類(lèi)型答案=問(wèn)題的正確答案+答案所屬的問(wèn)題名稱: 試題簡(jiǎn)述: 試題的基本資料組成: 問(wèn)題內(nèi)容+問(wèn)題選項(xiàng)+問(wèn)題類(lèi)型+問(wèn)題圖片+問(wèn)題分值名稱: 用戶資料簡(jiǎn)述: 用戶的基本資料組成: 用戶名稱+用戶密碼+用戶Email地址+用戶類(lèi)型名稱: 答案簡(jiǎn)述: 答案的基本資料組成: 問(wèn)題的正確答案+答案所屬問(wèn)題第三章 系統(tǒng)總體設(shè)計(jì)3.1總體設(shè)計(jì)目標(biāo)駕駛模擬考試系統(tǒng)以計(jì)算機(jī)為操作工具,按照駕駛理論考試的流程,把駕駛理論考試的一些工作人員從繁瑣的數(shù)據(jù)處理中解放出來(lái),從而提高駕駛考試的工作效率。駕駛理論考試系統(tǒng)把駕駛的理論試題保存于數(shù)據(jù)庫(kù)中,通過(guò)計(jì)算機(jī)可以很方便地查詢使用所需要的數(shù)據(jù),而且這些操作全部由系統(tǒng)內(nèi)部的代碼完成??忌拖到y(tǒng)管理員通過(guò)系統(tǒng)的友好界面,輸入一些簡(jiǎn)單的數(shù)據(jù)便可操作。該系統(tǒng)采用B/S模式進(jìn)行設(shè)計(jì),異地的想學(xué)車(chē)的學(xué)員也可以使用該系統(tǒng),進(jìn)行模擬考試,從而了解自己對(duì)交通規(guī)則了解多少。3.2概念模型(E-R圖)得到前面的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體,以及它們之間的關(guān)系。這些實(shí)體包含各種具體信息,通過(guò)相互之間的作用形成數(shù)據(jù)的流動(dòng)。駕駛模擬考試系統(tǒng)以計(jì)算機(jī)為操作工具,按照駕駛理論考試的流程,把駕駛理論考試的一些工作人員從繁瑣的數(shù)據(jù)處理中解放出來(lái),從而提高駕駛考試的工作效率。駕駛理論考試系統(tǒng)把駕駛的理論試題保存于數(shù)據(jù)庫(kù)中,通過(guò)計(jì)算機(jī)可以很方便地查詢使用所需要的數(shù)據(jù),而且這些操作全部由系統(tǒng)內(nèi)部的代碼完成??忌拖到y(tǒng)管理員通過(guò)系統(tǒng)的友好界面,輸入一些簡(jiǎn)單的數(shù)據(jù)便可操作。本例根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有:管理員,試卷,考生。下面畫(huà)出各實(shí)體之間的主要E-R關(guān)系圖,如圖3.1所示。考生用戶密碼用戶名考試考試題目管理理管理員考試時(shí)間用戶密碼用戶名試題內(nèi)容試題類(lèi)型試題答案試題分值 圖3.1個(gè)實(shí)體之間的主要關(guān)系的E-R圖3.3關(guān)系模式用戶(用戶ID,用戶名,用戶密碼,用戶Email,用戶角色I(xiàn)D)問(wèn)題(問(wèn)題ID,問(wèn)題內(nèi)容,問(wèn)題類(lèi)型,問(wèn)題圖片,問(wèn)題分值)答案(問(wèn)題正確答案,問(wèn)題ID)試卷(試卷ID,試題總分?jǐn)?shù),考試時(shí)間)3.3.1字段些系統(tǒng)使用 SQL Server 2000 作為應(yīng)用程序的數(shù)據(jù)庫(kù),此系統(tǒng)的實(shí)際需要,系統(tǒng)至少需要實(shí)現(xiàn)考試題庫(kù),用戶及其角色和試卷數(shù)據(jù),因此本系統(tǒng)數(shù)據(jù)庫(kù)所用到的一些用戶表、角色表、考生表、試題表,問(wèn)題表、試題種類(lèi)表、試題答案表、試卷表、試卷種類(lèi)表和圖片表。1用戶表用戶表用于存儲(chǔ)系統(tǒng)的用戶信息,該表引用角色的用戶角色I(xiàn)D字段作為表的外鍵,用戶表的字段說(shuō)明如表3-1所示。表3-1 用戶表字段說(shuō)明編號(hào)字段名稱字段類(lèi)型1用戶表IDInt2用戶名Varchar(50)3用戶密碼Varchar(50)4用戶EmailVarchar(50)5用戶角色I(xiàn)DInt2角色表角色表用于存儲(chǔ)用戶的角色信息。角色表的字段說(shuō)明如表3-2所示。表3-2 角色表字段說(shuō)明編號(hào)字段名稱字段類(lèi)型1用戶表IDInt2用戶名Varchar(50)3考生表 考生表存儲(chǔ)參加考試的考生信息,該表引用了用戶表的主鍵用戶ID作為該表的外鍵。4問(wèn)題表問(wèn)題表存儲(chǔ)系統(tǒng)的試題信息。該表引用問(wèn)題種類(lèi)表QuestionKinds的問(wèn)題類(lèi)型ID、圖片表的問(wèn)題圖片ID、用戶表的用戶ID作為表的外鍵。問(wèn)題表的字段說(shuō)明如表3-3所示。表3-3 問(wèn)題表的字段說(shuō)明編號(hào)字段名稱字段類(lèi)型1問(wèn)題表IDInt2問(wèn)題內(nèi)容Varchar(200)3問(wèn)題類(lèi)型IDInt4問(wèn)題圖片IDInt5問(wèn)題分值Int5問(wèn)題種類(lèi)表問(wèn)題種類(lèi)表存儲(chǔ)問(wèn)題種類(lèi)的信息。問(wèn)題種類(lèi)表的字段說(shuō)明如表3-4所示。表3-4 問(wèn)題種類(lèi)表的字段說(shuō)明編號(hào)字段名稱字段類(lèi)型1問(wèn)題表IDInt2問(wèn)題類(lèi)型Varchar(50)6問(wèn)題答案表問(wèn)題答案表存儲(chǔ)題庫(kù)中問(wèn)題的答案信息,該表引用問(wèn)題表的答案所屬問(wèn)題ID作為表的外鍵。問(wèn)題答案表的字段說(shuō)明如表3-5所示。表3-5 答案表的字段說(shuō)明編號(hào)字段名稱字段類(lèi)型1問(wèn)題答案表IDInt2標(biāo)題Varchar(4)3問(wèn)題選項(xiàng)Varchar(200)4正確答案Varchar(4)5答案所屬問(wèn)題IDInt7圖片表圖片表存儲(chǔ)系統(tǒng)的圖片信息。8試卷表試卷表存儲(chǔ)每一套試卷的信息,該表引用用戶表的用戶ID、角色表的用戶角色I(xiàn)D,試卷表的字段說(shuō)明如表5-6所示。表5-6 試卷表的字段說(shuō)明編號(hào)字段名稱字段類(lèi)型1角色I(xiàn)DInt2試題總分?jǐn)?shù)Int3考生角色I(xiàn)DInt9試卷類(lèi)型表試卷類(lèi)型表存儲(chǔ)每一套試卷的詳細(xì)信息,試卷表的試卷ID作為表的外鍵。第四章 系統(tǒng)詳細(xì)設(shè)計(jì)41系統(tǒng)通用類(lèi)設(shè)計(jì)在應(yīng)用程序開(kāi)發(fā)過(guò)程中多處使用類(lèi),如數(shù)據(jù)庫(kù)通用類(lèi)、應(yīng)用數(shù)據(jù)通用類(lèi)。 411基本通用類(lèi)設(shè)計(jì)系統(tǒng)采用自定義的異常處理類(lèi)MyException處理應(yīng)用程序異常機(jī)制。該類(lèi)定義了函數(shù)MyException()重載基類(lèi)的函數(shù)Exception(),同時(shí)還繼承基類(lèi)的message和inner兩個(gè)變量。異常處理類(lèi)MyException定義了兩個(gè)同名的函數(shù),其中參數(shù)source表示錯(cuò)誤的類(lèi)型編碼、參數(shù)message標(biāo)識(shí)錯(cuò)誤的具體信息;參數(shù)Exception繼承系統(tǒng)的異常參數(shù)。4.1.2系統(tǒng)流程圖系統(tǒng)管理員可以對(duì)用戶管理和用戶角色分配管理等功能,此功能的關(guān)系流程圖4.1所示。否是用戶管理和角色管理用戶管理角色權(quán)限管理用戶角色分配系統(tǒng)管理員否開(kāi)始結(jié)束圖4.1 用戶管理與角色管理關(guān)系系統(tǒng)流程圖在線答題模塊中,系統(tǒng)首先按照試卷的要求,如試卷總分、試卷章節(jié)、試題的類(lèi)型等,隨機(jī)從數(shù)據(jù)庫(kù)生成一套試卷。然后把各個(gè)試題顯示在答題頁(yè)面上。試卷隨機(jī)產(chǎn)生流程如圖4.5所示。是否否隨機(jī)生成試卷獲取用戶角色隨機(jī)獲取試卷種類(lèi)顯示試卷種類(lèi)數(shù)量完畢試卷生成完畢是開(kāi)始結(jié)束圖4.5用戶答題流程圖在隨機(jī)生成試卷過(guò)程中存在兩個(gè)函數(shù)的調(diào)用過(guò)程,右邊的回調(diào)過(guò)程返回到隨機(jī)生成試卷的狀態(tài),該函數(shù)調(diào)用過(guò)程是在沒(méi)有滿足試卷的題型或題型種類(lèi)條件時(shí)發(fā)生,左邊的函數(shù)返回隨機(jī)獲取試卷種類(lèi)狀態(tài),該函數(shù)是在沒(méi)有滿足試卷種類(lèi)條件時(shí)發(fā)生。數(shù)據(jù)庫(kù)中的每一類(lèi)型的試卷所包含的題型是不相同的,且每一種題型所包含的試題和試題的題量也是不同相同的,各種類(lèi)的試卷的總分和試題的章節(jié)都在同一個(gè)范圍內(nèi),即屬于同一類(lèi)型的試卷。試題的總分,試題的開(kāi)始章節(jié),試題的結(jié)束章節(jié),試題的種類(lèi)和第幾種題型的數(shù)量ArrarList變量。應(yīng)用程序在創(chuàng)建整套試題之前會(huì)檢查以上幾個(gè)參數(shù)是否匹配。如果每套試題的總分?jǐn)?shù)為設(shè)置的試題的總分的值,則為有效試卷,反之亦然。隨機(jī)生成試卷的流程如圖4.6所示。是否否否隨機(jī)選取試卷取到試卷參數(shù)隨機(jī)生成一種題型到試卷結(jié)尾?生成題型成功試卷生成成功是是開(kāi)始結(jié)束圖4.6隨機(jī)生成試卷流程圖第五章 系統(tǒng)程序?qū)崿F(xiàn)與測(cè)試5.1 用戶登錄和新用戶注冊(cè)5.1.1用戶界面設(shè)計(jì)用戶在登錄由Default.aspx頁(yè)面實(shí)現(xiàn),它的代碼隱藏在Default.aspx.cs文件中。用戶登錄是應(yīng)用程序的主要入口,用戶只有通過(guò)該入口才能進(jìn)入系統(tǒng)。由于用戶所屬的角色不相同,所以在登錄時(shí)都要選擇自己所屬的角色,否則不能進(jìn)入系統(tǒng)。用戶登錄使用了兩個(gè)TextBox控件作為輸入名稱和密碼,用戶單擊“確定”按鈕就可以登錄到系統(tǒng)。單擊“注冊(cè)”按鈕可以重新注冊(cè)一個(gè)用戶。用戶的角色是從Roles表中獲取的,考生為默認(rèn)角色。用戶登錄使用了兩個(gè)驗(yàn)證控件,它們?yōu)镽FVUserNamet和RFVPassword,分別驗(yàn)證用戶名稱和用戶密碼是否為非空。兩個(gè)非空驗(yàn)證控件僅僅對(duì)“確定”按鈕有效,其實(shí)現(xiàn)方法就是把“注冊(cè)”控鈕的屬性CausesValidation值設(shè)為False。5.1.2用戶登錄用戶登錄過(guò)程是一個(gè)驗(yàn)證過(guò)程,應(yīng)用程序首先從數(shù)據(jù)庫(kù)獲取該用戶的信息,如用戶名稱和用戶角色,然后再根據(jù)用戶的角色顯示用戶的下一步操作頁(yè)面。如果考生登錄,顯示生成等待頁(yè)面和在線答題頁(yè)面;如果管理登錄,顯示題庫(kù)頁(yè)面;如果系統(tǒng)管理員登錄,則顯示系統(tǒng)維護(hù)頁(yè)面。無(wú)論用戶是什么樣的角色登錄,系統(tǒng)都將保存該用戶的ID和角色I(xiàn)D。用戶單擊“確定”按鈕觸發(fā)事件SureBtn_Click()來(lái)實(shí)現(xiàn)用戶登錄驗(yàn)證過(guò)程。該事件調(diào)用了數(shù)據(jù)訪問(wèn)層的函數(shù) GetUserLogin()驗(yàn)證用戶的輸入,如果是正確的,用戶就登錄到系統(tǒng)中。否則頁(yè)面將彈出錯(cuò)誤信息的提示。函數(shù)GetUserLogin()從數(shù)據(jù)庫(kù)獲取合法用戶的ID數(shù)據(jù),函數(shù)GetUserLogin() 調(diào)用存儲(chǔ)過(guò)程Pr_GetUserLogin()訪問(wèn)數(shù)據(jù)庫(kù)。為了整個(gè)系統(tǒng)的安全性,在用戶表Users中的存儲(chǔ)用戶的密碼Password字段不是用戶密碼的真實(shí)值,而是加密后的密碼字符串。加密函數(shù)Encrypt()被定義為UserDB類(lèi)的靜態(tài)函數(shù)。調(diào)用加密函數(shù)時(shí),首先把加密字符串編碼成Uncode,然后使用系統(tǒng)的不對(duì)稱加密算法MD5加密用戶密碼串。5.1.3用戶注冊(cè)添加新的用戶有兩種方式,一種是從后臺(tái)的用戶管理中添加用戶,另一種是用戶注冊(cè),用戶注冊(cè)方式只能添加考生。因?yàn)榫哂泄芾韱T角色的用戶可以直接進(jìn)入到系統(tǒng)后臺(tái)進(jìn)行管理。用戶注冊(cè)時(shí)分別輸入用戶名稱、用戶密碼、確認(rèn)密碼和用戶的電子郵箱信息即可。前三個(gè)控件都用了驗(yàn)證控件和一個(gè)正則表達(dá)式,電子郵箱則使用格式驗(yàn)證。單擊“確定”按鈕觸發(fā)事件SureBtn_Click(),該事件調(diào)用數(shù)據(jù)訪問(wèn)層函數(shù)AddUser()提交新用戶注冊(cè)信息到表Users中。SureBtn_Click()事件調(diào)用函數(shù)AddUser(),AddUser()調(diào)用存儲(chǔ)過(guò)程Pr_AddUser添加新用戶信息到用戶表中。在添加的過(guò)程中,還查看用戶表中是否有同名稱用戶,有同名用戶就不添加當(dāng)前的用戶。用戶管理功能由頁(yè)面UserManage.aspx實(shí)現(xiàn),用戶管理模塊實(shí)現(xiàn)了用戶的刪除、角色的分配、密碼的修改。界面設(shè)計(jì)如圖4.2所示圖5.2用戶管理及角色管理用戶列表框顯示系統(tǒng)當(dāng)前包含的所有用戶,系統(tǒng)管理員單擊“X”按鈕即可刪除當(dāng)前列表框被選中的用戶。單擊“”按鈕即可添加新用戶。用戶管理頁(yè)面初始化時(shí),調(diào)用BindData()實(shí)現(xiàn)綁定用戶列表控件,該函數(shù)調(diào)用數(shù)據(jù)訪問(wèn)層UserDB類(lèi)的函數(shù)GetUser()從用戶表中獲取用戶和用戶ID等數(shù)據(jù)。單擊刪除“X”按鈕實(shí)現(xiàn)刪除用戶的功能,該按鈕為圖像按鈕,單擊此按鈕觸發(fā)事件deleteBtn_Click()。該事件調(diào)用數(shù)據(jù)訪問(wèn)層UserDB類(lèi)的函數(shù)DeleteUser()刪除數(shù)據(jù)庫(kù)中的用戶記錄。刪除列表中的用戶之后,該事件還要重新綁定用戶數(shù)據(jù)。單擊添加“/”按鈕實(shí)現(xiàn)實(shí)現(xiàn)用戶添加功能,此按鈕為圖像按鈕,單擊此按鈕觸發(fā)事件AddBtn_Click()。用戶密碼同樣是采用MD5加密函數(shù)Encry(),事件調(diào)用數(shù)據(jù)訪問(wèn)層UserDB類(lèi)的函數(shù)AddUser()添加新的用戶到數(shù)據(jù)庫(kù)中。添加后事件重新綁定用戶數(shù)據(jù)。5.1.4用戶角色管理 用戶角色管理實(shí)現(xiàn)用戶角色的分配功能。系統(tǒng)存在角色較多,不同的角色具有不同的操作權(quán)限。如系統(tǒng)管理員具有該角色的用戶可以維護(hù)和管理整個(gè)系統(tǒng);管理員角色的用戶可以管理整個(gè)系統(tǒng),如可以添加系統(tǒng)考試試題,創(chuàng)建不同類(lèi)型的試卷;不同的考生分配不同的試卷,而且參加考試后只能看到自己的考試成績(jī)。用戶角色管理由頁(yè)面RoleManage.aspx實(shí)現(xiàn)。 用戶角色管理頁(yè)面初始化時(shí)調(diào)用函數(shù)BindUserData(),調(diào)用數(shù)據(jù)訪問(wèn)層的UserDB類(lèi)的函數(shù)GetUsers()從表中獲取用戶數(shù)據(jù),然后再綁定到用戶列表控件。函數(shù)BindRoleData()調(diào)用數(shù)據(jù)訪問(wèn)層的RoleDB類(lèi)的函數(shù)GetGetRoles()從表中獲取用戶數(shù)據(jù),然后再綁定數(shù)據(jù)到角色列表控件。函數(shù)BindUserRoleData()調(diào)用數(shù)據(jù)訪問(wèn)層的UserDB類(lèi)的函數(shù)GetSingleUser()從表中獲取用戶數(shù)據(jù),然后再綁定到用戶角色控件。用戶單擊“設(shè)為該用戶的角色”按鈕觸發(fā)事件,該事件實(shí)現(xiàn)用戶角色之間的關(guān)聯(lián)功能,事件調(diào)用函數(shù)UpdateUserRole()修改用戶表的角色字段值。5.1.5用戶密碼修改用戶密碼修改如圖5.2所示圖5.2用戶修改密碼界面修改密碼由UpdataUserPassWord.aspx實(shí)現(xiàn),用戶修改自己的密碼時(shí)必須知道自己以前的密碼,否則不能修改密碼。單擊“確定”后觸發(fā)事件SureBtn_Click().先判斷新密碼的兩次輸入是否一致。如果一致,就把新的密碼更新到數(shù)據(jù)庫(kù),該事件調(diào)用數(shù)據(jù)訪問(wèn)層UserDB類(lèi)的函數(shù)UpdateUserPassword()修改表中的密碼。此函數(shù)獲取用戶的名稱,用戶只能修改自己的密碼,不能更改名稱。5.2題庫(kù)設(shè)計(jì)題庫(kù)設(shè)計(jì)主要是試題的添加、刪除和修改,試題圖片的添加、修改和刪除,試題種類(lèi)的添加、修改、刪除排序及試題的答案添加、刪除和修改等。 5.2.1試題圖片管理試題圖片管理由頁(yè)面PictureManage.aspx實(shí)現(xiàn),試題圖片管理主要實(shí)現(xiàn)圖片的添加、刪除、修改等功能。界面設(shè)計(jì)如圖5.3所示:圖5.3 試題圖片管理試題圖片管理在初始頁(yè)面時(shí)調(diào)用函數(shù)BindPictureData(),該函數(shù)首先從圖片表中獲取所有圖片的信息,然后再把數(shù)據(jù)綁定到列表控件。圖片都是上傳到系統(tǒng)的一個(gè)文件夾中,顯示圖片的時(shí)候都是從數(shù)據(jù)庫(kù)獲取該圖片的路徑,然后在顯示在頁(yè)面上。單擊“上傳”按鈕即是添加新的圖片,添加圖片后,然后重新綁定數(shù)據(jù)。單擊“/”、“X”此按鈕即可修改圖片信息和刪除圖片。5.2.6試題答案設(shè)計(jì)試題答案和試題是不可分割的,在此系統(tǒng)中,每個(gè)試題都有三個(gè)答案與之對(duì)應(yīng),只一個(gè)正確答案如圖5.4所示。圖5.4試題答案試題答案設(shè)計(jì)QuestionManage.aspx和頁(yè)面AddAnswer.aspx實(shí)現(xiàn)。在下拉列表選擇框中顯示試題種類(lèi),在普通列表框中顯示試題,單擊“添加試題答案”按鈕跳轉(zhuǎn)到答案添加頁(yè)面AddAnswer.aspx。試題管理界面用戶函數(shù)Page_Load()進(jìn)行初始化,函數(shù)Page_Load()調(diào)用函數(shù)BindQuesKindData()和BindQuestionData()函數(shù)。函數(shù)BindQuesKindData()綁定下拉列表控件的數(shù)據(jù),如試題種類(lèi)。還調(diào)用數(shù)據(jù)訪問(wèn)層QuestionKindDB類(lèi)的函數(shù)GetQuesKinds()從表QuestionKinds中獲取試題種類(lèi)數(shù)據(jù);函數(shù)BindQuestionData()綁定普通列表控件的數(shù)據(jù),如試題內(nèi)容。該函數(shù)調(diào)用數(shù)據(jù)訪問(wèn)層QuestionDB類(lèi)的GetQuestions()函數(shù)從表Questions中獲取試題信息。用戶單擊“添加問(wèn)題答案”按鈕觸發(fā)事件AddQuesAnswer_Click(),該事件首先判斷試題列表中某個(gè)試題項(xiàng)。如果已經(jīng)選擇,則跳轉(zhuǎn)到試題答案添加頁(yè)面,否則系統(tǒng)將提示你沒(méi)有選擇數(shù)據(jù)。private void AddQuesAnswer_Click(object sender, System.EventArgs e) Response.Redirect(/Admins/AddAnswer.aspx?QuestionID= + QuestionList.SelectedValue);事件QuesKindList_SelectedIndexChanged()動(dòng)態(tài)綁定試題列表框的數(shù)據(jù),如試題名稱,當(dāng)試題類(lèi)型下拉列表框選中的選擇試題種類(lèi)發(fā)生改變時(shí)觸發(fā)該事件,此時(shí)頁(yè)面會(huì)重新綁定列表中的試題數(shù)據(jù)。該事件代碼如下:private void QuesKindList_SelectedIndexChanged(object sender, System. EventArgs e)BindQuestionData(Int32.Parse(QuesKindList.SelectedValue);5.3隨機(jī)生成試卷系統(tǒng)隨機(jī)自動(dòng)生成試卷功能由頁(yè)面CreateExaminePaper.aspx實(shí)現(xiàn),頁(yè)面是一個(gè)等待頁(yè)面,應(yīng)用程序生成一套試卷需要一定的時(shí)間。界面設(shè)計(jì)如圖5.4所示:圖5.4 系統(tǒng)生成考試試卷頁(yè)面在等待界面中,應(yīng)用程序使用自動(dòng)跳轉(zhuǎn)方式跳轉(zhuǎn)到考試界面ExaminePaper.aspx,跳轉(zhuǎn)代碼如下:在試卷生成時(shí),等待頁(yè)面從Papers表中隨機(jī)獲取一套試卷及其參數(shù),獲取試卷及其參數(shù)功能由函數(shù)GetRolePaper()實(shí)現(xiàn)。函數(shù)的代碼如下:private ArrayList GetRolePaper(int nRoleID)ArrayList PaperList = new ArrayList();SqlDataReader recpc = paper.GetPaperCountByRole();while(recpc.Read()nPaperCount = Int32.Parse(recpcPaperID.ToString();int index = GetRandomInt(nPaperCount);/隨機(jī)選擇一套試卷SqlDataReader repc = paper.GetPaperCountByRole();int i = 0;while(repc.Read() / 把選中的試卷添加到返回結(jié)果集中if(i = index) PaperList.Add(repcPaperID.ToString();PaperList.Add(repcTotalMark.ToString();PaperList.Add(repcMaxDefficult.ToString();break; i+;recpc.Close();/從數(shù)據(jù)庫(kù)中取到這套試卷所包含的題型及數(shù)量ArrayList KindList = new ArrayList();while(recpk.Read()/選中試卷的題型及其數(shù)量添加到結(jié)果集中QuestionKinds kind = new QuestionKinds();kind.KindID = Int32.Parse(recpkKindID.ToString();kind.KindNum = Int32.Parse(recpkKindNum.ToString();KindList.Add(kind);recpk.Close(); PaperList.Add(KindList);return(PaperList);/返回結(jié)果集在隨機(jī)生成試卷過(guò)程中,程序首先調(diào)用函數(shù)CreateIntegerExaminePaper()生成整套試卷,該函數(shù)遞歸調(diào)用自己。直到生成試卷,函數(shù)代碼如下:CreateIntegerExaminePaper()int allMark = 0;int defficultParm = 0;ArrayList QuestionIDList = new ArrayList();while(true) /逐個(gè)生成每種題型for(int i = 0; i KindList.Count; i+)CreateSpecialKindQuestion()/調(diào)用函數(shù)生成特定的題型ArrayList tempList=CreateSpecialKindQuestion(KindNum,KindID); for(int j = 0; j tempList.Count; j+) QuestionIDList.Add(tempListj); / 添加到結(jié)果集中 for(int k = 0; k = maxDefficult & defficultParm/10 = minDefficult)break;elseQuestionIDList=CreateIntegerExaminePaper();return(QuestionIDList); / 返回結(jié)果集 函數(shù)CreateSpecialKindQuestion()隨機(jī)生成一種特定的題型,index(試題索引),IndexList(試題索引容器)等。并調(diào)用隨機(jī)函數(shù)生成試題ID,最后把結(jié)果集添加到QuestionList集合中。函數(shù)代碼如下:private ArrayList CreateSpecialKindQuestion(int nKindNum,int kind)ArrayList IndexList = new ArrayList();IndexList.Capacity = nKindNum;while(IndexList.Count != nKindNum) / 用隨機(jī)函數(shù)生存隨機(jī)序號(hào)序列index = GetRandomInt(nKindNum);if(IsExistIndex(IndexList,index) = false)IndexList.Add(index.ToString();/ 通過(guò)試題ID把試題的ID添加到臨時(shí)結(jié)果集中if(ds = null) / 從數(shù)據(jù)庫(kù)中取到結(jié)果集,并緩存到Cache中ds = question.GetAllQuestionID();int startIndex = 0;foreach(DataRow row in ds.Tables0.Rows)/取到試題的ID結(jié)果集if(rowKindID.ToString() = kind.ToString()break;for(int i = 0; i IndexList.Count; i+)/試題的屬性添加到結(jié)果集中QuestionDetails questionDetail=new QuestionDetails();QuestionIDList.Add(questionDetail); return(QuestionIDList); /返回問(wèn)題的ID集合生成隨機(jī)結(jié)果集的映射索引調(diào)用函數(shù)IsExistIndex()保證索引的惟一性,該函數(shù)逐個(gè)比較即將添加的值和數(shù)組中的每一個(gè)值,如果相等返回為假,否則為真。函數(shù)代碼如下:private bool IsExistIndex(ArrayList IndexList,int index)bool isExist = false;for(int j = 0; j IndexList.Count; j+)/如果相為false,否則為trueif(index.ToString() = IndexListj.ToString()isExist = true; break;return(isExist);5.4考生在線答題在線答題功能由頁(yè)面ExaminePaper.aspx實(shí)現(xiàn),頁(yè)面設(shè)計(jì)由DataGrid控件和Button控件組成,界面設(shè)計(jì)如圖5.5所示:圖5.5考生考試界面頁(yè)面初始化首先從Session全局變量取到一套試卷的所有考試題目,然后由QuestionDB類(lèi)的函數(shù)GetQuestions()創(chuàng)建問(wèn)題數(shù)據(jù)源DataGrid,問(wèn)題數(shù)據(jù)源DataList為IList接口對(duì)象,而不是DataReader對(duì)象,DataSet對(duì)象或其它的ArrayList對(duì)象,函數(shù)BindQustionData()實(shí)現(xiàn)頁(yè)面的初始化過(guò)程,函數(shù)代碼如下:private void BindQuestionData()ArrayList QuestionIDList = new ArrayList();/從Session中取一套試卷if(SessionSession.SessionID+SessionUserName!=null) QuestionIDList=(ArrayList)SessionSession.SessionID+SessionUserName;List questionList = (IList)question.GetQuestions(QuestionIDList);/創(chuàng)建問(wèn)題的數(shù)據(jù)源QuestionList.DataSource = questionList;QuestionList.DataKeyField = QuestionID;/ 設(shè)置控件的試題索引QuestionList.DataBind();ShowPageStatus(questionList.Count);問(wèn)題DataGrid控件綁定數(shù)據(jù)時(shí),采用IList接口對(duì)象作為數(shù)據(jù)源。此數(shù)據(jù)源由類(lèi)QuestionDB的函數(shù)GetQuestion()函數(shù)創(chuàng)建,該函數(shù)的參數(shù)為ArrayList類(lèi)型的對(duì)象QuestionList,它包含整套試卷的所有試題ID,函數(shù)GetQuestions()使用for語(yǔ)句從表中獲取每個(gè)試題的詳細(xì)信息。函數(shù)GetQustions()的代碼如下:public ArrayList GetQuestions(ArrayList QuestionList)for(int i = 0; i 0)radioList.SelectedIndex = 0;radioList.SelectedValue =null; 在數(shù)據(jù)綁定時(shí),問(wèn)題DataGrid控件觸發(fā)事件QuestionList_ItemDataBound(),并在事件中調(diào)用函數(shù)BindAnswerList()綁定問(wèn)題答案數(shù)據(jù)。綁定數(shù)據(jù)如下:通過(guò)參數(shù)e的函數(shù)FindControl()找到需要綁定數(shù)據(jù)的RadioButtonList控件,命名為answerList。判斷answerList控件是否為空,若為空,則中止函數(shù)。若answerList控件不為空,則調(diào)用函數(shù)BindAnserList()綁定控件的答案數(shù)據(jù)。5.6自動(dòng)閱卷單擊“上一題”或“下一題”按鈕觸發(fā)事件QuestionList_ItemCommand(),該事件實(shí)現(xiàn)了跳轉(zhuǎn)到下一題,自動(dòng)獲取上一題的選項(xiàng),并判斷該選項(xiàng)是否正確。以此類(lèi)推,有多少道試題就執(zhí)行多少次,直到做完為止。最后統(tǒng)計(jì)考生成績(jī),并保存到數(shù)據(jù)庫(kù)中,以方便考生在交卷時(shí)就能看到自己的考試成績(jī)。事件代碼如下:private void QuestionList_ItemCommand(object source,DataGridArgs e)if(answerList.SelectedIndex -1)Choose = answerList.SelectedItem.Text;AnswerDB answerbody = new AnswerDB();SqlDataReader body = answerbody.GetQuestionBody();if(body.Read()upmark.UpdateMark(userId,mark)考生單擊“交卷”觸發(fā)事件refer_click(),該事件跳轉(zhuǎn)到考試結(jié)果頁(yè)面。并顯示考生的相關(guān)信息。5.7考試結(jié)果考試結(jié)果由頁(yè)面Result.aspx實(shí)現(xiàn),該頁(yè)面實(shí)現(xiàn)了考試結(jié)果,考生在交卷后就能看到自己當(dāng)前的考試成績(jī)。系統(tǒng)自動(dòng)判斷此次考試是否合格??荚嚱Y(jié)果如圖5.8所示:圖5.8考試結(jié)果5.8測(cè)試完成了駕??荚囅到y(tǒng)的編程工作之后,最后的就是該系統(tǒng)的測(cè)試過(guò)程了,系統(tǒng)測(cè)試的根本目標(biāo)是盡可能多的發(fā)現(xiàn)和排除該系統(tǒng)設(shè)計(jì)過(guò)程中的隱藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶使用。系統(tǒng)的測(cè)試包括系統(tǒng)的編譯和發(fā)行,在測(cè)試中有兩種方法:黑盒測(cè)試(功能測(cè)試),白盒測(cè)試(結(jié)構(gòu)測(cè)試)。大型系統(tǒng)通常由若干個(gè)子系統(tǒng)組成,每個(gè)子系統(tǒng)又由很多的模塊組成,主要的步驟有:模塊測(cè)試,子系統(tǒng)測(cè)試,系統(tǒng)測(cè)試,驗(yàn)收測(cè)試,平行運(yùn)行。在單元測(cè)試期間對(duì)模塊進(jìn)行測(cè)試主要是針對(duì)模塊接口,局部數(shù)據(jù)結(jié)構(gòu),重要的執(zhí)行通路,出錯(cuò)處理通路,邊界條件。在確定測(cè)試也成驗(yàn)收測(cè)試,是為了驗(yàn)證該設(shè)備管理系統(tǒng)的有效性。以保證軟件確實(shí)滿足了用戶需求而進(jìn)行的一系列活動(dòng),需求分析階段產(chǎn)生的系統(tǒng)規(guī)格說(shuō)明書(shū),準(zhǔn)確的描述用戶對(duì)軟件的合理期望,是測(cè)試的基礎(chǔ)。1.系統(tǒng)的編譯設(shè)計(jì)系統(tǒng)的目的就是要使用者即使不安裝Visual FoxPro也能運(yùn)行該程序,要想系統(tǒng)脫離Visual FoxPro環(huán)境運(yùn)行,需要對(duì)系統(tǒng)進(jìn)行編譯,制作出可以單獨(dú)運(yùn)行的可執(zhí)行程序。系統(tǒng)的編譯過(guò)程首先將系統(tǒng)中涉及到的文件全部包含進(jìn)“項(xiàng)目管理器”中,單擊項(xiàng)目管理器

溫馨提示

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

評(píng)論

0/150

提交評(píng)論