Word试题库工具插件的设计毕业设计论文Word文档格式.docx

上传人:b****1 文档编号:3098160 上传时间:2023-05-01 格式:DOCX 页数:61 大小:62.94KB
下载 相关 举报
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第1页
第1页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第2页
第2页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第3页
第3页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第4页
第4页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第5页
第5页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第6页
第6页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第7页
第7页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第8页
第8页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第9页
第9页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第10页
第10页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第11页
第11页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第12页
第12页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第13页
第13页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第14页
第14页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第15页
第15页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第16页
第16页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第17页
第17页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第18页
第18页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第19页
第19页 / 共61页
Word试题库工具插件的设计毕业设计论文Word文档格式.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Word试题库工具插件的设计毕业设计论文Word文档格式.docx

《Word试题库工具插件的设计毕业设计论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《Word试题库工具插件的设计毕业设计论文Word文档格式.docx(61页珍藏版)》请在冰点文库上搜索。

Word试题库工具插件的设计毕业设计论文Word文档格式.docx

     日 期:

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

日期:

年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

导师签名:

日期:

注意事项

1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:

引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:

理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:

任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。

图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:

按照任务书、开题报告、外文译文、译文原文(复印件)次序装订

指导教师评阅书

指导教师评价:

一、撰写(设计)过程

1、学生在论文(设计)过程中的治学态度、工作精神

□优□良□中□及格□不及格

2、学生掌握专业知识、技能的扎实程度

3、学生综合运用所学知识和专业技能分析和解决问题的能力

4、研究方法的科学性;

技术线路的可行性;

设计方案的合理性

5、完成毕业论文(设计)期间的出勤情况

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

2、是否完成指定的论文(设计)任务(包括装订及附件)?

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

2、论文的观念是否有新意?

设计是否有创意?

3、论文(设计说明书)所体现的整体水平

建议成绩:

(在所选等级前的□内画“√”)

指导教师:

(签名)单位:

(盖章)

年月日

评阅教师评阅书

评阅教师评价:

一、论文(设计)质量

二、论文(设计)水平

评阅教师:

教研室(或答辩小组)及教学系意见

教研室(或答辩小组)评价:

一、答辩过程

1、毕业论文(设计)的基本要点和见解的叙述情况

2、对答辩问题的反应、理解、表达情况

3、学生答辩过程中的精神状态

评定成绩:

教研室主任(或答辩小组组长):

(签名)

教学系意见:

系主任:

摘要

编写试题、排版试卷一直以来都是一项繁重的工作。

手工录入试题然后排版试卷工作量大且容易出错,试题的收集保存也是以文件的形式,这使得查找试题变得相当困难。

改用数据库存储试题将使试题的存储和查找得到优化,这是大部分试题库软件的优势,但是这些试题库软件都使用软件自身的文本编辑器,功能十分有限,在数据的存储方面也只能存储纯文本的试题,不能存储图片、表格等。

这使得用户在编辑试题时十分不便,在数据的存储方面也有很大限制。

如果结合数据库的存储功能、结构化查询语言的查询功能和Word的文本编辑功能,利用Word进行试题编写、试卷排版,利用数据库存储试题,利用结构化查询语言查找试题、过滤显示同类试题,那么编写试题、排版试卷等工作将变得方便快捷。

为了实现Word与数据库之间的试题存取(能够支持图片、表格、公式的存取)以及其他一些功能编写的Word试题库工具插件以COM组件的形式嵌入Word程序中,通过它将Word与试题数据库有效的结合到一起,使用户既能够方便的编辑试题又能够将试题存入数据库或从数据库中取出,还能够通过结构化查询语句搜索试题。

关键词:

COM组件;

Word插件;

二进制字段;

结构化查询语言

TheDesignofanWordfortheTestQuestionBank

Abstract

