飞机订票系统设计
[要求]
假定民航机场共有 n 个航班,每个航班有一航班号、确定的航线
(起始站、终点站)、确定的飞行时间(星期几)和一定的成员定
额。试设计一民航订票系统,使之能提供下列服务:
(1)航班信息录入功能(航班信息用文件保存)
(2)航班信息浏览功能
(3)查询航线:(至少一种查询方法)
1 按航班号查询
2 按起点站查询
3 按终点站查询
4 按飞行时间查询
[提示]
(1)需求分析
航班信息用文件保存:航班信息浏览功能需要提供显示操作:要查
询航线需要提供查找功能,可提供按照航班号、起点站、终点站和
飞行时间查询;另外要提供键盘式选择菜单以实现功能选择。
(2)建立航班结构体,结构体成员包括航班号、起始站、终点站、飞
行时间(星期几)、预售票总数、已售票数。
// 调试.cpp : Defines the entry point for the console application.
//
// 韩亮.cpp : Defines the entry point for the console application.
//
// 8888.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "header.h"
#define N 10000
void input(); //输入航班信息
void print(); //输出航班信息
void save(); //保存航班信息
void read(); //读取航班信息
void search(); //查找航班信息
void printf_one(int i);
void main()
{
int j;
printf(" --------------您好,欢迎进入中国民航订票系统!-------------\n");
printf("===============================================================
=================\n");
do
{
printf(" -------- ☆ 1.输入航班信息 ☆-------- \n\n"
" -------- ☆ 2.浏览航班信息 ☆-------- \n\n"
" -------- ☆ 3.查找航班信息 ☆-------- \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:search();//调用查找模块
break;
case 0:;
break;
}
}while(j!=0); //判断结束
printf("谢谢使用,再见!\n");
}//主函数结束
#define N 10000
int i;
int m=0;
struct air //定义结构体数组
{
int num;
char start[20];
char over[20];
char time[10];
int count;
}s[N];
;
void input();
void browse();
void print();
void read();
void save();
void search();
void input()//输入模块程序
{
char f[]="hanliang"; //设置密码
int y;
printf("请输入密码并以回车键结束:\n\n");
scanf("%s",f); //读取密码
if(strcmp(f,"hanliang")==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 print()//打印模块
{
char w[10];
printf("航班号 起始站 终点站 时间 机票数\n");
read();//调用读取文件函数
printf("请按任意键回车键结束返回上层菜单以:\n");
scanf("%s",w);
}
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);//从文件中读取信息
printf("%5d %8s %9s %8s %8d \n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count);
}
fclose(fp);//关闭文件
}
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);