#include #include #include #include #include #define N 100 using namespace std;
typedef struct node//定义信息结构体 {
char num[10];// 航班号
int hour;//起飞时间小时
int minitues;//起飞时间分钟
char start[10];//起始
char end[10];//终点
float prize;//经济舱票价
int last;//剩余座位 }FLIGHT;
typedef struct Order//订单信息 {
char name[10];//乘客姓名
char num[10];//航班号
int count;//订票数量 }Order;
cla flight//定义类 {
private: FLIGHT stu[N];//每个元素对应一条信息
Order psg[N];//订单
int len;//航班总数
int lenp;//订票者总数 public:
flight();
~flight(); void input();//录入信息
void show();//浏览
void sall();//售票
void back();//退票
void search(); // 信息查询
void search2(); // 信息查询(起点终点)
char menu();//菜单
};
flight stud;
char filename[]=\"flight.txt\";
flight::flight(){}//构造函数 flight::~flight(){}//析构函数
bool CheckTime(int h1,int m1,int h2,int m2)//判断两个时间前后
{ if(h1
return true; else if(h1==h2) {
if(m1
return true;
else
return false; } else
return false; } void flight::show()//浏览 {
system(\"cls\");//清屏
cout
所有航班信息如下:\"
起飞时间
起点
终点
经济舱票价
剩余座位
备注\"
for(int i=0;i
printf(\"%-10s%-2.2d:%-2.2d
%-10s%-10s%-12.2f%-10d\",stu[i].num,stu[i].hour,stu[i].minitues,stu[i].start,stu[i].end,stu[i].prize,stu[i].last);
time_t t;
struct tm *tm;
t=time(NULL);//获取当前系统时间
tm=localtime(&t);
if(CheckTime(stud.stu[i].hour,stud.stu[i].minitues,tm->tm_hour,tm->tm_min)==true)//如果起飞时间在当前时间之前 输出此次航班已发出
cout
else
cout
} cout
void flight::back()//退票 {
char name[20];
char s[20];
system(\"cls\");//清屏
cout>s;
for(int i=0;i
if(strcmp(stud.stu[i].num,s)==0)
break;//存在 结束循环
if(i==stud.len)//这二者相等说明查找完所有信息也没找到输入信息,说明输入航班编号不存在
{
cout
system(\"pause\");//任意键继续
return; }
time_t t;
struct tm *tm;
t=time(NULL);//获取当前系统时间
tm=localtime(&t); if(CheckTime(stud.stu[i].hour,stud.stu[i].minitues,tm->tm_hour,tm->tm_min)==true)
{
cout
system(\"pause\");//任意键继续
return; } int j=i;
cout>name; for(i=0;i
if(strcmp(stud.psg[i].name,name)==0 && strcmp(stud.psg[i].num,s)==0)//查询这个名字是否相同
{
stud.stu[j].last+=stud.psg[i].count;//退票
stud.psg[i]=stud.psg[stud.lenp-1];///删除这个订单
stud.lenp--;//订单数减一
cout
system(\"pause\");//任意键继续
return;
} } cout
system(\"pause\");//任意键继续
}
void flight::sall()//售票 {
char s[20];
system(\"cls\");//清屏
cout>s;
for(int i=0;i
if(strcmp(stud.stu[i].num,s)==0)
break;//存在 结束循环
if(i==stud.len)//这二者相等说明查找完所有信息也没找到输入信息,说明输入航班编号不存在
{
cout
system(\"pause\");//任意键继续
return; }
if(stud.stu[i].last
{
cout
system(\"pause\");//任意键继续
return; }
time_t t;
struct tm *tm;
t=time(NULL);//获取当前系统时间
tm=localtime(&t); if(CheckTime(stud.stu[i].hour,stud.stu[i].minitues,tm->tm_hour,tm->tm_min)==true)
{
cout
system(\"pause\");//任意键继续
return; }
int j=i; i=stud.lenp; strcpy(stud.psg[i].num,stud.stu[i].num); cout>stud.psg[i].count;
while(stud.psg[i].count>stud.stu[i].last) {
cout
cin>>stud.psg[i].count;
} cout>stud.psg[i].name;
stud.stu[j].last-=stud.psg[i].count;//剩余票数
stud.lenp++; cout
void flight::input()//录入信息 {
system(\"cls\");//清屏
for(int i=stud.len;i
{
cout
cin>>stud.stu[i].num;
cout
char ch;
cin>>stud.stu[i].hour>>ch>>stud.stu[i].minitues;
cout
cin>>stud.stu[i].start;
cout
cin>>stud.stu[i].end;
cout
cin>>stud.stu[i].prize;
cout
cin>>stud.stu[i].last;
stud.len++;//个数加1
cout
while(1)
{
cin>>ch;
if(ch==\'y\' || ch==\'Y\' || ch==\'n\' || ch==\'N\')
break;
else
cout
}
if(ch==\'n\' || ch==\'N\')
break;
} }
void flight::search() // 信息查询 {
char s[20];
system(\"cls\");//清屏
cout>s;
for(int i=0;i
if(strcmp(stud.stu[i].num,s)==0)
break;//存在 结束循环
if(i==stud.len)//这二者相等说明查找完所有信息也没找到输入信息,说明输入航班编号不存在
{
cout
system(\"pause\");//任意键继续
return; }
cout
查询结果如下:\"
起飞时间
起点
终点
经济舱票价
剩余座位
备注\"
printf(\"%-10s%-2.2d:%-2.2d
%-10s%-10s%-12.2f%-10d\",stu[i].num,stu[i].hour,stu[i].minitues,stu[i].start,stu[i].end,stu[i].prize,stu[i].last);
time_t t;
struct tm *tm;
t=time(NULL);//获取当前系统时间
tm=localtime(&t);
if(CheckTime(stud.stu[i].hour,stud.stu[i].minitues,tm->tm_hour,tm->tm_min)==true)//如果起飞时间在当前时间之前 输出此次航班已发出
cout
else
cout
cout
void flight::search2() // 信息查询(按线路) {
char s1[20],s2[20];
system(\"cls\");//清屏
cout>s1;
cout>s2;
for(int i=0;i
if(strcmp(stud.stu[i].start,s1)==0 && strcmp(stud.stu[i].end,s2)==0)
break;//存在 结束循环
if(i==stud.len)//这二者相等说明查找完所有信息也没找到输入信息,说明输入航班编号不存在
{
cout
system(\"pause\");//任意键继续
return; }
cout
查询结果如下:\"
起飞时间
起点
终点
经济舱票价
剩余座位
备注\"
for( i=0;i
if(strcmp(stud.stu[i].start,s1)==0 && strcmp(stud.stu[i].end,s2)==0)
{
printf(\"%-10s%-2.2d:%-2.2d
%-10s%-10s%-12.2f%-10d\",stu[i].num,stu[i].hour,stu[i].minitues,stu[i].start,stu[i].end,stu[i].prize,stu[i].last);
time_t t;
struct tm *tm;
t=time(NULL);//获取当前系统时间
tm=localtime(&t);
if(CheckTime(stud.stu[i].hour,stud.stu[i].minitues,tm->tm_hour,tm->tm_min)==true)//如果起飞时间在当前时间之前 输出此次航班已发出
cout
else
cout
} cout
char flight::menu()//菜单 { char c;
system(\"cls\");//清屏
cout
╔═══════════════════════════╗\\n\"; cout
║
1、录入航班信息
║\\n\";
cout
╠═══════════════════════════╣\\n\"; cout
║
2、浏览航班信息
║\\n\"; cout
╠═══════════════════════════╣\\n\";
cout
║
3、查询路线(按编号)
║\\n\";
cout
╠═══════════════════════════╣\\n\"; cout
║
4、查询路线(按线路)
║\\n\";
cout
╠═══════════════════════════╣\\n\"; cout
║
5、售票
║\\n\";
cout
╠═══════════════════════════╣\\n\"; cout
║
6、退票
║\\n\";
cout
╠═══════════════════════════╣\\n\"; cout
║
0、退出系统
║\\n\";
cout
╚═══════════════════════════╝\\n\"; cout
请选择:\";
cin>>c;
return c; }
int main() {
while(1)
{
char ch;
ch=stud.menu();//获取选择
switch(ch)
{
case \'1\': stud.input(); break;//录入航班信息
case \'2\': stud.show(); break;//浏览航班信息
case \'3\': stud.search(); break;// 查询路线
case \'4\': stud.search2(); break;// 查询路线(按线路)
case \'5\': stud.sall(); break;// 售票
case \'6\': stud.back();
break;// 退票
case \'0\': exit(0);//退出
}
}
return 0; }