#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()//***************************************************************退票功能
{
}
请采纳答案,支持我一下。
#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=new1new1->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=0i<amounti++)
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=p1p1=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=0i<t->req_amti++)
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=tt=t->next
if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)
{ int i
back->next=t->next
printf("%s订票成功!\n",t->name)
for(i=0i<t->req_amti++)
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_surp++)
for(q=p+1q->tkt_surq++)
{
if(p->tkt_sur<q->tkt_sur)
{
t=*p
*p=*q
*q=t
}
}
printf("终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n")
for(j=0j<MAXSIZEj++)
{
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
}
#include <iostream>#include <string.h>
#include <stdio.h>
using namespace std
int main()
//*****************************************
void dingpiao()
{
cout<<"欢迎您订购飞机票!"<<endl
cout<<"非常感谢!"<<endl
cout<<"我们将为您提供最优质的服务!"<<endl
cout<<" 0返回上级菜单 "<<endl
int i=0
while(i)
{
cout<<"请选择按键(0):"
cin>>i
if(i!=0)
cout<<" 0返回上级菜单 "<<endl
}
}
void tuipiao()
{
cout<<"您可以退飞机票!"<<endl
cout<<"无论何时"<<endl
cout<<"我们都会为您提供最优质的服务!"<<endl
cout<<" 0返回上级菜单 "<<endl
int i=0
while(i)
{
cout<<"请选择按键(0):"
cin>>i
if(i!=0)
cout<<" 0返回上裤肆级菜单 "<<endl
}
}
void watch()
{
cout<<"您现在可以查看航空公司的票务情况!"<<endl
cout<<"无论何时"<<endl
cout<<"我们都会为您提供最优质的服务!"<<endl
cout<<" 0返回上级菜单 "<<endl
int i=0
while(i)
{
cout<<"请选择按键(0):"
cin>>i
if(i!=0)
cout<<" 0返回上级菜单 "<<endl
}
}
void browseticket()
{
cout<<"您可以查询航空公司的飞机航线信息!"<<endl
cout<<"无论何时"<<endl
cout<<"我们都会为您提供最优质的服务!"<<endl
cout<<" 0返回上级菜单 "<<endl
int i=0
while(i)
{
cout<<"请选择按键(0):"
cin>>i
if(i!=0)
cout<<" 0返回上级菜单 "<<endl
}
}
void change()
{
cout<<"您现在可以修改航班山锋信息(当修改信息不存在时,不运行)!"<<endl
cout<<"无论何时"<<endl
cout<<"我们都会为您提供最优质的服务!"<<endl
cout<<" 0返回上级菜单 "<<endl
int i=0
while(i)
{
cout<<"请选择按键(0):"
cin>>i
if(i!=0)
cout<<" 0返回上级菜单 "<<endl
}
}
void fn()
{
int i=1
while(i)
{
cout<<endl<<endl
cout<<"输入航班信息:"<<endl<<endl
cout<<" 1订购机票(航班号为0结束输入) "<<endl
cout<<" 2反退机票 "<<endl
cout<<" 3查看航班信息 "<<endl
cout<<" 4查询航班信息 "<<endl
cout<<" 5修改航班信息 "<<endl
cout<<" 0返回主页面 "<<endl
cout<<"请选择按键(0-5):"
cin>>i
cout<<endl
if(i>=0&&i<=5)
{
switch(i)
{
case 1:dingpiao()break
case 2:tuipiao()break
case 3:watch()break
case 4:browseticket()break
case 5:change()break
case 0:
{
cout<<"谢谢使用!"<<endl
}break
}
}
else
cout<<"按键错误!请重新按键!"<<endl
cout<<endl
}
}
void fn1()
{
int i=1
while(i)
{
cout<<endl<<endl
cout<<"输入航班信息:"<<endl<<逗纯晌endl
cout<<" 1订购机票(航班号为0结束输入) "<<endl
cout<<" 2反退机票 "<<endl
cout<<" 3查看航班信息 "<<endl
cout<<" 4查询航班信息 "<<endl
cout<<" 0返回主页面 "<<endl
cout<<"请选择按键(0-4):"
cin>>i
cout<<endl
if(i>=0&&i<=4)
{
switch(i)
{
case 1:dingpiao()break
case 2:tuipiao()break
case 3:watch()break
case 4:browseticket()break
case 0:
{
cout<<"谢谢使用!"<<endl
}break
}
}
else
cout<<"按键错误!请重新按键!"<<endl
cout<<endl
}
}
int main()
{
int j=1
while(j)
{
cout<<endl<<endl<<endl
cout<<" $-----------------------------------------$ "<<endl
cout<<" | | "<<endl
cout<<" | ** 欢迎进入民航管理系统 **| "<<endl
cout<<" | | "<<endl
cout<<" $-----------------------------------------$ "<<endl
cout<<"管理员进入请按1,客户进入请按2:"
cin>>j
if(j>=1&&j<=2)
{
switch(j)
{
case 1:
{
char f[]= "123456"
printf("请输入密码并以回车键结束:")
scanf("%s",f)
if(strcmp(f,"123456")==0)
fn()
else
cout<<"密码错误!请重新选择按键!"<<endl
}break
case 2:
{
cout<<"^_^客户能查看和查询航空信息^_^"<<endl
fn1()
break
}break
}
}
}
return 0
}
我写了一个,基本的功能都实现了,需要的话可以自己更改,供楼主参考。
希望能够满意!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)