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

C语言程序写飞机订票系统,第1张

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

{

}

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

#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

}

我写了一个,基本的功能都实现了,需要的话可以自己更改,供楼主参考。

希望能够满意!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12508036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存