Editingtestquestionsandtypesettingexaminationpapersisalwaysanarduouswork,whichistediousandeasytomakemistake.Besides,thecollectionofthetestquestionsisintheformoffilesthatmakesitdifficulttosearchpropertestquestions.Usingthedatabasetostoretestquestionscanimprovethesearchingfunctionforthetestquestions,butsuchsoftwaresalmostusetheirowntexteditorswithlimitedformatcontrolfunctions.Attheaspectoftheirstorageform,theycommonlyonlysavetestquestionsinplaintext,whichmeanstheycanhardlystorethepicturesortablesthatmaybenesscesaryinthetestquestion.ConsideringthatlargepartoftestquestionsareeditedinMSWord,ifwecanutilizethepowerfulformatcontrolfunctioncombinedwiththebinarydatastoragefunctionofthedatabasetoprovidealocalizedtestquestionmanagementtool,theworkofeditingtestquestionsandtypesettingexaminationpaperswouldbecomemoreeffectiveandconvinent.WiththehelpofCOMcomponenttechnology,suchatoolcanbeimplementedintheformofWordAddinthatcanintegrateMSWordandthetestquestionbankseamlesslyandfacilitatetheuserstostorethetestquestionintothebankandretrievetestquestionsselectivelybytheStructuralQueryLanguage(SQL).

Keywords:

COM;

WordAddin;

BinaryField;

SQL

论文总页数:

33页

1引言

1.1课题背景

目前大量试题使用Word编写,在Word中可以很方便地编写公式、插入图片和表格。

一些独立的试题库软件使用简单的文本编辑功能,在试题编辑方面没有Word方便。

但是Word仅能编辑试题,不能存储收集试题。

《Word试题库工具插件》以COM组件的形式嵌入Word程序中,通过它将Word与数据库有效的结合到一起,从而使用户既能够方便的编辑试题又能够将试题存入数据库或从数据库中取出。

1.2国内外研究现状

大多数试题库软件都使用软件自身的文本编辑器,功能十分有限;

在数据的存储方面只能存储纯文本的试题,不能存储图片、表格等,这使得用户在编辑试题时十分不便,在数据的存储方面也有很大限制。

1.3本课题研究的意义

通过综合运用COM组件技术、插件技术、数据库技术开发的Word试题库工具插件能嵌入Word程序内,从而将Word与数据库有效的结合到一起。

使用户在编辑试题时既能用Word方便快捷的编辑试题又能方便的将试题存入数据库或从数据库提取试题。

使试题编辑工作更加方便快捷。

2理论基础

2.1COM组件技术

2.1.1什么是COM组件

COM即组件对象模型,是ComponentObjectModel的缩写。

COM是一种跨应用和语言共享二进制代码的方法。

与C++不同,它提倡源代码重用。

ATL便是一个很好的例证。

源码级重用虽然好,但只能用于C++。

它还带来了名字冲突的可能性,更不用说不断拷贝重用代码而导致工程膨胀和臃肿。

Windows使用DLLs在二进制级共享代码。

这也是Windows程序运行的关键——重用kernel32.dll,user32.dll等。

但DLLs是针对C接口而写的,它们只能被C或理解C调用规范的语言使用。

由编程语言来负责实现共享代码,而不是由DLLs本身。

这样的话DLLs的使用受到限制。

MFC引入了另外一种MFC扩展DLLs二进制共享机制。

但它的使用仍受限制——只能在MFC程序中使用。

COM通过定义二进制标准解决了这些问题,即COM明确指出二进制模块(DLLs和EXEs)必须被编译成与指定的结构匹配。

这个标准也确切规定了在内存中如何组织COM对象。

COM定义的二进制标准还必须独立于任何编程语言(如C++中的命名修饰)。

一旦满足了这些条件,就可以轻松地从任何编程语言中存取这些模块。

由编译器负责所产生的二进制代码与标准兼容。

这样使后来的人就能更容易地使用这些二进制代码。

在内存中,COM对象的这种标准形式在C++虚函数中偶尔用到,所以这就是为什么许多COM代码使用C++的原因。

但是记住,编写模块所用的语言是无关的,因为结果二进制代码为所有语言可用。

2.1.2COM组件的基本元素

