民航订票系统
航空订票系统需求规格说明书

TOLO 航空订票系统》需求规格说明书目录3.数据描述3.1 功能操作 (Actio ns )和角色 (Actors ) (10)3.1.1用例清单 (24个) ....................................................... 1.0. 3.1.2角色清单 ............................................................... 1.14.功能需求.3.1.1编写目的 .3 1.2项目背景.31.2.1行业背景 1.2.2客户行业背景 1.2.3项目业务背景 1.3定义1.3.1名词解释和费用执行标准定义 1.3.2术语和缩略词对照表 1.4参考资料2.任务概述 .9. 2.1目标 9. 2.2运行环境 9. 2.3条件与限制 ......................................................................................................................... 9 ............ .1.0..1.14.1功能划分.1.14.2功能描述.14.4.2.1功能划分 1.44.2.2功能描述 1.54.2.3相关界面介绍304.2.4交互列表313.5.5.1最大并发连接数355.2执行效率.355.3日均处理数据量和峰值数据处理速度(记录条数/秒):.3.5.6.运行需求 3.5.6.1 一般限制..................................................................... 35 ............6.2出错处理..................................................................... 36 ............1.1编写目的本需求说明书的目的是明确T-3GABS项目的业务背景、业务范围以及项目定义的专业词汇,通过分析项目的核心功能和系统需求。
航空订票系统的设计与实现毕业论文

航空订票系统的设计与实现毕业论⽂引⾔1 引⾔1.1选题背景21世纪的特征是数字化、⽹络化和信息化,它是⼀个以数据库技术为核⼼的信息时代。
⽽随着信息技术的发展,航空售票业也成为⼀个⾼度依赖信息业的⾏业。
信息技术的飞速发展不仅使航空售票⼯作者逐渐摆脱了繁重的⼿⼯劳动、提⾼了⼯作效率,⽽且推着航空事业向现代化管理迈进。
现代化的航空售票也应该有现代化的管理系统。
在科技⽇益发达的今天,⼈们对旅游出⾏更加重视。
因此,航空售票进⾏现代化管理就变的尤为重要。
今天,信息资源已成为各个部门的重要财富,建⽴⼀个满⾜航空售票信息处理要求的⾏之有效的信息系统也成为⼀个航空公司发展的重要条件。
航空售票管理系统,它是航空部门机票管理系统的⼀部分,其作⽤是对所有待售机票和已售机票进⾏有效的管理。
通过本系统不仅可以进⾏售票⼯作,⽽且还可以对和机票相对应的旅客情况和航班情况进⾏查询,并可随时进⾏增加,修改,删除等⼯作,使售票⼈员能够有效地对机票进⾏有效的控制和管理。
因此,通过航空售票管理系统,使航空售票管理⼯作系统化,规范化,⾃动化,从⽽⼤⼤提⾼了售票管理⼯作的效率。
1.2 ⽬的和意义随着信息技术的发展,使⼈们上⽹容易成为现实,⽽售票厅往往⼈群拥挤⼀票难求,现实中去站点购票要受时间及地点的限制,由于现在⼈们⽣活节凑变快,时间资源相当保贵,有时为定购⼀张票需要坐上⼏个⼩时的车到售票处去排队买票,有时还会因为信息的缺乏,不能有效的了解票的销售情况,使旅⾏计划受阻,给顾客带来了很多的不便。
⽹上订票系统,新⼀种新型的售票模式。
⽤户可以通过⽹络查询航班的情况及机票的销售情况,以便更好的制定旅⾏计划,⽤户通过互联⽹在⽹上预订机票,极⼤的提⾼的旅客的订票效率,节省了订票的时间,缓解了售票窗⼝的拥挤的现状。
⽹上订票系统的成功实施,提⾼了售票的信息化管理⽔平,减⼩了⼯作⼈员的⼯作强度,为航空运输⾏业提供了新型的管理模式。
第1页(共38页)航空订票系统的设计与实现1.3 技术要求和设计范围航空售票系统提供的是⼀种⾯向较⼴区域的⽤户群系统。
【文献综述】民航订票系统开发

