题
专 学 姓
西 南 交 通 大 学
网 络 教 育 学 院
年 月 日
院系 西南交通大学网络教育学院 专 业 计算机科学与技术
年级 姓 名
学习中心指导教师
题目 考试题库系统的设计与实现
评
评 阅
成 绩
答辩委员会主任 ()
年 月 日
毕 业 设 计 任 务 书
班 级 xxx 学生姓名 xxx 学 号 xxxxxxx
开题日期: 年 月 日 完成日期: 年 月 日
题 目 考试题库系统的设计与实现
题目类型:工程设计 √ 技术专题研究 理论研究 软硬件产品开发
一、 设计任务及要求
方面 。
够正常使用
二、 应完成的硬件或软件实验
五、 要求学生搜集的技术资料(指出搜集资料的技术领域)
1.软件工程方法资料。
六、 设计进度安排
第一部分 熟练课题,收集、整理课题相关资料 ( 1 周)
第二部分 系统需求分析与总体设计 ( 2 周) 第三部分 熟悉系统实现平台:熟练掌握delphi6.0及Access ( 2 周)
第四部分 详细设计、编码、测试 ( 3 第五部分 毕业设计论文文档编写整理 ( 2 评阅或答辩 (
年 月 日
学院审查意见:
审 批 人: 年 月 日
诚信承诺
一、 本设计是本人独立完成;
二、 本设计没有任何抄袭行为;
三、若有不实,一经查出,请答辩委员会取消
本人答辩(评阅)资格。
月 日
目 录
摘 要 ································································································································· I
第1章 前 言···························································································· 1
1.1 课题的来源和目的 ······························································································· 1
1.1.1 教育信息化的趋势 ·········································································· 1
1.1.2 传统的考试活动 ············································································· 2
1.2 开发工具的选择 ······················································································· 2
1.2.1 Delphi 简介 ·············································································· 2
1.2.2 Access 简介 ················································································ 4
1.2.3 C/S 简介 ······················································································ 5
第2章 系统设计 ··································································· 7
2.1 功能设计 ································································································ 7
2.2 数据库设计 ························································································· 8
2.3 界面设计 ··························································································· 8
2.4 数据文件结构 ····················································································· 8
2.4.1 考试模板基本表 ················································································ 8
2.4.2 学生模板基本表 ······················································································ 9
第3章 系统实现 ······································································ 9
3.1 功能模块 ······························································································· 10
3.2 ································································································ 10
3.3 ··································································································· 11
3.4 ······························································································· 13
3.5 字表处理功能的实现·················································································· 13
考试系统的流程介绍 ································································· 17
第 组卷策略 ···················································································· 19 结 束 语 ··································································································· 21 致 谢 ··································································································· 23 参考文献 ··································································································· 24 附 录 ··································································································· 25
西南交通大学网络教育毕业设计(论文) I
摘 要
目前考试系统越来越被人们所重视,它可以为院系教务部门的决策制定提供强有力的数据支持。为此,作者开发了考试题库系统,以现代计算机技术为工具来管理学生的考试进程,方便教师和管理考试人员的工作。
本系统探讨《数字电子技术基础》课程无纸化考试系统的设计方法, 需要可对数据库或数据表中的信息进行备份和恢复,户造成不必要的麻烦。
了Delphi6.0开发前台应用程序, 采用它是一套完整的基于C/S考试系统。文字录入、数据库操作、Word 字表处理等主要模块。, 可应用于数字电路技术基础的教学中。
关键词:功能模块,无纸化考试
西南交通大学网络教育毕业设计(论文) 第 1 页
第1章 前 言
本文介绍的无纸化模拟测试系统的实现方式,并采用面向对象的开发工具Delphi 来实现系统的功能,系统的主要特点如下:
1. 组件接受答题信息,随试卷中的当前试题的变化而改变。
2. 系统提供了“题库保存”功能,提供“题库打印”功能。
3. 系统具有“考前设置”“考生认定”参考答案”等端,功能完善,可靠性和执行效率较高。
1.1 课题的来源和目的
1.1.1 教育信息化的趋势
也引发了一场知识和信息的革命。自2090年代以来,国际教育界出现了以信息技术(IT
包
《面向21世纪教育振兴行动计划》,教育部将按照统一规划的原则,分三个层面推进教育信息化:第一个层面是以多媒体计算机技术为核心的教育技术在学校的普及和运用;第二个层面是网络的普及和应用,利用网上资源提高教学质量;第三个层面是开办现代远程教育,建设并提供大量的网络资源,不断满足社会日益增长的终身教育需求。
我国的教育科研网经过十多年的建设,已初具规模,但是在此基础上的网络资源利用率并不高,很多可以用网络基础设施及现有的硬软件条件实现的教学过程仍然沿
西南交通大学网络教育毕业设计(论文) 第 2 页 用传统的方式,这无疑是对现有网络资源的浪费,追根究底,主要是因为与教学相关的应用系统的开发还比较匮乏。
1.1.2 传统的考试活动
我国近年来在实行教学体制的改革,对检验教师教学效果和学生学习效果的手段也一直在探讨中,但是在现在以及将来的一段时间内,教师出卷——学生答卷模式仍然是大多数学校首选的手段。而且多数情况下还是沿用传统手工处理方式,传统手工1. 每道试题均由教师指定,每次考试只有有限的一两套试卷,机性,这就有可能发生下面两种情况,生泄密,因为这个传递过程要经历好几个环节;术上避免作弊行为的发生,形式种行之有效的方法。
2. 教师一方面要总结、另一方面还要手工出题组织试卷。考试完毕后,最后还要由教师
3.
4.
以充分利用网络资源来共享学校的教学资源。这也是本课题的目的所在。
1.2 开发工具的选择
1.2.1 Delphi 简介
Delphi 是面向对象的可视化编程工具,利用该工具既可以开发系统软件,也可以开发包括数据库软件在内的各种应用程序。Delphi 是全新的可视化编程环境,为我们
西南交通大学网络教育毕业设计(论文) 第 3 页 提供了一种方便、快捷的Windows 应用程序开发工具。它使用了Microsoft Windows 图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language) 、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi 开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作——Delphi 的每一个设计细节,都将带给您一份欣喜。其主要特点有:
1. 测试和维护。
2. 优秀的界面设计功能:Delphi 设计出各种优秀的用户界面。而且,Delphi 极大地简化了界面设计工作。
3. 强大的数据库功能:Delphi 用它们可以快速开发功能强大的数据库应用程序。Delphi Paradox 、AccessFoxpro 、dBase 、Informix 、Oracle 、SQL Server等多种数据库。
4. 支持Internet/Internet开发:版本提供了几个用于开发Internet/InternetWeb 服务器的所有通信服务。
5. 支持ActiveX 控件:Delphi ActiveX 控件的向导。创建的ActiveX Java 、Visual Basic以及PowrBuilder 等。 Delphi 实际上是Pascal 语言有天壤之别。一个Delphi 而这一框架正是应用程序的“骨架”。在骨架上仍可以严格地按照设计运行。您的工作只是在“骨架”中加入(Form),您可以运行它,结果得到一个Windows 窗口的全部性质:可以被放大缩小、移动、最但您却没有编写一行程序。因此,可以说应用程序框架通过,为用户应用程序的开发打下了良好的基础。Delphi 已经为您做好了一切基础工作——程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。
面向对象的程序设计(Object-Oriented Programming,简记为OOP) 是Delphi 诞生的基础。OOP 立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封
西南交通大学网络教育毕业设计(论文) 第 4 页 装”进Windows 编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。而Delphi 是完全面向对象的,这就使得Delphi 成为一种触手可及的促进软件重用的开发工具,从而具有强大的吸引力。
一些早期的具有OOP 性能的程序语言如C++,Pascal,Smalltalk对象的特征,但不能轻松地画出可视化对象,与用户交互能力较差,写大量的代码。Delphi 的程序框架中加入完成功能的代码,其余的都交给Delphi 和结构良好的程序丝毫不必绞尽脑汁,Delphi 它允许在一个具有真正OOP 扩展的可视化编程环境中,使用它的语言。这种革命性的 1.2.2 Access 简介
Access2000数据库管理系统是套件的重要组成部分,是Access 的最新版本,可在Access2000适用于小型商务活动,Access2000不仅是一个数据库,而且它具有,查询,报表和应用程序等。
, 它与一般的数据文件不同,(其中的数据是无结构的)
是一种关系式数据库,关系式数据库由一系列表组成,表又由每一行是一个记录,每一列是一个字段,每个字段有一个字段名,N 个记录组成,一个记录占一行,每一个记录由实体的基本属性的字段组成。表与表之间可以建立关系(或称关联,连接),
以便查询相关联的信息。Access 数据库以文件形式保存,文件的扩展名是MDB 。 Access 2000数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。
表(Table) ——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。
查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能
西南交通大学网络教育毕业设计(论文) 第 5 页 连接若干个表的字段组成新表。
窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。
报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
宏(Macro)——宏相当于DOS 中的批处理,用来自动执行一系列操作。Access 列出了一些常用的操作供用户选择,使用起来十分方便。
模块(Module)——户可以根据自己的需要编写程序。模块使用Visual Basic编程。
与Access 以前的版本比较,Access2000OLE 对象和超级链接,特别是与Internet Web 页面或网络文件,也可以把Web 可以方便地利用各种数据源,包括dBASE, 等。Access 2000增加Access 2000还可以方便地利用FoxPro 数据库、Excel Word 混合使用,打印通用信函或信封。
在安装Access 2000后,在“程序”Microsoft Access项,单击“开始” |“程序”|“Microsoft Access”。启动后会出现一个对话框,对话框中“空数据库”或“数据库向导”选项,如则选择“打开已有数据库”选项,并选择要打开的数据库文 1.2.3 /服务器(Client server )体系结构是当前非常流行的计算机体
在客户机/服务器体系结构中,客户机负责管理用户界面、接收用户数据、处理应用逻辑、生成数据库服务请求,然后将这些请求发送给服务器,并且接收服务器返回的结果,最后再将这些结果按照一定的格式返回给用户。服务器接收客户机的请求,处理这些请求,并把处理结果返回给客户机,这些处理结果包括访问数据库的结果数据和执行状态例如成功或失败。
在典型的C/S数据库应用中,数据的储存管理功能,是由服务器程序独立进行的,
西南交通大学网络教育毕业设计(论文) 第 6 页 并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号不准重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)这背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序可以变的非常“瘦小”,麻烦的事情,都交给了服务器和网络。在C/S体系的下,数据库真正变成了公共、专业化的仓库,受到独立的专门管理。
西南交通大学网络教育毕业设计(论文) 第 7 页
第2章 系统设计
2.1 功能设计
系统的开发, 主要包括后台数据库的建立和维护, 以及前端应用程序的开发两个方面. 前者要求建立起资料一致性、完整性强和资料安全性好的数据库; 用程序具有功能完备、易使用等特点. 经过分析, 我们使用Borland 公司的提供的各种面向对象开发工具, 化对象. 采用Access2000进行后台数据库的设计, 建立了DZJS.mdb 放置2张不同用途的表, 用于存放考生登录信息、题库信息等.
考生通过系统提供注册界面,, 考生输入正确的用户名和密码, 即可登录到考试系统, 件夹, 并分别从各类题库中随机抽取考题, .
在服务器端设置面向教师的功能,在客户端设置面向考生的功能。
1. 维护 对系统中的其他数据库如用户
2. 选题
3. 包括设置考试的相关信息如题目的难易程度等。
1. 认定 考生在进入系统时必须输入考生的相关信息,如用户名、密码。未进行注册的考生不得进入系统参加考试,考生注册后系统自动把此信息录入到用户表的数据库中。
2. 答题 考生经系统确认进入考试环境后系统即在屏幕上显示相应的试卷并提供组件。答题完毕退出时,系统提示考生是否保存次试卷。
3. 自测 学生可以针对自己学习的特点,从试题库选择试题,形成针对性的试卷
西南交通大学网络教育毕业设计(论文) 第 8 页 进行测试,并给出标准答案供考生参考。
2.2 数据库设计
一级考试系统的规模较小, 故只建立一个数据库(DZJS.mdb).在此数据库基础上, 建立考生登录情况表、操作题题库、选择题题库、数据库题库,Word 题题库、在数据库连接方面, 采用了Delphi6.0附带的Borland 数据库引擎ADO. 使用ADO 的ADO 管道连接用MSAccess 设计的后台数据库, 建立一个名为DZJS 的数据源. OLEcontainer 中放入访问数据库的控件, 将其ADOconnction 指向DZJS 系统中主要的数据文件如下:
1. 试题库:用于存放课程的试题,编号、类型、难度、分值、内容、答案和文本形式等字段组成。 2. 考生库 2.3 界面设计
为了验证考生身份,直接到试卷编辑界面。这样的好处是方便简捷。
2.4 数据文件结构
西南交通大学网络教育毕业设计(论文) 第 9 页 2.4.2 学生模板基本表
该表由系统动态产生,主要存储考生的基本信息,包括用户名、用户密码等。如表2-2
表2-2 学生模板基本表
西南交通大学网络教育毕业设计(论文) 第 10 页
第3章 系统实现
3.1 功能模块
1.注册模块. 注册账号和密码自动存入数据库中。
2.登录模块 用户验证即正确输入用户名和密码如果输入的数据与数据库中数据一直,系统将提供登录成功。
3.数据库操作模块. 自动从数据库题题库中抽取题目, 件、编辑等一系列操作。
4.Word 字表处理模块. 从Word 题题库中抽取题目, 使用Word, 让考生在Word 环境中完成操作。
3.2 注册功能的实现
var
ID,MA :string ; s : string; begin
else
'); showmessage('请输入您的密码!'); exit; end;
if trim(edit2.text) trim(edit3.text) then begin
showmessage('密码和确认密码不一致!');
西南交通大学网络教育毕业设计(论文) 第 11 页 exit; end; try
s:='select * from use where id ='+''''+ Trim(edit1.text)+'''' ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(s); ADOQuery1.Open; except end;
if not(ADOQuery1.IsEmpty) then begin
showmessage('该帐号已经存在!') end else begin ID:=edit1.Text; MA:=edit2.Text;
into
'); end;
3.3
ID,MA :string ; s : string; begin
if trim(edit1.Text) '' then ID := Trim(Edit1.Text) else
西南交通大学网络教育毕业设计(论文) 第 12 页 showmessage('请输入您的帐号!'); if trim(edit2.text) '' then MA := Trim(edit2.text) else begin
showmessage('请输入您的密码!'); exit; end; try
s:='select * from use where id='+''''+ Trim(edit1.text)+'''' ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(s); ADOQuery1.Open; except end;
if ADOQuery1.IsEmpty then begin
showmessage('') end else begin
then
form1.Hide; end else begin
showmessage('您输入的密码不正确!') end; end;
西南交通大学网络教育毕业设计(论文) 第 13 页
3.4 数据库功能的实现
客户端的应用程序要访问服务器端的数据库,例如在进行考生认定时要访问用户表;在进入答题界面时要访问试题库。
系统采用ADOconnection 实现与数据库的直接连接,即可以完全由相关的数据连接组件实现连接而无需另外的支撑程序。
方法如下:
1. 择ADOconnection 控件,双击此控件出现如下图3-1、图3-2所示
图 3-1
图 3-2
2. 配置Object connection 的属性为true ,loginsprompt 的属性为false 。
3. 实现查询功能
3.5
OLE 自动化:
OLE 自动化是一种为WINDOWS 设计的交互进程通信机制,它让一个应用程序驱动或自动完成另一个应用程序,如在C++中创建EXCEL 中的表格等。它克服了链接和嵌套中存在的缺点,即无法用编程手段对对象进行控制。实现了对OLE 组件的编程式控制。
OLE 自动化包括两部分应用程序:一个是把OLE 组件暴露出来使之可控制的应用程序,叫做OLE 自动化服务器;另一个是利用OLE 服务器提供的组件,对该对象
西南交通大学网络教育毕业设计(论文) 第 14 页 进行控制操作的应用程序,叫做OLE 客户。
每个OLE 对象都有属性(Property )和方法(Method ),OLE 自动化服务器的编写者决定哪些属性和方法将通过OLE 自动化暴露出来,而私有对象对于外部用户来说是不可见的。OLE 客户编程人员只需知道包含对象的应用程序的名称、对象的类的名称和想要使用的属性和方法的名称,就可以使用自动化服务器了。
OLE 自动化服务器有两种创建方法:即进程内服务器和进程外服务器。进程内服务器是与客户应用程序在同一进程内运行,进程内服务器一般以DLL 存在;进程外服务器则作为一个单独的进程,EXE 文件的形式存在。
此系统是在Delphi 中通过Ole 的方法控制MS Word 于System 面板上的Olecontainer OLE 用户区域,用于实现Delphi Delphi 与Word 对象的接口。用此方法是最简单的Ole 文档调用,只需要调用TOleContainer 的Run 方法就可以将word Word 文档与Delphi 程序是一个整体(从界面上看)Delphi 控制word word 的目的。
在应用程序的实现过程中, , 这必然要调用相应的数据组件. 于是, . 这可能会造成组件的混淆. 在Delphi6.0中提供的好的解决这个问题, 将所有的数据组件都放到OLEcontainer 中体需要访问数据库时, 只要在其单元文件中引用OLEcontainer 件, 就可以直接访问到数据库中的数据了. 本应用程序中3-3所示
图3-3
下面是其实现程序:
procedure scdsBLOBDataBeforePost(DataSet: TDataSet);
西南交通大学网络教育毕业设计(论文) 第 15 页 procedure scdsBLOBDatBeforePost(DataSet: TDataSet);
private
function GetMaxID : Integer;
{ Private declarations }
public
{ Public declarations }
end;
var
dmolecontainer: Tdmolecontainer;
implementation
//uses Unit2, Unit1, Unit4, Unit7, Unit8, Unit9, Unit10, Unit3;
{$R *.dfm}
function Tdmolecontainer.GetMaxID: Integer;
begin
try
scdsMaxID.Open;
try
except
on Exception do
Result := 1;
end;
finally
end;
Tdmolecontainer.scdsBLOBDataBeforePost(DataSet: TDataSet);
begin
if (VarIsNull(DataSet.FieldByName('ID').Value)) then
DataSet.FieldByName('ID').Value := GetMaxID;
end;
procedure
西南交通大学网络教育毕业设计(论文) 第 16 页 Tdmolecontainer.scdsBLOBDatBeforePost(DataSet: TDataSet);
begin
if (VarIsNull(DataSet.FieldByName('ID').Value)) then
DataSet.FieldByName('ID').Value := GetMaxID;
end;
end..
西南交通大学网络教育毕业设计(论文) 第 17 页
第4章 考试系统的流程介绍
考试系统首页是登录界面,打开Project2即可看到如图4-1所示的考试登录书面。但是考生必须先注册得到系统验证后才能进行登录工作如图4-2,当应试学生进入到考试首页,点击“Go”后系统会先要求你输入[用户名]和[密码]页;此后,系统就直接进入考前设置界面如图4-3与试题的难易程度,以进行考前的试卷设置工作,待上述核对正确后,入本次考试内容。考试内容由老师订做,系统即会将所点选的内容合并成一份试卷,”按钮,此时,系统会提示你“试卷完成” 如图4-44-5所示。
图4-1 登录界面
图4-2 注册界面
图4-3 考前设置界面
西南交通大学网络教育毕业设计(论文) 第 18 页
图4-4 试卷完成界面
图4-5
西南交通大学网络教育毕业设计(论文) 第 19 页
第5章 组卷策略
在题库系统建设中,试题质量控制与参数设置、组卷策略是最重要的两个环节;题库建成后,我们需要输入一些查询参数,系统将根据这些参数抽出最适合要求的试题,组成能够实际使用的试卷,我们称之为组卷策略。能够直接操作的试题属性项,然后根据这些属性项,因此,完整的组卷策略应该由三部份组成:试题属性项定义、变换算法的说明。根据组卷方式和评价的类型不同,智
便可以组出一份满意的试卷,
设置题型比例表,示例值见表
1. 试卷难度的选择:在平均难度计算模式表中随机取一模式值,得出这份试卷的试题的难度程度,将此难度程度变换成最终组卷参数表中的难度级别参数。
n :难度的等级数,这里为5;Nn :表示各难度级别,n 的取值范围是1~难度的
西南交通大学网络教育毕业设计(论文) 第 20 页 等级数;m :题型比例表中试题的题型数;Mm :某一类题型,m 的取值范围为1~题型比例表中试题的题型数;num :某类题型所占的题数;j 、tmp :中间变量;算法说明:
j=m
SortMn(num) (将题型按题数多少从多到少排列)
WHILE j>0 do
BEGIN
IF num>n THEN
IF Nn>Sn THEN Extract(n, Sn) (此类题型抽n 道题,第n Sn (Sn 为题型分数比),若Nn
Nn=Nn-Sn
num=num-n
Else
WriteLeftMn(num) SortLeftMn(num)
End if
SortMn(num)
j=j-1
END
2.
形成最终的组卷参数表,最终抽取试题的组卷条件都是
西南交通大学网络教育毕业设计(论文) 第 21 页
结 束 语
本系统使用Delphi6.0开发前台应用程序, 采用Access 进行后台数据库设计, 实现了一个应用于数字电路技术基础教学的考试系统. 由于使用结构化设计方法, 系统功能易于扩充和更新, 有良好的易维护性. 在数字电路技术基础课程教学实践中, 作为学生课后练习和考前模拟训练的辅助学习工具, 取得良好效果.
在设计本系统之初,我的计算机编程知识几乎为空白,上课时学到的一些教学语言外,我对一些新的、实用的、么接触。
及Access 的知识进行了强化补习,了从最初的数据库设计到最后Delphi 一步熟悉了Pascal 和MS SQL Server。
在这两个多月中,即系统的需求分析、总体设计、详细设计、分阶段地完成各设计任务。接着,根据设计任务书的要求,对自己需要完成的部分进行了系统的规划,根据需求分析的Delphi 作为界面的设计工具,对系统进 用了大约3周的时间来完成。在设计基本完成之后,周的时间改进系统的性能和技术文档的编写整理,最后完成毕业设计。
我既感受到了面对自己无法解决的问题时的苦恼,也体
1. 一个详细周密的计划对于完成一项任务的重要性。实际上,我对这次作业着手较早。但由于刚开始时间较松,在学习时就想到哪学到哪,没有认真计划。到后来发现同学们的进度都已经赶上甚至超过我,这才又着急起来,赶紧找经验丰富的同学出主意,制定出详细的计划,这才按时完成了任务。
2. 学习一门程序语言,实践是最好的方法。我对Delphi 和Access 的学习实际上
西南交通大学网络教育毕业设计(论文) 第 22 页 分为两个阶段。前一阶段为学习语言而学习语言。在这一阶段中,我总有隔雾观花的感觉,学得似是而非。后一阶段边实践边学习,很多前一阶段不甚了了的问题得到迎刃而解。
3. 要学会运用互联网工具。互联网是一个具有大量资源的信息宝库,在这次毕业设计中如果没有互联网也许我多花一倍的时间也完不成任务。所以一定要会并善于运用互联网工具。
完成这次设计后回过头来看,我的这项作业完成得并不完美。和改进的地方。
首先,是系统的功能还太单一,考虑进去,也没能实现。比如网络在线功能。
其次,是设计过程中时间分配不合理,动。
三是知识积累还不够,这样学到的知识毕竟不牢,而且用起来也不灵活。
总之,经过这次毕业设计,密的计划,要耐心、要善于运用已有的资源来解决;要勇于实践,要相信自己有解决问题的能力和勇气。
Delphi 和Access 有了一定的认识,最重要破除了以前对软件开发工作望而生畏的神秘感,这使我有信心和勇气在以后的生
西南交通大学网络教育毕业设计(论文) 第 23 页
致 谢
通过这次毕业设计,论文作者基本上掌握了开发一个考试题库系统的基本思路和实施步骤。在设计和论文写作的整个过程中,指导教师XXX 教授在各方面都给予了全面的指导和帮助。导师的精深渊博知识、求实创新、勤奋严谨的治学风范、工作作风时刻熏陶着我;导师的因材施教、印象,这将使我受益终身。
在校期间,使
感谢西南交通大学计算机与通信工程学院、
特别感谢我的姐姐XXX
西南交通大学网络教育毕业设计(论文) 第 24 页
参考文献
1 清宏计算机工作室. 《Delphi 编程技巧(网络与数据库篇)》,北京: 机械工业出版
社 , 1999.2
2 吕伟臣. 《Delphi 入门与提高》,北京: 清华大学出版社, 2000.4
3 朱振元. 《Delphi 面向对象程序设计及其应用》 ,西安: 社, 2003.1
4 电子工业出版社. 《Access2000开发实例全书》,北京:5 (Carter ,J. )《. 数据库设计与编程实例详解》,北京: , 2001.8 6 王海滨. 《Delphi6.0学习教程》,北京:
7 肖永明,张子江. 《Delphi6.0, 2000.10 8 萨师煊,王珊. , 2003.12 9 张海藩. 《软件工程导论(第四版)》, 2003.12 10 陶宏才. 《数据库原理及设计》, 2004.2
11 刘瑞新, 汪远征, 李凤华. 《Delphi , 北京:机械工业出版社出版 12 左美云, 邝孔武. 《信息系统的开发与管理教程》,北京:清华大学出版社,2001.7 13 朱振元. 《Delphi , 西安:西安电子科技大学出版社,
2000.5
14 《计算机应用》,1998.6
西南交通大学网络教育毕业设计(论文) 第 25 页
附 录
抽题源代码清单部分:
str:=edit5.Text;
i:=strtoint(str);
str:=edit2.text;
if str'' then
begin
sFileName := ExtractFilePath(Application.ExeName) + '标题 sFileName := sFileName + '.' +'doc';
opendialog1.FileName:=sfilename;
ofilename:=opendialog1.FileName;
oreadonly
itemindex := 1;
分');
j:=strtoint(str);
score1:=(j*i) div 100;
score:=0;
j:=0;
k:=1;
dmolecontainer.scds1.Active:=false;
西南交通大学网络教育毕业设计(论文) 第 26 页
if (shu=false) and (mo=false) then
begin
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="易"' ;
end;
if (shu=true) and (mo=false) then
begin
dmolecontainer.scds1.CommandText:='select * from SHITI where " and DIFLEVEL="易" and subject="模拟"' ;
end;
if (shu=false) and (mo=true) then
begin
dmolecontainer.scds1.CommandText:='select * where TYPE_1="选择" and DIFLEVEL="易" and subject="数字"' ;
end;
dmolecontainer.scds1.Active:=true;
d:=0;
begin
randomize;
i:=j-dmolecontainer.scds1.RecordCount;
j:=i;
dmolecontainer.scds1.First;
end;
dmolecontainer.scds1.MoveBy(i);
n:=0;
m:=1;
while (m
西南交通大学网络教育毕业设计(论文) 第 27 页
begin
if a[m]=dmolecontainer.scds1.Fields.Fields[0].AsInteger then
n:=1
else m:=m+1;
end;
if n=0 then
begin
a[k]:=dmolecontainer.scds1.Fields.Fields[0].AsInteger;
k:=k+1;
if fileexists('c:\temp.doc') then
deletefile('c:\temp.doc') ;
if pd=true then
begin
数字' then
begin
d:=d+1;
end
else
* from SHITI where TYPE_1="易" and subject="模拟"' ;
dmolecontainer.scds1.Active:=true;
shu:=true;
pd:=false;
j:=0;
d:=k-d-1;
end;
西南交通大学网络教育毕业设计(论文) 第 28 页
if monis>=moni then
begin
dmolecontainer.scds1.Active:=false;
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="易" and subject="数字"' ;
dmolecontainer.scds1.Active:=true;
mo:=true;
pd:=false;
j:=0;
end ;
end
else
d:=d+1;
ofilename:=opendialog2.FileName;
oreadonly
itemindex := 1;
savechanges := wddonotsavechanges;
originalformat := unassigned;
routedocument :=unassigned;
worddocument1.Close(savechanges,originalformat,routedocument);
worddocument2.Sentences.Last.Paste;
worddocument2.Range.InsertAfter(' '+#13);
end;
西南交通大学网络教育毕业设计(论文) 第 29 页
end;
str:=edit2.text;
j:=strtoint(str);
score1:=j-score;
score:=0;
j:=0;
k:=1;
dmolecontainer.scds1.Active:=false;
if (shu=false) and (mo=false) then
dmolecontainer.scds1.CommandText:='select * from SHITI 选择" and DIFLEVEL="难"' ;
if (shu=true) and (mo=false) then
dmolecontainer.scds1.CommandText:='select * TYPE_1="选择" and DIFLEVEL="难" and subject="模拟"' ;
if (shu=false) and (mo=true) then
from SHITI where TYPE_1="选择" and DIFLEVEL="难" and subject=" d:=0;
begin
begin
i:=j-dmolecontainer.scds1.RecordCount;
j:=i;
dmolecontainer.scds1.First;
end;
dmolecontainer.scds1.MoveBy(i);
n:=0;
m:=1;
西南交通大学网络教育毕业设计(论文) 第 30 页
while (m
begin
if a[m]=dmolecontainer.scds1.Fields.Fields[0].AsInteger then
n:=1
else m:=m+1;
end;
if n=0 then
begin
a[k]:=dmolecontainer.scds1.Fields.Fields[0].AsInteger;
k:=k+1;
if fileexists('c:\temp.doc') then
deletefile('c:\temp.doc') ;
if pd=true then
begin
数字' then
begin
d:=d+1;
end
else
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="难" and subject="模拟"' ;
dmolecontainer.scds1.Active:=true;
shu:=true;
pd:=false;
j:=0;
d:=k-d-1;
西南交通大学网络教育毕业设计(论文) 第 31 页
end;
if monis>=moni then
begin
dmolecontainer.scds1.Active:=false;
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="难" and subject="数字"' ;
dmolecontainer.scds1.Active:=true;
mo:=true;
pd:=false;
j:=0;
end ;
end
else
d:=d+1;
ofilename:=opendialog2.FileName;
oreadonly
itemindex := 1;
worddocument1.Range.Copy;
savechanges := wddonotsavechanges;
originalformat := unassigned;
routedocument :=unassigned;
worddocument1.Close(savechanges,originalformat,routedocument);
worddocument2.Sentences.Last.Paste;
worddocument2.Range.InsertAfter(' '+#13);
西南交通大学网络教育毕业设计(论文) 第 32 页
end;
end;
end;
{ 以上抽取选择题目 }
{ worddocument2.Save; }
wordapplication1.visible := true;
{ worddocument2.SaveAs(ofilename,template);}
{begin
savechanges := wdsavechanges;
originalformat := unassigned;
routedocument := unassigned;
try
wordapplication1.disconnect;
except
on e: exception do
begin
end;
end;
end; }
试卷完成');
ofilename:=savedialog1.FileName;
worddocument2.SaveAs(ofilename,template);
end;}
end;
procedure TForm2.SpeedButton5Click(Sender: TObject);
begin
西南交通大学网络教育毕业设计(论文) 第 33 页
form1.Show;
form2.Hide;
end;
procedure TForm2.Edit2Change(Sender: TObject);
begin
end;
end.
备注:抽取分析题和计算题的源代码部分略掉。
题
专 学 姓
西 南 交 通 大 学
网 络 教 育 学 院
年 月 日
院系 西南交通大学网络教育学院 专 业 计算机科学与技术
年级 姓 名
学习中心指导教师
题目 考试题库系统的设计与实现
评
评 阅
成 绩
答辩委员会主任 ()
年 月 日
毕 业 设 计 任 务 书
班 级 xxx 学生姓名 xxx 学 号 xxxxxxx
开题日期: 年 月 日 完成日期: 年 月 日
题 目 考试题库系统的设计与实现
题目类型:工程设计 √ 技术专题研究 理论研究 软硬件产品开发
一、 设计任务及要求
方面 。
够正常使用
二、 应完成的硬件或软件实验
五、 要求学生搜集的技术资料(指出搜集资料的技术领域)
1.软件工程方法资料。
六、 设计进度安排
第一部分 熟练课题,收集、整理课题相关资料 ( 1 周)
第二部分 系统需求分析与总体设计 ( 2 周) 第三部分 熟悉系统实现平台:熟练掌握delphi6.0及Access ( 2 周)
第四部分 详细设计、编码、测试 ( 3 第五部分 毕业设计论文文档编写整理 ( 2 评阅或答辩 (
年 月 日
学院审查意见:
审 批 人: 年 月 日
诚信承诺
一、 本设计是本人独立完成;
二、 本设计没有任何抄袭行为;
三、若有不实,一经查出,请答辩委员会取消
本人答辩(评阅)资格。
月 日
目 录
摘 要 ································································································································· I
第1章 前 言···························································································· 1
1.1 课题的来源和目的 ······························································································· 1
1.1.1 教育信息化的趋势 ·········································································· 1
1.1.2 传统的考试活动 ············································································· 2
1.2 开发工具的选择 ······················································································· 2
1.2.1 Delphi 简介 ·············································································· 2
1.2.2 Access 简介 ················································································ 4
1.2.3 C/S 简介 ······················································································ 5
第2章 系统设计 ··································································· 7
2.1 功能设计 ································································································ 7
2.2 数据库设计 ························································································· 8
2.3 界面设计 ··························································································· 8
2.4 数据文件结构 ····················································································· 8
2.4.1 考试模板基本表 ················································································ 8
2.4.2 学生模板基本表 ······················································································ 9
第3章 系统实现 ······································································ 9
3.1 功能模块 ······························································································· 10
3.2 ································································································ 10
3.3 ··································································································· 11
3.4 ······························································································· 13
3.5 字表处理功能的实现·················································································· 13
考试系统的流程介绍 ································································· 17
第 组卷策略 ···················································································· 19 结 束 语 ··································································································· 21 致 谢 ··································································································· 23 参考文献 ··································································································· 24 附 录 ··································································································· 25
西南交通大学网络教育毕业设计(论文) I
摘 要
目前考试系统越来越被人们所重视,它可以为院系教务部门的决策制定提供强有力的数据支持。为此,作者开发了考试题库系统,以现代计算机技术为工具来管理学生的考试进程,方便教师和管理考试人员的工作。
本系统探讨《数字电子技术基础》课程无纸化考试系统的设计方法, 需要可对数据库或数据表中的信息进行备份和恢复,户造成不必要的麻烦。
了Delphi6.0开发前台应用程序, 采用它是一套完整的基于C/S考试系统。文字录入、数据库操作、Word 字表处理等主要模块。, 可应用于数字电路技术基础的教学中。
关键词:功能模块,无纸化考试
西南交通大学网络教育毕业设计(论文) 第 1 页
第1章 前 言
本文介绍的无纸化模拟测试系统的实现方式,并采用面向对象的开发工具Delphi 来实现系统的功能,系统的主要特点如下:
1. 组件接受答题信息,随试卷中的当前试题的变化而改变。
2. 系统提供了“题库保存”功能,提供“题库打印”功能。
3. 系统具有“考前设置”“考生认定”参考答案”等端,功能完善,可靠性和执行效率较高。
1.1 课题的来源和目的
1.1.1 教育信息化的趋势
也引发了一场知识和信息的革命。自2090年代以来,国际教育界出现了以信息技术(IT
包
《面向21世纪教育振兴行动计划》,教育部将按照统一规划的原则,分三个层面推进教育信息化:第一个层面是以多媒体计算机技术为核心的教育技术在学校的普及和运用;第二个层面是网络的普及和应用,利用网上资源提高教学质量;第三个层面是开办现代远程教育,建设并提供大量的网络资源,不断满足社会日益增长的终身教育需求。
我国的教育科研网经过十多年的建设,已初具规模,但是在此基础上的网络资源利用率并不高,很多可以用网络基础设施及现有的硬软件条件实现的教学过程仍然沿
西南交通大学网络教育毕业设计(论文) 第 2 页 用传统的方式,这无疑是对现有网络资源的浪费,追根究底,主要是因为与教学相关的应用系统的开发还比较匮乏。
1.1.2 传统的考试活动
我国近年来在实行教学体制的改革,对检验教师教学效果和学生学习效果的手段也一直在探讨中,但是在现在以及将来的一段时间内,教师出卷——学生答卷模式仍然是大多数学校首选的手段。而且多数情况下还是沿用传统手工处理方式,传统手工1. 每道试题均由教师指定,每次考试只有有限的一两套试卷,机性,这就有可能发生下面两种情况,生泄密,因为这个传递过程要经历好几个环节;术上避免作弊行为的发生,形式种行之有效的方法。
2. 教师一方面要总结、另一方面还要手工出题组织试卷。考试完毕后,最后还要由教师
3.
4.
以充分利用网络资源来共享学校的教学资源。这也是本课题的目的所在。
1.2 开发工具的选择
1.2.1 Delphi 简介
Delphi 是面向对象的可视化编程工具,利用该工具既可以开发系统软件,也可以开发包括数据库软件在内的各种应用程序。Delphi 是全新的可视化编程环境,为我们
西南交通大学网络教育毕业设计(论文) 第 3 页 提供了一种方便、快捷的Windows 应用程序开发工具。它使用了Microsoft Windows 图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language) 、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi 开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作——Delphi 的每一个设计细节,都将带给您一份欣喜。其主要特点有:
1. 测试和维护。
2. 优秀的界面设计功能:Delphi 设计出各种优秀的用户界面。而且,Delphi 极大地简化了界面设计工作。
3. 强大的数据库功能:Delphi 用它们可以快速开发功能强大的数据库应用程序。Delphi Paradox 、AccessFoxpro 、dBase 、Informix 、Oracle 、SQL Server等多种数据库。
4. 支持Internet/Internet开发:版本提供了几个用于开发Internet/InternetWeb 服务器的所有通信服务。
5. 支持ActiveX 控件:Delphi ActiveX 控件的向导。创建的ActiveX Java 、Visual Basic以及PowrBuilder 等。 Delphi 实际上是Pascal 语言有天壤之别。一个Delphi 而这一框架正是应用程序的“骨架”。在骨架上仍可以严格地按照设计运行。您的工作只是在“骨架”中加入(Form),您可以运行它,结果得到一个Windows 窗口的全部性质:可以被放大缩小、移动、最但您却没有编写一行程序。因此,可以说应用程序框架通过,为用户应用程序的开发打下了良好的基础。Delphi 已经为您做好了一切基础工作——程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。
面向对象的程序设计(Object-Oriented Programming,简记为OOP) 是Delphi 诞生的基础。OOP 立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封
西南交通大学网络教育毕业设计(论文) 第 4 页 装”进Windows 编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。而Delphi 是完全面向对象的,这就使得Delphi 成为一种触手可及的促进软件重用的开发工具,从而具有强大的吸引力。
一些早期的具有OOP 性能的程序语言如C++,Pascal,Smalltalk对象的特征,但不能轻松地画出可视化对象,与用户交互能力较差,写大量的代码。Delphi 的程序框架中加入完成功能的代码,其余的都交给Delphi 和结构良好的程序丝毫不必绞尽脑汁,Delphi 它允许在一个具有真正OOP 扩展的可视化编程环境中,使用它的语言。这种革命性的 1.2.2 Access 简介
Access2000数据库管理系统是套件的重要组成部分,是Access 的最新版本,可在Access2000适用于小型商务活动,Access2000不仅是一个数据库,而且它具有,查询,报表和应用程序等。
, 它与一般的数据文件不同,(其中的数据是无结构的)
是一种关系式数据库,关系式数据库由一系列表组成,表又由每一行是一个记录,每一列是一个字段,每个字段有一个字段名,N 个记录组成,一个记录占一行,每一个记录由实体的基本属性的字段组成。表与表之间可以建立关系(或称关联,连接),
以便查询相关联的信息。Access 数据库以文件形式保存,文件的扩展名是MDB 。 Access 2000数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。
表(Table) ——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。
查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能
西南交通大学网络教育毕业设计(论文) 第 5 页 连接若干个表的字段组成新表。
窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。
报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
宏(Macro)——宏相当于DOS 中的批处理,用来自动执行一系列操作。Access 列出了一些常用的操作供用户选择,使用起来十分方便。
模块(Module)——户可以根据自己的需要编写程序。模块使用Visual Basic编程。
与Access 以前的版本比较,Access2000OLE 对象和超级链接,特别是与Internet Web 页面或网络文件,也可以把Web 可以方便地利用各种数据源,包括dBASE, 等。Access 2000增加Access 2000还可以方便地利用FoxPro 数据库、Excel Word 混合使用,打印通用信函或信封。
在安装Access 2000后,在“程序”Microsoft Access项,单击“开始” |“程序”|“Microsoft Access”。启动后会出现一个对话框,对话框中“空数据库”或“数据库向导”选项,如则选择“打开已有数据库”选项,并选择要打开的数据库文 1.2.3 /服务器(Client server )体系结构是当前非常流行的计算机体
在客户机/服务器体系结构中,客户机负责管理用户界面、接收用户数据、处理应用逻辑、生成数据库服务请求,然后将这些请求发送给服务器,并且接收服务器返回的结果,最后再将这些结果按照一定的格式返回给用户。服务器接收客户机的请求,处理这些请求,并把处理结果返回给客户机,这些处理结果包括访问数据库的结果数据和执行状态例如成功或失败。
在典型的C/S数据库应用中,数据的储存管理功能,是由服务器程序独立进行的,
西南交通大学网络教育毕业设计(论文) 第 6 页 并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号不准重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)这背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序可以变的非常“瘦小”,麻烦的事情,都交给了服务器和网络。在C/S体系的下,数据库真正变成了公共、专业化的仓库,受到独立的专门管理。
西南交通大学网络教育毕业设计(论文) 第 7 页
第2章 系统设计
2.1 功能设计
系统的开发, 主要包括后台数据库的建立和维护, 以及前端应用程序的开发两个方面. 前者要求建立起资料一致性、完整性强和资料安全性好的数据库; 用程序具有功能完备、易使用等特点. 经过分析, 我们使用Borland 公司的提供的各种面向对象开发工具, 化对象. 采用Access2000进行后台数据库的设计, 建立了DZJS.mdb 放置2张不同用途的表, 用于存放考生登录信息、题库信息等.
考生通过系统提供注册界面,, 考生输入正确的用户名和密码, 即可登录到考试系统, 件夹, 并分别从各类题库中随机抽取考题, .
在服务器端设置面向教师的功能,在客户端设置面向考生的功能。
1. 维护 对系统中的其他数据库如用户
2. 选题
3. 包括设置考试的相关信息如题目的难易程度等。
1. 认定 考生在进入系统时必须输入考生的相关信息,如用户名、密码。未进行注册的考生不得进入系统参加考试,考生注册后系统自动把此信息录入到用户表的数据库中。
2. 答题 考生经系统确认进入考试环境后系统即在屏幕上显示相应的试卷并提供组件。答题完毕退出时,系统提示考生是否保存次试卷。
3. 自测 学生可以针对自己学习的特点,从试题库选择试题,形成针对性的试卷
西南交通大学网络教育毕业设计(论文) 第 8 页 进行测试,并给出标准答案供考生参考。
2.2 数据库设计
一级考试系统的规模较小, 故只建立一个数据库(DZJS.mdb).在此数据库基础上, 建立考生登录情况表、操作题题库、选择题题库、数据库题库,Word 题题库、在数据库连接方面, 采用了Delphi6.0附带的Borland 数据库引擎ADO. 使用ADO 的ADO 管道连接用MSAccess 设计的后台数据库, 建立一个名为DZJS 的数据源. OLEcontainer 中放入访问数据库的控件, 将其ADOconnction 指向DZJS 系统中主要的数据文件如下:
1. 试题库:用于存放课程的试题,编号、类型、难度、分值、内容、答案和文本形式等字段组成。 2. 考生库 2.3 界面设计
为了验证考生身份,直接到试卷编辑界面。这样的好处是方便简捷。
2.4 数据文件结构
西南交通大学网络教育毕业设计(论文) 第 9 页 2.4.2 学生模板基本表
该表由系统动态产生,主要存储考生的基本信息,包括用户名、用户密码等。如表2-2
表2-2 学生模板基本表
西南交通大学网络教育毕业设计(论文) 第 10 页
第3章 系统实现
3.1 功能模块
1.注册模块. 注册账号和密码自动存入数据库中。
2.登录模块 用户验证即正确输入用户名和密码如果输入的数据与数据库中数据一直,系统将提供登录成功。
3.数据库操作模块. 自动从数据库题题库中抽取题目, 件、编辑等一系列操作。
4.Word 字表处理模块. 从Word 题题库中抽取题目, 使用Word, 让考生在Word 环境中完成操作。
3.2 注册功能的实现
var
ID,MA :string ; s : string; begin
else
'); showmessage('请输入您的密码!'); exit; end;
if trim(edit2.text) trim(edit3.text) then begin
showmessage('密码和确认密码不一致!');
西南交通大学网络教育毕业设计(论文) 第 11 页 exit; end; try
s:='select * from use where id ='+''''+ Trim(edit1.text)+'''' ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(s); ADOQuery1.Open; except end;
if not(ADOQuery1.IsEmpty) then begin
showmessage('该帐号已经存在!') end else begin ID:=edit1.Text; MA:=edit2.Text;
into
'); end;
3.3
ID,MA :string ; s : string; begin
if trim(edit1.Text) '' then ID := Trim(Edit1.Text) else
西南交通大学网络教育毕业设计(论文) 第 12 页 showmessage('请输入您的帐号!'); if trim(edit2.text) '' then MA := Trim(edit2.text) else begin
showmessage('请输入您的密码!'); exit; end; try
s:='select * from use where id='+''''+ Trim(edit1.text)+'''' ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(s); ADOQuery1.Open; except end;
if ADOQuery1.IsEmpty then begin
showmessage('') end else begin
then
form1.Hide; end else begin
showmessage('您输入的密码不正确!') end; end;
西南交通大学网络教育毕业设计(论文) 第 13 页
3.4 数据库功能的实现
客户端的应用程序要访问服务器端的数据库,例如在进行考生认定时要访问用户表;在进入答题界面时要访问试题库。
系统采用ADOconnection 实现与数据库的直接连接,即可以完全由相关的数据连接组件实现连接而无需另外的支撑程序。
方法如下:
1. 择ADOconnection 控件,双击此控件出现如下图3-1、图3-2所示
图 3-1
图 3-2
2. 配置Object connection 的属性为true ,loginsprompt 的属性为false 。
3. 实现查询功能
3.5
OLE 自动化:
OLE 自动化是一种为WINDOWS 设计的交互进程通信机制,它让一个应用程序驱动或自动完成另一个应用程序,如在C++中创建EXCEL 中的表格等。它克服了链接和嵌套中存在的缺点,即无法用编程手段对对象进行控制。实现了对OLE 组件的编程式控制。
OLE 自动化包括两部分应用程序:一个是把OLE 组件暴露出来使之可控制的应用程序,叫做OLE 自动化服务器;另一个是利用OLE 服务器提供的组件,对该对象
西南交通大学网络教育毕业设计(论文) 第 14 页 进行控制操作的应用程序,叫做OLE 客户。
每个OLE 对象都有属性(Property )和方法(Method ),OLE 自动化服务器的编写者决定哪些属性和方法将通过OLE 自动化暴露出来,而私有对象对于外部用户来说是不可见的。OLE 客户编程人员只需知道包含对象的应用程序的名称、对象的类的名称和想要使用的属性和方法的名称,就可以使用自动化服务器了。
OLE 自动化服务器有两种创建方法:即进程内服务器和进程外服务器。进程内服务器是与客户应用程序在同一进程内运行,进程内服务器一般以DLL 存在;进程外服务器则作为一个单独的进程,EXE 文件的形式存在。
此系统是在Delphi 中通过Ole 的方法控制MS Word 于System 面板上的Olecontainer OLE 用户区域,用于实现Delphi Delphi 与Word 对象的接口。用此方法是最简单的Ole 文档调用,只需要调用TOleContainer 的Run 方法就可以将word Word 文档与Delphi 程序是一个整体(从界面上看)Delphi 控制word word 的目的。
在应用程序的实现过程中, , 这必然要调用相应的数据组件. 于是, . 这可能会造成组件的混淆. 在Delphi6.0中提供的好的解决这个问题, 将所有的数据组件都放到OLEcontainer 中体需要访问数据库时, 只要在其单元文件中引用OLEcontainer 件, 就可以直接访问到数据库中的数据了. 本应用程序中3-3所示
图3-3
下面是其实现程序:
procedure scdsBLOBDataBeforePost(DataSet: TDataSet);
西南交通大学网络教育毕业设计(论文) 第 15 页 procedure scdsBLOBDatBeforePost(DataSet: TDataSet);
private
function GetMaxID : Integer;
{ Private declarations }
public
{ Public declarations }
end;
var
dmolecontainer: Tdmolecontainer;
implementation
//uses Unit2, Unit1, Unit4, Unit7, Unit8, Unit9, Unit10, Unit3;
{$R *.dfm}
function Tdmolecontainer.GetMaxID: Integer;
begin
try
scdsMaxID.Open;
try
except
on Exception do
Result := 1;
end;
finally
end;
Tdmolecontainer.scdsBLOBDataBeforePost(DataSet: TDataSet);
begin
if (VarIsNull(DataSet.FieldByName('ID').Value)) then
DataSet.FieldByName('ID').Value := GetMaxID;
end;
procedure
西南交通大学网络教育毕业设计(论文) 第 16 页 Tdmolecontainer.scdsBLOBDatBeforePost(DataSet: TDataSet);
begin
if (VarIsNull(DataSet.FieldByName('ID').Value)) then
DataSet.FieldByName('ID').Value := GetMaxID;
end;
end..
西南交通大学网络教育毕业设计(论文) 第 17 页
第4章 考试系统的流程介绍
考试系统首页是登录界面,打开Project2即可看到如图4-1所示的考试登录书面。但是考生必须先注册得到系统验证后才能进行登录工作如图4-2,当应试学生进入到考试首页,点击“Go”后系统会先要求你输入[用户名]和[密码]页;此后,系统就直接进入考前设置界面如图4-3与试题的难易程度,以进行考前的试卷设置工作,待上述核对正确后,入本次考试内容。考试内容由老师订做,系统即会将所点选的内容合并成一份试卷,”按钮,此时,系统会提示你“试卷完成” 如图4-44-5所示。
图4-1 登录界面
图4-2 注册界面
图4-3 考前设置界面
西南交通大学网络教育毕业设计(论文) 第 18 页
图4-4 试卷完成界面
图4-5
西南交通大学网络教育毕业设计(论文) 第 19 页
第5章 组卷策略
在题库系统建设中,试题质量控制与参数设置、组卷策略是最重要的两个环节;题库建成后,我们需要输入一些查询参数,系统将根据这些参数抽出最适合要求的试题,组成能够实际使用的试卷,我们称之为组卷策略。能够直接操作的试题属性项,然后根据这些属性项,因此,完整的组卷策略应该由三部份组成:试题属性项定义、变换算法的说明。根据组卷方式和评价的类型不同,智
便可以组出一份满意的试卷,
设置题型比例表,示例值见表
1. 试卷难度的选择:在平均难度计算模式表中随机取一模式值,得出这份试卷的试题的难度程度,将此难度程度变换成最终组卷参数表中的难度级别参数。
n :难度的等级数,这里为5;Nn :表示各难度级别,n 的取值范围是1~难度的
西南交通大学网络教育毕业设计(论文) 第 20 页 等级数;m :题型比例表中试题的题型数;Mm :某一类题型,m 的取值范围为1~题型比例表中试题的题型数;num :某类题型所占的题数;j 、tmp :中间变量;算法说明:
j=m
SortMn(num) (将题型按题数多少从多到少排列)
WHILE j>0 do
BEGIN
IF num>n THEN
IF Nn>Sn THEN Extract(n, Sn) (此类题型抽n 道题,第n Sn (Sn 为题型分数比),若Nn
Nn=Nn-Sn
num=num-n
Else
WriteLeftMn(num) SortLeftMn(num)
End if
SortMn(num)
j=j-1
END
2.
形成最终的组卷参数表,最终抽取试题的组卷条件都是
西南交通大学网络教育毕业设计(论文) 第 21 页
结 束 语
本系统使用Delphi6.0开发前台应用程序, 采用Access 进行后台数据库设计, 实现了一个应用于数字电路技术基础教学的考试系统. 由于使用结构化设计方法, 系统功能易于扩充和更新, 有良好的易维护性. 在数字电路技术基础课程教学实践中, 作为学生课后练习和考前模拟训练的辅助学习工具, 取得良好效果.
在设计本系统之初,我的计算机编程知识几乎为空白,上课时学到的一些教学语言外,我对一些新的、实用的、么接触。
及Access 的知识进行了强化补习,了从最初的数据库设计到最后Delphi 一步熟悉了Pascal 和MS SQL Server。
在这两个多月中,即系统的需求分析、总体设计、详细设计、分阶段地完成各设计任务。接着,根据设计任务书的要求,对自己需要完成的部分进行了系统的规划,根据需求分析的Delphi 作为界面的设计工具,对系统进 用了大约3周的时间来完成。在设计基本完成之后,周的时间改进系统的性能和技术文档的编写整理,最后完成毕业设计。
我既感受到了面对自己无法解决的问题时的苦恼,也体
1. 一个详细周密的计划对于完成一项任务的重要性。实际上,我对这次作业着手较早。但由于刚开始时间较松,在学习时就想到哪学到哪,没有认真计划。到后来发现同学们的进度都已经赶上甚至超过我,这才又着急起来,赶紧找经验丰富的同学出主意,制定出详细的计划,这才按时完成了任务。
2. 学习一门程序语言,实践是最好的方法。我对Delphi 和Access 的学习实际上
西南交通大学网络教育毕业设计(论文) 第 22 页 分为两个阶段。前一阶段为学习语言而学习语言。在这一阶段中,我总有隔雾观花的感觉,学得似是而非。后一阶段边实践边学习,很多前一阶段不甚了了的问题得到迎刃而解。
3. 要学会运用互联网工具。互联网是一个具有大量资源的信息宝库,在这次毕业设计中如果没有互联网也许我多花一倍的时间也完不成任务。所以一定要会并善于运用互联网工具。
完成这次设计后回过头来看,我的这项作业完成得并不完美。和改进的地方。
首先,是系统的功能还太单一,考虑进去,也没能实现。比如网络在线功能。
其次,是设计过程中时间分配不合理,动。
三是知识积累还不够,这样学到的知识毕竟不牢,而且用起来也不灵活。
总之,经过这次毕业设计,密的计划,要耐心、要善于运用已有的资源来解决;要勇于实践,要相信自己有解决问题的能力和勇气。
Delphi 和Access 有了一定的认识,最重要破除了以前对软件开发工作望而生畏的神秘感,这使我有信心和勇气在以后的生
西南交通大学网络教育毕业设计(论文) 第 23 页
致 谢
通过这次毕业设计,论文作者基本上掌握了开发一个考试题库系统的基本思路和实施步骤。在设计和论文写作的整个过程中,指导教师XXX 教授在各方面都给予了全面的指导和帮助。导师的精深渊博知识、求实创新、勤奋严谨的治学风范、工作作风时刻熏陶着我;导师的因材施教、印象,这将使我受益终身。
在校期间,使
感谢西南交通大学计算机与通信工程学院、
特别感谢我的姐姐XXX
西南交通大学网络教育毕业设计(论文) 第 24 页
参考文献
1 清宏计算机工作室. 《Delphi 编程技巧(网络与数据库篇)》,北京: 机械工业出版
社 , 1999.2
2 吕伟臣. 《Delphi 入门与提高》,北京: 清华大学出版社, 2000.4
3 朱振元. 《Delphi 面向对象程序设计及其应用》 ,西安: 社, 2003.1
4 电子工业出版社. 《Access2000开发实例全书》,北京:5 (Carter ,J. )《. 数据库设计与编程实例详解》,北京: , 2001.8 6 王海滨. 《Delphi6.0学习教程》,北京:
7 肖永明,张子江. 《Delphi6.0, 2000.10 8 萨师煊,王珊. , 2003.12 9 张海藩. 《软件工程导论(第四版)》, 2003.12 10 陶宏才. 《数据库原理及设计》, 2004.2
11 刘瑞新, 汪远征, 李凤华. 《Delphi , 北京:机械工业出版社出版 12 左美云, 邝孔武. 《信息系统的开发与管理教程》,北京:清华大学出版社,2001.7 13 朱振元. 《Delphi , 西安:西安电子科技大学出版社,
2000.5
14 《计算机应用》,1998.6
西南交通大学网络教育毕业设计(论文) 第 25 页
附 录
抽题源代码清单部分:
str:=edit5.Text;
i:=strtoint(str);
str:=edit2.text;
if str'' then
begin
sFileName := ExtractFilePath(Application.ExeName) + '标题 sFileName := sFileName + '.' +'doc';
opendialog1.FileName:=sfilename;
ofilename:=opendialog1.FileName;
oreadonly
itemindex := 1;
分');
j:=strtoint(str);
score1:=(j*i) div 100;
score:=0;
j:=0;
k:=1;
dmolecontainer.scds1.Active:=false;
西南交通大学网络教育毕业设计(论文) 第 26 页
if (shu=false) and (mo=false) then
begin
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="易"' ;
end;
if (shu=true) and (mo=false) then
begin
dmolecontainer.scds1.CommandText:='select * from SHITI where " and DIFLEVEL="易" and subject="模拟"' ;
end;
if (shu=false) and (mo=true) then
begin
dmolecontainer.scds1.CommandText:='select * where TYPE_1="选择" and DIFLEVEL="易" and subject="数字"' ;
end;
dmolecontainer.scds1.Active:=true;
d:=0;
begin
randomize;
i:=j-dmolecontainer.scds1.RecordCount;
j:=i;
dmolecontainer.scds1.First;
end;
dmolecontainer.scds1.MoveBy(i);
n:=0;
m:=1;
while (m
西南交通大学网络教育毕业设计(论文) 第 27 页
begin
if a[m]=dmolecontainer.scds1.Fields.Fields[0].AsInteger then
n:=1
else m:=m+1;
end;
if n=0 then
begin
a[k]:=dmolecontainer.scds1.Fields.Fields[0].AsInteger;
k:=k+1;
if fileexists('c:\temp.doc') then
deletefile('c:\temp.doc') ;
if pd=true then
begin
数字' then
begin
d:=d+1;
end
else
* from SHITI where TYPE_1="易" and subject="模拟"' ;
dmolecontainer.scds1.Active:=true;
shu:=true;
pd:=false;
j:=0;
d:=k-d-1;
end;
西南交通大学网络教育毕业设计(论文) 第 28 页
if monis>=moni then
begin
dmolecontainer.scds1.Active:=false;
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="易" and subject="数字"' ;
dmolecontainer.scds1.Active:=true;
mo:=true;
pd:=false;
j:=0;
end ;
end
else
d:=d+1;
ofilename:=opendialog2.FileName;
oreadonly
itemindex := 1;
savechanges := wddonotsavechanges;
originalformat := unassigned;
routedocument :=unassigned;
worddocument1.Close(savechanges,originalformat,routedocument);
worddocument2.Sentences.Last.Paste;
worddocument2.Range.InsertAfter(' '+#13);
end;
西南交通大学网络教育毕业设计(论文) 第 29 页
end;
str:=edit2.text;
j:=strtoint(str);
score1:=j-score;
score:=0;
j:=0;
k:=1;
dmolecontainer.scds1.Active:=false;
if (shu=false) and (mo=false) then
dmolecontainer.scds1.CommandText:='select * from SHITI 选择" and DIFLEVEL="难"' ;
if (shu=true) and (mo=false) then
dmolecontainer.scds1.CommandText:='select * TYPE_1="选择" and DIFLEVEL="难" and subject="模拟"' ;
if (shu=false) and (mo=true) then
from SHITI where TYPE_1="选择" and DIFLEVEL="难" and subject=" d:=0;
begin
begin
i:=j-dmolecontainer.scds1.RecordCount;
j:=i;
dmolecontainer.scds1.First;
end;
dmolecontainer.scds1.MoveBy(i);
n:=0;
m:=1;
西南交通大学网络教育毕业设计(论文) 第 30 页
while (m
begin
if a[m]=dmolecontainer.scds1.Fields.Fields[0].AsInteger then
n:=1
else m:=m+1;
end;
if n=0 then
begin
a[k]:=dmolecontainer.scds1.Fields.Fields[0].AsInteger;
k:=k+1;
if fileexists('c:\temp.doc') then
deletefile('c:\temp.doc') ;
if pd=true then
begin
数字' then
begin
d:=d+1;
end
else
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="难" and subject="模拟"' ;
dmolecontainer.scds1.Active:=true;
shu:=true;
pd:=false;
j:=0;
d:=k-d-1;
西南交通大学网络教育毕业设计(论文) 第 31 页
end;
if monis>=moni then
begin
dmolecontainer.scds1.Active:=false;
dmolecontainer.scds1.CommandText:='select * from SHITI where TYPE_1="选择" and DIFLEVEL="难" and subject="数字"' ;
dmolecontainer.scds1.Active:=true;
mo:=true;
pd:=false;
j:=0;
end ;
end
else
d:=d+1;
ofilename:=opendialog2.FileName;
oreadonly
itemindex := 1;
worddocument1.Range.Copy;
savechanges := wddonotsavechanges;
originalformat := unassigned;
routedocument :=unassigned;
worddocument1.Close(savechanges,originalformat,routedocument);
worddocument2.Sentences.Last.Paste;
worddocument2.Range.InsertAfter(' '+#13);
西南交通大学网络教育毕业设计(论文) 第 32 页
end;
end;
end;
{ 以上抽取选择题目 }
{ worddocument2.Save; }
wordapplication1.visible := true;
{ worddocument2.SaveAs(ofilename,template);}
{begin
savechanges := wdsavechanges;
originalformat := unassigned;
routedocument := unassigned;
try
wordapplication1.disconnect;
except
on e: exception do
begin
end;
end;
end; }
试卷完成');
ofilename:=savedialog1.FileName;
worddocument2.SaveAs(ofilename,template);
end;}
end;
procedure TForm2.SpeedButton5Click(Sender: TObject);
begin
西南交通大学网络教育毕业设计(论文) 第 33 页
form1.Show;
form2.Hide;
end;
procedure TForm2.Edit2Change(Sender: TObject);
begin
end;
end.
备注:抽取分析题和计算题的源代码部分略掉。