当前位置:首页 » 编程语言 » c语言航空订票

c语言航空订票

发布时间: 2022-04-12 23:42:55

1. c语言如何编写飞机订票系统

java">#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
#include<malloc.h>
#include<math.h>//overflow

#defineok1

typedefstructYidingkehu
{//单链表
charname[15];//已订票的客户姓名
intdingpiaoshu;//已订票数量
structYidingkehu*next1;//
}Yidingkehu,*Link;

typedefstructWeidingkehu
{//单链队
charname[15];//预订票的客户姓名
intyudingpiao;//要订票数量
structWeidingkehu*next2;//下一个链队结点指针
}Weidingkehu,*Qptr;

typedefstructHangxian
{//创建一个含有六个信息的结构体
charhangbanhao[15];//航班号-
charfeijihao[15];//飞机号
intfeixingriqi;//起飞时间
intchenkerenshu;//座位数
intyupiao;//余票
charzhongdianzhai[15];//降落城市
structHangxian*next;//指向下一个链结点的指针
structYidingkehu*yiding;//定义一个指向已订票客户的头结点指针
structWeidingkehu*yudingqueue;
}Hangxian,*Linklist;

LinklistInitLinklist();//01
intInsertLinklist(Linklist&head1);//02

voidhbhchaxun();//通过航班号查询
voidmddchaxun();//通过目的地查询

voidlurugongneng();//初始化录入功能
voidchaxungongnen();//查询功能
voiddingpiaogongnen();//订票功能
voidtuipiaogongnen();//退票功能

voidmain()
{

intn;
do{//打印主界面
printf(" 欢迎使用航空客运订票系统 ");
printf(" +++++++++++++++++++++++++++++ ");
printf(" ==>1.录入功能== ");
printf(" ==>2.查询功能== ");
printf(" ==>3.订票功能== ");
printf(" ==>4.退票功能== ");
printf(" ==>5.退出== ");
printf(" +++++++++++++++++++++++++++++ ");
printf(" 请选择:");
scanf("%d",&n);printf(" ");
switch(n)
{
case1:lurugongneng();//录入功能
break;
case2:chaxungongnen();//查询功能
break;
case3:dingpiaogongnen();//订票功能
break;
case4:tuipiaogongnen();//退票功能
break;
default:exit(0);//退出
}
}while(n==1||n==2||n==3||n==4);
}

voidlurugongneng()//初始化的单链表*********************************************************录入功能
{

Linklistp;
//intm,n;
if(!p)exit(OVERFLOW);
printf(" 请依次输入下面几项内容: ");//这里的输入采用一个个单独输入,避免了乱赋值的现象
printf("航班号 ");
gets(p->hangbanhao);//这里的二个gets主要是因为在回车键的输入,其中的第一个是来接收上次的回车
gets(p->hangbanhao);
printf("飞机号 ");
gets(p->feijihao);
printf("终点站 ");
gets(p->zhongdianzhai);
printf("飞行日期 ");
scanf("%d",&p->feixingriqi);
printf("乘客总数 ");
scanf("%d",&p->chenkerenshu);
printf("余票数 ");
scanf("%d",&p->yupiao);

}

voidchaxungongnen()//******************************************************************查询功能
{
intn;
printf(" 查找航线信息 ");
printf(" +++++++++++++++++++++++++++++ ");
printf(" ==>1.通过目的地查询== ");
printf(" ==>2.通过航班号查询== ");
printf(" +++++++++++++++++++++++++++++ ");
printf(" 请选择:");
scanf("%d",&n);
printf(" ");//格式化
switch(n)
{
case1:mddchaxun();
break;
case2:hbhchaxun();
break;
default:break;
}
}

voidmddchaxun()//通过目的地查询
{
charc[15];
intm;
Linklistp=L;
printf(" 请输入要查询的目的地:");
gets(c);
gets(c);//原因同上
do{
p=p->next;
if(p)
{
m=strcmpi((*p).zhongdianzhai,c);//如果==的话则m=0;
if(m==0)
{
printf(" 航班信息: ");
printf(" 航班号:%s ",p->hangbanhao);
printf(" 飞机号:%s ",p->feijihao);
printf(" 飞行时间:周%d ",p->feixingriqi);
printf(" 余票量:%d ",p->yupiao);
}
}
else
{//如果不匹配的话就做
printf(" 对不起没有你要找的目的地: ");m=0;
}
}while(m!=0);
}

