首页 > 旅游知识 > 旅游百宝箱 > 数据结构航空订票系统(数据结构航班订票系统)

数据结构航空订票系统(数据结构航班订票系统)

旅游百宝箱 2023-06-11 01:00:14

【 xiumi360.com - 旅游百宝箱 】

本文目录一览:

  • 1、数据结构课程设计——航空订票系统(C语言)
  • 2、数据结构 航空客运订票的业务活动包括
  • 3、数据结构实习 C语言 航空订票系统

数据结构课程设计——航空订票系统(C语言)

1、任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。2、功能要求:1) 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3) 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4) 退票: 可退票,退票后修改相关数据文件;5) 客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;6) 修改航班信息:当航班信息改变可以修改航班数据文件。 3、要有一个好的界面~~~~~~~~~~~~~~~~~~~~~~~~4、需求分析系统需求(系统要求实现的功能的具体情况)5、 概要设计系统分析(分析系统的功能和具体模块的划分)系统流程(系统的流程图)程序详细代码:

数据结构 航空客运订票的业务活动包括

#include stdio.h

#include string.h

#include conio.h

#include ctype.h

#include stdlib.h

#include malloc.h

#include math.h//overflow

#define ok 1

typedef struct Yidingkehu{//单链表

char name[15];//已订票的客户姓名

int dingpiaoshu;//已订票数量

struct Yidingkehu *next1;//

}Yidingkehu,*Link;

typedef struct Weidingkehu{//单链队

char name[15];//预订票的客户姓名

int yudingpiao;// 要订票数量

struct Weidingkehu *next2;//下一个链队结点指针

}Weidingkehu,*Qptr;

typedef struct {

Qptr front;//单链队头结点

Qptr rear;//单链队尾结点

}linkQueue;

typedef struct Hangxian{//创建一个含有六个信息的结构体

char hangbanhao[15];//航班号-

char feijihao[15];//飞机号

int feixingriqi;//起飞时间

int chenkerenshu;//座位数

int yupiao;//余票

char zhongdianzhai[15];//降落城市

struct Hangxian *next;//指向下一个链结点的指针

struct Yidingkehu *yiding;//定义一个指向已订票客户的头结点指针

struct Weidingkehu *yudingqueue;

}Hangxian,*Linklist;

struct Hangxian *L=NULL;//

struct Yidingkehu *H;//为已订票客户链队来申请空间

linkQueue Q;//linkQueue类型的来申请空间

Linklist InitLinklist();//01

int InsertLinklist(Linklist head1);//02

void 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{ //打印主界面

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("%d",n);printf("/n");

switch(n)

{

case 1: lurugongneng();//录入功能

break;

case 2: chaxungongnen();//查询功能

break;

case 3: dingpiaogongnen();//订票功能

break;

case 4:tuipiaogongnen();//退票功能

break;

default :exit(0);//退出

}

}while(n==1||n==2||n==3||n==4);

}

void lurugongneng()//初始化的单链表*********************************************************录入功能

{

int j=1,m;

do{

if(!InsertLinklist((Linklist) L)) //向其中加入航班信息

{

printf("内存已满/n"); exit(OVERFLOW);

}//向链表中加一结点

printf("/t是否要输入下一个航线记录?/n");

printf("/t是请输入1/n");

printf("/t否请输入2/n/t");

scanf("%d",m); //在这里依靠人来决定是否输入下一条航线记

}while(m==1);

}

Linklist InitLinklist(){//01

L=(Linklist)malloc(sizeof(Hangxian));

if(!L) exit(OVERFLOW);

L-next=NULL;//建立一个带有头结点的单链表

return (L);

}

int InsertLinklist(Linklist L)//02向航线链表添加新的结点

