毕业设计论文PB9.0自动组卷系统开发设计

上传人:痛*** 文档编号:142015882 上传时间:2022-08-24 格式:DOC 页数:46 大小:2.79MB
收藏 版权申诉 举报 下载
毕业设计论文PB9.0自动组卷系统开发设计_第1页
第1页 / 共46页
毕业设计论文PB9.0自动组卷系统开发设计_第2页
第2页 / 共46页
毕业设计论文PB9.0自动组卷系统开发设计_第3页
第3页 / 共46页
资源描述:

《毕业设计论文PB9.0自动组卷系统开发设计》由会员分享,可在线阅读,更多相关《毕业设计论文PB9.0自动组卷系统开发设计(46页珍藏版)》请在装配图网上搜索。

1、自动组卷系统开发 本科毕业设计(论文)题 目: 自动组卷系统开发 Development Of Test paper Auto-production System 摘 要本文首先分析了自动组卷系统在具体的教学活动过程中的实际需求,然后以C语言程序设计的教学为背景,设计与实现了一个实际通用的自动组卷系统,对其中的数据库结构设计以及各个主要模块的实现进行了详细的介绍。本系统可以从试题库中自动的查找和组织出一些不同题型、不同难度、不同章节范围内的试题来组成一份合理的试卷。它采用的是利用试卷的一组特征值,记录用户提供的试卷题目类型、章节分布、难易程度等条件,采用随机算法,借助于系统中的一系列数据文件,

2、使具体课程的相关数据动态地抽象成逻辑数据,用以解决通用问题,线性的规划出一份约束满足的、合理的试卷。本系统的开发工具是powerbuilder 9.0,使用的数据库为Access 2003。系统分为题库编辑、自动组卷、试卷存储、试卷打印等功能。 关键词:自动组卷 题库管理 数据库 powerbuilder9.041自动组卷系统开发AbstractThis paper analyses the actual demand of auto-production for test paper system in the course of concrete teaching activity at

3、first. Then taking teaching of C language program design as the background,it designs and realizes a Test paper auto-production system. First, it Explains the design for the database structure, then introduces the detailed one to the realization of each main module among them. It can automatically f

4、ind and organize a certain number of test questions in various types with different degrees of difficulty in certain scope in the database to form a reasonable test paper. What it adopt is to make use of to try a characteristic value of winding, recording the customer to provide of try a topic type,

5、 chapter to distribute, difficult easy degree etc. condition, adoption random calculate way, ask for help from a series of data document within system, make the related data dynamic state ground of the concrete course abstract the logic data, resolve the in general use problem in order to, line prog

6、ram a stipulation of to satisfy of, try book reasonablely.The development tool of this system is powerbuilder 9.0, the database of is Access 2003.The system is divided into database edit, test paper auto-production, test paper saving, test paper printing etc. function. Keywords: Test Paper Auto-prod

7、uction ; Database Management of Test Questions ; Database ; Powerbuilder 9.0目 录前 言1第一章 系统分析21.1 系统目标21.2 系统需求分析2第二章 系统总体设计4第三章 开发工具及开发环境63.1 总体开发工具及环境63.2 开发工具简介63.3 数据库的选择73.4 SQL基础83.5 SQL语句9第四章 数据库的开发与设计104.1 数据库需求分析104.2 系统逻辑分析114.3 数据库的连接134.3.1 程序设计时与数据库的连接144.3.2程序运行时与数据库的连接14第五章 组卷策略设计165.1

8、自动组卷系统165.2自动组卷中随机数选取问题165.3自动组卷的具体实现175.4试卷难度的程序控制18第六章 在PB中创建WORD文档206.1 PB通过OLEOBJECT使用WORD206.2创建模板文件216.3编写程序22第七章 系统模块页面和代码设计267.1 应用程序对象设计267.2系统登录模块267.3主程序界面设计277.4菜单的设计287.5 帐号管理模块297.6 题库管理模块317.7 自动组卷模块347.8 试卷管理模块377.9 关键技术387.9.1 数据窗口中记录颜色的隔行显示387.9.2 数据窗口中实现数据列自动折行407.9.3 利用复合型数据窗口制作报

9、表40第八章 系统发布428.1 创建工程对象428.2 发布43结 论44致 谢45参考文献46附录47前 言考试是教师检查学生学习情况的必要手段,但出卷却是一种繁重的智力和体力劳动,传统的标准化试卷命题,需要由教学专家组成一个命题班子,根据许多优秀教师多年的教学经验,从贯彻教学大纲要求,到试卷意图的组织,经过反复的推敲,才能完成一份标准化的试卷。这样的命题方式不仅工作任务繁重而且试卷的标准化程度、难易程度、题量大小等各方面难以控制,难以形成有效的试题库,给试题和试卷的管理带来很多问题和困难。鉴于这种情况,利用计算机进行试卷的自动生成并逐步积累形成有效的试题库,对试题和试卷的管理将变得高效而