voidhbhchaxun()//通过目的地查询
{
charc[15];
intm;
Linklistp=L;
printf(" 请输入要查询的航班号:");
gets(c);gets(c);printf(" ");
do{
p=p->next;
if(p)
{
m=strcmpi((*p).hangbanhao,c);//如果==的话则m=0;这里的(*p).与p->的作用是一样的
if(m==0)
{
printf(" 航班信息: ");
printf(" 航班号:%s ",p->hangbanhao);
printf(" 飞机号:%s ",p->feijihao);
printf(" 飞行时间:周%d ",p->feixingriqi);
printf(" 余票量:%d ",p->yupiao);
}
}
else
{//如果不匹配的话就做
printf(" 对不起没有你要找的航班号: ");m=0;
}
}while(m!=0);
}

voiddingpiaogongnen()//***************************************************************订票功能
{

charc[15];
intm=1,piao,ydpiao=0,yd=0,n;//
gets(c);
printf("请输入终点站名:");gets(c);printf(" ");
p=L->next;
if(p){
do{//查找一下,是否有这个航班
if(!p)
{
printf("对不起,没有你要找的航班: ");
gotoloop1;
}
m=strcmpi(p->zhongdianzhai,c);
if(m==0)
{
printf("航班信息: ");
printf("航班号:%s ",p->hangbanhao);
printf("飞机号:%s ",p->feijihao);
printf("飞行时间:周%d ",p->feixingriqi);
printf("余票量:%d ",p->yupiao);}
elsep=p->next;
}while(m!=0);
if(m==0)
{
do{
printf(" 请输入你要订的票数:");scanf("%d",&piao);
if(piao<=p->yupiao)
{
h=p->yiding;
if(h)
{
h1=h;
h=h->next1;
h=(structYidingkehu*)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("订票成功: ");m=2;
}
}
else
{
printf("余票量:%d ",p->yupiao);
printf("对不起,余票%d张不足,不能完成订票 ",p->yupiao);
printf("是否要重新订票? ");
printf("需要请输入1否则请按2预订请输入3:");
scanf("%d",&m);
printf(" ");
if(m==3)gotoloop3;
}
}while(m==1);
}
}
elseif(!p)
{
loop3:structWeidingkehu*q3;
printf("对不起,该航班的票已售完 ");
q.front=p->yudingqueue;
if(q.front==q.rear)printf("没有人预订票,是否要预订? ");
elseif(q.front!=q.rear)printf("已有人预订票,是否要预订? ");
printf("预订请输入1否则输入2:");
scanf("%d",&n);
printf(" ");
if(n==1)
{

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("你已经预订了! ");
}
}
loop1:;
}

voidtuipiaogongnen()//***************************************************************退票功能
{

}
///////////以下是人家的要求//////////
1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。
2、本系统显示这样的菜单:
(1)输入航班信息
(2)输出航班信息
(3)查找航班信息
a.显示空座的数量
b.显示空座的信息
c.显示已订座的信息
d.起飞时间
(4)订票预约
(5)删除定票预约
(6)退出系统
1、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。
2、查找航班信息既可按线路查,也可按目的地查。
4、在两次运行之间,数据被保存于一个文件里,当本程序重新开
始的时候,它首先从该文件读入数据

2. 飞机订票系统设计 c语言

(已修改,请用最新的代码)代码说明:

1级菜单:选择购买的航班号,并显示对应座位状态。

(我只做测试,所以初始化initFlight函数中我只初始了2个航班,需要自己按照我的代码添)

(注意:实际开发软件,链表数据是从数据库中读取的,需要实时同步,如果要多次调用initFlight函数,记得自己写一个释放内存的函数,把所有链表“SINFO和FLINFO”节点都释放掉,释放函数我没写,需要你自己写!!!)

2级菜单:选择购买对应座位号,完成购买,并实时显示购买结果。

位置编号、座位最大排数、舱室类型、折扣等参数均由常量参数空值,需要修改自行改常量。