文献综述计算机科学与技术民航订票系统开发[摘要] 民航订票系统主要分为柜台售票系统和网上订票系统。
本文介绍了我国民航电子商务的发展和在国内的实际应用,概述了柜台系统主要的开发流程和基本技术包括Swing和JDBC等。
在此基础上介绍使用JSP技术开发的网上订票系统。
[关键词]民航系统;网上订票;JDBC;JSP[abstract] Civil Aviation booking system consists of the counter system and online booking system.This paper introduces the development of e-commerce in China's civil aviation and the practical application of the domestic, summarizes the main development processes counter system and basic techniques including Swing and JDBC, etc. Based on this, use the JSP technology develop online booking system. [key words] civil aviation system; Tickets online; JDBC; JSP一、背景近年来航空业跟从民航总局制定的信息化发展规划的脚步,把民航电子商务的发展作重要的内容,将机票业务电子化,使得人们对于规划自己的行程拥有较多的弹性。
航空公司更因此节省了印制机票、管理上的成本及建立新销售网点上的投资[1]。
目前,中国民航网上销售系统已完成与票价管理系统、航班查询订座系统、离港系统、常客系统的连接,形成了网上在线订票、在线支付、在线办理乘机手续、在线查询俱乐部里程计分等完整的服务链[3]。
民航订票系统的软件需求说明书

WFDWY-XQXJF-RHRYG-BG7RQ-BBDHM民航订票系统的软件需求说明书一引言1. 编写目的确定民航订票系统需要完成哪些工作,对民航订票系统提出完整、准确、清晰、具体的要求。
预期的读者是程序编写员,用户和分析员。
2. 背景软件系统的名称:民航订票系统项目提出者:航空公司开发者:计网0702用户:游客为了游客订票方便,并且航空公司方便管理和维护系统,实现更好的安全性和实时性。
航空公司委托开发一款民航订票系统。
该系统由该航空公司提供数据库,由本软件公司进行开发和维护。
3. 定义4. 参考资料航空公司提供的项目委托书;本项目前期做好的可行性研究报告;《实用软件文档写作》肖刚等编著清华大学出版社2005年2月第一版《软件工程导论》张海藩编著清华大学出版社第5版二任务陈述1. 目标开发民航订票系统是为了方便游客的订票,便于管理,并且保证订票的安全性和高效性。
应用在航空公司和游客之间完成订票的一款系统。
在功能上,它实现查询及订票,修改航班信息。
只有航空公司的管理人员可以修改航班信息(包括添加和删除)。
管理员修改航班信息,必须有管理员的身份认证。
游客只能够实现查询及订票。
2. 用户的特点操作人员:航空公司的技术人员,它可以合法的修改航班的信息,增加和删除航班。
维护人员:是软件公司,目的是维护系统的安全,防止非法侵入系统和非法篡改系统。
旅客:可以查找航班,看到航班的信息。
能过进行订票和退票。
但是,无法进行对航班信息的修改。
3. 假定和约束基本建设:包括房屋与设备,安全平台,网络基础平台,数据库管理软件,操作系统windows以及vistual C++,Access 2003 。
其他一次性支出:包括研究的费用,数据库的建立,检查费用和技术管理性费用,培训费,旅差费以及开发安装人员所需要的一次性支出,人员的调动费。
非一次性支出:设备的租金和维护费用,软件的租金和维护费用,数据通信方面的租金和维护费用,人员的工资和奖金,房屋空间的使用开支,公用设施的开支,保密安全的开支,其他周期性开支。
中国民航订座系统操作手册