10、便捷,对提高工作效率,使试卷管理逐步走向正规化自动化将起到十分重要的作用。同时使出卷工作变得轻松愉快,从很大程度上减轻了教师利用传统的出卷方式组卷的繁重工作量,大大节省了老师的工作时间,便于教师有更多的时间和精力致力于教学方法的研究。今日, 随着计算机的应用的普及和硬件设备性能和软件制作水平的提高,为研制开发高性能的试题管理软件提供了条件。本系统采用PowerBuilder9.0为开发工具。系统分为题库编辑、自动组卷、试卷存储、试卷打印等功能,具体要求中下:建立一个包含多门课程的试题数据库,试题按照题型、章节和难度级别分类存放。允许教师增设新的课程题库、增删改试题、查询试题、根据预先设置的题型

11、和分值等相关参数自动组卷、对试卷进行格式编排、浏览和打印试卷、试卷存档。本文主要包含以下内容:(1)系统需求分析和系统功能设计。(2)开发环境及开发工具的选择,编程语言简介。(3)数据库的设计,介绍了数据库设计理论、系统中所用到的表的逻辑结构设计方法和设计过程等。(4)组卷策略以及实现PB与Word的通信。(5)功能模块的设计,具体介绍了如何实现各个功能模块,介绍了一些核心代码等。第一章 系统分析1.1 系统目标自动组卷系统是一个可适用各门课程题库的系统。只要题库是按知识结构分类录人的,自动组卷系统即可按照组卷要求,从题库的各部分随机抽取试题及相应的标准答案,分别生成试卷与标准答案。该组卷系统

12、适应规范化、科学化考试的要求,实用性强,便于推广使用。系统具有以下特点:1、开放性组卷系统适合各类课程的书面考试。试题库中试题的录入简单,也可以直接对试题库进行修改,易于使用。试卷的题数,可以自定义。在组卷系统中可以对组卷进行尽可能多的参数设置,以便可以组合出更加合理、符合要求的试卷。2、实用性在系统运行时可以直接对选题的范围进行修改。试卷和试卷的答案一并给出。如果在该题没有提供答案的情况下,也不出错,答案上给出题号。3、智能性组卷系统中抽题算法虽然是采用随机算法,但在抽题之前用户可以根据自己需要对组卷进行题型、题数以及章节分布进行尽可能精确的设置,实现人工智能化的控制。以便系统能够组合出更加

13、合理、符合用户要求的试卷。1.2 系统需求分析系统分为题库编辑、自动组卷、试卷存储、试卷打印等功能,具体要求如下: 1、 一个好的组卷系统必需要有一个足够庞大的题库做支持,所以系统首先要做好题库的管理,建立一个包含多门课程的试题数据库,试题按照课程、题型、章节和难度级别分类存放。允许教师增设新的课程题库、增删改试题、查询试题。2、 系统因该能够根据用户预先设置的题型、题数、分值以及章节分布等相关参数自动组卷、允许用户对试卷进行打印或把试卷另存为Word文本,以便进一步的编辑排版。3、 试卷要存档以便查询以及今后的管理。第二章 系统总体设计试卷自动生成系统是计算机辅助教学系统CAI( compu

14、ter- aided instruction)的重要组成部分。在计算机普及的今天,考试作为发现和选拔人才、资格认证、等级确定的有效手段.也正在朝着自动化、智能化的方向发展。对于从事高校教学的教师来说,有一个得心应手的试卷自动生成系统,可以减轻教师负担,避免重复工作,提高工作效率。本系统主要包括以下几个功能模块:设置参数查看试卷目录查看试卷关于自动组卷系统帐号管理题库管理自动组卷试卷管理添加试题课程管理增加帐号删除帐号修改密码退出系统查看试题更新课程添加课程帮助组卷 图2.1 系统功能模块图功能模块的具体说明:1、帐号管理对于本系统的一般用户可进行当前用户修改密码和退出系统操作;对于本系统的管理

15、员则还可进行帐号的添加和删除操作。2、题库管理包括课程管理和试题管理,可添加新课程,修改和删除指定课程信息;添加新试题,修改和删除指定试题。3、自动组卷填写试卷的基本信息,设置组卷的难度值、题型、数量、分值以及章节分布参数。采用随机算法,结合相关设置参数,组合出合理的、符合用户要求的试卷;用户还可以选择出同一学期同一课程的2份试卷(即A、B卷),并且使2份试卷的重复比例控制在最低范围。组卷完成后给出相应试卷以及答案。4、试卷管理用户可查询所有出过的试卷的目录,并且可以查看相应的试卷。用户可以把试卷打印或者另存为Word文本。第三章 开发工具及开发环境3.1 总体开发工具及环境本系统采用的软件开

