为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

在线考试系统的设计与实现毕业论文

2019-04-18 27页 doc 63KB 25阅读

用户头像

is_083599

暂无简介

举报
在线考试系统的设计与实现毕业论文班  级   xxxxxxxx 学号 xxxxxxxxxx 毕业论文(设计) 题          目    在线考试系统的设计与实现                  姓    名              xxx                    系      部           信息工程系          专     业          软件技术           指 导 教 师    xxx    职称  助教      日     期          xxx             在...
在线考试系统的设计与实现毕业论文
班  级   xxxxxxxx 学号 xxxxxxxxxx 毕业论文() 题          目    在线考试系统的设计与实现                  姓    名              xxx                    系      部           信息工程系          专     业          软件技术           指 导 教 师    xxx    职称  助教      日     期          xxx             在线考试系统设计与实现 XXX 【摘  要】人类已经步入了崭新的21世纪,以Internet技术为代表的信息技术为人类创造了一种新的不受地域、时间和计算机本身的约束的信息交流、共享和协作方式。在线考试系统前台主要实现考生在线考试、提交自动评分,后台主要实现添加、编辑和删除试题以及编辑试题分值等功能。 【关键词】Internet;计算机;在线考试;c#2.0+Microsoft SQL Server 2005; 1 系统分析 1.1系统模块的教员系统设计 登入教师模块,本窗体有试题信息管理、考试结果管理、个人信息维护,可以对试题进行添加、查询、列表。 1.2系统模块的学员系统设计 登入学员模块,本窗体有编辑个人信息、在线考试、帮助,可以对学员信息的添加、修改。 打开“在线考试”窗体,选择考试科目-开始考试-交卷评分 1.3系统模块的管理员设计 打开“管理员”窗体,本窗体有学员信息管理、教员信息管理窗体、 在线考试系统的业务图 图1在线考试系统的业务流程图 2数据库的设计 在开发在线系统之前,分析了系统的数据量,由于在线考试系统中试题及考生信息的数据量会很大,因此选择Microsoft SQL Server2005数据库存储数据信息,数据库名为db_ExamOnline, 操作如下: 图2建立数据库 步骤一  打开Microsoft SQL Server2005 打开Microsoft SQL Server2005之后,输入服务器名称和身份验证,然后点击“连接”。 步骤二  单击数据库-新建-数据库,如图2所示,弹出保存对话框,选择好程序所在的目录输入保存名称“db_ExamOnline”,更改路径,单击确定按钮,即完成了数据库的设计。 从此以后,设计的所有数据表都属于这个数据库里面的表了。 在数据库中创建了8个数据表用于存储不同的信息。 图3系统中数据表 2.1管理员信息表Admin的设计 步骤一  选中数据库窗口对象下面的“表”,新建表,表名为 Admin,数据表有三个字段名:管理员编号(Adminid)、管理员姓名(LoginId )、管理员密码(LoginPwd )。 但管理员编号不能有相同的值,所以要把Adminid设置为关键字。,如图4所示。选中“管理员编号”所在行,然后单击工具栏上面的钥匙图标即可,在字段名称列里面直接输入字段名称“Adminid”,在数据类型里面选择“int”字段类型。 图4设置管理员编号关键字 步骤二  单击“关闭”按钮会自动弹出一个对话框,在该对话框里面输入表名“Admin”,然后确定保存数据表。 现在,管理员窗体用到的管理数据表Admin已经创建好了。然后打开表在里面输入一些数据,例如图5管理员编号为“1”,登录名为“admin”;登入密码为“00000”。 图5管理员信息窗体 2.2教员信息表Teacher的设计 在数据库下新建表,数据表有7个字段名,分别是  教师编号(teacherId)、教师登录名(LoginId)、教师登录密码(LoginPwd)、教师状态(UserStateId)、教师姓名(TeacherName) 、性别(Sex)、生日(Birthday),设教师编号为关键字,表名保存为”Teacher”,然后打开表输入一些数据,如下图: 图6教员信息表 2.3学员信息表Student的设计 在数据表下新建表,数据表的字段名分别是 学生编号(Studentid)、学生登录名(LoginId)、学生登录密码(LoginPwd )、  学生状态(UserStateId)、学生姓名(StudentName)、性别(Sex)、班级号(ClassId)、学号(StudentNo)、学生Id号(StudentIdNo)、主修(Major) 、之前的学校(SchoolBefore)、电话(Phone)地址(Address)、邮编(PostalCode)、希望工作城市(CityWanted)、希望工作(JobWanted)、备注(Comment)、电子邮件(Email),设置学生编号为关键字,表保存为“Student”,再打开表填入数据,如下图所示: 图7学员信息表 2.4系统的数据表除了上面的学员、教员、管理员表外还要建另外几个表,分别是年级表(Grade)、班级表(Class)、科目表(Subject)、试题表( Question)、状态表(UserState),分别对每个表的字段名、类型和主键进行详细设置,再打开每个表输入信息。如下图是试题表的信息,以此完成其他几个表,及完成所有数据库的工作。 图8试题信息表E-R图 图9试题信息表 3系统模块的设计 3.1登录模块的窗体设计 登录窗体是用来登录程序用的,本程序不是随便什么人都可以打开的。只有具有权限的用户才可以运行,并不是任何人都可以参加在线考试,默认是不允许匿名登录的,只有经过管理员分配的编号和密码才能登录在线考试系统参加考试,这时就需要通过登录模块验证登录用户的合法性。登录模块是在线考试系统的第一道安全屏障,登录模块运行结果如图10所示。 3.1.1用户登录用户名和密码后,选择登录类型再按“登录”按钮,根据选择的登录身份验证账号和密码是否正确,如果正确,则会转向与登录身份相符的页面,关键具体代码如下: // “登录”按钮的单击事件 private void btnLogin_Click(object sender, EventArgs e) { bool isValidUser = false;  // 标识是否为合法用户          string message = "";        // 验证不通过弹出的消息 if (ValidateInput())        // 验证输入成功,显示窗体 { // 验证用户是否为合法用户 isValidUser = ValidateUser( txtLoginId.Text.Trim(), txtLoginPwd.Text.Trim(), cboLoginType.Text.Trim(), ref message ); // 如果是合法用户,就跳转到相应的窗体 if (isValidUser) { // 登录用户名和登录类型 UserHelper.loginId = txtLoginId.Text.Trim(); UserHelper.loginType = cboLoginType.Text; if (cboLoginType.Text == "教员") { // 创建教员主窗体对象 TeacherForm teacherForm = new TeacherForm(); // 显示窗体 teacherForm.Show(); // 登录窗体隐藏 this.Visible = false; } else if (cboLoginType.Text == "学员") { // 试题选择窗体对象 StudentForm studentForm = new StudentForm(); // 显示窗体 studentForm.Show(); this.Visible = false; } else if (cboLoginType.Text == "管理员") { // 试题选择窗体对象 AdminForm admin = new AdminForm(); admin.Show(); this.Visible = false; } } else  // 验证合法用户失败,给出提示 { MessageBox.Show(message,"登录提示",MessageBoxButtons.OK,MessageBoxIcon.Warning); } } 3.1.2单击“取消”按钮,关闭登录窗口。代码如下: // 取消登录,退出应用程序 private void btnCancel_Click(object sender, EventArgs e) { Application.Exit(); } 3.2管理员模块窗体的设计 新建一个网页,命名为AdminForm.aspx主要用于学员、教员信息的管理,点击教员信息管理会弹跳出教员信息列表,对教师信息的保存、修改、刷新等操作,点击学员信息管理控件会弹跳出学员信息表,对学生信息表的删除、保存、添加、刷新等操作。关键图如下所示 图11教员信息列表 图12学员信息列表 3.3学员模块窗体的设计 3.3.1新建一个网页,名为StudentFrom.aspx主要是编辑学员的个人信息,在线答题,考试交流,在编辑学员个人信息时会出现学员注册信息表窗体,对未注册的学员先进行注册同时会把数据存储到建好的数据库中,然后再点击“在线答题”控件,则弹跳出试题选择窗体,考生看完说明后,选择所考科目,根据考试的科目会弹跳出相符的页面。主要代码如下。 string sql = "SELECT SubjectName FROM Subject"; try { SqlCommand command =  new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); // 执行查询 SqlDataReader dataReader = command.ExecuteReader(); // 循环添加到组合框中 while (dataReader.Read()) {  cboSubjects.Items.Add(dataReader["SubjectName"].ToString()); } dataReader.Close(); } // …… 3.3.2随机抽题: 自定义 SetSelectedQuestionIds() 方法 Random random = new Random(); int questionIndex = 0;  // 随机产生的问题的索引值 // 抽取每一道题并保存抽出的题目的Id int i = 0;  // 记录抽取了几道题 while (i < QuizHelper.questionNum) { // 在所有问题的数量范围内抽题产生随机数 questionIndex = random.Next(QuizHelper.allQuestionIds.Length); // 如果没有被选中过,可以选择 if (QuizHelper.selectedStates[questionIndex] == false) { QuizHelper.selectedQuestionIds[i] = QuizHelper.allQuestionIds[questionIndex]; QuizHelper.selectedStates[questionIndex] = true; i++; } }            3.3.3在线考试的“回答问题”页面的设计 在新建的页面里面添加时间(tmrCostTime),控制整个考试时间,代码如下: private void tmrCostTime_Tick(object sender, EventArgs e) { int minute;  // 当前的分钟 int second;  // 秒 // 如果还有剩余时间,就显示剩余的分钟和秒数 if (QuizHelper.remainSeconds > 0) { QuizHelper.remainSeconds--; minute = QuizHelper.remainSeconds / 60; second = QuizHelper.remainSeconds % 60; lblTimer.Text = string.Format("{0:00}:{1:00}", minute, second);  // 补充                              } // 否则,就提示交卷 else { tmrCostTime.Stop(); MessageBox.Show("时间到了,该交卷了!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); QuizResultForm quizResultForm = new QuizResultForm(); quizResultForm.MdiParent = this.MdiParent; quizResultForm.Show(); this.Close(); } 3.3.4 CheckOption() 方法: switch (QuizHelper.studentAnswers[questionIndex]) { case "A": rdoOptionA.Checked = true; break; case "B": rdoOptionB.Checked = true; break; case "C": rdoOptionC.Checked = true; break; case "D": rdoOptionD.Checked = true; break; default: // 四个选项的 Checked 都设为 false break; } 3.3.5记录学员的答案: 四个单选按钮共用一个 Click 事件处理方法 // 选择答案时,记录答案 private void rdoOption_Click(object sender, EventArgs e) { QuizHelper.studentAnswers[questionIndex] = Convert.ToString( ( (RadioButton)sender ).Tag); } 3.4在线考试答题卡页面的设计 3.4.1窗体加载时,显示答案: // 窗体的 Load 事件 private void AnswerCardForm_Load(object sender, EventArgs e) { int index = 0; foreach (Control item in this.Controls) { if (item is Label )  // 如果是标签 { index = Convert.ToInt32(item.Tag); if (index != -1) { item.Text = QuizHelper.studentAnswers[index]; }                    } } tmrCostTime.Start();  // 启动倒计时的计时器 } 3.4.2点击题号,返回修改答案 20个题号按钮共用一个 Click 事件处理方法,代码如下所示: private void btnQuestion_Click(object sender, EventArgs e) { // 获得当前点击的按钮对应的题目索引 int questionIndex = Convert.ToInt32(((Button)sender).Tag); // 打开答题窗体 AnswerQuestionForm answerQuestionForm = new AnswerQuestionForm(); // 设置答题窗体显示的题目索引 answerQuestionForm.questionIndex = questionId; answerQuestionForm.MdiParent = this.MdiParent; answerQuestionForm.Show(); this.Close(); } 3.4显示结果窗体 图13答题结果窗体 分数的显示代码如下: private void QuizResultForm_Load(object sender, EventArgs e) { int correctNum = 0;  // 答对的题目数量 for (int i = 0; i < QuizHelper.questionNum; i++) { if (QuizHelper.studentAnswers[i] ==QuizHelper.correctAnswers[i]) { correctNum++; } } // 计算得分 int score = correctNum * 100 / QuizHelper.questionNum; lblMark.Text = score.ToString()+"分"; // 确定分数条和评语 // …… } private void QuizResultForm_Load(object sender, EventArgs e) {      // 计算分数 …….      // 确定显示分数的label的宽度 lblStudentScoreStrip.Width = lblFullMarkStrip.Width * score / 100; // 根据不同的得分,显示不同的颜色 if (score < 60) { lblStudentScoreStrip.BackColor = Color.Red; lblComment.Text = "该好好复习啦!"; picFace.Image = ilFaces.Images[0]; } else if (score >= 60 && score < 85) { // …… } // …… 3.4教员模块窗体的设计 新建一个网页名为TeacherForm.aspx,主要用于添加试题、查询试题、试题列表,当点击添加试题控件时会打开新增试题窗体,关键代码如下: // 点击时,打开新增试题窗体 private void tsmiAddQuestion_Click(object sender, EventArgs e) { // 创建窗体对象 AddQuestionForm addQuestionForm = new AddQuestionForm(); // 设置 MDI 主窗体 addQuestionForm.MdiParent = this; // 显示窗体 addQuestionForm.Show();  } 点击查询试题控件,会显示查询试题窗体,代码如下: private void tsmiSearchQuestion_Click(object sender, EventArgs e) { SearchQuestionForm searchForm = new SearchQuestionForm(); searchForm.MdiParent = this; searchForm.Show(); } 点击试题列表控件时,会显示出试题列表窗体,代码如下: // 显示试题列表窗体 private void tsmiQuestionList_Click(object sender, EventArgs e) { QuestionListForm questionListForm = new QuestionListForm(); questionListForm.MdiParent = this; questionListForm.Show(); } 设置窗体加载事件,当窗体被打开时,在该弹跳出的窗体下方显示教员的登录信息,主要代码如下: // 窗体加载事件处理 private void TeacherForm_Load(object sender, EventArgs e) { // 设置状态栏标签显示的文字 lblTeacher.Text = string.Format("教员{0}登录了!",UserHelper.loginId); } 教员窗体里面除了试题管理、教员管理还有窗口及帮助,打开“窗口”窗体,弹跳出下面页面。 点击“帮助”下的关于控件弹跳出帮助窗口,具体代码如下: // 点击菜单中的“帮助”->”关于”,以模式窗口显示 About 窗体 private void tsmiAbout_Click(object sender, EventArgs e) { AboutForm aboutForm = new AboutForm(); aboutForm.ShowDialog();  // 以模式窗口显示 } 参考文献 [1]王先国.UML统一建模使用教程[M].北京:清华大学出版社,2009.4 [2]唐政、房大伟.C#项目开发全程实录[M].北京:清华大学出版社,2008.6 [3]王熙宁,宋宝玉,辛瑞杰. 网上考试系统开发模式与设计[J]. 情报科学, 2004,(06) . [4]王付山.网上考试系统的设计与实现[J].电脑知识与技术,2007,1 [5]吕俊.WWW环境下在线考试系统的设计与实现[M].电子计算机与外部设备,1999 [6]于兆勤.基于INTERNET的考试系统的研究与开发[M].广东广播大学学报,2001 [7]沈大林.PhotoshopCS2图像处理教程.中国铁道出版社,2007.3 致谢 本毕业设计最终得以顺利完成,非常感谢我的指导教师高正红老师。从设计选题直到设计的最终完成,他都给予我尽心尽力的指导。XXX老师严谨的治学态度深深的影响着我,对我今后的学习、工作、生活必将产生很大的影响。借此机会,特向老师表示最诚挚的感谢。 感谢xxxx学院的所有领导和老师。他们严谨的学风、渊博的知识、诲人不倦的品格一直感染和激励着我不断上进,使我大学三年的时光充实而有意义,海纳百川,取则行远,在这所美丽的校园里,我成长了许多。 在本系统的设计中,我也参照了大量的著作和文章,许多学者的科研成果及写作思路给我很大启发,在此向这些学者们表示由衷的感谢。感谢我的家人、同学、朋友对我的大力支持,他们的无私奉献、关爱和支持使我能够继续去追求自己的人生理想和目标。感谢所有关心、帮助和支持我的人。
/
本文档为【在线考试系统的设计与实现毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索