注意:舱室类型(我默认3个类型头等舱、公务舱、经济舱)对应折扣参数:tDiscount二维数组。如要如要添加新的舱室类型,必须将参数常量TYPESIZE、typeName、types、tDiscount这4个同时修改,具体看代码备注!!

座位票价=基础票价*类型折扣*时段折扣。

因为飞机不让吸烟,所以我没做吸烟区(笑),如果你需要,可以作为类型自行添加!

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
#include<time.h>
//-----------------------相关参数,想改变,在这里修改!!!!!!!-----------------------------
constfloattimeDiscount=1;//时段折扣,影响所有航班最终价格,默认1
constcharcID[5]="ABCD";//位置编号
constintmaxRow=20;//位置最大排号
//注意:如果修改类型数量,types和tDiscount必须同时修改!!!
#defineTYPESIZE3//类型数量
constchartypeName[TYPESIZE][10]={"头等舱","公务舱","经济舱"};
constinttypes[TYPESIZE][2]={{1,2},{3,4},{5,20}};//排号对应类型。1~2排头等舱,3~4排公务舱,5~20排经济舱
constfloattDiscount[TYPESIZE]={1.5,1.3,1};//类型折扣。头等舱1.5倍,公务舱1.3倍,经济舱1倍

//-------------------------------------------------------------------------------
typedefstructseatInfo//座位信息,一条链表对应一个航班信息,链表顺序从第一排左边第一个开始往后A1~D1,A2~D2。。。
{
charcloID;//位置编号A、B、C、D
introw;//位置排号
inttype;//座位所属类型:0:头等舱、1:公务舱、2:经济舱,不同类型对应不同的类型折扣tDiscount
intsell;//出售状态,0:未出售;1:已出售
structseatInfo*next;
}SINFO;
typedefstructflightInfo//航班信息
{
charfid[10];//航班号
time_ttfTime;//起飞时间
time_tldTime;//降落时间
chartoCity[20];//抵达城市
floattPrice;//基础票价,不同位置具有不同折扣,座位票价=基础票价*类型折扣*时段折扣
structflightInfo*next;
structseatInfo*sHead;//对应座位链表的头节点
}FLINFO;
voidmeError(void*p);
SINFO*getSINFO();//获取座位链表
//addFLINFO:添加航班信息链表的节点flinfoHead:头节点(第一次传NULL会自动生成),flinfoTail:尾节点,fNew:要添加的结构信息(成员指针无需赋值)
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew);//返回尾节点
time_tgetTime_tfromStr(char*sTime);//将YYYY-MM-DDhh:mm:ss格式的时间字符串转换成time_t型数值
FLINFO*initFlight();//初始化航班信息,返回航班链表头节点,如果想手动输入,请在这里添加!!!正常软件开发,这一步应该是从数据库读取!
char*getTString(structtm*tm0);//通过tm获取时间字符串
voidshowSinfo(FLINFO*flinfo);//显示航班对应座位信息
voidprintfFlinfo(FLINFO*flinfoHead);
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid);//选择航班号,返回节点
voidshowSinfo(FLINFO*flinfo);//显示航班对应座位信息
SINFO*selectSinfo(FLINFO*flinfo,char*sid);//选择座位,返回节点
intmain()
{
FLINFO*flinfoHead=initFlight(),*ffSelect=NULL;
SINFO*sfSelect=NULL;
charfid[10]={0},sid[10]={10};
while(1)
{
ffSelect=NULL;
sfSelect=NULL;
memset(fid,0,10);
memset(sid,0,10);
printfFlinfo(flinfoHead);
printf("请输入要购买的航班号:");
scanf("%s",fid);
ffSelect=selectFlinfo(flinfoHead,fid);
if(!ffSelect)
{
printf("未找到对应航班,按任意键继续----- ");
getch();
system("cls");
continue;
}
system("cls");
printf("航班号:%s座位信息如下: ",ffSelect->fid);

showSinfo(ffSelect);
printf("请输入要购买的座位编号(输入0返回主菜单):");
scanf("%s",sid);
if(!strcmp(sid,"0"))
{
system("cls");
continue;
}
else
{
sfSelect=selectSinfo(ffSelect,sid);
if(!sfSelect||sfSelect->sell)
{
printf("未找到对应座位或该座位已出售,请重新输入!按任意键继续----- ");
getch();
system("cls");
continue;
}
printf("购买成功!按任意键继续-----");
sfSelect->sell=1;
getch();
system("cls");
}

}
return0;
}
SINFO*selectSinfo(FLINFO*flinfo,char*sid)//选择座位,返回节点
{
SINFO*sinfoHead=flinfo->sHead;
while(sinfoHead->next)
{
if(sinfoHead->next->cloID==sid[0]&&sinfoHead->next->row==atoi(sid+1))
returnsinfoHead->next;
sinfoHead=sinfoHead->next;
}
returnNULL;
}
voidshowSinfo(FLINFO*flinfo)//显示航班对应座位信息
{
SINFO*sinfoHead=flinfo->sHead,*sfp=NULL;
inti,j,k,row=maxRow,clo=strlen(cID);
chartypeStr[10]={0};
for(i=0;i<row;i++)
{
//---------读取座位所属舱室------------
memset(typeStr,0,10);
for(k=0;k<TYPESIZE;k++)
if(i+1>=types[k][0]&&i+1<=types[k][1])
strcpy(typeStr,typeName[k]);
//--------------------------------------
printf(" ");
for(j=0;j<clo;j++)
printf("-------------");
printf(" ");
sfp=sinfoHead;

for(j=0;j<clo;j++)
{
printf("|%c%02d|",sfp->next->cloID,sfp->next->row);
sfp=sfp->next;
}
printf(" ");
sfp=sinfoHead;
for(j=0;j<clo;j++)
{
printf("|%c|",sfp->next->sell?2:1);
sfp=sfp->next;
}
printf(" ");
sfp=sinfoHead;
for(j=0;j<clo;j++)
{
printf("|%6s:%4.0f|",typeStr,flinfo->tPrice*tDiscount[sfp->next->type]*timeDiscount);
sfp=sfp->next;
}
printf(" ");
sinfoHead=sfp;
}
for(j=0;i<clo;j++)
printf("-------");
printf(" ");

}
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid)//选择航班号,返回节点
{
while(flinfoHead->next)
{
if(!strcmp(flinfoHead->next->fid,fid))
returnflinfoHead->next;
flinfoHead=flinfoHead->next;
}
returnNULL;
}
voidprintfFlinfo(FLINFO*flinfoHead)
{
while(flinfoHead->next)
{
printf("目的地:%s,航班号:%s ----起飞时间:%s,抵达时间:%s ",flinfoHead->next->toCity,flinfoHead->next->fid,getTString(localtime(&flinfoHead->next->tfTime)),getTString(localtime(&flinfoHead->next->ldTime)));
flinfoHead=flinfoHead->next;
}
}
char*getTString(structtm*tm0)//通过tm获取时间字符串
{
char*str=(char*)malloc(sizeof(char)*20),num[5]={0};
meError(str);
memset(str,0,20);
sprintf(num,"%4d",tm0->tm_year+1900);
strcat(str,num);
strcat(str,"-");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_mon);
strcat(str,num);
strcat(str,"-");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_mday);
strcat(str,num);
strcat(str,"");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_hour);
strcat(str,num);
strcat(str,":");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_min);
strcat(str,num);
strcat(str,":");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_sec);
strcat(str,num);
returnstr;
}
time_tgetTime_tfromStr(char*sTime)//将YYYY-MM-DDhh:mm:ss格式的时间字符串转换成time_t型数值
{
time_trt;
structtm*tm1=NULL;
rt=time(NULL);
tm1=localtime(&rt);
sscanf(sTime,("%4d-%2d-%2d%2d:%2d:%2d"),&tm1->tm_year,&tm1->tm_mon,&tm1->tm_mday,&tm1->tm_hour,&tm1->tm_min,&tm1->tm_sec);
tm1->tm_year-=1900;
tm1->tm_mon--;
rt=mktime(tm1);

returnrt;

}
FLINFO*initFlight()//初始化航班信息,返回航班链表头节点,如果想手动输入,请在这里添加!!!正常软件开发,这一步应该是从数据库读取!
{
FLINFO*ffHead=NULL,*flinfoTail=NULL,fNew;
//--------添加一个航班信息----需要增加按照我下面调用方式写--------------------------------
strcpy(fNew.fid,"CI502");
fNew.tfTime=getTime_tfromStr("2019-02-2003:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2005:20:30");
strcpy(fNew.toCity,"台北");
fNew.tPrice=1000;
fNew.next=NULL;
flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
//--------------------------------------------------------------------------------------------
strcpy(fNew.fid,"9C8921");
fNew.tfTime=getTime_tfromStr("2019-02-2014:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2016:40:30");
strcpy(fNew.toCity,"香港");
fNew.tPrice=500;
fNew.next=NULL;
flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
returnffHead;
}
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew)//返回尾节点
//添加航班信息链表的节点flinfoHead:头节点(第一次传NULL会自动生成),flinfoTail:尾节点,fNew:要添加的结构信息(成员指针无需赋值)
{
FLINFO*flinfoHead=*ffHead;
if(flinfoHead==NULL)
{
*ffHead=(FLINFO*)malloc(sizeof(FLINFO));
flinfoHead=*ffHead;
meError(flinfoHead);
flinfoHead->next=NULL;
}
FLINFO*flinfoNew=(FLINFO*)malloc(sizeof(FLINFO));
meError(flinfoNew);
flinfoNew->next=NULL;
flinfoNew->fid[0]=0;
strcpy(flinfoNew->fid,fNew.fid);
flinfoNew->ldTime=fNew.ldTime;
flinfoNew->tfTime=fNew.tfTime;
flinfoNew->toCity[0]=0;
strcpy(flinfoNew->toCity,fNew.toCity);
flinfoNew->tPrice=fNew.tPrice;
flinfoNew->sHead=getSINFO();
if(flinfoHead->next==NULL)
flinfoHead->next=flinfoNew;
else
flinfoTail->next=flinfoNew;
flinfoTail=flinfoNew;
returnflinfoTail;
}
SINFO*getSINFO()//获取座位链表
{
intmaxClo=strlen(cID),cnt=maxClo*maxRow,clo=0,row=1,i;
SINFO*sinfoHead=(SINFO*)malloc(sizeof(SINFO)),*sinfoTail=NULL;
meError(sinfoHead);
sinfoHead->next=NULL;
SINFO*sinfoNew=NULL;
while(cnt--)//按顺序生成对应数量的座位链表
{
if(clo==maxClo)
clo=0,row++;
if(row==maxRow+1)
row=1;

sinfoNew=(SINFO*)malloc(sizeof(SINFO));
meError(sinfoNew);
sinfoNew->cloID=cID[clo];
sinfoNew->row=row;
for(i=0;i<TYPESIZE;i++)
if(row>=types[i][0]&&row<=types[i][1])
{
sinfoNew->type=i;
break;
}
sinfoNew->sell=0;
sinfoNew->next=NULL;
if(sinfoHead->next==NULL)
sinfoHead->next=sinfoNew;
else
sinfoTail->next=sinfoNew;
sinfoTail=sinfoNew;
clo++;
}
returnsinfoHead;
}
voidmeError(void*p)//内存申请失败
{
if(p==NULL)
{
printf(" 异常:内存申请失败!回车结束程序! ");
while(getch()!=' ');
exit(0);
}
}

