基于C++的民航订票系统的设计与实现

本文介绍了一个基于C++语言的民航管理系统的设计方案。系统提供用户登录、航班查询、购票及充值等功能,并利用面向对象特性实现良好的封装性和多态性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求分析

设计一个民航管理系统,使更广大的用户群体可以借助这个平台订飞机票。

C++作为一个面向对象的语言,利用多态性和封装性可以更好地表达出这些功能,相比 JAVA 等语言,C++具STL,可以表达更强的封装性。

二、程序的主要功能

  1. 登录和注册用户,管理员的登录
  2. 存储用户的身份验证信息,账户信息,历史购票记录
  3. 用户使用地址或者是航班号对特定的航班进行查询
  4. 用户可以修改自己的密码、账户号和账户密码
  5. 用户能够对航班信息进行确认
  6. 用户对余额进行充值操作
  7. 管理员可以对航班进行新建、修改、删除等操作

https://write-bug.com/upload/image/19/6e93b3ae69ba779e77272d25ceb38212.png

点击此处下载文档和源码

#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、付费专栏及课程。

余额充值