1、本科毕业设计说明书 设计题目: 在线考试系统 专业年级: 计算机科学与技术,2008级 学 号: 姓名: 指导教师、职称: 副教授 2012年 5 月 18 日- 28 -福 建 农 林 大 学 金 山 学 院 毕 业 设 计 说 明 书目录摘要IAbstractII1引言- 1 -1.1概述- 1 -1.2选题背景- 1 -2 可行性分析- 2 -2.1 概述- 2 -2.2技术可行性- 2 -2.3操作可行性- 2 -3 需求分析- 3 -3.1 系统需求分析- 3 -3.2 数据库需求分析- 3 -3.2.1数据字典- 3 -3.2.2数据库E-R图- 6 -4系统设计- 7 -4.1概
2、述- 7 -4.2 开发工具介绍- 7 -4.3前台功能实现- 7 -4.3.1学生登陆模块实现- 8 -4.3.2学生注册模块实现- 9 -4.3.3修改密码模块实现- 10 -4.3.4成绩查询模块实现- 11 -4.3.5进入考场模块实现- 12 -4.3.6退出注销模块实现- 15 -4.4后台功能实现- 15 -4.4.1管理员登录实现- 16 -4.4.2试卷管理模块实现- 17 -4.4.3学生信息模块实现- 23 -4.4.4成绩信息模块实现- 25 -4.5设计的主要难点- 26 -4.5.1时间的存储、读取与显示- 26 -4.5.2从数据库取出的数据乱码问题- 26 -5
3、结束语- 27 -参考文献- 28 -致谢- 29 -摘要随着教育改革的不断深入,以及网络的迅速发展,近几年来出现了一些新型的教育形式,如网上授课,网上考试等。随着院校的扩招,学生数量不断增加。院校面临着教师工作压力增大,效率低下等问题。 本设计的目的就是为了适应新形势的发展,改变传统的教学模式,建立一个在线考试系统,以提高教师的工作效率。本系统不仅能方便学生随时随地对自己的学习情况进行检测,同时也一定程度减轻教师工作量。这种无纸化网络考试系统,使考务管理突破时空限制,提高考试效率和标准化水平,是学校管理者,教师和学生可以在任何时候,任何地点通过网络进行考试。关键词:PHP;在线考试; Abs
4、tractAlong with the education reform, and the rapid development of the network, and in recent years there have been some new education forms, such as online teaching, online exam, etc. As colleges of enrollment expansion, increasing the number of students. Colleges are facing a teachers work pressur
5、e increases, the efficiency is low.This design goal is to adapt to the new situation of development, change the traditional teaching mode, set up a on-line examination system, in order to improve the working efficiency of the teachers. This system can not only convenient student at any time and plac
6、e to their own learning situation for testing, and also a certain degree reducing their workload. This paperless network exam system, make examination management breakthrough time and space restrictions, raise test efficiency and standardization level, is the school administrators, teachers and stud
7、ents can at any time, any place through the network to carry on the exam.Key work:PHP;Online examination;1引言1.1概述 金山在线考试系统是以Internet为基础,以开发平台开发的在线考试系统,能让同学们能随时随地在线测试和考察自己的知识掌握程度,也方便老师随时对学生进行知识测验。1.2选题背景Internet技术的发展使得考试的技术手段和载体发生了革命性的变化,Internet的开放性、分布性的特点和基于Internet的巨大的计算能力使得考试突破了时间和空间的限制。与传统考试模式相比
8、,在线考试具有无可比拟的优越性,它可以将传统考试过程中的试卷组织、审定印制、传送收集、登记发放、评判归档各个环节缩小到一至两个环节,几乎屏蔽了所有人工直接干预考试活动的可能性,不但能够节约大量的时日、人力、物力与财力,而且还可以大幅度增加考试成绩的客观性和公正性。传统的考试方式一般要经过人工出卷、考生考试、人工阅卷等过程。对于一些课程来说,随着考生数量的增加,教师出卷阅卷的工作量将会越来越大,并且其工作十分烦琐和非常容易出错。在线考试系统课题产生的背景是当今教育信息化的趋势及我国高校教育信息化系统的建设,目的是充分利用学校现有的计算机软、硬件和网络资源实现无纸化考试以避免传统手工考试的不足。与
9、传统考试模式相比,网上考试渗入了更多的技术环节,对实现安全性的途径、方法也提出了更高的技术要求。通过Internet来实现网上考试,是现代教育技术的一个具体实现,具有很重要的现实意义。可以实现教考分离以及考务工作的全自动化管理,可以有效利用校园网的软硬件资源,使其发挥最大效力,更好的为学校的教学、科研、管理服务,可以大规模的实行考试,实现考试的客观性、公证性,自动化组卷、阅卷可以减轻教师的工作强度。传统考试要求老师刻试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷。这是一个漫长而复杂的过程,已经越来越不适应现代教学的需要。在线考试系统是传统考场的延伸,它可以利用网络的无限广
10、阔空间,随时随地的对学生进行考试,加上Web数据库技术的利用,大大简化了传统考试的过程。2 可行性分析2.1 概述开发任何一个基于计算机的软件,都会受到时间和资源上的限制。因此,在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行性分析,以减少项目开发风险,避免人力、物力和财力的浪费1。由于本系统是作为一个毕业设计,在可行性分析中,经济可行性可以不用考虑,只考虑技术可行性和操作可行性,重点分析技术可行性。2.2技术可行性现在网络上的流行的动态网页编程语言有许多,但比较流行的有三种动态页面编辑语言,分别是JSP,ASP和。虽然是近几年才发展开发出来的,不像和那样是业内的老
11、资格,但是它所具备的强大功能使得他越来越受IT业内人士的喜爱。本系统是基于Internet和PHP实现的在线考试系统,无论何时何地只要有网络,有电脑,学生们都能随时随地的进行测验,又是一门开源的服务器脚本语言,能在网上查到大量的资料,所以本系统在技术上是可行的。2.3操作可行性本系统是一款网络系统,在操作系统、开发平台、硬件环境上并无特殊要求。3 需求分析3.1 系统需求分析本系统分为前台和后台,后台用于管理员或教师登录,主要负责进行基本资料、试卷、成绩的管理以及查询等;前台用于学生登录,主要负责在线考试、查询以往考试成绩。从总体上考虑,系统应该实现下列功能:对管理员来说,包括试卷管理、成绩管
12、理、学生基本信息管理。1、试卷管理:管理员或教师可以自己添加试卷。同时,管理员或老师还可以对库中已有的试卷进行修改和删除,添加新试卷等。3、成绩管理:管理员或教师可以查看考生的考试成绩。4、学生管理:管理员可以对用户的资料进行查询、删除。对学生用户来说,包括在线考试、查询以往考试成绩、修改基本资料和注册等。1、在线考试:学生可以任选时间进行在线测试,考试结束后,系统会根据已有的标准答案进行在线判卷,考生可以立刻知道考试成绩。2、查询以往考试成绩:学生可以在线查询以前参加过的每门课程的考试相关信息。3、修改资料:学生可以修改自己的基本资料。4、注册:未注册的学生可以注册登录本系统。3.2 数据库
13、需求分析针对一般考试系统的需求,设计如下所示的数据项和数据结构:管理员信息,包括的数据项有:管理员姓名、密码等。学生用户信息,包括的数据项有:用户名、密码、性别、班号、学号等。试卷信息,包括的数据项有:试卷名称等。考题信息,包括的数据项有:考题ID、考题所属试卷、考题类型、考题题目、考题内容,考题答案,考题分值。学生答题表:ID、学生学号、考题ID、学生答题回答。3.2.1数据字典图 3-1 管理员表图 3-2 成绩表图 3-3 考题信息表图 3-4 考题类型表图 3-5 学生答题答案表图 3-5 学生表3.2.2数据库E-R图自编ID成绩表考试时间成绩试卷名称性别学号自编ID学号考试学生表年
14、龄地址电话密码姓名答题学生答题表试卷名称学号学生答题答案自编ID考题IDN1N1图 3-6 系统E-R图本系统应该建立一个稳定的后台数据库系统,通过该数据库管理整个考试系统所需的信息(用户信息、试题信息、试卷信息、考试信息等)。本系统还应该包括学生和教师的账号、后台数据库的安全机制、考试过程的控制机制。4系统设计4.1概述金山在线考试系统主要分为两个部分,一个为前台,一个为后台。前台主要是为学生准备的,学生可以在前台登陆,注册。在登陆以后同学还可以进入考场进行考试,查询成绩,修改密码等操作。 后台主要是为管理员和教师准备的,教师在后台登陆以后可以进行试卷管理、学生信息管理、成绩信息管理。如果登
15、陆的是管理员,除了拥有教师的权限功能以外,还能使用管理员信息管理,在管理员信息管理中能对教师信息进行管理。4.2 开发工具介绍本设计是用语言借助(CodeIgniter)框架开发完成的。PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法。它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文
16、档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C+进行程序的扩展!(CodeIgniter)框架是一个为用 PHP 编写网络应用程序的人员提供的工具包。它的目标是实现让你比从零开始编写代码更快速地开发项目,为此,CI 提供了一套丰富的类库来满足通常的任务需求,并且提供了一个简单的接口和逻辑结构来调用这些库。CodeIgniter 可以将需要完成的任务代码量最小化,这样你就可以把更
17、多的精力放到项目的开发上了。4.3前台功能实现(CodeIgniter)框架是一个MVC模式的框架,我们一般在控制器文件中控制需要载入的页面,以及对提交的信息进行处理、输出。我将前台控制器文件命名为online.php。模型主要是和数据库打交道,在这里我将模型文件命名为monline.php。以下是前台功能流程图:NY开始是否登录用户注册修改密码成绩查询进入考场退出注销用户登录用户注册用户登录 图 4-1前台功能流程图 4.3.1学生登陆模块实现 学生登录模块中主要实现的是学生能通过学号和密码登录本系统,以便能使用本系统的一些功能。具体的实现步骤是:1) 输出表单。2) 获取用户填写完的表单元
18、素。3) 将获取的表单元素与服务器上的学生表信息进行比对、判断。4) 如果信息符合数据库内学生信息表的数据则登录成功,将学号、姓名、学生ID记录在SESSION变量中,否则输出登录错误的信息。控制器代码如下:$data=array( number=$this-input-post(number), pw=md5($this-input-post(pw); $table=student; $query=$this-monline-select($table,$data); if($query-num_rows()=1)foreach($query-result() as $row)$name=$
19、row-name;$u_id=$row-u_id;$number=$row-number;$sessionis_login=true;$sessionname=$name;$sessionu_id=$u_id;$sessionw_name=true;$sessionnumber=$number;$this-session-set_userdata($session); redirect(site_url(online/index); echo alert(欢迎您.$name.同学) ; else redirect(site_url(online/index);echo alert(登陆失败,请
20、重试) ; 4.3.2学生注册模块实现学生注册模块中主要实现的是学生能通过注册选项注册本系统的账户,以便能登录本系统使用本系统的功能。具体的实现步骤是:1) 输出注册表单。2) 获取游客填写完后提交的表单上的元素。3) 将获取的表单元素与服务器上的学生表信息进行比对、判断,是否存在同学号的学生。4) 如果不存在同学号的用户,将表单上的用户信息添加到学生信息表上,否则返回注册页面,输出错误提示信息。控制器代码如下:$data=array( u_id=, name=$this-input-post(name), sex=$this-input-post(sex), number=$this-inp
21、ut-post(number), age=$this-input-post(age), address=$this-input-post(address), tel=$this-input-post(tel), pw= md5($this-input-post(pw);$table=student;$u_id=$this-monline-add($table,$data);if($u_id) $sessionzhuce=11;$name=$this-input-post(name);$number=$this-input-post(number);$sessionis_login=true;$
22、sessionname=$name;$sessionu_id=$u_id;$sessionw_name=true;$sessionnumber=$number; $this-session-set_userdata($session); redirect(site_url(online/index); else $sessionzhuce=10; $this-session-set_userdata($session); redirect(site_url(online/index); 4.3.3修改密码模块实现修改密码模块中主要实现的是已经登录的学生能通过修改密码选项修改自己的账户密码,以便
23、能保证自己信息的安全。具体的实现步骤是:1) 输出修改密码表单。2) 获取学生用户填写完后提交的表单上的元素。3) 将获取的表单元素与服务器上的学生表信息进行比对、判断,是否存在同学号的学生。4) 如果存在该同学号的用户,将表单上的密码更新到相应的学生信息上。控制器代码如下:$id=$this-session-userdata(u_id);$data=array( pw=md5($this-input-post(pw);$table=student;if($this-monline-edit($table,$data,$id)$sessionedit=true;$this-session-se
24、t_userdata($session); redirect(site_url(online/index); 4.3.4成绩查询模块实现成绩查询模块中主要实现的是学生能通过成绩查询选项,以便能登录本系统使用本系统的功能。具体的实现步骤是:1) 获取学生登录后保存在SESSION中的学生ID。2) 按学生查询学生数据库,并输出。控制器代码如下: $datatitle=金山在线考试系统-成绩查询;$this-load-view(header,$data);$this-load-view(chaxun);页面关键代码:monline-query($tablea);if($querya-num_row
25、s() 0) foreach($querya-result() as $row) $number=$this-session-userdata(number); if($number=$row-g_number)? g_ktlb;? g_grade? 4.3.5进入考场模块实现进入考场模块是本系统在前台中最主要的模块,它能使学生们在线考试,完成对自己能力的测试。实现步骤是:1) 当点击进入考场选项时会跳转到一个试卷选择页面,给学生选择试卷。2) 悬着完试卷后就会跳转到答题页面。3) 学生做完试卷点击提交后,系统会自动核对后台数据库,计算出分数保存在成绩表中。控制器代码:function kao
26、chang() if($this-session-userdata(is_login)$datatitle=金山在线考试系统-考试考场;$this-load-view(header,$data);$this-load-view(kaochang); elseredirect(site_url(online/index); function ks_begin() $data=array( ktlb=$this-input-post(ktlb) ); $sjdatatitle=$this-input-post(ktlb); $sjdatadata=$data; $this-load-view(ks
27、_begin,$sjdata); function ks_end() $data=array( ktlb=$this-input-post(ktlb) ); $table=kaxx; $query=$this-madmin-tmquery($table,$data); $grade=0; $daan=; if($query-num_rows() 0) foreach($query-result() as $row)if($row-ktlx=0)$daan=$this-input-post(ktda.$row-x_id);if($daan=$row-ktda)$grade=$grade+$row
28、-grade;elseif($row-ktlx=1)$daan=$this-input-post(ktda.$row-x_id);if($daan=$row-ktda)$grade=$grade+$row-grade; elseif($row-ktlx=2)$daan=$this-input-post(ktda.$row-x_id);for($i=0;$icount($daan)-1;$i+) $daana=; if($iktda)$grade=$grade+$row-grade; $g_data=array( g_ktlb=$this-input-post(ktlb), g_grade=$g
29、rade, g_number=$this-session-userdata(number), b_time=$this-input-post(time) ); $g_table=grade; if($this-monline-add($g_table,$g_data)redirect(site_url(online/index); elseecho 数据存储出错(成绩); elseecho 没有该试卷; 选择试卷页面代码:monline-lbquery($table); ?请选择考题分类:num_rows() 0) foreach($query-result() as $row)? optio
30、n value=ktlb; ?ktlb; ? 4.3.6退出注销模块实现退出注销模块实现的是清空会话中的数据,使用户回到重新登录的状态。控制器实现代码如下:function tuichu() $this-session-sess_destroy();redirect(site_url(online/index);4.4后台功能实现后台主要是为管理员和教师准备的,教师在后台登陆以后可以进行试卷管理、学生信息管理、成绩信息管理。如果登陆的是管理员,除了拥有教师的权限功能以外,还能使用管理员信息管理。在管理员信息管理中能对教师信息进行管理。后台的控制器文件为gadmin.php,模型文件为madmi
31、n.php。后台功能流程图如下:NYNY开始是否登录试卷管理学生信息管理试卷成绩管理管理员信息管理员登陆登录管理员登陆登录退出注销是否为总管理员图 4-2 后台功能流程图4.4.1管理员登录实现后台管理员模块的实现与前台是差不多的,只是查询的表不一样,前台登录模块查询的是学生信息表,后台管理员登录模块查询的是管理员信息表。控制器代码,如下:function denglu_ok() $this-form_validation-set_rules(name,name,trim|required); $this-form_validation-set_rules(pw,密码,trim|require
32、d); $dataatitle=金山在线考试系统后台登陆; if(!$this-form_validation-run() $dataerror=登录失败; $this-load-view(admin/header,$dataa); $this-load-view(admin/denglu,$dataa); else $data=array( name=$this-input-post(name), pw=md5($this-input-post(pw) ); $table=admin; $query=$this-madmin-denglu($table,$data); if ($query-
33、num_rows() =1) foreach ($query-result() as $row) $name=$row-name; $per=$row-per; $sessionname=$name; $sessionis_login=true; $sessionper=$per; $this-session-set_userdata($session); redirect(site_url(gadmin/index); else $dataaerror=后台信息错误; $this-load-view(admin/denglu,$dataa); 4.4.2试卷管理模块实现试卷管理模块是让老师和
34、管理员添加、修改、查看试卷用的。试卷的添加、修改与查看也是一个考试系统的重要功能,他能对试卷进行合理的管理。以下是实现方法:1) 点击试卷管理选项进入试卷列表页面,在此页面可以对试卷进行管理。2) 点击详细,跳转到试卷修改页面,可以对试卷可以对试卷的试题进行查看、修改与删除。试卷列表页实现代码:function shijuan() if($this-session-userdata(is_login)=false) redirect(site_url(gadmin/index); else $datatitle=金山学院在线考试系统后台管理-试卷管理; $datatable=ktfl; $da
35、taname=$this-session-userdata(name); $this-load-view(admin/header,$data); $this-load-view(admin/lb,$data); 试卷列表页实现关键代码:madmin-lbquery($table);if($query-num_rows()0) foreach($query-result() as $row)? input type=text name=ktlb value=ktlb; ? / input type=hidden name=l_id value=l_id;? / 试卷试题修改页面控制器关键代码:
36、function inlb_ok() $data=array( ktlb=$this-input-post(ktlb), ); $id=$this-input-post(l_id); if($this-input-post(submit)=修改) if($this-madmin-lbedit(ktfl,$data,$id) $sessionedit=true; $this-session-set_userdata($session); redirect(site_url(gadmin/shijuan); elseecho 数据库数据修改数据出错,请从新操作; elseif($this-input-post(submit)=删除) if($this-madmin-lbdele(ktfl,$id) redirect(site_