博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
2 需求分析
软件需求分析是软件开发期的第一个阶段,也是关系到软件开发成败的关键步骤。需求分析阶段要解决的问题,是让用户和开发者共同明确将要开发的是一个什么样的系统。具体而言,需求分析主要有两个任务:第一是通过对问题及其环境的理解、分析和综合,建立分析模型(Analysis);第二是在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”(简称“需求说明”)来把用户的需求表达出来[3]。
首先浏览一下系统的整个流程,用户先登录到初始页面,如果是以业务经理角色登录则被引导至负责航空公司的设计策划模块,来确保业务在最优的情况下运转。主要功能有引入新航班页面、添加新的用户账号页面、分析航班业绩页面、启动常客计划页面;如果用户以网络管理员登录,则将被引导至数据库维护页面,主要负责管理用户账号、备份和存档数据库;当用户以业务线路管理角色登录时,会进入到航班机票的预订和取消工作的模块中,分别完成航班座位预订和取消、报告航班状态、确认预订,即在飞机起飞前的有效时间内确认乘客机票。经过之前的描述可见使用本系统的?分别分为三种使用人群,业务经理、网络管理员和业务线路管理员,根据人员的不同,系统也为之提供不同的工作职能,将使用该系统的用户很明显的区分开来,以使得系统的资源没有浪费,在不需知道其它更多内容的前提下,每个人都可在自己的职责内很好的完成任务,具体系统的流程图如图2-1所示:
根据系统流程分析,可以确定航空公司管理员的职责是非常明确的。航空公司入口使用这些管理员的角色作为确定功能的框架。因此,入口为业务经理、网络管理员和业务线路管理员分配了不同的任务集合[4]。
(1)创建和删除用户账号
- 1(去掉)业务经理确定什么时候需要创建新用户账号,并使用在线入口向网络管理员发送电子邮件消息。在电子邮件消息中规定用户名和角色。
2网络管理员使用在线入口创建新的用户账号。当创建新账号的时候,将向用户发送电子邮件消息。电子邮件消息规定了用户名、密码以及航空公司的保密政策(作为附件)。
3当用户第一次登录的时候,要求用户修改他的密码。

图2-1 系统流程图
(2)添加航班细节
在添加新用户账号后,用户可以访问航空公司入口。在添加用户账号后,下一个步骤就是添加航班细节。这样注册用户可以访问航空公司入口,并完成座位预订和取消操作。
为了添加新航班细节,业务经理要使用以下的信息:航班号、出发地和目的地、商务舱和行政舱的座位个数、费用、飞机型号。
(3)预订
在业务经理添加了航班细节之后,业务线路管理员就可以预订航班上的座位。乘客预订航班座位需要3个步骤:
1乘客提供航班号、舱别以及乘坐日期。业务线路管理员使用这些信息检索航
班,并将航班状态告诉乘客。
2如果乘客希望继续预订,则业务线路管理员输入用户的名称和电子邮件的地址,以预订座位。
3用户的电子邮件地址是可选的,而且用于检查客户是否满足针对频繁旅行者的折扣条件。如果客户满足了折扣措施的要求,则将从机票费用中减去折扣,并产生机票。
(4)取消
如果乘客希望取消预订的机票,则乘客要告诉业务线路管理员机票的号码。业务线路管理员取消机票,并将费用退还给乘客。根据航班的起飞时间,按照下面的方法就可以计算退还给客户的费用:
如果预订机票的确认状态指出用户并没有乘坐航班,而且航班已经起飞,则退
还80%的费用。
如果航班没有起飞,则从费用中扣除一定费用,并将剩余的金额退还给客户。
(5)状态查询
乘客可以查询机票的状态以及航班状态。要查询状态。乘客可以和业务线路管理员联系。
(6)确认机票
乘客需要在飞机起飞之前确认机票。这种惯例是为了确保决定不按照预订日期旅行的乘客的座位可以提供给等待队列的另一位乘客。为确认几票,乘客可以使用机票号码向业务线路管理员确认机票。
(7)创建报表
业务经理可以创建报表,以查看航班的业绩。
1客户吸引力报表。客户吸引力报表包含乘坐航班次数最多的客户名单或者支付费用最多的客户名单。
2总收入报表。此报表用于得到自给定的月份和年份以来航空公司所产生的总收入。
(8)启动常客计划
业务经理负责启动常客计划,它用于为经常乘坐航空公司航班的客户将会在机票费用方面得到一定的折扣。如果乘客规定了下面指定的任何一个参数,则将给予客户折扣:
1乘坐航班的频率。经常乘坐航空公司航班的客户将会在机票费用方面得到一定折扣。业务经理确定乘坐的频率以及折扣的百分比。
2付出的总费用。支付金额超过一定数量的客户也会得到给定的折扣。在这种情况下,由业务经理确定支付金额的底限以及折扣。
当用户在航空公司订购机票的时候,用户就可以看到他们所得到的折扣。
(1)业务经理的功能需求分析
业务经理负责设计策划,并确保业务在最优的情况下运转。在此系统的例子中,业务经理的职责如下:
1引入新的航班。业务经理负责在分析市场机会和业务趋势之后引入新航班。
2添加新的用户账号。业务经理请求为需要访问航空公司所部署的定制应用程序的用户分配新用户账号。当请求新用户账号的时候,要指定用户的角色。当新员工加入公司的时候,业务经理分析航班的业绩,业务经理要向网络管理员请求包含新的用户账号[6]。
(2)分析航班业绩
启动常客计划。如果乘客乘坐航班的次数超过了预订义的次数,或者支付的金额超过了预订的数量,则常客计划将为乘客指定折扣。
业务经理的用例图如图2-2所示:
(3)网络管理员的功能需求分析
网络管理员负责确保公司总部和区域办公机构之间的连接连续不中断。应注意,网络管理员可以熟练使用数据库管理工具,他们的职责如下:
1管理用户账号。网络管理员为执行与航班相关交易的用户创建用户账号。他们也要确保关闭从公司辞职的用户的账号。
2备份和存档数据库。网络管理员每天需要备份数据库,并且确保定期存档与已经起飞的航班相关的数据。

