CC++ 飞机订票系统

C/C++ 飞机订票系统

1、飞机订票系统

问题描述:实现航班信息的管理和顾客订票功能,分管理员和顾客两种角色,管理员录入管理航班信息,顾客注册后可登陆查询航班,订票和退票。
基本功能要求:
程序至少采用所学过的一种数据结构(链表、栈、队列、树等)实现,不能全部只使用数组。
航班信息至少包括:航班号,起飞城市,抵达城市,起降时间,航班票价,票价折扣,总票量,剩余票量等,其他信息根据功能需求自行设计。
管理员功能:
(1)录入:可以录入航班情况
(2)修改:修改航班信息
(3)删除:若该航班没有顾客,可以删除
(4)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
(5)排序:根据航班号信息进行排序。顾客功能:
(1)注册:录入顾客信息(至少包含用户名,密码,身份证,姓名等信息)
(2)订票:可以查询航班信息,进行订票;
(3)退票:可退票,退票后修改相关数据;
(4)查询:查询顾客个人情况,包括订单情况。扩展功能要求:
(1)管理员查询某个航班有哪些顾客
(2)顾客查询航班,并可按出发时间排序显示,并尽可能采用速度快的排序。
(3)航班信息和顾客订票信息存入文件,启动程序后自动加载到数据结构中。

源码下载

链接:https://pan.baidu.com/s/1c7wik-AXHuaDQyDP48FB_w?pwd=1111
提取码:1111

#include #include #include #include #define OK 1 #define ERROR 0 typedef struct airline{ char air_num[8]; char plane_num[8]; char end_place[20]; int total; int left; struct airline *next; }airline; typedef struct customer{ char name[8]; char air_num[8]; int seat_num; struct customer *next; }customer; airline *start_air() { airline *a; a=(airline*)malloc(sizeof(airline)); if(a==NULL) a->next=NULL; return a; } customer *start_cus() { customer *c; c=(customer*)malloc(sizeof(customer)); if(c==NULL) c->next=NULL; return c; } airline *modefy_airline(airline *l,char *air_num) { airline *p; p=l->next; for(;p!=NULL;p=p->next) { if(strcmp(air_num,p->air_num)==0) { p->left++; return l; } printf("NO the airline!"); return 0; } } int insert_air(airline **p,char *air_num,char *plane_num,char *end_place,int total,int left) { airline *q; q=(airline*)malloc(sizeof(airline)); strcpy(q->air_num,air_num); strcpy(q->plane_num,plane_num); strcpy(q->end_place,end_place); q->total=total; q->left=left; q->next=NULL; (*p)->next=q; (*p)=(*p)->next; return OK; } int insert_cus(customer **p,char *name,char *air_num,int seat_num) { customer *q; q=(customer*)malloc(sizeof(customer)); strcpy(q->name,name); strcpy(q->air_num,air_num); q->seat_num=seat_num; q->next=NULL; (*p)->next=q; (*p)=(*p)->next; return OK; } int book(airline *a,char *air_num,customer *c,char *name) { airline *p=a; customer *q=c->next; p=a->next; for(;q->next!=NULL;q=q->next){} for(;p->next!=NULL;p=p->next) { if(p->left>0) { printf("Your seat number is %d",(p->total-p->left+1)); insert_cus(&q,name,air_num,p->total-p->left+1); p->left--; return OK; } else { printf("seat is full"); return 0; } } return OK; } int del_cus(customer *c,airline *l,char *name) { customer *p,*pr; char air_num[8]; pr=c; p=pr->next; while(p!=NULL) { if(strcmp(p->name,name)==0) { strcpy(air_num,p->air_num); l=modefy_airline(l,air_num); pr->next=p->next; p=pr->next; printf("finish!"); return OK; } pr=pr->next; p=pr->next; } printf("NO the customer!"); return ERROR; } int search_air(airline *head) { airline *p=head->next; printf("air_num plane_num end_place total left\n"); for(;p!=NULL;p=p->next) { printf("%s %-10s %-8s %-8d%-8d\n",p->air_num,p->plane_num,p->end_place,p->total,p->left); } return OK; } int search_cus(customer *head) { struct customer *q=head->next; printf("name air_num seat_num\n"); for(;q!=NULL;q=q->next) { printf("%-8s%-12s%-d\n",q->name,q->air_num,q->seat_num); } return OK; } int creat_air(airline **l) { airline *p=*l; int i=0; char *air_num[3]={"007af","008af","009af"}; char *plane_num[3]={"plane1","plane2","plane3"}; char *end_place[3]={"Beijing","Shanghai","Tianjin"}; int total[3]={100,100,100}; int left[3]={52,54,76}; for(i=0;i<3;i++) insert_air(&p,air_num,plane_num,end_place,total,left); return OK; } int creat_cus(customer **l) { customer *p=*l; int i=0; char *name[3]={"zhsan","lisi","wangwu"}; char *air_num[3]={"007af","008af","009af"}; int seat_num[3]={2,5,7}; for(i=0;i<3;i++) insert_cus(&p,name,air_num,seat_num); return OK; } void main() { int t=1; customer *cus=start_cus(); airline *air=start_air(); char name[8],air_num[8],ch; creat_air(&air); creat_cus(&cus); while(t==1) { printf("\n"); printf("*********************************\n"); printf("* Welcome to air firm! *\n"); printf("* book--------1 *\n"); printf("* cancel------2 *\n"); printf("* search------3 *\n"); printf("* exit--------4 *\n"); printf("*********************************\n"); ch=getch(); if(ch=='1') { printf("Please input a airline number:"); scanf("%s",air_num); printf("Please input a name:"); scanf("%s",name); book(air,air_num,cus,name); } else if(ch=='2') { printf("Please input the cancel name:"); scanf("%s",name); del_cus(cus,air,name); } else if(ch=='3') { search_air(air); printf("\n"); search_cus(cus); } else if(ch=='4') { t=0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值