航空客运订票系统数据结构课程设计_第1页
航空客运订票系统数据结构课程设计_第2页
航空客运订票系统数据结构课程设计_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <stdio.h> #include <string.h> #include <stdlib.h>#include <math.h>#define ok 1typedef struct Yidingkehu/ 单链表 char name15;/ 已订票的客户姓名 int dingpiaoshu;/ 已订票数量 struct Yidingkehu *next1;Yidingkehu,*Link;typedef struct Weidingkehu/ 单链队 char name15;/ 预订票的客户姓名 int yudingpiao

2、;/ 要订票数量 struct Weidingkehu *next2;/ 下一个链队结点指针Weidingkehu,*Qptr;typedef struct Qptr front;/ 单链队头结点 Qptr rear;/ 单链队尾结点linkQueue;typedef struct Hangxian/ 创建一个航线的结构体 char hangbanhao15;/ 航班号 - char feijihao15;/ 飞机号 int feixingriqi;/ 起飞时间 int level;/ 仓位 int yupiao;/ 余票 char zhongdianzhan15;/ 降落城市 struct

3、Hangxian *next;/ 指向下一个链结点的指针 struct Yidingkehu *yiding;/ 定义一个指向已订票客户的头结点指针 struct Weidingkehu *yudingqueue;Hangxian,*Linklist;struct Hangxian *L=NULL;/ 定义全局量 struct Yidingkehu *H;/ 为已订票客户链队来申请空间 linkQueue Q;/linkQueue 类型的来申请空间Linklist InitLinklist();/ 声明 int InsertLinklist(Linklist &head1);/ 声明v

4、oid hbhchaxun();/ 通过航班号查询 void mddchaxun();/ 通过目的地查询void lurugongneng();/ 初始化录入功能 void chaxungongnen();/ 查询功能 void dingpiaogongnen();/ 订票功能 void tuipiaogongnen();/ 退票功能void main()H=(struct Yidingkehu*)malloc(sizeof(Yidingkehu); Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu); InitLinklist();int n;do

5、 / 打印主界面printf("t 欢迎使用航空客运订票系统 n"); printf("t+n");printf("t=>1.录入功能=n");printf("t=>2.查询功能=n");printf("t=>3.订票功能=n");printf("t=>4.退票功能=n");printf("t=>5.退出=n");printf("t+n");printf("t 请选择: ");scanf

