考试系统第五章WEB应用程序设计与实现.pdf_第1页
考试系统第五章WEB应用程序设计与实现.pdf_第2页
考试系统第五章WEB应用程序设计与实现.pdf_第3页
考试系统第五章WEB应用程序设计与实现.pdf_第4页
考试系统第五章WEB应用程序设计与实现.pdf_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

34 第五章 WEB 应用程序设计与实现 5.1 WEB 应用程序架构 本系统 WEB 应用程序使用三层架构41实现,其架构模型如图 51 所示。 三层架构即表现层、逻辑层、数据层分离,在部署上表现为 Web Server(IIS 服务 器) , 逻辑层对应 Application Server (XML WEB SERVICE) , 数据层对应 Database Server(SQL SERVER) 。 图 5-1 WEB 应用程序架构 UI 层:是系统用户可以直接接触到的层面,包括可以直接看到的界面和使用 的功能等。 逻辑业务层:集中于事务的处理过程,也称之为中间层。 数据层:集中于数据的处理。 采用三层结构具有高效,便于开发、维护和扩展的优点。 5.2 WEB 应用程序功能结构 基于 C#.NET 的 WEB 程序设计是面向对象的程序设计, 适合用 UML 描述其 UI 层 客户端 WEB 浏览器 逻辑层 DATA 层 WEB 表单 组件服务 XML WEB SERVICE ADO .NET DBMS 35 程序结构,图 5-2 为本系统的 WEB 应用程序结构示意图。 图 5-2 WEB 应用程序结构 如图 5-2 所示,整个 WEB 应用程序解决方案包括 system_function 和 dbop 两 个项目。 5.2.1 界面项目界面项目 提供实现系统功能的各个界面类,各类的功能如下: 1login.aspx 类:是进入 WEB 在线考试系统的登录界面;三种类型用户均 由此界面登录系统。 2index.aspx 类:考试系统主界面,登录用户类型不同,主界面显示的功能 选项不同。 36 (1)学生用户:可以查询已考科目成绩,或选择已选课程在由教务管理设定 的考试时间内考试,交卷后系统自动评分,可现场查看分数,可以修改自己的用 户信息,如密码。 (2)教师用户:可查看学生成绩及科目汇总信息,可设定所任教学课程的考 卷参数(如难度系数,试题数目等) ,可修改自己的用户信息,可录入所授课程的 规范试题。试题编号由系统自动生成,试题编号为 8 位,规则:课程编号 4 位 难度系数 1 位试题序号 3 位(由系统自动产生,同一门课程试题,后三位编号 连续) 。 (3)管理员:可以删除学生用户和教师用户信息,设置教师用户权限,修改 自身用户信息,导入授课、选课信息和成绩表等。 3userinfo_edit.aspx 类:实现对教师、管理员、学生用户的信息编辑,包括 导入(管理员使用) 、编辑,删除。 4question_edit.aspx 类:实现对试题的录入,教师用户可以选择所授课程, 录入各题的题干、选项、答案、分值、难度系数等。 5test_set.aspx 类:由教师用户设置课程考试的参数,以便随机抽题组卷时 作为组卷依据。 6test_online.aspx 类:考试主界面,学生可在该界面下完成解题过程,可修 改答案,提交后系统自动评分,并提示考试成绩。 7query_grade.aspx 类:分数查询,学生用户可查询已考各科目的成绩,教 师用户可查询成绩以及汇总和统计信息。 5.2.2 数据库项目数据库项目 项目 dbop 实现数据库的操作功能,包含五个类,各类完成的功能如下所述。 1DBop 类:数据库操作统一接口,应用程序对数据库的访问均通过该接口 进行,便于程序的移植,调用规范。 2grade_course 类:定义课程和成绩信息等属性,以及对相关信息实现增删 改的操作方法。 3test_info 类:定义各课程的考试信息属性,以及相关表操作的方法代码。 4question 类:定义试题属性,以及对 so_question 表实现插入、更新、删除 操作的方法代码。 5user_info 类:定义学生用户,教师用户和管理员信息属性,以及对对应 37 表操作的方法代码。 5.2.3 WEB 应用程序部署应用程序部署 .NET 平台的一大优点是应用程序项目的部署方便,要为基于.NET 的 WEB 在线考试系统生成部署,需要添加一个部署项目 test_setup,此外,结合本项目实 际需求,为了将后台数据库 examine 联合部署,还需要添加一个数据库的部署项 目 DB_setup,系统的部署架构如图 5-3 所示。 图 5-3 在线考试系统部署架构 在部署项目中,依次将项目 DB_setup、dbop、examine 的主输出加入部署项 目,DB_setup 项目主要包含 db_install 类,其功能是将 examine 数据库的脚本 examine.sql 在数据库服务器上自动安装,从而保证整个考试系统安装方便。 5.3 WEB 应用程序实现 5.3.1 login.aspx 类的实现类的实现 login.aspx 类的运行界面如图 5-4 所示,该类主要实现用户登录系统,用户首 先选择登录的用户类型,然后输入用户 ID(学生为学号,教师为教师编号,管理 员为管理员编号)和密码以及验证码,即可登录进入系统主页面。 在实现该类时对用户 ID,密码进行了输入验证,要求密码长度不低于 8 位。 类功能实现的主要代码如下: 38 private void btnLogin_Click(object sender, System.EventArgs e) try /建立连接 SqlConnection con = new SqlConnection(); con.ConnectionString=System.Configuration.ConfigurationSettings. AppSettings“DSN“; con.Open(); /建立 Sql 命令对象 SqlCommand com = new SqlCommand(); com.Connection=con; com.CommandType=CommandType.StoredProcedure; com.CommandText = “storeProc_login”; /添加参数用户类型 com.Parameters.Add(“UserType“,SqlDbType.VarChar,10,“UserType“); com.Parameters“UserType“.Value = txtUserType.Text; /添加参数用户名 com.Parameters.Add(“Name“,SqlDbType.VarChar,10,“UserName“); com.Parameters“Name“.Value = txtUserName.Text; /添加参数用户密码 com.Parameters.Add(“UserPass“,SqlDbType.VarChar,2,“UserPassword“); com.Parameters“UserPass“.Value = txtUserPass.Text; /执行查询 SqlDataReader dr = com.ExecuteReader(); /判断查询结果并保存用户登录信息 39 bool bExist = false; while(dr.Read() bExist = true; Session“UserID“ = dr.GetString(0); Session“UserName“ = dr.GetString(1); Session“Usertype“ =txtUsertype.text; if(bExist) Response.Redirect(“023Query.aspx“); else Response.Write(“ alert(用户名称或密码错误!)“); con.Close(); Catch ex As Exception Label1.Text = “连接服务器出错,请重试!“ End Try 40 图 5-4 系统登录界面 该类主要实现用户登录系统,用户首先选择登录的用户类型,然后输入用户 ID(学生为学号,教师为教师编号,管理员为管理员编号)和密码以及验证码, 即可登录进入系统主页面。 在实现该类时对用户 ID,密码进行了输入验证,要求密码长度不低于 8 位。 5.3.2 index.aspx 类的实现类的实现 index.aspx 类的运行界面如图 5-5 所示。 该类实现系统主界面的功能. 1根据登录用户的类型,打开页面左边可用的功能选项。学生只可以查询单 科或所有科目考试成绩、选择任一科目参加考试或修改密码;教师可选择相关科 目进行试题添加、考试设置、查训所授科目的考试成绩或修改密码。管理员可以 进行密码修改、管理用户信息(学生用户、教师用户以及管理用户信息) 、数据导 入(学生选课数据、教师授课数据及相应用户信息) 。 41 图 5-5 系统功能主界面 2 显示用户登录信息, 登录账户信息由 login.aspx 类通过 Sessionuser_type, Sessionuser_ID变量传送,实现会话状态数据保存。 3课程选择下拉列表中的选项,由学生所选课程组成,教师用户的该数据项 列表由其所授课程数据组成。 4 操作功能选择和课程选择将通过会话变量传送至业务流的下一个类实现相 应功能。 5.3.3 userinfo_edit.aspx 类的实现类的实现 userinfo_edit.aspx 类的运行界面如图 5-6 所示。 该类主要实现如下功能: 1学生用户和教师用户修改密码,当学生用户和教师用户使用时,添加用户 和删除用户按钮不可用,其 Enabled 属性为 false。 2管理员可以添加新的三种类型用户,也可删除制定用户的信息。 3页面所有的文本输入均使用验证控件进行输入验证。 42 图 5-6 用户信息编辑 其中,修改按钮的单击事件代码如下: private void btnUpdate_Click(object sender, System.EventArgs e) string strSql = “UPDATE”+ ExcuteSql(strSql); private void ExcuteSql(string strSql) try SqlConnection con = new SqlConnection(); con.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings“DSN“; 43 con.Open(); /执行操作 SqlCommand com = new SqlCommand(strSql,con); com.ExecuteNonQuery(); con.Close(); /Response.Write(“alert(操作成功!)“); catch(Exception ee) Response.Write(“发生错误:“+ee.Message); 5.3.4 question_edit.aspx 类的实现类的实现 question_edit 类的运行效果如图 5-7 所示。 1该页面实现试题维护课程,任课教师登录系统进入系统主界面,选择试题 添加以及相应课程便进入此页面,同时利用会话变量保存所选课程编号和课程名 称。 2 该页面可输入试题和修改制定课程的试题, 页面的课程名称由程序从会话 变量中读取,其中题目编号由课程编号和试题表情况自动生成,教师只需输入题 干、选项、难度系数(默认为 3) 、分值(默认值为 2)和正确答案选项即可完成 试题输入。 3系统支持单选题和多选题,所有试题均归一化为选择题。在输入题干和选 项时, 用于输入内容的文本框设置了多行属性, 可自动折行输入较多的文本内容, 同时支持剪贴板的相关操作。 44 图 5-7 试题添加页 其中,下一题按钮单击时间的代码实现添加试题存入试题库的功能,其事件 代码如下所示: private void btAddnext_Click(object sender, System.EventArgs e) string strSql = “insert into so_question values(“+quesID.Text+“,“ +question.text+“,“+“+SelectA.text+“,“+“+SelcectB.text“,“+“ + SelectC.text+“,“+“+SelectD.text+“,“+“+SelcectE.text“,“+“ + SelectF.text+“,“+“+style.text+“,“+“+answer.text“,“+“ +Fenzhi.text+“,“; ExcuteSql(strSql); private void ExcuteSql(string strSql) try SqlConnection con = new SqlConnection(); 45 con.ConnectionString= System.Configuration.ConfigurationSettings.AppSettings“DSN“; con.Open(); /添加纪录. SqlCommand com = new SqlCommand(strSql,con); com.ExecuteNonQuery(); con.Close(); Response.Write(“ alert(插入成功!)“); catch(Exception ee) Response.Write(“发生错误:“+ee.Message); 5.3.5 test_online.aspx 类的实现类的实现 test_online.aspx 类的运行效果如图 5-8 所示。 该页面是基于.NET 的 WEB 在线考试系统的核心页面,负责完成自动组卷、 考试以及自动评分三个核心流程。 1 自动组卷: 页面根据学生在登录界面和主界面中保存的会话变量中的课程 编号自动抽题,抽题的参考依据是考试设置中的难度系数和试题数量。将随机产 生的数字作为试题编号的后 3 位,按难度系数和试题数量从试题库中提取相应的 试题并实时组成试卷,将试卷保存于加密 cookie 中。 2考生可选择上一题,下一题逐题做答,也可返回已做过的题目进行修改, 当选择上一题,下一题时系统自动对刚才的题进行评分,并将各题的得分存放于 加密的 cookie 中。 3学生提交试卷后,系统自动将学生的考试记录存储到数据库,并提示本次 考试成绩。得分提示如图 5-9 所示。 46 图 5-8 在线测试页 实现页面的功能程序,主要为上一题和下一题和交卷按钮。 学生交卷或考试时间到计算考试成绩的函数代码: private void Button4_Click(object sender, System.EventArgs e)/最后计算分数 try for(qustionNO=0;qustionNO 50 2定义统一的数据库连接字符串 其中,连接字符串的 user ID 和 PWD 子串部分由选择的登录用户类型决定, 一旦登录类型确定, 系统将自动产生完整的连接字符串并加密后存放于cookie中, 后续同一会话的连接字符串均使用该加密连接字符串。 5.4.2 WEB 应用程序的安全性应用程序的安全性 为了保证 WEB 应用程序的安全性,采用了以下手段: 1验证所有的输入 使用 ASP.NET 提供的 5 种验证控件以及使用正则表达式(eg,WEB service 参 数)对用户输入进行全面验证,在查询语句中,使用参数化的存储过程和查询语句 来避免输入攻击。 2机密信息加密 对于输出的重要数据(如用户密码,连接关键字等)进行加密,对敏感信息 进行必要的加密,加密代码实例如下: string strEncryPass = System.WEB.Security.FormsAuthentication. HashPasswordForStoringInConfigFile(strPass,“md5“); 3表单身份验证 表单身份验证是指系统:将未经身份验证的请求重定向到一个超文本标记语 言(HTML) 表单,使用户能够在其中键入他们的凭据。在用户提供凭据并提交该 表单后,应用程序对请求进行身份验证,然后系统以 Cookie 的形式发出身份验 证票证。此 Cookie 包含凭据或用于重新获取标识的密钥。浏览器的后续请求自 动包含此 Cookie。 利用 ASP.NET 表单身份验证进行验证, 如果用户不正常登录系统, 将无法使 用在线考试系统的其他功能。表单身份认证的设置如 5.4.1 所示。 4.启用身份模拟 51 由于学生用户角色无 student_course 表的 insert 权限, 因此在学生交卷时启用 代码身份模拟,实现成绩存储。 启用身份模拟的典型示例代码如下: System.Security.Principal.WindowsImpersonationContext impersonationContext; impersonationContext = (System.Security.Principal.WindowsIdentity)User.Identity).Impersonate(); 身份模拟执行完相应的写入操作后, 应及时使用 undoImpersonation(); 命令 取消身份模拟,恢复用户权限。 5.4.3 随机抽题过程实现随机抽题过程实现 随机抽题过程的流程图如图 5-12 所 示: 1 系统先根据考试设置要求的题目数 量,产生同样数量的不重复的随机数存放 于数组 th中,随机数的最大值由本门课 程在题库中编号的最大值决定。 2将 th转化为字符串数组,分别在 各元素前面加上课程编号和难度系数字 符。 3 将 2 所得字符串数组转化为数字提 交给试题提取程序。 4试题提取程序通过执行带参数的 SQL 存储过程返回所要求数目的记录组 成 dataset 并将其存放在加密 cookie 中, test_online.aspx 类依次读取 dataset 中的记 录显示于考试页面。 图 5-12 随机组卷过程 52 5.4.4.动态阅卷评分的实现动态阅卷评分的实现 test_online.aspx 类依次读取加密 cookie 中存放的 dataset 中的记录显示于考试 页面,页面每次只显示一题。 1 当解答完本页试题时点击下一页, 系统评分函数自动对比该题答案与正确 答案是否相符,如果相符,则将该题分值存入对应 score 数组元素 scorei,数据 score 为加密 cookie 存储。 2 考生点击上一页可一次调出已解答过的题复审或修改答案, 评分方法同 1。 3 当考生交卷或考试结束时间到, 系统自动将 score 数据读出并累加元素值, 得到考生成绩。然后将考生成绩记录存入数据库对应的成绩表。 5.4.5 题型归一化处理题型归一化处理 本系统的试题结构如图 5-13 所示。 图 5-13 试题数据结构 试题表 so_question 包含 11 个字段。 1quesID 代表试题编号,其编号规则为课程编号(4 位)难度系数(1 位) 试题序号(3 位) ,其中,难度系数的值对应字段 style 的值,取值范围为 15, 相应试题难度由低到高,系统默认难度系数为 3。 2question 字段为题干字段。 3selectAselectF 为选项字段,最多可有 6 个选择项。 4answer 为试题正确答案,类型为整形。 53 其值为所有正确选项权值和。各选项的权值如表 51 所示。 表 5-1 选项全值对应表 选项 selectA selectBselectCselectDselectE selectF 权值 1 2 4 8 16 32 例如:某题的正确答案为 ABDF, 则 answer 字段的值1283243。 5fenzhi 字段:为本题的得分,默认为 2 分,对选项比较多,且选项内容较 多的题目,最多可为 10 分,对于简答题和程序设计题,均可由此方法转化为多项 选择题,但应提高其分值。 网络考试系统一般使用标准化试题,对于单项选择题,比较简单,可直接实 现为标准化试题。对于多项选择题、简答题、填空题、计算题等题型本系统均按 上述规则转化为标准化多项选择题。 5.4.6 自定义控件自定义控件 .NET 系统提供了丰富的 WEB 控件供用户使用,使用系统控件可极大地提高 程序的开发效率,同时也使程序设计变得简单易用。 使用与 ASP.NET 页相同的语法创建的用户自定义 WEB 服务器控件,可以 在多个 ASP.NET WEB 应用程序之间划分和重复使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论