16、发工具及环境如下:操作系统: WINDOWS XP。开发工具: PowerBuilder9.0。数据库:Access2003数据库。开发用机器的硬件配置:Celeron(R) 2.66GHz、512MB内存、80GB硬盘等。运行要求的配置:硬件环境:英特尔奔腾处理器,166MHZ或更高的处理器、 32M RAM-ROM驱动器、256色、1024*768分辨率显示器(推荐使用更高的分辨率和颜色深度)。软件环境:WINDOWS98/2000/XP。3.2 开发工具简介PowerBuilder是一个图形化的应用程序开发环境。使用PowerBuilder开发的应用软件由窗口构成,窗口中不仅可以包含按钮

17、、下拉列表框及单选按纽等标准的Windows控件,还可以有PowerBuilder提供的特殊控件。这些特殊控件可以使应用软件更容易使用,使应用软件的开发效率更高。例如,数据窗口就是PowerBuilder提供的一个集成度很高的控件,使用该控件可以很方便地从数据库中提取数据,很简单地检索数据,提供图形化的数据显示方式,创建统计功能非常强大的数据统计表。由于数据窗口对数据的操作是通过事务进行的,所以对数据的操作有很强的可靠性。这些都为开发功能强大的数据库应用软件提供了可靠的保证。商业化的软件开发要求有很好的移植性。PowerBuilder既可以跨平台开发,也可以发行跨平台软件。例如,在Window

18、s 95下开发的程序,可以不修改源程序而形成UNIX下的执行文件或Macintosh下的执行文件。在开发小组中,不同成员可以使用不同的开发环境,但由于PowerBuilder的支持,在不同的开发环境下看到的共享PowerBuilder对象是相同的,所以仍可以同时开发同一个应用程序。随着软件技术的不断发展,PowerBuilder 9.0及时地强化了开发功能,并提供了一些配套的开发工具,成为一种易于使用的、可伸缩的并经实践证明的快速集成开发环境。它在给用户提供一条转移到下一代平台的途径的同时,使用户仍能够保护和扩展现有的技术和应用上的投资。3.3 数据库的选择Access2003是微软公司开发的

19、基于Windows平台的小型数据库管理系统,是Office 2003 的组件之一。它承袭了旧版本Access的各项优点,又新增或完善了数据访问页、个性化菜单、internet/intranet、编程、安全保密等功能。自从1992年,Microsoft 公司发布Access1.0以来,随着Windows的普及,使用Access的人越来越多,它逐渐成为流行的数据库软件之一。 Access是一个面向对象的、采用事件驱动机制的小型关系数据库管理系统。在Access中,用户可以根据实际需要对数据进行分类,然后使用表对象分别存储每一种类型的数据,并建立起不同类型数据之间的关系,供报表使用。此时,每条信息仅

20、在一处存放,减少了冗余数据的产生,节省了宝贵的存储空间,同时也加快了更新数据的速度。在Access数据库中,任何有名字的事物都可以称之为对象。Access使用了与Windows 一致的风格,采取面向对象的方式,完成数据库的各种功能。极大地简化了用户的开发工作。针对用户在实际应用中的需求,Access数据库提供了表、查询、窗体、报表、页、宏和模块等七个对象,用于收集、存储和操作各种不同的信息。 为了便于使用,Access的每个对象都为用户提供了设计器和生成向导。用户可以在设计器中设计生成对象,或对生成的对象进行编辑;用户也可通过生成向导方便快速的生成一个完备的对象。如上所述,Access 作为关

21、系数据库开发具备了许多优点,所以本系统所采用的数据库开发工具为Access。3.4 SQL基础SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、Microsoft SQL Server、Access、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩

22、展功能用于它们的系统。但是,标准的SQL命令,比如Select、 Insert、 Update、Delete、Create和Drop常常被用于完成绝大多数数据库的操作。MS SQL Server 就是用的Transact- SQL 。SQL语言有着非常突出的优点,主要是:非过程化语言;统一的语言;所有关系数据库的公共语言。非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的

23、输入。SQL不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。 统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。SQL为许多任务提供了命令,其中包括:查询数据;在表中插入、修改和删除记录;建立、修改和删除数据对象;控制对数据和数据对象的存取;保证数据库一致性和完整性。以前的数据库管理系统为上述各类

24、操作提供单独的语言,而SQL 将全部任务统一在一种语言中。所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。3.5 SQL语句SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询而且用于数据库中的数据修改和更新,概括起来它可以分成以下几组:DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;DDL(Data Definition Language,数据定义语言): 用于定义数据的结构,比如创建、修改或者

25、删除数据库对象;DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。DML组可以细分为以下的几个语句: SELECT:用于检索数据;INSERT:用于增加数据到数据库;UPDATE:用于从数据库中修改现存的数据;DELETE:用于从数据库中删除数据。第四章 数据库的开发与设计数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,资料的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等等。由于数据库设计的重要性,人们提出了许多数据库结构设计的技术。但这些技术方法与数据库系统

