4 系统总体设计 4.1 系统功能描述 根据需求分析,系统功能主要包括在线考试、试卷生成、试卷评阅、用户及角色管理、公告管理等。 系统分为三类用户,考生、教师、管理员。考生可以进行在线考试、成绩查询,其中在线考试包括行政能力测试和申论测试。教师可以进行试卷管理、主观试卷的手工评阅,其中试卷管理包括试卷的生成、修改与删除。管理员可以进行用户管理、角色管理、公告管理,其中用户管理包括添加用户、删除用户、角色修改。此外所有的用户都可以查看公告、修改自身密码。
5.4.1 组卷模块 本系统的组卷过程为:先向试卷表中添加一张新试卷以及其基本信息(试卷名、试卷说明),然后再添加该试卷的题目。在添加试卷题目的时候,由于本系统实现的不够完善,主要由教师按照出卷要求控制每个部分及其题目的数量。 添加题目时,教师应首先选择试卷所对应的试卷类型(如行政能力测试或者申论),然后选择该类型中要编辑的试卷的试卷名称,最后选择试卷的各个部分进行题目的添加。 添加题目时,应先添加题目所属部分的例题或者说明,如果例题中包含图片,则选中chkAddImage框后在FileUpload控件中选择要上传的图片即可。上传后,系统会首先按照类似于后面的添加问题时所采用的图片处理相关方法,为其重命名后保存到服务器,并将其物理路径添加到TestpaperPart表中。添加部分的核心代码如下: protected void btnSubmit_Click(object sender, EventArgs e) { int partID = 0; Exam.Bll.Question.AddNewPart(1,int.Parse(ViewState["PartCount"].ToString()), Exam.Common.PageValidate.Encode(this.txtIntroduction.Text), int.Parse(Request["PaperID"]), string.Empty, out partID); ViewState["PartID"] = partID; ViewState["PartCount"] = int.Parse(ViewState["PartCount"].ToString()) + 1; } 添加成功后,再添加每个小部分的问题。由于题型有所区别,为避免各种各样复杂的判断,因此将每个部分的添加试题做成不同的页面,并分别编写代码。代码基本都是大同小异,主要区别在于第三部分的某个小部分答案为图片。所以在窗体设计时,采用了两个Panel控件,一个用于放文本答案的控件,一个用于放图片答案的控件。添加问题时,通过验证控件对教师的输入进行验证,以防输入空答案选项或未输入正确答案。添加第三部分题目页面核心代码如下: protected void btnSubmitQuestion_Click(object sender, EventArgs e) { if (ViewState["PartID"] == null || ViewState["PartID"].Equals(0)) { Exam.Common.MessageBox.Show(this.Page, "请先输入小部分的信息"); |