毕业设计论文说明书.docx
《毕业设计论文说明书.docx》由会员分享,可在线阅读,更多相关《毕业设计论文说明书.docx(40页珍藏版)》请在冰点文库上搜索。
毕业设计论文说明书
摘要
一般情况教师想出一份试卷,要么到庞大的题库里一道一道的把题找出来,或是从几本相关的书里把题一道一道挑出来。
这样即费时又费力,而且很难保证试题的覆盖面和把握好试卷的难度。
正是为了能够帮助教师轻松的出一份高质量的试卷而开发了本软件。
为了达到预期的目标我们最终选择了MicrosoftOfficeWord做为本软件的终端输出。
本软件是在对现有控件的改进和VBA编程的研究的基础上开发的。
本软件实现了以下主要功能:
1.手动生成试卷;2.自动生成试卷;3.抽取现有试卷;4.用户管理;5.数据库管理。
大量的测试表明本软件在Windows2000/XP平台配合OfficeXP/2003的环境下程序运行稳定且各项功能运行得都很正确,基本达到了预期的要求!
!
关键词:
题库系统,试卷生成,数据库,VBA
Abstract
Thegeneralsituationteacherthinksoutapaper,reachhugeexampooleachfindsoutthequestion,orshoulderthequestiontogetheroutfromseveralrelevantbooks.Time-consumingandalsostrenuouslikethis,andverydifficulttoguaranteecoveragerateandpaperdegreeofdifficultyofexaminationquestion.HelpingtheteacherthinksoutahigtqualitypaperisthedestinationofdevelopthisSoftware.InthecauseofthisweselecttheterminalisMicrosoftOfficeWord.ThisSoftware’sbaseofdevelopisimproveoncontrolinexistenceandstudytheVBAprograming.Thesefunctionsofthissoftwareareasfollows:
One.Manualcreatepaper;Two.Autocreatepaper;Three.Selectfromexistentialpapers;Four.Usermanage;Five.Databasemanage.TheresultofmanytestisthatthissoftwareisruningsteadyandthesefuntionsofitisruningrightintheenvironmentwhichmakeupofWindows98/me/2000/XPandOfficeXP/2003,itisbasicreachtherequests.
Inall:
theresultofrealtestbyteacheristhatthissoftwareareuniqueininterfaceandfunction.Wemustbelieveitcancompletecreatingahighqualitypaper.
Keyword:
Eclipse;Plugin;Expansion;HTML/XML
1.前言
随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。
随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。
在计算机飞速发展的今天,简化试卷的手工操作势必所然,。
。
。
。
。
。
所以如何设计好仓库管理系统,尽可能地减少仓库管理的重复性和低效性就成为当前最为重要的问题。
图书仓库管理的核心是入库、库存和出库之间的联系,如何处理好三者之间的关系是系统最为关键的部分。
另外,员工信息和供应商信息管理也是仓库管理中一个必不可少的部分,它提供着与入库和出库相关的地一些信息,使得整个系统更加完整,更加实用。
通过对仓库管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今图书仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。
在开发本软件之前,正是我努力提高自己的Delphi开发水平的时期。
因此我选择了Delphi做为我的开发工具,然而这次开发的软件和以前不一样。
最主要的区别在于这个软件要以MicrosoftOfficeWord做为试卷的终端输出。
而它们又是两个不同公司的产品。
因而,刚一开始我特别担心这个技术能否得到比较圆满的解决。
在开发的过程中我不断的对VBA技术进行研究,并且将它应用于这次的软件开发中。
因而比较好的解决了MicrosoftOfficeWord的接口编程问题。
还有一个比较棘手的问题就是Delphi提供的控件都是很基本的,而这次开发中要用到一个可以标记选中状态的树型控件,在对Delphi的TtreeView的深入研究后确认它不能胜任这个任务。
因此,我开始寻找第三方控件,然而这一次我很失望因为只找到了一个2000年编写的TCheckTree控件,没办法了,最后下定决心修改那个TCheckTree控件以使它能更加稳定和实用。
在深入研究Windows的消息机制和VCL框架对Windows消息机制的封装技术后我成功的修改了那个TCheckTree控件。
在程序开发的后期测试中,我充分利用各个同学电脑平台的多样性。
把本软件在多达4种操作系统和3个不同版本的Office上进行测试。
测试表明:
在Windows98/me/2000/XP平台配合OfficeXP/2003下程序运行稳定且各项功能运行得都很正确!
!
2.简述
2.1开发工具简介
Delphi是Borland公司推出的面向对象的可视化编辑工具,他拥有强大的集成功能,开发环境(IDE)和世界上速度最快的编辑器,并兼具BisualC++的强大功能和BisualBasic易学易用的特点,“真正的程序员用VC,聪明的程序员用Delphi”—这句话就是对Delphi最贴切的描述,虽然现在趋向用C#,java等语言编程,但是中国许多小的公司仍然在用delphi。
Delphi7.0的特点
Delphi是Borland公司出品的开发工具,在众多的开发工具中,我们为什么要选择Delphi呢?
因为Delphi具有众多其它开发工具所没有的优点!
具体介绍如下:
●开发的高效
●语言的高效
●编译的高效
●执行的高效
●维护的高效
基于以上理由,我们毫不忧郁的选择了Delphi做为我们的开发工具!
!
2.2主要的控件及其属性简介
●TForm类的控件:
BorderIcons属性:
用来控制程序标题按钮的可用性。
BorderStyle属性:
用来控制程序边框的样式。
Color属性:
用来控制程序界面的颜色。
Font属性:
用来控制程序界面的字体。
Position属性:
用来控制程序运行时界面的显示位置。
●TADOConnection类的控件:
ConnectionString属性:
用来控制链接字符串。
LoginPrompt属性:
用来控制链接时是否要输入密码。
Connected属性:
用来控制是否进行链接。
TADOQuery类的控件:
●Connection属性:
用来指定和哪个TADOConnection控件相连。
SQL属性:
用来添加向数据库提交的SQL语句。
Add方法:
用来向SQL属性添加SQL语句。
Open方法:
用来执行SQL语言中的Select语句。
ExecSQL方法:
用来执行任何SQL语句。
●FieldByName属性:
用来给数据库的字段赋值。
●FidldValues属性:
用来取出数据库的字段的。
Append方法:
用来向数据库添加一条记录。
Edit方法:
用来编辑当前的记录。
Post:
用来向数据库提交所做的修改。
●TADOTable类的控件:
Connection属性:
用来指定和哪个TADOConnection控件相连。
Open方法:
用来打开数据库中指定的表。
FieldByName属性:
用来给数据库的字段赋值。
FidldValues属性:
用来取出数据库的字段的。
●Append方法:
用来向数据库添加一条记录。
Edit方法:
用来编辑当前的记录。
Post:
用来向数据库提交所做的修改。
●TDataSource类的控件:
DataSet:
用来指定和哪个数据集相连。
●TDBGrid类的控件:
DataSource:
用来指定和哪个TDataSource控件相连。
●TPageControl类的控件:
ActivePage属性:
用来指定当前活动的Page页。
●TCheckTree类的控件:
ReadOnly属性:
用来控制TCheckTree内的Item是否可编辑。
Item属性:
用来控制TCheckTree包含的所有树形结点。
Images属性:
用来指点TCheckTree中结点的图标。
OnMouseUp事件:
用来添加鼠标放开事件所执行的程序代码。
OnStateChange事件:
用来添加结点状态改变时的程序代码。
●TFlatButton类的控件:
Caption属性:
用来指定TFlatButton的标题。
OnClick事件:
用来添加按钮的单击事件所执行的程序代码。
2.3数据库连接方式选择
Delphi连接数据库的主要方式有两种:
一是:
BDE,二是ADO。
现在我们来大致比较一下这两种技术的优缺点:
BDE(BorlandDatabaseEngine)是Delphi颇具特色的数据库连接管理技术。
凭借窗体和报表,BDE可以访问诸如Paradox,dBASE,本地InterBase服务器的数据库,也可访问远程数据库服务器上的数据库,如Oracle,SyBase,Informix等C/S数据库中的数据库,也可访问经ODBC可访问的数据库管理系统中的数据库。
ADO(ActiveXDataObjects)是微软提供的一项技术。
通过ADO,可以方便的访问各种类型的数据库,特别是OLEDB数据库。
ADO已成为访问数据库的新的标准接口。
从Delphi6.0开始Delphi添加了对ADO的支持,以便让用户能迅速实现对终端用户用来做商业决策的数据库的一致性访问,结合Delphi本身的开发式数据组件结构,程序员可以很快地建立应用程序,用来把自己的商业数据库通过Internet发送给客户,最终用户以及整个销售环节。
通过ADO,Delphi7.0也能让用户快速访问关系或非关系数据库以及E-Mail和商务文件系统。
这两者提供了几乎相同的功能,在进行产品开发时,势必要做一个精心的比较。
虽然ADO技术提出的时间不长,并被定位为工业标准的,而且其在性能上由于当前没有良好的数据库引擎支持,其性能还不够完美,但是,我们应该要注意到Borland公司已经宣布停止发展BDE了,其性能被ADO超越也是迟早的事,因此,在开发长期应用的产品时,推荐采用ADO技术。
这样还有另一个好处是,在进行产品分发时,可以避开大量BDE的链接库DLL的分发。
基于以上原因我们选择了ADO做为我们的数据库访问组件
2.5程序运行环境
操作系统:
Windows2000/windws2003/WindowsXP
办公软件:
OfficeXP/Office2003
3.需求分析
3.1问题的定义
随着教育教学改革的不断深入,/教考分离!
试卷规范化!
标准化的呼声越来越高"如何实现之是许多教育工作者潜心
探讨的问题"而伴随着国家对教育发展投入的力度不断加大
和全社会信息化水平的不断提高,各级各类学校基本具备实现现代化信息管理的物质基础"因此,采用计算机信息管理系
统来解决/教考分离!
试卷规范化!
标准化的问题是一种行之
有效的方法"它不仅可以减轻人员的重复劳动,提高工作效
率,更是各学校实现考务自动化,管理数字化!
信息化的标志"
基于上述原因,本文给出了一个通用试卷生成系统的设计
方案"
其系统应包含以下特点与功能:
●用ACSS数据库,Windows98操作系统以上。
题库可以自由维护、扩充,题库大小只受物理限制的存储容量。
●限分明的管理操作系统,支持按操作者及题库权限进行操作,确保题库的公共性与私有性。
●题支持单项选择题,判断题,填空题,编程题等题型,用户可以自由设置题型,试题内容包括内容,标准答案等属性,提供可以自由设置的试卷分类;多种试卷生成方式,可以设定参数自动生成或者手工选择试题,题库中自动抽取指定数量的试题或手工选取试题,也可以从某题库中每个题型各抽取多少分的试题,或者从多个题库中分别抽取指定数量的试题合成试卷,试卷生成的方式可以带答案、解答。
●试卷可以重新编辑、排序、删除、调整,可以自动生成一份
3.2可行性分析
题库管理系统是一个具有题库管理功能和出卷功能系统。
可以将该系统分为题库管理系统和出卷系统两个模块来做,其中出卷系统又分为手工出卷和自动出卷两个子模块。
题库管理模块应具有:
查看题库,修改题库、新增题目、删除题目、章节管理、题型管理的功能。
手工出卷让用户自己选择试题,当用户选择的试题存在重复(例如,同一道题选择了两次)或者有内容冲突(例如,同一知识点,在选择题中出现,又在填空题中出现)时,要能提示用户。
自动出卷则是通过用户选择的生成试的条件,随机地选择试题,自动完成试卷的生成。
这种试题库系统的基本思想是按照“知识点”来构建试卷,主要是思路是依据教学大纲的要求,以课程的主干内容为主线,先把教学内容细致分解为一个个知识点,然后按大纲对各个知识点的要求掌握的层次,与题型、题量、难易度及各知识点间的馆包容性结合起来,作为该试题库系统构建试题的基本原则,以便计算机自动生成每份试卷、在考查点的分布上具有较强的科学性。
要实现基于知识点的试题库系统的试卷建构,首先必须研究从知识点角度对试题如何进行分类,并结合试题的类型赋予各种特征参数,使试题库编程符合科学化与规范化的要求。
因此,参数的设置是否合理,对能否体现基于知识点建构试卷的思想.所建构试卷的质量,编程的工作量及运行效率都是直观重要的。
试卷生成模块是整个题库管理系统的核心。
本系统的组卷是采用交互方式,即用户在输入各种要求后,系统会自动生成一份符合要求的试卷。
组卷过程中系统会向用户依次询问以下信息:
●要生成的试卷满分分数
是否考所有章的内容,若只是考部分章内容,还应输入所考章的章号;
●将系统试题库表中该门课程所用全部题型列表显示,供用户选择。
●具体输入所考类型的代号,该类型的题目数目以及该类型题所占分数;
●将每种题型的题数分配到各章节;
●输入本试卷整体的难度系数;
所有上述参数有效输入后,确信在题库中满足上述条件的题目数目量足够的情况下即可生成一份试卷来。
●抽题组卷是系统的关键,如何设计一个算法一定能抽出满足要求的试卷,这是一个非常复杂的问题,从大纲对各个知识点所要求掌握的层次、题型、题量、各知识点之间的包容性,及考查点分布的科学性等角度来看,现有的试卷生成系统并不能完全达到教学基本要求,有待进一步研究。
题库查询和统计模块能够及时地查询和统计现在题库中试题的数量,为题库的扩充和更新提供了很好的参照。
由上述需求可以画出数据流程图。
为了表达较为复杂问题的数据处理过程,用一张数据流图是不够的,要按照问题的层次结构进行逐步分解,并以一套分层的数据流图反映这种结构关系。
在这里一共使用了两层数据流图,即顶层图和底层图。
它们是系统的关键部分,也是主要的部分。
通过以上对数据流图的分析之后,我们已大体地了解了系统的功能和目标,接下来所要做的就是系统功能模块的划分和数据库的设计,也就是系统的概要设计。
该系统分为两个子系统:
题库管理系统和试卷生成系统。
经过对系统的分析首先得到系统流程图如下:
3.3负责的功能模块
3.3.1题库管理
试题管理的主要目的是维护题库中已有的试题及各项参数输出及题库查询。
其中包括题库编辑、题库排序、题库查询。
题库编辑;其内容包括新建题库,已存在题库的内容修改和增添、删除以及旧题库文件的删除这部分是对基本库文件直接进行操作,特别是删除操作,对库文件的潜在危害极大。
因此应防止因用户误操作而对文件造成的损坏。
题库查询:
要编制试卷首先要清楚各个基本库文件中的试题分布情况,因此要对基本库文件做查询,将查询反馈给出卷者(用户),出卷者再根据库中试题分步情况来选题。
题库管理的功能模块图
3.3.3试卷管理
该模块可根据
要求实现试卷的自动/手工出卷"自动生成的试卷试题由系统随机抽取,由于题库中的试题按照题目的难易程度分类,故随机抽出的试题难易适中,既可满足一般考试的要求又避免了人为因素,增强了试卷的可信度"尽管自动生成试卷符合规范化考试的要求,但为了满足不同用户的特殊需要,特设置了手工出卷的操作,这样就增加了系统的通用性与灵活性"此外,该模块还可根据用户的查询要求生成关于试卷情况的文档本模块的主要功能是录入试题,同时可对试题内容进行编辑和修改。
试卷管理功能图
3.3.4权限管理:
增加可删除系统操作人员,并指定操作人员的权限。
可通过对用户进行权限管理范围设定,减轻操作内容,也可对单个用户权限及范围进行修订,从而保证系统在实施中的灵活性。
权限管理功能模块图
3.4软件功能分析
3.4.1要显示书本章节信息以供用户使用。
而在数据库里章节的存放是没有规则也即它们的顺序不一定按照真实书本的章节顺序来存储的。
但是在显示章节信息的时候必须按照书本的章节顺序来显示。
所以特别设置如下的数据类型:
type
ZJ=record
ZJID:
double;
ZJName:
string;
end;
在这里ZJID是设置成double的类型与相对应的是数据库里表ZhangJie里的ZJ字段此字段的类型为文本弄的。
故在添加此数据库结构的时候要把文本型转化为double的类型。
而ZJName对应的是数据库里表ZhangJie里的ZJName它们为同一种数据类型。
再由于数据库里章节的数量是不定的,故此种数据类型的变量必须是一种长度可变的类型才行,所以我们选择了Delphi里的动态数组类型。
变量定义如下:
Var
TempZJ:
ZJ;
HaveZJ:
arrayofZJ;
接下来的问题就是把这个变量记录的数据按一定顺序显示到TCheckTree的控件里了。
由于章节的数量还是比较多的,所以我选择了“改进的选择排序”,具体的排序算法代码实现如下:
fori:
=0toHigh(HaveZJ)do//对章节号进行排序
begin
k:
=i;
forj:
=i+1toMaxNumdo
ifHaveZJ[k].ZJID>HaveZJ[j].ZJIDthenk:
=j;
ifi<>kthen
begin
TempZJ.ZJID:
=HaveZJ[i].ZJID;
TempZJ.ZJName:
=HaveZJ[i].ZJName;
HaveZJ[i].ZJID:
=HaveZJ[k].ZJID;
HaveZJ[i].ZJName:
=HaveZJ[k].ZJName;
HaveZJ[k].ZJID:
=TempZJ.ZJID;
HaveZJ[k].ZJName:
=TempZJ.ZJName;
end;
end;
3.4.2.手动生成试卷时要不断的将用户选择的题目临时存储起来,由于记录一道题所包含的信息不是很多,再因为这些信息一会儿还要在“保存答案”里使用,所以我设置了4个TStringList的全局变量,定义如下:
var
STTypeID,STBH,STND:
TStringList;
每选一道题保存时的算法代码如下:
首先保证要添加入的试题与现有的试题不能重复。
LX:
=ST_DBG.Fields[1].AsInteger;
BH:
=ST_DBG.Fields[0].AsInteger;
fori:
=0toSTTypeID.Count-1do
begin
if(StrToInt(STTypeID.Strings[i])=LX)and(StrToInt(STBH.Strings[i])=BH)thenbegin
MessageBox(handle,'要加入的试题已经存在了!
','加入错误',MB_OKorMB_ICONERROR);
exit;
end;
end;
如果不重复的话则把试题添加进来!
!
STTypeID.Add(IntToStr(LX));//记下试题类型
STBH.Add(IntToStr(BH));//记下试题编号
STND.Add(ST_DBG.Fields[4].AsString);//记下试题难度
3.4.3.在自动生成试卷里最主要的一点就是如何生成一个覆盖知道点广且试题不重复的试卷。
其中的关键算法在于如何生成一个不重复的随机数序列。
在Delphi里随机数的产生函数是Random,然而如果用这个函数来生成一定范围内的随机数重复的机率太大了。
其中变量定义如下:
var
XTH:
arrayofinteger;//存放随机选题号
以下是产生不重复随机数的算法:
num:
=MaxBH-MinBH+1;
ifnum>0then//开始初始化
begin
SetLength(XTH,num);
fori:
=0tonum-1do
XTH[i]:
=MinBH+i;//给动态数组设初值
Randomize;//初始化随机数生成器
fori:
=0tonum-1do
begin
j:
=random(num);
temp:
=XTH[i];
XTH[i]:
=XTH[j];
XTH[j]:
=temp;
end;
end;
4.设计阶段
4.1概要设计
4.1.1总体设计
4.1.2数据库设计
系统数据库设计
根据任务书的规定,现设计如下的数据库表格:
表1:
用户表(YH)
字段中文名
字段英文名
字段类型
字段长度
主键
姓名
UserName
文本
20
是
密码
Password
文本
18
组
GroupID
数字
长整型
权限
QXID
数字
长整型
表2:
题型(Type)
字段中文名
字段英文名
字段类型
字段长度
主键
编号
TypeID
自动编号
是
名称
TypeName
文本
20
分值
FZ
数字
长整型
表3:
难易度(NYD)
字段中文名
字段英文名
字段类型
字段长度
主键
编号
BH
自动编号
是
难易度
NYD
文本
8
表4:
用户组(UserGroup)
字段中文名
字段英文名
字段类型
字段长度
主键
编号
GroupID
自动编号
是
组名
Gro