coclass(简称组件对象类——componentobjectclass)被包含在DLL或EXE中,并且包含着一个或者多个接口的代码。

组件对象类(coclasss)实现这些接口。

COM对象在内存中表现为组件对象类(coclasss)的一个实例。

注意COM“类”和C++“类”是不相同的,尽管常常COM类实现的就是一个C++类。

COM服务器是包含了一个或多个coclass的二进制DLL或EXE。

注册(Registration)是创建注册表入口的一个过程,告诉Windows操作系统COM服务器放在什么位置。

取消注册(Unregistration)则相反——从注册表删除这些注册入口。

GUID(谐音为“fluid”,意思是全球唯一标示符——globallyuniqueidentifier)是个128位的数字。

它是一种独立于COM编程语言的标示方法。

每一个接口和coclass有一个GUID。

因为每一个GUID都是全球唯一的,所以避免了名字冲突(只要用COMAPI创建它们)。

有时还会碰到另一个术语UUID(意思也是全球唯一标示符——universallyiqueidentifier)。

UUIDs和GUIDs在实际使用时的用途是一样的。

类ID或者CLSID是命名coclass的GUID。

接口ID或者IID是命名接口的GUID。

在COM中广泛地使用GUID有两个理由:

1、GUIDs只是简单的数字,任何编程语言都可以对之进行处理。

2、GUIDs可以在任何机器上被任何人创建,一旦完成创建,它就是唯一的。

因此,COM开发人员可以创建自己特有的GUIDs而不会与其它开发人员所创建的GUIDs有冲突。

这样就消除了集中授权发布GUIDs的必要。

HRESULT是COM用来返回错误和成功代码的整型数字。

除此之外,别无它意,虽然以H作前缀,但没有句柄之意。

最后,COM库是在使用COM时与交互的操作系统的一部分,它常常指的就是COM本身。

但是为了避免混淆才分开描述的。

使用和处理COM对象

每一种语言都有其自己处理对象的方式。

例如,C++是在栈中创建对象,或者用new动态分配。

因为COM必须独立于语言,所以COM库为自己提供对象管理例程。

下面是对COM对象管理和C++对象管理所做的一个比较:

创建一个新对象

C++中,用new操作符,或者在栈中创建对象。

COM中,调用COM库中的API。

删除对象

C++中,用delete操作符,或将栈对象踢出。

COM中,所有的对象保持它们自己的引用计数。

调用者必须通知对象什么时候用完这个对象。

当引用计数为零时,COM对象将自己从内存中释放。

由此可见,对象处理的两个阶段:

创建和销毁,缺一不可。

当创建COM对象时要通知COM库使用哪一个接口。

如果这个对象创建成功,COM库返回所请求接口的指针。

然后通过这个指针调用方法,就像使用常规C++对象指针一样。

2.1.3关键接口

IUnknown接口

每一个COM接口都派生于IUnknown。

这个名字有点误导人,其中没有未知(Unknown)接口的意思。

它的原意是如果有一个指向某COM对象的IUnknown指针,就不用知道潜在的对象是什么,因为每个COM对象都实现IUnknown。

IUnknown有三个方法:

AddRef()–通知COM对象增加它的引用计数。

如果你进行了一次接口指针的拷贝,就必须调用一次这个方法,并且原始的值和拷贝的值两者都要用到。

在本文的例子中没有用到AddRef()方法。

Release()–通知COM对象减少它的引用计数。

参见前面的Release()示例代码段。

QueryInterface()–从COM对象请求一个接口指针。

当coclass实现一个以上的接口时,就要用到这个方法。

IClassFactory接口

IClassFactory的作用是创建COM组件。

创建组件的责任交给了一个单独的对象,这个对象就是类厂。

每个组件都必须有一个与之相关的类厂,这个类厂知道怎么样创建组件,当客户请求一个组件对象的实例时,实际上这个请求交给了类厂,由类厂创建组件实例,然后把实例指针交给客户程序。

这个过程在跨进程及远程创建组件时特别有用,因为这时就不是一个简单的new操作就可以的了,它必须要经过调度,而这些复杂的操作都交给类厂对象去做了。

