⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 address.txt

📁 四种排序算法的比较
💻 TXT
📖 第 1 页 / 共 2 页
字号:
sunlin29 2006-12-09 00:12 
先一.问题描述
航班查询系统
系统功能
查询起飞城市至抵达城市的航班情况
查询起飞城市的航班情况
查询抵达城市的航班情况
航班情况
航班号,起降时间,起飞城市,抵达
城市,航班票价,票价折扣 
二、系统分析
通过对题目要求的阅读,要求本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。
具体分析如下:
1、录入功能
可以录入航班信息,如录入航班号,起飞城市,到达城市,起飞时间,到达时间,飞机票数,票价及折扣。利用结构体数组存放数据。
2、查询功能
可以查询航班的各项信息,如输入航班号可以查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,可以查询航班号。
3、订票功能
可以订票并且记录下乘客的相关信息如记录下乘客姓名,身份证号码,所订航班的航班号以及所订的票数。利用结构体数组存放数据。
4、退票功能
可以退票并且记录乘客的相关信息以及退票信息。利用结构体数组存放数据。
5、修改功能
可以根据需要由管理员对航班信息进行修改更正。
三、系统设计
为了完成需求分析的功能,我设计了九个小模块来完成:查询模块,订票模块,退票模块,信息保存模块,信息读取模块,信息输出(显示)模块,信息录入模块,信息修改模块,信息删除模块。
1、查询模块
定义search()函数完成查询功能。
2、订票模块
定义book()函数完成订票功能。
3、退票模块
定义cancel()函数完成退票功能。
4、信息保存模块
定义save()函数完成航班信息存储功能;用c_save()函数完成用户信息存储功能。
5、信息读取模块
定义read()函数完成航班信息读取功能;用c_read()函数完成用户信息读取功能。
6、信息输出(显示)模块
定义print()函数完成航班信息输出显示功能;用c_print()函数完成用户信息输出显示功能。
7、信息录入模块
定义input()函数完成航班信息录入功能。
8、信息修改模块
定义edit()函数完成航班信息修改功能。
9、信息删除模块
定义del()函数完成航班信息删除功能。
10、相关存储结构的说明
为了能够方便的存储数据,这里利用结构体数据来存储航班信息和用户信息
航班信息:struct air{         用户信息:struct customer{
若干航班信息}s[N]             若干用户信息}c[N]
    其中N为预定义正整常数。
11、主流程图和各个模块流程图:





图(1)订票系统主流程图


图(2)查询模块流程图


图(3)订票模块流程图


图(4)退票模块流程图

        图(5)信息存储模块
左图为save();右图为c_save()


图(6)信息读取模块
左图为read();右图为c_read()


