软件工程课程设计《航空售票系统》_第1页
软件工程课程设计《航空售票系统》_第2页
软件工程课程设计《航空售票系统》_第3页
软件工程课程设计《航空售票系统》_第4页
软件工程课程设计《航空售票系统》_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

胡竹青《航空售票系统的设计与实现》第33页共41页PAGE33航空售票系统的设计与实现学生姓名:胡竹青指导老师:邓广慧摘要本系统是采用VB开发的一个管理系统。本系统要解决的是机场售票中所要解决的问题,包括舱位信息的输入和修改,客机信息的输入、修改和查询,航线信息的输入、修改和查询,客户等级信息的输入、修改,客户信息的输入、修改和查询和订票信息的输入、查询和修改等六个方面的功能。在整个系统中采用文件来存储信息,角色划分为系统管理员、售票员、顾客三种,各自拥有不同的操作权限。在整个系统设计过程中,严格按照软件工程设计标准来设计系统。关键词飞机信息;部分匹配检索;文件操作AirticketingsystemStudentname:HUZhuqingAdvisor:DENGGuanghuiAbstractThissystemisdevelopedbyVBisamanagementsystem.Thissystemtosolvetheticketintheairportistosolvetheproblemthattheinputinformation,includingshippingandmodification,thepassengerinformationinput,modifyandquery,routeinformationinput,modifyandquery,customerinformationinput,modifylevel,customerinformationinput,modifyandqueryandbookinginformationqueryandmodifytheinput,sixaspectsoffunction.Inthesystemadoptsdocumenttostoreinformation,roleintosystemadministrator,conductor,customers,withthreedifferentpermissions.Intheprocessofsystemdesign,instrictaccordancewiththesoftwareengineeringdesignstandarddesignsystem.KeywordsAircraftinformation;Partofretrieval;Fileoperations1引言1.1课题设计的目的和背景意义近年来,国内外一些学者对中国航空业的竞争力进行了讨论,例如胡鞍钢对比分析了中美航空市场的开放度和国际竞争力。认为我国空中市场开放程度低下,其国际竞争能力十分薄弱,美国的航空市场开放程度最大,美国的航空运输业国际竞争力最强,这表明空中市场越开放。刘世锦和冯飞在民航业国内外市场的开放和竞争严重不对称的情况下,对竞争的考虑首先是如何提高本国企业的国际市场竞争力。TaeHoonOum和ChunyanYu研究比较了世界主要航空公司获利能力。在数据方面,他们利用了从1986~1995年的22个航空公司的年度数据,研究生产率增长的变化以及在成本以上提高价格的能力。他们认为和北美的竞争者来相比,欧洲航空运营商在投入价格方面的增长更为快速,而在航空票价方面的下跌更为迅速。这主要是归功于在欧洲范围内竞争的加剧,所以导致他们比较高的生产增长率。自九十年代以来,因特网技术的飞速发展正在迅速地改变着人们的生活方式,因特网正在由科学工作者的工具变为普通百姓获取信息、进行交流的场所,而因特网的商业应用则尤为引人注目。随着国内因特网的发展,国内航空公司也开始酝酿网上订票、售票业务。网上订票系统是一个取代过去由人工处理的订票系统,在一定程度上提高了购票的通明度和自主性,但网站在方便消费者的同时,仍存在许多不足的地方。例如,航空公司网站只能提供公司自有航班的机票信息,客观上限制了人们的选择范围;旅行社网站则多以旅游产品为主,很少单独提供机票的预订服务,因此其在机票服务的专业性、丰富性上都会大打折扣。个别旅游、机票预订等服务,但因这类网站缺乏实时的机票数据信息,因而在其所提供的票务信息的权威性、服务内容的专业性上仍然不尽人意。因此,消费者仍然真正做到自主选购机票,而所获得的购票体验也仍存在着“费时费力,无法排除订票的不确定性”,或者“价格折扣等关键信息可信度不高”等负面感觉。客户能随时随地通过因特网查询航班的详细信息,并预定最满意的航班。客户无须来往与机场和家、办公室之间,不必在售票点排队买票或订票,只要有一根网线就能轻松搞定从查询航班到订票到取票等一系列过程。[3]2系统分析2.1需求分析系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。本例子中的航空公司管理信息系统需要完成功能主要有:舱位信息的输入和修改,包括舱位等级编号、舱位等级名称、提供的各种服务类别,以及备注信息等。客机信息的输入、修改和查询,包括客机编号、客机型号、购买时间、服役时间、经济舱座位数量、公务舱座位数量、头等舱座位数量以及备注信息等。航线信息的输入、修改和查询,包括航线编号、出发城市、到达城市、航班日期、出发时间、到达时间、客机编号、经济舱价格、公务舱价格、头等舱价格和备注信息等。客户等级信息的输入、修改,包括客户等级编号、客户等级名称、折扣比例和备注信息等。客户信息的输入、修改和查询,包括客户编号、客户姓名、客户性别、身份证号码、联系电话、客户类型和备注信息等。订票信息的输入、查询和修改,包括订票编号、客户编号、客户姓名、客户类型、折扣比例、航线编号、出发城市、到达城市、出发时间、舱位类型、票价、结算金额和备注信息等。2.2运行环境硬件要求CPU:300MHz以上的处理器。内存:128MB,推荐256MB。硬盘:150MB以上剩余空间。显示像素:最低800*600,最佳效果1024*768。软件要求操作系统:Windows2000/NT/XP/CE。数据库:SQLServer2000。3系统设计3.1结构设计根据各项功能进行集中、分块,按照结构化程序设计的要求,得到如图3-1所示的系统功能模块图。图3-1系统功能模块图3.2数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:数据库需要分析、数据库概念结构设计和数据库逻辑结构设计。3.2.1数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。仔细分析调查有关航空公司管理信息需求的基础上,将得到如图2-2所示的本系统所处理的数据流程。图3-2航空公司管理信息系统数据流程图通过对航空公司管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:(1)舱位等级信息,包括的数据项有:舱位等级编号、舱位等级名称、是否有礼品、是否有报纸、是否有饮料、是否有午餐、是否有电影、是否可以改签、是否可以退票、是否可以打折、备注信息等。(2)客机信息,包括的数据项有:客机编号、客机型号、购买时间、服役时间、经济舱座位数量、公务舱座位数量、头等舱座位数量、备注信息等。(3)航线信息,包括的数据项有:航线编号、出发城市、到达城市、航班日期、出发时间、到达时间、客机编号、经济舱价格、公务舱价格、头等舱价格、备注信息等。(4)客户类型信息,包括的数据项有:客户类型编号、客户类型名称、折扣比例、备注信息等。(5)客户信息,包括的数据项有:客户编号、客户姓名、客户性别、身份证号码、联系电话、客户类型、备注信息等。(6)订票信息,包括的数据项有:订票编号、顾客编号、顾客姓名、顾客类型、折扣比例、航线编号、出发城市、到达城市、舱位类型、机票价格、结算金额、备注信息等。3.2.2数据库概念结构设计得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。根据上面的设计规划出的实体有:舱位等级信息实体、客机信息实体、航线信息实体、客户类型信息实体、客户信息实体、订票信息实体。各个实体具体的描述E-R图如下。舱位等级信息实体E-R图如图3-3所示。图3-3舱位等级信息实体E-R图客机信息实体E-R图如图3-4所示。图3-4客机信息实体E-R图航线信息实体E-R图如图3-5所示。图3-5航线信息实体E-R图客户类型信息实体E-R图如图3-6所示。图3-6客户类型信息实体E-R图客户信息实体E-R图如图3-7所示。图3-7客户信息实体E-R图订票信息实体E-R图如图3-8所示。图3-8订票信息实体E-R图实体之间关系的E-R图如图3-9所示。图3-9实体之间关系的E-R图3.2.3数据库逻辑结构设计现在需要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。航空公司管理信息系统数据库中各个表格的设计结果如下面表格所示。每个表格表示在数据库中的一个表。表3-1为供应商信息表。表3-1serviceInfo舱位等级信息表列名数据类型可否为空说明serviceNOcharNOTNULL舱位等级编号serviceNamenvarcharNULL舱位等级名称noPresentcharNULL是否有礼物noNewsPapercharNULL是否有报纸noDrinkcharNULL是否有饮料noFoodcharNULL是否有午餐noMoviecharNULL是否有电影canChangecharNULL是否可以改签canCancelcharNULL是否可以退票canDiscountcharNULL是否可以打折serviceMemotextNULL备注信息表3-2planeInfo客机信息表格列名数据类型可否为空说明planeNOcharNOTNULL客机编号planeTypecharNULL客机型号buyDatedatetimeNULL购买日期serveDatedatetimeNULL服役日期isCommonnvarcharNULL经济舱座位数量isCommercialnvarcharNULL公务舱座位数量isFirstnvarcharNULL头等舱座位数量planeMemotextNULL备注信息表3-3airlineInfo航线信息表列名数据类型可否为空说明airlineNOcharNOTNULL航线编号departCitynvarcharNULL出发城市arrivalCitynvarcharNULL到达城市departDatecharNULL航班日期departTimecharNULL出发时间arrivalTimecharNULL到达时间planeNOcharNULL客机编号commonPricenumericNULL经济舱价格commercialPricenumericNULL公务舱价格firstPricenumericNULL头等舱价格airlineMemotextNULL备注信息表3-4customerType客户类型信息表列名数据类型可否为空说明ctypeNOcharNOTNULL客户类型编号ctypeNamecharNULL客户类型名称discountnumericNULL折扣比例续表列名数据类型可否为空说明ctypeMemotextNULL备注表3-5customerInfo客户信息表列名数据类型可否为空说明customerNOcharNOTNULL客户编号customerNamecharNULL客户姓名customerSexcharNULL客户性别customerIDcharNULL身份证号码customerTelecharNULL客户联系电话customerTypecharNULL客户类型customerMemotextNULL备注表3-6ticketInfo订票信息表列名数据类型可否为空说明ticketNOcharNOTNULL订票编号customerNOcharNULL客户编号customerNamecharNULL客户姓名customerTypecharNULL客户类型discountnumericNULL折扣比例airlineNOcharNULL航线编号departCitynvarcharNULL出发城市arrivalCitynvarcharNULL到达城市ticketDatedatetimeNULL出发日期serviceTypecharNULL舱位类型ticketPricenumericNULL机票价格ticketSumnumericNULL结算金额customerMemotextNULL备注4系统详细设计4.1数据库结构的实现4.1.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]4.1.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]4.1.3创建客机信息表CREATETABLE[dbo].[planeInfo]( [planeNO][char](18)COLLATEChinese_PRC_CI_ASNOTNULL, [planeType][char](20)COLLATEChinese_PRC_CI_ASNULL, [buyDate][datetime]NULL, [serveDate][datetime]NULL, [isCommon][nvarchar](20)COLLATEChinese_PRC_CI_ASNULL, [isCommercial][nvarchar](20)COLLATEChinese_PRC_CI_ASNULL, [isFirst][nvarchar](20)COLLATEChinese_PRC_CI_ASNULL, [planeMemo][text]COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]4.1.4创建航线信息表CREATETABLE[dbo].[airlineInfo]( [airlineNO][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [departCity][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL, [arrivalCity][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL, [departDate][char](10)COLLATEChinese_PRC_CI_ASNULL, [departTime][char](10)COLLATEChinese_PRC_CI_ASNULL, [arrivalTime][char](10)COLLATEChinese_PRC_CI_ASNULL, [planeNO][char](18)COLLATEChinese_PRC_CI_ASNULL, [commonPrice][numeric](18,2)NULL, [commercialPrice][numeric](18,2)NULL, [firstPrice][numeric](18,2)NULL, [airlineMemo][text]COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]4.1.5创建客户类型信息表CREATETABLE[dbo].[customerType]( [ctypeNO][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [ctypeName][char](20)COLLATEChinese_PRC_CI_ASNULL, [discount][numeric](2,0)NULL, [ctypeMemo][text]COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]4.1.6创建客户信息表CREATETABLE[dbo].[customerInfo]( [customerNO][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [customerName][char](50)COLLATEChinese_PRC_CI_ASNULL, [customerSex][char](2)COLLATEChinese_PRC_CI_ASNULL, [customerID][char](18)COLLATEChinese_PRC_CI_ASNULL, [customerTele][char](20)COLLATEChinese_PRC_CI_ASNULL, [customerType][char](14)COLLATEChinese_PRC_CI_ASNULL, [customerMemo][text]COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]4.1.7创建订票信息表CREATETABLE[dbo].[ticketInfo]( [ticketNO][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [customerNO][char](14)COLLATEChinese_PRC_CI_ASNULL, [customerName][char](50)COLLATEChinese_PRC_CI_ASNULL, [customerType][char](14)COLLATEChinese_PRC_CI_ASNULL, [discount][numeric](18,0)NULL, [airlineNO][char](14)COLLATEChinese_PRC_CI_ASNULL, [departCity][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL, [arrivalCity][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL, [ticketDate][datetime]NULL, [serviceType][nvarchar](20)COLLATEChinese_PRC_CI_ASNULL, [ticketPrice][numeric](18,2)NULL, [ticketSum][numeric](18,2)NULL, [ticketMemo][text]COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]4.2航空公司管理信息系统主窗体的创建4.2.1创建公用模块函数,用以执行各种SQL语句。添加函数ExecuteSQL,代码如下:PublicFunctionExecuteSQL(ByValSQL_AsString,MsgStringAsString)_AsADODB.Recordset'执行SQL语句,并返回记录集对象‘声明一个连接DimcnnAsADODB.Connection‘声明一个数据集对象DimrstAsADODB.RecordsetDimsTokens()AsString'异常处理OnErrorGoToExecuteSQL_Error'用Split函数产生一个包含各个子串的数组sTokens=Split(SQL)‘创建一个连接Setcnn=NewADODB.Connection'打开连接cnn.OpenConnectStringIfInStr("INSERT,DELETE,UPDATE",_UCase$(sTokens(0)))Then‘执行查询语句cnn.ExecuteSQLMsgString=sTokens(0)&_"querysuccessful"ElseSetrst=NewADODB.Recordsetrst.OpenTrim$(SQL),cnn,_adOpenKeyset,_adLockOptimistic'rst.MoveLast'getRecordCount'返回记录集对象SetExecuteSQL=rstMsgString="查询到"&rst.RecordCount&_"条记录"EndIfExecuteSQL_Exit:Setrst=NothingSetcnn=NothingExitFunctionExecuteSQL_Error:MsgString="查询错误:"&_Err.DescriptionResumeExecuteSQL_ExitEndFunction在ExecuteSQL函数中使用了ConnectString函数,这个函数用来连接数据库,代码如下:PublicFunctionConnectString()_AsString'返回一个数据库连接ConnectString="FileDSN=ticket.dsn;UID=sa;PWD="EndFunction4.3舱位信息管理模块的创建4.3.1显示舱位信息窗体的创建代码如下:PrivateSubmenuCarbin_Click()frmService.txtSQL="select*fromserviceInfo"frmService.Show0EndSub窗体的Show方法后面加上0或者1,可以得到不同的窗体显示方式。参数为0时,显示的窗体为无模式形式,窗体切换时不需要进行其他操作;参数为1时,显示的窗体为有模式形式,窗体切换时必须进行相关操作。载入窗体时将自动显示各条记录,代码如下:PrivateSubForm_Load()ShowTitleShowDataEndSub函数ShowTitle用来显示表头,代码如下:PrivateSubShowTitle()DimiAsIntegerWithmsgList.Cols=12.TextMatrix(0,1)="等级编号".TextMatrix(0,2)="机舱等级".TextMatrix(0,3)="是否有礼品".TextMatrix(0,4)="是否有报纸".TextMatrix(0,5)="是否有饮料".TextMatrix(0,6)="是否有午餐".TextMatrix(0,7)="是否提供电影".TextMatrix(0,8)="是否可以改签".TextMatrix(0,9)="是否可以退票".TextMatrix(0,10)="是否可以打折".TextMatrix(0,11)="备注信息"'固定表头.FixedRows=1'设置各列的对齐方式Fori=0To11.ColAlignment(i)=0Nexti'表头项居中.FillStyle=flexFillRepeat.Col=0.Row=0.RowSel=1.ColSel=.Cols-1.CellAlignment=4'设置单元大小.ColWidth(0)=1000.ColWidth(1)=1000.ColWidth(2)=2000.ColWidth(3)=1000.ColWidth(4)=1000.ColWidth(5)=1000.ColWidth(6)=1000.ColWidth(7)=1000.ColWidth(8)=1000.ColWidth(9)=1000.ColWidth(10)=1000.ColWidth(11)=1000.Row=1EndWithEndSub函数ShowData把各条记录加到表格中,并显示出来,代码如下:PrivateSubShowData()DimjAsIntegerDimiAsIntegerDimMsgTextAsString‘获得数据集Setmrc=ExecuteSQL(txtSQL,MsgText)WithmsgList.Rows=1‘判断是否为空DoWhileNotmrc.EOF‘移动到下一行.Rows=.Rows+1‘循环Fori=1Tomrc.Fields.Count‘判断是否为空IfNotIsNull(Trim(mrc.Fields(i-1)))Then‘根据数据类型显示SelectCasemrc.Fields(i-1).TypeCaseadDBDate.TextMatrix(.Rows-1,i)=Format(mrc.Fields(i-1)&"","yyyy-mm-dd")CaseElse.TextMatrix(.Rows-1,i)=mrc.Fields(i-1)&""EndSelectEndIfNextI‘移动到下一条记录mrc.MoveNextLoopEndWith‘关闭数据集对象mrc.CloseEndSub在窗体显示时,可以控制窗体中各个控件按照要求的位置显示。可以在窗体的Resize事件中加入代码,代码如下:PrivateSubForm_Resize()‘判断当前窗体所处的状态,当前窗体不处于最小化状态并且主窗体不处于最小化状态时进行后面的操作IfMe.WindowState<>vbMinimizedAndfMainForm.WindowState<>vbMinimizedThen'边界处理IfMe.ScaleHeight<10*lblTitle.HeightThenExitSubEndIfIfMe.ScaleWidth<lblTitle.Width+lblTitle.Width/2ThenExitSubEndIf'控制控件的位置lblTitle.Top=lblTitle.HeightlblTitle.Left=(Me.Width-lblTitle.Width)/2‘控制表格控件的位置msgList.Top=lblTitle.Top+lblTitle.Height+lblTitle.Height/2msgList.Width=Me.ScaleWidth-200msgList.Left=Me.ScaleLeft+100msgList.Height=Me.ScaleHeight-msgList.Top-1500‘控制按钮位置Frame2.Top=msgList.Top+msgList.Height+50Frame2.Left=Me.ScaleWidth/2-3000EndIfEndSub4.3.2添加舱位信息窗体的创建代码如下:PrivateSubForm_Load()DimintCountAsIntegerDimMsgTextAsStringDimiAsInteger‘判断是否为添加IfgintSmode=1ThenMe.Caption=Me.Caption&"添加"Fori=0To7Combo1(i).AddItem"否"Combo1(i).AddItem"是"Combo1(i).ListIndex=0NextI‘载入当前选择记录内容ElseIfgintSmode=2ThenSetmrc=ExecuteSQL(txtSQL,MsgText)‘判断记录是否为空Ifmrc.EOF=FalseThenWithmrcForintCount=0To1txtItem(intCount)=.Fields(intCount)NextintCounttxtItem(2)=.Fields(10)Fori=0To7Combo1(i).AddItem"否"Combo1(i).AddItem"是"Combo1(i).ListIndex=0NextiEndWithtxtItem(0).Enabled=FalseEndIfMe.Caption=Me.Caption&"修改"EndIfmblChange=FalseEndSub输入内容完毕,单击“保存”按钮,将首先判断输入内容是否满足要求,然后添加到数据库中。代码如下:PrivateSubcmdSave_Click()DimintCountAsIntegerDimsMegAsStringDimMsgTextAsString‘判断输入内容是否为空ForintCount=0To1IfTrim(txtItem(intCount)&"")=""ThenSelectCaseintCountCase0sMeg="机舱等级编号"Case1sMeg="机舱等级名称"EndSelectsMeg=sMeg&"不能为空!"MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"txtItem(intCount).SetFocusExitSubEndIfNextintCount‘判断输入内容是否为数字IfNotIsNumeric(Trim(txtItem(0)))ThensMeg="机舱等级编号"sMeg=sMeg&"请输入数字!"MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"txtItem(0).SetFocusEndIf'添加判断是否有相同的ID记录IfgintSmode=1ThentxtSQL="select*fromserviceInfowhereserviceNO='"&Trim(txtItem(0))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)Ifmrc.EOF=FalseThenMsgBox"已经存在此编号的记录!",vbOKOnly+vbExclamation,"警告"txtItem(0).SetFocusExitSubEndIfmrc.CloseEndIf'判断是否有相同内容的记录txtSQL="select*fromserviceInfowhereserviceNO<>'"&Trim(txtItem(0))&"'andserviceName='"&Trim(txtItem(1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)Ifmrc.EOF=FalseThenMsgBox"已经存在相同机舱等级的记录!",vbOKOnly+vbExclamation,"警告"txtItem(1).SetFocusExitSubEndIf'先删除已有记录txtSQL="deletefromserviceInfowhereserviceNO='"&Trim(txtItem(0))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)'再加入新记录txtSQL="select*fromserviceInfo"Setmrc=ExecuteSQL(txtSQL,MsgText)mrc.AddNewForintCount=0To1mrc.Fields(intCount)=Trim(txtItem(intCount))NextintCountForintCount=0To7mrc.Fields(intCount+2)=Trim(Combo1(intCount))NextintCountmrc.Fields(10)=Trim(txtItem(2))‘更新数据集内容mrc.Update‘关闭数据集内容mrc.CloseIfgintSmode=1ThenMsgBox"添加记录成功!",vbOKOnly+vbExclamation,"添加记录"ForintCount=0To1txtItem(intCount)=""NextintCountForintCount=0To3Combo1(intCount).ListIndex=0NextintCounttxtItem(2)=""mblChange=FalseUnloadfrmServicefrmService.txtSQL="select*fromserviceInfo"frmService.ShowElseIfgintSmode=2ThenUnloadMeUnloadfrmServicefrmService.txtSQL="select*fromserviceInfo"frmService.ShowEndIfEndSub4.3.3修改舱位等级信息代码如下:PrivateSubcmdModify_Click()DimintCountAsInteger判断列表中是否有记录IffrmService.msgList.Rows>1Then‘改变状态变量gintSmode=2‘记录选择记录位置intCount=msgList.RowIfintCount>0ThenfrmService1.txtSQL="select*fromserviceInfowhereserviceNO='"&Trim(msgList.TextMatrix(intCount,1))&"'"frmService1.Show1ElseMsgBox"警告",vbOKOnly+vbExclamation,"请首先选择需要修改的记录!"EndIfEndIfEndSub4.3.4删除舱位等级信息代码如下:PrivateSubcmdDelete_Click()DimtxtSQLAsStringDimintCountAsIntegerDimmrcAsADODB.RecordsetDimMsgTextAsString‘判断信息列表中内容是否为空IfmsgList.Rows>1Then‘提示信息IfMsgBox("真的要删除机舱等级为"&Trim(msgList.TextMatrix(msgList.Row,2))&"的记录吗?",vbOKCancel+vbExclamation,"警告")=vbOKThen‘记录选择记录位置intCount=msgList.Row‘删除重复记录txtSQL="deletefromserviceInfowhereserviceNO='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)‘卸载窗体UnloadfrmService‘重新载入记录并显示frmService.txtSQL="select*fromserviceInfo"frmService.ShowEndIfEndIfEndSub4.4客机信息管理模块的创建4.4.1显示客机信息窗体的创建代码如下:PrivateSubcmdSave_Click()DimintCountAsIntegerDimsMegAsStringDimMsgTextAsString‘判断输入内容是否为空ForintCount=0To6IfTrim(txtItem(intCount)&"")=""ThenSelectCaseintCountCase0sMeg="客机编号"Case1sMeg="客机型号"Case2sMeg="购买时间"Case3sMeg="服役时间"Case4sMeg="经济舱座位数量"Case5sMeg="公务舱座位数量"Case6sMeg="头等舱座位数量"EndSelectsMeg=sMeg&"不能为空!"MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"txtItem(intCount).SetFocusExitSubEndIfNextintCount‘判断输入内容为数字ForintCount=4To6IfNotIsNumeric(Trim(txtItem(intCount)))ThensMeg="座位数量"sMeg=sMeg&"请输入数字!"MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"txtItem(intCount).SetFocusEndIfNextintCount‘判断输入内容是否为日期ForintCount=2To3IfIsDate(txtItem(intCount))ThentxtItem(intCount)=Format(txtItem(intCount),"yyyy-mm-dd")ElseMsgBox"时间应输入日期(yyyy-mm-dd)!",vbOKOnly+vbExclamation,"警告"txtItem(intCount).SetFocusExitSubEndIfNextintCount'添加判断是否有相同的ID记录IfgintPmode=1ThentxtSQL="select*fromplaneInfowhereplaneNO='"&Trim(txtItem(0))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)Ifmrc.EOF=FalseThenMsgBox"已经存在此编号的记录!",vbOKOnly+vbExclamation,"警告"txtItem(0).SetFocusExitSubEndIfmrc.CloseEndIf'先删除已有记录txtSQL="deletefromplaneInfowhereplaneNO='"&Trim(txtItem(0))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)'再加入新记录txtSQL="select*fromplaneInfo"Setmrc=ExecuteSQL(txtSQL,MsgText)mrc.AddNewForintCount=0To7mrc.Fields(intCount)=Trim(txtItem(intCount))NextintCount‘更新数据集mrc.Update‘关闭数据集对象mrc.CloseIfgintPmode=1ThenMsgBox"添加记录成功!",vbOKOnly+vbExclamation,"添加记录"ForintCount=0To7txtItem(intCount)=""NextintCountmblChange=FalseUnloadfrmPlanefrmPlane.txtSQL="select*fromplaneInfo"frmPlane.ShowElseIfgintPmode=2ThenUnloadMeUnloadfrmPlanefrmPlane.txtSQL="select*fromplaneInfo"frmPlane.ShowEndIfEndSub4.4.2修改客机信息代码如下:PrivateSubcmdModify_Click()DimintCountAsInteger‘判断列表内容是否为空IffrmPlane.msgList.Rows>1ThengintPmode=2‘记载选择记录的位置intCount=msgList.RowIfintCount>0ThenfrmPlane1.txtSQL="select*fromplaneInfowhereplaneNO='"&Trim(msgList.TextMatrix(intCount,1))&"'"frmPlane1.Show1ElseMsgBox"警告",vbOKOnly+vbExclamation,"请首先选择需要修改的记录!"EndIfEndIfEndSub4.4.3删除客机信息代码如下:PrivateSubcmdDelete_Click()DimtxtSQLAsStringDimintCountAsIntegerDimmrcAsADODB.RecordsetDimMsgTextAsString‘判断列表内容是否为空IfmsgList.Rows>1ThenIfMsgBox("真的要删除客机编号为"&Trim(msgList.TextMatrix(msgList.Row,1))&"的型号为"&Trim(msgList.TextMatrix(msgList.Row,2))&"的客机记录吗?",vbOKCancel+vbExclamation,"警告")=vbOKThen‘记载选择记录的位置intCount=msgList.RowtxtSQL="deletefromplaneInfowhereplaneNO='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)UnloadfrmPlane‘重新载入所有记录,并显示出来frmPlane.txtSQL="select*fromplaneInfo"frmPlane.ShowEndIfEndIfEndSub5测试和运行结果的截图5.1系统的实现现在已经完成了程序各个功能模块的创建,现在来运行整个系统。运行程序,出现如图5-1所示的登录窗口。

图5-1用户登录窗口输入用户名和密码后,进入系统。选择“航线信息管理|舱位信息”菜单,出现如图5-2所示的窗体。图5-2显示舱位信息窗体选择“航线信息管理|客机信息”菜单,将显示所有客机信息,如图5-3所示。图5-3显示客机信息的窗体在客机信息列表中单击“添加”按钮,出现如图5-4所示的窗体,在其中输入客机信息。图5-4添加客机信息选择“航线信息管理|航线信息”菜单,出现如图5-5所示的航线信息列表。图5-5航线信息列表在航线信息列表中单击“添加”按钮,并输入航线内容,如图5-6所示。图5-6添加航线信息在航线信息列表中单击“查询”按钮,并设置查询内容,如图5-7所示。图5-7查询航线信息窗体航线查询结果如图5-8所示。图5-8航线信息查询结果选择“客户信息管理|客户信息”菜单,并输入客户信息,如图5-9所示。图5-9添加客户信息选择“订票信息管理|订票信息”菜单,出现如图5-10所示的机票信息列表。图5-10机票信息列表在机票信息列表中单击“添加”按钮,出现如图5-11所示的窗体,输入订票信息。图5-11添加订票信息单击“保存”按钮,出现如图5-12所示的对话框提示订票成功。图5-12订票提示信息在机票信息列表中,单击“查询”按钮,出现如图5-13所示的窗体,输入查询内容,可以得到剩余机票信息。图5-13机票信息查询窗体查询结果如图5-14所示。图5-14机票信息查询结果结束语两星期的课程设计已接近尾声了,这个航空售票系统也基本上完成了。然以前也有过管理信息系统的编写经历,但是像这次系统这么专业的却是第一次。在这次系统的开发过程中学到了好多知识,更加熟练地掌握了VB开发工具和SQLServer2000数据库。这次的课程设计使我对软件工程的知识有了更深刻的理解、更贴切的感受,感谢我的指导老师邓广慧老师帮忙讲解。通过两星期的课程设计,磨炼了自己的耐心,培养了自己查资料和同学讨论的好习惯,相信我以后会在这些方面做得更好。参考文献[1]常君义.管理信息系统.2003年9月.中国电力出版社[2]萨师煊,王珊.数据库系统概论.2005年1月.高等教育出版社[3]陈明.VisualBasic程序设计.2000年12月.陈明[4]刘韬,骆娟.VisualBasic实效编程百例.2002年7月.人民邮电出版社附录:源程序代码usemastergoifexists(select*fromdbo.sysdatabaseswherename='Ticket')dropdatabaseTicketGOcreatedatabaseTicketgouseTicketgoifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[airlineInfo]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[airlineInfo]GOifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[customerInfo]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[customerInfo]GOifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[customerType]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[customerType]GOifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[planeInfo]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[planeInfo]GOifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[serviceInfo]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[serviceInfo]GOifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[ticketInfo]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[ticketInfo]GOCREATETABLE[dbo].[airlineInfo]( [airlineNO][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [departCity][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL, [arrivalCity][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL, [departDate][char](10)COLLATEChinese_PRC_CI_ASNULL, [departTime][char](10)COLLATEChinese_PRC_CI_ASNULL, [arrivalTime][char](10)COLLATEChinese_PRC_CI_ASNULL, [planeNO][char](18)COLLATEChinese_PRC_CI_ASNULL, [commonPrice][numeric](18,2)NULL, [commercialPrice][numeric](18,2)NULL, [firstPrice][numeri

温馨提示

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

评论

0/150

提交评论