PB自动组卷系统设计与实现论文_第1页
PB自动组卷系统设计与实现论文_第2页
PB自动组卷系统设计与实现论文_第3页
PB自动组卷系统设计与实现论文_第4页
PB自动组卷系统设计与实现论文_第5页
已阅读5页,还剩57页未读 继续免费阅读

PB自动组卷系统设计与实现论文.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京林业大学本科毕业设计(论文)题 目: 自动组卷系统开发DevelopmentOfTestpaperAuto-productionSystem学 院: 信息科技学院专 业: 计算机科学与技术学 号: 0281110学生姓名:指导教师:职 称: 讲 师二OO六 年 五 月 十八 日i摘 要本文首先分析了自动组卷系统在具体的教学活动过程中的实际需求,然后以C语言程序设计的教学为背景,设计与实现了一个实际通用的自动组卷系统,对其中的数据库结构设计以及各个主要模块的实现进行了详细的介绍。本系统可以从试题库中自动的查找和组织出一些不同题型、不同难度、不同章节范围内的试题来组成一份合理的试卷。它采用的是利用试卷的一组特征值,记录用户提供的试卷题目类型、章节分布、难易程度等条件,采用随机算法,借助于系统中的一系列数据文件,使具体课程的相关数据动态地抽象成逻辑数据,用以解决通用问题,线性的规划出一份约束满足的、合理的试卷。本系统的开发工具是powerbuilder9.0,使用的数据库为Access 2003。系统分为题库编辑、自动组卷、试卷存储、试卷打印等功能。关键词:自动组卷 题库管理 数据库 powerbuilder9.0iiAbstractThispaperanalysestheactualdemandofauto-productionfortestpapersysteminthe course of concrete teaching activity at first. Then taking teaching of C languageprogramdesignasthebackground,itdesignsandrealizesaTestpaperauto-productionsystem.First,itExplainsthedesignforthedatabasestructure,thenintroducesthedetailedonetotherealizationofeachmainmoduleamongthem.Itcanautomaticallyfindandorganizeacertainnumberoftestquestionsinvarioustypeswithdifferentdegreesofdifficulty in certain scope in the database to form a reasonable test paper. What itadopt is to make use of to try a characteristic value of winding, recording thecustomertoprovideoftryatopictype,chaptertodistribute,difficulteasydegreeetc.condition,adoptionrandomcalculateway,askforhelpfromaseriesofdatadocumentwithin system, make the related data dynamic state ground of the concrete courseabstractthelogicdata,resolvetheingeneraluseprobleminorderto,lineprogram astipulationoftosatisfyof,trybookreasonablely.The development tool of this system is powerbuilder 9.0, the database of isAccess2003.Thesystemisdividedintodatabaseedit,testpaperauto-production,testpapersaving,testpaperprintingetc.function.Keywords: Test PaperAuto-production ; Database Management of Test Questions ;Database;Powerbuilder9.0iii目 录前 言.1第一章 系统分析.21.1 系统目标.21.2 系统需求分析.2第二章 系统总体设计.4第三章 开发工具及开发环境.63.1 总体开发工具及环境.63.2 开发工具简介.63.3 数据库的选择.73.4SQL基础.83.5SQL语句.9第四章 数据库的开发与设计.104.1 数据库需求分析.104.2 系统逻辑分析.114.3 数据库的连接.134.3.1 程序设计时与数据库的连接.144.3.2程序运行时与数据库的连接.14第五章 组卷策略设计.165.1 自动组卷系统.165.2自动组卷中随机数选取问题.165.3自动组卷的具体实现.175.4试卷难度的程序控制.18第六章 在PB中创建WORD文档.206.1PB通过OLEOBJECT使用WORD.206.2创建模板文件.216.3编写程序.22第七章 系统模块页面和代码设计.267.1 应用程序对象设计.267.2系统登录模块.267.3主程序界面设计.277.4菜单的设计.287.5 帐号管理模块.297.6 题库管理模块.317.7 自动组卷模块.347.8 试卷管理模块.377.9 关键技术.38v7.9.1 数据窗口中记录颜色的隔行显示.387.9.2 数据窗口中实现数据列自动折行.407.9.3 利用复合型数据窗口制作报表.40第八章 系统发布.428.1 创建工程对象.428.2 发布.43结 论.44致 谢.45参考文献.46附录.471前 言考试是教师检查学生学习情况的必要手段,但出卷却是一种繁重的智力和体力劳动,传统的标准化试卷命题,需要由教学专家组成一个命题班子,根据许多优秀教师多年的教学经验,从贯彻教学大纲要求,到试卷意图的组织,经过反复的推敲,才能完成一份标准化的试卷。这样的命题方式不仅工作任务繁重而且试卷的标准化程度、难易程度、题量大小等各方面难以控制,难以形成有效的试题库,给试题和试卷的管理带来很多问题和困难。鉴于这种情况,利用计算机进行试卷的自动生成并逐步积累形成有效的试题库,对试题和试卷的管理将变得高效而便捷,对提高工作效率,使试卷管理逐步走向正规化自动化将起到十分重要的作用。同时使出卷工作变得轻松愉快,从很大程度上减轻了教师利用传统的出卷方式组卷的繁重工作量,大大节省了老师的工作时间,便于教师有更多的时间和精力致力于教学方法的研究。今日, 随着计算机的应用的普及和硬件设备性能和软件制作水平的提高,为研制开发高性能的试题管理软件提供了条件。本系统采用PowerBuilder9.0为开发工具。系统分为题库编辑、自动组卷、试卷存储、试卷打印等功能,具体要求中下:建立一个包含多门课程的试题数据库,试题按照题型、章节和难度级别分类存放。允许教师增设新的课程题库、增删改试题、查询试题、根据预先设置的题型和分值等相关参数自动组卷、对试卷进行格式编排、浏览和打印试卷、试卷存档。本文主要包含以下内容:(1)系统需求分析和系统功能设计。(2)开发环境及开发工具的选择,编程语言简介。(3)数据库的设计,介绍了数据库设计理论、系统中所用到的表的逻辑结构设计方法和设计过程等。(4)组卷策略以及实现PB与Word的通信。(5)功能模块的设计,具体介绍了如何实现各个功能模块,介绍了一些核心代码等。2第一章 系统分析1.1 系统目标自动组卷系统是一个可适用各门课程题库的系统。只要题库是按知识结构分类录人的,自动组卷系统即可按照组卷要求,从题库的各部分随机抽取试题及相应的标准答案,分别生成试卷与标准答案。该组卷系统适应规范化、科学化考试的要求,实用性强,便于推广使用。系统具有以下特点:1、开放性组卷系统适合各类课程的书面考试。试题库中试题的录入简单,也可以直接对试题库进行修改,易于使用。试卷的题数,可以自定义。在组卷系统中可以对组卷进行尽可能多的参数设置,以便可以组合出更加合理、符合要求的试卷。2、实用性在系统运行时可以直接对选题的范围进行修改。试卷和试卷的答案一并给出。如果在该题没有提供答案的情况下,也不出错,答案上给出题号。3、智能性组卷系统中抽题算法虽然是采用随机算法,但在抽题之前用户可以根据自己需要对组卷进行题型、题数以及章节分布进行尽可能精确的设置,实现人工智能化的控制。以便系统能够组合出更加合理、符合用户要求的试卷。1.2 系统需求分析系统分为题库编辑、自动组卷、试卷存储、试卷打印等功能,具体要求如下:1、一个好的组卷系统必需要有一个足够庞大的题库做支持,所以系统首先要做好题库的管理,建立一个包含多门课程的试题数据库,试题按照课程、题型、章节和难度级别分类存放。允许教师增设新的课程题库、增删改试题、查询试题。32、系统因该能够根据用户预先设置的题型、题数、分值以及章节分布等相关参数自动组卷、允许用户对试卷进行打印或把试卷另存为Word文本,以便进一步的编辑排版。3、试卷要存档以便查询以及今后的管理。4第二章 系统总体设计试卷自动生成系统是计算机辅助教学系统CAI(computer-aidedinstruction)的重要组成部分。在计算机普及的今天,考试作为发现和选拔人才、资格认证、等级确定的有效手段.也正在朝着自动化、智能化的方向发展。对于从事高校教学的教师来说,有一个得心应手的试卷自动生成系统,可以减轻教师负担,避免重复工作,提高工作效率。本系统主要包括以下几个功能模块:图2.1 系统功能模块图设置参数 查看试卷目录 查看试卷 关于自动组卷系统帐号管理 题库管理 自动组卷 试卷管理添加试题课程管理增加帐号 删除帐号 修改密码 退出系统 查看试题更新课程添加课程帮助组卷5功能模块的具体说明:1、帐号管理对于本系统的一般用户可进行当前用户修改密码和退出系统操作;对于本系统的管理员则还可进行帐号的添加和删除操作。2、题库管理包括课程管理和试题管理,可添加新课程,修改和删除指定课程信息;添加新试题,修改和删除指定试题。3、自动组卷填写试卷的基本信息,设置组卷的难度值、题型、数量、分值以及章节分布参数。采用随机算法,结合相关设置参数,组合出合理的、符合用户要求的试卷;用户还可以选择出同一学期同一课程的2份试卷(即A、B卷),并且使2份试卷的重复比例控制在最低范围。组卷完成后给出相应试卷以及答案。4、试卷管理用户可查询所有出过的试卷的目录,并且可以查看相应的试卷。用户可以把试卷打印或者另存为Word文本。6第三章 开发工具及开发环境3.1 总体开发工具及环境本系统采用的软件开发工具及环境如下:操作系统:WINDOWSXP。开发工具:PowerBuilder9.0。数据库:Access2003数据库。开发用机器的硬件配置:Celeron(R)2.66GHz、512MB内存、80GB硬盘等。运行要求的配置:硬件环境:英特尔奔腾处理器,166MHZ或更高的处理器、 32MRAM-ROM驱动器、256色、1024*768分辨率显示器(推荐使用更高的分辨率和颜色深度)。软件环境:WINDOWS98/2000/XP。3.2 开发工具简介PowerBuilder是一个图形化的应用程序开发环境。使用PowerBuilder开发的应用软件由窗口构成,窗口中不仅可以包含按钮、下拉列表框及单选按纽等标准的Windows控件,还可以有PowerBuilder提供的特殊控件。这些特殊控件可以使应用软件更容易使用,使应用软件的开发效率更高。例如,数据窗口就是PowerBuilder提供的一个集成度很高的控件,使用该控件可以很方便地从数据库中提取数据,很简单地检索数据,提供图形化的数据显示方式,创建统计功能非常强大的数据统计表。由于数据窗口对数据的操作是通过事务进行的,所以对数据的操作有很强的可靠性。这些都为开发功能强大的数据库应用软件提供了可靠的保证。商业化的软件开发要求有很好的移植性。PowerBuilder既可以跨平台开发,也可以发行跨平台软件。例如,在Windows95下开发的程序,可以不修改源程序而形成UNIX下的执行文件或Macintosh下的执行文件。在开发小组中,不同7成员可以使用不同的开发环境,但由于PowerBuilder的支持,在不同的开发环境下看到的共享PowerBuilder对象是相同的,所以仍可以同时开发同一个应用程序。随着软件技术的不断发展,PowerBuilder 9.0及时地强化了开发功能,并提供了一些配套的开发工具,成为一种易于使用的、可伸缩的并经实践证明的快速集成开发环境。它在给用户提供一条转移到下一代平台的途径的同时,使用户仍能够保护和扩展现有的技术和应用上的投资。3.3 数据库的选择Access2003是微软公司开发的基于Windows平台的小型数据库管理系统,是Office2003 的组件之一。它承袭了旧版本Access的各项优点,又新增或完善了数据访问页、个性化菜单、internet/intranet、编程、安全保密等功能。自从1992年,Microsoft 公司发布Access1.0以来,随着Windows的普及,使用Access的人越来越多,它逐渐成为流行的数据库软件之一。Access是一个面向对象的、采用事件驱动机制的小型关系数据库管理系统。在Access中,用户可以根据实际需要对数据进行分类,然后使用表对象分别存储每一种类型的数据,并建立起不同类型数据之间的关系,供报表使用。此时,每条信息仅在一处存放,减少了冗余数据的产生,节省了宝贵的存储空间,同时也加快了更新数据的速度。在Access数据库中,任何有名字的事物都可以称之为对象。Access使用了与Windows 一致的风格,采取面向对象的方式,完成数据库的各种功能。极大地简化了用户的开发工作。针对用户在实际应用中的需求,Access数据库提供了表、查询、窗体、报表、页、宏和模块等七个对象,用于收集、存储和操作各种不同的信息。为了便于使用,Access的每个对象都为用户提供了设计器和生成向导。用户可以在设计器中设计生成对象,或对生成的对象进行编辑;用户也可通过生成向导方便快速的生成一个完备的对象。如上所述,Access 作为关系数据库开发具备了许多优点,所以本系统所采用的数据库开发工具为Access。83.4 SQL基础SQL(StructuredQueryLanguage,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如Select、Insert、Update、Delete、Create和Drop常常被用于完成绝大多数数据库的操作。MSSQLServer 就是用的Transact-SQL 。SQL语言有着非常突出的优点,主要是:非过程化语言;统一的语言;所有关系数据库的公共语言。非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。SQL为许多任务提供了命令,其中包括:查询数据;在表中插入、修改和删除记录;建立、修改和删除数据对象;控制对数据和数据对象的存取;保证数据库一致性和完整性。以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到9另一个,所有用SQL编写的程序都是可以移植的。3.5 SQL语句SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询而且用于数据库中的数据修改和更新,概括起来它可以分成以下几组:DML(DataManipulationLanguage,数据操作语言):用于检索或者修改数据;DDL(DataDefinitionLanguage,数据定义语言): 用于定义数据的结构,比如创建、修改或者删除数据库对象;DCL(DataControlLanguage,数据控制语言):用于定义数据库用户的权限。DML组可以细分为以下的几个语句:SELECT:用于检索数据;INSERT:用于增加数据到数据库;UPDATE:用于从数据库中修改现存的数据;DELETE:用于从数据库中删除数据。10第四章 数据库的开发与设计数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,资料的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等等。由于数据库设计的重要性,人们提出了许多数据库结构设计的技术。但这些技术方法与数据库系统并没有统一的相对应的模式,而是要根据应用系统对数据库不同的需求来选择不同的技术方法,甚至是几种不同的方法的融合。在本系统中数据库的设计还要注意灵活,具有一定的通用性,把试题库做成通用的试题库。4.1 数据库需求分析数据库结构设计的第一阶段,也是非常重要的一个阶段是数据库需求分析。在这个阶段主要是收集基本资料以及数据处理的流程,为进一步设计打下基础。根据以上的功能分析,系统的业务流程图如下:试题库 试卷库图4.1系统业务流程图基于上面对整个软件功能的定义,并考虑到要使系统具有扩展性和较强的适应性,在系统数据库系统中,所包含的数据应该包括用户信息表、课程信息表、试题表、试卷题型参数表、试卷章节分布表、试卷表、试卷目录表。用户 课程、试题维护试卷参数设置 组卷 打印、保存试卷114.2 系统逻辑分析概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用的设计。也就是要将概念上的结构转化为Access数据库系统所支持的实际数据库模型。该数据库系统要求具有以下方面的特点: 结构合理,所建立的数据冗余度小,独立性强。 建档、修改、查询、统计快而准确。 保密性、可靠性好。数据库的逻辑结构设计如下:(1)用户信息表(user_info):帐号(user_id),密码(user_pwd),用户名(user_name)(主码为用户名(user_id)表4.1用户信息表(user_info表)表结构(2)课程信息表(course):课程代号(cid),课程名称(course)(主码为课程代号(cid))表4.2课程信息表(course表)表结构(3)试题信息表(test):试题编号(id),题型(type),课程名称(course),章(chapter),节(section),题目(test),答案(key),试题难度(difficutly),题目空格数(blanknum)(主码为试题编号(id))12表4.3试题信息表(test表)表结构(4)题型参数表(param):参数编号(id),题型(type),题数(num),每题分值(mark)(主码为参数编号(id))表4.4题型参数表(param表)表结构(5)章节分布参数表(chapparam):参数编号(id),章(chapter),题数(num)(主码为参数编号(id))表4.5章节分布参数表(chapparam表)表结构(6)试卷目录表(list):试卷编号(id),课程名称(course),学期(term),试卷类型(type),组卷教师(teacher),考试班级(class),考试专业(spec),考试人数(num),试卷难度(diff)(主码为试卷编号(id))13表4.6试卷目录表(list表)表结构(7)试卷表(paper):试卷编号(id),大题编号(type_no),标题(testtype),小题编号(testno),题目(test),答案(key),试题编号(testid),题型(test_type)(主码为试卷编号(id)和试题编号(testid))表4.7试卷表(paper表)表结构4.3 数据库的连接在PowerBuilder开发环境和应用程序能够操作数据库中的数据之前,必须首先与数据库建立联系,也就是连接到数据库上。PowerBuilder与数据库的连接建立在驱动程序之上。PowerBuilder通过数据库驱动程序接口实现与各种类型数据库的连接。接口的参数可以通过一个Database Profile来完成。对于每一个可能要用到的数据库,均可以建立一个Database Profile。在此DatabaseProfile中所记录的是建立到数据库的一些连接信息,如数据库管理信息(DBMS)的类型、用户账号、口令、数据库以及其他的连接参数。14当开发环境通过DatabaseProfile连接到数据库上之后,在PowerBuilder中使用数据库画笔可实现对该数据库中表格、视图等的操作,如创建表、修改表、删除表、增加删除记录。PowerBuilder中设计数据窗口的时候,通过“DatabaseProfile”对话框实现与数据库的连接。在应用程序中则一般是在应用程序对象中写连接数据库的程序代码,使得应用程序开始运行并实现与数据库的连接。4.3.1 程序设计时与数据库的连接在程序设计中可以使用“DatabaseProfile”对话框完成配置和连接。如果已经定义了所需数据库的配置,那么就可以通过单击选中该配置,然后单击“Connect”按钮,将系统连接到相应的数据库上。如果没有定义数据库配置,需要创建新的数据库配置。首先选择Tool菜单中的DatabaseProfile子菜单,或者单击 图标,出现“DatabaseProfile”对话框。在其中选择要配置的数据库使用的数据库接口,“ODBODBC”节点。然后,单击“New”按钮,打开“DatabaseProfileSetup-ODBC”对话框,并设置所要连接数据库的配置信息。完成设置后,单击“Preview”标签页,在该标签页中列出了数据库刚刚配置的语句。单击“OK”按钮,返回到“DatabaseProfile”对话框。这时“ODBODBC”节点下面就多了刚刚配置好的DatabaseProfile。选中该配置,单击该对话框中的“Connect”按钮,系统即通过专用接口连接到数据库上。当PowerBuilder9.0通过DatabaseProfile连接到数据库上之后,在程序上之后,在程序设计的创建数据窗口对象时,可以直接显示该用户在数据库中可以修改的表,通过选择某个(或者多个)表可以将它们和数据窗口对象连接起来。4.3.2程序运行时与数据库的连接在程序设计是和数据库的连接Database Profile对话框来实现的,在程序运行时,则需要通过应用程序对象来实现和数据库的连接。在应用程序对象中实现与数据库连接,不在通过“DatabaseProfile”对话框,而是使用Transaction15事物对象。一般数据库的连接是在应用程序开始运行是建立起来的。PowerBuilder9.0开发的应用程序的入口点是PowerBuilder9.0的应用程序对象。每个PowerBuilder应用程序都必须有一个、而且只能有一个应用程序对象,在该应用程序对象中写入与数据库连接的程序代码,从而使得应用程序一开始变实现与数据库的连接。在“Database Profile”对话框完成设置后,单击“Preview”标签页,在该标签页中列出了配置的语句。将连接数据库的代码复制到应用程序对象中,即可完成代码的编写。16第五章 组卷策略设计5.1 自动组卷系统组卷系统的主要任务是根据用户的需要,用当前数据库中的试题组成一套符合用户需求的试卷。本系统采用随机抽题策略实现自动组卷功能,即由用户输入要添加的试卷名、学期、试卷类型(即A卷或B卷)、试卷难度、考试对象信息、试卷中各种题型的具体数量以及每小题的分值和试卷的章节分布范围,然后通过系统随机抽题策略向数据库中的试卷表中添加一张各个题型题量固定的试卷,并在试卷目录表中保存该试卷的基本信息,以便于今后试卷的查询管理。5.2自动组卷中随机数选取问题在自动组卷中首先要考虑的就是如何按照用户选择的组卷方案在数据库中随机抽取试题。要想随机抽取试题就必须产生随机数,因此随机数的产生问题才是问题的真正关键点。用计算机产生随机数的方法有很多,有用数学公式实现的,也有按照系统时间产生的,还要按照当时的系统中的线程数产生的等等。PowerBuilder 9.0环境本身已经提供了产生随机数的函数Rand(),不过在没有初始化的情况下,每次运行程序所获得的随机数都是一样的,因此Rand()也被称为伪随机数函数。要实现真正的随机还必须在Rand()函数之前调用函数Randomize()。Randomize()可以初始化伪随机数发生器,这样让应用程序每次使用不同的伪随机数序列。Randomize()的语法为Randomize(n),其中参数n:数值型变量或表达式,指定伪随机数生成器使用的起始值,不同的起始值可以生成不同的伪随机数序列。当n的值为0时,该函数把系统时钟作为伪随机数生成器的起始值,这样可以生成不可重复的伪随机数序列。当n的值不为0时,可以产生不同的伪随机数序列,但是,如果两次使用相同的伪随机数生成器起始值,那么两次生成的伪随机数序列相同。175.3自动组卷的具体实现由于组卷时仅产生随机数还不能满足要求,因为组卷要求的是从一定量的试题中抽取确定题量的随机试题,因此问题也就变成了从一组数中随机抽取确定的数。在本系统中这组数的确定是通过以指定的课程名称和试题题型为检索条件对数据库中的试题表进行检索,并把检索结果显示在指定的数据窗口,而此时数据窗口中记录的总条数就是这组数。在具体的程序实现中是把数据窗口中记录的总条数做为Rand()函数要产生的伪随机数的上界,由系统随机产生一个随机数,以该随机数做为数据窗口的某一特定行,即选定试题。然后将该试题的相关信息做为一条新的记录存入相应试卷表中。不过在存入试卷表之前要对试题的相关信息与组卷要求进行比较,只有符合条件的试题才能存入试卷表。具体的组卷程序流程如下:否是获取组卷的参数在试卷目录表中插入新的试卷信息,并取得试卷编号idj”)的时候,这个文件已经打开了,此时使用ConnectToObject会造成错误。二是使用 OLEObjectVar.ConnectToNewObject (“Word. Application”)时创建了新的Winword.exe进程,但是没有执行关闭这个新的应用的操作。对上述问题可以采用以下方法进行解决:(1)打开文档首先,使用.ConnectToObject(“”)来打开21一个空Word文档。打开成功后,使用.Application获得对Word.Application的引用并设置Applicatin.Visible=TRUE,并关闭刚才打开的空文档。然后,使用Word.Application的Open方法打开要使用的文档。这样的方法打开文档,如果当前有正在运行的Windows.exe进程,就不必打开新的进程,而是使用当前的进程,并且可以成功地对当前的进程获得引用。(2)关闭文档首先,我们关闭程序打开的使用的文档,然后判断Application是否还有其他的打开的文档。如果没有其他打开的文档,则调用Application的Quit方法,让Application退出,结束Winword.exe的程序进程。如果确定以后还经常的调用Word,也可以不关闭Winword.exe的进程,这样可以每次很快的打开Word的文档。不过,由于通过OLEObject调用Word等Office有许多限制,所以尽管用这个方法能够解决许多问题,但是还是有许多需要特别注意的地方:第一,使用ConnectToObject连接的文档,不能被锁定(比如被以前的进程打开,或者被当作模板新建立了一个文档,都可能锁定),否则将会产生未知错误(返回值-9);第二,对Document的各种操作,要保证Word.Application.Visible=TRUE,否则调用可能会产生程序错误.6.2创建模板文件首先,我们建立一个试卷样式的模板文件,取名为“试卷模板.doc”。根据需要录入静态文本,并在需要插入动态数据的地方插入“书签”。“书签”名字与PB数据源中列的名字一致,如下图所示。22图6.1模版文件6.3编写程序1 数据窗口d_list和d_paper,分别取自试卷目录表和试卷表,数据模型如 试卷目录表 试卷表图6.2数据模型试卷编号 long课程名 char(20)学期 char(20)类型 char(6) 试卷编号 long试题编号 long大题编号 char(6)大题标题 char(50)小题编号 char(6)题目 char(32766)答案 char(32766)题型 char(10)232创建窗口w_paper,其中包含两个数据窗口dw_3和dw_4,分别对应数据窗口d_list和d_paper,但在实际的程序运行过程中,这两个数据窗口是不可视的。再插入两个单行编辑器sle_1和sle_2,分别用于用户录入和选择模板文件与文档保存路径。在这里省略选择文件与路径按钮的编程代码。3添加“保存”按钮。该按钮Clicked事件代码如附录程序2所示。当用户单击“保存”按钮后,程序将利用OLE技术连接Word,在相应的位置填写数据,生成试卷,并且保存在指定目录下。程序运行时界面如下图所示:图6.3程序运行界面在上面的程序运行界面中,显示试卷内容的数据窗口是复合型(Composite)显示风格,是实现打印功能的数据窗口,而实现与Word进行数据通讯的数据窗口在当前窗口中是处于隐藏状态,但它们之间的内容是一致的。保存到Word中的文本效果如下图所示:24图6.4保存到Word的效果图一选择题样式图6.5保存到Word的效果图二填空题样式25图6.6保存到Word的效果图三编程题样式把试卷保存到Word中,用户就可以进行更加自由的编辑修改。26第七章 系统模块页面和代码设计7.1 应用程序对象设计PowerBuilder9.0开发的应用程序的入口点是PowerBuilder9.0的应用程序对象,运行是程序从这个入口点启动,所以应用程序对象的设计是应用程序设计的开始。应用程序对象的事件不多,一共只有6个,分别是Open、Close、Idle、SystemError、ConnectionBegin、ConnectionEnd事件。1、在应用程序对象的Open事件,输入如下程序代码:/ProfilesysSQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=DSN=system/连接数据库connect;open(w_login)/打开登录窗口;2、在应用程序对象的Open事件,输入如下程序代码:/断开数据库连接disconnect;7.2系统登录模块程序启动后,首先进入系统登录窗口验证用户密码。系统登陆窗口主要实现如下功能:选择帐号,凭口令进入系统。确认用户的身份及使用权限。支持键盘和鼠标操作。系统登陆窗口如图7.1所示。27图7.1 登录界面7.3主程序界面设计在系统登录成功后,进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论