IClassFactory最重要的一个函数就是CreateInstance,顾名思议就是创建组件实例,一般情况下我们不会直接调用它,API函数都为我们封装好它了,只有某些特殊情况下才会由我们自己来调用它。

IDispatch接口

IDispatch叫做调度接口。

调度接口把每一个函数每一个属性都编上号,客户程序要调用这些函数属性的时侯就把这些编号传给IDispatch接口就行了,IDispatch再根据这些编号调用相应的函数。

IDispatch接口的主要函数是Invoke,客户程序都调用它,然后Invoke再调用相应的函数。

2.1.4如何创建COM对象

为了创建COM对象并从这个对象获得接口,必须调用COM库的API函数,CoCreateInstance()。

其原型如下:

HRESULTCoCreateInstance(REFCLSIDrclsid,

LPUNKNOWNpUnkOuter,

DWORDdwClsContext,

REFIIDriid,

LPVOID*ppv);

以下是参数解释:

rclsid

coclass的CLSID,例如,可以传递CLSID_ShellLink创建一个COM对象来建立快捷方式。

pUnkOuter

这个参数只用于COM对象的聚合,利用它向现有的coclass添加新方法。

参数值为null表示不使用聚合。

dwClsContext

表示所使用COM服务器的种类。

本文使用的是最简单的COM服务器,一个进程内(in-process)DLL,所以传递的参数值为CLSCTX_INPROC_SERVER。

注意这里不要随意使用CLSCTX_ALL(在ATL中,它是个缺省值),因为在没有安装DCOM的Windows95系统上会导致失败。

riid

请求接口的IID。

例如,可以传递IID_IShellLink获得IShellLink接口指针。

ppv

接口指针的地址。

COM库通过这个参数返回请求的接口。

当调用CoCreateInstance()时,它负责在注册表中查找COM服务器的位置,将服务器加载到内存,并创建所请求的coclass实例。

以下是一个调用的例子,创建一个CLSID_ShellLink对象的实例并请求指向这个对象IShellLink接口指针。

HRESULThr;

IShellLink*pISL;

hr=CoCreateInstance(CLSID_ShellLink,//coclass的CLSID

NULL,//不是用聚合

CLSCTX_INPROC_SERVER,//服务器类型

IID_IShellLink,//接口的IID

(void**)&

pISL);

//指向接口的指针

if(SUCCEEDED(hr))

{

//用pISL调用方法

}

else

//不能创建COM对象,hr为出错代码

首先声明一个接受CoCreateInstance()返回值的HRESULT和IShellLink指针。

调用CoCreateInstance()来创建新的COM对象。

如果hr接受到一个表示成功的代码,则SUCCEEDED宏返回TRUE,否则返回FALSE。

FAILED是一个与SUCCEEDED对应的宏用来检查失败代码。

2.1.5如何删除COM对象

前面说过,不用释放COM对象,只要告诉它们已经用完对象。

IUnknown是每一个COM对象必须实现的接口,它有一个方法,Release()。

调用这个方法通知COM对象不再需要对象。

一旦调用了这个方法之后,就不能再次使用这个接口,因为这个COM对象可能从此就从内存中消失了。

如果的应用程序使用许多不同的COM对象,因此在用完某个接口后调用Release()就显得非常重要。

如果不释放接口,这个COM对象(包含代码的DLLs)将保留在内存中,这会增加不必要的开销。

如果的应用程序要长时间运行,就应该在应用程序处于空闲期间调用CoFreeUnusedLibraries()API。

这个API将卸载任何没有明显引用的COM服务器,因此这也降低了应用程序使用的内存开销。

继续用上面的例子来说明如何使用Release():

//像上面一样创建COM对象,然后,

//通知COM对象不再使用它

pISL->

Release();

2.2Word对象模型

2.2.1什么是Word对象模型

MicrosoftOfficeWord2003对象是按层次顺序排列的,层次结构顶端的两个主类是

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2