图(7)信息输出显示模块
左图为print();右图为c_print()
1、查询模块
void search()//查询模块
{
  char start[10];
  char end[10];
  char temp[3];
  char num[10];
  int n;
  do
  {
    printf("请选择查找方式:\n\n");//打印查询方式菜单
    printf(
      "1.按航班号查找\n\n"
      "2.按航线查找\n\n"
      "0.返回\n\n");
    printf(
      "请在0--2中选择:\n\n");
    scanf("%d",&n);//读取查找方式
    if(n==0)
      break;
    switch(n)
    {
    case 1:
      printf("请输入航班号:\n");
      scanf("%s",num);//航班号
      break;
    case 2:
      printf("请输入起始站名称:\n");
      scanf("%s",start);//读取起始站
      printf("请输入终点站名称:\n");
      scanf("%s",end);//终点站
      break;
    }
    read();//调用读取函数
    for(i=0;i<m;i++)
    {
      if((strcmp(s.start,start)==0&&strcmp(s.end,end)==0)||strcmp(s.num,num)==0)//按终点站起始站判断输出条件
      {
          printf("\n查找航班信息成功!\n");
          printf("航班号   起始站 终点站 起飞时间 到达时间 机票数 票价(¥) 折扣\n");
          printf(PRINT);//打印信息
          break;
      }   
    }
    printf(
      "没有您需要的信息或查找完毕:\n\n"
      "是否继续查找?请键入yes或no以回车键结束\n");
    scanf("%s",temp);
  }while(strcmp(temp,"yes")==0);//判断结束
}
2、订票模块
void book()//订票模块
{
  int n;
  char temp[3];
  do
  {
    search();//调用查询模块
    printf("请输入您要订的机票数以回车结束:\n");
    scanf("%d",&n);//读取所订机票数
    if(n<0)
    {
      printf("请输入有效的机票数!\n");//判断机票数是否出错
      break;
    }
    if(s.count!=0&&s.count>=n)//判断是否出错
    {
      s.count=s.count-n;         
      printf("请输入您的姓名:\n");
      scanf("%s",c[k].name);   //读取乘客姓名
      printf("请输入5位身份证号(ID):\n");
      scanf("%s",c[k].id);//读取id
      strcpy(c[k].num,s.num);//替换航班号
      strcpy(c[k].start,s.start);//替换起始站
      strcpy(c[k].end,s.end);//替换终点站
      strcpy(c[k].time,s.time);//替换起飞时间
      strcpy(c[k].time1,s.time1);//替换到达时间
      c[k].count=c[k].count+n;//替换机票数
      c[k].price=s.price;//替换机票价格
      c[k].zhekou=s.zhekou;//替换票价折扣
      k++;
      q++;
      save();//调用保存函数
      c_save();         
      print();
      c_print();
      printf("订票成功!\n\n");
      break;
    }
    if(s.count<n)//判断是否出错
    {
      printf("请输入有效的机票数:\n");
      break; 
    }
    printf("是否继续? 请输入yes或no以回车键结束:\n");//判断是否继续订票
    scanf("%s",temp);
  }while(!strcmp(temp,"yes"));//判断结束
}
3、退票模块
void cancel()//退票模块
{
  int n;
  char temp[3];
  do
  {
    search();//调用查询模块
    c_read();//读取乘客信息
    printf("请输入您要退的机票数目:\n");
    scanf("%d",&n);//输入所退票数
    if(n<0) //判断票数是否有效
    printf("请输入有效的机票数!\n");
    s.count=s.count+n;
    c.count=c.count-n;
    save(); //调用保存模块     
    k--;
    q--;
    c_save();//保存乘客信息
    printf("退票成功!\n\n");
    printf("是否继续? 请键入yes或no以回车结束:\n\n");//判断是否继续退票
    scanf("%s",temp);
  }while(!strcmp(temp,"yes"));//判断并跳出循环
  getchar();
}
4、信息保存模块
void save()//保存模块程序
{
  FILE *fp,*fp1;//定义文件指针
  if((fp=fopen("log.dat","wb"))==NULL)//打开文件并判断是否出错
  {
    printf("创建文件失败!\n\n");//打印出错提示
    getchar();
    return;
  }
  if((fp1=fopen("num.dat","wb"))==NULL)//打开文件并判断是否出错
  {
    printf("创建文件失败!\n\n");//打印出错提示
    getchar();
    return;
  }
  for(i=0;i<m;i++)
    if(fwrite(&s,sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错
      printf("向文件输入数据失败!\n\n");
    fprintf(fp1,"%d",m);
    fclose(fp);//关闭文件
    fclose(fp1);//关闭文件
}

void c_save()//乘客信息
{
  FILE *fp,*fp1;//定义文件指针
  if((fp=fopen("book.dat","wb"))==NULL)//打开文件并判断是否出错
  {
    printf("创建文件失败!\n\n");//打印出错提示
    getchar();
    return;
  }
  if((fp1=fopen("c_no.dat","wb"))==NULL)//打开文件并判断是否出错
  {
    printf("创建文件失败!\n\n");//打印出错提示
    getchar();
    return;
  }
  for(k=0;k<q;k++)
    if(fwrite(&c[k],sizeof(struct customer),1,fp)==0)//向文件写入数据,并判断是否出错
      printf("向文件输入数据失败!\n\n");
    fprintf(fp1,"%d",q);
    fclose(fp);//关闭文件
    fclose(fp1);//关闭文件
}
5、信息读取模块
void read()//从文件读取信息模块
{
  FILE *fp,*fp1;//定义文件指针
  if((fp=fopen("log.dat","rb"))==NULL)//打开文件,并判断是否出错
  {
    printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
    getchar();
  }
  if((fp1=fopen("num.dat","rb"))==NULL)//打开文件并判断是否出错
  {
    printf("创建文件失败!\n\n");//打印出错提示
    getchar();
    return;
  }
  fscanf(fp1,"%d",&m);
  fclose(fp1);//关闭文件
  for(i=0;i<m;i++)
  {
    fread(&s,sizeof(struct air),1,fp);//从文件中读取信息
  }
  fclose(fp);//关闭文件
}

void c_read()//乘客信息
{
  FILE *fp,*fp1;//定义文件指针
  if((fp=fopen("book.dat","rb"))==NULL)//打开文件,并判断是否出错
  {
    printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
    getchar();
  }
  if((fp1=fopen("c_no.dat","rb"))==NULL)//打开文件并判断是否出错
  {
    printf("创建文件失败!\n\n");//打印出错提示
    getchar();
    return;
  }
  fscanf(fp1,"%d",&q);
  fclose(fp1);//关闭文件
  for(k=0;k<q;k++)
  {
    fread(&c[k],sizeof(struct customer),1,fp);//从文件中读取信息
  }
  fclose(fp);//关闭文件
}
6、信息输出(显示)模块
void print()//打印模块

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -