ASPNET應(yīng)用系統(tǒng)開發(fā).docx_第1頁
ASPNET應(yīng)用系統(tǒng)開發(fā).docx_第2頁
ASPNET應(yīng)用系統(tǒng)開發(fā).docx_第3頁
ASPNET應(yīng)用系統(tǒng)開發(fā).docx_第4頁
ASPNET應(yīng)用系統(tǒng)開發(fā).docx_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第10章 ASP.NET應(yīng)用系統(tǒng)開發(fā)在線考試系統(tǒng)10.1需求分析近年來隨著軟件工程技術(shù)、信息通信技術(shù)的快速發(fā)展以及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的日趨成熟,網(wǎng)絡(luò)教育在人們的教育活動(dòng)中逐步得到普及。網(wǎng)上考試是網(wǎng)絡(luò)教育不可缺少的組成部分,是網(wǎng)絡(luò)教育的一個(gè)重要環(huán)節(jié)。網(wǎng)上考試在國外一些國家已經(jīng)得到了蓬勃發(fā)展,人們選學(xué)課程和考試都是通過網(wǎng)上進(jìn)行的。例如國外一些聞名的考試,如Microsoft公司的MCSE(Microsoft系統(tǒng)工程師認(rèn)證考試)、GMAT(工商管理碩士入學(xué)考試)、托??荚嚒RE(美國探究生入學(xué)考試)等,都是采用網(wǎng)上考試的形式進(jìn)行的。在國內(nèi),目前絕大多數(shù)考試還停留在傳統(tǒng)考試方式上,對(duì)互聯(lián)網(wǎng)的真正應(yīng)用僅限于一些考試的網(wǎng)上報(bào)名工作和網(wǎng)上成績查詢,還沒有真正形成網(wǎng)上考試規(guī)模。網(wǎng)上考試系統(tǒng)作為現(xiàn)代教育的一個(gè)子系統(tǒng),是保證教育教學(xué)質(zhì)量的重要手段。在傳統(tǒng)的考試方式下,組織一次考試要經(jīng)過出題、考試、評(píng)卷、試卷分析等步驟,隨著考試類型的增加及考試要求的提高,教師的工作量將會(huì)越來越大,并且其工作非常輕易出錯(cuò),在一定程度上說,傳統(tǒng)的考試方式已經(jīng)存在著改革的必要了。Internet技術(shù)的發(fā)展使得考試的技術(shù)手段和載體發(fā)生了劃時(shí)代的變化,考試從傳統(tǒng)的紙筆考試到計(jì)算機(jī)輔助考試再發(fā)展到基于Web的網(wǎng)上考試成為現(xiàn)實(shí)。10.2 系統(tǒng)設(shè)計(jì)10.2.1功能結(jié)構(gòu)圖 根據(jù)在線考試網(wǎng)的特點(diǎn),可以將其分為前臺(tái)和后臺(tái)兩個(gè)部分進(jìn)行設(shè)計(jì)。前臺(tái)主要用于考生注冊和登錄系統(tǒng)、在線考試、查詢成績、退出登錄;后臺(tái)主要用于管理員對(duì)考生信息、考題信息、考生成績信息、考試套題和課程信息進(jìn)行管理。在線考試網(wǎng)前臺(tái)系統(tǒng)考生注冊退出系統(tǒng)查詢成績在線考試找回密碼登錄開始考試考試結(jié)束準(zhǔn)備考試考場規(guī)則選擇考試課程和套題圖10.1在線考試網(wǎng)前臺(tái)功能結(jié)構(gòu)圖在線考試網(wǎng)后臺(tái)功能結(jié)構(gòu)圖如10.2所示:在線考試網(wǎng)后臺(tái)系統(tǒng)管理員信息管理退出管理考試試題管理考試成績管理考試題目管理套題信息管理課程信息管理專業(yè)信息管理考生信息管理刪除考試成績查詢考試成績添加考試課程查詢考試課程刪除考試課程修改考試課程查詢管理員刪除管理員修改管理員添加管理員圖10.2在線考試網(wǎng)后臺(tái)功能結(jié)構(gòu)圖10.2.2 功能流程圖本系統(tǒng)總體上由兩個(gè)模塊組成:管理員模塊和考生用戶模塊??忌枰猿晒蟛拍艿顷懴到y(tǒng)進(jìn)行在線考試和考試成績查詢,在線考試需要考生首先閱讀考試規(guī)則,在接受考試規(guī)則的情況下選擇課程和套題,然后進(jìn)入考試頁面答題,系統(tǒng)會(huì)自動(dòng)記錄時(shí)間,考生提交卷子,交與后臺(tái)管理員處理,最終考生可查詢自己的考試成績;管理員直接登錄系統(tǒng)可以對(duì)考生信息、考試信息、管理員信息、考試試題信息進(jìn)行管理。具體操作流程如圖10.3圖10.3 在線考試流程圖10.2.3 數(shù)據(jù)庫設(shè)計(jì)在項(xiàng)目開發(fā)過程中,數(shù)據(jù)庫設(shè)計(jì)是非常重要的一個(gè)環(huán)節(jié)。一個(gè)優(yōu)秀的數(shù)據(jù)庫結(jié)構(gòu),不僅可以提高系統(tǒng)運(yùn)行效率、方便維護(hù),而且為以后對(duì)新功能的新增和老功能的擴(kuò)展都留有余地。本網(wǎng)站采用SQL Server2005數(shù)據(jù)庫,數(shù)據(jù)庫名稱為db_Examination,其中包含7張數(shù)據(jù)庫表。如圖10.4所示圖10.4 數(shù)據(jù)庫表結(jié)構(gòu)圖1. 數(shù)據(jù)庫概要設(shè)計(jì)對(duì)在線考試網(wǎng)站系統(tǒng)進(jìn)行需求分析、流程設(shè)計(jì)以及系統(tǒng)功能結(jié)構(gòu)的確定,設(shè)計(jì)出系統(tǒng)中使用的數(shù)據(jù)庫實(shí)例對(duì)象分別為管理員、考試套題、考生信息、考生成績信息。為了對(duì)在線考試系統(tǒng)進(jìn)行有效的管理就需要設(shè)置一個(gè)或多個(gè)管理員,管理員實(shí)體包含管理員編號(hào)、管理員姓名、管理員密碼??荚囂最}實(shí)體包括套題名稱、所屬課程、添加時(shí)間及有效時(shí)間等屬性。管理員實(shí)體E-R圖,如圖10.5所示;考試套題實(shí)體E-R圖,如圖10.6所示。所屬課程套題名稱管理員編號(hào)管理員姓名管理員信息考試套題有效時(shí)間新增時(shí)間管理員密碼圖10.5 管理員實(shí)體E-R圖 圖10.6 圖10.5管理員實(shí)體E-R圖 考生信息實(shí)體包括學(xué)生證號(hào)、姓名、性別、所學(xué)專業(yè)、注冊時(shí)間、登錄網(wǎng)站密碼、密碼提示問題、密碼提示答案、注冊IP地址屬性??忌畔?shí)體E-R圖,如圖10.7所示。新增時(shí)間登錄密碼考生注冊時(shí)間學(xué)生證號(hào)考生信息所學(xué)專業(yè)注冊IP地址密碼提示答案密碼提示問題考生性別圖10.7 考生信息實(shí)體E-R圖當(dāng)考生考試結(jié)束以后可以對(duì)自己成績進(jìn)行查詢,后臺(tái)管理員可以對(duì)考生成績進(jìn)行管理??忌煽冃畔?shí)體包括學(xué)生證號(hào)、所學(xué)課程、考生總分等??忌煽冃畔?shí)體E-R圖,如圖10.8所示。套題編號(hào)所學(xué)課程學(xué)生證號(hào)考生成績編號(hào)考生成績信息成績提交時(shí)間多選題分?jǐn)?shù)考生總分?jǐn)?shù)單選題分?jǐn)?shù)套題名稱圖10.8 考生成績信息實(shí)體E-R圖2. 數(shù)據(jù)庫邏輯設(shè)計(jì) tb_Administrator(管理員信息表)。用于保存管理員信息,表結(jié)構(gòu)如表10.1所示。表10.1 tb_Administrator表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識(shí)NameVarchar50否管理員名稱PWDVarchar50否管理員密碼 tb_Lesson(考生課程信息表)。用于保存指定專業(yè)所包含的課程信息。表結(jié)構(gòu)如表10.2所示。表10.2 tb_Lesson表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識(shí)NameVarchar60是課程名稱ofProfessionbigint8是所屬專業(yè)編號(hào)JoinTimedatetime8Getdate()是添加時(shí)間 tb_Profession(考生專業(yè)信息表)。用于保存考試所涉及到的專業(yè)信息,表結(jié)構(gòu)如表10.3所示。表10.3 tb_Profession表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識(shí)NameVarchar200是專業(yè)名稱JoinTimedatetime8Getdate()是添加時(shí)間 tb_Questions(考試試卷信息表)。用于保存各套題所包含的詳細(xì)考試題目,表結(jié)構(gòu)如表10.4所示。表10.4 tb_Questions表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識(shí)Que_subjectVarchar50是試題主題Que_typechar10是試題類型Que_joindatedatetime8Getdate()是試題添加時(shí)間Que_lessonidint4是所屬課程號(hào)Que_professionidint4是所屬專業(yè)號(hào)Que_toatiidbigint8是所屬套題編號(hào)OptionAVarchar50是選項(xiàng)AOptionBvarchar50是選項(xiàng)BOptionCvarchar50是選項(xiàng)COptionDvarchar50是選項(xiàng)DQue_answerchar10是試題答案notevarchar50是注釋 Tb_Student(考生信息表)。用于保存在網(wǎng)站注冊的考生信息,表結(jié)構(gòu)如表10.5所示。表10.5 Tb_Student表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDVarchar50否學(xué)生證號(hào)NameVarchar20是姓名PWDVarchar20是密碼SexVarchar2是性別JoinTimedatetime8Getdate()是加入時(shí)間QuestionVarchar50是密碼問題AnswerVarchar50是密碼答案Professionbigint8是所學(xué)專業(yè)號(hào)IPAddresschar30是IP地址 Tb_StuResult(考生成績信息表)。用于保存考生的考試成績,表結(jié)構(gòu)如表10.6所示。表10.6 Tb_ StuResult表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述res_Idbigint8否唯一標(biāo)識(shí)Stu_idVarchar50是所屬學(xué)生編號(hào)Which_lessonVarchar50是所屬課程名稱taotiidbigint8是所屬套題編號(hào)taotinameVarchar50是所屬套題名稱Res_singleint4是單選成績Res_moreint4是多選成績Res_totalint4是總成績Res_subdatedatetime8Getdate()是成績提交時(shí)間 Tb_taoti(考試套題信息表)。用于保存課程所對(duì)應(yīng)的套題信息,表結(jié)構(gòu)如表10.7所示。表10.7 Tb_taoti表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識(shí)NameVarchar50是套題名稱LessonIDbigint8是所屬課程號(hào)JoinTimedatetime8Getdate()是添加時(shí)間LimitTimedatetime8是有效時(shí)間3. 文件夾組織結(jié)構(gòu)網(wǎng)站文件的組織結(jié)構(gòu)如圖10.9所示。圖10.9 文件組織結(jié)構(gòu)圖10.3 系統(tǒng)實(shí)現(xiàn)10.3.1.公共類編寫在項(xiàng)目開發(fā)中通常將一些貫徹整個(gè)項(xiàng)目中使用的方法封裝到公共類中,可以減少代碼重復(fù)使用,有利于代碼維護(hù)。在線考試網(wǎng)中創(chuàng)建了一個(gè)公共類Datacon,在此公共類中創(chuàng)建了6個(gè)方法。 getcon:數(shù)據(jù)庫連接,連接數(shù)據(jù)庫為Sqlserver。 eccom:用于執(zhí)行對(duì)數(shù)據(jù)庫操作的SQL語句命令,如刪除操作、修改操作等。 ecadabind:用于將數(shù)據(jù)庫數(shù)據(jù)綁定到表格控件中。 ecDropDownList:用于將數(shù)據(jù)綁定到下拉列表框中。 ecadabindinfostring:用于將數(shù)據(jù)庫綁定到表格控件中,并獲取數(shù)據(jù)表中的主鍵字段 ExceRead:用于讀取數(shù)據(jù)庫中數(shù)據(jù),返回一個(gè)SqlDataReader。1. 數(shù)據(jù)庫連接方法在公共類中編寫一個(gè)getcon()方法,用于連接Sql Server數(shù)據(jù)庫。代碼如下:public SqlConnection getcon() /從web.config文件中獲取名字叫”ConStr”數(shù)據(jù)庫連接字符串 string strCon = ConfigurationManager.ConnectionStringsConStr.ToString(); SqlConnection sqlCon = new SqlConnection(strCon); return sqlCon;2. 執(zhí)行數(shù)據(jù)庫操作方法在eccom()方法中,首先接受一個(gè)SQL語句參數(shù),然后與Sql Server數(shù)據(jù)庫建立連接,使用SqlCommand的對(duì)象執(zhí)行所需要執(zhí)行的SQL語句,最后通過try-catch-finally語句進(jìn)行異常處理,如果執(zhí)行成功則返回true,否則返回false。代碼如下:public bool eccom(string sqlstr) SqlConnection con=this.getcon(); con.Open();/打開數(shù)據(jù)庫 SqlCommand mycommand=new SqlCommand(sqlstr,con); try mycommand.ExecuteNonQuery(); return true; catch return false; finally con.Close();/關(guān)閉數(shù)據(jù)庫 con.Dispose();/釋放數(shù)據(jù)庫連接資源 注意:由于SqlConnection類繼承IDisposable接口,所以垃圾回收器(GC)不能直接回收,需要使用Dispose()來釋放資源或使用Using來進(jìn)行資源管理。3. 將數(shù)據(jù)綁定到表格控件的方法在公共類中編寫一個(gè)ecadabind(GridView gv,string sqlstrl4)方法,用來執(zhí)行SQL語句,返回類型為bool。該方法主要是執(zhí)行SqlDataAdapter中的語句,并將其綁定到GridView控件上,如果執(zhí)行成功返回true,否則返回false,代碼如下:public bool ecadabind(GridView gv,string sqlstrl4) /定義新的數(shù)據(jù)庫連接 SqlConnection con = this.getcon(); /打開數(shù)據(jù)庫連接 con.Open(); /定義并初使化數(shù)據(jù)適配器 SqlDataAdapter mydataadapter = new SqlDataAdapter(sqlstrl4,con); /創(chuàng)建一個(gè)數(shù)據(jù)集mydataset DataSet mydataset = new DataSet(); /將數(shù)據(jù)適配器中的數(shù)據(jù)填充到數(shù)據(jù)集中 mydataadapter.Fill(mydataset); /將此數(shù)據(jù)集作為表格控件的數(shù)據(jù)源 gv.DataSource=mydataset; try /綁定數(shù)據(jù)庫中數(shù)據(jù) gv.DataBind(); /返回這個(gè)數(shù)據(jù)集 return true; catch return false; finally /關(guān)閉數(shù)據(jù)庫連接 con.Close(); 4. 將數(shù)據(jù)綁定到下拉列表框的方法將數(shù)據(jù)綁定到下拉列表中使用ecDropDownList(DropDownList DDL, string sqlstr3, string DTF, string DVF)方法。該方法4個(gè)參數(shù)分別表示DropDownList控件、SQL語句、列表項(xiàng)提供的內(nèi)容字段和列表項(xiàng)提供值。應(yīng)用SqlDataAdapter對(duì)象填充數(shù)據(jù)集并指定DropDownList控件的數(shù)據(jù)源,設(shè)置列表項(xiàng)提供的內(nèi)容字段和列表項(xiàng)提供值所綁定的數(shù)據(jù)源。如果DropDownList控件執(zhí)行DataBind()方法返回true,反之則返回false。代碼如下:public bool ecDropDownList(DropDownList DDL, string sqlstr3, string DTF, string DVF) /創(chuàng)建數(shù)據(jù)庫連接 SqlConnection con = this.getcon(); /打開數(shù)據(jù)庫連接 con.Open(); /定義并初使化數(shù)據(jù)適配器 SqlDataAdapter mydataadapter = new SqlDataAdapter(sqlstr3,con); /創(chuàng)建一個(gè)數(shù)據(jù)集mydataset DataSet mydataset = new DataSet(); /將數(shù)據(jù)適配器中的數(shù)據(jù)填充到數(shù)據(jù)集中 mydataadapter.Fill(mydataset); DDL.DataSource = mydataset; DDL.DataTextField = DTF; DDL.DataValueField = DVF; try DDL.DataBind(); return true; catch return false; finally /關(guān)閉數(shù)據(jù)庫連接 con.Close(); 5. 在表格控件中獲取數(shù)據(jù)主鍵字段的方法在公共類中有ecadabindinfostring(GridView gv,string sqlstr5,string DNK)方法,該方法用來執(zhí)行SQL語句,返回Bool類型。執(zhí)行SqlDataAdapter中的語句,將其綁定到GridView控件上顯示其主鍵字段的名稱,相應(yīng)功能執(zhí)行成功返回true,否則返回false。public bool ecadabindinfostring(GridView gv,string sqlstr5,string DNK) SqlConnection con = this.getcon(); con.Open(); SqlDataAdapter mydataadapter = new SqlDataAdapter(sqlstr5,con); DataSet mydataset = new DataSet(); mydataadapter.Fill(mydataset); gv.DataSource=mydataset; gv.DataKeyNames = new string DNK ; try gv.DataBind(); return true; catch return false; finally con.Close(); 6. 數(shù)據(jù)讀取方法在公共類中有ExceRead(string SqlCom)方法。該方法首先創(chuàng)建數(shù)據(jù)庫連接,通過SqlCommand對(duì)象來執(zhí)行ExecuteReader()方法創(chuàng)建一個(gè)數(shù)據(jù)閱讀器,用來依次讀取數(shù)據(jù)庫中的數(shù)據(jù),最后返回一個(gè)SqlDataReader類對(duì)象。代碼如下:public SqlDataReader ExceRead(string SqlCom)SqlConnection con = this.getcon();con.Open();/創(chuàng)建一個(gè)SqlCommand對(duì)象,表示要執(zhí)行的SqlCom語句或存儲(chǔ)過程SqlCommand sqlcom = new SqlCommand(SqlCom, con);SqlDataReader read = sqlcom.ExecuteReader();return read; 10.3.2.在線考試登錄頁面實(shí)現(xiàn)1. 在線考試登錄頁面概述考生和管理員需要通過登錄頁面進(jìn)入在線考試網(wǎng),考生在登錄在線考試網(wǎng)之前,首先需要通過登錄頁面進(jìn)行注冊。為了防止考生忘記密碼,提供了找回密碼的功能。在線考試王登錄頁面的運(yùn)行效果圖如10.10所示。圖10.10 在線考試網(wǎng)登錄頁面 2. 在線考試網(wǎng)登錄頁面技術(shù)分析 考生找回密碼主要分為3個(gè)頁面來完成,具體流程圖如下圖10.11 找回密碼流程圖 驗(yàn)證碼實(shí)現(xiàn)可以防止用戶惡意注冊。在igm文件夾下面有一個(gè)生成驗(yàn)證碼的一般處理程序(ValidateCode.ashx),在Default.aspx頁面添加一個(gè)img控件引入一般處理程序,通過對(duì)img添加點(diǎn)擊事件(onclick=ChangeCode()使用Javascript實(shí)現(xiàn)點(diǎn)擊圖片刷新。實(shí)現(xiàn)代碼如下:/點(diǎn)擊圖片調(diào)用的事件function ChangeCode() var img = document.getElementById(imgOk).src = igm/ValidateCode.ashx?date= + new Date().getMilliseconds(); /通過img控件顯示一般處理程序所畫的驗(yàn)證碼圖片3. 在線考試網(wǎng)登錄頁面實(shí)現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_Administrator、tb_Student.l 設(shè)計(jì)步驟1) 在應(yīng)用程序中新建一個(gè)web窗體,命名為:Default.aspx。2) 在頁面添加一個(gè)Table(表格)為整個(gè)頁面布局。3個(gè)TextBox控件、3個(gè)Lable控件、3個(gè)Button控件和1個(gè)CheckBox控件。頁面各控件說明如表10.8所示。表10.8 Default.aspx頁面控件說明控件類型控件名稱主要屬性設(shè)置控件用途CheckBoxcblAdminLog無驗(yàn)證管理員登陸B(tài)uttonbtnLoginText屬性設(shè)置為”登錄”用于考生登陸btnZhuceText屬性設(shè)置為”注冊”用于考生注冊btnPwdText屬性設(shè)置為”忘密”用于考生忘記密碼TextBoxtxtUserName無錄入登錄考生學(xué)生證號(hào)txtPwd無錄入登錄密碼txtValidate無錄入登錄驗(yàn)證碼l 代碼實(shí)現(xiàn)在處理登錄頁面提交的數(shù)據(jù)時(shí),首先會(huì)根據(jù)“管理員登錄”復(fù)選框的值來判斷是否是管理員登錄,如果選中則執(zhí)行核對(duì)用戶名、密碼、驗(yàn)證碼而進(jìn)入管理員頁面,否則進(jìn)入考生頁面。點(diǎn)擊“確定”按鈕,提交登錄信息,其代碼如下:protected void Button1_Click(object sender, EventArgs e) /判斷驗(yàn)證碼是否有誤if (txtValidate.Text != txtValidate.Text)Response.Write(alert(驗(yàn)證碼有誤!)location=javascript:history.go(-1); else /判斷是否是管理員登錄,如果是則調(diào)用方法getcom方法中的條件1 if (cblAdminLog.Items0.Selected = true) getcom(1); /非管理員登錄,調(diào)用getcom方法中條件2 else getcom(2); 調(diào)用自定義方法getcom方法,判斷是否是管理員還是考生。代碼如下:private void getcom(int i) /打開數(shù)據(jù)庫連接,并調(diào)用公共類中的getcon方法 SqlConnection con = dataconn.getcon(); con.Open(); /創(chuàng)建一個(gè)新的SqlCommand實(shí)例對(duì)象 SqlCommand com = con.CreateCommand(); switch (i) case 1: com.CommandText = select count(*) from tb_Administrator where Name= + this.txtUserName.Text + and PWD= + this.txtPwd.Text + ; /獲取SQL語句的值 強(qiáng)制轉(zhuǎn)換成數(shù)值類型 int count1 = Convert.ToInt32(com.ExecuteScalar(); /判斷數(shù)據(jù)庫中是否存在數(shù)據(jù) if (count1 0) ApplicationName = txtUserName.Text;/成功 ApplicationPWD = txtPwd.Text;/成功 /如果登錄成功,則跳轉(zhuǎn)到管理員頁面 Page.Response.Redirect(HouAdmin/admin.aspx); else /如果登錄失敗,則彈出錯(cuò)誤信息 Response.Write(alert(用戶名或密碼有誤!);location=javascript:history.go(-1); break; case 2: com.CommandText = select count(*) from tb_Student where ID= + txtUserName.Text + and PWD= + txtPwd.Text + ; int count2 = Convert.ToInt32(com.ExecuteScalar(); if (count2 0) ApplicationID = txtUserName.Text; ApplicationPWD = txtPwd.Text; Page.Response.Redirect(QianUser/zaixian_kaoshi.aspx); else Response.Write(alert(用戶名或密碼有誤!);location=javascript:history.go(-1); return; break; 10.3.3. 考生注冊頁面實(shí)現(xiàn)1. 考生注冊頁面概述考生要進(jìn)入在線考試系統(tǒng),首先需要注冊一個(gè)學(xué)生證號(hào)。點(diǎn)擊在線考試系統(tǒng)登錄頁中的“注冊”按鈕,進(jìn)入考生注冊頁面。注冊頁面的運(yùn)行效果如圖10.12所示。在注冊頁面中輸入考生的基本信息,包括學(xué)生學(xué)號(hào)、學(xué)生姓名、密碼、密碼問題、問題答案、性別和所學(xué)專業(yè)。為了防止注冊的學(xué)生證號(hào)重復(fù),可以通過點(diǎn)擊“檢測注冊號(hào)”按鈕進(jìn)行檢測,如圖10.13所示,考生輸入注冊的學(xué)生證號(hào)后通過檢測顯示在數(shù)據(jù)庫中無此號(hào),可以注冊。檢測完考生注冊信息的學(xué)生賬號(hào),并在注冊頁面輸入正確的信息后,如圖10.14所示,單機(jī)”確定”按鈕,如果注冊成功將會(huì)在頁面顯示”成功!”信息。圖10.12 考生注冊頁面圖10.13 檢測考生注冊的學(xué)生證號(hào)是否已注冊圖10.14 考生注冊成功頁面2. 考生注冊頁面技術(shù)分析 用戶驗(yàn)證控件應(yīng)用,學(xué)生證號(hào)不允許為空且為16位數(shù)字,密碼、密碼問題、密碼答案都不允許為空。驗(yàn)證控件名稱主要屬性用途RequiredFieldValidatorNameControlToValidate的屬性為txtStuIDErrorMessage為”學(xué)生證號(hào)不允許為空判斷學(xué)生證號(hào)是否為空RequiredFieldValidatorNameIsNumControlToValidate為txtStuID ErrorMessage為學(xué)生編號(hào)為16位有效數(shù)字 ValidationExpression為.16$判斷學(xué)生證號(hào)是否為16位的數(shù)字RequiredFieldValidatorPwdControlToValidate為txtStuPwd ErrorMessage為密碼不允許為空判斷密碼是否為空CompareValidatorPwdControlToCompare為txtStuPwd ControlToValidate為txtStuFPwd ErrorMessage為密碼不一致判斷二次輸入的密碼是否一致3. 考生注冊頁面的實(shí)現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_Profession、tb_Student.l 設(shè)計(jì)步驟在應(yīng)用程序中新建一個(gè)web窗體,命名為zhuce.aspx,作為考生注冊頁面。在頁面中添加一個(gè)Table(表格)控件為整體布局,2個(gè)DropDownList控件、3個(gè)Button控件、6個(gè)TextBox控件、4個(gè)RequiredFieldValidator、1個(gè)CompareValidator。頁面各控件說明如表10.9所示。表10.9 zhuce.aspx頁面主要控件說明控件類型控件名稱主要屬性設(shè)置控件用途DropDownListDropDownList1無注冊考生選擇性別和所學(xué)專業(yè)ButtonbtnResText屬性設(shè)置為”注冊”用于考生注冊btnBackText屬性設(shè)置為”重置”重置考生注冊信息btnCloseText屬性設(shè)置為”關(guān)閉”關(guān)閉考生注冊頁面TextBoxTextBox1無注冊考生的學(xué)生證號(hào)、姓名、密碼、重復(fù)密碼、密碼問題、密碼答案l 實(shí)現(xiàn)代碼在后臺(tái)代碼的Page_Load事件中,首先調(diào)用公共類中的ecDropDownList方法,將考生姓名綁定到DropDownList控件。其代碼如下:protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) /調(diào)用公共類中的ecDropDownList方法 dataconn.ecDropDownList(ddlProfession, select * from tb_Profession, Name, ID); Label1.Visible = false; Label2.Visible = false; Label3.Visible = false; 點(diǎn)擊該注冊頁面中的”注冊”按鈕,催發(fā)其Click事件,將注冊信息添加到數(shù)據(jù)庫中。其代碼如下:protected void Button1_Click(object sender, EventArgs e) /調(diào)用公共類中的eccom,執(zhí)行SQL語句命令 dataconn.eccom(insert into tb_Student + (ID,Name,PWD,question,answer,Sex,profession) + values( + this.txtStuID.Text + , + this.txtStuName.Text + , + this.txtStuPwd.Text + , + this.txtQuePwd.Text + , + this.txtAnsPwd.Text + , + this.ddlSex.Text + , + Convert.ToInt32(ddlProfession.SelectedValue) + ); /如果添加成功,彈出成功對(duì)話框 Label1.Visible = true; 為了避免考生輸入的學(xué)生證號(hào)出現(xiàn)重復(fù),導(dǎo)致注冊失敗,在頁面中添加了一個(gè)”檢查注冊號(hào)”按鈕,來檢查該注冊的學(xué)生證號(hào)是否已經(jīng)存在。在該按鈕觸發(fā)的事件中,主要應(yīng)用了數(shù)據(jù)庫閱讀器(SqlDataReader)讀取數(shù)據(jù)庫中數(shù)據(jù)判斷注冊號(hào)是否存在。事件代碼如下:protected void Button1_Click1(object sender, EventArgs e) SqlDataReader read = dataconn.ExceRead(select * from tb_Student where ID= + this.txtStuID.Text + );read.Read();if (read.HasRows) if (this.txtStuID.Text = readID.ToString() Label2.Visible = true;else Label3.Visible = true;read.Close(); 10.3.4. 在線考試頁面實(shí)現(xiàn)1. 在線考試頁面概述在線考試頁面的主要功能是允許考試在網(wǎng)站上針對(duì)指定的專業(yè)和課程進(jìn)行考試。在該頁面中,考生首先需要閱讀完考試規(guī)則,在同意所列出的考試規(guī)則的前提下,才能選擇考試課程和套題,進(jìn)入考試頁面進(jìn)行答題。如圖10.15和圖10.16所示。圖10.15 考生規(guī)則閱讀頁面圖10.16 在線考試頁面當(dāng)考生提交試卷或達(dá)到考試結(jié)束時(shí)間時(shí),系統(tǒng)將自動(dòng)對(duì)考生提交的試卷進(jìn)行評(píng)分,并給出最終考試成績。頁面運(yùn)行效果如圖10.17所示。圖10.17 考試最終提交成績效果圖2. 在線考試頁面技術(shù)分析Application對(duì)象Application對(duì)象可稱之為記錄應(yīng)用程序參數(shù)的對(duì)象。Application對(duì)象是HttpApplicationState類的一個(gè)實(shí)例,可以生成一個(gè)所有web應(yīng)用程序都可以存取的變量。這個(gè)變量的使用范圍涵蓋全部使用者,只要正在使用這個(gè)網(wǎng)頁的程序都可以存取這個(gè)變量。使用Application對(duì)象的相關(guān)的語法如下:Application變量 =變量內(nèi)容 ;Application(對(duì)象名)=Server.CreateObject(Progid)Session對(duì)象Session對(duì)象可稱之為記錄瀏覽器的變量對(duì)象。Session對(duì)象是HttpSessionState類的一個(gè)實(shí)例,其功能和Application對(duì)象類似,都是用來存儲(chǔ)跨網(wǎng)頁程序的變量或者對(duì)象,但Session對(duì)象和Application對(duì)象有些特性存在著差異。Session對(duì)象只針對(duì)單一網(wǎng)頁使用者,也就是說各個(gè)連接的機(jī)器都有各自的Session對(duì)象,不同的客戶端無法互相存取。Application對(duì)象中止于停止IIS服務(wù)時(shí),而Session對(duì)象中止于聯(lián)機(jī)機(jī)器離線時(shí),也就是當(dāng)網(wǎng)頁使用者關(guān)閉瀏覽器或超過設(shè)定的Session變量的有效時(shí)間時(shí),Session對(duì)象就會(huì)消失。Session對(duì)象和Application對(duì)象一樣都是Page對(duì)象的成員,因此可直接在網(wǎng)頁中使用。使用Session對(duì)象存放信息的語法如下:Session“變量名”=”內(nèi)容”;從會(huì)話中讀取信息的語法如下:VariablesName= Session“變量名”;3. 在線考試頁面實(shí)現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_StuResult、tb_Questions.設(shè)計(jì)步驟在應(yīng)用程序中新建一個(gè)文件夾,將其命名為QianUser。在該文件夾創(chuàng)建一個(gè)Web窗體,命名為StartExamfra.aspx,作為考生在線考試頁面。在頁面中添加一個(gè)Tabel(表格)控件為整個(gè)頁面布局。添加2個(gè)Button控件、2個(gè)DataList控件、1個(gè)TextBox、1個(gè)CheckBoxList和1個(gè)RadioButtonList,通過屬性窗口設(shè)置控件的屬性。頁面中各個(gè)控件的屬性設(shè)置及其用途如表10.10所示。表10.10 在線考試頁面涉及到的主要控件控件類型控件名稱主要屬性設(shè)置控件用途ButtonbtnSubminText屬性設(shè)置為”交卷”考生提交試卷btnExitText屬性設(shè)置為”退出當(dāng)前系統(tǒng)”考生退出考試系統(tǒng)TextBoxtime無顯示考生時(shí)間DataListDataList1無綁定單選題DataList2無綁定多選題CheckBoxListCheckBoxList1無嵌套在DataList控件中顯示多選題選項(xiàng)RadioButtonListRadioButtonList1無嵌套在DataList控件中顯示單選題選項(xiàng)實(shí)現(xiàn)代碼首先創(chuàng)建公共類Datacon的類對(duì)象,以便在后面程序調(diào)用其方法,然后自定義4個(gè)int類型的全局變量int_row1、int_row2、int_row1Point和int_row2Point,分別用來表示單選題題號(hào)、多選題題號(hào)、單選題分?jǐn)?shù)和多選題分?jǐn)?shù)。其實(shí)現(xiàn)代碼如下: Datacon dataconn = new Datacon(); static int int_row1 = 0;/單選題題號(hào)索引 static int int_row2 = 0;/多選題題號(hào)索引 static int int_row1Point = 0;/單選題分?jǐn)?shù) static int int_row2Point = 0;/多選題分?jǐn)?shù)在頁面加載的Page_Load事件中編寫如下代碼,用于從數(shù)據(jù)庫中提取出相應(yīng)題目。protected void Page_Load(object sender, EventArgs e) if (!IsPostBack)/判斷頁面是否是首次加載 this.getCom(1);/從數(shù)據(jù)庫中獲取單選題 this.getCom(2); /從數(shù)據(jù)庫中獲取多選題 單機(jī)”交卷”按鈕,首先通過Session變量獲取學(xué)生ID和其選擇的科目及套題信息,然后調(diào)用getCom()方法來執(zhí)行提交考卷操作。其關(guān)鍵代碼如下:protected void btnSubmit_Click(object sender,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論