26、并没有统一的相对应的模式,而是要根据应用系统对数据库不同的需求来选择不同的技术方法,甚至是几种不同的方法的融合。在本系统中数据库的设计还要注意灵活,具有一定的通用性,把试题库做成通用的试题库。4.1 数据库需求分析数据库结构设计的第一阶段,也是非常重要的一个阶段是数据库需求分析。在这个阶段主要是收集基本资料以及数据处理的流程,为进一步设计打下基础。根据以上的功能分析,系统的业务流程图如下:用户课程、试题维护试卷参数设置组卷打印、保存试卷 试题库 试卷库图4.1 系统业务流程图基于上面对整个软件功能的定义,并考虑到要使系统具有扩展性和较强的适应性,在系统数据库系统中,所包含的数据应该包括用户信息

27、表、课程信息表、试题表、试卷题型参数表、试卷章节分布表、试卷表、试卷目录表。4.2 系统逻辑分析概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用的设计。也就是要将概念上的结构转化为Access数据库系统所支持的实际数据库模型。该数据库系统要求具有以下方面的特点:结构合理,所建立的数据冗余度小,独立性强。建档、修改、查询、统计快而准确。 保密性、可靠性好。数据库的逻辑结构设计如下:(1) 用户信息表(user_info):帐号(user_id),密码(user_pwd),用户名(user_name)(主码为用户名(user_id)表4.1 用户信息表(user_

28、info表)表结构(2) 课程信息表(course):课程代号(cid),课程名称(course)(主码为课程代号(cid))表4.2 课程信息表(course表)表结构(3) 试题信息表(test):试题编号(id),题型(type),课程名称(course),章(chapter),节(section),题目(test),答案(key),试题难度(difficutly),题目空格数(blanknum)(主码为试题编号(id))表4.3 试题信息表(test表)表结构(4) 题型参数表(param):参数编号(id),题型(type),题数(num),每题分值(mark)(主码为参数编号(id

29、))表4.4 题型参数表(param表)表结构(5) 章节分布参数表(chapparam):参数编号(id),章(chapter),题数(num)(主码为参数编号(id))表4.5 章节分布参数表(chapparam表)表结构(6) 试卷目录表(list):试卷编号(id),课程名称(course),学期(term),试卷类型(type),组卷教师(teacher),考试班级(class),考试专业(spec),考试人数(num) ,试卷难度(diff)(主码为试卷编号(id))表4.6 试卷目录表(list表)表结构(7) 试卷表(paper):试卷编号(id),大题编号(type_no),

30、标题(testtype),小题编号(testno),题目(test),答案(key),试题编号(testid),题型(test_type)(主码为试卷编号(id)和试题编号(testid))表4.7 试卷表(paper表)表结构4.3 数据库的连接在PowerBuilder开发环境和应用程序能够操作数据库中的数据之前,必须首先与数据库建立联系,也就是连接到数据库上。PowerBuilder与数据库的连接建立在驱动程序之上。PowerBuilder通过数据库驱动程序接口实现与各种类型数据库的连接。接口的参数可以通过一个Database Profile来完成。对于每一个可能要用到的数据库,均可以建

31、立一个Database Profile。在此Database Profile中所记录的是建立到数据库的一些连接信息,如数据库管理信息(DBMS)的类型、用户账号、口令、数据库以及其他的连接参数。当开发环境通过Database Profile连接到数据库上之后,在PowerBuilder中使用数据库画笔可实现对该数据库中表格、视图等的操作,如创建表、修改表、删除表、增加删除记录。PowerBuilder中设计数据窗口的时候,通过“Database Profile”对话框实现与数据库的连接。在应用程序中则一般是在应用程序对象中写连接数据库的程序代码,使得应用程序开始运行并实现与数据库的连接。4.3

32、.1 程序设计时与数据库的连接在程序设计中可以使用“Database Profile”对话框完成配置和连接。如果已经定义了所需数据库的配置,那么就可以通过单击选中该配置,然后单击“Connect”按钮,将系统连接到相应的数据库上。如果没有定义数据库配置,需要创建新的数据库配置。首先选择Tool菜单中的Database Profile子菜单,或者单击图标,出现“Database Profile”对话框。在其中选择要配置的数据库使用的数据库接口,“ODB ODBC”节点。然后,单击“New”按钮,打开“Database Profile Setup-ODBC”对话框,并设置所要连接数据库的配置信息。

33、完成设置后,单击“Preview”标签页,在该标签页中列出了数据库刚刚配置的语句。单击“OK”按钮,返回到“Database Profile”对话框。这时“ODB ODBC”节点下面就多了刚刚配置好的Database Profile。选中该配置,单击该对话框中的“Connect”按钮,系统即通过专用接口连接到数据库上。当PowerBuilder 9.0通过Database Profile 连接到数据库上之后,在程序上之后,在程序设计的创建数据窗口对象时,可以直接显示该用户在数据库中可以修改的表,通过选择某个(或者多个)表可以将它们和数据窗口对象连接起来。4.3.2程序运行时与数据库的连接在程序

34、设计是和数据库的连接Database Profile对话框来实现的,在程序运行时,则需要通过应用程序对象来实现和数据库的连接。在应用程序对象中实现与数据库连接,不在通过“Database Profile”对话框,而是使用Transaction事物对象。一般数据库的连接是在应用程序开始运行是建立起来的。PowerBuilder9.0开发的应用程序的入口点是PowerBuilder9.0的应用程序对象。每个PowerBuilder应用程序都必须有一个、而且只能有一个应用程序对象,在该应用程序对象中写入与数据库连接的程序代码,从而使得应用程序一开始变实现与数据库的连接。在“Database Prof

35、ile”对话框完成设置后,单击“Preview”标签页,在该标签页中列出了配置的语句。将连接数据库的代码复制到应用程序对象中,即可完成代码的编写。第五章 组卷策略设计5.1 自动组卷系统组卷系统的主要任务是根据用户的需要,用当前数据库中的试题组成一套符合用户需求的试卷。本系统采用随机抽题策略实现自动组卷功能,即由用户输入要添加的试卷名、学期、试卷类型(即A卷或B卷)、试卷难度、考试对象信息、试卷中各种题型的具体数量以及每小题的分值和试卷的章节分布范围,然后通过系统随机抽题策略向数据库中的试卷表中添加一张各个题型题量固定的试卷,并在试卷目录表中保存该试卷的基本信息,以便于今后试卷的查询管理。5.

36、2自动组卷中随机数选取问题在自动组卷中首先要考虑的就是如何按照用户选择的组卷方案在数据库中随机抽取试题。要想随机抽取试题就必须产生随机数,因此随机数的产生问题才是问题的真正关键点。用计算机产生随机数的方法有很多,有用数学公式实现的,也有按照系统时间产生的,还要按照当时的系统中的线程数产生的等等。PowerBuilder 9.0环境本身已经提供了产生随机数的函数Rand(),不过在没有初始化的情况下,每次运行程序所获得的随机数都是一样的,因此Rand()也被称为伪随机数函数。要实现真正的随机还必须在Rand()函数之前调用函数Randomize()。Randomize()可以初始化伪随机数发生器

37、,这样让应用程序每次使用不同的伪随机数序列。Randomize()的语法为Randomize ( n ),其中参数n:数值型变量或表达式,指定伪随机数生成器使用的起始值,不同的起始值可以生成不同的伪随机数序列。当n的值为0时,该函数把系统时钟作为伪随机数生成器的起始值,这样可以生成不可重复的伪随机数序列。当n的值不为0时,可以产生不同的伪随机数序列,但是,如果两次使用相同的伪随机数生成器起始值,那么两次生成的伪随机数序列相同。5.3自动组卷的具体实现由于组卷时仅产生随机数还不能满足要求,因为组卷要求的是从一定量的试题中抽取确定题量的随机试题,因此问题也就变成了从一组数中随机抽取确定的数。在本系

38、统中这组数的确定是通过以指定的课程名称和试题题型为检索条件对数据库中的试题表进行检索,并把检索结果显示在指定的数据窗口,而此时数据窗口中记录的总条数就是这组数。在具体的程序实现中是把数据窗口中记录的总条数做为Rand()函数要产生的伪随机数的上界,由系统随机产生一个随机数,以该随机数做为数据窗口的某一特定行,即选定试题。然后将该试题的相关信息做为一条新的记录存入相应试卷表中。不过在存入试卷表之前要对试题的相关信息与组卷要求进行比较,只有符合条件的试题才能存入试卷表。具体的组卷程序流程如下: 在试卷目录表中插入新的试卷信息,并取得试卷编号id获取组卷的参数j=1;i=试卷题型种类j=i 否 是按

39、指定的课程和题型检索试题表中符合条件的试题总条数km=1; type_numj=j题型的题数m=type_numj 否 是获取随机数:randomize(0)g_rownumber=rand(k)获取数据窗口中第g_rownumber条的试题信息判断试题信息是否满足组卷要求 否 是将该试题插入试卷表中,以id为编号,并记录修改相关信息组卷结束图5.1 组卷程序流程图本系统在程序设计过程中,凡从数据窗口中每取出一道符合组卷要求的试题,便将该试题存入系统的试卷表中,并把该试题从数据窗口中删除,以免在随后的选题过程中选出重复的试题,保证整份试卷试题的重复比例为0。具体程序实现代码如附录程序1所示。5

40、.4试卷难度的程序控制本系统在组卷时为试卷提供3种难度选择,分别为易、中、难,分别对应为0.10.4、0.40.6、0.60.9。而在试题录入的时候为试题提供5种难度选择,分别为0.1、0.3、0.5、0.7、0.9。为了能够有效控制试卷的难度,对于整份试卷中的每种难度的试题的总分占试卷总分的最大比例进行人为的设置,具体在程序中设置如下:/设置对应试卷难度的相应难度值试题的分值的最大值int sum_1,sum_2,sum_3,sum_4,sum_5/ sum_1,sum_2,sum_3,sum_4,sum_5分别为难度值为0.1、0.3、0.5、/0.7、0.9的试题分值的最大值,sum为试

41、卷的总分if diff=易 thensum_1=round(0.4*sum,0)sum_2=round(0.6*sum,0)sum_3=round(0.1*sum,0)sum_4=round(0.1*sum,0)sum_5=round(0.1*sum,0)elseif diff=中 thensum_1=round(0.2*sum,0)sum_2=round(0.2*sum,0)sum_3=round(0.5*sum,0)sum_4=round(0.2*sum,0)sum_5=round(0.2*sum,0)elsesum_1=round(0.1*sum,0)sum_2=round(0.1*su

42、m,0)sum_3=round(0.1*sum,0)sum_4=round(0.6*sum,0)sum_5=round(0.4*sum,0)end if说明:函数Round ( x, n ) 返回将x四舍五入到小数点后第n位的数值。第六章 在PB中创建Word文档PB(PowerBuilder)是Sybase公司推出的一种优秀的数据库开发工具,利用它的数据窗口控件可以快速地开发出一个数据管理系统。在实际应用中,很多场合都很注重报表的格式,需要不同类型的报表,所以必须提高报表格式的多样性。虽然可以利用PB设计出具有打印功能的窗口,但是由于格式是事先规定好的,用户很难根据需要进行修改。Word是大

43、家熟悉的一种文字处理工具,具有强大的编辑与打印功能。如果能够将数据源动态地导入到Word文档中,然后在Word中调整和打印,用户的自由度就比较大。下面介绍一种通过OLE技术嵌入Word文档的方法。6.1 PB通过OLEOBJECT使用WORD在编程的时候,常常需要访问Word文档。除了使用DDE之外,PowerBuilder还有一种操作Word的方式,就是通过OLEObjcet和OLEControl。OLEObject是不可视的OLE对象,而OLEControl则是可视的窗口控件。由于OLEObject较后者更灵活方便,如果不是必须在窗口上显示Word文档内容,使用前者是更好的选择。程序开发员

44、在使用OLE连接Word文档的时候,常常遇到这样两个问题:第一:如果某文档已经打开,再使用程序调用的时候,会产生程序运行错误;第二:经常发现创建的WinWord.exe进程没有能够正常终止。以上两个错误产生的原因:一是由于使用OLEObjectVar.ConnectToObject(“”)的时候,这个文件已经打开了,此时使用ConnectToObject会造成错误。二是使用 OLEObjectVar.ConnectToNewObject (“Word. Application”) 时创建了新的Winword.exe进程,但是没有执行关闭这个新的应用的操作。 对上述问题可以采用以下方法进行解决:

45、(1)打开文档首先,使用.ConnectToObject(“”)来打开一个空Word文档。打开成功后,使用.Application获得对Word.Application的引用并设置Applicatin.Visible=TRUE,并关闭刚才打开的空文档。然后,使用Word.Application的Open方法打开要使用的文档。这样的方法打开文档,如果当前有正在运行的Windows.exe进程,就不必打开新的进程,而是使用当前的进程,并且可以成功地对当前的进程获得引用。(2)关闭文档首先,我们关闭程序打开的使用的文档,然后判断Application是否还有其他的打开的文档。如果没有其他打开的文档,

46、则调用Application的Quit方法,让Application退出,结束Winword.exe的程序进程。如果确定以后还经常的调用Word,也可以不关闭Winword.exe的进程,这样可以每次很快的打开Word的文档。 不过,由于通过OLEObject调用Word等Office有许多限制,所以尽管用这个方法能够解决许多问题,但是还是有许多需要特别注意的地方:第一,使用ConnectToObject连接的文档,不能被锁定(比如被以前的进程打开,或者被当作模板新建立了一个文档,都可能锁定),否则将会产生未知错误(返回值-9);第二,对Document的各种操作,要保证Word.Applic

47、ation.Visible=TRUE,否则调用可能会产生程序错误.6.2创建模板文件首先,我们建立一个试卷样式的模板文件,取名为“试卷模板.doc”。根据需要录入静态文本,并在需要插入动态数据的地方插入“书签”。“书签”名字与PB数据源中列的名字一致,如下图所示。图6.1 模版文件6.3编写程序1 数据窗口d_list和d_paper,分别取自试卷目录表和试卷表,数据模型如试卷目录表 试卷表试卷编号 long课程名 char(20)学期 char(20)类型 char(6)试卷编号 long试题编号 long大题编号 char(6)大题标题 char(50)小题编号 char(6)题目 cha

48、r(32766)答案 char(32766)题型 char(10)图6.2 数据模型2创建窗口w_paper,其中包含两个数据窗口dw_3和dw_4,分别对应数据窗口d_list和d_paper,但在实际的程序运行过程中,这两个数据窗口是不可视的。再插入两个单行编辑器sle_1和sle_2,分别用于用户录入和选择模板文件与文档保存路径。在这里省略选择文件与路径按钮的编程代码。3添加“保存”按钮。该按钮Clicked事件代码如附录程序2所示。当用户单击“保存”按钮后,程序将利用OLE技术连接Word,在相应的位置填写数据,生成试卷,并且保存在指定目录下。程序运行时界面如下图所示:图6.3 程序运

49、行界面在上面的程序运行界面中,显示试卷内容的数据窗口是复合型(Composite)显示风格,是实现打印功能的数据窗口,而实现与Word进行数据通讯的数据窗口在当前窗口中是处于隐藏状态,但它们之间的内容是一致的。保存到Word中的文本效果如下图所示:图6.4 保存到Word的效果图一 选择题样式图6.5 保存到Word的效果图二 填空题样式图6.6 保存到Word的效果图三 编程题样式把试卷保存到Word中,用户就可以进行更加自由的编辑修改。第七章 系统模块页面和代码设计7.1 应用程序对象设计PowerBuilder9.0开发的应用程序的入口点是PowerBuilder9.0的应用程序对象,运

50、行是程序从这个入口点启动,所以应用程序对象的设计是应用程序设计的开始。应用程序对象的事件不多,一共只有6个,分别是Open、Close、Idle、SystemError、ConnectionBegin、ConnectionEnd事件。1、在应用程序对象的Open事件,输入如下程序代码:/ Profile sysSQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=system/连接数据库connect;open(w_login) /打开登录窗口; 2、在应用程序对象的Open事件,输入如下程序代码:/

51、断开数据库连接disconnect;7.2系统登录模块程序启动后,首先进入系统登录窗口验证用户密码。系统登陆窗口主要实现如下功能: 选择帐号,凭口令进入系统。 确认用户的身份及使用权限。 支持键盘和鼠标操作。系统登陆窗口如图7.1所示。图7.1 登录界面7.3主程序界面设计在系统登录成功后,进入主程序界面。主程序界面主要实现如下功能: 根据登录用户的权限设置系统的菜单。 选择主界面的菜单,调用相应程序,进行相应操作。本应用程序的主要功能都是在主窗口w_main及在其下打开的众多窗口中完成的。采用的是多文档界面。另外还加入了背景图片。主程序界面如图7.2所示。图7.2 主程序界面在窗口w_mai

52、n的open () 事件中加入如下代码用于打开背景图片:opensheet(w_blankground,w_main,5,Layered!)在窗口w_main的open() 事件中加入如下代码用于根据当前登录的用户的权限设置菜单的可见性:if g_user=admin then /当前用户为系统管理员m_main.m_用户管理.m_增加帐号.visible=truem_main.m_用户管理.m_删除帐号.visible=trueelsem_main.m_用户管理.m_增加帐号.visible=falsem_main.m_用户管理.m_删除帐号.visible=falseend if7.4菜单

53、的设计在菜单中设计应用程序的主窗口所连接的菜单m_main。该菜单的结构如下图所示。图7.3 菜单的结构由于主窗口采用了多文档。所以每一个按钮都用来打开一个窗口。(1)帐号管理模块1) 增加帐号(只有系统管理员登录才可用):Clicked事件程序代码:OpenSheet(w_adduser,w_main,5,original!)2) 删除帐号(只有系统管理员登录才可用):Clicked事件程序代码:OpenSheet(w_deluser,w_main,5,original!)3) 修改密码:Clicked事件程序代码:OpenSheet(w_changepwd,w_main,5,origina

54、l!)4) 退出系统:Clicked事件程序代码:halt /kill the program(2)题库管理模块1) 添加课程:Clicked事件程序代码:OpenSheet(w_addcourse,w_main,5,original!)2) 更新课程:Clicked事件程序代码:OpenSheet(w_updatecourse,w_main,5,original!)3) 添加试题:Clicked事件程序代码:OpenSheet(w_addtest,w_main,5,original!)4) 查看试题Clicked事件程序代码:OpenSheet(w_searchtest,w_main,5,o

55、riginal!)(3)自动组卷模块设置参数:Clicked事件程序代码OpenSheet(w_setpaperparameter,w_main,5,original!)(4)试卷管理查看试卷:Clicked事件程序代码:OpenSheet(w_paperlist,w_main,5,original!)7.5 帐号管理模块(1)增加帐号只有系统管理员才有权限调用此模块,用于增加系统的合法用户,而且只能添加当前系统中未存在的帐号,界面如图所示:图7.4 增加帐号界面(2)更新帐号只有系统管理员才有权限调用此模块,用于修改和删除系统的用户,而且系统管理员的帐号不能被删除,界面如图所示:图7.5 修