图2-2 业务经理用例图
(4)业务线路管理员的需求分析
业务线路管理员负责航班机票预订和取消工作。这些人员的职责如下:
1航班座位预订。业务线路管理员为乘客在航班上预订座位。在预订座位的同时,还要用机票通知乘客有关的状态和费用。
2取消座位预订。乘客可以联系业务线路管理员,以取消他们预订的机票。当取消机票的时候,将把应该返还的费用返还给乘客。
3报告航班状态。业务线路管理员根据需要向乘客报告航班上是否有空闲座位以及等级。
4确认预订。业务线路管理员在航班起飞前72-24小时确认乘客的机票。
网络管理员用例图如图2-3所示:

图2-3 业务线路管理员用例图
首先,数据库模式就是对数据的抽象,将其设计为表是最为广泛的。在本系统中设立8张表结构。包括dtFltDetails(航班路线细节)表、dtUser(用户)表、dtReservations(航班预订)表、dtCancellations(取消预订)表、dtFltStatus(航班状态)表、dtPassengerDetails(乘客信息)表、dtfFrequentFilers(常客计划)表、dtDepartedFlights表,这8张表分别是对航班信息和机票预订所应用到的具体实际关系的描述,为更好的实现仓库的管理提供了可能,下面就会详细分析这些表之间的关系。其次,该系统对于表之间的关系也有了明确的定义,对于表中的字段定义了主键,这样实现了实体完整性,在下一节中将做详细介绍。
顾名思义,可行性研究(Feasibility Study)是为了弄清所定义的项目是不是可能实现和值得进行。研究的过程,实际上是一次大大简化了的系统分析和系统设计的过程。对研究中可能出现的任何一种解决方案,都要从以下四个方面来研究起(去掉)可行性[7]。
(1)经济可行性
本系统开发设计成本较低,使用方便灵活。加上目前国内各个航空公司业务量的逐渐扩展,这样的系统可帮助在不同区域的办公机构高效的处理事物,前景广泛,在较少投入的前提下,其带来的经济效益是十分可观的,因此在经济方面可行。
(2)技术可行性
本系统采用SQL Server 2000进行后台数据库的管理、操作和维护,用VB进行前台界面设计、与后台数据库进行连接,完成数据的添加、删除、查询、制作报表等功能。由于SQL Server2000以及VB拥有着强大的数据库开发功能、并且有方便的数据库设计功能,还有强大的控件来充实页面的效果,使用灵活、界面友好、开发周期短,信息管理系统是数据库管理系统中必不可少的组成部分,它对于票务的无差错、高效率存储提供了巨大的支持,因此证明在技术方面可行。
(3)运行可行性
本系统有良好的用户界面,操作简单,有一定处理机制,不同的角色有不同的权限,这也保证了安全性,因此具有可行性。
(4)法律可行性
随着网络给人们来的诸多方便,票务在 生活中的应用已被大家所认同,同时也提供了许多的方便,因此具有法律可行性。
本章主要介绍了系统的需求分析过程,详细的阐述了系统具有的功能,并作了详细的说明,将整个系统划分成角色管理,采用面向对象的分析方法,这样对于读者的理解也更加简化了。就实际情况而言,在高系统配置、高网络带宽很容易得到保证的情况下,最需要考虑的是系统的性能需求。这样详细的需求分析可以是系统的性能需求的到完全保证,相互消息的传递顺利,协议分析正确,界面友好,运行时间满足使用需要。需求分析是软件开发的重要阶段,为以后的详细设计打下坚实的基础。
本系统采用的数据库访问控件是ADO(ActiveX Data Objects ),ADO实际是一种提供访问各种数据类型的连接机制。ADO(ActiveX Data Objects)是微软公司最新的数据访问技术,它被设计用来同新的数据访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data Access)。ADO提供了一个熟悉的、高层的对OLE DB的Automation封装接口。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口,可以使用任何一种数据源。ADO是基于OLE DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法[8]。
ADO提供了三种与数据库进行连接的方法,它们分别是:使用数据源通过ODBC接口与数据库进行链接;使用连接字符串直接连接数据库;使用文件进行链接。这里我采取了字符串方式同数据库进行连接。下面我主要介绍一下ADO中的数据集对象— Recordset 对象:
Recordset 对象表示的是来自基本表或命令执行结果的记录全集。任何时候,Recordset 对象所指的当前记录均为集合内的单个记录。可使用 Recordset 对象操作来自提供者的数据。使用 ADO 时,通过 Recordset 对象可对几乎所有数据进行操作。所有 Recordset 对象均使用记录(行)和字段(列)进行构造。由于提供者所支持的功能不同,某些 Recordset 方法或属性有可能无效。
可以创建所需数量的 Recordset 对象。打开 Recordset 时,当前记录位于第一个记录(如果有),并且 BOF 和 EOF 属性被设置为 False。如果没有记录,BOF 和 EOF 属性设置是 True。使用MoveFirst、MoveLast、MoveNext和MovePrevious方法以及Move方法,和AbsolutePosition、AbsolutePage、Filter属性可以重新确定当前记录的位置。仅向前Recordset对象只支持MoveNext方法。当使用Move方法访问每个记录(或枚举Recordset)时,可以使用BOF属性查看是否移动已经超过了Recordset的开始或结尾。
Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用 Update 方法,对数据的所有更改将被立即写入现行数据源。也可以将值的数组作为参数传递来使用 AddNew 和 Update 方法,同时更新记录的若干字段。
如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用 UpdateBatch 方法在单个调用中将它们传送给数据库。这种情况应用于使用 AddNew、Update 和 Delete 方法所做的更改。调用 UpdateBatch 方法后,可以使用 Status 属性检查任何数据冲突并加以解决。