中国民航订座系统操作手册一、引言中国民航发展迅速,为了提升服务效率和乘客体验,订座系统成为了必备工具。
本操作手册旨在指导用户熟悉和操作中国民航订座系统,确保订座流程顺畅、准确。
二、系统登录1. 使用合法的用户名和密码登录订座系统。
2. 在登录界面输入准确的用户名和密码,点击“登录”按钮进入系统。
三、基本功能1. 查询航班信息a. 选择日期和出发地、目的地,点击“查询”按钮。
b. 系统将显示符合条件的航班列表,包括航班号、起降时间、剩余座位数等信息。
c. 用户可以根据需要选择合适的航班进行订座。
2. 订座a. 在航班列表中选择目标航班,点击“订座”按钮。
b. 输入旅客姓名和联系方式等必要信息。
c. 确认无误后,点击“确认订座”按钮提交订座申请。
3. 修改、取消订座a. 进入订座管理界面,在“我的订座”中找到对应的订座信息。
b. 若需修改订座信息,点击“修改”按钮进行修改。
c. 若需取消订座,点击“取消”按钮完成取消操作。
4. 余票查询a. 进入余票查询页面,选择日期和出发地、目的地。
b. 系统将显示符合条件的航班列表以及剩余座位数。
5. 退票、改签a. 进入退票、改签管理界面,选择相应的订座信息。
b. 若需退票,点击“退票”并按照退票规定办理退票手续。
c. 若需改签,点击“改签”并按照改签规定进行改签操作。
四、常用技巧以下是一些常用的技巧,可提高订座效率和准确性:1. 根据航班号直接查询航班信息,快速订座。
2. 选择多个航班进行对比,以获得最适合的航班方案。
3. 提前查询余票情况,避开座位紧张的时间段。
4. 注意航班的起降时间,在订座时合理安排行程。
五、注意事项1. 用户在操作订座系统时,应提供真实、准确的信息,确保订座的有效性。
2. 根据不同航空公司的规定,订座可能需要提供附加信息或补充材料。
3. 遵守航空公司的规定和要求,以确保顺利出行。
六、结语通过本操作手册的指导,用户可以轻松使用中国民航订座系统,实现高效、便捷的订座服务。
飞机订票系统策划书3篇

飞机订票系统策划书3篇篇一飞机订票系统策划书一、引言二、系统目标1. 提供在线机票预订功能,方便用户随时随地预订机票。
2. 整合机票信息,提供实时的航班查询、预订和票价比较功能。
3. 支持多种支付方式,确保安全、便捷的支付流程。
4. 提供用户管理功能,方便用户查询订单、修改个人信息等。
5. 具备数据分析和报表功能,帮助航空公司进行市场分析和决策。
三、系统功能模块1. 用户界面模块机票搜索和预订:用户可以通过输入出发地、目的地、出发日期等信息搜索机票,并进行预订。
个人中心:用户可以查询订单、修改个人信息、管理常用联系人等。
客服中心:提供在线客服和常见问题解答,方便用户咨询。
2. 后台管理模块航班管理:航空公司可以管理航班信息、舱位设置、票价调整等。
订单管理:管理员可以查询、处理订单,报表。
用户管理:管理员可以管理用户信息,设置用户权限。
数据分析:系统可以分析用户行为、预订趋势等数据,为航空公司提供决策支持。
3. 支付模块支持多种支付方式,如在线支付、银行转账、信用卡支付等。
与第三方支付平台集成,确保支付安全可靠。
提供支付记录查询功能,方便用户查询支付状态。
4. 数据整合模块与航空公司的票务系统进行数据对接,实时获取航班信息和票价。
整合其他数据源,提供更多的机票信息和推荐。
四、技术选型1. 前端技术:采用 HTML、CSS、JavaScript 等技术,构建用户界面。
2. 后端技术:选择适合的编程语言和框架,如 Python、Django 等。
3. 数据库:使用关系型数据库如 MySQL 或 NoSQL 数据库如 MongoDB 存储数据。
4. 支付接口:与第三方支付平台进行集成。
五、项目时间表1. 需求分析与设计:[时间区间 1]2. 系统开发:[时间区间 2]3. 测试与修复:[时间区间 3]4. 上线与维护:[时间区间 4]六、预算1. 人力成本:[具体金额]2. 技术设备采购:[具体金额]3. 软件开发费用:[具体金额]4. 测试与维护费用:[具体金额]5. 其他费用:[具体金额]总预算:[具体金额]七、风险评估与应对措施1. 技术风险:关注技术发展趋势,及时解决技术难题。
飞机订票系统

飞机订票系统学生姓名:兰海军指导老师:易禹摘要本系统主要是为了方便用户飞机订票,能使用户方便快捷的了解各航线信息。
本系统设置了航线创建功能、浏览航班信息和查询航线信息功能、订票退票功能及查看剩余票数功能。
在该系统当中,系统开发平台是Windows XP,程序设计设计语言采用Visual C++,数据库采用Microsoft Access,程序运行平台为Windows XP。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以在应用中解决实际问题。
关键词 Access;Visual C++;飞机订票目录1问题描述与分析...................................... 2 2数据结构设计描述 .................................... 3 3软件结构设计(系统功能模块图) ....................... 3 4算法设计思想 ....................................... 3 5调试分析 ........................................... 6 6总结 .............................................. 12 7参考文献 .......................................... 13 8附录(源程序清单) (14)飞机订票系统第 2 页共 30 页1问题描述与分析飞机订票系统要求可以实现如下功能:可以录入航班情况,可以查询某个航线的情况,如输入飞机到达城市,查询飞机航班情况;可以订票、退票。
从问题的描述分析,该飞机定票系统必须具备以下几个功能模块:1) 航线创建功能模块:包括终点站名、航班号、分机号、飞行日期、乘员定额、及余票量,准载人数等信息.。
2) 浏览航班信息功能模块:查看创建的所有航线信息。
民航售票系统总结与归纳