56、改帐号界面图7.6 删除帐号界面(3)修改密码用于修改当前登录用户的密码,界面如图所示:图7.7 修改密码界面7.6 题库管理模块(1)添加课程本系统是一个通用的自动组卷系统,用户可以根据自己需要,任意添加新的课程,实现对该课程的自动组卷,界面如图所示:图7.8 添加课程界面(2)更新课程用户可以实际需要对已有的课程信息进行修改和删除,但这些操作会对数据库中其它已存在的相关信息做出相应修改和删除,用户应该谨慎操作。界面如图所示:图7.9 更新课程界面图7.10 修改课程信息图7.11 删除课程(3)添加试题用于用户添加新的试题,用户在操作时应尽量填满所有与有关试题的信息,这样有利与后续操作的开

57、展,界面如图所示:图7.12 添加试题界面(4)查看试题用户可以根据需要设置相应的检索条件检索出所需的记录。本界面还提供数据窗口的模糊查询。同时,用户还可以对指定记录进行相关的修改和删除操作,但这些对于数据库中已经存在的相关信息没有影响。界面如图所示:图7.13 查看试题界面图7.14 修改试题界面图7.15 删除试题界面7.7 自动组卷模块设置参数这是整个系统的关键模块,但在组卷用户一定要确认数据库已存在足够多的试题用于组卷。本系统在设计时可保证在同一份试卷不存在两道相同的题目。为保证组卷的顺利进行,用户务必要按顺序尽量填满试卷的信息以及尽量细的设置组卷的参数,以便系统能够组合出最贴近用户需

