




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要C语言试卷自动生成系统主要是实现按照所学章节和试题难易程度在试题库中随机的抽取试题,然后把随机抽出的试题制作成一份标准考试卷。还可进行试题查询,按照试题所属章节,试题所属章节查询也可以综合上面两个条件进行查询。在随机抽取试题模块中采用了DataStore技术,解决了如何对数据进行操纵的问题。利用自己定值得随机函数实现了随机生成试题。在试卷打印模块中,考虑到不能简单的只对随机生成的试题进行打印。基于本系统最终要生成一份标准试卷,所以利用了OLE技术建立PowerBulider与Word的通信。通过调用ConnectToNewObject()函数,建立PowerBulider与Word2000的OLE联结,并通过Word宏语言WordBasic,向Word2000写入数据,对产生的Word文档进行编辑,存储,打印等操作,最后,通过调用DisConnectObject()函数断开与Word2000的OLE联接。在制作这个系统是大量的用到了DataWindow技术,它是PowerBulider中功能最强大的一块。它将有关数据库的访问,更新,显示等操作集成在一起,形成了一个强大的用户数据库接口。它的主要功能是从数据库中检索出数据并且显示在用户界面上,并且允许用户通过这个数据窗口对象和数据库通信。关键词:数据窗口(DataWindow), 数据存储(DataStore)OLE技术 , PowerBulider8.0 目 录摘 要21概述51.1.1课题来源:51.1.2.课题内容:51.1.3 具体目标:62 系统开发工具简介72.1 Powerbulider 8.0的开发环境的介绍92.2使用数据窗口检索数据库数据的全过程:113 系统的分析及设计133.1 系统需求分析133.2系统的设计原则143.3 系统功能设计143.4 后台数据库的建设153.4.1 后台数据库的选择153.4.2 数据库的设计174. 系 统 实 现204.1 登陆界面204.2 主选择模块224.3 试题查询模块234.4 试题整理模块274.4.1 数据窗口与数据编辑324.5 打印模块375 难点及对策415.1随机抽取试题的算法416 总结及展望44致 谢45概述1.1.1课题来源: 考试是考察学生是否掌握一门课程较为有效的方法。随着高校教育事业的迅速发展,如何使考试试卷的试题合理布局是所有老师必须面临的问题。传统的出卷既费时又费力,而且不能够达到迅速出卷。传统出卷的方法亟待改进。如今大多数高效的教师采用了试卷自动生成系统来解决这个问题。C语言课试卷自动生成系统是为了方便任课教师在完成教学后方便制作考试卷. 1.1.2.课题内容: 根据用户的要求,本课题的内容主要是:在windows平台下开发一套用户界面友好,可以根据用户的要求迅速的制作成一套考试卷,并可以实现考试卷的打印和答案的打印。本系统最大的特点就是可以根据用户的要求在是题库中随机出题,这样每次出的考试题是不相同的,而且可以使考试更公平合理。同时本系统可以对试题库进行添加,删除,修改。也可以单一条件或组合条件对题库中的试题进行查询。 该系统完成后可节约大量的出题时间,还可对重点章节进行考察,还可根据老师的考察要求制成不同难易程度的试卷,符合了考试所要求的合理性和科学性。1.1.3 具体目标: 本系统的具体目标是: (1) 对试题库中的各类型试题(填空题,单项选择题,判断题,编程题)可以进行添加、删除、修改等常规维护; (2) 可以对试题库中的各类型试题(填空题,单项选择题,判断题,编程题)进行单一条件或多条件组合查询 ; (3) 可以根据用户的要求在试题库中随机的抽取各种类型的试题; (4) 将随机抽出的试题和答案分别保存在word文档中,可利用word对其进行编辑,最终打印成标准试卷,和答案卷。2 系统开发工具简介随着计算机应用水平和网络技术的发展,人们对于信息的需求、管理和应用不再局限于有限地理空间内,信息分布在位于不同地方的计算机上。对于这些信息的需求可能在位于其他的计算机上由于存储数据和操作数据的计算机所使用的操作系统的不同,客观上,人们需要一个跨平台的,可以支持多种大型数据库和桌面数据库的开发系统,以便开发出既不依赖于开发平台,又既有广泛适应性的应用系统,PowerBuilder 即是具有这一基本要求的开发工具。此外,PowerBuilder 还具有分布式,分割化,可编译和可视化等特点。所有这些特点,使 PowerBuilder 成为一种客户/服务器环境下的优秀的数据库开发工具。 使用PowerBuilder 之前,首先应该了解 PowerBuilder 是什么,它是如何工作的。概括而言,PowerBuilder 是一个功能超群,使用方便,易于开发复杂应用系统的前端数据库开发工具。利用PowerBuilder 所提供的丰富而完善的开发工具,可以轻松的开发大型数据库应用系统。由于PowerBuilder 是具有图形界面的分布式数据库前端开发工具,它所采用的图形界面使得程序员能够迅速方便地开发出相互独立的对象,而这些对象可供程序员共享或重复使用。PowerBuilder 自问世以来受到了应用软件开发人员的重视,其主要的原因在于:(1)开发效率高,成本底。(2)面向对象的开发工具,代码的可重复性好,开发的软件易于 维护。(3)客户/服务器计算模式的前端工具,对数据库的应用开发有 着特殊的支持,特别适合做信息系统的开发。(4)提供了丰富的对象,控件和函数,为开发人员提供良好的用 户界面和编制功能强大的应用软件创造了便利条件。PowerBuilder 的核心技术是数据窗口(DataWindow)技术,可以说,PowerBuilder的最大特色就是数据窗口。PowerBulider作为一种数据库前端开发技术,操作的核心是数据库中的数据。而数据窗口是一个对象,它包含了对数据库中的数据进行特定的操作的信息。只要定义好一个数据窗口对象,以后就可以在多个应用程序中使用这个数据窗口对象,总之,可以把数据窗口看作封装了对数据库中的数据操作的对象,他极大的方便了应用程序对数据库的使用。数据窗口(DataWindow)同时提供给开发人员快速建立应用程序的强有力的工具,是一种智能型的数据处理对象,它具有判断所输入的数据是否正确的能力。这也是PowerBulider与其他面向对象的数据库应用前端开发工具的最主要的区别。它以自动化的用户数据库接口为开发人员最大限度的节省了时间和精力,但这种自动化并不限制开发、人员的主观能动性,开发者能够以独具特色的方式灵活运用数据窗口。数据窗口(DataWindow)可以方便而快速的处理数据,与数据库连接,这个技术已被扩展到Web应用中。拖动式的编程方法可以避免许多编写代码的工作,比如在象是格式、客户端的与确认、域的大小计算、标签排序、向前或向后浏览、数据操作按钮、支持的客户端事件和其他标准的数据窗口功能方面都无需编写详细代码。另外,数据窗口可以运行在多客户端,不必关心它们使用什么语言写的。建立一个数据窗口,可以在任何应用程序中使用,无论Client/Server应用,分布式应用还是Web应用都可以。数据窗口(DataWindow)是PowerBulider成功的关键所在,可以说没有数据窗口就没有今天PowerBulider的成就。灵活运用数据窗口的强大功能,可以为应用开发提供极大的方便。数据窗口控件是SYBASE 公司的一项专利技术。通过本次毕业设计深深地感受到了数据窗口控件功能的强大。深入理解数据窗口控件的工作原理、灵活应用数据窗口控件对系统的开发有很大的帮助。数据窗口控件的一般应用就可以满足大多数的用户的要求,但PowerBuilder 提供了动态数据窗口、共享数据窗口和利用数据窗口制作复杂报表的技术。根据用户的需要,结合PowerBuilder 的特点。在选择开发工具时选定了PowerBuilder 8.0为开发工具。2.1 Powerbulider 8.0的开发环境的介绍 虽则数据库技术在各行PowerBuilder8.各业的广泛应用,作为数据库前端开发工具的PowerBuilder8.已成为开发人员的得力助手。PowerBuilder8.开放的体系结构,简洁高效的继承开发环境,强大的数据窗口技术,几乎无所不能的数据库访问能力和友好的用户界面,越来越受到开发人员的青睐。同当今流行的许多的开发环境一样,PowerBuilder8.的开发环境也是可视的集成化开发环境。为了方便和简化,它提供了一系列的描绘器(Painter)每个描绘器都有专门的用途。根据本次毕业设计的重点,在此仅仅阐述PowerBuilder的一部分描绘器。(1)PowerBuilder8.的描述文件描述文件是PowerBuilder获取后台数据库信息的桥梁,通过描述文件中指定的信息系统可以与指定数据库的连接建立。因此,对于PowerBuilder开发出的系统。描述文件是必须的。在本次的毕业设计中将描述文件制作成盘,用户必须持有盘和密码才允许进入系统,起到了加密的作用,PowerBuilder提供了两个专用于对描述文件进行操作的函数,ProfileString() 函数和 SetProfileString()函数 。通过ProfileString() 用户可以读取到描述文件中指定节中的指定项目的字符串值。通过SetProfileString() 函数用户可以设定描述文件中指定的节中的指定项目的字符串值。因此利用ProfileString() 函数和SetProfileString()函数可以方便地完成对描述文件的操作,从而控制应用程序与数据库的连接,进一步实现了与后台数据库的动态连接。(2)PowerBuilder8.的事物对象事物对象是PowerBuilder众多对象中最重要的一个对象并且也是最不易理解的一个对象。它实际上是PowerBuilder程序与数据库之间传递信息的一个结构体变量。其共有个成员。在访问数据库之前,必须为这个结构体变量准备好访问数据库的参数,它包括要连接的数据库,数据库所基于的服务器及用户名和口令等个参数。然后才能通过这个结构体变量与数据库进行连接,完成所需的数据库操作。数据库操作的执行情况等个状态信息也要通过这个结构体变量传递个PowerBuilder程序。无论在何时以何种的方法在应用程序中访问数据库都必须使用事物对象。鉴于事物对象的重要性,下面对事物对象的个参数进行详细的介绍。(1)string类型。所使用的数据库管理系统。(2)string 类型。要连接的数据库名字。(3)string 类型。连接数据库时所需的用户 名。(4)string 类型。用户连接数据库时所需 的密码。(5)string 类型。数据库的保护级别。(6)string 类型。登录到数据库服务器上的用 户名。(7) string 类型。登录到数据库服务器上 的用户口令。(8)string 类型。数据库服务器 名。(9)string 类型。指定是否将 数据库设定成自动提交所有事物。(10)string 类型。用于向数据库传递特 定信息的属性。(11)long 类型。指定最近一次 操作失败或成功。(12)long 类型。最近一次操 作影响的行数。(13)long 类型。数据库错误代 码。(14)string 类型。相当于 中错误码的文字说明。(15)string 类型。返回 M执行的附加信息。PowerBuilder提供了一个默认的全局事物变量(Communication Area)。一 般的情况下使用,但是当涉及到同时连接多个数据库或同一数据库有多个连接时,就要使用自定义的事物变量。在语言课试卷自动生成系统中采用的就是自定义的事物变量。对于系统使用的四个基本库、一个汇总库,总计五个库均采用对应的自定义事物变量。.使用数据窗口检索数据库数据的全过程:数据窗口(DataWindow)是PowerBuilder的一大特色,而处理数据是PowerBuilder最强的功能。二者是如何联系起来的呢?下面就此次毕业设计中采用的检索方法简要地总结一下如何利用数据窗口检索数据库中的数据。(1)创建一个事物变量,为了使其能与确定的数据库连 接,应为其赋值。(2)使用语句把事物对象与数据库 连接。语句的语法如下: ;(3)使用SetTransObject() 函数把具体的事物对象与数 据窗口控件关联。(4)执行检索操作: DATAWINDOWCNTROL.RETRIEVE()(5)断开与数据库的连接: DISCONNECT USING TRANSACTION;(6)删除自己创建的事物对象: DESTORY TANSACTION;数据窗口控件是 PowerBuilder 最有特色的控件之一,还有很多的思想,属性,事物,方法。由于篇幅所限,这里只介绍与本课题有关的内容。3 系统的分析及设计任何系统在设计的时候必须有一个整体的设计思路作为指导思想。在本章主要就以下几个问题进行阐述:1 系统需求分析2 系统的设计原则3 系统功能设计4 数据库设计3.1 系统需求分析传统的出卷方法在计算机日益普及的今天,已经被淘汰。传统方法及费时又费力。而试卷自动生成系统很好的解决了这个问题。它可以依据用户的要求在很短时间内生成一份试卷。用户可以选择试题的难度,考察章节,然后依据用户的条件在试题库中随机抽取试题。最后把试卷保存在Word文档中,进行排版等打印的前期工作。随后即可打印成一份标准试卷,另附答案。老师可以在试题查询模块中对题库中的各类型试题进行查询。可以对一种题型,例如填空题可以查询某章某节的试题(例如第三章第二节的填空题),也可以通过难度进行查询(例如中等难度的填空题),好可以把上述两种条件综合起来进行查询(例如的三章第二节中等难度的填空题)。在试题整理模块中,可以对试题分类进行添加,删除,修改,保存。在试题抽取模块中,对各种类型试题进行分类随机抽取。例如在随机抽取填空时,输入截止章节和所需的试题的难度。就可随机抽取试题。随机抽出的试题通过OLE自动化实现PowerBulider于Word的通信。数据被保存在Word文档中,当按下“打印”按钮时就实现了PowerBulider于Word的通信,打开了Word文档,老师在此文档中就可以对随机抽取的试题进行排版,打印。3.2系统的设计原则 本系统是基于使用户方便操作,简化步骤,实用,美观的原则设计的。3.3 系统功能设计 根据用户的要求对试题库中的各类型试题(填空题,单项选择题,判断题编程题)可以进行添加、删除、修改等常规维护;还可以对试题库中的各类型试题(填空题,单项选择题,判断题,编程题)进行单一条件或多条件组合查询 ; 可以根据用户的要求在试题库中随机的抽取各种类型的试题; 将随机抽出的试题和答案分别保存在word文档中,可利用word对其进行编辑,最终打印成标准试卷,和答案卷。登陆功能选择试题查询试题库维护随机抽取试题打印单一条件查询多条件组合查询添加删除修改图31 系统逻辑结构示意图3.4 后台数据库的建设3.4.1 后台数据库的选择PowerBuilder 作为专业的数据库前端开发工具,在数据库应用开发方面有独到之处,几乎支持所有常见数据库的连接。PowerBuilder 与数据库的连接可以通过ODBC接口或数据库厂商提供的专用数据库接口实现。MS SQL Server是一个客户/服务器关系(C/S)模式数据库系统,程序的所有数据处理过程,不象基于桌面数据库那样,只发生在一台计算机上,而MS SQL Server可同时运行于多台计算机上,程序的用户界面运行在本地计算机上,而所有运行的程序的数据库引擎都驻留在服务器上。MS SQL Server具有以下主要特点:支持三层客户/服务器结构;有隐藏的并发控制能力;包含丰富的编程接口工具(支持ODBC访问);简单的图形化管理工具,使系统管理更为直观方便。因此,MS SQL Server得到不少程序员的青睐。在此次的系统开发的过程中,后台数据库采用MS SQL系列中的MS SQL Server2000 。PowerBuilder与MS SQL Server数据库的连接需要几组动态链接库配合完成:通过专用接口文件PBMSS80.DLL,Powerbulider8.0可以访问SQL Server2000版数据库,而MS SQL Server提供的数据库接口文件是NTWDBLB.DLL,另外还需要数据库网络支持文件,此文件随数据库服务器支持的网络类型不同而不同,对于NamedPipes,支持文件是DBNMPNTW.DLL;对于TCP/IP Sockets,支持文件是DBMSOCN.DLL。这几组动态链接库的作用分别是:PowerBuilder8.0提供的数据库接口可以接收PowerBuilder应用程序及其可执行文件中的数据库连接的信息,而MS SQL Server提供的的数据库接口文件则负责与PowerBuilder中的动态链接库进行交换信息,传达到数据库服务器,数据库网络支持文件则保证客户端与服务器的网络连接。数据库网络协议Microsoft SQL SERVER客户端软件PBMAA80. DLL开发环境Microsoft SQLSERVERMicrosoft支持PowerBulider支持数据库或网络支持网络层数据库客户端软件数据库接口动态链接库 图32 连接示意图3.4.2 数据库的设计根据系统功能设计的要求以及功能模块的划分,对于语言可试卷自动生成系统的式题库的数据库,可以列出以下数据项和数据结构:l 填空题试题信息表:主要包括试题的ID,类型,分值,章和难度,题目,答案,标志,备注等。l 选择题试题信息表:主要包括试题的ID,类型,分值,章和难度,题目,选项,答案,标志,备注等。l 判断题试题信息表:主要包括试题的ID,类型,分值,章和难度,题目,答案,标志,备注等。l 编程题试题信息表:主要包括试题的ID,类型,分值,章和难度,题目,答案,标志,备注等。l 试卷信息表:主要包括题目,答案。表3-3 填空题数据表Column Name Data TypeWidth Null备注Tihao Char3No题号Leixing Char4Yes类型Fenzi Char1Yes分值ZhanghenanduChar4Yes章和难度TimuChar200Yes题目Daan Char80Yes答案Biaozhi Char1Yes标志表34 选择题数据表Column NameData TypeWidthNull备注Tiaho Char3No 题号Leixing Char4Yes类型Fenzhi Char2Yes分值Zhanghenandu Char4Yes章和难度Timu Char150Yes题目XuanxiangaChar150Yes选项AXuanxiang bChar150Yes选项BXuanxiang cChar150Yes选项CXuanxiang dChar150Yes选项DDaanChar1Yes答案Biaozhi char1Yes标志表35 判断题数据表Column Name Data TypeWidth Null备注Tihao Char3No题号Leixing Char4Yes类型Fenzi Char1Yes分值ZhanghenanduChar4Yes章和难度TimuChar200Yes题目Daan Char80Yes答案Biaozhi Char1Yes标志表36 编程题数据表Column Name Data TypeWidth Null备注Tihao Char3No题号Leixing Char4Yes类型Fenzi Char1Yes分值ZhanghenanduChar4Yes章和难度TimuChar200Yes题目Daan Char80Yes答案Biaozhi Char1Yes标志4. 系 统 实 现4.1 登陆界面如图41所示的页面是C语言课试卷自动生成系统的登陆画面。该页面的功能非常简单,输入用户名和用户口令就可以登陆本系统。图41 C语言课试卷自动生成系统的登陆画面下面是登陆页面的源代码:/判断用户名是否正确if sle_1.texthejing thenMessageBox(提示,请输入正确的用户名!)returnend if/判断用户口令是否正确if sle_2.text1234thenMessageBox(提示,登录口令非法,请确定后重新输入!)returnend ifopen(w_main)4.2 主选择模块如图42给出的主选择界面的图片,他有四个主模块。分别是:试题查询,试题整理,出题,打印,退出。图42 主选择界面4.3 试题查询模块这个主模块包含有四个子模块。其逻辑结构如图43所示。四个子模块的功能,代码基本相同。因此以填空题查询为例讲解。试题查询部分代码如下:string lookforconditionif ddlb_1.text= and ddlb_2.text= thenmessagebox(提示,请输入查询条件)elseif ddlb_1.text and ddlb_2.text= then lookforcondition=zhanghenandu = + ddlb_1.text + end ifif ddlb_1.text= and ddlb_2.text then lookforcondition=biaozhi = + ddlb_2.text + end ifif ddlb_1.text and ddlb_2.text then lookforcondition=zhanghenandu = + ddlb_1.text + + and + biaozhi = + ddlb_2.text + end ifdw_1.setfilter(lookforcondition)filter(dw_1)dw_1.retrieve()end if试题查询填空题选择题判断题编程题单一条件查询多条件查询单一条件查询多条件查询单一条件查询多条件查询单一条件查询多条件查询图43 试题查询模块逻辑结构示意图1) 选择“填空题”这一项;进入填空题查询页面,如图44所示;图44 填空题查询界面1) 在第一个下拉列表中选择“章和难度”,在第二个下拉列表中选择“标志”,例如:在第一个下拉列表中选择“1.1”,在第二个下拉列表中选择“0”,查询结果如45所示;2) 符合查询要求的记录不止一条,所以可以按“上一条记录”或“下一条记录”按钮来进行选择;45 查询结果界面4.4 试题整理模块这个主模块包含有四个子模块。其逻辑结构如图46所示。四个子模块的功能,代码基本相同。因此以填空题整理为例讲解。填空题整理模块的逻辑结构如图47所示。试题整理填空题整理选择题整理判断题整理编程题整理图46 试题整理模块逻辑结构示意图填空题整理添加一条记录删除一条记录修改一条记录上一条记录下一条记录 保存 放弃 退出图47 填空题整理模块逻辑结构图图48 填空题整理模块界面1) “增加”按钮可在数据库中增加一条记录;2) “删除”按钮课在数据库中删除一条记录;3) “上一条记录”和“下一条记录”按钮可实现试题的浏览;4) “允许修改”按钮可以对一条记录中的某一项或所有象进行修改,修改后必须点“保存”按钮以确保保存成功;5) “放弃”按钮可以放弃用户刚才所作的修改;“允许修改”功能代码如下:string lookforconditionif ddlb_1.text= and ddlb_2.text= thenmessagebox(提示,请输入查询条件)elseif ddlb_1.text and ddlb_2.text= then lookforcondition=zhanghenandu = + ddlb_1.text + end ifif ddlb_1.text= and ddlb_2.text then lookforcondition=biaozhi = + ddlb_2.text + end ifif ddlb_1.text and ddlb_2.text then lookforcondition=zhanghenandu = + ddlb_1.text + + and + biaozhi = + ddlb_2.text + end ifdw_1.setfilter(lookforcondition)filter(dw_1)dw_1.retrieve()end if“添加”功能代码如下:integer li_rowcb_5.enabled=falsecb_6.enabled=falsecb_1.enabled=falsecb_2.enabled=falsecb_3.enabled=falsecb_7.enabled=truecb_8.enabled=truedw_1.enabled=true/数据窗口获得焦点dw_1.setfocus()/插入一条空纪录,以待修改li_row=dw_1.insertrow(0)/滚动到指定行dw_1.scrolltorow(li_row)在这个模块中主要使用了数据窗口技术(DataWindow)。4.4.1 数据窗口与数据编辑 数据窗口的主要功能是从数据库中检索出数据并显示在用户界面上,并且允许用户通过这个数据窗口对象和数据库通信,进行数据的添加,删除和修改。数据窗口包括两方面的内容:数据窗口对象和数据窗口控件。数据窗口对象主要用于展示数据并允许用户增删改数据,数据窗口控件则把数据窗口对象放置到窗口上并呈现在用户面前。数据窗口对象无法直接在程序中使用,而数据窗口控件没有了数据窗口对象就成了一个没有数据的空舞台。可以这样理解,数据窗口对象是一个很大的风景区,而数据窗口控件只是一个显示框。数据窗口控件每次只能显示一定大小的数据,数据窗口对象中的数据就是通过这个显示框将其中的数据显示给用户。数据窗口对象提供了强大的操纵数据的功能,包括过滤数据,数据排序,分组检索等,修改后的数据还可以有数据窗口提交给数据库进行更新。构造数据窗口对象时,首先应考虑两方面的内容:数据源和显示风格。数据窗口对象中的数据源决定了数据窗口对象从什么地方得到数据。显示风格决定了数据窗口以何种方式展示,表现数据。利用数据窗口可以完成复杂的数据编辑任务。有以下几点可以实现1 数据查找功能的实现2 记录删除功能的实现3 记录保存功能的实现4 数据清空功能的实现5 记录插入功能的实现数据窗口控件是POWERBUILDER中最有特色的控件之一,是SYBASE公司的专利控件。由于有了数据窗口控件使得用户界面更加友好,减少了开发的工作量。POWERBUILDER的数据窗口控件有FREEFORM风格、TABULAR风格、GRID风格、LABEL风格、N-UP风格、GROUP风格、COMOSITE风格、CROSSTAB风格、GRAPH风格、OLE2.0风格和RICHTEXT风格。在此次开发中根据数据的格式和用户的需要采用的是FREEFORM风格数据窗口。当我们在纸上绘制数据表格记录数据的时候,经常进行的操作就是查找记录,删除记录,保存记录等操作。同样对于一个数据管理系统类似这样的功能是必不可少的。这些功能在利用计算机实现的时候必须充分地发挥计算机的优势快速,准确地处理大量的数据。4.5 随机出题功能出题模块包含有抽取填空题,抽取选择题,抽取判断题,抽取编程题四个子模块。现以抽取选择题为例。出题模块逻辑结构如图49所示。在这个主模块中用到了DataStore技术,此技术将在下一章中作详细讲述,在这里不做论述。 出题抽取填空题抽取选择题抽取判断题抽取编程题图49 出题模块逻辑结构示意图选择题抽取:1) 选择截止到哪一章和试题难度;2) 抽取四道题;3) 还可以重新抽取主要代码如下:if ddlb_1.text=8.3 then tag_1=5end ifif ddlb_1.text=9.3 then tag_1=10end ifif ddlb_1.text=10.3 then tag_1=15end ifint temp_1temp_1=rand(tag_1)irow=temp_1mle_1.text=题号:+ds.getitemstring(irow,8)mle_1.text=mle_1.text+char(13)+char(10)+章和难度:+ds.getitemstring(irow,9)mle_1.text=mle_1.text+char(13)+char(10)+题目:+ds.getitemstring(irow,1)mle_1.text=mle_1.text+char(13)+char(10)+选项A:+ds.getitemstring(irow,2)mle_1.text=mle_1.text+char(13)+char(10)+选项B:+ds.getitemstring(irow,3)mle_1.text=mle_1.text+char(13)+char(10)+选项C:+ds.getitemstring(irow,4)mle_1.text=mle_1.text+char(13)+char(10)+选项D:+ds.getitemstring(irow,5)mle_1.text=mle_1.text+char(13)+char(10)+答案:+ds.getitemstring(irow,6)return 0部分代码如下:datastore dsint irowString ianswer0 to 4int tag_1tihao=1ds=create datastoreds.DataObject=dw_xuanzeds.settransobject(sqlca)ds.retrieve()st_1.text=当前考题为:+String(1,000)show(tihao)cb_1.enabled=falsest_1.text=当前考题为:+String(2,000)show(tihao)cb_2.enabled=falsest_1.text=当前考题为:+String(3,000)show(tihao)图410 抽取选择题界面4.5 打印模块在抽取完试题后应对所抽取试题进行打印。此功能是通过OLE实现与Word通信。这项技术在第四章第三节已作详细讲述,在这里就不详细论述了。图411 打印界面主要代码如下:OLEObject ole_objectole_object=Create OLEObjectif ole_object.connecttonewobject(word.application)0 then/message (OLE错误,OLE无法连接)return end if ole_object.visible=truelong ll_colnum,ll_rownumconstant long wdtablebehzvior=1constant long wdautofitfixed=0constant long wdcell=12string is_valuell_colnum=long(dw_da.object.datawindow.column.count)ll_rownum=dw_da.rowcount()+1ole_object.documents.add(F:毕设毕业设计1.doc,false,0)ole_object.actievedocument.tables.add()string is_colnameinteger f,g,hfor f=1 to ll_colnumis_colname=dw_da.describe(#+string(f)+.name)+_tis_value=dw_da.describe(is_colname+.text)ole_object.selection.typetext(is_value)ole_object.selection.moveright(wdcell)nextdw_da.setredraw(false)ole_object.selection.moveleft(wdcell)for f=2 to ll_rownumfor g=1 to ll_colnumdw_da.scrolltorow(g - 1)/dw_da.setcolnum(g)is_value=dw_da.gettext()ole_object.selection.moveright(wdcell)ole_object.selection.typetext(is_value)nextnextdw_da.setredraw(true)constant long wdformatdocument=0ole_object.disconnect.saveasole_object.disconnectobject()destroy ole_object5 难点及对策在这个系统的设计中,明显存在一些难点:5.1随机抽取试题的算法if ddlb_1.text=8.3 then tag_1=5end ifif ddlb_1.text=9.3 then tag_1=10end ifif ddlb_1.text=10.3 then tag_1=15end ifint temp_1temp_1=rand(tag_1)irow=temp_1mle_1.text=题号:+ds.getitemstring(irow,8)mle_1.text=mle_1.text+char(13)+char(10)+章和难度:+ds.getitemstring(irow,9)mle_1.text=mle_1.text+char(13)+char(10)+题目:+ds.getitemstring(irow,1)mle_1.text=mle_1.text+char(13)+char(10)+选项A:+ds.getitemstring(irow,2)mle_1.text=m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资源配置效率提升促进经开区创新突破
- 精细化管理在油菜增产中的应用
- 理赔责任界定基础知识点归纳
- 跨学科融合对语文教学的推动作用
- 贸易经纪与代理服务项目投资风险评估报告
- 非遗传承中的跨代沟通与教育作用
- 健康管理课程在医学人才培养中的地位
- 多元协同机制下的教育质量提升策略
- AI之路介绍模板
- 心理结对协议书
- 2023深圳一模数学试卷及答案
- 初中八年级红色文化课方志敏精神教案
- (完整版)METS医护英语水平考试
- 车险查勘定损中级培训水淹车处理指引及定损培训
- GB/T 25695-2010建筑施工机械与设备旋挖钻机成孔施工通用规程
- 纳米酶研究进展
- 力平之独特的血脂管理课件
- (完整版)土方回填专项施工方案
- HPProLiantDL系列PC服务器维护手册
- 化工原理第十三章-萃取课件
- 美容院卫生管理制度(常用版)
评论
0/150
提交评论