当前位置:文档之家› 航班查询系统

航班查询系统

航班查询系统一、背景、目的和意义二、主要功能描述三、软/硬件环境四、数据库设计五、界面设计六、编程过程中所遇难题七、分工协作八、收获一、背景:学习了数据库软件SQL 2005和Microsoft Visual Studio 2008后想到了用这2个软件做这个航班查询系统,通过ASP做出SQL的界面并导入存储过程对功能进行实现!目的和意义:机票查询系统是为机场工作人员和客户提供机票信息查询等与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点.它除克服了存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性。

它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。

为便于旅客通过代售点查询航班信息,要求系统能有效、快速、安全、可靠和无误的完成上述操作。

并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。

航班查询系统需要完成功能主要有:(1)管理员对航班信息的输入、修改和查询,对用户信息的查询。

(2)旅客信息的注册和登录及对航班信息的查询。

数据分析航班信息(航班号,机型,航空公司,起飞城市,到达城市,起飞时间,到达时间,总票数,剩余票数)旅客信息(用户名,密码,性别,年龄)用户活动分析用户通过系统查询航班信息。

用户活动图:二、主要功能描述航班信息维护模块提供航班信息的录入、删除、修改。

可以录入航班情况。

机型,航空公司,起飞城市,到达城市,起飞时间,到达时间,总票数,剩余票数。

当航班信息改变时可以修改航班信息数据库。

航班业务处理模块提供查询航班剩余票数功能。

客户可以登录航班购票系统进行查询;如果该航班已经无票,可以换乘。

系统功能图系统流程图数据流图1:三、软/硬件环境:使用Microsoft Visual Studio 2008和Microsoft SQL Server 2005电脑是windows7 64bit操作系统。

4、数据字典1)数据项表2-1数据项名含义说明数据类型长度说明航班号机型航班信息航班信息varcharvarchar5010航班号码航班所属机型航空公司航线信息char10航班所属公司起飞城市到达城市起飞时间到达时间总票数剩余票数UsernamePswSexAge ulevel 航线信息航线信息航班信息航班信息航班信息航班信息用户信息用户信息用户信息用户信息用户信息charcharcharcharvarcharvarcharcharcharcharcharchar1010101050501010101010飞机起飞城市飞机到达城市飞机起飞时间飞机到达时间航班的总票数航班的剩余票数用户名密码性别年龄用户等级2)数据结构表2-2名称简述组成company ticket 定义公司相关信息定义机票相关信息公司名,公司地址,公司代码,公司电话机票号,座位,票价,航班号Flight air 定义航班相关信息定义飞机相关信息航班号,出发地,到达地,出发时间,到达时间,公司代码,航班号航程,飞机号,票价3) 数据流4) 数据存储表2-3名称简述组成Company Flight ticket 定义公司相关信息定义机票相关信息CID,Cname, Caddress, CphoneticketID,price,seat number,Flight numberCustomer Air 定义旅客相关信息定义飞机相关信息ID number,name,Pnumber,AddressAir number, Voyage, price5)处理过程5、概念结构设计概念结构设计的方法概念设计阶段采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。

对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。

概念结构设计的步骤第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。

因此我们们先逐一的设计分E-R图。

第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要将所有的分E-R 图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。

概念模型设计E—R图逻辑设计将ER图转换为关系模式顾客(用户名,密码,性别,年龄)。

航班(航班号,机型,航班公司,起飞城市,到达城市,起飞时间,到达时间,总票数,剩余票数)。

Customer(Username,psw,sex,age,ulevel)Flight(航班号,机型,航班公司,起飞城市,到达城市,起飞时间,到达时间,总票数,剩余票数)下划线标注的属性为主码。

以上关系模式均为BCNF。

物理设计一、为了提高在表中搜索元祖的速度,在实际实现的时候应该基于码机建立索引。

