




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。第一章绪论管理信息系统是一个由人和计算机等组成的,能进行管理信息的收集、传递、加工、保存、维护和使用的系统,它能实测国民经济和企业的各种运行情况;利用历史数据预测未来;从全局出发辅助管理决策;利用信息控制企业的行为、帮助实现其规划目标。简言之,管理信息系统是一个以计算机为工具,具有数据处理、预测、控制和辅助决策功能的信息系统。本课题的发展概况、研究意义信息作为生产力中最活跃的因素,很早就在人类经济生活中发挥着不可替代的作用,但把信息纳入企业经营管理系统中高效处理和应用是在计算机创造以后的50年代末。
当前人们所提到的管理信息系统,一般是指以计算机为工具,对管理信息进行收集、存贮、检索、加工和传递,使其应用于组织机构及企业管理领域的"人-机系统",该系统是70年代初"后工业经济"时代的产物,在企业管理信息系统在其发展的初期,是单一的人—机系统,系统功能简单,效率低,对管理的作用有限。
进入20世纪80年代末,随着计算机网络和通信技术的大力发展,企业管理信息系统进入网络化的发展时期。世界发达国家已建立起了完善的先进的管理信息系统体系,在其社会经济发展领域中发挥着巨大的作用。
中国的管理信息系统大发展是在80年代末90年代初,国家相继建立起了"金卡"、"金关"、"金桥"工程,多数企事业单位建立了局域网和广域网管理信息系统。随着世界经济和中国经济逐步向知识经济迈进,无论是基于工业经济的管理信息系统,还是面向少数专家和管理人员的专家系统(ES)或决策支持系统(DSS),其处理对象和服务对象,自身的系统结构,处理能力,都有了进一步的发展。信息在社会经济系统中始终起着至关重要的作用,它在控制、预测、人类认识和心理等方面极大地影响着系统的运转。而信息处理的手段更是直接关系到上述各个方面,信息技术不但影响着各个组织系统的状态,更重要的是它不断地改变着它们的结构和运行规则。因此,管理信息系统作为信息技术的主要应用已经渗入社会经济系统的各个领域。招生管理系统是"数字化校园"整体解决方案的有机组成部分,是其它各系统学生基本数据的来源,与办公自动化、教务、人事、科研、后勤等系统互相协作,相辅相成,共同构成"数字化校园"。系统采用C/S体系结构Client负责提供表示式逻辑、显示用户界面信息、访问数据库服务器;Server则用于提供数据服务。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参加与开发的技术维护人员补充、维护;系统具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、打印等功能该系统的设计从可行性上分析,尽管该系统的作用并不是很完美,但对学校的招生工作却有非常重要的意义。近年来学校投入大量资金实现了办公自动化。建立了学校的内部网络,但招生管理却还是传统的手工作业方式,没有开发相应的应用软件。开发这个管理系统,客户操作界面设计个性化,具有直观、简单、方便的特点,能够满足客户个性化的操作要求。同时由于开发是针对性的,因此,操作界面漂亮、形式多样,可充分满足客户自身的个性化要求,能够说它对学校内部对学生招生管理发挥着重要作用。1.2本课题的目的、主要解决的问题招生管理系统是各个学校在招生工作中的重要环节,在过去的时间里学校的招生工作都是把学校的招生信息以表格的形式把信息记录下来,这样的操作是不灵活的也是不安全的,随着网络的发展,现在的招生管理能够在网上进行招生,这样对学校来说是节省了时间,可是对于进入学校的学生来说她们的录取、报到、交费、报名等信息就需要一个学校内部管理,这就需要一个和B/S模式进行互补来完成工作的管理系统,也就是C/S模式的招生管理系统。C/S模式一般说来,在这种模式下,服务器只集中管理数据,而计算任务分散在客户机上,客户机和服务器之间经过网络协议来进行通讯.客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器.这种模式的优点充分利用了客户机的性能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是经过网络协议进行的,是一种逻辑的联系,因此物理上在客户机和服务器两端是易于扩充的。它是当前占主流的网络计算模式。C/S模式优点:由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。客户操作界面设计个性化,具有直观、简单、方便的特点,能够满足客户个性化的操作要求。同时由于开发是针对性的,因此,操作界面漂亮、形式多样,能够充分满足客户自身的个性化要求。因此,本系统解决如下问题:(1)它有效地解决了手工方式查找所带来的费时、费力、易出错问题,实现了综合信息的查询、修改、删除,打印,提高了招生管理工作的准确性和效率性。(2)功能强、稳定性好、操作简单、维护方便。能给学校对学生招生的管理带来极大的实用价值。(3)利用权限设置解决了系统的安全问题。(4)能够对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。本系统一切从实际出发,充分考虑了招生的内部管理、信息交流等方面的复杂需求,实现招生的有效管理,真正为学校招生管理提供一个电子平台。第二章系统开发方案2.1研究课题开发方案的特点及优缺点分析经过四年的大学学习,在我所用到的数据库开发软件中,我觉得PowerBuilder9.0,SQLserver是开发本系统最佳组合也是我所熟悉的工具。2.1.1系统方案选择的特点PowerBuilder9.0是一种高效而快捷的集成开发环境,它提供了可视化的、面向对象的、基于客户机—服务器的开发环境。
1.开放式数据库联接ODBC环境
这种体系结构能更好地满足学校的实际需要,有利于应用系统的移植和扩充。当前,市场上流行的各种数据库系统软件,如Oracle,Informix,Sybase等,各行其道,使用户无所适从。然而PowerBuilder为这些数据库提供了公共的前端工具,提供了开放式数据库连接ODBC,不但适用于各种数据库管理系统,具有很好的兼容性,而且还能给已有的数据资源带来全新的图形界面。
2.基于客户机/服务器的体系结构
基于客户机/服务器(Client/Sever)的体系结构能够减少硬件平台的投资,并能完成大型主机的功能,而且能够集中数据的存储和管理,实现资源的共享,降低维护的难度,还能集中实施企业规则,实现企业信息的标准化。
3.面向对象的应用程序开发方法
一个对象是一个类的具体表现,在功能上它与其它程序保持独立,一个定义良好的对象具有封装的数据和功能。
对象能够继承。函数、事件、窗体、菜单、用户对象都能够继承,经过继承,能够快捷地开发出全新的满足特定要求的对象。如果没有继承,开发者将不得不每次在编写相似对象时使用大量重复性代码。有时她们应用全局函数来减少冗余代码,但这会使代码要完成的任务复杂化。在GUI环境下,友好的用户界面极为重要,其中标
准化是一种很好的方法。在特定类型窗口中许多细节都是相同的,如果不用父类对象,必须为这些事件不断地进行编码,如果从这个窗口到那个窗口代码不同,将不能保证一致的用户界面,因此必须设计一个单一代码源,以保证用户界面的一致性。经过在接口库的父类对象中编写的界面逻辑代码能够实现这点。一个好的父类库能够大大地加快项目开发的进度。
4.可视化的开发环境
用户不用了解WINDOWS和C编程技术,经过图形化的交互操作,就能够设计实现应用系统,开发出美观、简洁的图形化界面来。
5.强大的数据提取能力
PowerBuilder提供了功能强劲的数据窗口控制(DataWindowsObject)。数据窗口对象能够用于联接数据库,获得记录,以各种风格显示数据和更新数据库。SQLServer是微软公司最新版的大型数据库服务器,其性能指标在各方面都有赶超Oracle数据库的趋势。在经历了SQLServer6.5和7.0两个版本的尝试后,微软公司终于开始向大规模的业务领域进发了。随着信息技术的发展,计算机处理数据的方式也发生着变化,文件管理系统--数据库管理系统。MicrosoftSQLServer是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果。
它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其它服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。除这些核心企业品质外,SQLServer还为您的数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,SQLServer是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言(XML)的核心支持以及在Internet上和防火墙外进行查询的能力。当前国内的一些关于微软平台的数据库编程教程,喜欢使用Access作为数据库平台的案例,并展开相关的内容。这其实对于开发真正的数据库应用并没有直接的帮助作用,只能使大家停留在应用的初级阶段。SQLServer提供的非常傻瓜的缺省安装和使用模式,其上手难度并不比Access大。另外,SQLServer能够兼顾小、中、大规模的应用,有着远远比Access强大的伸缩性。因此,有了PowerBuilder9.0强大的性能和功能支持,再配合其一向为人称道的易用性,SQLServer能够说成为了开发者手中的一柄利器!因此我选择PowerBuilder9.0和SQLServer作为系统开发工具。2.1.2优缺点分析本系统采用客户机/服务器(client/server,简称C/S)模式。C/S优点:由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。客户操作界面设计个性化,具有直观、简单、方便的特点,能够满足客户个性化的操作要求。同时由于开发是针对性的,因此,操作界面漂亮、形式多样,能够充分满足客户自身的个性化要求。C/S缺点:由于是针对性开发,因此缺少通用性的特点,业务变更或改变不够灵活,需要重新设计和开发,增加了维护和管理的难度,进一步的业务拓展困难较多。需要专门的客户端安装程序,分布功能弱,不能够实现快速部署安装和配置。兼容性差,对于不同的开发工具,相互之间很难兼容,具有较大的局限性。若采用不同工具,需要重新改写程序。开发成本较高,需要具有一定专业水准的技术人员才能完成。2.2具体实现中存在的问题及解决办法1.数据库结构设计的一个非常重要的阶段就是数据库需求分析阶段。就在这个阶段主要是收集基本数据以及数据处理流程,为以后进一步设计打下基础。需求分析主要解决两个问题:内容要求调查应用系统用户所操作的数据,决定在数据库中存储什么数据。处理要求调查应用系统用户要求对数据进行什么样的处理,理清数据库中的各种数据之间的关系如何。解决这两个问题的时候,程序设计员需要向应用系统用户做详细的调查,保证信息收集的完整性。现在软件开发过程中最常见的需求分析技术是快速原型法。其实质就是快速建立展示目标产品主要功能的软件,在开发过程中根据用户反馈对模型不断修改、完善。因此其最重要的一方面体现在”快速”上,要尽可能快的建立原型。第二方面是所构造的原型必须能够改变,根据用户反馈对模型不断修改、完善。其示意图如图1所示。在开发本系统过程中,基本遵循快速原型法原则,我感觉这种方法最大的优点是开发周期短、见效快、用户参与性强、实用性强。快速原型验口快速原型验口计划验口实验测试退役设计验口进行状态集成测试变化需求验口图12.数据库设计中的其它问题(1).数据完整性数据完整性一般包括实体完整性,域完整性,引用完整性。这些完整性的实现在PB中都有所体现:※实体完整性经过建立主键索引能够保证各个主键字段的完整性,同时建立索引也方便用户更快地访问数据。※域完整性经过建表时设置的数据类型和数据库规则以及合法性检验等实现。※引用完整性能够经过触发器或其它引用完整性约束来实现。(2).数据安全性安全性设计考虑两方面:※外来破坏为此,给系统设定密码及权限设置,不同的权限能够对系统做不同的操作。※数据的以外破坏利用PB提供的数据管道功能,能够设计并实现数据的定期备份或用SLQServer里的备份功能。第三章过程设计3.1系统流程图数据流图是表示数据转换和数据操作的图形工具,以揭示来自状态模型行为的细节问题。图2是招生管理数据流图(DFD)顶层:学生招生办学生招生办将顶层的招生管理系统细化为:学生招生办学生招生办招生办学生信息表3.1.1开发流程3.2数据库逻辑结构的实现概念结构是独立于实际数据模型的,必须将其转化为逻辑结构后才能够进行数据库应用设计。也就是将上面的数据库概念转化为SLQServer数据库系统所支持的实际数据模型。形成数据库中的表格,以及各表之间的关系。”招生管理系统”数据库各表格的设计结果如下面几个表格所示。学生报到表:分数线设置表:学生录取报名表:学生交费表:省份表:特长生报到表:特长生录取报名表:系统用户表:3.3概念设计概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。
概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的基础。
概念设计中自顶向下的实体分析方法,即常见的实体联系模型(简称E-R模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R模型是建立概念性数据模型的有力工具。本系统E-R图:学生类别学生类别专业招生办学生学生实体E-R图:学生学生3.3.1建立数据库及数据字典建立数据库为了有效地保存和移植原有数据,因此,招生管理系统后台数据库采用SQLserver,数据库的建立就用SQLserver里的企业管理器建立数据库,然后为数据库添加系统所需要的数据表(系统用户表、学生报到表、学生录取报名表、省份表、特长生报到表、特长生录报名取表、学生交费表、分数线设置表),建立好数据库后就用PowerBuilder9.0进行连接进行系统开发。数据字典数据字典是关于数据的信息的集合,也就是说是对数据流图中包含的所有元素的定义的集合。它对数据流程图加以补充说明的工具,为数据库用户、数据库管理员、系统分析员和程序员提供了某些数据项的综合信息,数据字典经过数据元素和数据结构来描写数据流、数据存储的属性。数据字典中有六类条目:数据元素、数据结构、数据流、数据存储、处理过程、外部实体。不同类型的条目有不同的属性需要描述,现在就以”学生”这个对象分别说明。(1)数据元素是最小的数据组成单位,也就是不可再分的数据单位,它对每个数据元素的属性描述,还包含对该元素的简要说明、与它有关的数据结构等。数据元素条目名称:学号总编号0500101(自由规定)别名:ID编号:01(自由规定)说明:本校学生编码有关编码说明:××(入年号)×(系代号)×(专业代号)×(班号)××(编号)数据值类型:离散类型:(字符/数字)数字长度:7(自由规定)有关数据结构:学生录取报名、学生报到、学生交费(2)数据结构描述的重点是数据之间的组合关系,即说明这个数据结构包含那些成分。数据结构条目名称:学生报到总编号:1-03说明:新生入学报道编号:03结构:学号、姓名、出生日期、省份有关数据流、数据存储:专业、电话、体检情况、类型报到信息表、报到数据(3)数据流在数据字典中属性是:数据流的来源、数据流的去处、组成、流通量。数据流条目名称:学生信息表总编号:2-05说明:学生报到等信息编号:05数据流来源:招生办流通量:100份/学期数据流去向:招生办包含的数据结构:学生录取报名、学生报到、学生交费(4)数据存储的条目主要描写该数据存储的结构,以及有关数据流、查询要求。数据存储条目名称:数据信息总编号:3-06说明:招生信息编号:D1结构:学生录取报名信息有关的数据流:学生报到信息核对--D1学生交费信息D1--存入数据D1--输出打印(5)处理过程是对功能的简要说明。处理过程条目名称:查询总编号:4-07说明:查询学生录取、报到、交费信息编号:07输入:存入的数据--查询输出:查询--招生办处理:查询存入数据中的学生录取、报到、交费信息(6)外部实体是数据的来源和去向。主要是说明外部实体产生的数据流和传给该外部实体的数据流。外部实体名称:招生办总编号:5-08说明:负责本系统编号:08输入数据:招生办-学生输出数据:查询信息-招生办3.4系统功能分析系统开发的总体任务是实现各种信息的系统化、规范化和自动化。本系统主要是应用在大学校园,它需要完成的主要功能有:■报名信息包括本科生、专科生、成教、特长生的报名信息■录取信息包括本科生、专科生、成教、特长生的录取信息■报到信息包括本科生、专科生、成教、特长生的报到信息■收费信息包括本科生、专科生、成教、特长生的收费信息3.4.1系统功能模块设计对上述各项功能进行集中、分块、按照结构化程序设计的要求,得到如下图的系统功能模块图。3.5详细设计下面对系统功能的主要窗口的详细设计进行说明,其它有类似功能的窗口请在设计作品中得到。首先创立工作空间和应用程序,然后再设计各模块。这里先把全局变量定义如下:stringusernamestringuserpasswordintg_input_time,g_rownumberstringg_user,g_pwdstringcorrect_pswdstringsort1stringfilterconditionStringdataobject3.5.1Splash窗口设计该窗口是系统开始之前的一个系统登录等待三秒的窗口,如下图所示:3.5.2用户登录窗口模块设计本系统登录采用权限设置,为系统提供了安全性,窗口(w_login)如下所示:单选框管理员clicked事件:open(w_logingl)close(w_login)单选框普通用户clicked事件:open(w_loginp)close(w_login)这里的(w_logingl)是管理员登录窗口,(w_loginp)是普通用户登录窗口。如下图所示:3.5.3主界面窗口模块设计用户登录系统后就进入主界面窗口,系统应用程序都是在主窗口”w_main”及在其下打开的众多窗口中完成的。本系统窗口如下图所示,主窗口连接的菜单是”m_b_zhsh”。主窗口连接的菜单是”m_b_zhsh”,各菜单中的程序分别用以打开各个部分的窗口,使各部分与应用程序主窗口建立连接,该菜单的具体结构如下图所示:菜单项的clicked事件除了以open()方式打开,还有条件打开方式,具体以清空中”本科生纪录”和报名信息中”本科生报名”为例在附录章节中说明。小结:在菜单项或子菜单打开窗口,w_main主窗口设置最大化有背景图片时,如果以opensheet()语句打开则无反应,以open()语句打开则能够。3.5.4信息模块设计本系统的报名信息、报到信息、录取信息、收费信息模块分别有多个窗口组成,由于原理一样,这里就不一一讲述,只讲述报名窗口(w_bm)和录取窗口(w_lq)及其相关窗口。对应的数据窗口d_bm,d_bm_grid如下图所示:上图为录取窗口,其主要功能是对录取的学生进行记录,相应的w_infor窗口如下所示:w_infor窗口主要是查看专业排名和各专业报考信息。3.5.5打印预览模块设计该模块是采用标尺设置的打印方式,便于用户选择不同的格式打印相应的打印窗口如下图所示:3.5.6修改密码窗口模块设计如图所示主要是对用户进行资料修改3.6生成应用程序在powerbuilder的环境下,单击工程画笔工具栏上的Bild图标进行工程编译,编译后生成执行文件,由于创立的是数据库应用程序,因此在客户端还需安装一个SQLServer客户端软件,这样创立的应用程序就能够经过这个数据库接口访问服务器端的数据库了。第四章结果性能测试与分析性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样。本系统是应用在客户端性能的测试,应用在客户端性能测试的目的是考察客户端应用的性能,测试的入口是客户端。性能测试与分析的目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。运行测试用例后,收集相关信息,进行数据统计分析,找到性能瓶颈。经过排除误差和其它因素,让测试结果体现接近真实情况。不同的体系结构分析测试结果的方法也不同,B/S结构我们会分析网络带宽,流量对用户操作响应的影响,而C/S结构我们可能更关心会系统整体配置对用户操作的影响。4.1测试实例的研究与选择
设计测试实例是在了解软件业务流程的基础上。设计测试实例的原则是受最小的影响提供最多的测试信息,设计测试实例的目标是一次尽可能的包含多个测试要素。这些测试实例必须是测试工具能够实现的,不同的测试场景将测试不同的功能。因为性能测试不同于平时的测试实例,尽可能把性能测试用例设计的复杂,才有可能发现软件的性能瓶颈。
经过性能测试工具运行测试用例。同一环境下作的性能测试得到的测试结果是不准确的,因此在运行这些测试用例的时候,需要用不同的测试环境,不同的机器配置上运行。4.2测试环境与测试条件本设计的测试环境、条件与系统的开发、运行环境如下:Pentium4计算机一台测试环境:WindowsXP测试工具:PowerBuilder9.0、SQLServer数据库管理系统:SQLServer数据库服务器:SQLServer在WindowsXP上要安装上SQLServer并作为本地计算机配置服务器;然后在SQLServer的企业管理器中设置SQLServer组。只有这两步完成后,后面的用PowerBuilder设计系统在应用程序中才能访问SQLServer服务器。4.3实例测试测试目的、测试的实例、测试环境与条件都完成后,就开始对测试进行实施了。测试前先打开SQLServer服务器,然后打开PB9.0进行数据库连接将系统连接编译生成系统的可执行文件。本系统主要测试实施过程如下表所示:步骤操作输入数据预期输出1用户启动主界面,进入招生管理系统权限登录窗体。分别输入不同的权限用户名和密码成功进入管理系统主窗体2普通用户进入的修改密码原密码、新密码提示成功3管理员进入用户设置用户名、密码提示成功4用户重新登录用户名、密码进入主界面5进入报名窗口添加各项数据保存成功6报名窗口查询条件-女2条记录7进入录取窗口添加各项数据保存成功8录取窗口查询条件-所有6条记录9录取窗口的查看信息无显示专业排名10打印预览窗口单击-显示标尺显示标尺11预览窗口显示比例选择150%以150%形式显示12选择菜单”清空”无提示清空所有记录13选择菜单”关于”无显示信息14主窗口红色交叉图标无退出系统性能分析经过系统的测试大部分还是成功的,可是有的地方存在不足,比如在有的复合查询时每次查询必须刷新后才能够进行下一次查询,看来自己对SQL语言没有达到更深的层次。另外有个局限就是在运行本系统时,必须有SQLServer,而且必须连接好数据库才能够运行,感觉不是很灵活,由于对PB学的不是太深,还有很多控件功能没用上,因此说本系统是个性能一般系统,有待于自己能有更多的时间去学习。第五章结束语5.1结论本系统采用PowerBuilder9.0为主要开发工具,结合SQLServer数据库管理系统与WindowsXP操作系统,是采用C/S模式系统管理。既考虑了系统的需求,又兼顾了运行的实际效率,以及今后系统的功能拓展等。具有可运行、开发周期短、有一定的扩展能力、技术规范等特点。同时也存在不足之处就是:需要专门的客户端安装程序,分布功能弱,不能够实现快速部署安装和配置。兼容性差,对于不同的开发工具,具有较大的局限性。相信经过自己的努力以后会有所进步。5.2心得体会伴随着信息技术的发展以及管理思想的不断创新而不断发展,利用计算机及网络加强与拓展传统信息系统的职能进入了一个加速阶段。从最初的DOS平台到Windows、Unix平台,数据库从dBASE、FoxPro再到SQLServer、Sybase、0racle等大型数据库,系统结构也基本上建立在C/S甚至B/S结构上。借助于大型数据库系统的管理分析功能,管理软件在向更强的分析功能发展,也有的在向支持企业管理的方向发展,可见信息系统的战略作用或目标在未来的发展前景是光明的。经过这次的毕业设计,我不但对以前学到的知识进行巩固,又对自己的专业加深了解并掌握了计算机专业关于软件开发设计知识。能够说又学到了不少知识,同时也深感自己知识的欠缺,PB是个很好的开发数据库工具,可是当前所学到的只是很基础的,有待于向高级层次学习,当然这是需要时间的,我相信凭着自己对本专业的热爱我会努力的。谢辞在这次的毕业设计过程中,从开始软件的设计到完成论文的撰写,王化文、龚鸣敏老师一直经过E-mail、电话、在场辅导等方式给予了精心的指导和热情的帮助,提出了许多宝贵意见。论文完成的前提是老师给我提供了舒适的工作、学习环境,并给予我悉心的关怀与指导。在些表示衰心的感谢。老师认真负责的工作态度、严谨的治学风格,使我深受启发;同时也得感谢同学给我的指导和帮助,以及给我提供的良好的开发环境,是她们的帮助下,我才能独立的完成这个系统。
再次感谢所有给予我帮助的老师、同学们!参考文献[1]卫海等<<PowerBuilder课程设计案例精编>>[M]中国水利水电出版社,[2]方小伟赵永军李其中<<PowerBuilder软件开发项目实践>>[M]清华大学出版社,[3]张振坤李文立焦虹<<PowerBuilder精彩编程200例>>[M]机械工业出版社,
[4]黄浩赵宏杰<<PowerBuilder精彩编程百例>>[M]中国水利水电出版社,[5]刘素铭张振坤冯问萃<<PowerBuilder数据库开发关键技术与实例应用>>[M]人民邮电出版社,[6]<<SQLserver系统管理>>[P]飞思科技产品研发中心电子工业出版社,[7]周岐《PowerBuilder程序开发项目案例》[M]清华大学出版社,附录根据第三章中所提及到的所有模块的功能,详细的主要部份的代码就包含在本附录中。此查询窗口是在”学生报名”(w_bm)窗口中”查询”按扭下打开的,报名窗口中的”查询”的clicked事件是open(w_query)。w_query就是上图的查询窗口。”查询”clicked事件编码如下://定义参数:查询条件综合结果stringLookforCondition//查询条件总个数//定义参数:要查询的列//lookforitem1,lookforitem2分别为查询子段1(ddlb_1.text)和子段2按表中某字段项查询stringlookforitem1,lookforitem2//定义参数:查询的符号//lookforhow1,lookforhow2分别为下拉框控件中符号项(如>,<,=,<>等)stringlookforhow1,lookforhow2//定义参数:要查询的内容//lookforWhat1,lookforWhat2分别是输入框(如sle_1.text)要输入的条件内容stringlookforWhat1,lookforWhat2stringlookforsign //查询符号的选择lookforHow1=ddlb_2.textlookforHow2=ddlb_4.text//操作符号的选择ifddlb_5.text='与'thenlookforsign="and"elseifddlb_5.text='或'then lookforsign="or"endif//查询子段1和查询内容1的选择ifddlb_1.text="报名号"then lookforItem1="id" lookforwhat1=sle_1.textelseifddlb_1.text="姓名"then lookforItem1="name" lookforwhat1=sle_1.textelseifddlb_1.text="性别"then lookforItem1="gender" lookforwhat1=sle_1.textelseifddlb_1.text="总分"then lookforItem1="together" lookforwhat1=sle_1.textendif//查询子段2和查询内容2的选择ifddlb_3.text="报名号"then lookforItem2="id" lookforwhat2=sle_2.textelseifddlb_3.text="姓名"then lookforItem2="name" lookforwhat2=sle_2.textelseifddlb_3.text="性别"then lookforItem2="gender" lookforwhat2=sle_2.textelseifddlb_3.text="总分"then lookforItem2="together" lookforwhat2=sle_2.textendif//查询条件的综合ifddlb_1.text=""orddlb_2.text=""thenelseifddlb_3.text=""orddlb_4.text=""then lookforCondition="sort="+"'"+sort1+"'"+"and"+lookforItem1+lookforHow1+"'"+lookforwhat1+"'"else lookforCondition="sort="+"'"+sort1+"'"+"and"+lookforItem1+lookforHow1+"'"+lookforwhat1+"'"+""+lookforsign+""+lookforItem2+lookforHow2+"'"+lookforwhat2+"'"endif//过滤数据窗口currentdww_bm.dw_1.setfilter(lookforCondition)w_bm.dw_1.filter()w_bm.dw_1.retrieve()Splash窗口设计程序代码如下:窗口的open事件:timer(3,this)this.setposition(topmost!)窗口的timer事件:close(this)窗口的close事件:timer(0,this)用户登录窗口模块设计管理员登录窗口”确定”按扭clicked事件:stringmy my="("+"user_id"+"="+"'"+'admin'+"'"+")"+"and"+"("+"user_pwd"+"="+"'"+sle_1.text+"'"+")"dw_1.setfilter(my)filter(dw_1)dw_1.retrieve(1)ifdw_1.rowcount()=0then MessageBox("警告","密码错误,你是管理员吗?",stopsign!)else username='admin' userpassword=sle_1.text open(w_main) close(w_logingl)endif普通用户登录窗口的”确定”按扭clicked事件:ifsle_1.text=""then //popamessagebox messagebox("PayAttention!","Theusernamecantbenull") //sle_1getthefocus sle_1.setfocus()elseifsle_2.text=""then //popamessagebox messagebox("PayAttention!","Thepasswordcantbenull") //sle_2getthefocus sle_2.setfocus()else G_INPUT_TIME=G_INPUT_TIME+1 G_USER=sle_1.text G_PWD=sle_2.text //取出数据库用户口令表格中对应用户的口令 SELECTuser_PWDINTO:CORRECT_PSWDFROMUSER_infoWHEREuser_id=:G_USER; //将数据库中保存的口令和用户输入的口令作比较 IFG_PWD=CORRECT_PSWDTHEN //输入正确,打开主窗口 OPEN(W_MAINp) CLOSE(W_LOGINp) ELSE //不正确,在3次以内可重新输入,超过3次结束程序 IFG_INPUT_TIME>3THEN MESSAGEBOX("警告","输入用户口令的次数太多!") CLOSE(W_LOGINp) ELSE MESSAGEBOX("警告","输入的用户口令有误,请重新输入") ENDIF ENDIFendif普通用户登录窗口的”退出”按扭clicked事件:halt主界面窗口模块设计菜单项的clicked事件除了以open()方式打开,还有条件打开方式,具体以清空中”本科生纪录”和报名信息中”本科生报名”为例说明。本科生纪录clicked事件://删除已录取本科生的所有记录intaa=messagebox('注意!',"确定要删除吗?删除后将无法恢复!",question!,okcancel!)ifa=1thendeletefromb_bmwherematornot='是'andsort='本科';commit;endif本科生报名clicked事件:sort1="本科"filtercondition="sort="+"'"+sort1+"'"open(w_bm)信息模块设计报名窗口相应的控件代码:/*以下为”窗口打开事件”脚本*///设置事务对象dw_bm.settransobject(sqlca)dw_1.settransobject(sqlca)//dw_bm获取数据dw_bm.setfilter(filtercondition)dw_bm.filter()dw_bm.retrieve()//dw_1获取数据dw_1.setfilter(filtercondition)dw_1.filter()dw_1.retrieve()st_nrow.visible=false/*以下为”窗口关闭事件”脚本*///定义两个变量intMCount//修改后没有保存的行数intUpdateOrNot//是否修改//得到修改后没有保存的行数MCount=w_bm.dw_bm.ModifiedCount()ifMCount=0then //没有未保存的修改 close(w_bm)elseifMcount>0then //询问是否保存所做的修改 UpdateOrNot=MessageBox("保存修改","您修改了数据窗口中的数据,现在是否保存?",Question!,YesNoCancel!) ifUpdateOrNot=1then //保存 ifupdate(w_bm.dw_bm,true,false)=1then //保存修改成功,提交修改 w_bm.dw_bm.resetupdate() commit; else //保存修改失败,取消所作的修改 rollback; //弹出一个对话框警告 messagebox("错误!!!","数据保存失败") endif close(w_bm) elseifUpdateOrNot=2then //不保存 rollback; close(w_bm) endifendif打开打印预览窗口定义的函数”f(datawindowadw_data)”如下所示:openwithparm(w_dw_printpreview,adw_data)intlili=message.longparmifli=1thenreturntrueelsereturnfalseendif/*以下为”添加”clicked事件脚本*///在最后插入一行g_RowNumber=dw_bm.InsertRow(0)//dw_bm得到焦点dw_bm.SetFocus()//到当前行dw_bm.ScrollToRow(G_RowNumber)//第一个字段得到焦点dw_bm.SetColumn(1)/*以下为”删除”clicked事件脚本*/inta//确定删除a=messagebox("!","确定要删除本条记录吗?",question!,okcancel!)ifa=1then//得到当前记录G_RowNumber=dw_bm.getrow()//删除当前记录deleterow(dw_bm,g_rownumber)//保存删除ifupdate(dw_bm,true,false)=1then //保存修改成功,提交修改 dw_bm.resetupdate() commit;else //保存修改失败,取消所作的修改 rollback; //弹出一个对话框警告 messagebox("错误!!!","删除失败!")endifendif/*以下为”保存”clicked事件脚本*/ifupdate(dw_bm,true,false)=1then //保存修改成功,提交修改 dw_bm.resetupdate() commit;else //保存修改失败,取消所作的修改 rollback; //弹出一个对话框警告 messagebox("错误!!!","数据保存失败")endifdw_1.retrieve()dw_1.scrolltorow(g_RowNumber)dw_1.selectrow(g_RowNumber,true)/*以下为”上一条”clicked事件脚本*///数据窗口向前滚动一条记录row_current=dw_bm.ScrollPriorRow()//如果已经到达第一条记录,则弹出一个对话框警告ifrow_current=1then MessageBox("警告","已经是最前一条记录")endif/*以下为”下一条”clicked事件脚本*///定义参数表的总行数integerrow_count//数据窗口向后滚动一条纪录row_current=dw_bm.ScrollNextRow()//得到表的总行数row_count=dw_bm.RowCount()//判断是否是最后一条记录ifrow_current=row_countthen MessageBox("警告","已经是最后一条记录")endif/*以下为”打印”脚本*/longll_rowsll_rows=dw_1.rowcount()ifll_rows>0theniff(dw_1)thenmessagebox('提示','打印成功')elsemessagebox('提示','取消打印')endifendif查询代码前面说过,原理一样这里不再说明。/*以下为”退出”脚本*///定义两个变量intMCount//修改后没有保存的行数intUpdateOrNot//是否修改//得到修改后没有保存的行数MCount=w_bm.dw_bm.ModifiedCount()ifMCount=0then //没有未保存的修改 close(w_bm)elseifMcount>0then //询问是否保存所做的修改 UpdateOrNot=MessageBox("保存修改","您修改了数据窗口中的数据,现在是否保存?",Question!,YesNoCancel!) ifUpdateOrNot=1then //保存 ifupdate(w_bm.dw_bm,true,false)=1then //保存修改成功,提交修改 w_bm.dw_bm.resetupdate() commit; else //保存修改失败,取消所作的修改 rollback; //弹出一个对话框警告 messagebox("错误!!!","数据保存失败") endif close(w_bm) elseifUpdateOrNot=2then //不保存 rollback; close(w_bm) endifendif录取窗口相应的代码:/*以下为”查看信息”脚本*///打开窗口open(w_infor)//将特长信息设置为不可见w_infor.st_sort1.visible=falsew_infor.st_sort.visible=falsew_infor.st_prof1.visible=falsew_infor.st_prof.visible=falsew_infor.st_tscore1.visible=falsew_infor.st_tscore.visible=false//定义参数stringbmid,a,b,c,d,d1,e,f,max,min,max1,min1,max3,max4,min3,min4intn,m,k,n1,m1,n3,n4,m3,m4//定义当前行号intcurrentrowcurrentrow=dw_lq.getrow()bmid=dw_lq.getitemstring(currentrow,1)//将考生的姓名、省份、总分、专业赋予窗口selectname,province,together,firspec,secspec,typeinto:a,:b,:c,:d,:d1,:efromb_bmwhereid=:bmid;w_infor.st_name.text=aw_infor.st_province.text=bw_infor.st_score.text=cw_infor.st_zhy.text=dw_infor.st_zhy1.text=d1//将分数线赋予窗口selectlineinto:ffromb_shzhwhereprovince=:bandtype=:eandsort=:sort1;w_infor.st_line.text=f//将第一志愿的统计信息赋予辅助信息窗口selectcount(*),max(together),min(together)into:n,:max,:minfromb_bmwhereprovince=:bandfirspec=:dandsort=:sort1;w_infor.st_renshu.text=string(n)w_infor.st_top.text=maxw_infor.st_low.text=min//考生第一志愿在其它二志愿中的统计信息selectcount(*),max(together),min(together)into:n3,:max3,:min3fromb_bmwhereprovince=:bandsecspec=:dandsort=:sort1;w_infor.st_renshu3.text=string(n3)w_infor.st_max3.text=max3w_infor.st_min3.text=min3//将第二志愿的统计信息赋予辅助selectcount(*),max(together),min(together)into:n1,:max1,:min1fromb_bmwhereprovince=:bandfirspec=:d1andsort=:sort1;w_infor.st_renshu1.text=string(n1)w_infor.st_top1.text=max1w_infor.st_low1.text=min1//考生2在其它二志愿中的统计信息selectcount(*),max(together),min(together)into:n4,:max4,:min4fromb_bmwhereprovince=:bandsecspec=:d1andsort=:sort1;w_infor.st_renshu4.text=string(n4)w_infor.st_max4.text=max4w_infor.st_min4.text=min4//将第一志愿专业排名信息赋予窗口selectcount(*)into:mfromb_bmwhereprovince=:bandfirspec=:dandtogether>:candsort=:sort1;ifn<>0thenw_infor.st_pm.text=string(m+1)elseifn=0then w_infor.st_pm.text="0"endifselectcount(*)into:m3fromb_bmwhereprovince=:bandsecspec=:dandtogether>:candsort=:sort1;ifn3<>0thenw_infor.st_pm3.text=string(m3+1)elseifn3=0then w_infor.st_pm3.text="0"endif//将第二志愿专业排名信息赋予窗口selectcount(*)into:m1fromb_bmwhereprovince=:bandfirspec=:d1andtogether>:candsort=:sort1;ifn1<>0thenw_infor.st_pm1.text=string(m1+1)elseifn1=0then w_infor.st_pm1.text="0"endifselectcount(*)into:m4fromb_bmwhereprovince=:bandsecspec=:d1andtogether>:candsort=:sort1;ifn4<>0thenw_infor.st_pm4.text=string(m4+1)elseifn4=0then w_infor.st_pm4.text="0"endif//将省排名赋予窗口selectcount(*)into:kfromb_bmwhereprovince=:bandtogether>:candsort=:sort1;w_infor.st_shpm.text=string(k+1)w_infor.st_shpm1.text=string(k+1)刷新的clicked事件:dw_lq.setfilter(filtercondition)dw_lq.filter()st_2.visible=falseddlb_1.text=''ddlb_2.text=''ddlb_3.text=''ddlb_4.text=''ddlb_5.text=''sle_1.text=''sle_2.text=''打印预览模块设计窗口的open事件:bloblblb_datadatawindowidw_dataidw_data=message.powerobjectparmdw_print.create(idw_data.describe("datawindow.syntax"))idw_data.getfullstate(lblb_data)dw_print.setfullstate(lblb_data)dw_print.sort()dw_print.groupcalc()dw_print.modify("datawindow.print.preview=yes,datawindow.print.preview.rulers=no")posteventue_set_page()this.title=dw_print.describe("datawindow.print.documentname")+"打印预览"ddlb_pre.text='100%'sle_1.text='100'ifdw_print.rowcount()=0thencb_printer.enabled=falsecb_print.enabled=falsecb_first.enabled=falsecb_last.enabled=falsecb_prior.enabled=falsecb_next.enabled=falseelsecb_printer.enabled=truecb_print.enabled=truecb_first.enabled=truecb_last.enabled=truecb_prior.enabled=truecb_next.enabled=trueendif”显示标尺”clicked事件:ifthis.checkedthendw_print.object.datawindow.print.preview.rulers='yes'elsedw_print.object.datawindow.print.preview.rulers='no'endif”页号”和”页面缩放”modified事件:integerli_sifthis.text=""thenli_s=100elseli_s=integer(this.text)endififli_s<50thenthis.text='50'li_s=50endififdw_print.describe("cessing")<>'3'thendw_print.modify("datawindow.zoom="+string(integer(li_s)))endif”显示比例”selectionchanged()事件:integerli_pstringls_zli_p=pos(this.text,'%',1)ls_z=mid(this.text,1,li_p-1)dw_print.object.datawindow.print.preview.zoom=integer(ls_z)”打印设置”clicked事件:printsetup()dw_print.setredraw(true)ddlb_pre.eventmodified()数据窗口控件的rowfocuschanged事件和scrollvertical事件:parent.postevent('ue_set_page')对窗口定义ue_se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45726-2025声学机器设备发射的高频声功率级测定
- GB/T 45802-2025系统与软件工程生存周期过程需求工程
- GB/T 45799-2025企业标准自我声明公开信息基础数据元
- 2025年中国键盘乐器行业市场全景分析及前景机遇研判报告
- 2024-2030年中国园林植物行业市场发展监测及投资前景展望报告
- 中国六氟丙烯行业调查报告
- 中国旋风炉市场调查研究及行业投资潜力预测报告
- 2022-2027年中国景区管理行业市场调查研究及投资战略研究报告
- 2025-2030年中国酒精润版胶辊行业深度研究分析报告
- 2025年 有色金属冶炼(铜、铝、铅、锌除外)考试练习题附答案
- 头颈部肿瘤NCCN指南中文版2021.v3
- 营销策略分析 外文文献
- 丰田特殊要求课件
- 深圳知名地产住宅项目机电策划方案
- 高处吊篮使用审批表
- 人教精通版五年级上册英语Lesson-19-Lesson-20教学课件
- 质量环境职业健康安全管理体系过程关联图
- 华大自控说明书
- 沪教版六年级数学上册全部章节练习题大全及答案
- 建筑门窗热工性能计算书(LOW-E玻璃及隔热系数)
- 有机化学--习题答案---陈宏博
评论
0/150
提交评论