二,飞机订票系统
假定民航机场共有 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");
}
不足之处,请多指教!