各表中简历索引的表项:(1)Customer(Username)(2)Flight(航班号)二、[用SQL实现设计]1、建立Customer表CREATE TABLE [dbo].[用户表]([username] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL,[psw] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[sex] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[age] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[ulevel] [char](10)COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT [PK_用户表] PRIMARY KEY CLUSTERED([username] ASC)WITH(PAD_INDEX =OFF, IGNORE_DUP_KEY =OFF)ON [PRIMARY])ON [PRIMARY]2、建立Airplane表CREATE TABLE [dbo].[Airplane]([航班号] [varchar](50)COLLATE Chinese_PRC_CI_AS NOT NULL,[机型] [varchar](10)COLLATE Chinese_PRC_CI_AS NULL,[航空公司] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[起飞城市] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[到达城市] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[起飞时间] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[到达时间] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[总票数] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,[剩余票数] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT [PK_Airplane] PRIMARY KEY CLUSTERED([航班号] ASC)WITH(PAD_INDEX =OFF, IGNORE_DUP_KEY =OFF)ON [PRIMARY])ON [PRIMARY]3、顾客操作(1) 注册 (register)INSERT INTO 用户表(Username,psw,sex,age,ulevel)VALUES(#Username,#psw,#sex,#age,#ulevel);(2) 注销 (unregister)DELETE CustomerWHERE(Username=#Username);本系统涉及到的存储过程:这是注册界面,代码如下:using System;using ;using ;using ;using ;using ;using partial class Default2 : protected void Page_Load(object sender, EventArgs e) {();}protected void Button2_Click(object sender, EventArgs e){("");}protected void Button1_Click(object sender, EventArgs e){string Add = "注册";string constr = ["sss"].ToString();SqlConnection conn = new SqlConnection();= constr;if !={();}SqlCommand cmd = new SqlCommand(Add, conn);= ; 注册](@username char(10),@psw char(10),@sex char(10),@age char(10),@ulevel char(10))asbegininsert into用户表(username,psw,sex,age,ulevel)values(@username,@psw,@sex,@age,@ulevel)endGOSET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGO这是登录界面登录时必须选对用户等级,不然会报错,登录界面代码如下:using System;using ;using ;using ;using ;using partial class_Default : protected void Page_Load(object sender, EventArgs e) {();}protected void Button2_Click(object sender, EventArgs e){("");}protected void Button1_Click(object sender, EventArgs e){string Add = "CheckUser";string constr = ["sss"].ToString();SqlConnection conn = new SqlConnection();= constr;if !={();}SqlCommand cmd = new SqlCommand(Add, conn);= ;SqlParameter Parameter1 = new SqlParameter("@username", , 10);SqlParameter Parameter2 = new SqlParameter("@psw", , 10);SqlParameter Parameter3 = new SqlParameter("@ulevel", , 10);= ;= ;= ;DataTable table = new DataTable();SqlDataAdapter adapter = new SqlDataAdapter(cmd);(table);SqlDataReader dr = (); CheckUser]@username char(10),@psw char(10),@ulevel char(10)ASBEGINselect*from用户表where username=@username and psw=@psw and ulevel=@ulevel END管理员进去之后可以查询航班表,用户表和管理航班,对信息进行添加修改这里是通过拉控件方式做的,如下图:通过拉FormView和SqlDataSource两个控件,用FormView绑定SqlDataSource,然后在SqlDataSource中配置数据源,然后新建连接如下图:选择存储过程点击完成即可,用户表则是GridView和SqlDataSource控件,方法类似就不再列举!管理员界面这里涉及到2个存储过程:dbo.查看航班表dbo.查看用户表航班表的程序:<asp:SqlDataSource ID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:AirplaneConnectionString %>"SelectCommand="查看航班表" SelectCommandType="StoredProcedure"></asp:SqlDataSource>用户表的程序:<asp:SqlDataSource ID="SqlDataSource2"runat="server"ConnectionString="<%$ ConnectionStrings:AirplaneConnectionString %>"SelectCommand="查看用户表" SelectCommandType="StoredProcedure"></asp:SqlDataSource>这是航班管理界面通过新建可以插入新的信息!管理航班的程序:<asp:SqlDataSource ID="SqlDataSource1"runat="server"ConflictDetection="CompareAllValues"ConnectionString="<%$ ConnectionStrings:AirplaneConnectionString %>"DeleteCommand="DELETE FROM [Airplane] WHERE [航班号] = @original_航班号 AND (([机型] = @original_机型) OR ([机型] IS NULL AND @original_机型 IS NULL)) AND (([航空公司] =@original_航空公司) OR ([航空公司] IS NULL AND @original_航空公司 IS NULL)) AND (([起飞城市] = @original_起飞城市) OR ([起飞城市] IS NULL AND @original_起飞城市 IS NULL)) AND (([到达城市] = @original_到达城市) OR ([到达城市] IS NULL AND @original_到达城市 IS NULL)) AND (([起飞时间] = @original_起飞时间) OR ([起飞时间] IS NULL AND @original_起飞时间 IS NULL)) AND (([到达时间] = @original_到达时间) OR ([到达时间] IS NULL AND @original_到达时间 IS NULL)) AND (([总票数] = @original_总票数) OR ([总票数] IS NULL AND @original_总票数 IS NULL)) AND (([剩余票数] =@original_剩余票数) OR ([剩余票数] IS NULL AND @original_剩余票数 IS NULL))"InsertCommand="INSERT INTO [Airplane] ([航班号], [机型], [航空公司], [起飞城市], [到达城市], [起飞时间], [到达时间], [总票数], [剩余票数]) VALUES (@航班号, @机型, @航空公司, @起飞城市, @到达城市, @起飞时间, @到达时间, @总票数, @剩余票数)"OldValuesParameterFormatString="original_{0}"SelectCommand="查看信息"UpdateCommand="UPDATE [Airplane] SET [机型] = @机型, [航空公司] = @航空公司, [起飞城市] = @起飞城市, [到达城市] = @到达城市, [起飞时间] = @起飞时间, [到达时间] = @到达时间, [总票数] = @总票数, [剩余票数] = @剩余票数 WHERE [航班号] = @original_航班号 AND (([机型] =@original_机型) OR ([机型] IS NULL AND @original_机型 IS NULL)) AND (([航空公司] = @original_航空公司) OR ([航空公司] IS NULL AND @original_航空公司 IS NULL)) AND (([起飞城市] = @original_起飞城市) OR ([起飞城市] IS NULL AND @original_起飞城市 IS NULL)) AND (([到达城市] = @original_到达城市) OR ([到达城市] IS NULL AND @original_到达城市 IS NULL)) AND (([起飞时间] = @original_起飞时间) OR ([起飞时间] IS NULL AND @original_起飞时间 IS NULL)) AND (([到达时间] = @original_到达时间) OR ([到达时间] IS NULL AND @original_到达时间 IS NULL)) AND (([总票数] = @original_总票数) OR ([总票数] IS NULL AND @original_总票数 IS NULL)) AND (([剩余票数] = @original_剩余票数) OR ([剩余票数] IS NULL AND @original_剩余票数 IS NULL))"SelectCommandType="StoredProcedure"><DeleteParameters><asp:Parameter Name="original_航班号"Type="String"/><asp:Parameter Name="original_机型"Type="String"/><asp:Parameter Name="original_航空公司"Type="String"/><asp:Parameter Name="original_起飞城市"Type="String"/><asp:Parameter Name="original_到达城市"Type="String"/><asp:Parameter Name="original_起飞时间"Type="String"/><asp:Parameter Name="original_到达时间"Type="String"/><asp:Parameter Name="original_总票数"Type="String"/><asp:Parameter Name="original_剩余票数"Type="String"/></DeleteParameters><UpdateParameters><asp:Parameter Name="机型"Type="String"/><asp:Parameter Name="航空公司"Type="String"/><asp:Parameter Name="起飞城市"Type="String"/><asp:Parameter Name="到达城市"Type="String"/><asp:Parameter Name="起飞时间"Type="String"/><asp:Parameter Name="到达时间"Type="String"/><asp:Parameter Name="总票数"Type="String"/><asp:Parameter Name="剩余票数"Type="String"/><asp:Parameter Name="original_航班号"Type="String"/><asp:Parameter Name="original_机型"Type="String"/><asp:Parameter Name="original_航空公司"Type="String"/><asp:Parameter Name="original_起飞城市"Type="String"/><asp:Parameter Name="original_到达城市"Type="String"/><asp:Parameter Name="original_起飞时间"Type="String"/><asp:Parameter Name="original_到达时间"Type="String"/><asp:Parameter Name="original_总票数"Type="String"/><asp:Parameter Name="original_剩余票数"Type="String"/></UpdateParameters><InsertParameters><asp:Parameter Name="航班号"Type="String"/><asp:Parameter Name="机型"Type="String"/><asp:Parameter Name="航空公司"Type="String"/><asp:Parameter Name="起飞城市"Type="String"/><asp:Parameter Name="到达城市"Type="String"/><asp:Parameter Name="起飞时间"Type="String"/><asp:Parameter Name="到达时间"Type="String"/><asp:Parameter Name="总票数"Type="String"/><asp:Parameter Name="剩余票数"Type="String"/></InsertParameters></asp:SqlDataSource>这里是系统自动生成的导入存储过程的代码有Update,Delete,Insert插入,删除,修改这些功能的代码这是用户登陆后的界面,,输入条件后会成功显示如下图:按机型查询的过程:<asp:SqlDataSource ID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:AirplaneConnectionString %>"SelectCommand="机型"SelectCommandType="StoredProcedure"><SelectParameters><asp:ControlParameter ControlID="TextBox1"Name="机型"PropertyName="Text"Type="String"/></SelectParameters></asp:SqlDataSource>按航班号查询的过程<asp:SqlDataSource ID="SqlDataSource2"runat="server"ConnectionString="<%$ ConnectionStrings:AirplaneConnectionString %>"SelectCommand="航班号"SelectCommandType="StoredProcedure"><SelectParameters><asp:ControlParameter ControlID="TextBox2"Name="航班号"PropertyName="Text"Type="String"/></SelectParameters></asp:SqlDataSource>按目的地查询的过程<asp:SqlDataSource ID="SqlDataSource3"runat="server"ConnectionString="<%$ ConnectionStrings:AirplaneConnectionString %>"SelectCommand="目的地"SelectCommandType="StoredProcedure"><SelectParameters><asp:ControlParameter ControlID="TextBox3"Name="到达城市"PropertyName="Text"Type="String"/></SelectParameters></asp:SqlDataSource>这3个过程涉及到3个存储过程:机型的存储过程:create proc [dbo].[机型](@机型char(10))asselect*from Airplane where(机型=@机型)return航班号的存储过程:create proc [dbo].[航班号](@航班号char(10))asselect*from Airplane where(航班号=@航班号)return目的地的存储过程:create proc [dbo].[目的地](@到达城市char(10))asselect*from Airplane where(到达城市=@到达城市)return六、编程过程中所遇难题:编程过程中遇到各种各样的问题,其中有3个大问题:1、导入数据库后连接不上数据库,查了1个小时的网,对远程连接做了修改并将regedit中star的键值修改为2才解决。

相关主题