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),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第10章 ASP.NET應(yīng)用系統(tǒng)開發(fā)在線考試系統(tǒng)10.1需求分析近年來隨著軟件工程技術(shù)、信息通信技術(shù)的快速發(fā)展以及計算機(jī)網(wǎng)絡(luò)技術(shù)的日趨成熟,網(wǎng)絡(luò)教育在人們的教育活動中逐步得到普及。網(wǎng)上考試是網(wǎng)絡(luò)教育不可缺少的組成部分,是網(wǎng)絡(luò)教育的一個重要環(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)考試方式上,對互聯(lián)網(wǎng)的真正應(yīng)用僅限于一些考試的網(wǎng)上報名工作和網(wǎng)上成績查詢,還沒有真正形成網(wǎng)上考試規(guī)模。網(wǎng)上考試系統(tǒng)作為現(xiàn)代教育的一個子系統(tǒng),是保證教育教學(xué)質(zhì)量的重要手段。在傳統(tǒng)的考試方式下,組織一次考試要經(jīng)過出題、考試、評卷、試卷分析等步驟,隨著考試類型的增加及考試要求的提高,教師的工作量將會越來越大,并且其工作非常輕易出錯,在一定程度上說,傳統(tǒng)的考試方式已經(jīng)存在著改革的必要了。Internet技術(shù)的發(fā)展使得考試的技術(shù)手段和載體發(fā)生了劃時代的變化,考試從傳統(tǒng)的紙筆考試到計算機(jī)輔助考試再發(fā)展到基于Web的網(wǎng)上考試成為現(xiàn)實。10.2 系統(tǒng)設(shè)計10.2.1功能結(jié)構(gòu)圖 根據(jù)在線考試網(wǎng)的特點,可以將其分為前臺和后臺兩個部分進(jìn)行設(shè)計。前臺主要用于考生注冊和登錄系統(tǒng)、在線考試、查詢成績、退出登錄;后臺主要用于管理員對考生信息、考題信息、考生成績信息、考試套題和課程信息進(jìn)行管理。在線考試網(wǎng)前臺系統(tǒng)考生注冊退出系統(tǒng)查詢成績在線考試找回密碼登錄開始考試考試結(jié)束準(zhǔn)備考試考場規(guī)則選擇考試課程和套題圖10.1在線考試網(wǎng)前臺功能結(jié)構(gòu)圖在線考試網(wǎng)后臺功能結(jié)構(gòu)圖如10.2所示:在線考試網(wǎng)后臺系統(tǒng)管理員信息管理退出管理考試試題管理考試成績管理考試題目管理套題信息管理課程信息管理專業(yè)信息管理考生信息管理刪除考試成績查詢考試成績添加考試課程查詢考試課程刪除考試課程修改考試課程查詢管理員刪除管理員修改管理員添加管理員圖10.2在線考試網(wǎng)后臺功能結(jié)構(gòu)圖10.2.2 功能流程圖本系統(tǒng)總體上由兩個模塊組成:管理員模塊和考生用戶模塊。考生需要注冊成功后才能登陸系統(tǒng)進(jìn)行在線考試和考試成績查詢,在線考試需要考生首先閱讀考試規(guī)則,在接受考試規(guī)則的情況下選擇課程和套題,然后進(jìn)入考試頁面答題,系統(tǒng)會自動記錄時間,考生提交卷子,交與后臺管理員處理,最終考生可查詢自己的考試成績;管理員直接登錄系統(tǒng)可以對考生信息、考試信息、管理員信息、考試試題信息進(jìn)行管理。具體操作流程如圖10.3圖10.3 在線考試流程圖10.2.3 數(shù)據(jù)庫設(shè)計在項目開發(fā)過程中,數(shù)據(jù)庫設(shè)計是非常重要的一個環(huán)節(jié)。一個優(yōu)秀的數(shù)據(jù)庫結(jié)構(gòu),不僅可以提高系統(tǒng)運(yùn)行效率、方便維護(hù),而且為以后對新功能的新增和老功能的擴(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è)計對在線考試網(wǎng)站系統(tǒng)進(jìn)行需求分析、流程設(shè)計以及系統(tǒng)功能結(jié)構(gòu)的確定,設(shè)計出系統(tǒng)中使用的數(shù)據(jù)庫實例對象分別為管理員、考試套題、考生信息、考生成績信息。為了對在線考試系統(tǒng)進(jìn)行有效的管理就需要設(shè)置一個或多個管理員,管理員實體包含管理員編號、管理員姓名、管理員密碼。考試套題實體包括套題名稱、所屬課程、添加時間及有效時間等屬性。管理員實體E-R圖,如圖10.5所示;考試套題實體E-R圖,如圖10.6所示。所屬課程套題名稱管理員編號管理員姓名管理員信息考試套題有效時間新增時間管理員密碼圖10.5 管理員實體E-R圖 圖10.6 圖10.5管理員實體E-R圖 考生信息實體包括學(xué)生證號、姓名、性別、所學(xué)專業(yè)、注冊時間、登錄網(wǎng)站密碼、密碼提示問題、密碼提示答案、注冊IP地址屬性。考生信息實體E-R圖,如圖10.7所示。新增時間登錄密碼考生注冊時間學(xué)生證號考生信息所學(xué)專業(yè)注冊IP地址密碼提示答案密碼提示問題考生性別圖10.7 考生信息實體E-R圖當(dāng)考生考試結(jié)束以后可以對自己成績進(jìn)行查詢,后臺管理員可以對考生成績進(jìn)行管理??忌煽冃畔嶓w包括學(xué)生證號、所學(xué)課程、考生總分等??忌煽冃畔嶓wE-R圖,如圖10.8所示。套題編號所學(xué)課程學(xué)生證號考生成績編號考生成績信息成績提交時間多選題分?jǐn)?shù)考生總分?jǐn)?shù)單選題分?jǐn)?shù)套題名稱圖10.8 考生成績信息實體E-R圖2. 數(shù)據(jù)庫邏輯設(shè)計 tb_Administrator(管理員信息表)。用于保存管理員信息,表結(jié)構(gòu)如表10.1所示。表10.1 tb_Administrator表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識NameVarchar50否管理員名稱PWDVarchar50否管理員密碼 tb_Lesson(考生課程信息表)。用于保存指定專業(yè)所包含的課程信息。表結(jié)構(gòu)如表10.2所示。表10.2 tb_Lesson表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識NameVarchar60是課程名稱ofProfessionbigint8是所屬專業(yè)編號JoinTimedatetime8Getdate()是添加時間 tb_Profession(考生專業(yè)信息表)。用于保存考試所涉及到的專業(yè)信息,表結(jié)構(gòu)如表10.3所示。表10.3 tb_Profession表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識NameVarchar200是專業(yè)名稱JoinTimedatetime8Getdate()是添加時間 tb_Questions(考試試卷信息表)。用于保存各套題所包含的詳細(xì)考試題目,表結(jié)構(gòu)如表10.4所示。表10.4 tb_Questions表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識Que_subjectVarchar50是試題主題Que_typechar10是試題類型Que_joindatedatetime8Getdate()是試題添加時間Que_lessonidint4是所屬課程號Que_professionidint4是所屬專業(yè)號Que_toatiidbigint8是所屬套題編號OptionAVarchar50是選項AOptionBvarchar50是選項BOptionCvarchar50是選項COptionDvarchar50是選項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é)生證號NameVarchar20是姓名PWDVarchar20是密碼SexVarchar2是性別JoinTimedatetime8Getdate()是加入時間QuestionVarchar50是密碼問題AnswerVarchar50是密碼答案Professionbigint8是所學(xué)專業(yè)號IPAddresschar30是IP地址 Tb_StuResult(考生成績信息表)。用于保存考生的考試成績,表結(jié)構(gòu)如表10.6所示。表10.6 Tb_ StuResult表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述res_Idbigint8否唯一標(biāo)識Stu_idVarchar50是所屬學(xué)生編號Which_lessonVarchar50是所屬課程名稱taotiidbigint8是所屬套題編號taotinameVarchar50是所屬套題名稱Res_singleint4是單選成績Res_moreint4是多選成績Res_totalint4是總成績Res_subdatedatetime8Getdate()是成績提交時間 Tb_taoti(考試套題信息表)。用于保存課程所對應(yīng)的套題信息,表結(jié)構(gòu)如表10.7所示。表10.7 Tb_taoti表結(jié)構(gòu)字段名稱數(shù)據(jù)類型長度默認(rèn)值允許空字段描述IDbigint8否唯一標(biāo)識NameVarchar50是套題名稱LessonIDbigint8是所屬課程號JoinTimedatetime8Getdate()是添加時間LimitTimedatetime8是有效時間3. 文件夾組織結(jié)構(gòu)網(wǎng)站文件的組織結(jié)構(gòu)如圖10.9所示。圖10.9 文件組織結(jié)構(gòu)圖10.3 系統(tǒng)實現(xiàn)10.3.1.公共類編寫在項目開發(fā)中通常將一些貫徹整個項目中使用的方法封裝到公共類中,可以減少代碼重復(fù)使用,有利于代碼維護(hù)。在線考試網(wǎng)中創(chuàng)建了一個公共類Datacon,在此公共類中創(chuàng)建了6個方法。 getcon:數(shù)據(jù)庫連接,連接數(shù)據(jù)庫為Sqlserver。 eccom:用于執(zhí)行對數(shù)據(jù)庫操作的SQL語句命令,如刪除操作、修改操作等。 ecadabind:用于將數(shù)據(jù)庫數(shù)據(jù)綁定到表格控件中。 ecDropDownList:用于將數(shù)據(jù)綁定到下拉列表框中。 ecadabindinfostring:用于將數(shù)據(jù)庫綁定到表格控件中,并獲取數(shù)據(jù)表中的主鍵字段 ExceRead:用于讀取數(shù)據(jù)庫中數(shù)據(jù),返回一個SqlDataReader。1. 數(shù)據(jù)庫連接方法在公共類中編寫一個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()方法中,首先接受一個SQL語句參數(shù),然后與Sql Server數(shù)據(jù)庫建立連接,使用SqlCommand的對象執(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ù)綁定到表格控件的方法在公共類中編寫一個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)建一個數(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(); /返回這個數(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個參數(shù)分別表示DropDownList控件、SQL語句、列表項提供的內(nèi)容字段和列表項提供值。應(yīng)用SqlDataAdapter對象填充數(shù)據(jù)集并指定DropDownList控件的數(shù)據(jù)源,設(shè)置列表項提供的內(nèi)容字段和列表項提供值所綁定的數(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)建一個數(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對象來執(zhí)行ExecuteReader()方法創(chuàng)建一個數(shù)據(jù)閱讀器,用來依次讀取數(shù)據(jù)庫中的數(shù)據(jù),最后返回一個SqlDataReader類對象。代碼如下:public SqlDataReader ExceRead(string SqlCom)SqlConnection con = this.getcon();con.Open();/創(chuàng)建一個SqlCommand對象,表示要執(zhí)行的SqlCom語句或存儲過程SqlCommand sqlcom = new SqlCommand(SqlCom, con);SqlDataReader read = sqlcom.ExecuteReader();return read; 10.3.2.在線考試登錄頁面實現(xiàn)1. 在線考試登錄頁面概述考生和管理員需要通過登錄頁面進(jìn)入在線考試網(wǎng),考生在登錄在線考試網(wǎng)之前,首先需要通過登錄頁面進(jìn)行注冊。為了防止考生忘記密碼,提供了找回密碼的功能。在線考試王登錄頁面的運(yùn)行效果圖如10.10所示。圖10.10 在線考試網(wǎng)登錄頁面 2. 在線考試網(wǎng)登錄頁面技術(shù)分析 考生找回密碼主要分為3個頁面來完成,具體流程圖如下圖10.11 找回密碼流程圖 驗證碼實現(xiàn)可以防止用戶惡意注冊。在igm文件夾下面有一個生成驗證碼的一般處理程序(ValidateCode.ashx),在Default.aspx頁面添加一個img控件引入一般處理程序,通過對img添加點擊事件(onclick=ChangeCode()使用Javascript實現(xiàn)點擊圖片刷新。實現(xiàn)代碼如下:/點擊圖片調(diào)用的事件function ChangeCode() var img = document.getElementById(imgOk).src = igm/ValidateCode.ashx?date= + new Date().getMilliseconds(); /通過img控件顯示一般處理程序所畫的驗證碼圖片3. 在線考試網(wǎng)登錄頁面實現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_Administrator、tb_Student.l 設(shè)計步驟1) 在應(yīng)用程序中新建一個web窗體,命名為:Default.aspx。2) 在頁面添加一個Table(表格)為整個頁面布局。3個TextBox控件、3個Lable控件、3個Button控件和1個CheckBox控件。頁面各控件說明如表10.8所示。表10.8 Default.aspx頁面控件說明控件類型控件名稱主要屬性設(shè)置控件用途CheckBoxcblAdminLog無驗證管理員登陸B(tài)uttonbtnLoginText屬性設(shè)置為”登錄”用于考生登陸btnZhuceText屬性設(shè)置為”注冊”用于考生注冊btnPwdText屬性設(shè)置為”忘密”用于考生忘記密碼TextBoxtxtUserName無錄入登錄考生學(xué)生證號txtPwd無錄入登錄密碼txtValidate無錄入登錄驗證碼l 代碼實現(xiàn)在處理登錄頁面提交的數(shù)據(jù)時,首先會根據(jù)“管理員登錄”復(fù)選框的值來判斷是否是管理員登錄,如果選中則執(zhí)行核對用戶名、密碼、驗證碼而進(jìn)入管理員頁面,否則進(jìn)入考生頁面。點擊“確定”按鈕,提交登錄信息,其代碼如下:protected void Button1_Click(object sender, EventArgs e) /判斷驗證碼是否有誤if (txtValidate.Text != txtValidate.Text)Response.Write(alert(驗證碼有誤!)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)建一個新的SqlCommand實例對象 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 /如果登錄失敗,則彈出錯誤信息 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. 考生注冊頁面實現(xiàn)1. 考生注冊頁面概述考生要進(jìn)入在線考試系統(tǒng),首先需要注冊一個學(xué)生證號。點擊在線考試系統(tǒng)登錄頁中的“注冊”按鈕,進(jìn)入考生注冊頁面。注冊頁面的運(yùn)行效果如圖10.12所示。在注冊頁面中輸入考生的基本信息,包括學(xué)生學(xué)號、學(xué)生姓名、密碼、密碼問題、問題答案、性別和所學(xué)專業(yè)。為了防止注冊的學(xué)生證號重復(fù),可以通過點擊“檢測注冊號”按鈕進(jìn)行檢測,如圖10.13所示,考生輸入注冊的學(xué)生證號后通過檢測顯示在數(shù)據(jù)庫中無此號,可以注冊。檢測完考生注冊信息的學(xué)生賬號,并在注冊頁面輸入正確的信息后,如圖10.14所示,單機(jī)”確定”按鈕,如果注冊成功將會在頁面顯示”成功!”信息。圖10.12 考生注冊頁面圖10.13 檢測考生注冊的學(xué)生證號是否已注冊圖10.14 考生注冊成功頁面2. 考生注冊頁面技術(shù)分析 用戶驗證控件應(yīng)用,學(xué)生證號不允許為空且為16位數(shù)字,密碼、密碼問題、密碼答案都不允許為空。驗證控件名稱主要屬性用途RequiredFieldValidatorNameControlToValidate的屬性為txtStuIDErrorMessage為”學(xué)生證號不允許為空判斷學(xué)生證號是否為空RequiredFieldValidatorNameIsNumControlToValidate為txtStuID ErrorMessage為學(xué)生編號為16位有效數(shù)字 ValidationExpression為.16$判斷學(xué)生證號是否為16位的數(shù)字RequiredFieldValidatorPwdControlToValidate為txtStuPwd ErrorMessage為密碼不允許為空判斷密碼是否為空CompareValidatorPwdControlToCompare為txtStuPwd ControlToValidate為txtStuFPwd ErrorMessage為密碼不一致判斷二次輸入的密碼是否一致3. 考生注冊頁面的實現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_Profession、tb_Student.l 設(shè)計步驟在應(yīng)用程序中新建一個web窗體,命名為zhuce.aspx,作為考生注冊頁面。在頁面中添加一個Table(表格)控件為整體布局,2個DropDownList控件、3個Button控件、6個TextBox控件、4個RequiredFieldValidator、1個CompareValidator。頁面各控件說明如表10.9所示。表10.9 zhuce.aspx頁面主要控件說明控件類型控件名稱主要屬性設(shè)置控件用途DropDownListDropDownList1無注冊考生選擇性別和所學(xué)專業(yè)ButtonbtnResText屬性設(shè)置為”注冊”用于考生注冊btnBackText屬性設(shè)置為”重置”重置考生注冊信息btnCloseText屬性設(shè)置為”關(guān)閉”關(guān)閉考生注冊頁面TextBoxTextBox1無注冊考生的學(xué)生證號、姓名、密碼、重復(fù)密碼、密碼問題、密碼答案l 實現(xiàn)代碼在后臺代碼的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; 點擊該注冊頁面中的”注冊”按鈕,催發(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) + ); /如果添加成功,彈出成功對話框 Label1.Visible = true; 為了避免考生輸入的學(xué)生證號出現(xiàn)重復(fù),導(dǎo)致注冊失敗,在頁面中添加了一個”檢查注冊號”按鈕,來檢查該注冊的學(xué)生證號是否已經(jīng)存在。在該按鈕觸發(fā)的事件中,主要應(yīng)用了數(shù)據(jù)庫閱讀器(SqlDataReader)讀取數(shù)據(jù)庫中數(shù)據(jù)判斷注冊號是否存在。事件代碼如下: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. 在線考試頁面實現(xiàn)1. 在線考試頁面概述在線考試頁面的主要功能是允許考試在網(wǎng)站上針對指定的專業(yè)和課程進(jìn)行考試。在該頁面中,考生首先需要閱讀完考試規(guī)則,在同意所列出的考試規(guī)則的前提下,才能選擇考試課程和套題,進(jìn)入考試頁面進(jìn)行答題。如圖10.15和圖10.16所示。圖10.15 考生規(guī)則閱讀頁面圖10.16 在線考試頁面當(dāng)考生提交試卷或達(dá)到考試結(jié)束時間時,系統(tǒng)將自動對考生提交的試卷進(jìn)行評分,并給出最終考試成績。頁面運(yùn)行效果如圖10.17所示。圖10.17 考試最終提交成績效果圖2. 在線考試頁面技術(shù)分析Application對象Application對象可稱之為記錄應(yīng)用程序參數(shù)的對象。Application對象是HttpApplicationState類的一個實例,可以生成一個所有web應(yīng)用程序都可以存取的變量。這個變量的使用范圍涵蓋全部使用者,只要正在使用這個網(wǎng)頁的程序都可以存取這個變量。使用Application對象的相關(guān)的語法如下:Application變量 =變量內(nèi)容 ;Application(對象名)=Server.CreateObject(Progid)Session對象Session對象可稱之為記錄瀏覽器的變量對象。Session對象是HttpSessionState類的一個實例,其功能和Application對象類似,都是用來存儲跨網(wǎng)頁程序的變量或者對象,但Session對象和Application對象有些特性存在著差異。Session對象只針對單一網(wǎng)頁使用者,也就是說各個連接的機(jī)器都有各自的Session對象,不同的客戶端無法互相存取。Application對象中止于停止IIS服務(wù)時,而Session對象中止于聯(lián)機(jī)機(jī)器離線時,也就是當(dāng)網(wǎng)頁使用者關(guān)閉瀏覽器或超過設(shè)定的Session變量的有效時間時,Session對象就會消失。Session對象和Application對象一樣都是Page對象的成員,因此可直接在網(wǎng)頁中使用。使用Session對象存放信息的語法如下:Session“變量名”=”內(nèi)容”;從會話中讀取信息的語法如下:VariablesName= Session“變量名”;3. 在線考試頁面實現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_StuResult、tb_Questions.設(shè)計步驟在應(yīng)用程序中新建一個文件夾,將其命名為QianUser。在該文件夾創(chuàng)建一個Web窗體,命名為StartExamfra.aspx,作為考生在線考試頁面。在頁面中添加一個Tabel(表格)控件為整個頁面布局。添加2個Button控件、2個DataList控件、1個TextBox、1個CheckBoxList和1個RadioButtonList,通過屬性窗口設(shè)置控件的屬性。頁面中各個控件的屬性設(shè)置及其用途如表10.10所示。表10.10 在線考試頁面涉及到的主要控件控件類型控件名稱主要屬性設(shè)置控件用途ButtonbtnSubminText屬性設(shè)置為”交卷”考生提交試卷btnExitText屬性設(shè)置為”退出當(dāng)前系統(tǒng)”考生退出考試系統(tǒng)TextBoxtime無顯示考生時間DataListDataList1無綁定單選題DataList2無綁定多選題CheckBoxListCheckBoxList1無嵌套在DataList控件中顯示多選題選項RadioButtonListRadioButtonList1無嵌套在DataList控件中顯示單選題選項實現(xiàn)代碼首先創(chuàng)建公共類Datacon的類對象,以便在后面程序調(diào)用其方法,然后自定義4個int類型的全局變量int_row1、int_row2、int_row1Point和int_row2Point,分別用來表示單選題題號、多選題題號、單選題分?jǐn)?shù)和多選題分?jǐn)?shù)。其實現(xiàn)代碼如下: Datacon dataconn = new Datacon(); static int int_row1 = 0;/單選題題號索引 static int int_row2 = 0;/多選題題號索引 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等.壓縮文件請下載最新的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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論