您当前位置:手机评站网 > 手机教程 >

手机评站网今天精心准备的是《飞机订票系统》,下面是详解!

飞机订票系统c语言?

编制一个航班订票系统。应具备如下功能:该航班仅有一架100座飞机;该飞机座位分为吸烟区(30个座位)和无烟区(70个);订票系统界面是选择菜单:1.选吸烟区座位号;2.选无烟区座位号;用户输入自己的选择后,该区若有空位,则顺序地分配一个座号;否则致歉;若吸烟区已满而无烟区有空位,则征求顾客意见,是否愿意得到无烟区的空位,若愿意,则在无烟区分配一个座号,否则致歉退出;顾客不得自主挑选座位号;
#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
#define LIN 31
#define LIE 71
static int smok[LIN];//吸烟区票
static int nosmoke[LIE];//无烟区票
void Initnosmoke();//初始化
void ASK();void Initsmok();
void nosmok();
void smoke();
int search(int *array,int size);
void show();
int main()
{
Initnosmoke();
Initsmok();show();return 0;}void Initnosmoke()//初始化无烟区票{int sun=0;for(int j=0;j<LIE;j++){sun+=1;nosmoke[j]=sun;}}void Initsmok()//初始化吸烟区票{int k=0;for(int i=0;i<LIN;i++){k+=1;smok[i]=k;}}int search(int *array,int size)/*该函数的作用是用来查看系统中某类票是否卖完,入股卖完了返回1,反之返回的是0*/{int i;for(i=0;i<size;i++){if(array[i]!=0){return 0;}else{;}}return 1;}void nosmok()//购买无烟区票{for(int i=0;i<LIE;i++){if(i<LIE-1){if(nosmoke[i]!=0){printf("你票是:NOSMOKE_%d\n",nosmoke[i]);nosmoke[i]=0;break;}else{;}}else{printf("对不起!NOSMOKE票已售完!");}}}void ASK()/*该函数用来询问客户是否需要买NOSMOKE票当SMOKE票卖完的情况下*/{char ask;printf("NOSMOKE票你要吗?(y/n)\n");ask=getchar();if(ask =='y' || ask=='Y' ){nosmok();}else if(ask=='n' || ask=='N'){printf("谢谢!再见\n");}else{printf("输入错误!\n");}}void smoke()//购买吸烟区票{for(int j=0;j<LIN;j++){if(j<LIN-1){if(smok[j]!=0){printf("你票是: SMOKE_%d\n",smok[j]);smok[j]=0;break;}else{;}}else{printf("对不起!SMOKE票已售完!");{fflush(stdin);int rec=search(nosmoke,LIE);if(rec==0){ASK();}else{printf("谢谢!\n");}}}}}void window(){printf("\t\t欢迎使用航班订票系统\n");printf("\t\t1.吸烟区座位\n");printf("\t\t2.无烟区座位\n");printf("\t\t3.退出系统\n");printf("\t\t请选择(1~3)进行操作:\n");}void show(){system("color 4a");char ch=' ';window();while(ch!='3'){fflush(stdin);ch=getchar();switch(ch){case '1':{smoke();break;}case '2':{nosmok();break;}case '3':{break;}default:break;}window();ch=getchar();}}

飞机、火车订票系统属于什么方面的计算机应用?

懂的人帮帮忙教下了我可以追分到100分。。。...

懂的人帮帮忙 教下了 我可以追分到100分。。。

属于数据处理方面的计算机应用。

数据处理流程主要包括数据收集、数据预处理、数据存储、数据处理与分析、数据展示/数据可视化、数据应用等环节,其中数据质量贯穿于整个大数据流程,每一个数据处理环节都会对大数据质量产生影响作用。

通常,一个好的数据产品要有大量的数据规模、快速的数据处理、精确的数据分析与预测、优秀的可视化图表以及简练易懂的结果解释。

扩展资料:

数据的分布式处理技术与存储形式、业务数据类型等相关,针对大数据处理的主要计算模型有MapReduce分布式计算框架、分布式内存计算系统、分布式流计算系统等。

MapReduce是一个批处理的分布式计算框架,可对海量数据进行并行分析与处理,它适合对各种结构化、非结构化数据的处理。分布式内存计算系统可有效减少数据读写和移动的开销,提高大数据处理性能。分布式流计算系统则是对数据流进行实时处理,以保障大数据的时效性和价值性。

总之,无论哪种大数据分布式处理与计算系统,都有利于提高大数据的价值性、可用性、时效性和准确性。

大数据的类型和存储形式决定了其所采用的数据处理系统,而数据处理系统的性能与优劣直接影响大数据质量的价值性、可用性、时效性和准确性。因此在进行大数据处理时,要根据大数据类型选择合适的存储形式和数据处理系统,以实现大数据质量的最优化。

参考资料来源:百度百科——数据处理

飞机订票系统

#include<stdafx.h>#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>#defineOK1#defineERROR0#definePRprintf#defineNULL0intn=0;intN=10;typedefstructcust...

#include<stdafx.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define PR printf
#define NULL 0
int n=0;
int N=10;
typedef struct customer
{
char name[9];
int seat_num;
struct customer *next;
}customer;

