2019C语言课程设计

二,飞机订票系统
假定民航机场共有 n 个航班:航班号、起始站、终点站、飞机号、飞机时间、 乘员定额、余票量。设计一民航订票系统,使之能提供下列服务:
(1) 航班信息录入功能(文件保存)
(2) 完成航班信息浏览功能;
(3) 查询航线(至少一种查询方式)
①按航班号查询
②按起始站查询
③按终止站查询
④按飞行时间查询
(4) 订票预约
(5) 删除订票
(6) 退出系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXNUM 1000
struct ticket
{
 char Air_Schedule[20];
 char Air_StartSta[20];
 char Air_TermSta[20];
 char Air_num[20];
 char Air_TravTime[20];
 char Air_PassCap[20];
 int  Air_RmnTckt;
 int count;
}ticket[10];
int main()
{
 void input();
 void browse();
 void  search();
 void book();
 void quit();
 FILE *fp1, *fp2;
 system("cls");
 system("color 2f");
 system("cls");
 printf("\n**************** 欢迎进入飞机订票系统********************\n");
 struct message *head = NULL;
 int i;
 if ((fp1 = fopen("record.txt", "r")) == NULL)
 {
  fp2 = fopen("record.txt", "w");  //如果不存在record.txt就创建一个
  fclose(fp2);
 }
 Loop:
 do {
  printf("1.录入航班信息  \n");
  printf("2.航班信息浏览  \n");
  printf("3.查询航线模块 \n");
  printf("4.订票查询模块 \n");
  printf("5.删除订票模块 \n");
  printf("0.退出系统 \n");
  printf("请在0~5之间选择您要进行的操作:\n ");
  scanf("%d", &i);
  if (i >= 0 && i <= 5)
   switch (i)
   {
   case  0:   break;
   case  1:input();    break;
   case  2:browse();   break;
   case  3:search();   break;
   case  4:book();     break;
   case  5:quit();     break;
   default:printf("Enter error!!\n");
   }
   else
  {
   printf("\n输入错误!!\n");
   continue;
  }
 } while (i != 0);
 printf("请按ENTER返回功能操作菜单\n");
 getchar();
 goto Loop;
 system("pause");
}
void input()            //  录入航班信息
{
 system("cls");
 int i, m;
 printf("**************欢迎使用录入航班信息功能!**************** \n");
 FILE *fp1, *fp2;
 struct message *head = NULL;
 if ((fp1 = fopen("record.txt", "r")) == NULL)
 {
  fp2 = fopen("record.txt", "w");  //如果不存在record.txt就创建一个
  fclose(fp2);
 }
 printf("请问要输入几个航班信息: \n");
 scanf("%d", &m);
 if ((fp2 = fopen("record.txt", "w")) != NULL)
 {
  for (i = 0; i < m; i++)
  {
   printf("\n请输入航班号:\n");
   scanf("%s", ticket[i].Air_Schedule);
   printf("请输入起始站:\n");
   scanf("%s", ticket[i].Air_StartSta);
   printf("请输入终点站:\n");
   scanf("%s", ticket[i].Air_TermSta);
   printf("请输入飞机号:\n");
   scanf("%s", ticket[i].Air_num);
   printf("请输入飞行时间:\n");
   scanf("%s", ticket[i].Air_TravTime);
   printf("请输入乘员定额:\n");
   scanf("%s", ticket[i].Air_PassCap);
   printf("请输入余票数:\n");
   scanf("%d", &ticket[i].Air_RmnTckt);
  }
 }
 printf("录入成功!祝您使用愉快!!\n");
 fclose(fp2);
 getchar();
 system("pause");
}
void browse()       //航班信息浏览
{
 int i; FILE *fp2;
 printf("**************欢迎使用航班信息浏览功能!**************** \n");
 if ((fp2 = fopen("record.txt", "r")) == NULL)
  printf("无航班信息\n");
 else
 {
  printf("航班号\t起飞地点\t降落地点\t起飞时间\t乘员定额\t余票数\n");
  for (i = 0; i < 10; i++)
   printf("\n\n %s\t%s\t%s\t%s\t%s\t%s\t%d \n", ticket[i].Air_Schedule, ticket[i].Air_StartSta,
    ticket[i].Air_TermSta, ticket[i].Air_num, ticket[i].Air_TravTime, ticket[i].Air_PassCap, ticket[i].Air_RmnTckt);
 }
 getchar();
 fclose(fp2);
 system("pause");
}
void  search()  //查询航线模块
{
 int i = 0, d = 0, e = 0, j = 0, k;
 struct ticket a;
 system("cls");
 printf("**************欢迎使用航线查询功能!**************** \n");
 printf("请选择查询方式:\n0.退出\n1.按航班号查询\n2.按起始站查询\n3.按终点站查询\n4.按飞行时间查询\n");
 scanf("%d", &k);
 if (k >= 0 && k <= 4)
 {
  if (k == 0)
   return 0;
  if (k == 1)
  {
   printf("请输入航班号:\n");
   scanf("%s", a.Air_Schedule);
   printf("航班号\t起始站\t终点站\t飞行时间\t乘员定额\t余票数\n");
   for (i = 0; i < 10; i++)
   {
    if (strcmp(a.Air_Schedule, ticket[i].Air_Schedule) == 0)
     printf("\n\n %s\t%s\t%s\t%s\t%s\t%s\t%d \n", ticket[i].Air_Schedule, ticket[i].Air_StartSta, ticket[i].Air_TermSta,
      ticket[i].Air_num, ticket[i].Air_TravTime, ticket[i].Air_PassCap, &ticket[i].Air_RmnTckt);
   }
   printf("祝您路途愉快!!\n");
  }
  if (k == 2)
  {
   printf("请输入起始站:\n");
   scanf("%s", a.Air_StartSta);
   printf("航班号\t起始站\t终点站\t飞行时间\t乘员定额\t余票数\n");
   for (i = 0; i < 10; i++)
   {
    if (strcmp(a.Air_StartSta, ticket[i].Air_StartSta) == 0)
     printf("\n\n %s\t%s\t%s\t%s\t%s\t%s\t%d \n", ticket[i].Air_Schedule, ticket[i].Air_StartSta, ticket[i].Air_TermSta,
      ticket[i].Air_num, ticket[i].Air_TravTime, ticket[i].Air_PassCap, &ticket[i].Air_RmnTckt);
   }
   printf("祝您路途愉快!!\n");
  }
  if (k == 3)
  {
   printf("请输入终点站:\n");
   scanf("%s", a.Air_TermSta);
   printf("航班号\t起始站\t终点站\t飞行时间\t乘员定额\t余票数\n");
   for (i = 0; i < 10; i++)
   {
    if (strcmp(a.Air_TermSta, ticket[i].Air_TermSta) == 0)
     printf("\n\n %s\t%s\t%s\t%s\t%s\t%s\t%d \n", ticket[i].Air_Schedule, ticket[i].Air_StartSta, ticket[i].Air_TermSta,
      ticket[i].Air_num, ticket[i].Air_TravTime, ticket[i].Air_PassCap, &ticket[i].Air_RmnTckt);
   }
   printf("祝您路途愉快!!\n");
  }
  if (k == 4)
  {
   printf("请输入飞行时间:\n");
   scanf("%s", a.Air_TravTime);
   printf("航班号\t起始站\t终点站\t飞行时间\t乘员定额\t余票数\n");
   for (i = 0; i < 10; i++)
   {
    if (strcmp(a.Air_TravTime, ticket[i].Air_TravTime) == 0)
     printf("\n\n %s\t%s\t%s\t%s\t%s\t%s\t%d\n", ticket[i].Air_Schedule, ticket[i].Air_StartSta, ticket[i].Air_TermSta,
      ticket[i].Air_num, ticket[i].Air_TravTime, ticket[i].Air_PassCap, &ticket[i].Air_RmnTckt);
   }
   printf("祝您路途愉快!!\n");
  }
 }
 system("pause");
}
void book()   //订票查询模块
{
 int i, a;
 struct ticket d;
 system("cls");
 printf("**************欢迎使用订票功能!**************** \n");
 do
 {
  search();
  printf("请输入您要订的航班号:\n");
  scanf("%s", d.Air_Schedule);
  printf("请输入您要订的机票数:\n");
  scanf("%d", &d.Air_RmnTckt);
  for (i = 0; i < 10; i++)
  {
   if (ticket[i].Air_Schedule == d.Air_Schedule)
   {
    if (ticket[i].Air_RmnTckt != 0 && ticket[i].Air_RmnTckt >= d.Air_RmnTckt)
    {
     ticket[i].Air_RmnTckt = ticket[i].Air_RmnTckt - d.Air_RmnTckt;
     printf("恭喜您订票成功!祝您旅途愉快!\n");
     break;
    }
    if (ticket[i].Air_RmnTckt < d.Air_RmnTckt)
    {
     printf("此航班只剩下%d张票,订票失败\n", ticket[i].Air_RmnTckt);
     break;
    }
   }
  }
  printf("继续订票请按 1 ,退出请按 0\n");
  scanf("%d", &a);
 } while (a == 1);
 system("pause");
}
void quit()   //删除订票模块
{
 int i, a;
 struct ticket f;
 printf("请输入您订的机票数:\n");
 scanf("%d", &f.Air_RmnTckt);
 system("cls");
 printf("**************欢迎使用删除订票功能!**************** \n");
 do
 {
  search();
  printf("请输入您要退订的航班号:\n");
  scanf("%s", f.Air_Schedule);
  printf("请输入您要退订的机票数:\n");
  scanf("%d", &f.Air_RmnTckt);
  if (f.Air_RmnTckt <= 0)
  {
   printf("您输入的票数有误,请重新输入\n");
   break;
  }
  for (i = 0; i < 10; i++)
  {
   if (ticket[i].Air_Schedule == f.Air_Schedule)
   {
    ticket[i].Air_RmnTckt = ticket[i].Air_RmnTckt + f.Air_RmnTckt;
    printf("恭喜您退票成功! \n");
    break;
   }
   else
    printf("抱歉,您输入的航班号有误!\n");
  }
  printf("继续订票请按 1 ,退出请按 0 \n");
  scanf("%d", &a);
 } while (a == 1);
 system("pause");
}

不足之处,请多指教!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值