{

Linklist p;

//int m,n;

p=(Linklist)malloc(sizeof(Hangxian));//为一个新的结点分配空间

if(!p) exit(OVERFLOW);

printf("/t请依次输入下面几项内容:/n/n");//这里的输入采用一个个单独输入,避免了乱赋值的现象

printf("航班号/n");

gets(p-hangbanhao);//这里的二个gets主要是因为在回车键的输入,其中的第一个是来接收上次的回车

gets(p-hangbanhao);

printf("飞机号/n");

gets(p-feijihao);

printf("终点站/n");

gets(p-zhongdianzhai);

printf("飞行日期/n");

scanf("%d",p-feixingriqi);

printf("乘客总数/n");

scanf("%d",p-chenkerenshu);

printf("余票数/n");

scanf("%d",p-yupiao);

p-yiding=(struct 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()//******************************************************************查询功能

{

int n;

printf("/t 查 找 航 线 信 息 /n");

printf("/t+++++++++++++++++++++++++++++/n");

printf("/t==1. 通过目的地查询 ==/n");

printf("/t==2. 通过航班号查询 ==/n");

printf("/t+++++++++++++++++++++++++++++/n");

printf("/t请选择:");

scanf("%d",n);

printf("/n");//格式化

switch(n)

{

case 1:mddchaxun();

break;

case 2:hbhchaxun();

break;

default :break;

}

}

void mddchaxun()//通过目的地查询

{

char c[15];

int m;

Linklist p=L;

printf("/t请输入要查询的目的地:");

gets(c);

gets(c);//原因同上

do{

p=p-next;

if(p)

{

m=strcmpi((*p).zhongdianzhai,c);//如果==的话则m=0;

if(m==0)

{

printf("/t航班信息:/n");

printf("/t航班号:%s/n",p-hangbanhao);

printf("/t飞机号:%s/n",p-feijihao);

printf("/t飞行时间:周%d/n",p-feixingriqi);

printf("/t余票量:%d/n",p-yupiao);

}

}

else

{//如果不匹配的话就做

printf("/t对不起没有你要找的目的地:/n/n"); m=0;

}

}while(m!=0);

}

void hbhchaxun()//通过目的地查询

{

char c[15];

int m;

Linklist p=L;

printf("/t请输入要查询的航班号:");

gets(c); gets(c);printf("/n");

do{

p=p-next;

if(p)

{

m=strcmpi((*p).hangbanhao,c);//如果==的话则m=0;这里的(*p).与p-的作用是一样的

if(m==0)

{

printf("/t航班信息:/n");

printf("/t航班号:%s/n",p-hangbanhao);

printf("/t飞机号:%s/n",p-feijihao);

printf("/t飞行时间:周%d/n",p-feixingriqi);

printf("/t余票量:%d/n/n",p-yupiao);

}

}

else

{//如果不匹配的话就做

printf("/t对不起没有你要找的航班号:/n"); m=0;

}

}while(m!=0);

}

void dingpiaogongnen()//***************************************************************订票功能

{

Linklist p=L;//Linklist类型的L来指向链表头

Yidingkehu *h=H,*h1;//Yidingkehu 定义客户的结点,方便插入与删除

linkQueue q=Q;//linkQueue类型的来 ,方便插入与删除

char c[15];

int m=1,piao,ydpiao=0,yd=0,n;//

gets(c);

printf("请输入终点站名:"); gets(c); printf("/n");

p=L-next;

if(p) {

do{//查找一下,是否有这个航班

if(!p)

{

printf("对不起,没有你要找的航班:/n/n");

goto loop1;

}

m=strcmpi(p-zhongdianzhai,c);

if(m==0)

{

printf("航班信息:/n");

printf("航班号:%s/n",p-hangbanhao);

printf("飞机号:%s/n",p-feijihao);

printf("飞行时间:周%d/n",p-feixingriqi);

printf("余票量:%d/n",p-yupiao);}

else p=p-next;

}while(m!=0);

if(m==0)

{

do{

printf("/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("请输入你的名字:");

gets(h-name);gets(h-name);

h-dingpiaoshu=piao;

h-next1=h1-next1;

h1-next1=h;

p-yupiao=p-yupiao-piao;

printf("订票成功:/n"); m=2;

}

}

else

{ printf("余票量:%d/n",p-yupiao);

printf("对不起,余票 %d 张不足,不能完成订票/n/n",p-yupiao);

printf(" 是否要重新订票?/n");

printf("需要请输入1 否则请按2 预订请输入3 : ");

scanf("%d",m);

printf("/n");

if(m==3) goto loop3;

}

}while(m==1);

}

}

else if(!p) {

loop3: struct Weidingkehu *q3;

printf("对不起,该航班的票已售完/n");

q.front=p-yudingqueue;

if(q.front==q.rear) printf("没有人预订票,是否要预订?/n");

else if(q.front!=q.rear) printf("已有人预订票,是否要预订?/n");

printf("预订请输入1 否则输入2 : ");

scanf("%d",n);

printf("/n");

if(n==1)

{

q3=(Qptr)malloc(sizeof(Weidingkehu));

printf("请输入你的姓名"); gets(q3-name); gets(q3-name);//q3不能指向name???

printf("请输入订票数"); scanf("%d",q3-yudingpiao);

q3-next2=NULL;

q.rear-next2=q3;

q.rear=q3;

printf(" 你已经预订了 !/n");

}

}

loop1:;

}

void tuipiaogongnen()//***************************************************************退票功能

{

Linklist p=L;

Yidingkehu *h=H,*h1,*h2;

linkQueue q=Q;

char c[15],name1[15];

int m=1,piao,n;//

gets(c);

printf("请输入航班号:"); gets(c);

p=L;//-next;

if(p)

{

do{ //使用do while来查找是否有此航班

if(!p)

{//如果是到了表尾且没有匹配,goto至再输入航班号

printf("/n对不起,没有你要找的航班:/n");

goto loop1;

}

m=strcmpi(p-hangbanhao,c);//如果匹配的话,m=0

if(m==0)

{

printf("/t航班信息:/n");

printf("航班号:%s/n",p-hangbanhao);

printf("飞机号:%s/n",p-feijihao);

printf("飞行时间:周%d/n",p-feixingriqi);

printf("余票量:%d/n",p-yupiao);}

else p=p-next;

}while(m!=0);

if(m==0)

{//如果找到了,就来给他退票

do{

h=p-yiding;

if(h)

{

printf("请输入你的姓名:");

gets(name1);//gets(name1);

printf("请输入你订的票数:");

scanf("%d",piao);

printf("/n");

h1=h;

h=h-next1;

if(strcmpi(h-name,name1)==0h-dingpiaoshu==piao)//如果名字和订的票数相等,则就给他取消订票

{

p-yupiao+=h-dingpiaoshu;

h2=h;

h1-next1=h-next1;

free(h2);

printf("你取消订票成功:/n/n");

struct Weidingkehu *q3;

q.front=p-yudingqueue;

if(q.front==q.rear) {printf("没有人预订票:/n"); goto loop1;}

if((p-yupiao)=(q.front-next2-yudingpiao))

{

h2=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));

strcpy(h2-name,q.front-next2-name);

h2-dingpiaoshu=q.front-next2-yudingpiao;

n=p-yupiao-q.front-next2-yudingpiao;

p-yupiao=n;

q3=Q.front-next2;//

q.front-next2=q3-next2;//这二语句来删除结点

if(q.rear==q3) q.rear=q.front;

free(q3);//释放空间

printf("链队中删除成功/n");

h2-next1=h-next1;

h-next1=h2;//为之插入进已订票客户链表中

printf("为预订的客户订票成功/n");

}

else printf("余票数不够,不能为预订客户订票!/n");

}

else

{ //如果没有找到,即系统中没有该人的信息,提示是否来重新查找

printf("对不起,该航班没有人订票或者是你没有订该航班的票/n");

printf("是否要重新查找并取消订票?/n");

printf("需要请输入1 否则请按2 ");

scanf("%d",m);

printf("/n");

}

}

}while(m==1);

}

}