customer *creat_customer()//初始化链表
{
customer *l
l=(customer *)malloc(sizeof(customer));
if(l==NULL;
{
exit(0);
}
l->next=NULL;
return l;
}

customer *insert(customer *head,customer *cus)//插入票
{
customer *p0,*p1,*p2;
p1=head;
p0=cus;
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
{
while((p1->next!=NULL)&&(n<N)
{
p2=p1;
p1=p1->next;
}
p1->next=p0;p0->next=NULL;
}
n=n+1;
}

customer *del(struct customer*head,char *name)//退票
{
customer *p1,*p2;
if(head==NULL)
{
PR("\nlist null");
goto end;
}
p1=head;
while(name!=p1->name&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(name==p1->name)
{
if(p1==head)head=p1->next;
else p2->next=p1->next;
PR("delete successfully\n");
n=n-1;
}
}

int save_customer (customer*l)//保存顾客信息
{
FILE *fp_customer;
customer *p=;->next;
char filename[]="c:\\customer.dat";
if((fp_customer=fopen(filename,"wb"))==NULL)
{
printf("can not open file to write:%s\n",filename);
return ERROR;
}
for(;p!=NULL;p=p->next)
{
fprintf(fp_customer,"%s,%d%",p->name,p->seat_num);
}
fcolse(fp_customer);
return OK;
}

int book(char *name)//订票
{
customer *head,*cus;
char name;
if(n<N)
{
PR("\ninput your name")
scanf("%S\n",&cus->name);
head=creat_customer()
cus=(customer *)malloc(sizeof(customer));
head=insert(head,cus);
&cus->seat_num=n
}
else PR("座位已满");
}

int print_customer(customer*l)
{
customer *p=l->nextafter;
for(;p!=NULL;p=->next)
{
PR("%10s %d\n",p->name,p->seat_num;
}
return OK;
}

void main()
{
char choice,name[9];
int t=1,total;
customer *cus=init_customer();
creat_customer(&cus);
while(t==1)
{ PR("*----------------------------*\n");
PR("*--航空订票系统选择菜单------*\n");
PR("* 订票-------0 *\n");
PR("* 退票-------1 *\n");
PR("* 查询-------2 *\n");
PR("* 退出-------5 *\n");
PR("*----------------------------*\n");
PR("请选择: ");
choice = getch();
PR("%c\n",choice);
if(choice=='0')
{
PR("请输入你的姓名: ");
scanf( "%s",name);
book(name);
save_customer(cus);
}
else if(choice=='1')
{
PR("\n请输入你的姓名: ");
scanf( "%s",name);
del(name);
save_customer(cus);
}
}
}
我自己又修改了一下,可是还是没法正常运行希望帮家帮帮忙 展开

  #include<stdio.h>
  #include<conio.h>
  #include<string.h>
  #include<stdlib.h>
  #define OK 1
  #define ERROR 0
  #define PR printf
  #define NULL 0
  int N=10;
  typedef struct customer
  {
  char name[9];
  int seat_num;
  int left;
  struct customer *next;
  }customer;

  customer *creat_customer()//初始化链表
  {
  customer *l;
  l=(customer *)malloc(sizeof(customer));
  if(l==NULL)
  {
  exit(0);
  }
  l->next=NULL;
  return l;
  }

  int insert_customer(customer **p,char *name,int seat,int left)
  {//customer链表插入操作
  customer *q;
  q=(customer*)malloc(sizeof(customer));
  strcpy(q->name , name);
  q->seat_num =seat;
  q->left=left;
  q->next=NULL;
  (*p)->next=q;
  (*p)=(*p)->next;
  return OK;
  }

  int delete_cus(customer *h,char *name)//顾客退票
  {
  customer *p,*pr;
  pr=h;
  p=pr->next ;
  while(p!=NULL)
  {
  if(strcmp(name,p->name )==0)
  {
  pr->next =p->next ;
  PR("顾客 %s 退票成功!\n",p->name );
  return OK;
  }
  pr=pr->next ;
  p=pr->next ;
  }
  PR("无此顾客,无法退票!\n");
  return ERROR;
  }

  int save_customer (customer*l)//保存顾客信息
  {
  FILE *fp_customer;
  customer *p=l->next;
  char filename[]="c:\\customer.dat";
  if((fp_customer=fopen(filename,"wb"))==NULL)
  {
  printf("can not open file to write:%s\n",filename);
  return ERROR;
  }
  for(;p!=NULL;p=p->next)
  {
  fprintf(fp_customer,"%s,%d%",p->name,p->seat_num);
  }
  fclose(fp_customer);
  return OK;
  }

  int book(customer *c,char *name)//订票函数
  {
  customer *q=c->next ;
  for(;q->next !=NULL;q=q->next){}
  {
  if(q->left >0)
  {
  PR("恭喜您!订票成功!\n");
  PR("你的座位号是: %d\n",(N-q->left +1));
  insert_customer(&q,name,N -q->left +1,q->left);
  q->left --;
  return OK;
  }
  else PR("对不起,座位已满!\n");
  return 0;
  }
  }

  int print_customer(customer*l)//打印顾客信息
  {
  customer *p=l->next;
  for(;p!=NULL;p=p->next)
  {
  PR("%10s %d\n",p->name,p->seat_num);
  }
  return OK;
  }

  void main()
  {
  char choice,name[9];
  int t=1;
  customer *cus=creat_customer();
  customer *l = creat_customer();
  while(t==1)
  {
  PR("*----------------------------*\n");
  PR("*--航空订票系统选择菜单------*\n");
  PR("* 订票-------0 *\n");
  PR("* 退票-------1 *\n");
  PR("* 查询-------2 *\n");
  PR("* 退出-------5 *\n");
  PR("*----------------------------*\n");
  PR("请选择: ");
  choice = getch();
  PR("%c\n",choice);
  if(choice=='0')
  {
  PR("请输入你的姓名: ");
  scanf( "%s",name);
  book(cus,name);
  save_customer(cus);
  }
  else if(choice=='1')
  {
  PR("\n请输入你的姓名: ");
  scanf( "%s",name);
  delete_cus(cus,name);
  save_customer(cus);
  }
  else if(choice=='2')
  {

  customer *p=l->next;
  if(l!=NULL)
  do
  {
  PR("%ld%5.1f\n",p->name,p->seat_num);
  p=p->next;
  }while(p!=NULL);
  }
  else if(choice=='3')
  {
  PR("byb");
  t=0;
  }
  else
  {
  PR("error\n");
  }

  }
  getch();
  }

飞机订票系统设计 c语言

飞机订票系统设计功能:本飞机共有80个坐位,分20排,每排4个位子。编号为A,B,C,D。如10D表示10排D座。A和D靠窗,19到20排为吸烟区。本系统可让乘客自己选座号和区域,直到乘客满意...

飞机订票系统设计
功能:本飞机共有80个坐位,分20排,每排4个位子。编号为A,B,C,D。如10D
表示10排D座。A和D靠窗,19到20排为吸烟区。本系统可让乘客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。定上票的乘客需给出姓名和身份证号,最后要打印出乘客清单。 展开

(已修改,请用最新的代码)代码说明:

1级菜单:选择购买的航班号,并显示对应座位状态。

(我只做测试,所以初始化initFlight函数中我只初始了2个航班,需要自己按照我的代码添)

(注意:实际开发软件,链表数据是从数据库中读取的,需要实时同步,如果要多次调用initFlight函数,记得自己写一个释放内存的函数,把所有链表“SINFO和FLINFO”节点都释放掉,释放函数我没写,需要你自己写!!!)

2级菜单:选择购买对应座位号,完成购买,并实时显示购买结果。

位置编号、座位最大排数、舱室类型、折扣等参数均由常量参数空值,需要修改自行改常量。

注意:舱室类型(我默认3个类型头等舱、公务舱、经济舱)对应折扣参数:tDiscount二维数组。如要如要添加新的舱室类型,必须将参数常量TYPESIZE、typeName、types、tDiscount这4个同时修改,具体看代码备注!!

座位票价=基础票价*类型折扣*时段折扣。

因为飞机不让吸烟,所以我没做吸烟区(笑),如果你需要,可以作为类型自行添加!

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
#include<time.h>
//-----------------------相关参数,想改变,在这里修改!!!!!!!-----------------------------
const float timeDiscount=1;//时段折扣,影响所有航班最终价格,默认1
const char cID[5]="ABCD";//位置编号
const int maxRow=20;//位置最大排号
//注意:如果修改类型数量,types和tDiscount必须同时修改!!!
#define TYPESIZE 3//类型数量
const char typeName[TYPESIZE][10]={"头等舱","公务舱","经济舱"};
const int types[TYPESIZE][2]={{1,2},{3,4},{5,20}};//排号对应类型。1~2排头等舱,3~4排公务舱,5~20排经济舱
const float tDiscount[TYPESIZE]={1.5,1.3,1};//类型折扣。头等舱1.5倍,公务舱1.3倍,经济舱1倍

//-------------------------------------------------------------------------------
typedef struct seatInfo//座位信息,一条链表对应一个航班信息,链表顺序从第一排左边第一个开始往后A1~D1,A2~D2。。。
{
    char cloID;//位置编号A、B、C、D
    int row;//位置排号
    int type;//座位所属类型:0:头等舱、1:公务舱、2:经济舱,不同类型对应不同的类型折扣tDiscount
    int sell;//出售状态,0:未出售;1:已出售
    struct seatInfo *next;
}SINFO;
typedef struct flightInfo//航班信息
{
    char fid[10];//航班号
    time_t tfTime;//起飞时间
    time_t ldTime;//降落时间
    char toCity[20];//抵达城市
    float tPrice;//基础票价,不同位置具有不同折扣,座位票价=基础票价*类型折扣*时段折扣
    struct flightInfo *next;
    struct seatInfo *sHead;//对应座位链表的头节点
}FLINFO;
void meError(void *p);
SINFO *getSINFO();//获取座位链表
//addFLINFO:添加航班信息链表的节点flinfoHead:头节点(第一次传NULL会自动生成),flinfoTail:尾节点,fNew:要添加的结构信息(成员指针无需赋值)
FLINFO *addFLINFO(FLINFO **ffHead,FLINFO *flinfoTail,FLINFO fNew);//返回尾节点
time_t getTime_tfromStr(char *sTime);//将YYYY-MM-DD hh:mm:ss格式的时间字符串转换成time_t型数值
FLINFO *initFlight();//初始化航班信息,返回航班链表头节点,如果想手动输入,请在这里添加!!!正常软件开发,这一步应该是从数据库读取!
char *getTString(struct tm *tm0);//通过tm获取时间字符串
void showSinfo(FLINFO *flinfo);//显示航班对应座位信息
void printfFlinfo(FLINFO * flinfoHead);
FLINFO *selectFlinfo(FLINFO *flinfoHead,char *fid);//选择航班号,返回节点
void showSinfo(FLINFO *flinfo);//显示航班对应座位信息
SINFO *selectSinfo(FLINFO *flinfo,char *sid);//选择座位,返回节点
int main()
{
    FLINFO *flinfoHead=initFlight(),*ffSelect=NULL;
    SINFO *sfSelect=NULL;
    char fid[10]={0},sid[10]={10};
    while(1)
    {
        ffSelect=NULL;
        sfSelect=NULL;
        memset(fid,0,10);
        memset(sid,0,10);
        printfFlinfo(flinfoHead);
        printf("请输入要购买的航班号:");
        scanf("%s",fid);
        ffSelect=selectFlinfo(flinfoHead,fid);
        if(!ffSelect)
        {
            printf("未找到对应航班,按任意键继续-----\n");
            getch();
            system("cls");
            continue;
        }
        system("cls");
        printf("航班号:%s 座位信息如下:\n",ffSelect->fid);

        showSinfo(ffSelect);
        printf("请输入要购买的座位编号(输入0返回主菜单):");
        scanf("%s",sid);
        if(!strcmp(sid,"0"))
        {
            system("cls");
            continue;
        }
        else
        {
            sfSelect=selectSinfo(ffSelect,sid);
            if(!sfSelect||sfSelect->sell)
            {
                printf("未找到对应座位或该座位已出售,请重新输入!按任意键继续-----\n");
                getch();
                system("cls");
                continue;
            }
            printf("购买成功!按任意键继续-----");
            sfSelect->sell=1;
            getch();
            system("cls");
        }

    }
    return 0;
}
SINFO *selectSinfo(FLINFO *flinfo,char *sid)//选择座位,返回节点
{
    SINFO *sinfoHead=flinfo->sHead;
    while(sinfoHead->next)
    {
        if(sinfoHead->next->cloID==sid[0] && sinfoHead->next->row==atoi(sid+1))
            return sinfoHead->next;
        sinfoHead=sinfoHead->next;
    }
    return NULL;
}
void showSinfo(FLINFO *flinfo)//显示航班对应座位信息
{
    SINFO *sinfoHead=flinfo->sHead,*sfp=NULL;
    int i,j,k,row=maxRow,clo=strlen(cID);
    char typeStr[10]={0};
    for(i=0;i<row;i++)
    {
        //---------读取座位所属舱室------------
        memset(typeStr,0,10);
        for(k=0;k<TYPESIZE;k++)
            if(i+1>=types[k][0] && i+1<=types[k][1])
                strcpy(typeStr,typeName[k]);
        //--------------------------------------
        printf("\n");
        for(j=0;j<clo;j++)
            printf("------------- ");
        printf("\n");
        sfp=sinfoHead;

        for(j=0;j<clo;j++)
        {
            printf("|    %c%02d    | ",sfp->next->cloID,sfp->next->row);
            sfp=sfp->next;
        }
        printf("\n");
        sfp=sinfoHead;
        for(j=0;j<clo;j++)
        {
            printf("|     %c     | ",sfp->next->sell?2:1);
            sfp=sfp->next;
        }
        printf("\n");
        sfp=sinfoHead;
        for(j=0;j<clo;j++)
        {
            printf("|%6s:%4.0f| ",typeStr,flinfo->tPrice*tDiscount[sfp->next->type]*timeDiscount);
            sfp=sfp->next;
        }
        printf("\n");
        sinfoHead=sfp;
    }
    for(j=0;i<clo;j++)
            printf("------- ");
    printf("\n");

}
FLINFO *selectFlinfo(FLINFO *flinfoHead,char *fid)//选择航班号,返回节点
{
    while(flinfoHead->next)
    {
        if(!strcmp(flinfoHead->next->fid,fid))
            return flinfoHead->next;
        flinfoHead=flinfoHead->next;
    }
    return NULL;
}
void printfFlinfo(FLINFO * flinfoHead)
{
    while(flinfoHead->next)
    {
        printf("目的地:%s,航班号:%s\n----起飞时间:%s,抵达时间:%s\n\n",flinfoHead->next->toCity,flinfoHead->next->fid,getTString(localtime(&flinfoHead->next->tfTime)),getTString(localtime(&flinfoHead->next->ldTime)));
        flinfoHead=flinfoHead->next;
    }
}
char *getTString(struct tm *tm0)//通过tm获取时间字符串
{
    char *str=(char *)malloc(sizeof(char)*20),num[5]={0};
    meError(str);
    memset(str,0,20);
    sprintf(num,"%4d",tm0->tm_year+1900);
    strcat(str,num);
    strcat(str,"-");

    memset(num,0,5);
    sprintf(num,"%02d",tm0->tm_mon);
    strcat(str,num);
    strcat(str,"-");

    memset(num,0,5);
    sprintf(num,"%02d",tm0->tm_mday);
    strcat(str,num);
    strcat(str," ");

    memset(num,0,5);
    sprintf(num,"%02d",tm0->tm_hour);
    strcat(str,num);
    strcat(str,":");

    memset(num,0,5);
    sprintf(num,"%02d",tm0->tm_min);
    strcat(str,num);
    strcat(str,":");

    memset(num,0,5);
    sprintf(num,"%02d",tm0->tm_sec);
    strcat(str,num);
    return str;
}
time_t getTime_tfromStr(char *sTime)//将YYYY-MM-DD hh:mm:ss格式的时间字符串转换成time_t型数值
{
    time_t rt;
    struct tm *tm1=NULL;
    rt=time(NULL);
    tm1=localtime(&rt);
    sscanf(sTime,("%4d-%2d-%2d %2d:%2d:%2d"),&tm1->tm_year,&tm1->tm_mon,&tm1->tm_mday,&tm1->tm_hour,&tm1->tm_min,&tm1->tm_sec);
    tm1->tm_year-=1900;
    tm1->tm_mon--;
    rt=mktime(tm1);

    return rt;

}
FLINFO *initFlight()//初始化航班信息,返回航班链表头节点,如果想手动输入,请在这里添加!!!正常软件开发,这一步应该是从数据库读取!
{
    FLINFO *ffHead=NULL,*flinfoTail=NULL,fNew;
    //--------添加一个航班信息----需要增加按照我下面调用方式写--------------------------------
    strcpy(fNew.fid,"CI502");
    fNew.tfTime=getTime_tfromStr("2019-02-20 03:30:30");
    fNew.ldTime=getTime_tfromStr("2019-02-20 05:20:30");
    strcpy(fNew.toCity,"台北");
    fNew.tPrice=1000;
    fNew.next=NULL;
    flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
    //--------------------------------------------------------------------------------------------
    strcpy(fNew.fid,"9C8921");
    fNew.tfTime=getTime_tfromStr("2019-02-20 14:30:30");
    fNew.ldTime=getTime_tfromStr("2019-02-20 16:40:30");
    strcpy(fNew.toCity,"香港");
    fNew.tPrice=500;
    fNew.next=NULL;
    flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
    return ffHead;
}
FLINFO *addFLINFO(FLINFO **ffHead,FLINFO *flinfoTail,FLINFO fNew)//返回尾节点
//添加航班信息链表的节点flinfoHead:头节点(第一次传NULL会自动生成),flinfoTail:尾节点,fNew:要添加的结构信息(成员指针无需赋值)
{
    FLINFO *flinfoHead=*ffHead;
    if(flinfoHead==NULL)
    {
        *ffHead=(FLINFO *)malloc(sizeof(FLINFO));
        flinfoHead=*ffHead;
        meError(flinfoHead);
        flinfoHead->next=NULL;
    }
    FLINFO *flinfoNew=(FLINFO *)malloc(sizeof(FLINFO));
    meError(flinfoNew);
    flinfoNew->next=NULL;
    flinfoNew->fid[0]=0;
    strcpy(flinfoNew->fid,fNew.fid);
    flinfoNew->ldTime=fNew.ldTime;
    flinfoNew->tfTime=fNew.tfTime;
    flinfoNew->toCity[0]=0;
    strcpy(flinfoNew->toCity,fNew.toCity);
    flinfoNew->tPrice=fNew.tPrice;
    flinfoNew->sHead=getSINFO();
    if(flinfoHead->next==NULL)
        flinfoHead->next=flinfoNew;
    else
        flinfoTail->next=flinfoNew;
    flinfoTail=flinfoNew;
    return flinfoTail;
}
SINFO *getSINFO()//获取座位链表
{
    int maxClo=strlen(cID),cnt=maxClo*maxRow,clo=0,row=1,i;
    SINFO *sinfoHead=(SINFO *)malloc(sizeof(SINFO)),*sinfoTail=NULL;
    meError(sinfoHead);
    sinfoHead->next=NULL;
    SINFO *sinfoNew=NULL;
    while(cnt--)//按顺序生成对应数量的座位链表
    {
        if(clo==maxClo)
            clo=0,row++;
        if(row==maxRow+1)
            row=1;

        sinfoNew=(SINFO *)malloc(sizeof(SINFO));
        meError(sinfoNew);
        sinfoNew->cloID=cID[clo];
        sinfoNew->row=row;
        for(i=0;i<TYPESIZE;i++)
            if(row>=types[i][0] && row<=types[i][1])
            {
                sinfoNew->type=i;
                break;
            }
        sinfoNew->sell=0;
        sinfoNew->next=NULL;
        if(sinfoHead->next==NULL)
            sinfoHead->next=sinfoNew;
        else
            sinfoTail->next=sinfoNew;
        sinfoTail=sinfoNew;
        clo++;
    }
    return sinfoHead;
}
void meError(void *p)//内存申请失败
{
    if(p==NULL)
    {
        printf("\n异常:内存申请失败!回车结束程序!\n");
        while(getch()!='\r');
        exit(0);
    }
}

飞机订票系统属于哪一类计算机应用领域,为什么?

属于数据管理类的应用。
因为这个涉及到订票方面的信息的增加、删除、修改、删除功能,提供数据服务的,是典型的数据管理类应用。

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

1.航班管理:每个航班信息包括航班号,飞机号,目的地,订票数,余票数等.假设现在有3条航线,目的地分别是上海、广州和武汉,每条航线上只有一架飞机,飞机上可乘坐100人(即初始订...

1.航班管理:每个航班信息包括航班号,飞机号,目的地,订票数,余票数等.假设现在有3条航线,目的地分别是上海、广州和武汉,每条航线上只有一架飞机,飞机上可乘坐100人(即初始订票数为0,余票数为100),将所有飞机信息存入数组airline中.
2.订票业务
(1)客户信息包括姓名,航班号,座位号(初始为0),假设已有3个客户信息存入已存放在客户数组customers中。
(2)有新客户订票时,先输入客户的姓名和他订购的航班号,查询该航线的订票情况,若有余票,则为客户办理订票手续,分配给客户一个座位号,然后将新客户的信息添加到数组customer中,并修改数组airline中该航线的订票数和余票数,若无余票,则输出客满信息.
3.退票业务:根据客户提出的航班号,办理退票,从数组customer中删除该客户的信息,并修改文件airline中相应航线的订票数和余票数.
4.输出全部航线信息和全部客户信息.
5.退出系统. 展开

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

}
请答案,支持我一下。

数据结构java语言版飞机票订票系统

模拟实现飞机票的订票系统,需要以下功能模块:(1)录入:可以录入航班情况(如输入航班号,起飞城市,到达城市,起飞时间,降落时间,票价,票价折扣,机位数目,剩余机位数等)。(...

模拟实现飞机票的订票系统,需要以下功能模块:
(1)录入:可以录入航班情况(如输入航班号,起飞城市,到达城市,起飞时间,降落时间,票价,票价折扣,机位数目,剩余机位数等)。
(2)查询:可以查询某个航线的情况(如按航班号查询,按起飞和到达城市查询等)。
(3)订票:在航班剩余机位数大于0时可以输入相应信息以订票。
(4)退票:自行设计退票功能。
(5)主菜单显示
二、程序分析
1、 输入航班信息:循环输入若干个航班各部分信息;
2、 查询:可以输入相应的查询信息(如按航班号查询,按起飞和到达城市查询等),输出对应的飞机航班情况;
3、 订票:注意需要另外储存订单信息(如订单号,姓名,航班号等)。
4、 退票:比较简单,删除相应订单号的订单。
5、 需写成一个带菜单的程序,方便选择操作。

三、附录一个带菜单主程序的例子 展开

一看十有八九就是毕业设计
前俩月还好说 我还顺便帮我女朋友做完了毕设
现在。。。。没时间
抱歉

C语言设计飞机订票系统

飞机订票系统  任务:通过此系统可以实现如下功能:  录入:  可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)  查询:  可以查询某个航线的情...

飞机订票系统
  任务:通过此系统可以实现如下功能:
  录入:
  可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
  查询:
  可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
  可以输入起飞抵达城市,查询飞机航班情况;
  订票:(订票情况可以存在一个数据文件中,结构自己设定)
  可以订票,如果该航班已经无票,可以提供相关可选择航班;
  退票: 可退票,退票后修改相关数据文件;
  客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
  修改航班信息:
  当航班信息改变可以修改航班数据文件
  要求:
  根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能; 展开

c语言程序设计飞机订票系统

1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。2、本系统显示这样的菜...

1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地 航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。
2、本系统显示这样的菜单:
(1) 输入航班信息
(2) 输出航班信息
(3) 查找航班信息
a.显示空座的数量
b.显示空座的信息
c.显示已订座的信息
d.起飞时间
(4)订票预约
(5)删除定票预约
(6)退出系统
1、 本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。
2、 查找航班信息既可按线路查,也可按目的地查。
4、在两次运行之间,数据被保存于一个文件里,当本程序重新开
始的时候,它首先从该文件读入数据
邮箱546876030@qq.com 发到邮箱里 展开

呵呵 这个也是我在网上搜的 挺不错 没有错误
#include<stdio.h> //标准输入、输出头文件
#include<string.h> //包含字符串函数处理头文件
#include<stdlib.h> //包含动态存储与释放函数头文件
#define N 10000
struct air //定义结构体数组
{
int num;
char start[20];
char over[20];
char time[10];
int count;
}s[N];
int i;
int m=0;
#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定义输出格式
void input(); //输入航班信息
void print(); //输出航班信息
void save(); //保存航班信息
void read(); //读取航班信息
void search(); //查找航班信息
void shanchu(); //删除航班信息
void dingpiao(); //订票信息
void tuipiao(); //退票信息
void xiugai(); //修改信息
void main()
{

int j;
printf(" ★---您好,欢迎进入中国民航管理系统!---★\n");
printf("================================================================================\n");
do
{
printf(" -------- ☆ 1.输入航班信息 ☆-------- \n\n"
" -------- ☆ 2.浏览航班信息 ☆-------- \n\n"
" -------- ☆ 3.修改航班信息 ☆-------- \n\n"
" -------- ☆ 4.查找航班信息 ☆-------- \n\n"
" -------- ☆ 5.删除航班信息 ☆-------- \n\n"
" -------- ☆ 6.订票信息 ☆-------- \n\n"
" -------- ☆ 7.退票信息 ☆-------- \n\n"
" -------- ☆ 0.退出 ☆-------- \n\n");
printf("================================================================================\n");
printf("请在0-7中选择以回车键结束:\n\n");
scanf("%d",&j);
switch(j)
{
case 1: input();//调用输入模块
break;
case 2:print();//调用打印模块
break;
case 3:xiugai();//调用修改模块
break;
case 4:search();//调用查找模块
break;
case 5:shanchu(); //调用删除模块
break;
case 6:dingpiao();//调用订票模块
break;
case 7:tuipiao();//调用退票模块
break;
case 0:;
break;
}
}while(j!=0); //判断结束
printf("谢谢使用,再见!\n");
}//主函数结束
void input()//打印模块程序
{
char f[]="2008china"; //设置密码
int y;
printf("请输入密码并以回车键结束:\n\n");
scanf("%s",f); //读取密码
if(strcmp(f,"2008china")==0)
{
printf("请依次输入航班信息(机票数位0结束输入):\n\n"
"完成输入信息请键入w以回车键结束\n\n"); //打印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;i<N;i++)
{

printf("请输入航班号:\n");
scanf("%d",&s[i].num); //读取航班号
printf("请输入起始站:\n");
scanf("%s",s[i].start);//读取起始站
printf("请输入终点站:\n");
scanf("%s",s[i].over);//读取终点站
printf("请输入时间:\n");
scanf("%s",s[i].time);//读取时间
printf("请输入机票数(机票数为0结束输入):\n",m);
scanf("%d",&s[i].count);//读取机票数
m++;

printf("第%d个信息已经输完是否继续?按任意键继续,按 0结束",m);
scanf("%d",&y);
if(y==0)
{
save();//将结构体信息存盘
print();//输出输入的航班信息
break;
}

}

}
else
printf("输入密码错误!请检查您的密码是否正确!谢谢!再见!\n\n");
}
void save()//保存模块程序
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}

for(i=0;i<m;i++)
if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}

void read()//从文件读取信息模块
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i<m;i++)
{
fread(&s[i],sizeof(air),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
void print()//打印模块
{
char w[10];
read();//调用读取文件函数
printf("航班号 起始站 终点站 时间 机票数\n");
for(i=0;i<m;i++)
{
printf(PRINT);//打印信息
}
printf("请按任意键回车键结束返回上层菜单以:\n");
scanf("%s",w);
}

void search()//查询模块
{
char name1[20];
char name2[20];
char ii[10];
int n,no;
do
{
printf("请选择查找方式:\n\n");//打印查询方式菜单
printf("1.按航班号查找\n\n"
"2.按终点站查找\n\n"
"3.按航线查找\n\n"
"0.返回\n\n");
printf("请在0-3中选择:\n\n"
"按其他键以回车键结束返回主菜单:\n\n");
scanf("%d",&n);//读取查找方式
if(n==0)
break;
switch(n)
{
case 1:
printf("请输入航班号:\n");
scanf("%d",&no);//航班号
break;
case 2:
printf("请输入终点站名称:\n");
scanf("%s",name2);//读取终点站
break;
case 3:
printf("请输入起始站名称:\n");
scanf("%s",name1);//读取起始站
printf("请输入终点站名称:\n");
scanf("%s",name2);//终点站
break;
}
read();//调用读取函数
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件
{
printf("\n查找航班信息成功!\n");
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);//打印信息
break;
}
if(s[i].num==no)//按航班号判断输出条件
{
printf("\n查找航班信息成功!\n");
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);//打印信息
break;
}
}
no=0;//将航班号赋值为0
printf("没有您需要的信息或查找完毕:\n\n"
"是否继续查找?请键入yes或no以回车键结束\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);//判断结束
}
void shanchu()//删除模块
{
char name1[20];
char name2[20];
char ii[10];
char f[]="2008china";//设置密码
int no,n;
printf("请输入密码并以回车键结束:\n\n");
scanf("%s",f);//读取密码
if(strcmp(f,"2008china")==0) //判断密码是否正确
{
do
{
printf("请选择删除以方式回车键结束:\n\n");//打印删除方式菜单
printf("*1.按航班号删除\n\n"
"*2.按航线删除\n\n"
"*0.返回\n\n");
printf("请在0-2中选择以回车键结束:\n");
scanf("%d",&n);//读取删除方式
if(n==0)
break; //跳出循环
switch(n)
{
case 1:
printf("请输入航班号:\n");
scanf("%d",&no);//读取航班号
read();//调用读取函数
break;//跳出循环
case 2:
printf("请输入起始站 名称:\n");
scanf("%s",name1);//读取起始站
printf("请输入终点站名称:\n");
scanf("%s",name2);//读取终点站
read();//调用读取函数
break;//跳出循环
}
for(i=0;i<m;i++)
{
if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判断输入信息是否存在
{
s[i]=s[m-1];
m--;
}

}
printf("查找完毕或没有这个信息\n\n");
printf("是否继续删除\n");
printf("请键入yes或no以回车键结束\n");
scanf("%s",ii); //读取是否继续信息
save(); //调用读取函数
if(!strcmp(ii,"yes")) //判断是否继续删除
printf("请按任意键以回车键结束返回上层菜单:\n");
break;
}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); //判断结束
}
else
printf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!\n\n");
}

void dingpiao()//订票模块
{
int n;
char a[10];
do
{
search();//调用查询模块
printf("请输入您要订的机票数以回车键结束:\n");
scanf("%d",&n);//读取所订机票数
if(n<0)
{
printf("请输入有效的机票数!\n");//判断机票数是否出错
break;
}
if(s[i].count!=0&&s[i].count>=n)//判断是否出错
{
s[i].count=s[i].count-n;
save();//调用保存函数
printf("订票成功!\n\n");
break;
}
if(s[i].count<n)//判断是否出错
{
printf("请输入有效的机票数:\n");
break;
}
printf("是否继续? 请输入yes或no以回车键结束:\n");//判断是否继续订票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判断结束

}
void tuipiao()//退票模块
{
int n;
char a[10];
do
{
search();//调用查询模块
printf("请输入您要退的机票数目:\n");
scanf("%d",&n);//输入所退票数
if(n<0) //判断票数是否有效
printf("请输入有效的机票数!\n");
s[i].count=s[i].count+n;
save(); //调用保存模块
printf("退票成功!\n\n");
printf("是否继续? 请键入yes或no以回车键结束:\n\n");//判断是否继续退票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判断并跳出循环
getchar();
}
void xiugai() //修改模块
{
struct xiu //定义结构体
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
}x[1];
char j[10];
char f[]="2008china";//设置密码
int n;
printf("请输入密码并以回车键结束:\n\n");
scanf("%s",f);//读取密码
if(strcmp(f,"2008china")==0)//判断是否出错
{
read();//调用读取模块
do
{
printf( "请选择修改方式:\n\n"
"*1,按航班号修改:\n\n"
"*2,按航线修改: \n\n");
printf("请在1---2中修改以回车键结束:\n\n");
scanf("%d",&n);//读取修改方式
switch(n)
{
case 1:printf("请输入航班号:\n");
scanf("%d",&x[0].no);//读取航班号
break;
case 2:printf("请输入起始站:\n");
scanf("%s",x[0].name1);//读取起始站
printf("请输入终点站:\n");
scanf("%s",x[0].name2);//读取终点站
break;
}
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判断输出条件
{
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);
break;
}
if(s[i].num==x[0].no)//判断输出条件
{
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);
break;
}
}
x[0].no=0; //将结构体中的号为零
printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:\n");
scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定义输入格式
s[i].num=x[0].no;//替换航班号
strcpy(s[i].start,x[0].name1);//替换其始站
strcpy(s[i].over,x[0].name2);//替换终点站
strcpy(s[i].time,x[0].time);//替换时间
s[i].count=x[0].count;//替换机票数
save();//调用保存模块
printf("是否继续?请键入yes或no以回车键结束:\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0); //判断结束
}
else
printf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!\n\n");
}

数据结构课程设计——飞机订票系统

录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣...

录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票: 可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息: 当航班信息改变可以修改航班数据文件 要求: 根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

有能力的朋友能够自己写的最好了,不要网上那种千篇一律的,希望代码有讲解的,因为我们要做报告,谢谢了啊!
代码麻烦发到我邮箱 zhiweinigianguai@126.com
最佳答案可以加悬赏分哦。 展开

#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define m 4 //3架飞机
#define n 5 //每架飞机5张票

struct node
{
char name[21];
char id[21];
int seat,plane,date;
node *next,*pre;
};
struct wait
{
char name[21];
char id[21];
char phone[8];
int seat,plane,date,count;
wait *next,*pre;
};
struct piao
{
int seat[n+1];
};

void makenull();
void makenull_piao();
void makenull_information();
void list_menu();
void list_piao();
void makenull_wait();
void list_information();
void plane_information(node *head);
void book();
void add_information(node *head,int x,int y);
void add_wait(int x,int y);
void search_delete(int x);
void write_to_file();
void show_wait();
bool comp(node *x,node*y);

node *head1,*head2,*head3,*q;
wait *wait_head,*wait_end;
char c;
piao a[m];

void main()
{

makenull();
do
{ list_menu();
cout<<endl<<"choose an operation: ";
cin>>c;
if (c!='6')
switch(c)
{
case '0' : show_wait();break;
case '1' : {list_piao();book();}break;
case '2' : search_delete(1);break;
case '3' : list_piao();break;
case '4' : list_information();break;
case '5' : search_delete(0);break;
default : break;
}
}while(c!='6');
cout<<"Exit System ";
}
void makenull()
{
makenull_piao();
makenull_information();
makenull_wait();
}
void list_menu()
{ cout<<endl<<"";
cout<<endl<<" 菜单";
cout<<endl<<" ************************";
cout<<endl<<" * 0 . 查看排队情况 *";
cout<<endl<<" * 1 . 订票 *";
cout<<endl<<" * 2 . 退票 *";
cout<<endl<<" * 3 . 查看剩余票 *";
cout<<endl<<" * 4 . 查看飞机信息 *";
cout<<endl<<" * 5 . 查看乘客信息 *";
cout<<endl<<" * 6 . 退出 *";
cout<<endl<<" ************************";
cout<<endl<<"";
}
void makenull_piao()
{
FILE *fp;
int i;
if((fp=fopen("piao.dat","r")) == NULL )
{
fp=fopen("piao.dat","w");
for (i=1;i<=m-1;i++)
fwrite(&a[i],sizeof(piao),1,fp);
fclose(fp);
fp=fopen("piao.dat","r");
}
for(i=1;i<=m-1;i++)
fread(&a[i],sizeof(piao),1,fp);
fclose(fp);
}
void makenull_information()
{
node *r;
FILE *fp;
int i,j,sum;

sum=a[1].seat[0]+a[2].seat[0]+a[3].seat[0];
fp=fopen("information.dat","r");
head1=new node;
head2=new node;
head3=new node;
head1->pre=NULL;
head1->next=NULL;
head2->pre=NULL;
head2->next=NULL;
head3->pre=NULL;
head3->next=NULL;
q=head1;
for(i=1;i<=sum;i++)
{
j=0;
r=new node;
fread(r,sizeof(node),1,fp);
q->next=r;
r->pre=q;
r->next=NULL;
q=q->next;
fclose(fp);
if(i==a[1].seat[0]+1) {
head2->next=q;
q->pre->next=NULL;
q->pre=head2;
}
if(i==a[1].seat[0]+a[2].seat[0]+1) {
head3->next=q;
q->pre->next=NULL;
q->pre=head3;
}
}
}

void makenull_wait()
{
wait *tempw;
FILE *fp;
tempw=new wait;
int i;
if((fp=fopen("wait.txt","r")) ==NULL )
{
fp=fopen("wait.txt","w");
fclose(fp);
}
wait_end=new wait;
wait_head=new wait;
wait_end->next=NULL;
wait_end->pre=NULL;
wait_head=wait_end;
wait_head->count=0;
fp=fopen("wait.txt","r");
fread(wait_head,sizeof(wait),1,fp);
for(i=1;i<=wait_head->count;i++)
{
fread(tempw,sizeof(wait),1,fp);
wait_end->next=tempw;
tempw->pre=wait_end;
tempw->next=NULL;
wait_end=tempw;
}
}

void list_piao()
{
int i,j;
for(i=1;i<=m-1;i++)
{
if(a[i].seat[0]!=n)
{
cout<<endl<<"第 "<<i<<" 架飞机剩余的票 :"<<endl;
for(j=1;j<=n;j++)
if (a[i].seat[j]==0) cout<<" "<<j;
cout<<endl;
}
else cout<<endl<<"The "<<i<<" plane is full !"<<endl<<endl;
}
}
void list_information()
{
int x;
do {cout<<endl<<"显示哪架飞机的信息 ? "; cin>>x;cout<<endl;}while(x<1 || x>=m);
cout<<endl<<"第 "<<x<<" 架飞机的信息如下 "<<endl;
if(x==1) plane_information(head1);
if(x==2) plane_information(head2);
if(x==3) plane_information(head3);
}

void plane_information(node *head)
{
node *q;
char ch;
int x=0;
if(head!=NULL && head->next!=NULL)
q=head->next;
else {
q=NULL;
cout<<"飞机空,无预订票 !"<<endl;
}
while(q!=NULL)
{
cout<<endl<<"*******************"<<endl;
q->date=q->plane;
cout<<"日期 :"<<q->date<<endl;
cout<<"座位号 : "<<q->seat<<endl;
cout<<"姓名 : "<<q->name;
cout<<endl<<"ID 号 : "<<q->id;
q=q->next;x++;
if (x % 3 ==0) ch=getch();
}
cout<<endl;
}
void book()
{
int i,j,p;
cout<<endl<<"请选择地点:(1、2、3) ";
do {
cin>>i;
if (i<1 || i>=m) {
cout<<endl<<"**** 超出范围!****"<<endl<<"请重新输入:";
}
else
{cout<<endl<<"你要订的是到"<<i<<"地的飞机"<<endl;
cout<<endl<<"第 "<<i<<" 架飞机剩余的票 :"<<endl;
for(p=1;p<=n;p++)
if (a[i].seat[p]==0) cout<<" "<<p;
cout<<endl;
break;}
}while(1);
cout<<endl<<"请选择座位号 : ";
do {
cin>>j;
if (j<1 || j>n) {
cout<<endl<<"**** 超出范围!****"<<endl<<"请重新输入:";
}
else
{
q->date=i;
cout<<endl<<"您的订票日期 : "<<q->date<<endl;
break;
}
}while(1);

if (a[i].seat[j]==0) {
a[i].seat[j]=1;
cout<<endl;
a[i].seat[0]++;
if(i==1) add_information(head1,1,j);
if(i==2) add_information(head2,2,j);
if(i==3) add_information(head3,3,j);
}
else
{
cout<<endl<<"**** 对不起,该座位已被预订,您被安排到订票等候队列 ****"<<endl;
add_wait(i,j);
}

}
void add_wait(int x,int y)
{
wait *tempw;
tempw=new wait;
tempw->next=NULL;
cout<<"请输入个人信息"<<endl;
cout<<endl<<"*************"<<endl;
cout<<"姓名 : ";cin>>tempw->name;
cout<<"ID号 : ";cin>>tempw->id;
cout<<"电话 :";cin>>tempw->phone;
tempw->seat=y;
tempw->plane=x;
wait_end->next=tempw;
tempw->pre=wait_end;
wait_end=wait_end->next;
cout<<endl<<"**** 正在排队等候 ****"<<endl;
wait_head->count++;
write_to_file();
}
void show_wait()
{
wait *tempw;
tempw=wait_head->next;
if (tempw==NULL) cout<<endl<<"排队中没有人!"<<endl;
while(tempw!=NULL)
{
cout<<tempw->name<<" - ";
tempw=tempw->next;
}
}
void add_information(node *head,int x,int y)
{
node *temp;
temp=new node;
temp->pre=NULL;
temp->next=NULL;
cout<<"请输入个人信息"<<endl;
cout<<endl<<"*************"<<endl;
cout<<"姓名 : ";cin>>temp->name;
cout<<"ID号 : ";cin>>temp->id;
temp->seat=y;
temp->plane=x;
temp->next=head->next;
temp->pre=head;
if (head->next!=NULL) head->next->pre=temp;
head->next=temp;
write_to_file();
cout<<endl<<"**** 订票成功 ****"<<endl;
}
void search_delete(int x)
{
node *p,*q,*r;
wait *tempw,*tempw2,*tempw3;
int step=1,t1,t2,i;
char ch;
p=new node;
tempw=new wait;
tempw2=new wait;
tempw3=new wait;
q=head1;
cout<<endl<<"请输入个人信息"<<endl;
cout<<"*************"<<endl;
cout<<endl<<"姓名 : ";cin>>p->name;
do{
q=q->next;
if ( (q!=NULL) &&
(comp(q,p)) )
{
cout<<endl;
q->date=q->plane;
cout<<"Located!"<<endl;
cout<<"****************";
cout<<endl<<"姓名 : "<<q->name;
cout<<endl<<"ID号 : "<<q->id;
cout<<endl<<"座位号 : "<<q->seat;
cout<<endl<<"班机号 : "<<q->plane;
cout<<endl<<"日期 : "<<q->date<<endl;
if (x==1) {
cout<<"删除该纪录 ? [Y/N] ";
cin>>ch;
if (ch=='Y' || ch=='y') {
t1=q->plane;
t2=q->seat;
a[t1].seat[t2]=0;
a[t1].seat[0]--;
r=q;q=q->pre;
r->pre->next=r->next;
if(r->next!=NULL) r->next->pre=r->pre;
delete(r);
cout<<"**** 记录删除成功 ! ****";
write_to_file();
tempw=wait_head;
for(i=0;i<wait_head->count;i++)
{
tempw=tempw->next;
if(tempw==NULL) break;
if((tempw->plane==t1) && (tempw->seat==t2))
{
strcpy(tempw3->name,tempw->name);
strcpy(tempw3->phone,tempw->phone);
cout<<endl<<"等候的人中有可以订票的了:"<<endl;
cout<<endl<<"姓名 : "<<tempw->name;
cout<<endl<<"ID号 : "<<tempw->id<<endl;
a[t1].seat[0]++;
a[t1].seat[t2]=1;
if(tempw->plane==1) add_information(head1,1,tempw->seat);
if(tempw->plane==2) add_information(head2,2,tempw->seat);
if(tempw->plane==3) add_information(head3,3,tempw->seat);
tempw2=tempw->pre;
tempw2->next=tempw->next;
if(tempw->next==NULL) wait_end=tempw2;
else tempw->next->pre=tempw2;
delete(tempw);
wait_head->count--;
write_to_file();
cout<<endl<<"等候的"<<tempw3->name<<"已经成功订票,已经由电话"<<tempw3->phone<<"通知了"<<endl;
break;
}
}

}
}continue;
}
else
{
if (q==NULL)
{
step++;
if(step==2) q=head2;
if(step==3) q=head3;
if(step==4) {cout<<endl<<"**** 信息检索完毕 ****";break;}
}
}
}while(1);
}
bool comp(node *x,node *y)
{
node *p,*q;
int i,j,k;
p=x;
q=y;
i=j=0;
do
{
while ( (p->name[i] != q->name[j]) && (p->name[i] != '\0') ) i++;

if (p->name[i] == '\0') {return(false);break;}
else
{
k=i;
while ( (p->name[k] == q->name[j]) && (q->name[j]!='\0') ) {k++;j++;}
if (q->name[j]=='\0') return(true);
else
{
j=0;
i++;
}
}
}while( (q->name[j]!='\0') && (p->name[i] != '\0') );
return(false);
}

void write_to_file()
{
FILE *fp;
int i,j;
int x[m];
node *p;
wait *tempw;
tempw=new wait;
tempw=wait_head;
fp=fopen("piao.dat","w");
for (i=1;i<=m-1;i++)
{
fwrite(&a[i],sizeof(piao),1,fp);
}
fclose(fp);

fp=fopen("information.dat","w");
x[0]=0;x[1]=a[1].seat[0];
for(i=0,j=1;j<=m-1;j++) {i=i+a[j].seat[0];x[j]=a[j].seat[0]+x[j-1];}
j=1;p=head1->next;
for(j=1;j<=i;j++)
{
if(j==x[1]+1) p=head2->next;
if(j==x[2]+1) p=head3->next;
if(p==NULL)break;
fwrite(p,sizeof(node),1,fp);
p=p->next;
}
fclose(fp);

fp=fopen("wait.txt","w");
for(j=0;j<=wait_head->count;j++)
{
if(tempw==NULL)break;
fwrite(tempw,sizeof(wait),1,fp);
tempw=tempw->next;
}
fclose(fp);
}

来源: 手机评站

热门手机排行榜

  1. 1Redmi K20¥1999
  2. 2vivo Z5x¥1398
  3. 4realme X¥1499
  4. 5vivo X27¥3598
  5. 6一加 6¥3199
  6. 9荣耀 Magic2¥3799
  7. 10三星 Note9¥6999

Copyright © 2016-2019 手机评站网(www.pingzhan.net)版权所有

业务联系: