1、程序课程设计报告程序课程设计报告学 院: 专 业: 电子信息工程班 级: 学 号:姓 名: 指导教师: 时 间: 一、 课程名称名称:航班管理系统二、 系统简介 航班查询的业务流程:当顾客到达营业网点后向航空公司营业员提供出发地,目的地和出发日期,营业员根据以上信息,操作软件查询满足条件的航班。购票的业务流程:在查询出航班信息的基础上,根据顾客的要求选择某个航班,输入乘客信息,以及舱位信息,然后等待顾客确认,并收取票款,然后执行出票操作。 退票的业务流程:根据顾客提供的机票号(和)证件号码,查询出该机票的信息,然后根据该机票的退改签规定收取一定手续费,将剩余票款退还给顾客,并将机票收回(如果有
2、纸质机票的话)。该系统要求能进行航班管理,航班管理员能添加和删除航班计划,还能临时修改航班计划,对航班计划的修改包括临时添加航班。除此之外,航班管理员还能随时更新每天的航班季节折扣。该系统要求能进行用户账户的管理,系统管理员可以添加新帐户,删除或屏蔽现有账户,或设置某个账户的密码清空。该系统要求能进行用户权限的管理,系统管理员能为每一个用户帐号赋予权限或删除权限。所有可能的权限类型预先定义,在程序运行中不能加入新的权限类型。功能概述:系统功能模块分为以下几部分:前台营业,后台管理,后台服务。前台营业1.用户登录/登出 1.1登录 1.2修改账户密码2.售票 2.1 查询航班 2.2 购票3.
3、退票 3.1 退票4. 查询航班 4.1 查询航班5. 浏览航班 5.1浏览航班6. 浏览乘客 6.1 按航班浏览 6.2 按日期浏览 6.3 按航班日期浏览 6.4 全部浏览后台管理:7.航班计划管理 7.1 查询航班计划 7.2 添加航班计划 7.3 删除航班计划 7.4 修改航班计划(起飞时间,到达时间,基准票价) 7.4 浏览航班计划8. 账户管理 8.1 添加用户账户 8.2 删除用户账户 8.3 修改用户信息 8.4 查询用户信息 8.5 浏览用户信息后台服务:9.航班表和航班记录表的维护 9.1 处理过期航班数据 9.2 处理过期航班计划数据数据字典:可用座位公里:飞行公里乘以可
4、出售座位数量。收费客公里:飞行公里乘以收费旅客数量。客座率:以收费客公里除以可用座位公里所得的百分比。航线(Airline):描述两个机场间有直达航班的线路,航线包含的数据有:出发地机场,目的地机场,里程。航班计划(Flight Scheduler):用来描述TOLO航空公司执行的某个定期航班的计划表。例如:由TOLO航空公司执行的每天早上8:00从北京起飞,上午10:00到达上海的TL1202就是一个航班计划。根据中国民航相关管理部门的规定,TOLO航空公司可以在每一季度前一个月提交下一季度的航班计划申请,由民航管理部门核准后执行。在一个季度的执行过程中,TOLO航空公司不得随意改变航班计划
5、。如有特殊情况需临时改变航班计划,可由TOLO航空公司提出申请,由民航管理部门审核通过后执行更改。航班计划包含的信息:航班号,起始日期,结束日期,执行航线,离港时间,到港时间,飞机机型,班期,基准票价。航班(Flight):用来描述在某个确定日期执行某个定期航班计划的一次航班。例如:2009年12月25日从北京飞上海的TL1202就是一个航班的实例。航班包含的信息:执行的航班计划,出发日期,各舱剩余座位数,季节折扣。航班计划的起始日期(Start Date):用来描述某个航班计划开始的日期,该日期精确到天。航班计划的结束日期(End Date):用来描述某个航班计划结束的日期,该日期精确到天。
6、营业员(Sales):用来描述在营业网点操作营业柜员系统的操作人员,每个营业员必须凭帐号和密码登录系统后才能为顾客提供服务。营业员包含的信息:营业员编号,营业员帐号,密码,所属营业网点编号。航班号(Flight Number):由航空公司给航班计划定义的唯一标识号码,该号码由2位英文字符和3_5位数字组成,2位英文字符是航空公司编码,3_5位数字是航班编码, TOLO航空公司的编码为:TL。例如:TL1202就是一个航班计划的航班号,其中TL代表TOLO航空公司,1202代表航班的编号。出发地(From City):用来描述某个航班计划的起飞城市和机场,所有国内机场均用三个英文字母的代码表示,
7、详情请见附录I(国内机场代码表)。目的地(To City):用来描述某个航班计划的到达城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。离港时间:(Departure):用来描述某个航班计划的从出发地机场离开的时刻,离港时间一般代表飞机舱门关闭,不再接收乘客的时刻。该时间精确到分钟。到港时间:(Arrival):用来描述某个航班计划到达目的地机场的时间,到港时间一般代表飞机舱门开启,允许乘客下飞机的时刻,该时间精确到分钟。出发日期(Date):用来描述某个航班的出发日期,该日期精确到某一天。班期(Scheduler):用来描述某个航班计划在一周之内哪些天有航
8、班,哪些天没有航班。舱位等级:(Cabin Class):用来描述航班的不同舱位,一般分为三种:头等舱(F),公物舱(C),经济舱(Y)。不同的舱位等级具有不同的机票折扣,详情请参见舱位折扣和机票价格。*实际情况中航空公司定义的舱位等级可能更复杂,在本项目中为简化业务模型,只对舱位等级作上述三种划分。乘客类型:(Passenger type):用来描述乘坐航班的乘客的类型,一般分为三种:成人(A)(age12),儿童(C)(2age=12),婴儿(I)(0=age=2)。不同的乘客类型具有不同的机票折扣,详情请见乘客折扣。在这三种乘客类型中,成人和儿童占用座位,而婴儿不占用座位,婴儿票不能单独
9、出售,一张婴儿票必须凭一张成人票售出。飞机机型:(Airplane Model):用来描述执行某个航班计划的飞机的型号,一般来讲,一个航班计划的各次航班都应该采用同种机型的飞机来执行。不同的飞机型号有不同的航程及各舱座位数。详情请参见附录II民航飞机型号一览表。*实际情况中,各种机型的座位数是不一样的,同一机型还分好几个系列,如B737(波音737)有B737_200、B737_300.B737_900等多个系列,每个系列座位数都不一样。即使是同一型号、同一系列的机型,所属的航空公司不同,座位数也会不同,因为航空公司在购买飞机时,会根据自己的需要要求厂家采用不同的布局,不同的布局会有不同的头等
10、舱、公务舱、经济舱座位数。在本项目中为简化业务模型,我们认为同种型号的飞机各舱座位数是固定的。基准票价:(Full Price):是指某个航班在没有季节折扣时的一张经济舱成人票的价格,该价格作为该航班计划的基准价格,最终机票价格应该在此基础上乘以季节折扣,舱位折扣和乘客类型折扣。基准票价=航班里程*0.75,对个位四舍五入,保留整十位,该票价是可修改的。季节折扣:(Season Discount):航空公司根据不同季节的客流状况调整的航班的折扣,只有经济舱的成人票才享受季节折扣。舱位折扣:(Class Discount):不同舱位在基准价格基础上的价格系数,头等舱为1.5,公务舱为1.3,经济
11、舱为1.0乘客类型折扣:(Passenger Discount):不同乘客类型在基准票价基础上的价格系数,成人为1.0,儿童为0.5,婴儿为0.1。机票(Ticket):一位乘客乘坐某次航班的确定的出票记录机票价格:(Ticket Price):一张机票的价格,机票价格由以下公式计算:经济舱成人票票价=基准价格*季节折扣其他舱位乘客票价=基准价格*舱位折扣*乘客类型折扣燃油税:国家统一征收的,由乘坐民航飞机的乘客负担的一种税收,计算办法:800KM以内(含)的航程,每人税费为60元,800KM以上的航程每人税费为100元,儿童票减半收取,婴儿票免收燃油税。燃油税的征收不区分乘客舱位。该项税费捆
12、绑在机票上由航空公司代收代缴。燃油税的收取额度和征收办法取决于国家相关部门的政策,该政策可能随时调整。【参考文档2】机场建设费:国家统一收取的,由乘坐民航飞机的乘客负担的一种收费项目,用于支援民航机场的建设。收取办法:乘坐70座以下(含)的小飞机,每人每次收取10元;乘坐70座以上的大飞机,每人每次收取50元。儿童和婴儿都不收取机场建设费。机场建设费的征收不区分乘客舱位。该项收费捆绑在机票上由航空公司代收代缴。机场建设费的收取额度和征收办法取决于国家相关部门的政策,该政策可能随时调整。【参考文档2】机票应收款:一张机票的应收款=机票价格+燃油税+机场建设费。三、 系统用例1、用例描述概述:用例
13、编号:Case_01用例名称:登录活动者:用户用例编号:Case_02用例名称:退出登录状态活动者:用户用例编号:Case_03用例名称:更改密码活动者:用户用例编号:Case_04用例名称:查询航班活动者:营业员用例编号:Case_05用例名称:购票活动者:营业员用例编号:Case_06用例名称:退票活动者:营业员用例编号:Case_07用例名称:添加航班计划活动者:航班管理员用例编号:Case_08用例名称:删除航班计划活动者:航班管理员用例编号:Case_09用例名称:更改航班计划活动者:航班管理员用例编号:Case_10用例名称:查询航班计划活动者:航班管理员用例编号:Case_11用
14、例名称:添加用户活动者:系统管理员用例编号:Case_12用例名称:删除用户活动者:系统管理员用例编号:Case_13用例名称:查询用户活动者:系统管理员用例编号:Case_14用例名称:修改用户活动者:系统管理员用例编号:Case_15用例名称:浏览用户活动者:系统管理员详细描述:用例编号Case_01用例名称登录活动者用户前置条件启动应用程序事件流1、输入工号2、输入密码3、选择“登录”选项4、成功登入相应的主界面异常事件流1、若在第3步,输入的帐号密码不正确,则弹出错误提示2、重新输入后置事件用例编号Case_02用例名称退出登录状态活动者用户前置条件在登录完成的基础上事件流1、保存更新
15、的数据2、成功退出异常事件流后置条件用例编号Case_03用例名称更改密码活动者用户前置条件在成功登录成功后,选择“密码修改”选项,并成功进入密码修改界面事件流1、选择修改密码选项2、出现一个修改密码的界面3、输入旧密码4、输入新密码5、再次输入新密码6、选择“确定”选项7、修改密码成功异常事件流1、提示出错信息后置事件用例编号Case_04用例名称查询航班活动者营业员前置条件在成功登录到主界面后,选择“查询航班”选项,成功进入航班查询界面事件流1、根据顾客提供的信息,选择出发地与目的地和出发时间2、告诉乘客具体信息异常事件流1、不存在输入的出发地和目的地之间的航线,弹出无直达信息后置事件用例
16、编号Case_05用例名称售票活动者营业员前置条件成功进入主界面后,选择“售票”选项,成功进入售票界面事件流1、根据顾客要求选择的某个航班后2、如果存在所需航班,选择对应的航班,否则返回主界面3、成功显示填入乘客信息文本4、根据乘客提供的有效证件,输入乘客信息(姓名,证件号码),选择舱位信息和乘客类型异常事件流后置事件用例编号Case_06用例名称退票活动者营业员前置条件成功登录主界面后,选择“退票”选项事件流1、根据乘客提供的有效证件,输入机票编号或者输入乘客的证件号码或者乘客2、成功显示查询结果3、选择“退票”选项4、成功退票异常事件流1、提示相应的出错信息后置事件用例编号Case_07用
17、例名称添加航班计划活动者航班管理员前置条件登录完成后,进入航班管理界面事件流1、选择添加航班计划选项;2、进入添加航班计划界面表;3、输入航班号;4、输入出发地;5、输入目的地;6、输入航班班期;7、输入起飞时间;8、输入到达时间;9、输入航班里程;10、输入航班各舱载客最大容量;11、成功添加航班计划;异常事件流1、显示相应的出错信息 后置条件用例编号Case_08用例名称删除航班计划活动者航班管理员前置条件进入航班管理界面,选择删除航班计划选项事件流1、输入航班号;2、输入出发地;3、输入目的地;4、选择确认选项;5、成功删除航班计划;异常事件流1、在第3步后,如果航班号错误,则显示“不存
18、在的航班,请重新输入”; 后置条件用例编号Case_09用例名称更改航班计划活动者航班管理员前置条件进入航班管理界面事件流1、选择修改航班计划选项;2、进入修改航班计划界面;3、选择相应的修改选项(如:航班日历,起飞时间,到达时间等);4、选择确定选项5、成功修改航班计划 异常事件流显示相应的出错信息后置条件用例编号Case_10用例名称查询航班计划活动者航班管理员前置条件进入航班管理界面事件流1、输入航班号;2、输入出发地;3、输入目的地;4、输出信息;异常事件流1、在第3步后,如果航班号错误,则显示“不存在的航班,请重新输入”;后置条件用例编号:Case_11用例名称:添加用户活动者:系统
19、管理员前置条件成功进入用户管理界面事件流1、填写帐户信息(帐号,密码等);2、成功创建帐户。异常事件流1、显示相应的出错信息 后置条件用例编号:Case_12用例名称:删除用户活动者:系统管理员前置条件成功进入系统管理员主界面。事件流1、输入要删除的用户ID;2、成功显示查询的结果;3、选择确认选项;4、成功删除所选帐户。异常事件流1、显示相应的出错信息 后置条件用例编号:Case_13用例名称:查询用户活动者:系统管理员前置条件成功进入系统管理员主界面事件流1、选择查询用户选项;2、成功进入查询用户界面;3、填写创建信息;(用户ID,用户名称,权限编号)4、成功创建一个用户。异常事件流显示相
20、应的出错信息后置条件得到创建许可。用例编号:Case_14用例名称:修改用户活动者:系统管理员前置条件成功进入系统管理员主界面事件流1、选择修改用户选项;2、成功进入修改用户界面;3、选择相应的修改选项(用户ID,用户名称,权限编号);4、成功修改相应选项。异常事件流显示相应的出错信息后置条件得到修改许可。用例编号:Case_15用例名称:浏览用户活动者:系统管理员前置条件成功进入系统管理员主界面事件流1、选择浏览用户选项;2、成功进入浏览用户界面;异常事件流显示相应的出错信息后置条件四、主要的数据结构设计1、航班计划表:flight字段名字段描述字段类型(长度 )是否为空范例样本flight
21、num航班号Char(8)TL2010startdate起始日期IntNot null20100401enddate结束日期IntNot null20100630departure离港时间Char(6)Not null08:00arrival到港时间Char(6)Not null09:00num余座IntNot nullsche班期Int Not null0110110max各舱容量Int(3)Not nullpsger乘客头指针passenger(367)mileage航班里程IntNot null4002、用户表:user字段名字段描述字段类型是否为空范例Worknum工号Int2name
22、姓名Char(10)NOT NULL“张三”password用户密码varChar(12)NOT NULL“zhangx”level角色IntNOT NULL1usernum用户总数IntNOT NULL123、乘客:passenger字段名字段描述数据类型是否为空范例idcard证件号Char(20)Not null344523452345fnum航班编号Char(8)Not nullTL2010name乘客姓名Char(10)Not nullChendate航班日期timestampNot null20100822cabin舱位等级Char(1)Not nullFseatnum座位号 In
23、tNot nullAprice最终票价Double4000.00四、 总结首先,我在本次课程设计开发过程中,充分理解了拥有吃苦耐劳的品质对我们是多么的重要,不管做任何事,它的地位是不可忽视的。其次,在课程设计的开发中,我认识到了前期开发所作的工作的重要性,在以后的开发中一定要做好前期的工作。前期工作没有多好,整个设计开发就等于失败。最后,我明白了有关模块化程序设计的要点:一、 模块与模块之间的耦合性要低;二、 模块的划分要尽量的细;三、 模块的边界要分明,不能模糊; 总之,要想做好课程设计,必须保持高度清晰的头脑,要想做好这一点,至关重要的一点就是做好开发文档,并不断完善之。C程序代码/* 航
24、空管理系统 作者:罗树英 时间:2011年05月04日 */#include#include#include#include #include#define season_discount 0.9 /*季度折扣*/typedef struct user/*用户定义*/ char name10; int worknum; int usernum; char password12; int level; struct user *next;user,*linkuser;typedef struct passenger/*乘客定义*/ char name10; char idcard20; int
25、age; char fnum8; int date; char cabin; int price; int seatnum; struct passenger *next; passenger,*linkpsger;typedef struct flight /*航班定义*/ char flightnum8; char fcity10; char tcity10; int startdate; int enddate; char departure6; char arrival6; int sche; int mileage; int num3673,max3; struct passenge
26、r *psger367; struct flight *next;flight,*linkflight;linkflight fhead;/*航班表头*/linkuser uhead;/*用户表头*/linkuser nowuser;/*当前用户*/linkflight pre_f;linkuser pre_user;int w,f=0;char acter412=营业员,航班管理员,系统管理员; linkuser search_user(int);linkflight search();int belong(int);void save2();void save1();void print_
27、user(linkuser);void menu1();void menu2();void menu3();void menupass();void loginmenu();int daynum(int);void scan_passenger();void scan_user() /*浏览用户信息模块*/ linkuser u=uhead-next; system( cls ); puts(tttt欢迎查询用户信息!nn); printf(ttttt活动者:%s 用户:%sn,acternowuser-level-1,nowuser-name); puts(tt*MENU*nn); puts(nntt用户名 工号 密码 等级 职位 员工数n); while(u) print_user(u); u=u-next; puts(nntt*nn);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1