6、("%d",&n);printf("n");switch(n)case 1: lurugongneng();/ 录入功能break;case 2: chax ungongnen();/ 查询功能 break;case 3: din gpiaogo ngnen(); 订票功能break;case 4:tuipiaogo ngnen();/ 退票功能break;default :exit(0);/ 退出while(n=1|n=2|n=3|n=4);voidlurugongneng()/初始化的单链表录入功能*int j=1,m;doif(!Inser

7、tLinklist(Linklist) L) / 向其中加入航班信息printf(" 内存已满 n"); exit(OVERFLOW);/ 向链表中加一结点printf("t 是否要输入下一个航线记录 ?n");printf("t 是请输入 1n");printf("t 否请输入 2nt");scanf("%d",&m); / 在这里依靠人来决定是否输入下一条航线记 while(m=1);Linklist InitLinklist()L=(Linklist)malloc(sizeof(H

8、angxian);if(!L) exit(OVERFLOW);L->next=NULL;/ 建立一个带有头结点的单链表return (L);int InsertLinklist(Linklist &L)/ 向航线链表添加新的结点Linklist p;p=(Linklist)malloc(sizeof(Hangxian);/ 为一个新的结点分配空间if(!p) exit(OVERFLOW);printf("t 请依次输入下面几项内容: nn");/ 这里的输入采用一个个单独输入, 避免了乱 赋值的现象printf(" 航班号 n"); sca

9、nf("%s",p->hangbanhao);printf(" 飞机号 n"); scanf("%s",p->feijihao);printf(" 终点站 n"); scanf("%s",p->zhongdianzhan);printf(" 飞行日期 n"); scanf("%d",&p->feixingriqi);printf(" 仓位 n");scanf("%d",&p-&

10、gt;level);printf(" 余票数 n");scanf("%d",&p->yupiao);p->yiding=(Yidingkehu*)malloc(sizeof(Yidingkehu);/ 为它申请空间 p->yudingqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu);/ 为它申请空间 p->next=L->next;L->next=p;/ 这二句是链表中的插入一个结点return (ok);void chaxungongnen()/* *

11、 查询功能int n;printf("t 查 找 航 线 信 息 n"); printf("t+n"); printf("t=>1.通过目的地查询=n");printf("t=>2.通过航班号查询=n");printf("t+n");printf("t 请选择: n");scanf("%d",&n);switch(n)case 1:mddchaxun();break;case 2:hbhchaxun();break;default :b

12、reak;void mddchaxun()/ 通过目的地查询char c15;Linklist p=L;int m;printf("t 请输入要查询的目的地 :n");scanf("%s",c);dop=p->next;if(p)if(strcmpi(*p).zhongdianzhan,c)=0)printf("t 航班信息 :n");printf("t 航班号 :%sn",p->hangbanhao);printf("t 飞机号 :%sn",p->feijihao);prin

13、tf("t 飞行时间 :周 %dn",p->feixingriqi); printf("t 余票量 :%dn",p->yupiao);else/ 如果不匹配的话就做printf("t 对不起没有你要找的目的地 :nn"); m=0;while(m!=0);void hbhchaxun()/ 通过目的地查询char c15;Linklist p=L;int m;printf("t 请输入要查询的航班号: n");scanf("%s",c);dop=p->next;if(p)if(

14、strcmpi(*p).hangbanhao,c)=0)printf("t 航班信息 :n");printf("t 航班号 :%sn",p->hangbanhao);printf("t 飞机号 :%sn",p->feijihao);printf("t 飞行时间 :周 %dn",p->feixingriqi);printf("t 余票量 :%dnn",p->yupiao);else/ 如果不匹配的话就做printf("t 对不起没有你要找的航班号 :n"

15、); m=0;while(m!=0);void dingpiaogongnen()/* *订票功能Linklist p=L;/Linklist 类型的 L 来指向链表头Yidingkehu *h=H,*h1;/Yidingkehu 定义客户的结点,方便插入与删除 linkQueue q=Q;/linkQueue 类型的来 ,方便插入与删除 struct Weidingkehu *q3;char c15;int m=1,piao,n;int ydpiao=0,yd=0;printf(" 请输入终点站名 :n");scanf("%s",c);p=L->

16、next;if(p) do/ 查找一下,是否有这个航班if(!p)printf(" 对不起,没有你要找的航班: nn"); /goto loop1;m=strcmpi(p->zhongdianzhan,c);/通过比较来判定if(m=0)printf(" 航班信息: n");printf(" 航班号 :%sn",p->hangbanhao); printf(" 飞机号 :%sn",p->feijihao);printf(" 飞行时间 :周 %dn",p->feixingr

17、iqi); printf(" 余票量 :%dn",p->yupiao);elsep=p->next;while(m!=0);if(m=0)/ 当有该航班时,进行订票doprintf("n 请输入你要订的票数 :n"); scanf("%d",&piao);if(piao<=p->yupiao)h=p->yiding;if(h)h1=h;h=h->next1;h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu); printf(" 请输入你的

18、名字 :n");scanf("%s",h->name);h->dingpiaoshu=piao;h->next1=h1->next1;h1->next1=h;p->yupiao=p->yupiao-piao; printf(" 订票成功: n");m=2;else /余票量不足时printf(" 余票量 :%dn",p->yupiao);printf(" 对不起,余票 %d 张不足,不能完成订票 n",p->yupiao); printf("

19、 是否要重新订票 ?n");printf(" 需要请输入 1 否则请按 2 预订请输入 3 : n"); scanf("%d",&m);while(m=3)printf(" 对不起,该航班的票已售完 n");q.front=p->yudingqueue;if(q.front=q.rear)printf(" 没有人预订票,是否要预订 ?n");else if(q.front!=q.rear)printf(" 已有人预订票,是否要预订 ?n"); printf("

20、预订请输入 1 否则输入 2 : n"); scanf("%d",&n);if(n=1)q3=(Qptr)malloc(sizeof(Weidingkehu);printf(" 请输入你的姓名 n"); scanf("%s",q3->name); printf(" 请输入订票数 n"); scanf("%d",&q3->yudingpiao); q3->next2=NULL; q.rear->next2=q3;q.rear=q3;printf(&

21、quot; 你已经预订了 !n");while(m=1);void tuipiaogongnen()/* 退票功能Linklist p=L;Yidingkehu *h=H,*h1,*h2;linkQueue q=Q;char c15,name115;int m=1,piao,n;/ 定义相应变量printf(" 请输入航班号 :n");scanf("%s",c);p=L->next;if(p)do / 使用 do while 来查找是否有此航班if(!p)/ 如果是到了表尾且没有匹配,printf("n 对不起,没有你要找的航班

22、: n");if(strcmpi(p->hangbanhao,c)=0)/ 比较航班号 输出信息printf("t 航班信息: n");printf(" 航班号 :%sn",p->hangbanhao);printf(" 飞机号 :%sn",p->feijihao); printf(" 飞行时间 : 周 %dn",p->feixingriqi);printf(" 余票量 :%dn",p->yupiao);m=0;else p=p->next;whil

23、e(m!=0);if(m=0)/ 如果找到了,就来给他退票doh=p->yiding;if(h)printf(" 请输入你的姓名 :n");scanf("%s",name1);printf(" 请输入你订的票数 :n");scanf("%d",&piao);h1=h;如果名字和h=h->next1; if(strcmpi(h->name,name1)=0&&h->dingpiaoshu=piao)/ 订的票数相等,则就给他取消订票p->yupiao+=h->dingpiaoshu;h2=h; h1->next1=h->next1;free(h2);printf(" 你取消订票成功 n");struct Weidingkehu *q3;q.front=p->yudingqueue;if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论