58、求的试卷。界面如图所示:图7.16 设置参数界面图7.17 添加试卷题型参数界面图7.18 修改试卷题型参数界面图7.19 删除试卷题型参数界面图7.20 添加试题分布参数界面图7.21 修改试题分布参数界面图7.22 删除试题分布参数界面7.8 试卷管理模块查看试卷用户可根据需要设置相关的查询条件从数据库中检索出符和用户要求的试卷记录。用户还可以查看指定试卷记录的试卷,进而对该试卷进行进一步处理,也可以删除指定的试卷记录,但系统同时也会从试卷表中删除相应试卷的试题信息。界面如图所示:图7.23 查询试卷界面图7.24 试卷查看7.9 关键技术7.9.1 数据窗口中记录颜色的隔行显示数据窗口在

59、Retrieve后往往会返回很多条记录,而这些记录中的数据复杂,通常会造成视觉上的不便。因此如果能够使行与行之间用不同的颜色进行区分,例如第一行记录的背景色是浅白色,第二行记录的背景色是浅灰色,第三行又是浅白色,第四行又是浅灰色依次类推,既能极大地方便使用者,又能让您的应用程序增色不少。同时当使用者点击当前行时,颜色就会变成浅黄色,这样的效果谁都会喜欢。要想让显示的数据达到上述效果,我们首先应该知道的是这些表现形式应该在数据窗口对象的什么地方体现出来。很显然,数据窗口中的所有数据是在细目带(Detail)中列出的,因此只要在细目带中设置列对象(Column)的某项属性就会影响到它的显示效果。具

60、体实现如下:打开数据窗口,选择所有的列(Column)。在Properties窗口中翻到Font标签页,单击Background Color属性旁边的一个带有红色图标的小按钮。见图7.25。图7.25 点取红色小按键在Expression表达式一栏中输入(见图7.26):if(currentrow()=getrow(),rgb(255,240,194),if(mod(getrow(),2)=1, &rgb(255,254,249) , rgb(247,247,239)图7.26 输入表达式注:表达式中rgb(255,240,194)为浅黄色,rgb(255,254,249)为浅白色,rgb(247,247,239)为浅黄色。返回预览窗口可以查看效果,见图7.27图7.27 效果图相关函数说明CurrentRow()与GetRow()函数是数据窗口信息函数。1. CurrentRow()功能描述:得到数据窗口当前得到输入焦点的行的行号。语法:CurrentRow()返回值:Long。函数执行成功时返回当前行的行号,无当前行时返回0。2. GetRow()功能描述:返回数据窗口相应带中的当前行行号。语法:GetRow()返回值:Long。函数执行成功时返回相应带中当前行的行

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!