第9章航空公司管理信息系统一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。本章我们将以一个航空公司管理信息系统为例子,来讲述如何建立一个航空公司管理信息系统。一般而言,航空公司的管理信息系统应该包括人事、工资管理模块,由于前面已经有了详尽的介绍,这里就不再赘述。9.1系统设计9.1.1系统功能分析系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。本例子中的航空公司管理信息系统需要完成功能主要有:舱位信息的输入和修改,包括舱位等级编号、舱位等级名称、提供的各种服务类别,以及备注信息等。客机信息的输入、修改和查询,包括客机编号、客机型号、购买时间、服役时间、经济舱座位数量、公务舱座位数量、头等舱座位数量以及备注信息等。航线信息的输入、修改和查询,包括航线编号、出发城市、到达城市、航班日期、出发时间、到达时间、客机编号、经济舱价格、公务舱价格、头等舱价格和备注信息等。客户等级信息的输入、修改,包括客户等级编号、客户等级名称、折扣比例和备注信息等。客户信息的输入、修改和查询,包括客户编号、客户姓名、客户性别、身份证号码、联系电话、客户类型和备注信息等。订票信息的输入、查询和修改,包括订票编号、客户编号、客户姓名、客户类型、折扣比例、航线编号、出发城市、到达城市、出发时间、舱位类型、票价、结算金额和备注信息等。9.1.2系统功能模块设计对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如图9-1所示的系统功能模块图。第9章航空公司管理系统国–425–图9-1系统功能模块图9.2数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:数据库需要分析。数据库概念结构设计。数据库逻辑结构设计。9.2.1数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。国VisualBasic数据库系统开发实例导航(第二版)–426–仔细分析调查有关航空公司管理信息需求的基础上,将得到如图9-2所示的本系统所处理的数据流程。图9-2航空公司管理信息系统数据流程图针对一般航空公司管理信息系统的需求,通过对航空公司管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:舱位等级信息,包括的数据项有:舱位等级编号、舱位等级名称、是否有礼品、是否有报纸、是否有饮料、是否有午餐、是否有电影、是否可以改签、是否可以退票、是否可以打折、备注信息等。客机信息,包括的数据项有:客机编号、客机型号、购买时间、服役时间、经济舱座位数量、公务舱座位数量、头等舱座位数量、备注信息等。航线信息,包括的数据项有:航线编号、出发城市、到达城市、航班日期、出发时间、到达时间、客机编号、经济舱价格、公务舱价格、头等舱价格、备注信息等。客户类型信息,包括的数据项有:客户类型编号、客户类型名称、折扣比例、备注信息等。客户信息,包括的数据项有:客户编号、客户姓名、客户性别、身份证号码、联系电话、客户类型、备注信息等。订票信息,包括的数据项有:订票编号、顾客编号、顾客姓名、顾客类型、折扣比例、航线编号、出发城市、到达城市、舱位类型、机票价格、结算金额、备注信息等。第9章航空公司管理系统国–427–有了上面的数据结构、数据项和数据流程,我们就能进行下面的数据库设计。9.2.2数据库概念结构设计得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。本实例根据上面的设计规划出的实体有:舱位等级信息实体、客机信息实体、航线信息实体、客户类型信息实体、客户信息实体、订票信息实体。各个实体具体的描述E-R图如下。舱位等级信息实体E-R图如图9-3所示。图9-3舱位等级信息实体E-R图客机信息实体E-R图如图9-4所示。图9-4客机信息实体E-R图航线信息实体E-R图如图9-5所示。国VisualBasic数据库系统开发实例导航(第二版)–428–图9-5航线信息实体E-R图客户类型信息实体E-R图如图9-6所示。图9-6客户类型信息实体E-R图客户信息实体E-R图如图9-7所示。图9-7客户信息实体E-R图订票信息实体E-R图如图9-8所示。第9章航空公司管理系统国–429–图9-8订票信息实体E-R图实体之间关系的E-R图如图9-9所示。图9-9实体之间关系的E-R图9.2.3数据库逻辑结构设计现在需要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。航空公司管理信息系统数据库中各个表格的设计结果如下面表格所示。每个表格表示在数据库中的一个表。表9-1为供应商信息表。国VisualBasic数据库系统开发实例导航(第二版)–430–表9-1serviceInfo舱位等级信息表列名数据类型可否为空说明serviceNOcharNOTNULL舱位等级编号serviceNamenvarcharNULL舱位等级名称noPresentcharNULL是否有礼物noNewsPapercharNULL是否有报纸noDrinkcharNULL是否有饮料noFoodcharNULL是否有午餐noMoviecharNULL是否有电影canChangecharNULL是否可以改签canCancelcharNULL是否可以退票canDiscountcharNULL是否可以打折serviceMemotextNULL备注信息表9-2为顾客信息表格。表9-2planeInfo客机信息表格列名数据类型可否为空说明planeNOcharNOTNULL客机编号planeTypecharNULL客机型号buyDatedatetimeNULL购买日期serveDatedatetimeNULL服役日期isCommonnvarcharNULL经济舱座位数量isCommercialnvarcharNULL公务舱座位数量isFirstnvarcharNULL头等舱座位数量planeMemotextNULL备注信息表9-3为航线信息表。表9-3airlineInfo航线信息表列名数据类型可否为空说明airlineNOcharNOTNULL航线编号departCitynvarcharNULL出发城市arrivalCitynvarcharNULL到达城市departDatecharNULL航班日期departTimecharNULL出发时间arrivalTimecharNULL到达时间planeNOcharNULL客机编号commonPricenumericNULL经济舱价格commercialPricenumericNULL公务舱价格firstPricenumericNULL头等舱价格airlineMemotextNULL备注信息表9-4为客户类型信息表格。表9-4customerType客户类型信息表列名数据类型可否为空说明ctypeNOcharNOTNULL客户类型编号ctypeNamecharNULL客户类型名称discountnumericNULL折扣比例第9章航空公司管理系统国–431–续表列名数据类型可否为空说明ctypeMemotextNULL备注表9-5为客户信息表格。表9-5customerInfo客户信息表列名数据类型可否为空说明customerNOcharNOTNULL客户编号customerNamecharNULL客户姓名customerSexcharNULL客户性别customerIDcharNULL身份证号码customerTelecharNULL客户联系电话customerTypecharNULL客户类型customerMemotextNULL备注表9-6为订票信息表格。表9-6ticketInfo订票信息表列名数据类型可否为空说明ticketNOcharNOTNULL订票编号customerNOcharNULL客户编号customerNamecharNULL客户姓名customerTypecharNULL客户类型discountnumericNULL折扣比例airlineNOcharNULL航线编号departCitynvarcharNULL出发城市arrivalCitynvarcharNULL到达城市ticketDatedatetimeNULL出发日期serviceTypecharNULL舱位类型ticketPricenumericNULL机票价格ticketSumnumericNULL结算金额customerMemotextNULL备注9.3数据库结构的实现经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。现在就可以在SQLServer2000数据库系统中实现该逻辑结构。这是利用SQLServer2000数据库系统中的SQL查询分析器实现的。下面给出创建这些表格的SQL语句。9.3.1创建系统用户表CREATETABLE[dbo].[user_Info1]([user_ID][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,[user_PWD][char](10)COLLATEChinese_PRC_CI_ASNULL,[user_Des][char](10)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]国VisualBasic数据库系统开发实例导航(第二版)–432–9.3.2创建舱位等级信息表CREATETABLE[dbo].[serviceInfo]([serviceNO][char](4)COLLATEChinese_PRC_CI_ASNOTNULL,[serviceName][nvarchar](20)COLLATEChinese_PRC_CI_ASNULL,[noPresent][char](2)COLLATEChinese_PRC_CI_ASNULL,[noNewsPaper][char](2)COLLATEChinese_PRC_CI_ASNULL,[noDrink][char](2)COLLATEChinese_PRC_CI_ASNULL,[noFood][char](2)COLLATEChinese_PRC_CI_ASNULL,[noMovie][char](2)COLLATEChinese_PRC_CI_ASNULL,[canChange][char](2)COLLATEChinese_PRC_CI_ASNULL,[canCancel][char](2)COLLATEChinese_PRC_CI_ASNULL,[canDiscount][char](2)COLLATEChinese_PRC_CI_ASNULL,[serviceMemo][text]COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]9.3.3创建客机信息表CREATETABLE[dbo].[planeInfo]([planeNO][char](18)COLLATEChinese_PRC_CI_ASNOTNULL,[planeType][char](20)COLLATEChinese_PRC_CI_ASNULL,[buyDate][datet