#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()//***************************************************************退票功能
{
}
请采纳答案,支持我一下。
首先必须明确的是,并不是所有的火车票都可以选座位。目前12306只支持C、D、G字头的动车组列车选座,且此功能只能提供相邻座位的关系选择,如果余票不多不能满足需求时,则由系统自动分配座位。
具体 *** 作步骤如下:1、打开12306手机客户端,输入始发站和到达站,然后点击查询。
2、出现符合条件的车次列表之后,选择具体乘坐的车次。(图中选择的车次是G666)
3、在“确认订单”页面,选择座位级别(图中选的是一等座),然后点击“添加乘客”。
4、在“添加乘客”页面,勾选乘车人。然后回到“确认订单”页面。
5、点击“选座服务”,这是关键的一步。如果直接点击“提交订单”,将不会出现选座菜单,而由系统自动分配座位。
6、点击“选座服务”后,屏幕下方出现选座 *** 作框。
7、根据自己的喜好选择靠窗位置还是靠过道的位置。图中选择了靠窗位置。选中后,座位的颜色变成蓝色。
8、点击“确定”后,出现了是否购买乘车意外险的提示,根据需要决定是否购买。本人都是选择“不购”。
9、点击后出现支付画面。必须在30分钟之内完成支付,否则预定的座位将被收回。
10、点击“立即支付”,出现支付画面。
11、选择支付方式。从2017年11月23号开始,微信支付也正式接入12306购票平台,为我们提供了更多的支付选项。图中选择支付宝支付,然后点击下方的“提交支付”。
12、出现确认支付画面,点击“立即付款”,根据提示进行支付。支付完成后,将会出现付款成功的通知。
至此购票完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)