版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机票预定系统的设计与实现摘要随着社会的不断发展和计算机水平的不断提高,人们选择飞机外出工作、旅游变得相当普遍。为了给旅客提供方便,同时也为了便于民航部门的管理,各种机票预定系统应运而生。正因为有如此大的市场和前景,并且与人们日常生活的联系有如此之紧密,使得选择这样的一个毕业设计课题变得非常有意义和挑战。通过本课题的设计,不仅能对软件工程、程序设计语言、操作系统、数据库管理提供实践机会,同时对于即将步入社会的我也是一次锻炼。本系统是以JBuilder2006为前端开发工具、SQLServer2000为后台数据库的C/S二层模式系统。JBuilder2006以java语言为基础,之所以采用JAVA为系统开发语言,主要是JAVA语言开发出来的系统具有较强的平台移植性,同时java的类库非常标准且极其健壮,这为编写代码带来很多方便;SQLServer2000作为微软公司开发的产品,其优越性自然就不言而喻了,一般的中小型系统大多以SQLServer2000作为后台数据库。本系统分为系统管理、旅行社管理、航空公司管理、旅客综合服务管理四大模块,每个模块具有不同的功能,使得整个系统的管理变得有条不紊,从而为管理提供了更多方便。关键词软件开发,开发工具,机票预定系统,打包
ABSTRACTAsthesocietydevelopedconstantlyandthelevelofcomputerraisewithconstant,peoplechooseplanetogoout,workandtravelwhichbecomequitegeneral。Inordertoprovideconvenienceforpassengers,atthesametimeforthemanagementofcivilaviation'sdepartment,variousticketreservationsystemsariseatthehistoricmoment.Justbecausetherearesolargeamarketandprospect,andtheconnectionwithpeople'sdailylifeissoclose,thus,itisverymeaningfulandchallengetochoosesuchagraduationprojectsubject.Thoughthedesignofthissubjectcannotmerelyofferandcreatethepracticechancetosoftproject,programminglanguage,operatingsystem,databaseadministration,itisalsoaexercisetosteppingintothesocietysoonatthesametime.ThissystemtoregardJBuilder2006asfrontdevelopmenttools,andSQLServer2000asbackstagedatabase,andit’saC/Stwomodelssystem.JBuilder2006isbasedonjavalanguage,weadoptJAVAasthesystemdeveloplanguages,mainlybecausethesystemisdevelopedoutbyJavahasstrongerplatforms,atthesametimeonekindofstorehousesofjavaisverystandardandextremelystalwart,itisbringalotifconvenientforwritingcodes;asMicrosoftdevelopedproducts,SQLServer2000,thesuperiorityonit’sself-evidentnaturally,thegeneralmediumandsmall-scalesystemsaremostlyregardedSQLServer2000asbackstagesupporter'sdatabaseThissystemisdividedintofourmajormodules:systemsmanagement,managementoftravelagency,airline'smanagement,integratedserviceofvisitormanagement.Eachmodulehasdifferentfunctions,thismakethemanagementofthewholesystemorderly,thusitismoreconvenientlytoofferformanagement.Keywordssoftwaredevelopment,developmenttools,airticketsreservationsystems,packaging
目录摘要 IABSTRACT II1 引言 12软件开发基础知识 22.1软件开发过程 22.2软件开发模型 32.3 C/S二层体系开发 42.3.1C/S体系结构简介 42.3.2有关C/S体系结构的讨论 53开发工具简介 63.1PowerDesigner11简介 63.1.1认识PowerDesigner 63.1.2PowerDesigner分析过程 63.1.3PowerDesigner的三级建模功能 63.2JBuilder简介 73.2.1JDBC简介 73.2.2通过JDBC连接SQLServer2000数据库参数 83.2.3JDBC的Jbuilder开发 83.3SQLServer2000简介 93.3.1服务器组件 93.3.2主要管理工具 93.3.2数据完整性 103.3.3数据库备份方法 103.3.4SQLServer2000的身份认证模式 103.4其他工具简介 104机票预定系统设计 114.1系统分析 114.1.1系统应用背景 114.1.2业务流程分析 124.1.3功能模块分析 144.2数据库设计 154.2.1数据库分析 154.2.2数据模型图 174.2.3数据库表及字段说明 184.3我的模块设计与编码 234.3.1JBuilder2006环境配置 244.3.2Splash窗口设计 254.3.3登录窗口设计 274.3.4主窗口设计 314.3.5用户角色模块设计 354.3.6人员信息模块设计 394.3.7修改密码模块设计 414.3.8旅客信息模块设计 434.3.9系统功能介绍模块设计 454.3.10帮助文档制作 474.4程序打包、生成以及部署 49总结与体会 51参考文献 52致谢 53引言随着生活水平的日益提高,人们生活中可选择的交通工具也变得丰富多彩,外出度假、旅游除了要求方便、舒适的环境以外,在生活节奏如此之快的当今社会,是否节省时间将成为人们最为关心的话题,故人们会毫不犹豫地选择乘坐飞机出行,本系统也就应运而生了。国外对于机票预定系统的研究已经达到了相当高的水平,在系统处理的准确性和及时性、系统的开放性和可扩充性、系统的易用性和易维护性、系统的标准性、系统的先进性、系统的响应速度以及系统的适时性和容错性方面都有很深的研究,相对而言系统也就比较成熟。当然,尽管我国在这方面的研究起步稍微有些晚,但就发展前景而言,我们还是有很大发展空间的。当然,除了系统本身的意义之外,本课题对我们自己也是非常有意义的:=1\*GB3①通过毕业设计的实践及其前后的准备与总结,复习、领会、巩固和运用课堂上所学的软件开发方法和知识,比如,软件项目的完整设计与开发过程、结构化技术、快速原型法和面向对象方法等。特别是结构化分析、结构化设计、快速原型开发、面向对象分析与面向对象设计。=2\*GB3②为自己适应毕业后团队合作开发规模稍大项目和综合应用本专业所学习的多门课程知识(例如,软件工程、程序设计语言、操作系统、数据库等)创造实践机会。为自己提供主动学习(比如,对Java开发环境、客户机/服务器技术、Visio、JBuilder、PowerDesigner软件工具以及SQLServer2000数据库等内容的学习)、积极探索与大胆创新的机会。=3\*GB3③使自己通过参加小组团队的开发实践,了解项目管理、团队合作、文档编写、口头与书面表达的重要性。=4\*GB3④使自己了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术、技能。=5\*GB3⑤通过“稍大的”富有挑战性的软件实验项目开发实践,提高自己的自学能力、书面与口头表达能力、创造能力和与团队其他成员交往和协作开发软件的能力,提高自己今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。总之,本课题的研究对我今后在软件方面的发展将是非常有意义的!
2软件开发基础知识2.1软件开发过程软件开发过程以及各阶段的任务:=1\*GB3①计划:对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计。制订完成开发任务的实施计划。=2\*GB3②分析:软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。=3\*GB3③设计:本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。=4\*GB3④编码:软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。=5\*GB3⑤测试:软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法(白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果)和黑盒法(黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口)。=6\*GB3⑥维护:维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。2.2软件开发模型软件开发模型(SoftwareDevelopmentModel)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。
典型的开发模型有:瀑布模型(waterfallmodel);渐增模型/演化/迭代(incrementalmodel);原型模型(prototypemodel);螺旋模型(spiralmodel);喷泉模型(fountainmodel);智能模型(intelligentmodel);混合模型(hybridmodel)每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点。表2.1主要开发模型比较模型优点缺点瀑布模型文档驱动系统可能不满足客户的需求快速原型模型关注满足客户需求可能导致系统设计差、效率低,难于维护增量模型开发早期反馈及时,易于维护需要开放式体系结构,可能会设计差、效率低螺旋模型风险驱动风险分析人员需要有经验且经过充分训练C/S二层体系开发2.3.1C/S体系结构简介=1\*GB3①C/S结构的数据库应用最简单的C/S体系结构的数据库应用,由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,称为应用服务器,一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户程序运行在用户自己的电脑上,对应于服务器电脑,可称为客户电脑。当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果。在典型的C/S数据库应用中,数据的储存管理功能,是由服务器程序独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号不准重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)这背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序可以变的非常“瘦小”,麻烦的事情,都交给了服务器和网络。在C/S体系的下,数据库真正变成了公共、专业化的仓库,受到独立的专门管理。=2\*GB3②非C/S结构的应用与C/S体系形成对比,传统的数据库应用体系结构,例如基于主机-多终端的系统,或基于LAN上文件服务器运做的多用户系统,数据库是属于应用程序“私有的”,即使它也可以将数据文件放置在某台机器上供不同的用户共同访问(这种情形,称为“文件服务器”),但所有的操作、规则,都是在一个包罗万象的应用程序内部实现的。应用程序因此具有最大的复杂性,即使是原班开发人马,要想对已有功能加以扩充也是很困难的,当数据库稍具复杂性(比如有稍多相互关联的表与规则),其他的人员开发另外的程序共同操作这个数据库的数据,几乎不具可行性。2.3.2有关C/S体系结构的讨论C/S结构是目前技术条件下,能较好适应不确定和变化的需求环境的比较现实的方案。它可以令我们以较低的投入,实现将易变与稳定的要素分离,快速地增添和替换“瘦小”而互相独立的前台应用,保持数据的连续性和继承性。以目前的技术看,先建立C/S结构的局域网络应用,再向企业网/互联网模式下数据库应用过渡,是比较现实,相对易于把握、成本较低的。即使是一次到位的开发,对于类似的环境和小型的应用而言,要想实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库,并有效地保证和管理数据的安全性、访问权限、完整性,采用C/S架构和支持C/S架构的数据平台,是必然选择。C/S架构的数据库系统,由于数据库是建立在通用的平台之上,并且支持SQL这样的通用技术,对数据库的维护工作更加专业,但更为开放,这意味着维护和进一步开发对原设计开发者的依赖性可以降低。用户可以更好地适应人员的流动或服务/供应商的变更。对体系规划的合理性,和一些特殊技术的采用,例如后台服务器上的存储过程、触发器等,会影响到这个特点。出于这个理由,在C/S应用设计时,应尽可能采用规范的模式,标准化的技术。同样的努力,在其他架构中就相对难以实现或较少实际意义。总之,支持采用C/S的理由主要有:①应用的不确定性,逐步开发和增加新应用的需要②适应将来开放的异种网络环境中应用的需要③用户数、数据量增长的可能性④适应电脑开发、维护、供应商与相关技术人员变更的需要⑤有利于动态规划与动态开发过程,对系统可靠性的保证此外,从用户的现有资源的延续利用与新增投入,及开发的成本和难度看,采用C/S结构,也是比较适中、现实的选择。
3开发工具简介3.1PowerDesigner11简介3.1.1认识PowerDesigner过去的软件开发往往缺乏规范,开发的软件也没有详细的文档。为了提高软件质量,降低维护难度,加强重复使用率,开发人间、分析人员、测试人员、数据库管理人员、管理人员以及用户相互沟通,使系统发挥最大综合效率,世界各大数据库厂商和第三方合作开发了智能化的计算机辅助软件工程(CASE)工具,在此领域中,Rational公司的RationalRose擅长以UML构造模型,具备严谨的方法论,但技术偏高。PLATUIM公司的Erwin擅长以E-R建立实体联系模型,并具有版本控制能力。Sybase公司的PowerDesigner则集UML与E-R精华于一体,更能迎合市场潮流。经过不断的更新,目前最新版本是PowerDesigner11。3.1.2PowerDesigner分析过程分析设计人员利用PowerDesigner可建立三类模型,即面向对象模型(OrientedObjectModel,简称OOM)、概念数据模型(ConceptualDataModel,简称CDM)、物理数据模型(PhysicalDataModel,简称PDM),其中OOM包括用例图、时序图、类图,最终产生五中结果,即模型仓库(Repository)、模型报告(Report)、数据库SQL脚本、用户数据脚本、以及应用程序代码。程序开发人员利用模型报告(Report)、数据库SQL脚本、用户数据脚本、以及应用程序代码结合应用程序开发工具(如PB、VB、C++、C#、JAVA等)和数据库管理系统(DatabaseManagementSystem,简称DBMS)开发出符合要求的软件。完成软件分析设计通常采用三种途径:一条是从面向对象分析设计开始,依次建立用例图、时序图、类图,由类图转化为CDM以及PDM;第二条路经是从结构化分析设计开始依次产生流程分析设计模型(ProcessAnalysisModel,简称PAM)、CDM、PDM、以及类图;第三条路经是前两种途径的结合。3.1.3PowerDesigner的三级建模功能=1\*GB3①面向对象建模UML是一种标准的图形化建模语言,是面向对象分析设计的一种标准表示,并为不同领域的人们提供统一的交流标准,UML共有九种图,PD11支持其中重要的三种图形,这三种图形描述了系统的静态数据模型(CDM)或物理数据模型(PDM),为信息的存储建立了数据结构,同时,类图还可以转换为C#、C++、IDL-CORBA、JAVA、PB以及VB代码框架,为应用程序的编制奠定了良好的基础。=2\*GB3②概念数据模型概念数据模型是建模的重要阶段,它把现实世界中的信息抽象成实体和联系来产生实体联系图(E-R模型),这一阶段为高质量的应用提供坚实的数据结构基础。概念数据模型通过实体和属性以及这些实体间的关系(E-R模型)表明系统内部抽象的数据结构、概念数据模型与模型的实现方法无关。=3\*GB3③物理数据模型物理数据模型把CDM与特定DBMS的特性结合在一起,产生PDM。同一个CDM结合不同的DBMS产生不同的PDM。PDM中包含了DBMS的特征,反映了主键(PrimaryKey)、外键(ForeignKey)、候选键(Alternative)、视图(View)、索引(Index)、触发器(Trigger)、存储过程(StoredProcedure)等特征。物理数据模型是后台数据库应用蓝本,直接针对具体的DBMS(如MicrosoftSQLServer2000).PDM可由CDM转换得到,其中实体(Entity)变为表(Table),属性(Attribute)变为列(Column),同时创建主键和索引,CDM中的数据类型映射为具体DBMS中的数据类型。3.2JBuilder简介3.2.1JDBC简介=1\*GB3①什么是JDBCJavaDatabaseConnectivity(JDBC)是一项在Java中以面向对象的方法来连接数据库的技术。它是对ODBCAPI进行的一种面向对象的封装和重新设计,它易于学习和使用,并且能够使您编写不依赖供应商的代码,用于查询和操纵数据库。JDBC提供了一些相当低层的方法来存取数据库。同时也在高层提供了功能强大的对象来处理数据库。支持JDBC的所有数据库必须至少支持SQL-92标准,这在很大程度上实现的跨数据库和平台的可移植性。=2\*GB3②JDBC驱动程序类型通过JDBC调用映射到其他关系数据库的CLI(CallLevelInterface)调用来实现JDBC,使用由其他语言所写的二进制库,要求客户提供软件,如JDBC-ODBC桥驱动程序。驱动程序一部分由Java代码组成,另一部分由使用其他CLI的本地代码组成,要求客户端使用二进制代码。纯Java驱动程序,使用中间件(middleware)将JDBC调用转换成访问数据库所需的厂商相关的调度和协议。纯Java驱动程序,实现了本地协议,无需中间件或任何客户端二进制代码,需要时可下载到客户端。这些驱动程序的不同主要在于驱动程序的组成部分、各个部分所处的位置以及用来开发这些组成部分的语言。每个数据库厂商都使用不同的调用和不同的网络协议来访问数据库。=3\*GB3③JDBCAPI接口编写数据库应用程序,需要完成以下几件事:加载一个数据库驱动程序创建到数据库的连接,执行查询,如果查询有返回值,还要接受结果并对其进行处理。JDBCAPI的目标是提供对关系数据库厂商无关的支持,通过它的使用,可以将使用的各种数据库实现上的不同都抽象出来,并且它分为两个层次,一是面向程序开发人员的JDBCAPI,另一是底层的JDBCDriveAPI.以下的类是常用的API:DriverManager类:负责管理对JDBC应用加载的驱动程序的访问。Connection类:主要用于创建Statement对象。Statement类:用来在数据库上执行SQL语句,这里的语句可以使任何合法的SQL语句。PrepareStatemen类:与Statement类相似,都是用开执行SQL语句的,但它能指定不同的参数。ResultSet类:用于遍历SQL的Select语句执行后返回的结果。3.2.2通过JDBC连接SQLServer2000数据库参数=1\*GB3①装载驱动程序:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”)=2\*GB3②建立连接:StringconnectionURL=”jdbc:Microsoft:sqlserver://localhost:1433;DataBaseName=ATBS;User=sa;Password=sa”;Connectioncon=DriverManeger.getConnection(connectionURl);3.2.3JDBC的Jbuilder开发JBuilder的数据库应用程序可以连接到任何拥有JDBC驱动的数据库,在Jbuilder中常用的数据库组件是:=1\*GB3①Database组件:通过JDBC来连接具体的数据库。=2\*GB3②DataSet组件:它是一个虚拟类,所有关于数据设置的导航、数据访问、更新的API的接口都在这个类中,支持主要细节关系、行排列、行筛选的接口都包含在这个类中,一些dbswing的组件也具有DataSet属性。=3\*GB3③QueryDataSet组件:它负责管理由JDBC提供的数据,它有一个query属性,用于定义一个SQL语句。=4\*GB3④TableDataSet组件:它是一个普通的DataSet组件,它没有内置提供器的机制。即便没有默认的提供器,它仍然可被用于恢复数据资源中的数据。=5\*GB3⑤DataSetView组件:这个组件用于提供对行排列以及行过滤得独立浏览。=6\*GB3⑥StorageDataSet组件:它可以使用内存空间来存储数据当然,除了这些组件以外,JBuilder还提供了许多连接数据库的组件,然后将dbstring控件的DataSet属性设置为这些组件就能连接到具体的数据库,并对数据库表进行操作了。3.3SQLServer2000简介3.3.1服务器组件=1\*GB3①SQLServer2000数据库引擎(MSSQLSERVER服务)在计算机上运行的每个SQLServer实例都有一个SQLSERVER服务,当有许多个sqlserver实例在同一台计算机运行时每个实例都有自己的sqlserver服务,默认实例的服务名称为Mssqlserver,命名实例的服务名称为mssql$instancename,instancename代表实例名。=2\*GB3②SQLServer代理程序(sqlserverAgent服务)Sqlserver代理程序是实现运行调度的sqlserver管理任务的代理程序,在计算机上的每个sqlserver实例都有一个这个的代理服务。=3\*GB3③Microsoft搜索服务Microsoft搜索服务仅用于WindowsNT和Windows2000,实现全文检索引擎,无论计算机上有多少个SQLServer实例,都只有一个搜索服务。=4\*GB3④分布式事务处理协调器(MSDTC服务)分布式事务处理协调器仅用于WindowsNT和Windows2000,管理分布事务,无论计算机上有多少个SQLServer实例,都只有一个MSDTC服务。3.3.2主要管理工具 Sqlserver2000为数据库管理员提供了多个管理系统的工具,下面是常用的管理工具:=1\*GB3①企业管理器企业管理器是管理控制台(MMC)的管理单元组件,MMC支持从单个控制台管理多种类型的服务器。=2\*GB3②查询分析器查询分析器用于交互式输入T-SQL语句和存储过程,可以以图形的形式提供图形查询分析功能,包含集成的T-SQL调试器、对象浏览器、可用于确定数据库中的表、视图、存储过程和其他对象的特性,并支持可用于加快复杂语句生产速度的模版。=3\*GB3③服务器网络实用工具=4\*GB3④客户端网络实用工具3.3.2数据完整性所谓的数据完整性是指数据库中数据在逻辑上的一致性和准确性,包括域完整性(域完整性指列的输入有效性)、实体完整性(实体完整性指将行定义为特定表的唯一实体)、参考完整性(参考完整性确保维持主关键字和外部关键字)3.3.3数据库备份方法设计数据库备份策略的指导思想是:以最小的代价恢复数据。数据库备份常用的两种备份方法:完全备份和差异备份,它们又分为只备份数据库和备份数据库、事务日志两种。3.3.4SQLServer2000的身份认证模式=1\*GB3①Windows认证模式=2\*GB3②混合认证模式3.4其他工具简介Visio是微软公司开发的专业制图工具,利用它可以制作许多种比较专业的图形,比如流程图、电气图、网络拓扑图、项目计划图、组织结构图等等,一般制作规范一点的图形都要用到它。此外,在程序制作Splash界面中还用到了PhotoshopCS。
4机票预定系统设计4.1系统分析4.1.1系统应用背景本系统开发的基本内容是:开发一个机票预定系统。旅行社把旅客信息输入系统,系统为旅客安排航班。旅客交付了预订金后,系统打印出取票通知和账单给旅客,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误打印出机票。此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。除此以外,还要求能满足一下基本要求:=1\*GB3①在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。=2\*GB3②对于本系统还应补充以下功能:旅客延误了取票时间的处理。航班取消后的处理。旅客临时更改航班的处理。=3\*GB3③系统的外部输入项至少包括:旅客、旅行社和航空公司。本系统对数据的需求应包括如下几点:数据录入和处理的准确性和实时性数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。数据的一致性与完整性由于系统的数据是共享的,在不同的旅行社中,机票是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。数据的共享与独立性整个机票预定系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。另外,还应建立本系统的约束:Client/Server结构总体设计方案对它的约束:机票预定系统做为Client/Server结构的一个应用系统,不可避免的要受到Client/Server结构的约束。在其实施的各个阶段都要服从它的一些规划,包括功能设计、系统配置和计划。同时,由于信息的共享,机票预定系统还受到其它系统的信息约束。人力、资金、时间的约束机票预定工程实施的目标就是要带给航空公司看得出见的效益,其开发过程中也要考虑到人力、资金和时间的约束。因此,在设计中,重点是销售系统中的方便快捷,能提供给旅客以优质高效的服务,并提高销售的效率和便捷,为航空公司带来良好的效益。技术发展规律的约束计算机技术和产品的发展日新月异,将会给信息处理带来更多的手段,同时也会带来更加丰富的信息表达形式。例如图象和语音技术的进步,多媒体技术的发展,这些都要求系统在设计时考虑技术变化的可能性,为可能的变化预留一定的系统处理能力。4.1.2业务流程分析=1\*GB3①业务流程概述通过系统应用背景的分析,我们可以得出系统的总目标:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。根据可行性研究的结果和客户的要求,分析现有情况及问题,采用Client/Server结构,将机票预定系统划分为两个子系统:客户端子系统和服务器端子系统。本系统中为了简化工作,将服务器端子系统的功能合并到客户端子系统中开发,这样,客户端就只需要对一些数据的有效性进行验证就能直接与SQL数据库服务器关联,从而大大降低了工作的复杂度。常规流程是:旅行社工作人员从客户端输入旅客基本信息和订票信息,旅行社存储旅客基本信息的同时将旅客的订票信息传输至航空公司,航空公司经过必要的处理(比如安排航班)后返回带确认信息的旅客订票信息给旅行社,旅行社经过核实旅客的订票信息后打印出机票给用户。=2\*GB3②业务流程图旅客订票流程图:2传给航空公司1.1旅客信息记录1安排航班2.2传给旅行社2传给航空公司1.1旅客信息记录1安排航班2.2传给旅行社航班机票旅客订票记录机票信息旅客订票旅客1.3产生取票通知旅客1.3产生取票通知旅客航班机票信息订票信息取票通知订票信息图4.1旅客订票流程旅客取票图:旅客旅客1旅客旅客1旅客信息查询3.2打印机票订票旅客清单售出机票信息图4.2旅客取票流程4.1.3功能模块分析为了能实现机票预定系统的各项功能,并将各个功能有效、合理的组织起来,经过对需求的分析,本系统的功能模块划分图如下:机票预定系统机票预定系统系统管理子系统旅行社子系统航空公司子系统统旅客服务子系统统用户角色管理人员信息管理旅客订票管理旅客退票管理航班基本信息管理航班运行信息管理航班安排管理旅客综合查询旅客信息管理图4.3功能模块划分其中各模块功能描述如下:=1\*GB3①一级模块:系统管理子系统:该模块的主要功能是对用户、人员进行管理,另外还包括密码修改、重新登录、退出系统等功能。旅行社子系统:该模块的主要功能是对旅客基本信息、旅客订票、旅客退票等信息进行管理。航空公司子系统:该模块的主要功能是对航班的基本信息、运行信息进行管理,并对航班进行安排。旅客服务子系统:该模块的主要功能便是为旅客提供基本查询。=2\*GB3②二级模块:用户角色管理:该模块的主要功能是对用户进行管理,包括用户的添加、修改、查询、删除等功能。人员信息管理:该模块的主要功能是对该系统的相关人员进行管理,具体包括人员的添加、修改、查询、删除等功能。旅客信息管理:该模块的主要功能是对旅客的基本信息进行输入、存储、传输、修改、删除等。旅客订票管理:该模块的主要功能是管理旅客订票方面的基本信息。旅客退票管理:该模块的主要功能是管理旅客退票方面的基本信息。航班基本信息管理:该模块的主要功能是管理航班的一些静态信息,如航班起飞时间、目的地以及有关舱位和价格方面的信息。航班运行信息管理:该模块的主要功能是动态描述航班的实际运行信息。航班安排管理:该模块的主要功能是对旅行社传输过来的订票信息进行航班的安排。旅客综合查询:该模块的主要功能是为旅客提供一些基本信息的查询,比如航班的基本信息、旅客的订票状态等。此外,系统还提供了一个功能介绍模块和一些关于本系统的帮助信息文件,本人主要负责其中的系统管理子模块、旅客信息管理以及Javadoc帮助文档等。4.2数据库设计4.2.1数据库分析作为一个与数据库紧密联系的管理系统,数据库在整个系统中扮演的角色自然是非常重要的,如果数据库设计不正确或是不合理,对后期开发系统来说将会非常困难。所以要想开发出一个与数据库相联系的管理软件,对数据库的分析和设计就显得尤为重要了。为了能建出合理的数据库,本系统使用PowerDesigner11作为概念数据模型的开发工具,用PD11建立数据库的过程如下:=1\*GB3①打开PD11后,选择File菜单项下的New(快捷键Ctrl+N),弹出的窗口中有如下图几种选择:图4.4数据模型选择其中用到的模型有:ConceptualDataModel--概念数据模型、PhysicalDataModel—物理数据模型、Multi-ModelReport—多模输出。选择ConceptualDataModel建立概念数据模型。建立CDM主用到图4-5所示的组件工具栏:图4.5概念数据模型组件图4.6实体属性修改窗口创建实体后,通过图4.6所示的实体属性修改窗口添加、修改、删除属性,并且可以用选择Identifiers修改、添加标识。=2\*GB3②完成CDM并检查没有错误后,选择Tools->GeneratePhysicalDataModel选项生成物理数据模型。其中,概念数据模型的实体名转换成物理数据模型的表名、概念数据模型的属性名转换成物理数据模型的字段。=3\*GB3③选择Database->GenerateDatabase选项生成具体数据库。4.2.2数据模型图=1\*GB3①本系统的概念数据模型(CDM)如下:图4.7概念数据模型=2\*GB3②本系统的物理数据模型(PDM)如下:图4.8概念数据模型4.2.3数据库表及字段说明表4.1数据库表格清单名称代码订票信息表T_DPXXB旅行社信息表T_LXSXX旅客信息表T_LKXXB航班舱位价格信息表T_HBCWJGXXB航班基本信息表T_HBJBXXB航班运行信息表T_HBYXXXB航空公司信息T_HKGSXX用户信息表T_YHXXB角色信息表T_Role人员信息表T_RYXXB各表的列清单以及说明如下:表4.2人员信息表列清单(T_RYXXB)名称代码数据类型长度是否主键是否外键是否允许空人员编号str_ryxxb_ryidA88是否否人员名vstr_ryxxb_nameVA1616否否否性别str_ryxxb_xbA22否否是人员单位vstr_ryxxb_rydwVA4040否否是联系电话str_ryxxb_lxdhA1111否否是家庭住址str_ryxxb_jtzzVA8080否否是身份证vstr_ryxxb_sfzVA1818否否否备注vstr_ryxxb_bzVA400400否否是表4.3旅客信息表列清单(T_LKXXB)名称代码数据类型长度是否主键是否外键是否允许空旅客编号str_lkxxb_lkidA1414是否否旅客姓名vstr_lkxxb_lkxmVA1515否否否身份证vstr_lkxxb_sfzVA1818否否否旅客性别str_lkxxb_lkxbA22否否是联系电话str_lxsxx_lxdhA1111否否是工作单位vstr_lkxxb_gzdwVA2020否否是输入时间dat_lkxxb_srsjDT否否是备注vstr_lkxxb_bzVA400400否否是表4.4旅行社信息表列清单(T_LXSXXB)名称代码数据类型长度是否主键是否外键是否允许空旅行社编号str_lxsxx_lxsidA88是否否旅行社名称vstr_lxsxx_lxsmcVA1515否否否成立日期d_lxsxx_clsjD否否是联系电话str_lxsxx_lxdhA1111否否是等级str_lxsxx_djA11否否是备注vstr_lxsxx_bzVA400400否否是表4.5用户信息表列清单(T_YHXXB)名称代码数据类型长度是否主键是否外键是否允许空用户编号str_yhxxb_yhidA88是否否角色编号str_role_roleidA88否是是用户名vstr_yhxxb_nameVA1616否否否用户密码vstr_yhxxb_passwordVA1515否否否登陆次数int_yhxxb_dlcsI否否是备注vstr_yhxxb_bzVA400400否否是表4.6航班基本信息表列清单(T_HBJBXXB)名称代码数据类型长度是否主键是否外键是否允许空公司编号str_hkgsxx_gsidA88否是是航班编号str_hbjbxx_hbidA1212是否否起飞时间dat_hbjbxxb_qfsjDT否否否到达时间dat_hbjbxxb_ddsjDT否否是起飞地vstr_hbjbxxb_qfdVA8080否否是中转地vstr_hbjbxxb_zzdVA8080否否是目的地vstr_hbjbxxb_mddVA8080否否否是否已取消str_hbjbxxb_IfcancelA11否否是备注vstr_hbjbxxb_bzVA400400否否是表4-7航班舱位价格信息表列清单(T_HBCWJGXXB)名称代码数据类型长度是否主键是否外键是否允许空公司编号str_hkgsxx_gsidA88否是是航班编号str_hbjbxx_hbidA1212否是是记录编号str_hbcwxxb_jlbhI是否否舱位等级str_hbcwxxb_cwdjA11否否是座位数int_hbcwxxb_zwsI否否是全票价mon_hbcwxxb_qpjN12,212否否是打折率mon_hbcwxxb_dzlN5,25否否是价格是否有效str_hbjbxxb_IfIneffectA11否否是备注vstr_hbcwxxb_bzVA400400否否是表4.8航班运行信息表列清单(T_HBYXXXB)名称代码数据类型长度是否主键是否外键是否允许空公司编号str_hkgsxx_gsidA88否是是航班编号str_hbjbxx_hbidA1212否是是运行记录编号str_hbyxxxb_yxjlidA1414是否否起飞时间dat_hbyxxxb_qfsjDT否否否到达时间dat_hbyxxb_ddsjDT否否是起飞地vstr_hbyxxxb_qfdVA8080否否是目的地vstr_hbyxxxb_mddVA8080否否否执行机型vstr_hbyxxxb_zxjxVA8080否否是飞机编号str_hbyxxxb_fjidA1616否否否座位数int_hbyxxxb_zwsI否否是备注vstr_hbyxxxb_bzVA400400否否是表4.9航空公司信息表列清单(T_HKGSXXB)名称代码数据类型长度是否主键是否外键是否允许空公司编号str_hkgsxx_gsidA88是否否公司名称vstr_hkgsxx_gsmcVA1515否否否联系电话str_hkgsxx_lxdhA1111否否是成立日期d_hkgsxx_clsjD否否是备注vstr_hkgsxx_bzVA400400否否是表4.10角色信息表列清单(T_Role)名称代码数据类型长度是否主键是否外键是否允许空角色编号str_role_roleidA88是否否角色名vstr_role_rolenameVA1616否否是备注vstr_role_bzVA400400否否是表4.11订票信息表列清单(T_DPXXB)名称代码数据类型长度是否主键是否外键是否允许空订票编号str_dpxxb_dpidA88是否否旅客编号str_lkxxb_lkidA1414否是是旅行社编号str_lxsxx_lxsidA88否是是预定航班编号str_dpxxb_ydhbidA88否否是预定出发地vstr_dpxxb_ydcfdVA8080否否是预定目的地vstr_dpxxb_ydmddVA8080否否是预定起飞时间dat_dpxxb_ydqfsjT否否否预定舱位等级str_dpxxb_ydcwdjA22否否是预定价格mon_dpxxb_ydjgMN6,26否否否订票经办人vstr_dpxxb_dpjbrVA1616否否是是否已出票str_dpxxb_IfsaledA22否否是出票经办人vstr_dpxxb_cpjbrVA1616否否是机票流水号str_dpxxb_jplshA88否否是实际航班编号str_dpxxb_sjhbidA88否否是机型vstr_dpxxb_jxVA8080否否是实际出发地vstr_dpxxb_sjcfdVA8080否否是实际起飞时间dat_dpxxb_sjqfsjDT否否是实际舱位等级str_dpxxb_sjcwdjVA22否否是座位号int_dpxxb_zwhI否否是销售价格mon_dpxxb_xsjgN12,212否否是是否已取票str_dpxxb_IftakenA22否否是是否已退票str_dpxxb_IfreturnA22否否是退票原因vstr_dpxxb_reasonVA600600否否是应扣手续费mon_dpxxb_yksxfMN6,26否否是退票经办人vstr_dpxxb_tpjbrVA1616否否是备注vstr_dpxxb_bzVA400400否否是4.3我的模块设计与编码从事本次机票预定系统的小组开发人员有刘昀、刘楠和我,前期的查询资料和数据库设计是由我们共同完成的,接下来的编码工作我们各自负责的模块见下表:表4.12系统模块分配情况姓名负责具体工作蒲海诚登录模块、人员信息模块、角色管理模块、旅客信息模块、帮助文档制作刘昀航班基本信息管理模块、航班运行信息模块、航班安排模块刘楠旅客订票管理模块、旅客退票管理模块、旅客综合查询模块4.3.1JBuilder2006环境配置在开发具体的系统以前,有许多的前期准备工作是必须,而且经过这些准备往往能大大提高我们的工作效率,达到事半功倍的效果。=1\*GB3①安装好JDBC驱动程序(一般情况下目录是:C:\ProgramFiles\MicrosoftSQLServer2000DriverforJDBC)。=2\*GB3②需要加载JDBC驱动程序到JBuilder类库:选择Tools->Configure->Libraries,进入库配置窗口,点击New按钮,填写库名称以及单ADD按钮选择刚才安装的JDBC目录(如C:\ProgramFiles\MicrosoftSQLServer2000DriverforJDBC\Lib),单击确定即可。=3\*GB3③添加配置文件:选择Enterprise->Enterprisesetup->DatabaseDrivers->单击ADD按钮添加前面加载的SQL2000的JDBC驱动。然后重启JBuilder2006即可。这里需要注意的几点:WindowsXP系统如果没有给SQL数据库打补丁(至少应该是sp2补丁)或是在JBuilder2006中JDBC配置不正确,则会出如图所示错误:图4.9WindowsXP系统数据库未打补丁或JDBC配置不正确时显示的错误信息SQLServer2000的身份认证应当选择混合认证模式,否则会出现如图所示错误:图4.10不选择混合认证模式显示的错误信息应当对JBuilder2006的其它选项,比如快捷键、代码模板、编辑器参数等,进行设置,这将会为接下来的编码带来便利。具体设置步骤为:选择Tools->Preferences,然后选择对应的参数进行设置即可。4.3.2Splash窗口设计=1\*GB3①程序实现流程双击EXE进入系统双击EXE进入系统5秒钟到否进入登录系统反对是否图4.11Splash窗口程序实现流程=2\*GB3②运行效果与操作图4.12Splash界面该界面是双击机票预定系统exe可执行程序所见的第一界面,该界面的功能主要是显示本系统的版本以及版权等基本信息,等待5秒钟后,该界面自动关闭,从而进入用户登录界面。=3\*GB3③设计要点该窗口用的是JWindow类,由于一般的窗口(JFrame)会有标题栏(titleBar),这样必然会对整体美感产生影响,而如果使用对话框(JDialog)它又必须依赖于一个父框架,虽然可以将父框架设置为隐藏,但势必也会影响系统性能,所以使用了JWindow类。为了能达到系统界面自动跳转的目的,需要使用javax的Timer类,该类的主要功能是计时,在计时时间到时,程序员可以指定需要执行的程序。为了使该界面在不同的显示器(比如常用的800*600、1024*768)中都能居中正常显示,通过Toolkit.getDefaultToolkit().getScreenSize()得到本地客户机上的显示器屏幕大小(screenSize),然后通过frame.getSize()得到本窗口的大小(frameSize),再通过比较和设置就可以使系统能居中并正常的显示了,部分代码如下:if(frameSize.height>screenSize.height){frameSize.height=screenSize.height;}if(frameSize.width>screenSize.width){frameSize.width=screenSize.width;}//设置Splash窗口的大小位置frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);//设置Splash窗口的显示位置下面章节中介绍的登录窗口、主窗口以及各级模块都用到了该技术。本模块中一些主要控件的属性和值设置如下:表4.13Splash界面控件属性设置控件名称控件类型属性值说明Win_splashJWindowcursorCursor.WAIT_CURSOR鼠标设为等待状态jLabel1JLabeltext“”文本属性设置为空iconatbs_login.jpg设置标签空间图标sizeicon.getIconWidth()图片大小设置为实际大小constraintscenter设置标签位于管理器中央为了清晰地显示该窗口的功能,将以表格的形式描述该窗口的输入、输出、处理图(IPO图),如下表:表4.14Splash窗口IPO功能编号N01功能名称Splash窗口所属部门02计本3调查人蒲海诚调查时间2006审核人功能描述显示机票预定系统的基本信息,等待5秒进入用户登录窗口输入项无处理描述创建一个Timer类实例time,该类构造函数的参数依次为延迟时间(delay=5秒)、监听器(listener),同时还要设置它的Repeats属性为false,在窗口添加一个voidTime_actionPerformed(ActionEventevt)函数,在函数里设置要完成的工作——Frm_Loginframe=newFrm_Login(),即弹出登录窗口。输出项弹出登录窗口。界面要求图形化用户界面,界面屏幕居中显示。=4\*GB3④步骤详解建立工程文件(atbs文件夹)和应用文件(App_Main),系统会同时自动生成一个窗口Frame(这里设置成主窗口Frm_Main,有关主窗口Frm_Main的设置将在后面章节介绍).选择File->New->General->Class,接下来在BaseClass(基类)下拉组合框中选择JWindow,单击OK按钮即可。选择组件栏的Swing的标签控件(Label),添加到Win_splash窗口中,由于JWindow默认的布局管理器是BorderLayout,所以Label控件将填充整个界面。首先添加一个事件适配器类window_flash_actionAdapter,接着为窗口添加Timer类,并在窗口的jbInit()初始化函数里创建并初始化一个time实例,然后启动time实例(time.start())。在窗口内创建一个函数Time_actionPerformed(ActionEventevt),然后添加创建并居中显示登录界面同时关闭当前窗口的代码,。在应用文件(App_Main)中将Splash窗口设置为第一个要显示的窗口即可。=5\*GB3⑤设计体会本功能的实现主要用到了一个计时器类,如何设置计时器使之能在指定时间内跳转到指定窗口(这里为登录窗口)是关键!还有就是布局管理器的使用也是该部分的重点。4.3.3登录窗口设计=1\*GB3①程序实现流程进入登录窗口确定还是取消密码是否为空密码是否正确进入登录窗口确定还是取消密码是否为空密码是否正确进入主界面退出系统确定取消是否正确错误图4.13登录窗口实现流程=2\*GB3②运行效果与操作图4.14用户登录界面运行Splash窗口后,将自动弹出用户登录窗口,用户从用户账号下拉组合框中小选择账号(也可以直接输入正确的用户账号),接着输入密码(如果是guest账号,则使用默认的密码,这个账号是为旅客设置的),单击确定按钮,此时系统将会根据你的用户账号和密码判断你的输入信息是否合法,当密码为空时显示如下信息:图4.15未输入密码时显示的信息如果输入的用户名和密码不匹配,则显示如下信息:图4.16用户名和密码不匹配时显示的信息如果输入的用户名和密码不匹配,则进入系统主界面。=3\*GB3③技术要点该窗口继承自JFrame类,其中用到的重要控件的属性和值设置如下表:表4.15用户登录窗口重要控件属性设置控件名称控件类型属性值说明Frm_LoginJFrametitle“欢迎登录机票预定系统”设置窗口标题resizablefalse窗口大小不可变IconImage“atbs_icon.jpg”设置窗口icon图标jLabel1jLabeltext“用户账号”jLabel2jLabeltext“密码:”jButton1jButtontext“登陆”登录按钮标题jButton2jButtontext“退出”退出按钮标题jdbNavComboBox_userNameJdbNavComboBoxDataSetqueryDataSet1设置数据集ColumnNamevstr_yhxxb_name列名为用户名Editabletrue允许输入pwdJPasswordFieldtext“”空密码该窗口的输入、输出、处理(IPO图)如下:表4.16用户登录窗口IPO功能编号N02功能名称用户登录窗口所属部门02计本调查人蒲海诚调查时间2006审核人功能描述系统根据用户账户和密码的判断,决定用户能否进入机票预定系统,同时得到用户类型,从而在接下来的主窗体中设置权限。输入项通过下拉组合框jdbNavComboBox_userName从数据库表T_YYXXB中检索出用户名,用户亦可直接输入用户名。用户通过密码框pwd输入用户密码。处理描述用户单击登录按钮,系统根据输入项(用户名和密码)判断用户是否是合法用户,从而决定用户能否进入系统。如果用户是合法的,那么系统会纪录用户的一些基本信息,比如用户名(App_Main.userName)、用户类型(App_Main.userType)、用户密码(App_Main.userPassword)、用户登录次数(App_Main.loginTime)等等。用户单击退出按钮,系统退出应用程序。输出项密码为空,弹出图4-15所示信息。用户名不正确,弹出图4-16所示信息。用户名和密码正确,进入系统主窗体。退出系统。界面要求图形化用户界面,界面屏幕居中显示。=4\*GB3④步骤详解选择File->New->General->Frame,在接下来BaseClass(基类)下拉组合框中使用默认的JFrame,单击OK按钮即可。按照图4-14所示的布局,向窗体中添加控件。选择组件框中的DataExpress选项卡,添加Database和QueryDataSet,设置Database的connection属性与数据库联接,同时设置QueryDataSet的query属性,得到具体数据库表中的数据。为“退出”按钮的actionPerformed事件添加代码:System.exit(0)。为“登录”按钮的actionPerformed事件添加处理代码。=5\*GB3⑤设计体会在这一阶段中,主要运用了一个JdbNavComboBox实例,使得从数据库中得到用户名变得非常简单,另外,还用到了JOptionPane的几个静态函数来弹出信息窗口,如何合理运用这些基本控件是关键!4.3.4主窗口设计权限分配进入主界面退出系统选择各级子菜单右击桌面背景点击退出按钮进入各子窗口弹出菜单=1\*GB3权限分配进入主界面退出系统选择各级子菜单右击桌面背景点击退出按钮进入各子窗口弹出菜单图4.17主窗口主要功能流程=2\*GB3②主界面设计运行效果与操作图4.18机票预定系统主界面通过用户登录窗口的验证后就可以进入系统的主界面了,图4-17是以超级管理员身份进入系统看到的结果,根据用户进入系统时纪录的基本信息设置用户权限,从而使不同的用户具有不同的权限。用户通过选择不同的菜单进入不同的模块,从而完成不同的工作。技术要点本系统采用的是多文档窗体,也就是说其它子窗体只能在父窗体内部活动,为了达到这一目的,窗体的布局相对于其它窗体有所不同,原来窗体中使用的内容窗格是JPanel,而这里应改为JLayeredPane(分层窗格)。分层窗格共分为七层,每一层显示不同的内容,因此,将一个带图标的标签放在底层,将其它子窗体放在高层就可以达到既有背景图片又能正常显示子窗体的目的。另外,为了使界面不至于太单调,系统还设置的弹出菜单,从而用户不但可以使用系统预设的几张图片,而且还可以选择本地的图片作为背景。一些重要控件的属性设置如下:表4.17主窗体主要控件属性设置控件名称控件类型属性值说明Frm_MainJFrametitle“机票预定系统”设置主窗口标题IconImage“atbs_icon.jpg”设置主窗口图标DefaultCloseOperationDO_NOTHING_ON_CLOSE设置默认关闭事件JMenuBarjMenuBar1设置主菜单ContentPanejPanel1设置窗格为分层窗格jLabel1JLabeltext“”文本属性设置为空Icon“atbs_desktop_select.jpg”设置桌面初始背景步骤详解选择创建应用程序是系统创建的Frame1,改名称为Frm_Main,按表4-7所示设置其属性。将窗体的内容窗格contentpane设置成分层窗格(JLayeredPane)的实例jPanel1。添加一个标签控件JLabel1,设置其属性如表4-7,并将之添加到分层窗格的DEFAULT_LAYER层。添加一个权限管理函数privatevoidqxsz(),根据用户的登录信息设置用户的权限。设计体会在Java中使用多文档窗口技术,除了可以使用分层窗格作为内容窗格以外,还可以采用桌面窗格(JDeskTopPane),但如果向桌面窗格中添加含背景图片的标签控件是可能会出现不可预料的结果。=3\*GB3③主菜单设计运行效果与操作图4.19系统管理菜单项图4.20旅行社菜单项图4.21航空公司菜单项图4.22帮助菜单项上面的效果图便是系统主菜单下的子菜单项,单击某一项或使用助记符(Alt+相应下划线)即可进入相应的字模块。技术要点菜单技术已经成为当前管理系统不可或缺的技术,要开发出友好界面的系统菜单将是最佳选择,JBuilder2006中有专门的菜单制作工具,基本上每一步都是可视化的,需要设置的主要属性有:text—菜单标题、mnemonic—设置助记符、accelerator—设置快捷菜单、addSeparator—添加分割条等。步骤详解选择Structure窗格下的Menu文件夹,双击jMenuBar1项进入菜单编辑器。依次输入一级菜单和二级菜单的标签。设置各级菜单的助记符或快捷菜单。给各级菜单的actionPerformed事件添加打开各个子模块的代码。设计体会与经验由于有可可视化的菜单编辑器,使得在JBuilder中编辑菜单变得容易了许多。=4\*GB3④弹出菜单设计运行效果与操作图4.23桌面弹出菜单在主界面桌面背景下单击鼠标右键,将弹出如上图所示菜单,选择“关于系统”菜单将弹出一些本系统制作的基本信息,选择“重新登录”菜单将关闭主窗口同时显示用户登录窗口,选择“修改密码”菜单将弹出修改密码窗口,选择“更改桌面”菜单下的任意项则桌面背景也随之修改。技术要点弹出菜单的制作要点与一般菜单的制作效果完全一样,不同的是在设置“更改桌面”菜单项时采用了jRadioButtonMenuItem菜单,为了能使用户每次只能选择一种背景,加入BottonGroup选项按钮组对这一组菜单进行约束。除此以外,需要设置的主要属性有:text—菜单标题、mnemonic—设置助记符、accelerator—设置快捷菜单、addSeparator—添加分割条等。步骤详解选择SwingContainers选项卡下的JPopupMenu添加到Structure窗格的Menu文件夹。依次输入一级菜单和二级菜单的标签。设置各级菜单的助记符或快捷菜单,同时添加一个BottonGroup控件。将“更改桌面”子菜单项添加到BottonGroup控件。给各级菜单的actionPerformed事件添加预实现的代码。设计体会这里主要注意设置单选按钮菜单以及选项按钮控件的使用,这样每次纠只能选择一种背景。用户角色管理窗口添加用户修改用户查询用户输入用户数据数据合法用户角色管理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年汽车铝合金车身维修基础考试试卷及答案
- 2026年拼音怎教师资格考试试卷及答案
- 2026年公务员招考申论人才服务乡村建设模拟试卷及答案
- 国家开放大学高等数学基础核心内容精简版
- 2026年安全员之C证(专职安全员)考试题库及参考答案(突破训练)
- 2026秋小学赣美版美术二年级上册(新教材)教学计划附教学进度表
- 2026年全国保密教育线上培训考试题及完整附答案
- 2026年初级会计考试(经济法+会计实务)真题及答案解析
- 2026年企业法律顾问劳动合同法测验卷及答案
- 2026年人教部编版四年级语文上册第一单元检测题
- 2026半导体材料行业发展分析及前景趋势与投融资策略研究报告
- 中国烟草招聘行测+专业知识考试题库(附答案)
- GA/T 1043-2025智能交通管理系统前端设备运行维护规范
- JJG 596-2026 安装式交流电能表检定规程
- 大连理工大学《光学》2024 - 2025 学年第一学期期末试卷
- 2026年上海市春季高考英语试卷试题完整版(含答案+听力MP3)
- 媒体创意与策划
- 2025年-2020中国近代史获奖教案-新版
- 《机械制图》电子教材
- 游泳馆入股合同协议书
- OTDR使用课件教学课件
评论
0/150
提交评论