驾校理论考试模拟系统毕业设计论文.doc_第1页
驾校理论考试模拟系统毕业设计论文.doc_第2页
驾校理论考试模拟系统毕业设计论文.doc_第3页
驾校理论考试模拟系统毕业设计论文.doc_第4页
驾校理论考试模拟系统毕业设计论文.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计(论文)基于.net的驾校理论考试模拟系统 论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:基于.net的驾校理论考试模拟系统摘要随着现代网络的发展,信息技术广泛应用,计算机已渗透到各个行业。其中,在线考试系统以方便快捷等优点得到了广泛应用。驾驶理论考试就是在线考试的一个实际应用,它实现了理论考试的无纸化,以往出题、印试卷、批改试卷等繁琐的工作,现在都可以由计算机来替代。本系统有驾校模拟考试功能,完成了用户管理及试题管理、试卷管理和随机出题、自动阅卷等。用户在登录系统时,判断用户的权限,根据用户的权限登录到不同的页面。考生登录后,系统根据用户的角色随机在试卷中选择一套试题,让考生在规定的时间内作答,考生在考试完毕后系统自动的给出结果,这样既方便了考生也方便了阅卷的老师。关键字:驾驶理论;考试模拟系统;sql server2000 theory testing system of driving school based on .netabstractwith the development of modern internet and wide apllication of information technology, computer has been deeply used in every fileds. the online test system is widely applied thanks about its convenience and speediness. driving theory test is a pracitcal application of online test. and now burdensome work such as the prepatation, printing, checking has been done by computer. this system has simulating function which achieves users management, test papers management, random test making and automatic checking. this system judges users right when logging in and then directs the users to corresponding pages. after loging, according to the role of user, the system randomly chooses one set of exammination paper and the student finish this paper in limited time. the system finally automatically check the test paper and present the result. thus it provides reasonable convenience for both students and teachers who check the paper.key words: driving theory;test simulating system; sql server 2000目录论文总页数:25页1引言12系统概述12.1开发目的12.2开发环境12.3硬件需求13系统总体设计23.1系统功能设计23.2系统功能模块划分34 数据库设计441总体设计442数据库表设计443表关系设计65 系统详细设计751系统通用类设计7511基本通用类设计7512应用数据通用类设计7513数据库通用类设计852 用户登录和新用户注册8521用户界面设计8522用户登录8523用户注册953 用户及其权限管理9531用户管理9532用户角色管理10533用户密码修改1154题库设计11541试题种类管理11542试题图片管理12543添加试题12544修改试题13545删除试题13546试题答案设计13547试题答案添加14548试题答案修改14549试题答案删除1455试卷设计15551添加新试卷15552修改试卷15553删除试卷1556随机生成试卷1657考生在线答题2058自动阅卷2259考试结果22结 论23参考文献23致 谢24声 明251引言随着我国经济的高速发展,我国的交通运输能力不断提高,越来越多的人开私家车到异地进行商务或者旅游等活动。在这一条件下,我国的车辆逐渐增多,最近几年,学车的人也是越来越多。为了减少交通事故的发生,车管所对驾驶员的交通知识考核起着至关重要的作用。随着信息量的逐步增加,繁杂的数据处理费时费力,单纯以人力进行的驾驶员理论考试的考核已经不适合驾驶理论考试的现状。现在是一个信息产业的时代,国家把信息产业作为增长国民经济的重要因数。在这样的环境下,先进的信息技术进行驾驶员理论考试已成为必要。驾驶模拟考试系统以计算机为操作工具,按照驾驶理论考试的流程,把驾驶理论考试的一些工作人员从繁琐的数据处理中解放出来,从而提高驾驶考试的工作效率。驾驶理论考试系统把驾驶的理论试题保存于数据库中,通过计算机可以很方便地查询使用所需要的数据,而且这些操作全部由系统内部的代码完成。考生和系统管理员通过系统的友好界面,输入一些简单的数据便可操作。该系统采用b/s模式进行设计,异地的想学车的学员也可以使用该系统,进行模拟考试,从而了解自己对交通规则了解多少。本系统主要由使用microsoft visual studio.net 2003 开发的页面,由sql server2000开发的数据库组成。2系统概述2.1开发目的本系统采用b/s模式设计,开发目的除了方便车辆管理所的工作人员。同时把驾驶理论所有试题保存到数据库,通过互联网方便地进行模拟考试,还能让学车的学员对交通规则和法律知识有更多的了解。2.2开发环境本系统是在windows xp操作系统下,使用microsoft visual studio.net 2003作为开发工具进行开发的。数据库使用的是sql server2000。2.3硬件需求在运行本系统前,请检查以下计算机是否满足以下要求。l 服务器要求的配置为: cpu:intel 赛扬以上,建议intel pentium以上 内存:128m以上,建议256m以上 硬盘:1g以上的可用硬盘安装空间 操作系统:windows 2000以上,internet信息服务器5.0(iis 5.0) 软件:microsoft sql server 7.0以上版本l 客户机硬件配置要求为: cpu:intel赛扬 以上,建议intel pentium 以上 内存:32m以上,建议64m以上 操作系统:windows2000以上,ie5.0以上版本3系统总体设计3.1系统功能设计根据驾校理论考试的逻辑划分,本系统一共有六个子系统,分别是用户登录和注册,用户角色管理,用户管理,试题管理,题库管理,在线答题。其功能结构图如图1所示。驾驶理论考试系统在线答题题库管理试题管理用户管理用户角色管理用户登录和注册图1 系统功能图 用户登录和注册(1)根据用户所属的不同角色显示不同的操作页面。考生登录时,显示生成试卷等待页面和在线答题页面;系统管理登录时,显示系统维护页面;管理员登录则显示题库管理页面。(2)新用户注册,包括考生和管理员的注册。 用户角色管理角色管理主要是给注册的用户分配角色,即修改用户的角色,删除用户的角色。 用户管理添加用户,修改用户,删除用户。 试题管理(1)试题类别管理,主要是实现试题类别的添加、修改试题类别、删除试题类别、和试题的类别排序功能。(2)试题图片管理,主要实现试题的图片添加,删除和修改等功能(3)考试试题管理,主要实现试题的添加、修改、删除功能。(4)试题答案管理,主要实现试题答案的添加、修改、删除功能。 题库管理题库管理主要是在系统中构造试卷,即试题的每一种题型有多少题,添加试卷、及删除试卷和修改试卷功能。 在线答题(1)动态随机生成试卷,使用随机函数动态地从题库中取得整套试卷和题目,每次生成的试卷是不相同的。(2)显示出整套试卷,依次答题,系统自动判断该题是否正确。(3)最后显示该考生的考试成绩。3.2系统功能模块划分系统整体设计如图2所示,此系统可以划分为业务逻辑层、数据访问层和数据库。业务逻辑层数据访问层数据库图2 系统设计图数据库、数据访问层和业务逻辑层的具体描述如下:(1)数据库位于系统最底层,它存储系统的所有数据。(2)数据访问层建立在数据库之上,应用程序通过该层访问数据库。数据访问层一般封装数据库的选择、添加、更新、删除等操作。同时还为业务逻辑层提供访问数据库的接口或函数等。该层直接与数据库相关联,同时又为业务逻辑层服务,所以数据库访问层设计的好坏关系到整个系统的成败。下面以用户管理模块的数据访问(userdb类)为例,介绍数据访问层的实现方法。userdb类实现访问数据库的方法如下:public sqldatareader getusers() 从用户表users获取所有用户信息。public sqldatareader getsingleuser(int nuserid)从用户表users获取单个用户信息。public int adduser(string susername,string spassword,string semail)添加新用户到用户表users中。public void updateuserpassword(int nuserid,string spassword)更新用户的密码。public void updateuserstate(int nuserid,int nstate)更新用户的当前状态。public void updateuserrole(int nuserid,int nroleid)更新用户的角色。public void deleteuser(int nuserid)从用户表users中删除用户。public sqldatareader getuserlogin(string nusername,string spassword)从用户表users中获取用户id,用于用户登录。(3)业务逻辑层包括题库创建、用户管理、用户注册等业务逻辑,它一般由web页面实现,如系统登录页面default.aspx、用户管理页面usermanage. aspx、随机生成试卷页面createexaminepaper.aspx等。系统是由六个完整的功能实现的,根据这些功能,可以设计出系统的功能模块,各个系统功能模块之间的关系如图3所示。驾驶理论考试模拟系统在线考试题库管理试题管理用户管理用户角色管理用户登录和注册图3 模块关系图4 数据库设计41总体设计些系统使用 sql server 2000 作为应用程序的数据库,此系统的实际需要,系统至少需要实现考试题库,用户及其角色和试卷数据,因此本系统数据库所用到的一些用户表(users)、角色表(roles)、考生表(examinees)、试题表,问题表(questions)、试题种类表(questionkinds)、试题答案表(answers)、试卷表(papers)、试卷种类表(paperkinds)和图片表(pictures)。42数据库表设计1用户表(users)用户表用于存储系统的用户信息,该表引用角色roles的roleid字段作为表的外键,用户表的字段说明如表1所示。表1 users表字段说明编号字段名称字段类型字段说明1useridint用户表主键2usernamevarchar(50)用户名称3passwordvarchar(50)用户密码4emailvarchar(50)用户email地址5roleidint用户所属的角色2角色表(roles)角色表用于存储用户的角色信息。角色表的字段说明如表2所示。表2 roles表字段说明编号字段名称字段类型字段说明1useridint用户表主键2usernamevarchar(50)用户名称3考生表(examinees)考生表存储参加考试的考生信息,该表引用了用户表users的主键userid作为该表的外键。4问题表(questions)问题表存储系统的试题信息。该表引用问题种类表questionkinds的kindid、图片表pictures的pictureid、用户表users的userid作为表的外键。问题表的字段说明如表3所示。表3 questions表的字段说明编号字段名称字段类型字段说明1questionidint问题表主键2titlevarchar(200)问题内容3pubdatedatetime添加到题库的时间4kindidint问题类型id5pictureidint问题图片id6difficultint问题的章节7markint考试成绩5问题种类表(questionkinds)问题种类表存储问题种类的信息。问题种类表的字段说明如表4所示。表4 questionkinds表的字段说明编号字段名称字段类型字段说明1useridint用户表主键2usernamevarchar(50)用户名称6问题答案表(answers)问题答案表存储题库中问题的答案信息,该表引用问题表questions的qustionid作为表的外键。问题答案表的字段说明如表5所示。表5 answers表的字段说明编号字段名称字段类型字段说明1answeridint问题答案表主键2titlevarchar(4)标题3bodyvarchar(200)问题的选项4answerbodyvarchar(4)问题的正确答案5questionidint答案所属问题的id7图片表(pictures)图片表存储系统的图片信息。8试卷表(papers)试卷表存储每一套试卷的信息,该表引用用户表users的userid、角色表roles的roleid,试卷表的字段说明如表6所示。表6 papers表的字段说明编号字段名称字段类型字段说明1paperidint角色表主键2totalmarkint试题总分数3mindefficultint问题开始章节4maxdefficultint问题结束章节5useridint创建此试卷的用户id6roleidint考生的角色9试卷类型表(paperkinds)试卷类型表存储每一套试卷的详细信息,试卷表papers的paperid作为表的外键。43表关系设计数据库各个表之间的关系设计如图4所示。图4 数据库关系图papers表只是一个关系表,它由试题种类及试卷的各种参数构成,管理员可以动态设计每套试卷包含的试题种类,考生根据自己的角色从该表中随机选择某种试题类型,然后再随机生成试卷。用户表是数据库的核心表,和角色表、考生表、试卷表相关联。角色表中的roleid字段决定考生使用什么类型的试卷,试卷表中的kindid字段标识试卷组成的试题种类,该字段和试卷种类表相关联。试题表和答案表形成一对多的关系。5 系统详细设计51系统通用类设计在应用程序开发过程中多处使用类,如数据库通用类、应用数据通用类。 511基本通用类设计系统采用自定义的异常处理类myexception处理应用程序异常机制。该类定义了函数myexception()重载基类的函数exception(),同时还继承基类的message和inner两个变量。异常处理类myexception定义了两个同名的函数,其中参数source表示错误的类型编码、参数message标识错误的具体信息;参数exception继承系统的异常参数。512应用数据通用类设计应用程序使用类questionkinds临时存储试题种类及其数量信息。代码如下所示。/questionkinds主要是存储问题种类以及该种类试题的数量public class questionkindspublic int kindid;public int kindnum;513数据库通用类设计类sqlhelper用来封装访问数据库库的某些基础属性的函数,如数据库连接字符串、缓冲数据库参数的hash表、添加数据库的参数等,应用程序的数据访问层都基于该类。类sqlhelper封装了函数addmycommandparams()和函数adddataadapterparam(),添加了存储过程的参数。函数addmycommandparams()是添加sqlcommand()对象的参数,函数adddataadpterparam()则是添加sqldataadapter对象的参数。函数getcacheparameters(),该函数从caching对象中获取缓存的数据库参数。如果参数值为空,则要重新构造数据库参数并添加到caching对象中,当再次需要获取参数时,只要从caching对象中获取即可。52 用户登录和新用户注册521用户界面设计用户在登录由default.aspx页面实现,它的代码隐藏在default.aspx.cs文件中。用户登录是应用程序的主要入口,用户只有通过该入口才能进入系统。由于用户所属的角色不相同,所以在登录时都要选择自己所属的角色,否则不能进入系统。用户登录使用了两个textbox控件作为输入名称和密码,用户单击“确定”按钮就可以登录到系统。单击“注册”按钮可以重新注册一个用户。用户的角色是从roles表中获取的,考生为默认角色。用户登录使用了两个验证控件,它们为rfvusernamet和rfvpassword,分别验证用户名称和用户密码是否为非空。两个非空验证控件仅仅对“确定”按钮有效,其实现方法就是把“注册”控钮的属性causesvalidation值设为false。522用户登录用户登录过程是一个验证过程,应用程序首先从数据库获取该用户的信息,如用户名称和用户角色,然后再根据用户的角色显示用户的下一步操作页面。如果考生登录,显示生成等待页面和在线答题页面;如果管理登录,显示题库页面;如果系统管理员登录,则显示系统维护页面。无论用户是什么样的角色登录,系统都将保存该用户的id和角色id。用户单击“确定”按钮触发事件surebtn_click()来实现用户登录验证过程。该事件调用了数据访问层的函数 getuserlogin()验证用户的输入,如果是正确的,用户就登录到系统中。否则页面将弹出错误信息的提示。函数getuserlogin()从数据库获取合法用户的id数据,函数getuserlogin() 调用存储过程pr_getuserlogin()访问数据库。为了整个系统的安全性,在用户表users中的存储用户的密码password字段不是用户密码的真实值,而是加密后的密码字符串。加密函数encrypt()被定义为userdb类的静态函数。调用加密函数时,首先把加密字符串编码成uncode,然后使用系统的不对称加密算法md5加密用户密码串。523用户注册添加新的用户有两种方式,一种是从后台的用户管理中添加用户,另一种是用户注册,用户注册方式只能添加考生。因为具有管理员角色的用户可以直接进入到系统后台进行管理。用户注册时分别输入用户名称、用户密码、确认密码和用户的电子邮箱信息即可。前三个控件都用了验证控件和一个正则表达式,电子邮箱则使用格式验证。单击“确定”按钮触发事件surebtn_click(),该事件调用数据访问层函数adduser()提交新用户注册信息到表users中。surebtn_click()事件调用函数adduser(),adduser()调用存储过程pr_adduser添加新用户信息到users中。在添加的过程中,还查看users表中是否有同名称用户,有同名用户就不添加当前的用户。53 用户及其权限管理531用户管理系统管理员可以对用户管理和用户角色分配管理等功能,此功能的关系图5所示。开始用户管理和角色管理系统管理员否否是用户管理角色权限管理用户角色分配结束图5 用户管理与角色管理关系流程图用户管理功能由页面usermanage.aspx实现,用户管理模块实现了用户的删除、角色的分配、密码的修改。界面设计如图6所示:图6 用户管理及角色管理用户列表框显示系统当前包含的所有用户,系统管理员单击“x”按钮即可删除当前列表框被选中的用户。单击“”按钮即可添加新用户。用户管理页面初始化时,调用binddata()实现绑定用户列表控件,该函数调用数据访问层userdb类的函数getuser()从用户表中获取用户和用户id等数据。单击删除“x”按钮实现删除用户的功能,该按钮为图像按钮,单击此按钮触发事件deletebtn_click()。该事件调用数据访问层userdb类的函数deleteuser()删除数据库中的用户记录。删除列表中的用户之后,该事件还要重新绑定用户数据。单击添加“/”按钮实现实现用户添加功能,此按钮为图像按钮,单击此按钮触发事件addbtn_click()。用户密码同样是采用md5加密函数encry(),事件调用数据访问层userdb类的函数adduser()添加新的用户到数据库中。添加后事件重新绑定用户数据。532用户角色管理 用户角色管理实现用户角色的分配功能。系统存在角色较多,不同的角色具有不同的操作权限。如系统管理员具有该角色的用户可以维护和管理整个系统;管理员角色的用户可以管理整个系统,如可以添加系统考试试题,创建不同类型的试卷;不同的考生分配不同的试卷,而且参加考试后只能看到自己的考试成绩。用户角色管理由页面rolemanage.aspx实现。 用户角色管理页面初始化时调用函数binduserdata(),调用数据访问层的userdb类的函数getusers()从表中获取用户数据,然后再绑定到用户列表控件。函数bindroledata()调用数据访问层的roledb类的函数getgetroles()从表中获取用户数据,然后再绑定数据到角色列表控件。函数binduserroledata()调用数据访问层的userdb类的函数getsingleuser()从表中获取用户数据,然后再绑定到用户角色控件。用户单击“设为该用户的角色”按钮触发事件,该事件实现用户角色之间的关联功能,事件调用函数updateuserrole()修改用户表的角色字段值。533用户密码修改修改密码由updatauserpassword.aspx实现,用户修改自己的密码时必须知道自己以前的密码,否则不能修改密码。单击“确定”后触发事件surebtn_click().先判断新密码的两次输入是否一致。如果一致,就把新的密码更新到数据库,该事件调用数据访问层userdb类的函数updateuserpassword()修改表中的密码。此函数获取用户的名称,用户只能修改自己的密码,不能更改名称。54题库设计题库设计主要是试题的添加、删除和修改,试题图片的添加、修改和删除,试题种类的添加、修改、删除排序及试题的答案添加、删除和修改等。541试题种类管理试题种类管理由页面queskindmanage.aspx实现,试题种类管理实现了试题种类的添加、修改、排序和删除功能。页面有“”“”“”“x”和“增加新的试题种类”, 按钮分别实现试题种类的上移、下移、修改、删除和添加功能。试题类别管理使用函数bindqueskinddata(),该函数首先从questionkinds表中获取试题的种类数据,然后再把数据绑定到列表控件。用户在文本框中输入试题种类的名称,然后单击“增加新的试题种类”按钮触发事件addqueskind_click(),该函数添加新的试题种类,它调用数据访问层的questionkinddb类的函数addqueskind(string skindname,int norder)实现添加功能。单击“”“”“”、“x”按钮都属于imagebutton类型按钮,在此使用同一个函数moveedit_click()实现所有按钮的单击事件,该函数通过参数commandname区别是那个按钮触发的事件,然后再使用switch语句调用不同的操作函数。函数updatequeskindname()和函数updatebtn_click()实现试题种类的修改功能。函数updatequeskindname()从试题种类表questionkinds中获取修改前试题种类名称,并显示在网页上,函数updatebtn_click()修改试题的种类名称。函数deletequeskind()实现试题种类的删除功能,该函数从试题种类表questionkinds中删除选中的试题种类,然后再重新绑定试题种类数据。 542试题图片管理试题图片管理由页面picturemanage.aspx实现,试题图片管理主要实现图片的添加、删除、修改等功能。界面设计如图7所示:图7 试题图片管理试题图片管理在初始页面时调用函数bindpicturedata(),该函数首先从表pictures中获取所有图片的信息,然后再把数据绑定到列表控件。图片都是上传到系统的一个文件夹中,显示图片的时候都是从数据库获取该图片的路径,然后在显示在页面上。单击“上传”按钮即是添加新的图片,添加图片后,然后重新绑定数据。单击“/”、“x”此按钮即可修改图片信息和删除图片。543添加试题添加试题功能由页面addquestion.aspx实现,一个试题至少包含几个属性:试题的内容、试题的类型、试题所在的章节、试题的分值及试题的创建时间和添加的用户用户名称。添加试题页面使用函数bindqueskinddata(),该函数首先从questionkinds表中获取试题种类的数据,然后再把数据绑定到列表控件。函数bindquespicturedata()首先从pictures表中获取图片信息,然后再把数据绑定到列表控件。用户单击“确认提交”按钮触发事件addnewquestion_click(),该事件添加试题,在添加时获取问题id和图片id就可以成功的添加一道新的试题。544修改试题修改试题由页面editquestion.aspx实现,它的界面设计和添加试题相似。修改试题页面调用函数page_load()绑定试题种类、试题图片和被修改问题。其中绑定试题种类和试题图片同添加试题相似,绑定修改问题数据功能由函数bindquestiondata()实现。用户单击“确认修改”按钮触发事件updatequestion_click()实现试题的修改功能。该事件和添加试题事件有很多相同之处。545删除试题删除试题功能由页面deletequestion.aspx实现, 删除试题和修改试题实现有很多相同之处。用户单击“确认删除”按钮触发事件deletemyquestion_click(),该事件删除选中的试题。546试题答案设计试题答案和试题是不可分割的,在此系统中,每个试题都有三个答案与之对应,只一个正确答案。试题答案设计questionmanage.aspx和页面addanswer.aspx实现。在下拉列表选择框中显示试题种类,在普通列表框中显示试题,单击“添加试题答案”按钮跳转到答案添加页面addanswer.aspx。试题管理界面用户函数page_load()进行初始化,函数page_load()调用函数bindqueskinddata()和bindquestiondata()函数。函数bindqueskinddata()绑定下拉列表控件的数据,如试题种类。还调用数据访问层questionkinddb类的函数getqueskinds()从表questionkinds中获取试题种类数据;函数bindquestiondata()绑定普通列表控件的数据,如试题内容。该函数调用数据访问层questiondb类的getquestions()函数从表questions中获取试题信息。用户单击“添加问题答案”按钮触发事件addquesanswer_click(),该事件首先判断试题列表中某个试题项。如果已经选择,则跳转到试题答案添加页面,否则系统将提示你没有选择数据。private void addquesanswer_click(object sender, system.eventargs e) response.redirect(/admins/addanswer.aspx?questionid= + questionlist.selectedvalue);事件queskindlist_selectedindexchanged()动态绑定试题列表框的数据,如试题名称,当试题类型下拉列表框选中的选择试题种类发生改变时触发该事件,此时页面会重新绑定列表中的试题数据。该事件代码如下:private void queskindlist_selectedindexchanged(object sender, system. eventargs e)bindquestiondata(int32.parse(queskindlist.selectedvalue);547试题答案添加试题答案添加页面addanswer.aspx实现添加试题答案功能。每个试题都只有一个正确的答案,选择题有三个选项。如果是判断题,只要输入“正确”或“错误”即可。试题答案添加页面包含4 个文本框,前三个输入框为问题的选项,最后一个是问题的答案。添加试题答案页面的初始化函数page_load()调用数据访问层的函数从表questions获取试题的信息。函数bindquestiondata(int nquestionid)绑定单个试题的数据信息,它调用数据访问层questiondb类的函数getsinglequestion()从questions表中获取试题信息。用户单击“确认提交”按钮触发事件addanswerbtn_click(),该事件将添加试题的答案。因为页面存在四个文本框,所以四次调用添加答案函数addanswertodb()。在添加过程中,系统默认第一个输入框为“a”,第二个输入框为“b”,每三个输入框标题为“c”,最后一个是正确的答案。事件addanserbtn_click()通过函数addanswertodb()调用数据访问层answerdb类的函数addanswer()添加试题答案。函数代码如下:private void addanswertodb(int nquestionid,string stitle,string sbody,string sanswerbody)answerdb answer = new answerdb();answer.addanswer(stitle,sbody,sanswerbody,nquestionid,0);548试题答案修改修改试题的答案由editanswer.aspx页面实现,界面同添加试题答案相似。页面初始化调用函数bindanswerdata()绑定修改试题答案数据功能。它调用数据访问层questiondb类的函数getsinglequestion()从表questions获取问题信息。然后调用函数数据访问层answerdb类的函数getanswers(),函数获取表answers中的单个问题的答案。用户单击“确认修改”触发事件updateanswer_click(),此事件是把刚刚修改的重新保存到数据库中。事件调用函数updateanswertodb(),此函数调用answerdb类中的updateanswer()函数,从而更新试题的答案。549试题答案删除删除试题答案功能由页面deleteanswer.aspx实现,删除试题答案同修改试题答案相似,如绑定所有的数据项。用户单击“确认删除”按钮触发事件updateanswer_click(),该事件删除选中的试题答案。private void updateanswer_click(object sender, system.eventargs e)answerdb answer = new answerdb();answer.deleteanswerbyquestion(nquestionid);55试卷设计551添加新试卷添加新试卷由addpaper.aspx页面实现。添加新试卷包含:该试卷的总分数、所考核的内容、由那些种类的题组成以及每一个类型试题的数量。添加新的试卷页面调用函数page_load()绑定试题种类,每一种类型有多少试题,该类型的试题总分数是多少。其中数据绑定由函数bindkinddata()实现。该函数首先从问题类型中获取类型,再得出此类型的部分分数和试题数量。单击“添加到试卷中”即可设置该类型的试题数量,然后单击“确认提交”即新建一套试卷。单击“确认提交”按钮触发事件addpaperbtn_click(),即把设置的数据全部写到数据库,事件代码如下:private void addpaperbtn_click(object sender, system.eventargs e)paperdb paper = new paperdb();paperkinddb paperkind = new paperkinddb();arraylist akindlist = new arraylist();if(sessionsession.sessionid + paper != null)akindlist = (arraylist)sessionsession.sessionid + paper;npaperid = paper.addpaper(totalmark,mindefficult,maxdefficult, int32.parse(sessionuserid.tostring(),3);paperkind.addpaperkind(npaperid,(paperkinds)akindlisti).kindid,int32.parse(kindnum.text.trim();552修改试卷 修改试卷功能由editpaper.aspx页面实现,其界面同添加新试卷相似。数据绑定如试题种类,bindpaperlistdata()函数获取papers表中的一套试卷。然后绑定到控件上,bindpaperlistmdata(int32.parse(paperdownlist.selected value)函数根据bindpaperlistdata()获得相应的paperid,再根据paperid获取试卷表papers中的相关数据绑定到各个控件上。当用户修改当前的数据完成后,单击“确认修改”按钮触发事件,该事件同添加新的试卷相似。553删除试卷删除试卷功能由页面deletepaper.aspx实现,该页面显示系统中共有多少套试卷,然后选择其中的一套试卷,单击“删除x”按钮触发事件editdeletebtn_click(),该事件首先判断用户选择数据项没有,如果选中即执行删除试卷。该事件调用函数deletepaperinfo()。private void deletepaperinfo()paperdb paper = new paperdb();if(int32.parse(paperlist.selectedvalue) 0)paper.deletepaper(int32.parse(paperlist.selectedvalue);56随机生成试卷系统随机自动生成试卷功能由页面createexaminepaper.aspx实现,页面是一个等待页面,应用程序生成一套试卷需要一定的时间。界面设计如图8所示:图8 系统生成考试试卷页面在等待界面中,应用程序使用自动跳转方式跳转到考试界面examinepaper.aspx,跳转代码如下:在线答题模块中,系统首先按照试卷的要求,如试卷总分、试卷章节、试题的类型等,随机从数据库生成一套试卷。然后把各个试题显示在答题页面上。试卷随机产生流程如图9所示。开始获取用户角色随机获取试卷种类随机生成试卷否种类数量完毕否是试卷生成完毕是显示试卷结束图9 用户答题流程图在随机生成试卷过程中存在两个函数的调用过程,右边的回调过程返回到随机生成试卷的状态,该函数调用过程是在没有满足试卷的题型或题型种类条件时发生,左边的函数返回随机获取试卷种类状态,该函数是在没有满足试卷种类条件时发生。数据库中的每一类型的试卷所包含的题型是不相同的,且每一种题型所包含的试题和试题的题量也是不同相同的,各种类的试卷的总分和试题的章节都在同一个范围内,即属于同一类型的试卷。在试卷生成时,等待页面从papers表中随机获取一套试卷及其参数,获取试卷及其参数功能由函数getrolepaper()实现。函数的代码如下: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);/随机选择一套试卷sqldatareader repc = paper.getpapercountbyrole();int i = 0;while(repc.read() / 把选中的试卷添加到返回结果集中if(i = index) paperlist.add(repcpaperid.tostring();paperlist.add(repctotalmark.tostring();paperlist.add(repcmaxdefficult.tostring();break; i+;recpc.close();/从数据库中取到这套试卷所包含的题型及数量arraylist kindlist = new arraylist();while(recpk.read()/选中试卷的题型及其数量添加到结果集中questionkinds kind = new questionkinds();kind.kindid = int32.parse(recpkkindid.tostring();kind.kindnum = int32.parse(recpkkindnum.tostring();kindlist.add(kind);recpk.close()

温馨提示

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

评论

0/150

提交评论