民航售票系统总结与归纳随着社会的发展和科技的进步,民航售票系统的应用已经成为现代航空业务运作的重要组成部分。
通过对民航售票系统的总结与归纳,可以更好地了解其功能和作用,为航空公司和旅客提供高效、便捷的服务。
本文将对民航售票系统进行综述,包括其定义、特点、优势以及未来的发展方向。
一、民航售票系统的定义与特点民航售票系统,简称为ATRS(Airline Ticket Reservation System),是指航空公司为旅客提供机票预订、购票、退票等服务的一种电子化系统。
它通过计算机网络和数据库技术,实现了航班信息、客票信息和支付信息的集中管理和实时更新,为旅客提供了更加便捷的购票方式。
民航售票系统具有以下特点:1. 实时性:民航售票系统可以及时更新航班信息和座位预订情况,旅客可以随时查询到最新的航班信息和机票余量。
2. 自动化:通过民航售票系统,旅客可以自主选择航班、座位、乘客信息等,实现自动化的预订和购票流程,节省人力成本。
3. 一体化:民航售票系统通常与其他航空管理系统(如运输管理系统、机场管理系统)相互关联,形成一体化的航空业务运作体系。
4. 多渠道销售:除了传统的实体售票点,民航售票系统还支持在线售票、手机客户端购票等多种渠道,方便旅客随时随地购票。
5. 安全性:民航售票系统采用了严格的数据加密和身份验证措施,确保旅客个人信息和支付信息的安全。
二、民航售票系统的优势民航售票系统的应用给航空公司和旅客带来了许多优势。
1. 提高效率:传统的售票方式需要人工操作,效率低下。
而民航售票系统实现了自助购票和在线支付,大大提高了航空公司的工作效率。
2. 降低成本:民航售票系统的自动化特点减少了航空公司的人力成本,同时也减少了纸质票据和行程单的使用成本。
3. 增强服务体验:旅客可以通过民航售票系统自主选择航班、座位,并在线支付,提升了购票的便利性和体验感。
4. 实时更新:民航售票系统与航空公司的航班管理系统相互关联,在航班变动时可以及时更新,减少因航班取消或延误而给旅客带来的困扰。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 绪论1.1 系统设计的目的为了方便机场工作人员对机票的管理,提高飞机票的管理效率,降低飞机票管理中的出错率,减少信息交流及其带来不必要的开销。
需要设计一个民航订票系统,该系统能及时反映航班及机票的剩余数量等信息,可快速的帮乘客订到想要的机票,而乘客也可以通过该系统实现自助退票的功能。
1.2 实现的目标该系统是由两个人共同设计实现功能,由于一个人的能力有限,该系统仅能实现录入航班信息、查询航班信息、订购飞机票、退订飞机票等一部分功能(航班的信息存储在文件夹中)。
1.3 课题的研究方法机票管理系统是实现机场机票的预定、统计和分析,提高机票运用的科学管理水平,充分发挥机票利用率,节省订退票时间。
系统的主要设计思想是实现对机票的查询、退订等功能。
航班的信息以文件的形式存储,用头文件包含、全局变量定义和结构体定义源代码,用结构体数组来存放顾客名、航班号、座位号等信息,用链式结构存储信息。
系统的人机接口采用简单的字符界面进行交互。
系统的设计方法是结构化设计方法,采用C语言进行开发。
软件开发平台采用Visual C++6.0[1]。
2 软件模块结构图民航订票系统可以分为四个部分,订票、退票、查询信息、信息载入。
图2.1 民航订票系统模块结构图3 详细设计3.1 数据结构设计用printf()函数输出界面,typedef struct airline{}定义航班的信息,如航班号、飞机号、目的地、座位总数和剩余座位数等。
typedef struct customer{}定义顾客信息,如顾客名、所订航班号和座位号等。
初始化链表,并在airline、customer 链表中操作,实现系统的功能[1]。
3.2 模块设计3.2.1 界面设计用printf()函数输出界面,提示用户选择需要的功能,用条件语句捕捉用户输入的选项,并执行代码,进入用户所选的操作界面。
若用户输入非选项的字符,则提示输入错误,提醒用户重新选择。
3.2.2 订票模块设计进入订票模块后,进行订票。
若票已经售完,提示用户不能预订该航班的机票。
若还有余票,则提示用户输入个人信息订票。
订票成功后,系统中该航班的余票减少相应的数量,并将顾客信息存入文件[2]。
代码实现:status book(airline *l,char *flight_num,customer *c,char *name){airline *p=l;customer *q=c->next ;p=l->next ;for(;q->next !=NULL;q=q->next){}for(;p!=NULL;p=p->next ){if(strcmp(flight_num,p->flight_num )==0){if(p->left >0){……p->left --;return 1;}else printf("Sorry!Seats full!\n");return 0;}}3.2.3 退票模块设计进入退票模块后,用户需根据提示填写自己的姓名。
退票成功后,该系统自动在余票中增加相应的票数。
代码实现:status delete_cus(customer *h,airline *l,char *name){customer *p,*pr;char flight_num[8];pr=h;p=pr->next ;while(p!=NULL){if(strcmp(name,p->name )==0){……}pr=pr->next ;p=pr->next ;}printf("No this customer£¬can't return£¡\n");return 0;}3.2.4 查询模块进入查询模块,用户可以查询现有的航班路线、航班号、余票数等信息。
代码实现:status print_airline(airline *l){airline *p=l->next ;for(;p!=NULL;p=p->next ){printf("%8s%8s%8s%9d%9d\n",p->flight_num ,p->plane_num ,p->destinati on ,p->total ,p->left );}return 1;}3.2.5 修改航班信息模块进入该模块后,用户可以更改航班的信息。
有了这个模块,系统内的信息可以灵活的根据航班的变动而变动。
代码实现:status increase_air(airline *l,char *flight_num,char *plane_num,char *destination,int total){airline *p=l->next ;for(;p->next !=NULL;p=p->next){}insert_airline(&p,flight_num,plane_num,destination,total,total);printf("Adding flight %s successed!\n",flight_num);return 1;}3.2.6 初始化体系统系统最初默认值为零,因此需要初始化链表,录入航班信息和顾客信息。
初始化系统后,系统方可进行运行,进行相应的操作,实现系统的功能[3]。
airline *init_airline(){……}customer * init_customer(){customer *l;l=(customer*)malloc(sizeof(customer));if(l==NULL){……}l->next=NULL;return l;}status insert_airline(airline **p,char *flight_num,char *plane_num,char *destination,int total,int left){……}status insert_customer(customer **p,char *name,char *flight_num,int seat){customer *q;q=(customer*)malloc(sizeof(customer));strcpy(q->name , name);strcpy(q->flight_num , flight_num);……4 使用说明及运行实例4.1 登陆主界面登陆主界面,按用户需求进行相应操作。
图4.1 主菜单4.2 订票界面进入订票界面,输入乘机人的相关信息,系统提示订票成功后方可退出。
图4.2 订票界面4.3 退票界面进入退票界面,用户输入相关信息,系统提示退票成功后可退出系统。
图4.3 退票界面4.4 信息载入界面进入信息载入界面,进行相关操作。
图4.4 信息载入界面5 总结5.1 系统的局限性该系统仅能实现订票退票和简单的航班录入操作,飞机的起飞、降落时间并未储存在系统中。
机票模块的实际剩余票数不能及时反映到系统平台上,导致显示的余票数量可能和实际数量有偏差。
查询模块仅能实现按航班号查询和按起飞抵达城市查询的功能。
系统并未提供像航班延飞、乘客是否登机等一些实时性的信息这些功能。
在安全性方面,系统没有设置密码,因此只能面向航空公司内部人员。
5.2 心得体会在用C语言编写程序的时候,最好的方法就是分模块进行编写,每个功能用一个或多个模块来实现。
这样写出来的程序容易读懂,而且在出现错误的时候可以快速的找出错误。
课程设计是我们专业课程知识综合应用的实践训练,在这次课程设计中,我收获了很多东西。
比如独立思考能力、分析问题的角度、动手能力等。
虽然在规定的时间内完成了任务,但是由于知识和经验的欠缺,整个系统的开发功能还不太完善。
在设计过程中也遇到了一些困难,由于需求分析的不全面,导致最初的系统运行不起来。
后来问了周围的同学和学长,才把问题解决了。
经过这次课设,让我对软件开发流程有了更深的了解,激发了我对专业知识学习的兴趣。
让我看到了课堂学习与实际工作的距离,找出学习中存在不足的地方,可以根据目前自身实际存在的问题有选择性的进行学习,加强自身的能力。
对于我们这个专业的学生,实际动手能力是很重要的,在今后的学习中要着重于这个方面,才能缩短自己的能力与实际需要的差距。
参考文献[1] 严蔚敏,吴伟民.数据结构(C语言版)北京:清华大学出版社,1997: 27-30,91.[2] 李峰,谢中科. C语言程序设计.上海:复旦大学出版社,2011: 21,69-72.[3] 谭浩强,C语言程序设计题解与上机指导(第三版).北京:清华大学出版社,2005: 55.附录源程序清单//#include<stdafx.h>#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>typedef int status;typedef struct airline{char flight_num[8]; //航班号char plane_num[8]; //飞机号char destination[20]; // 目的地int total; // 座位总数int left; // 剩余座位struct airline *next; // 下一个结点}airline;typedef struct customer{char name[9]; // 顾客名char flight_num[8]; // 航班号int seat_num; // 座位号struct customer *next; // 下一个结点}customer;airline *init_airline(){ // 初始化链表airline *l;l=(airline*)malloc(sizeof(airline));if(l==NULL){exit(0);}l->next=NULL;return l;}customer * init_customer(){ // 初始化链表customer *l;l=(customer*)malloc(sizeof(customer));if(l==NULL){exit(0);}l->next=NULL;return l;}status insert_airline(airline **p,char *flight_num,char *plane_num,char *destination,int total,int left){ //airline链表插入操作airline *q;q=(airline*)malloc(sizeof(airline)); //初始化strcpy(q->flight_num , flight_num); //拷贝信息strcpy(q->plane_num , plane_num);strcpy(q->destination , destination);q->total =total;q->left =left;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;return 1;}status insert_customer(customer **p,char *name,char *flight_num,int seat){ // customer信息插入操作customer *q;q=(customer*)malloc(sizeof(customer));strcpy(q->name , name); //顾客信息拷贝strcpy(q->flight_num , flight_num);q->seat_num =seat;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;return 1;}airline *modefy_airline(airline *l,char *flight_num) // 修改airline中的数据{airline *p;p=l->next ;for(;p!=NULL;p=p->next ){if(strcmp(flight_num,p->flight_num )==0) //查找{p->left ++;return l;}}printf("No this flight,can't make correction£¡\n"); //查找失败return 0;}status delete_airline(airline *h,char *flight_num) // 删除航班{airline *p,*pr;pr=h;p=pr->next ;while(p!=NULL){if(strcmp(flight_num,p->flight_num )==0) //信息匹配{pr->next =p->next ;printf("Delete %s flight\n",p->flight_num );return 1;}pr=pr->next ;p=pr->next ;}printf("No this flight£¬can't delete£¡\n"); //无该信息return 0;}status delete_customer(customer *h,char *flight_num) // 顾客信息删除{customer *p,*pr;pr=h;p=pr->next ;while(p!=NULL){if(strcmp(flight_num,p->flight_num )==0) //信息匹配{pr->next =p->next ; }pr=pr->next ;p=pr->next ;}return 1;}status delete_cus(customer *h,airline *l,char *name) //顾客退票{customer *p,*pr;char flight_num[8];pr=h;p=pr->next ;while(p!=NULL){if(strcmp(name,p->name )==0) //找顾客姓名{strcpy(flight_num,p->flight_num ); //找航班信息l=modefy_airline(l,flight_num); //修改该航班信息pr->next =p->next ;printf("Customer %s return tickets successed!\n",p->name );return 1;}pr=pr->next ;p=pr->next ;}printf("No this customer£¬can't return£¡\n");return 0;}status save_airline(airline *l) //保存airline.dat{FILE *fp_airline;char ch='#';airline *p=l->next ;char filename[]="c:\\airline.dat"; //寻找C盘中的航班信息if((fp_airline=fopen(filename,"wb"))==NULL){printf("can not open file to write:%s\n",filename);return 0;}for(;p!=NULL;p=p->next ){fprintf(fp_airline,"%s,%s,%s,%d,%d,%c",p->flight_num,p->plane_num,p->desti nation,p->total,p->left,ch);fflush(stdin);}fclose(fp_airline);return 1;}status save_customer(customer *l) // 保存顾客信息customer.dat. {FILE *fp_customer;char ch='#';customer *p=l->next ;char filename[]="c:\\customer.dat"; //寻找C盘中的顾客信息文件if((fp_customer=fopen(filename,"wb"))==NULL){printf("can not open file to write:%s\n",filename);return 0;}for(;p!=NULL;p=p->next ){fprintf(fp_customer,"%s,%s,%d%c",p->name ,p->flight_num ,p->seat_num ,ch);}fclose(fp_customer);return 1;}int changStrInt(char *ch) //把字符串转化为整型{int a=1,b=0,c=0,i;for (i=strlen(ch)-1;i>=0;i--){if (ch[i]<='9'&&ch[i]>='0'){b=a*(ch[i]-'0');a=a*10;c=c+b;}else{printf("%不合法,无法将此字符转化为整型\n",ch[i]);return 0;}}return c;}status insert_air(airline *l,char *flight_num,char *plane_num,char *destination,int total,int left){ //airline链表插入操作airline *q;q=(airline*)malloc(sizeof(airline));strcpy(q->flight_num , flight_num);strcpy(q->plane_num , plane_num);strcpy(q->destination , destination);q->total =total;q->left =left;q->next=l->next ;l->next=q;return 1;}status insert_cus(customer *l,char *name,char *flight_num,int seat) { //customer链表插入操作customer *q;q=(customer*)malloc(sizeof(customer));strcpy(q->name , name);strcpy(q->flight_num , flight_num);q->seat_num =seat;q->next=l->next ;l->next=q;return 1;}status load_airline(airline *l) //读入文件中航班信息{FILE *fp_airline;int flag=0,i=0;char ch;char flight_num[8]="\0"; // 航班号char plane_num[8]="\0"; //飞机号char destination[20]="\0"; // 目的地char total_str[5]="\0";char left_str[5]="\0";int total; // 座位总数int left; //剩余座位数char filename[]="c:\\airline.dat";if((fp_airline=fopen(filename,"r"))==NULL){printf("can not open file to load:%s\n",filename);return 0;}while(!feof(fp_airline)){ch=fgetc(fp_airline);if(ch!='#'){if(flag==0&&ch!=','){flight_num[i]=ch; i++; }else if(flag==1&&ch!=','){plane_num[i]=ch; i++; }else if(flag==2&&ch!=','){destination[i]=ch; i++; }else if(flag==3&&ch!=','){total_str[i]=ch; i++; }else if(flag==4&&ch!=','){left_str[i]=ch; i++; }else if (ch==','){if(flag==0)flight_num[i]='\0';else if(flag==1)plane_num[i]='\0';else if(flag==2)destination[i]='\0';else if(flag==3)total_str[i]='\0';elseleft_str[i]='\0';flag++; i=0;}}else{flag=0; i=0;total=changStrInt(total_str);left=changStrInt(left_str);printf("%8s%8s%8s%9d%9d\n",flight_num ,plane_num ,destination ,total ,left );fflush(stdin);////insert_air(l,flight_num,plane_num,destination,total,left);}}fclose(fp_airline);return 1;}status load_customer(customer *l) //从文件读入顾客信息{FILE *fp_customer;int flag=0,i=0;char ch;char name[9]="\0";char flight_num[8]="\0"; // 航班号char seat_num_str[5]="\0";int seat_num; //座位char filename[50]="c:\\customer.dat";if((fp_customer=fopen(filename,"r"))==NULL){printf("can not open file to load:%s\n",filename);return 0;}while(!feof(fp_customer)){ch=fgetc(fp_customer);if(ch!='#'){if(flag==0&&ch!=','){name[i]=ch; i++; }else if(flag==1&&ch!=','){flight_num[i]=ch; i++; }else if(flag==2&&ch!=','){seat_num_str[i]=ch; i++; }else if (ch==','){if(flag==0)name[i]='\0';else if(flag==1)flight_num[i]='\0';else seat_num_str[i]='\0';flag++; i=0;}else{printf("ERROR\n"); return 0; }}else{flag=0; i=0;seat_num=changStrInt(seat_num_str);printf("%15s %15s %10d\n",name ,flight_num ,seat_num );fflush(stdin);////insert_cus(l,name,flight_num,seat_num);}}fclose(fp_customer); return 1;}status creat_airline(airline **l) // 创建airline单链表{airline *p=*l;int i=0;char *flight_num[3]={"bjnc01","bjsh02","shgz03"};char *plane_num[3]={"plane1","plane2","plane3"};char *destination[3]={"nc","sh","gz"};int total[3]={100,100,100};int left[3]={51,50,78};for (i=0;i<3;i++){insert_airline(&p,flight_num[i],plane_num[i],destination[i],total[i],left[i]);}return 1;}status creat_customer(customer **l) // 创建customer单链表{customer *p=*l;int i=0;char *name[3]={"yuyang","lucy","fanhong"};char *flight_num[3]={"bjnc01","bjsh02","shgz03"};int seat_num[3]={19,15,10};for (i=0;i<3;i++){insert_customer(&p,name[i],flight_num[i],seat_num[i]);}return 1;}status increase_air(airline *l,char *flight_num,char *plane_num,char *destination,int total) // 增加航线{airline *p=l->next ;for(;p->next !=NULL;p=p->next){}insert_airline(&p,flight_num,plane_num,destination,total,total);printf("Adding flight %s successed!\n",flight_num);return 1;}status book(airline *l,char *flight_num,customer *c,char *name) // 订票函数{airline *p=l;customer *q=c->next ;p=l->next ;for(;q->next !=NULL;q=q->next){}for(;p!=NULL;p=p->next ){if(strcmp(flight_num,p->flight_num )==0){if(p->left >0){printf("Congratulations!Tickets booked!\n");printf("Your seat_number is: %d\n",(p->total -p->left +1));insert_customer(&q,name,flight_num,p->total -p->left +1);p->left --;return 1;}else printf("Sorry!Seats full!\n");return 0;}}printf("Sorry!No this flight!\n");return 0;}status print_airline(airline *l) // 打印航班信息{airline *p=l->next ;for(;p!=NULL;p=p->next ){printf("%8s%8s%8s%9d%9d\n",p->flight_num ,p->plane_num ,p->destination ,p ->total ,p->left );}return 1;}status print_customer(customer *l) // 打印顾客信息{customer *p=l->next ;for(;p!=NULL;p=p->next ){printf("%10s %10s %d\n",p->name ,p->flight_num ,p->seat_num );}return 1;}void main(){char choice,name[9],flight_num[8];int t=1,k=1;airline *air=init_airline();customer *cus=init_customer();printf("Airline Tickets Book System\n");printf(" \n");creat_airline(&air);creat_customer(&cus);while(t==1){printf("******************************************\n");printf("** Welcome To Airline Tickets Book System **\n");printf("******************************************\n");printf("*--++++++++-----主菜单-----++++++++++----*\n");printf("* # 订票------------0 # *\n");printf("* # 退票------------1 # *\n");printf("* # 查询-----------2 # *\n");printf("* # 信息载入------3 # *\n");printf("* # 退出-------------4 # *\n");printf("******************************************\n");if(k){printf("请选择相应操作: \n"); k=0; }else printf("请选择相应操作:\n");choice = getch();printf("%c\n",choice);if(choice=='0'){printf("Please input your flight number: ");scanf( "%s",flight_num);printf("Please input your name: ");scanf( "%s",name);book(air,flight_num,cus,name);save_airline(air);save_customer(cus);}else if(choice=='1'){printf("\nPlease input your name: ");scanf( "%s",name);delete_cus(cus,air,name);save_airline(air);save_customer(cus);}else if(choice=='2'){printf("\n flight_number plane_number destination total tickets_num left tickets_num\n");print_airline(air);printf(" name flight_number seat_number\n");print_customer(cus);}else if(choice=='3'){printf("flight_num plane_num destination total left\n" );load_airline(air);printf("\t name \t\tflight_num\tseat_num \n");load_customer(cus);}else if(choice=='4'){printf("Good bye!Please enjoy your travel!"); t=0;}else{printf("Input error!\n");}}getch();}。