loop1: ;

}

数据结构航空订票系统(数据结构航班订票系统)-第1张图片-秀米网(xiumi360.com)

数据结构实习 C语言 航空订票系统

代码如下:(但是不是跟你的要求完全相同,你改改吧!)

#include stdio.h

#include string.h

#include stdlib.h

#define NAME_MAX 100//书的名字的最长字数

#define WRITER_MAX 100//作者名字的最长

#define PUB_MAX 100//出版单位最长名字

#define TIME 100//出版时间

typedef struct books

{

int loading;

char name[NAME_MAX];

char writer[WRITER_MAX];

int identify;

char pub[PUB_MAX];

char time[TIME];

int price;

struct books * next;

}book;

//头结点不存储信息

void Init(book * head)

{

head-next=NULL;

}

//打印一些欢迎词之类的。。。。。

void welcome()

{

printf("******欢迎使用@@@@图书馆,哈哈*********/n");

printf("/n/n");

printf("1:图书信息录入功能/n");

printf("2:图书信息浏览功能,显示该书的所有信息/n");

printf("3:图书信息查询功能:按书名查询与按作者名查询/n");

printf("4:图书信息的修改和删除,可对相应数据进行修改和删除/n");

}

//显示一本书的信息

void print_the_book(book * p1)

{

printf("loading number:%d /n",p1-loading);

printf("name: ");

puts(p1-name);

printf(" /n");

printf("writer: ");

puts(p1-writer);

printf(" /n");

printf("identify:%d ***/n",p1-identify);

printf(" /n");

printf("pub: ");

puts(p1-pub);

printf(" /n");

printf("time: ");

puts(p1-time);

printf(" /n");

printf("price:%d ***/n",p1-price);

}