根据前一章的分析,将数据库设计为8张表,包括dtFltDetails(航班路线细节)表、
dtUser(用户)表、dtReservations(航班预订)表、dtCancellations(取消预订)表、dtFltStatus(航班状态)表、dtPassengerDetails(乘客信息)表、dtfFrequentFilers(常客计划)表、dtDepartedFlights(已起飞航班)表。
(1)dtUsers表
此表用于存储授权用户的细节,这是这个系统中较为重要的,它将引导登录人员的管理方向。如表3-1所示:
表3-1 dtUser(用户)表结构
字段 | 数据类型 | 长度 | 可否为空 |
Username(用户名) | char | 15 | NOT NULL |
Password(密码) | char | 15 | NOT NULL |
Role(角色) | char | 10 | NOT NULL |
PasswordChanged(密码修改) | bit | 1 | NULL |
(2)dtFltDetails表
dtFltDetails表存储了航空公司的航班线路细节,如表3-2所示:
在dtFltDetails表结构中,添加了LaunchData字段,用于存储开辟航班的日期。在向dtFltDetails表添加航班细节之后,业务线路管理员可以预订航班座位,因此,下面介绍用于存储座位预订细节的表dtReservations。
(3)dtReservations表和dtDepartedFlights表
dtReservations表是使用最频繁的数据库表。这个表用于存储已经预订航班座位的乘客细节。
如果航空公司有许多航班,则dtReservations表中会有大量的数据。然而,只需为常客计划存储与那些已经起飞的航班相关的乘客细节。因此,在理想情况下,网络管理员应该将与已经起飞的航班相关数据转移到另一个表(dtDepartedFlights)中,这个表将用于常客计划。这种类型的机制有下列优点:
表3-2 dtFltDetails(航班路线细节)表结构
列名称 | 数据类型 | 长度 | 可否为空 |
FltNo(航班编号) | char | 10 | NOT NULL |
Origin(出发地) | text | 16 | NOT NULL |
Destination(目的地) | text | 16 | NOT NULL |
Deptime(起飞时间) | datatime | 8 | NOT NULL |
Arritime(到达时间) | datatime | 8 | NOT NULL |
AircraftType(飞机型号) | char | 10 | NOT NULL |
SeatsExec(行政舱座位数) | int | 4 | NOT NULL |
SeatsBn(商务舱座位数) | int | 4 | NOT NULL |
FareExec(行政舱费用) | int | 4 | NOT NULL |
FareBn(商务舱费用) | int | 4 | NOT NULL |
LaunchData(开辟时间) | datatime | 8 | NOT NULL |
1(去掉)更容易存档数据库表。可以存档的数据将自动转移到另一个表中。因此,网络管理员可以轻松地存档数据库表。
2提高性能。如果使用不同的数据库存储已经起飞的航班相关的数据,则可以在另一个数据库上进行查询,以分析数据,这样就减少了dtReservations表的过多事务,从而提高了这个表的性能。
3更加容易地访问数据。为了产生报表,业务经理不需要访问dtReservations表中的动态数据。相反,他们可以使用其他表来仅仅检索和分析相关的数据。
为实现前面所解释的逻辑,需创建和dtReservations表一样的dtDepartedFlights表。
(4)dtCancellations表
dtCancellations表存储了与已经取消的机票相关的信息。这个信息仅仅用于计算应该返还的费用和座位预订。因此,如果已经取消了乘客的机票,而乘客通知航空公司不应该取消机票,则应该确定处理取消工作的人员,而且确定取消的原因。
(5)dtFltStatus表
当乘客预订航班座位时,应该将可以预订的座位数目减去1。随着每次预订座位和取消预订,将更新这个表。如表3-3所示:
表3-3 dtReservations(航班预订)表结构
字段 | 数据类型 | 长度 | 可否为空 |
TicketNo(机票号码) | char | 10 | NOT NULL |
FltNo(航班编号) | char | 10 | NOT NULL |
DataOfJourney(起飞日期) | datatime | 8 | NOT NULL |
ClassOfRes(预订座位类别) | char | 4 | NOT NULL |
Name(姓名) | char | 20 | NOT NULL |
Email(电子邮件) | char | 50 | NULL |
Fare(费用) | int | 4 | NOT NULL |
Status(状态) | int | 4 | NOT NULL |
ReservedBy(预订人) | char | 15 | NOT NULL |
DataOfRes(预订日期) | datatime | 8 | NOT NULL |
TicketConfirmed(机票确认) | bit | 1 | NULL |
(6)dtCancellations表
当乘客取消预订航班座位时,随着每次取消预订,将更新这个表。如表3-4所示:
表3-4 dtCancellations(取消预订)表结构
字段 | 数据类型 | 长度 | 可否为空 |
TicketNo(机票号码) | char | 10 | NOT NULL |
Refund(返还现金) | int | 4 | NOT NULL |
ProcessedBy(处理人) | char | 15 | NOT NULL |
CancellationData(取消日期) | datatime | 8 | NOT NULL |
(7)dtFltStatus表
显示航班的状态信息如图3-5所示:
表3-5 dtFltStatus(航班状态)表结构
字段 | 数据类型 | 长度 | 可否为空 |
FltNo(航班编号) | char | 10 | NOT NULL |
StatusData(状态日期) | datatime | 8 | NOT NULL |
StatlusClass(状态舱别) | char | 10 | NOT NULL |
Status(状态) | int | 4 | NOT NULL |
在表结构中,FltNo、 StatusData和 StatusClass字段构成了复合关键字。这暗示着这三个字段一起构成了惟一的组合,可以检索特定日期某个航班特定舱的状态。
(8)dtPassengerDetails表
为了启动常客计划,dtPassengerDetails表从dtDepartedFlights表中检索数据。dtPassengerDetails表使用乘客电子邮件地址确认乘客乘坐航班的次数以及乘客为此付出的费用。如表3-6所示:
表3-6 dtPassengerDetails(乘客信息)表结构
字段 | 数据类型 | 长度 | 可否为空 |
Email(电子邮件) | char | 50 | NOT NULL |
FareCollected(总金额) | int | 4 | NOT NULL |
TotalTimesFlown(总飞行次数) | int | 4 | NOT NULL |
无论何时启动新的常客计划,将使用dtPassengerDetails表的数据来确定计划将影响多少乘客。这个数据将用于计算乘客的折扣。
(9)dtFrequentFliers表
dtFrequentFliers表用于规定客户折扣(用百分比表示)。和dtPassengerDetails表中一样,通过乘客电子邮件地址就可以确认乘客。 如表3-7所示:
表3-7 dtfFrequentFilers(常客计划)表结构
字段 | 数据类型 | 长度 | 可否为空 |
Email(电子邮件) | char | 50 | NOT NULL |
Discount(折扣) | int | 4 | NOT NULL |
当乘客预订机票的时候,将在dtFrequentFliers表中查找乘客的电子邮件地址,以确定乘客是否应当享受折扣优惠。如果乘客应该享受优惠,则在减去折扣之后计算费用。
各个表之间的关系如表3-8所示:
存储过程是存储在服务器上的一组预编译的Transact-SQL语句。存储过程是一种封装重复任务操作的一种方法,支持用户提供的变量,具有强大的编程功能。存储过程的优点如下[5]:
1与其他应用程序共享应用程序的逻辑,以确保一直的数据访问和操纵。
2提供一定的安全机制。
表3-8 数据库内关系
关系表 | 关系 | 备注 |
dtUsers-dtReservations | 1对多 | 一个业务线路工作人员可以执行一次或者多次座位预订操作 |
dtUsers-dtCancellations | 1对多 | 一个业务线路工作人员可以执行一次或者多次座位取消操作 |
dtFltDetails-dtReservations | 1对多 | 在dtReservations表中可以多次预订航班机票 |
dtFltDetails-dtFltStatus | 1对多 | dtFltStatus表中可以存在dtFltDetails表中航班的多个入口 |
dtPassengerDetails- dtDepartedFlights | 1对多 | dtPassengerDetails表内的乘客可以乘坐dtDepartedFlights表内的多个航班 |
dtPassengerDetails- dtFrequentFliers | 1对1 | dtPassengerDetails表内必须存在dtFrequentFliers表内的乘客入口 |
(3) 由于存储过程在第一次执行之后,其执行规划就贮存在过程高速缓冲存储器中,可提高系统性能。
(4) 减少网络交通。这是使用存储过程的主要原因。
本章对于系统的功能做了更加详细的分析及说明,为下一个阶段的详细设计打下了坚实的基础。在概要设计中主要对库表的设计及各个表的结构和功能作了详细地阐述,另外对于本系统所需用到的存储过程也作了详细的描述,这样就便于在详细设计中理解。概要设计在软件工程设计中起着承上启下的作用,是系统分析过程中所不可缺少的一部分。
详细设计就是要在概要设计的基础上考虑怎样实现这个软件系统,这是软件设计的具体实施阶段,是软件开发时期的第三个阶段,也是软件实际设计的第二步。需求分析和概要设计已经确定了软件设计的总体结构,各个模块的功能及其关系。下面将使用系统设计工具来实现所需功能。详细设计的工作,是要在上述结果的基础上,实现这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。
详细设计阶段的根本目标的是确定应该怎样具体地实现所要设计的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接编译成用某种程序设计语言书写的程序。
详细设计的任务是编写软件的详细说明书。为此,设计人员应为每个模块确定采用的算法;确定每一模块使用的数据结构;确定模块接口的细节。
前台的界面设计影响到整个管理平台的使用,界面设计主要考虑以下几个方面:
(1)界面的整体风格和创意设计
(2)主页面的设计
(3)版面布局
(4)字体的设置
本人将航班信息和机票预订管理平台定位在简约的风格上,考虑到版面布局,浏览方式,交互性,文字,语气,内容价值,存在意义,站点荣誉等等诸多因素。因为是一个主要面对航空公司工作人员的管理平台,这就需要界面风格朴素大方以符合其工作特质。
(5)首页的设计
针对本管理平台的首页设计,主要突出严肃、严谨的工作状态,所以不需要设计成其他管理系统的风趣的风格,登录首页后,工作人员直接就可根据自己的角色登录各自的管理界面。
(1)登录窗体
此窗体是在用户访问网站的时候所显示的第一个窗体,如图4-1所示。
图4-1 登录界面
当用户访问应用程序的时候,他们需要在窗体中规定用户名和密码而登录。随后,将根据用户的角色,将用户重定向到应用程序的其他窗体。
要实现用户的登录,需使用dtUsers表来判断用户角色,从而引导到其他功能不同的窗体。具体实现方法如下:
首先将adodc工具栏中拖动到窗体设计器中,自动生成数据集,adodc控件的属性规定了查询语句,设计者可根据需要自行修改其属性(此后的窗体设计都用此方法)。
这里将其属性修改为:(@符号为程序中所用到的变量)
SELECT Username, Password, Role, PasswordChanged
FROM dtUsers
WHERE (Username = @UserName)
检查用户所提供用户名和密码,根据角色重定向角色的主页,如图4-2登录管理平台流程图所示:
(2)注销窗体
将返回登录框重新登录。
网络管理员主要负责确保公司总部和区域办公之间的连接连续不中断,这就需要网络管理员可以熟练使用数据库管理工具,具体工作涉及到管理用户帐号和数据库的及时更新。
图 4-2 登录管理平台流程图
此窗体用于添加和删除用户帐号,在dtUsers数据库中将更新添加或者删除的用户细节,如图4-3所示:
首先将修改adodc的属性,修改此属性的目的在于实现用户的删除工作。实现添加用户的功能。
图4-3 管理用户窗体
此窗体用于完成以下两项任务:
(1)为已经起飞的航班更新航班细节。需要从dtReservations表中将已经起飞的航班信息移动到dtDepartedFlights表中。网络管理员可以单击窗体上的按钮完成工作。
(2)为常客计划更新客户。需要执行更新常客计划功能,从dtDepartedFlights 表中提取与常客计划相关的信息,并在dtPassengerDetails表中更新数据,也就是通过运用FrequentFlier存储过程实现的。
为了实现为已经起飞的航班更新航班细节,需在dtReservations和dtDepartedFlights表之间移动数据,需要运用存储过程UpdateReservations。窗体如图4-4所示:
图4-4管理数据窗体
业务线路经理使用添加航班、申请用户ID、报表、常客计划窗体完成业务工作。
此窗体用于为航空公司添加新航班,如图4-5:
图4-5 添加航班
为了添加新航班细节,业务经理要使用以下的信息:航班号、出发地和目的地、商务舱和行政舱的座位个数、费用、飞机型号。业务经理在窗体中所指定的信息将存储在dtFltdetails表中,默认情况下在航班编号前加前缀SS来标志航空公司的航班编号。用于添加航班细节的每个文本框均不允许为空,对时间的输入要符合格式,同时分别对座位数和费用作了范围的约束。
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者