欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于C语言的飞机订票系统.doc

    • 资源ID:834818       资源大小:304.68KB        全文页数:22页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于C语言的飞机订票系统.doc

    1、 (飞机订票系统)一、需求分析1、本程序中,输入为字符串小写大写字符和整形; 2、以字符串输出;3、本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能,具体为:(1)录入功能可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询功能可以查询某个航线的情况(如,航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);(3)订票功能可以订票,如果该航班不存在,则订票失败;(4)退票功能可以退票并且记录乘客的相关信息以及退票信息;如客户资料:有姓名,证件号,订票航班情况,订单要有编号。4、测试数据:订票正确输入航班号f

    2、2009订票人姓名yangyatingID0841919204管理员正确密码“5566”错误密码“1234”二、概要设计1、程序包含以下模块:每个模块的算法设计说明如下: (1)录入模块: 查找单链表的链尾,在链尾插入一个“航班信息”的新结点。(2)查询模块:提供两种查方式:按航号和按航线查询,1代表按航号查询,2代表按航线查询。0则表示退出查询。顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。(3)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。(4)退票模块:输入要退票的乘客姓名以及证件号码,查找乘客资料的链表中是否

    3、有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。(5)修改模块: 输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。流程图飞机订票系统录入航班信息查看航班信息退票修改订票主函数流程图显示功能选项根据N调用模块函数YES 输入N:判断N是否在04之间NO三、详细设计1、航班的信息类型:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项:航班号起飞时间达到时间目的地限座空座票价hD1D2D3单链表如下:每个结点包括数据域和指针域:数据域指针域

    4、C语言描述如下:typedef struct flightnode char air_num10; /*航班号*/char start_time15; /*起飞时间*/char end_time15; /*到达时间*/char end_place30; /*目的地*/int total; /*限座*/int left; /*空座*/int price; /*票价*/struct flightnode *next; /*指向个结点*/flightnode;基本操作:int CreatFlight(flightnode *l); /生成航班信息链表int InsertFlight(flightno

    5、de *p,char *air_num,char *start_time,char *end_place,int total,int left,int price); /插入航班信息的结点flightnode *modefy_airline(flightnode *l,char *air_num); /修改航班信息的函数int BookTicket(flightnode*a,char *air_num,passengernode *c,char *name,char *ID_num); /订票函数int CancelTicket(passengernode *c,flightnode*l,ch

    6、ar *name,char *ID_num); /退票函数int SearchFlight(flightnode*head); /查询航班信息函数2、乘客信息类型:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和座位号四个数据项:旅客姓名证件号码航班号座位号每个结点包括数据域和指针域:数据域指针域 C语言描述如下:typedef struct passengernode /*定义乘客资料结点*/char name20;char ID_num20;char air_num20;int seat_num;struct passengernode *next;

    7、passengernode;基本操作:int CreatPassenger(passengernode *l); /生成乘客资料链表int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num); /插入乘客资料的结点3、主函数和其他函数的伪码算法void main() /主函数 while () printf(/*主菜单界面*/)switch(ch=getchar()case1:BookTicket;break; case2:CanclelTicket;break; case3:

    8、if()SearchFlight; else if()SearchPassenger;break; case4:exit;break;flightnode *head_flight() /生成航班头结点passengernode *head_passengernode() /生成乘客资料头结点int CreatFlight(flightnode *l) /生成航班信息链表 /初始化航班信息InsertFlight() /插入航班信息/ CreatFlightint CreatPassenger(passengernode *l) /生成乘客资料链表 /初始化乘客资料 InsertPasseng

    9、er() /插入乘客资料/ CreatPassengerint InsertFlight() /插入航班信息新结点 /定义指针,动态分配,复制信息流,赋值,next返回指针,循环/航班信息链的尾插 /InsertFlightint InsertPassenger()/插入乘客资料新结点 /定义指针,动态分配,复制信息流,赋值,next返回指针,循环/乘客信息链的尾插 /InsertPassengerflightnode *modefy_airline(flightnode *l,char *air_num) /修改航班信息int BookTicket() /订票 InsertPassenger

    10、() / BookTicketint CancelTicket() /退票 l=modefy_airline(l,air_num);/CancelTicketint SearchFlight(flightnode *head) /查询航班 /输出航班信息/ SearchFlightint SearchPassenger(passengernode *head) /查询乘客 /输出乘客信息/ SearchPassenger四、调试分析1、调试结果:(1) 系统主菜单界面:(2)进入订票的界面:(3)查询信息的界面:选择1,查询航班信息的界面:选择2,输入密码,查询乘客的信息的界面:新增乘客,查询

    11、乘客信息:密码错误时:(4)进入退票的界面:名字或者证件错误时:2、时间复杂度分析:本程序运行所耗费的时间主要在于循环语句,for和while语句,其时间复杂度应该为O(n)。3、模块设计和调试时存在问题的思考:原先在信息查询中没有乘客与管理人员的区别,乘客与管理人员都可以看到相同的信息,航班信息和乘客资料,后来,在浏览乘客资料时要求输入管理人员的密码,以确保乘客资料的安全性。4、算法的改进设想:本程序还存在很多缺点,不能完全的实现老师要求的各种功能,特别是在查询功能方面,此程序应该增加一些查询的方式的设计,如可以按照起飞抵达地点查询航班情况。还有票价折扣和航班已无票,提供相关可选航班,订单须

    12、有编号的功能没有设计到。五、用户手册1、本程序运行环境是windows操作系统,执行文件是5.exe。2、进行演示程序后,即显示用户界面:3、进入“订票系统Book Ticket”的命令后,即提示输入航班号、订票人姓名、ID号,结束符为“回车符”,该命令执行后输出“已成功订票”“航班号和座位号”的信息。4、进入“退票系统Cancel Ticket”的命令后,即提示输入订票人姓名和ID号,结束符为“回车符”,该命令执行后输出“已成功取消”或者输入错误信息则会输出“无此顾客”的信息。5、进入“查看信息”的命令后,即进入“查看航班信息”和“查看乘客信息”,进入“查看航班信息”则会输出所有的航班信息分

    13、别为航班号、起止时间、起止地点、票价、总座、空座。进入“查看乘客信息”则提示输入管理员密码,输入密码之后,即会输出所有订票的乘客信息,分别为姓名、ID、航班号、座位号。6、选择EXIT推出飞机订票系统。六、测试结果1、订票:输入:f2009、yangyating、0841919204输出:Successful for Booking ticket. Your flight: f2009 Your seat number: 46输入:f2005、Sujuan、0841919205输出:Successful for Booking ticket. Your flight: f2005 Your s

    14、eat number: 22输入:f2222、sujuan、0841919107输出:Sorry,there isnt the plane,please check the airline number!2、查询信息:(1) 查询航班信息:输出: FlightStart_timeArrival_placePriceTotalLeft_seatf200808:00-08:30Changsha-lasa400010023f200909:00-12:00Changsha-Beijing100010055f201012:00-13:00Changsha-deguo700015076f201116:30

    15、-19:00Changsha-Shanghai50010025 f201217:00-20:55Changsha-Sanya9006540 f201321:00-23:45Changsha-Guangdong39910035(2) 查询乘客信息:输入:5566 输出:NameIDFlightSeat_numberSujuan 0841919205f 200522Donghui 0841919206f 20062W730841919207f 20079yangyating0841919204f 200946 输入:1234 输出:sorry,the key is wrong3、退票:输入:A、0

    16、841919205输出:Successful for canceling ticket.输入:yangyating、0841919204输出:Successful for canceling ticket.输入:sujuan、0841919107输出:Sorry,there isnt the customer!再查看乘客信息: 输入:5566 输出:NameIDFlightSeat_numberDonghui 0841919206f 20062W730841919207f 20079 七、附录本系统源程序如下:#include /标准输入、输出头文件#include /包含字符串函数处理头文件

    17、#include /定义字符串#include#define OK 1#define ERROR 0typedef struct flightnode /定义航班信息结点char air_num10; /航班号char start_time15; /起飞时间char end_time15; /到达时间char end_place30; /目的地int total; /限座int left; /空座int price; /票价struct flightnode *next; /指向个结点flightnode;typedef struct passengernode /定义乘客资料结点char n

    18、ame20; /姓名char ID_num20; /证件号码char air_num20; /航班号int seat_num; /座位号struct passengernode *next; /指向个结点passengernode;flightnode *head_flight(); /生成航班信息的头结点passengernode *head_passenger(); /生成乘客资料的头结点int CreatFlight(flightnode *l); /生成航班信息链表int CreatPassenger(passengernode *l); /生成乘客资料链表int InsertFlig

    19、ht(flightnode *p,char *air_num,char *start_time,char *end_place,int total,int left,int price); /插入航班信息的结点int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num); /插入乘客资料的结点flightnode *modefy_airline(flightnode *l,char *air_num); /修改航班信息的函数int BookTicket(flightnode*a,

    20、char *air_num,passengernode *c,char *name,char *ID_num); /订票函数int CancelTicket(passengernode *c,flightnode*l,char *name,char *ID_num); /退票函数int SearchFlight(flightnode*head); /查询航班信息函数int SearchPassenger(passengernode *head); /查询乘客信息函数void main() /主函数int p=2; /p=1时进入主菜单,p=0时退出系统passengernode *cus=he

    21、ad_passenger();flightnode *air=head_flight();char name20,air_num20,ID_num30,mima20,ch;char t20=5566; /管理员密码system(cls);CreatFlight(&air);CreatPassenger(&cus);while(p=2) /主菜单界面printf(n welcome to the airline system!nn please choose the serves below and press the number:nn);printf( =nn);printf( 1 - Bo

    22、ok Ticket n);printf( 2 - Cancel Ticket n);printf( 3 - Search Information n);printf( 4 - Exit nn);printf( =n);switch(ch=getchar()case 1:printf(n *-Booking Ticket-*n); /进入订票功能printf(Please input a airline number and press enter for OK:);scanf(%s,air_num);printf(Please input your name and press enter f

    23、or OK:);scanf(%s,name);printf(Please input your ID number and press enter for OK:);scanf(%s,ID_num);BookTicket(air,air_num,cus,name,ID_num);getch();break;case 2:printf( *-Canceling Ticket-*n); /进入退票功能printf(Please input the cancel name for booking ticket:);scanf(%s,name);printf(Please input the ID f

    24、or booking ticket:);scanf(%s,ID_num);CancelTicket(cus,air,name,ID_num);break;case 3:printf(*-Search Information-*n); /进入信息查询功能 printf( 1 - flight information n ); printf( 2 - passenger informationn ); printf( other - exit n); printf(*-*n); if(ch=getch()=1) /航班信息查询printf(*- flight information -*n);Se

    25、archFlight(air);else if(ch=2) /乘客资料查询printf(n please input the key:);scanf(%s,mima); /输入管理员密码if(strcmp(mima,t)=0)printf(n*-passenger information -*nn);SearchPassenger(cus);else printf(sorry,the key is wrong);getch();break;case 4:getch();p=0; /退出系统break;flightnode *head_flight() /生成航班信息的头结点flightnode

    26、 *a;a=(flightnode *)malloc(sizeof(flightnode); /动态分配空间给flightnode指针并付给aif(a=NULL)a-next=NULL;return a;passengernode *head_passenger() /生成乘客资料头结点passengernode *c;c=(passengernode*)malloc(sizeof(passengernode);/分配if(c=NULL)c-next=NULL;return c;int CreatFlight(flightnode *l) /生成航班信息链表(用单链表存储)flightnode

    27、 *p=*l; /int i=0;char *air_num6=f2008,f2009,f2010,f2011,f2012,f2013;char *start_time6= 08:00-08:30,09:00-12:30, 12:00-13:00, 16:30-19:00,17:00-20:55,21:00-23:45;char *end_place6=Changsha-lasa,Changsha-Beijing,Changsha-deguo,Changsha-Shanghai,Changsha-Sanya,Changsha-Guangdong,; /初始化航班信息int total6=100

    28、,100,150,100,65,100;int price6=4000,1000,7000,500,900,399;int left6=23,55,76,25,40,35;for(i=0;i6;i+)InsertFlight(&p,air_numi,start_timei,end_placei,totali,lefti,pricei); /插入航班信息return OK;int CreatPassenger(passengernode *l) /生成乘客资料链表(用单链表存储)passengernode *p=*l;int i=0;char *name3=Sujuan,Donghui,W73;

    29、char *ID_num3=0841919205,0841919206,0841919207; /初始化乘客资料char *air_num3=f2005,f2006,f2007;int seat_num3=22,2,9;for(i=0;iair_num,air_num); /复制信息流strcpy(q-start_time,start_time);strcpy(q-end_place,end_place);q-total=total;q-left=left;q-price=price;q-next=NULL;(*p)-next=q;/next返回指针(*p)=(*p)-next; /(循环)

    30、航班信息链的尾插法return OK;int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num) /插入乘客资料新结点passengernode *q;q=(passengernode*)malloc(sizeof(passengernode);strcpy(q-name,name);strcpy(q-ID_num,ID_num);strcpy(q-air_num,air_num);q-seat_num=seat_num;q-next=NULL;(*p)-next=q;(*p)

    31、=(*p)-next; /乘客资料链表的尾插法return OK;flightnode *modefy_airline(flightnode *l,char *air_num) /修改航班信息flightnode *p;p=l-next;for(;p!=NULL;p=p-next)if(strcmp(air_num,p-air_num)=0)/比较字符串,相等时值为0p-left+;return l; /printf(NO the airline!);return 0;int BookTicket(flightnode *a,char *air_num,passengernode *c,cha

    32、r *name,char *ID_num) /订票flightnode *p=a;passengernode *q=c-next;p=a-next;for(;q-next!=NULL;q=q-next);for(;p!=NULL;p=p-next)if(strcmp(p-air_num,air_num)=0) /比较字符串if(p-left0)printf( nSuccessful for Booking ticket.nn Your flight: %sn Your seat number : %d ,p-air_num,(p-total-p-left+1);printf(n *-*);In

    33、sertPassenger(&q,name,ID_num,air_num,p-total-p-left+1);p-left-; return OK;elseprintf(seat is full);return 0;/*if(strcmp)*/ printf(Sorry,there isnt the plane,please check the airline number!);printf(n *-*);int CancelTicket(passengernode *c,flightnode *l,char *name,char *ID_num) /退票passengernode *p,*p

    34、r;char air_num20;pr=c;p=pr-next;while(p!=NULL)if(strcmp(p-name,name)=0&strcmp(p-ID_num,ID_num)=0)strcpy(air_num,p-air_num);l=modefy_airline(l,air_num);pr-next=p-next;p=pr-next;printf(successful for canceling ticket.);printf(n *-*);return OK;pr=pr-next;p=pr-next;printf(Sorry,there isnt the customer!)

    35、;printf(n *-*);return ERROR;int SearchFlight(flightnode *head) /查询航班flightnode *p=head-next;printf( Flight Start_time Arrival_place Price Total Left_seatnn);for(;p!=NULL;p=p-next)printf( %s %-10s %-9s %-7d%-6d %-6dn,p-air_num,p-start_time,p-end_place,p-price,p-total,p-left);printf(n);printf( *-*nn);return OK;int SearchPassenger(passengernode *head) /查询乘客struct passengernode *q=head-next;printf( Name ID Flight Seat_numbernn);for(;q!=NULL;q=q-next)printf(%-12s %-8s %-5s %dn,q-name,q-ID_num,q-air_num,q-seat_num);printf(n);printf(n *-*);return OK;


    注意事项

    本文(基于C语言的飞机订票系统.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922