int chongfu(book * head,book * p)

{

book * p1=head-next;

int a=0;

while(p1!=NULL)

{

if(strcmp(p1-name,p-name)==0)

{

if(strcmp(p1-writer,p-writer)==0)

{

a=1;

break;

}

}

else

p1=p1-next;

}

return a;

}

//录入一些信息。。。。

void luru(book * head)

{

book * p1=head;

book * p2;

//寻找NULL前的那个点

while(p1-next!=NULL)

{

p1=p1-next;

}

int a;

do

{

p2=(book *)malloc(sizeof(book));

printf("输入书本信息/n");

printf("登录号/n");

fflush(stdin);

scanf("%d",p2-loading);

printf("书名/n");

fflush(stdin);

gets(p2-name);

fflush(stdin);

printf("作者/n");

gets(p2-writer);

fflush(stdin);

printf("分类号/n");

scanf("%d",p2-identify);

fflush(stdin);

printf("出版社/n");

gets(p2-pub);

fflush(stdin);

printf("出版时间/n");

gets(p2-time);

fflush(stdin);

printf("价格/n");

scanf("%d",p2-price);

p2-next=NULL;

fflush(stdin);

//加入链表

if(chongfu(head,p2))

printf("录入信息重复/n");

else

{

p1-next=p2;

p1=p2;

}

printf("还想继续录入信息吗?/n(1:继续 0:停止)/n");

scanf("%d",a);

}while(a==1);

}

void liulan(book * head)

{

book * p1=head-next;

int i=1;

while(p1!=NULL)

{

printf("*********第%d本书***********/n",i++);

print_the_book(p1);

p1=p1-next;

}

}

//查询。。。。

void chaxun(book * head)

{

printf("按书名查询还是按作者名查询?/n(1:按书名查询 0:按作者名查询)/n");

book * p=head-next;

int a;

scanf("%d",a);

int num=0;

char cha[NAME_MAX];

switch(a)

{

case 1:

printf("输入书名:/n");

gets(cha);

while(p!=NULL)

{

if(strcmp(p-name,cha)==0)

{

num++;

print_the_book(p);

}

p=p-next;

}

break;

case 2:

printf("输入作者名:/n");

gets(cha);

while(p!=NULL)

{

if(strcmp(p-writer,cha)==0)

{

num++;

print_the_book(p);

}

p=p-next;

}

}

if(num==0)

printf("无符合书本/n");

}

//修改信息

void xiugai(book * head)

{

printf("输入需要修改书本的名称和作者:/n");

char name_book[NAME_MAX];

char writer_book[WRITER_MAX];

printf("书本名称:");

gets(name_book);

gets(writer_book);

book * p1=head-next;

int a=0;

while(p1!=NULL)

{

if(strcmp(p1-name,name_book)==0)

{

if(strcmp(p1-writer,writer_book)==0)

{

a=1;

break;

}

}

}

if(a==0)

printf("没有这本书。。。/n");

else

{

print_the_book(p1);

printf("输入新信息/n");

scanf("%d",p1-loading);

gets(p1-name);

gets(p1-writer);

scanf("%d",p1-identify);

gets(p1-pub);

gets(p1-time);

scanf("%d",p1-price);

}

}

void main()

{

book * head;

head=(book *)malloc(sizeof(book));

Init(head);

int contin=1;

while(contin)

{

welcome();

printf("想进行哪项操作?/n");

int a;

scanf("%d",a);

switch(a)

{

case 1:

luru(head);

break;

case 2:

liulan(head);

break;

case 3:

chaxun(head);

break;

case 4:

xiugai(head);

}

printf("继续使用图书馆还是退出?/n(1:continue 0:exit)/n");

scanf("%d",contin);

}

}

免责声明:本文内容源自网络,由用户上传,版权归原作者所有,本站不存储mp3等牵扯版权的文件,文字如有侵权请联系删除!


本文地址:http://www.xiumi360.com/lvyou/10282.html

© 2022-2023 All Rights Reserved

秀米生活常识 版权所有

QQ联系方式:vip@xiumi360.com    [tags标签大全]