#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;
#define _CRT_SECURE_NO_WARNINGS
class Tair //通过定义一个类来定义数据录入的函数
{
char flight[20]; char data[20]; char start[20];
char finish[20]; char stime[20]; char ftime[20]; int price;
public:
Tair()
{};
Tair(char fl[20], char D[20], char S[20], char Fin[20], char st[20], char ft[20], int pr);
friend void main(); //将主函数定义为友元函数,方便访问类中的成员
};
Tair::Tair(char fl[20], char D[20], char S[20], char Fin[20], char st[20], char ft[20], int pr)
{
strcpy(flight, fl); //
strcpy(data, D);
strcpy(start, S);
strcpy(finish, Fin);
strcpy(stime, st);
strcpy(ftime, ft);
price = pr; //
}
void main()
{
int p = 0; //全局变量,用于选择菜单时的输入
Tair *s[100]; //类定义的指针将所录入的数据按类中的形式分别存储
ofstream *file[100];
int i = 0; //全局变量,用于做每个录入数据的下标
int j = 0;
int chris1 = 0;//用于判断do—while语句
while (p != 6)
{
cout << "
************ 欢迎来到民航售票系统,请选择您需要的操作并输入相应数字! ***********
";
cout << "(1)录入信息
";
cout << "(2)按起点查出所有航班的信息
";
cout << "(3)按终点查出所有航班的信息
";
cout << "(4)按日期、航班号查询航班信息
";
cout << "(5)按起点站统计航班数
";
cout << "(6)退出
";
do //判断输入指令是否正确
{
cin >> p;
if ((p >= 1 && p <= 6))
chris1 = 1;
else
cout << "指令错误!请重新输入:" << endl;
} while (chris1 == 0);
do
{
switch (p)
{
case 1://录入
{
char flight[20], data[20], start[20], finish[20], stime[20], ftime[20];
int price; char c; //用于在小项中选择是否继续操作
do
{
cout << "请依次输入航班号、日期、起点站、终点站、起飞时间、到达时间、票价
";
cin >> flight >> data >> start >> finish >> stime >> ftime >> price;
fstream outfile, infile; //作一个文本文档在文件夹中用于显示所录入的数据
outfile.open("flight.txt", ios::out | ios::app); //以向文件追加写入的方式打开文件flight.txt
if (!file)
{
cout << "flight.txt can not open.
";
return;
}
outfile << "航班号:" << flight << " " << "日期:" << data << " " << "起点站:" << start << " " << "终点站:" << finish << " " << "起飞时间:" << stime << " " << "到达时间:" << ftime << " " << "票价:" << price << endl;
outfile.close();
infile.open("flight.txt", ios::in);
if (!file) //判断文件是否打开
{
cout << "f1.txt can not open.
";
return;
}
char ch;
while (infile.get(ch))
cout << ch;
cout << endl << endl;
infile.close();
j++;
s[i] = new Tair(flight, data, start, finish, stime, ftime, price);
i++;
cout << "已录入" << i << "条航班信息,想继续录入吗(y/n)" << endl;
cin >> c;
chris1 = 0;
if (c != 'y'&&c != 'n')
{
cout << "指令错误!请重新输入!" << endl;
cin >> c;
}
}
while (c == 'y');
break;
}
case 2://按起点站查询
{
char st[20]; char c; int j = 0; int flag;
if (i == 0)
{
cout << "系统中没有航班信息,请先进行录入操作!" << endl; break;
}
do
{
flag = 0;
cout << "请输入要查询的航班的起点站: " << endl;
cin >> st;
cout << "您要查询的起点站为%c的航班信息如下:" << st << endl << endl;
for (int j = 0; j<i; j++)
{
if (strcmp(st, (*s[j]).start) == 0)//比较字符串相等
{
flag = 1;
cout << "航班号:" << (*s[j]).flight << " 日期:" << (*s[j]).data << " 终点站:" << (*s[j]).finish << " 起飞时间:" << (*s[j]).stime << " 到达时间:" << (*s[j]).ftime << " 票价:" << (*s[j]).price << endl;
}
}
if (flag == 0) cout << "对不起,您查询的航班信息不存在!" << endl << endl;
cout << "您想继续查询吗?(y/n):";
cin >> c;
if (c != 'n'&&c != 'y')
{
cout << "指令错误!请重新输入:" << endl;
cin >> c;
}
} while (c == 'y');
break;
}
case 3://按终点站查询
{
char fin[20]; char c; int j = 0; int flag;
if (i == 0)
{
cout << "系统中没有航班信息,请先进行录入操作!" << endl; break;
}
do
{
flag = 0;
cout << "请输入要查询的航班的终点站: " << endl;
cin >> fin;
cout << "您要查询的终点站为" << fin << "的航班信息如下:" << endl << endl;
for (int j = 0; j<i; j++)
{
if (strcmp(fin, (*s[j]).finish) == 0)
{
flag = 1;
cout << "航班号:" << (*s[j]).flight << " 日期:" << (*s[j]).data << " 起点站:" << (*s[j]).start << " 起飞时间:" << (*s[j]).stime << " 到达时间:" << (*s[j]).ftime << " 票价:" << (*s[j]).price << endl;
}
}
if (flag == 0) cout << "对不起,您查询的航班信息不存在!" << endl;
cout << "您想继续查询吗?(y/n):";
cin >> c;
if (c != 'n'&&c != 'y')
{
cout << "指令错误!请重新输入:" << endl;
cin >> c;
}
} while (c == 'y');
break;
}
case 4://按日期、航班号查询
{
char dat[20], fli[20]; char c; int j, flag;
if (i == 0)
{
cout << "系统中没有航班信息,请先进行录入操作!" << endl; break;
}
do
{
flag = 0;
cout << "请输入要查询的航班的日期和航班号: " << endl;
cin >> dat >> fli;
cout << "您要查询的日期为" << dat << ",航班号为" << fli << "的航班信息如下:" << endl << endl;
for (j = 0; j<i; j++)
{
if (strcmp(dat, (*s[j]).data) == 0 && strcmp(fli, (*s[j]).flight) == 0)
{
flag = 1;
cout << "起点站:" << (*s[j]).start << " 终点站:" << (*s[j]).finish << " 起飞时间:" << (*s[j]).stime << " 到达时间:" << (*s[j]).ftime << " 票价:" << (*s[j]).price << endl;
}
}
if (flag == 0) cout << "对不起,您查询的航班信息不存在!" << endl;
cout << "您想继续查询吗?(y/n):";
cin >> c;
if (c != 'n'&&c != 'y')
{
cout << "指令错误!请重新输入:" << endl;
cin >> c;
}
} while (c == 'y');
break;
}
case 5://按起点或终点统计一周的航班数
{
int count, flag, j;
char str[20]; char c;
if (i == 0)
{
cout << "
系统中没有航班信息,请先进行录入操作!" << endl; break;
}
do
{
flag = 0; count = 0;
cout << "
请输入要统计的航班起点站:" << endl;
cin >> str;
for (j = 0; j<i; j++)
{
if (strcmp(str, (*s[j]).start) == 0)
{
flag = 1;
count++;
}
}
if (j >= i && flag == 0)
cout << "对不起,您查询的航班信息不存在!" << endl << endl;
else
cout << "
您要查询的起点站为" << str << "的航班数为:" << count << endl << endl;
cout << "您想继续查询吗?(y/n):";
cin >> c;
if (c != 'n'&&c != 'y')
{
cout << "指令错误!请重新输入:" << endl;
cin >> c;
}
} while (c == 'y');
break;
}
case 6://退出
{
cout << endl << "********* 感谢您的使用,( ^_^ )/~~拜拜! **********" << endl;
break;
}
}break;
} while (chris1 == 0);
}
}