3. 如何用C++编写一个航空售票系统

#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;
class Tair //通过定义一个类来定义数据录入的函数编写一个航空售票系统。

4. C语言程序写飞机订票系统

#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 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;

Linklist InitLinklist();//01
int InsertLinklist(Linklist &head1);//02

void hbhchaxun();//通过航班号查询
void mddchaxun();//通过目的地查询

void lurugongneng();//初始化录入功能
void chaxungongnen();//查询功能
void dingpiaogongnen();//订票功能
void tuipiaogongnen();//退票功能

void main()
{

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()//初始化的单链表*********************************************************录入功能
{

Linklist p;
//int m,n;
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);

}

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()//***************************************************************订票功能
{

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)
{

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()//***************************************************************退票功能
{

}
请采纳答案,支持我一下。

5. C语言程序设计 飞机订票管理系统

编制一个航班订票系统。应具备如下功能:该航班仅有一架100座飞机;该飞机座位分为吸烟区(30个座位)和无烟区(70个);订票系统界面是选择菜单:1.选吸烟区座位号;2.选无烟区座位号;用户输入自己的选择后,该区若有空位,则顺序地分配一个座号;否则致歉;若吸烟区已满而无烟区有空位,则征求顾客意见,是否愿意得到无烟区的空位,若愿意,则在无烟区分配一个座号,否则致歉退出;顾客不得自主挑选座位号;
#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
#define LIN 31
#define LIE 71
static int smok[LIN];//吸烟区票
static int nosmoke[LIE];//无烟区票
void Initnosmoke();//初始化
void ASK();void Initsmok();
void nosmok();
void smoke();
int search(int *array,int size);
void show();
int main()
{
Initnosmoke();
Initsmok();show();return 0;}void Initnosmoke()//初始化无烟区票{int sun=0;for(int j=0;j<LIE;j++){sun+=1;nosmoke[j]=sun;}}void Initsmok()//初始化吸烟区票{int k=0;for(int i=0;i<LIN;i++){k+=1;smok[i]=k;}}int search(int *array,int size)/*该函数的作用是用来查看系统中某类票是否卖完,入股卖完了返回1,反之返回的是0*/{int i;for(i=0;i<size;i++){if(array[i]!=0){return 0;}else{;}}return 1;}void nosmok()//购买无烟区票{for(int i=0;i<LIE;i++){if(i<LIE-1){if(nosmoke[i]!=0){printf("你票是:NOSMOKE_%d\n",nosmoke[i]);nosmoke[i]=0;break;}else{;}}else{printf("对不起!NOSMOKE票已售完!");}}}void ASK()/*该函数用来询问客户是否需要买NOSMOKE票当SMOKE票卖完的情况下*/{char ask;printf("NOSMOKE票你要吗?(y/n)\n");ask=getchar();if(ask =='y' || ask=='Y' ){nosmok();}else if(ask=='n' || ask=='N'){printf("谢谢!再见\n");}else{printf("输入错误!\n");}}void smoke()//购买吸烟区票{for(int j=0;j<LIN;j++){if(j<LIN-1){if(smok[j]!=0){printf("你票是: SMOKE_%d\n",smok[j]);smok[j]=0;break;}else{;}}else{printf("对不起!SMOKE票已售完!");{fflush(stdin);int rec=search(nosmoke,LIE);if(rec==0){ASK();}else{printf("谢谢!\n");}}}}}void window(){printf("\t\t欢迎使用航班订票系统\n");printf("\t\t1.吸烟区座位\n");printf("\t\t2.无烟区座位\n");printf("\t\t3.退出系统\n");printf("\t\t请选择(1~3)进行操作:\n");}void show(){system("color 4a");char ch=' ';window();while(ch!='3'){fflush(stdin);ch=getchar();switch(ch){case '1':{smoke();break;}case '2':{nosmok();break;}case '3':{break;}default:break;}window();ch=getchar();}}

6. C语言的题目---试设计一个航空客运订票系统

白痴,这个问题至少200分,我以前的比这个简单的200分也没人回答
#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 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;

Linklist InitLinklist();//01
int InsertLinklist(Linklist &head1);//02

void hbhchaxun();//通过航班号查询
void mddchaxun();//通过目的地查询

void lurugongneng();//初始化录入功能
void chaxungongnen();//查询功能
void dingpiaogongnen();//订票功能
void tuipiaogongnen();//退票功能

void main()
{

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()//初始化的单链表*********************************************************录入功能
{

Linklist p;
//int m,n;
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);

}

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()//***************************************************************订票功能
{

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)
{

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()//***************************************************************退票功能
{

}

7. 编写C语言:飞机订票系统

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <conio.h>
#define MAXSIZE 3

typedef struct wat_ros
{
char name[10];
int req_amt;
struct wat_ros *next;
}qnode,*qptr;

typedef struct pqueue
{
qptr front;
qptr rear;
}linkqueue;

typedef struct ord_ros
{
char name[10];
int ord_amt;
int grade;
struct ord_ros *next;
}linklist;

struct airline
{
char ter_name[10]; /* 站点名 */
char air_num[10]; /* 航班号 */
char plane_num[10]; /* 飞机号 */
char date[7]; /* 飞行日期 */
int tkt_amt; /* 乘员定额 */
int tkt_sur; /* 余票量 */
linklist *order;
linkqueue wait;
}lineinfo;

struct airline *start;
struct airline air[MAXSIZE]={
{"beijing", "1", "B8571", "SUN", 3, 1},
{"shanghai","2","S1002","MON",2,5},
{"london","3","L1003","FRI",1,3}
};;

void display(struct airline *info)
{
printf("%8s\t%3s\t%s\t%4s\t\%d\t\%d\t\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur);
}

/* 浏览航线信息函数 */
void list()
{
struct airline *info;
int i = 0;
info = start;
printf("终点站名\t航班号\t飞机号\t飞行日期" "乘员定额" "余票量\n");
while(i < MAXSIZE){
display(info);
info++;
i++;
}
printf("\n\n");
}

void search()
{
struct airline *info,*find();
char name[10];
int i=0;
info=start;
printf("请输入终点站名:");
scanf("%s",name);
while(i<MAXSIZE)
{
if(!strcmp(name,info->ter_name)) break;
info++;
i++;
}
if(i>=MAXSIZE)
printf("对不起,该航线未找到!\n");
else
{
printf("终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n");
display(info);
}
}

struct airline *find()
{
struct airline *info;
char number[10];
int i=0;
info=start;
printf("请输入航班号:");
scanf("%s",number);

while(i<MAXSIZE)
{
if(!strcmp(number,info->air_num)) return info;
info++;
i++;
}
printf("对不起,该航线末找到!\n");
return NULL;
}

/* 浏览已订票客户信息 */
void prtlink()
{
linklist *p;
struct airline *info;
info=find();
p=info->order;

if(p!=NULL){
printf("客户姓名 订票数额 舱位等级\n");
while(p){
printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);
p=p->next;
}
}
else
printf("该航线没有客户信息!!\n");
}

linklist *insertlink(linklist *head,int amount,char name[],int grade)

{ linklist *p1,*new1;
p1=head;
new1=(linklist *)malloc(sizeof(linklist));
if(!new1) {printf("\nOut of memory!!\n");return NULL;}
strcpy(new1->name,name);
new1->ord_amt=amount;
new1->grade=grade;
new1->next=NULL;
if(head==NULL)
{head=new1;new1->next=NULL;}
else
head=new1;
new1->next=p1;
return head;
}

linkqueue appendqueue(linkqueue q,char name[],int amount)

{ qptr new1;
new1=(qptr)malloc(sizeof(qnode));
strcpy(new1->name,name);
new1->req_amt=amount;
new1->next=NULL;
if(q.front==NULL)
q.front=new1;
else
q.rear->next=new1;
q.rear=new1;
return q;
}

void order()

{ struct airline *info;
int amount,grade;
char name[10];
info=start;
if(!(info=find())) return;
printf("请输入你订票所需要的数量:");
scanf("%d",&amount);
if(amount>info->tkt_amt)
{ printf("\n对不起,您输入的票的数量已经超过乘员定额!");
return;
}
if(amount<=info->tkt_sur)
{
int i;
printf("请输入您的姓名(订票客户):");
scanf("%s",name);
printf("请输入%s票的舱位等级:",name);
scanf("%d",&grade);
info->order=insertlink(info->order,amount,name,grade);
for(i=0;i<amount;i++)
printf("%s的座位号是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);
info->tkt_sur-=amount;
printf("\n祝您乘坐愉快!\n");
}
else
{ char r;
printf("\n已经没有更多的票,您需要排队等候吗?(Y/N)");
//r=getch();
//printf("%c",r);
scanf ( "回车继续等待%c", &r );
if(r=='Y'||r=='y')
{ printf("\n请输入您的姓名(排队订票客户):");
scanf("%s",name);
info->wait=appendqueue(info->wait,name,amount);
printf("\n注册成功!\n");
}
else printf("\n欢迎您下次再次订购!\n");
}
}

void return_tkt()

{ struct airline *info;
qnode *t,*back,*f,*r;
int grade;
linklist *p1,*p2,*head;
char cusname[10];
if(!(info=find())) return;
head=info->order;
p1=head;
printf("请输入你的姓名(退票客户):");
scanf("%s",cusname);
while(p1!=NULL) {
if(!strcmp(cusname,p1->name)) break;
p2=p1;p1=p1->next;
}
if(p1==NULL){ printf("对不起,你没有订过票!\n");return;}
else
{
if(p1==head) head=p1->next;
else p2->next=p1->next;
info->tkt_sur+=p1->ord_amt;
grade=p1->grade;
printf("%s成功退票!\n",p1->name);
free(p1);
}

info->order=head;
f=(info->wait).front;
r=(info->wait).rear;
t=f;
while(t)
{
if((info->tkt_sur = info->wait.front->req_amt))
{
int i;
info->wait.front=t->next;
printf("%s订票成功!\n",t->name);
for(i=0;i<t->req_amt;i++)
printf("%s的座位号是:%d\n",t->name,(info->tkt_sur)-i);
info->tkt_sur-=t->req_amt;
info->order=insertlink(info->order,t->req_amt,t->name,grade);
free(t);
break;
}
back=t;t=t->next;
if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)
{ int i;
back->next=t->next;
printf("%s订票成功!\n",t->name);
for(i=0;i<t->req_amt;i++)
printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i);
info->tkt_sur-=t->req_amt;
info->order=insertlink(info->order,t->req_amt,t->name,grade);
free(t);break;
}
if(f==r) break;
}
}

void sort_tkt()
{
int j;
struct airline t,*info,*p,*q;
p=info=air;
for(p=info;(p+1)->tkt_sur;p++)
for(q=p+1;q->tkt_sur;q++)
{
if(p->tkt_sur<q->tkt_sur)
{
t=*p;
*p=*q;
*q=t;
}
}
printf("终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n");
for(j=0;j<MAXSIZE;j++)
{
display(info);
info++;
}

}

int menu_select()
{
int c;
char s[20];
printf("\n\t\t 航空客运订票系统(by zjhxmjl)\n");
printf(" ******************************************\n");
printf(" ** 1.浏览航线信息 **\n");
printf(" ** 2.浏览已订票客户信息 **\n");
printf(" ** 3.查询航线 **\n");
printf(" ** 4.办理订票业务 **\n");
printf(" ** 5.办理退票业务 **\n");
printf(" ** 6.查看剩余票数并排序 **\n");
printf(" ** 0.退出系统 **\n");
printf(" *******************************************\n");
do
{
printf("请选择:");
scanf("%s",s);
c = atoi(s); /* atoi将字符串转换为整型 */
}while(c < 0||c > 7);
return c;
}

int main()
{
start = air;
for(;;)
{
switch(menu_select())
{
case 1:list();break;
case 2:prtlink();break;
case 3:search();break;
case 4:order();break;
case 5:return_tkt();break;
case 6:sort_tkt();break;
case 0:printf("\n欢迎使用本系统,再见!\n");exit(0);
}
printf("\nPress any key to continue!\n");
getchar();
}
return 0;
}

8. C语言设计飞机订票系统

你是要别人帮你做?还是...

9. 求大神解决。C语言程序设计课题,飞机订票系统

这就是最简单的一个sturct或者class应运啊!自己定义下,慢慢理顺就好了!很简单的

热点内容
压缩段的作 发布:2025-01-20 07:04:13 浏览:377
安卓studio字体如何居中 发布:2025-01-20 07:04:13 浏览:150
edge浏览器无法访问 发布:2025-01-20 06:52:57 浏览:329
c语言inline函数 发布:2025-01-20 06:45:43 浏览:746
安卓手机如何把锁屏时间去掉 发布:2025-01-20 06:34:16 浏览:434
linux卸载jdk17 发布:2025-01-20 06:33:29 浏览:230
猿编程使用 发布:2025-01-20 06:17:58 浏览:452
编译lichee 发布:2025-01-20 06:16:33 浏览:156
f5算法 发布:2025-01-20 06:11:39 浏览:255
吃鸡游戏服务器被锁怎么办 发布:2025-01-20 06:04:21 浏览:176