#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include <Windows.h>
#define MAXN 10000
#define max 10
#define p 23
int Work();
int Delete();
void insert(int adr);
void Number(int key);
void Departure(char temp[]);
void Terminal(char temp[]);
void Start(float temp);
void Arrival(float temp);
void FileOutput();
void Output(int adr);
int hashlen = 0;
typedef struct
{
char departure[6];
char terminal[6];
float start;
float arrive;
int num;
float date;
}flight;
flight line;
typedef struct
{
flight data;
int cnt;
}Hash;
Hash ha[MAXN];
int main()
{
Work();
FileOutput();
return 0;
}
int Work()
{
while (1)
{
printf("********欢迎使用航班信息查询和检索系统********\n");
printf("1.清屏\t\n");
printf("2.航班号\t3.起点站\t\n");
printf("4.终点站\t5.起飞时间\t\n");
printf("6.到达时间\t7.退出系统\t\n");
printf("**********************************************\n");
printf("请选择将要使用的功能\n");
int t, temp; char temp2[5];
float temp3;
scanf("%d", &t);
switch (t)
{
case 1:Delete();
break;
case 2:
{
printf("请输入航班号");
scanf("%d", &temp);
Number(temp);
break;
}
case 3:
{
printf("请输入起点站");
getchar();
gets_s(temp2);
Departure(temp2);
break;
}
case 4:
{
printf("请输入终点站");
getchar();
gets_s(temp2);
Terminal(temp2);
break;
}
case 5:
{
printf("请输入起飞时间");
scanf("%f", &temp3);
Start(temp3);
break;
}
case 6:
{
printf("请输入到达时间");
scanf("%f", &temp3);
Arrival(temp3);
break;
}
case 7:
{
exit(0);
break;
}
}
}
}
int Delete()
{
system("cls");
return 0;
}
void Number(int key)
{
int i=0, adr;
int k = key;
adr = k % p;
insert(adr);
if (ha[adr].data.num == key)
{
Output(adr);//在屏幕上显示
}
else
printf( "对不起,查无此航班!\n" );
}
void Departure(char temp[])
{
int i=0, flag = 0;
for (i = 0; i < MAXN; ++i)//顺序查找
{
if (flag) break;
else if (strcmp(ha[i].data.departure,temp)==0)
{
Output(i);
flag = 1;//标记是否查询到相关信息
}
}
if (!flag)
printf( "对不起,查无此航班!\n" );
}
void Terminal(char temp[])
{
int i, flag = 0;
for (i = 0; i < MAXN; ++i)
{
if (flag)
break;
else if (strcmp(ha[i].data.terminal,temp)== 0)
{
Output(i);
flag = 1;
}
}
if (!flag)
printf("对不起,查无此航班!\n");
}
void Start(float temp)
{
int i, flag = 0;
i = temp / p;
if (ha[i].data.start==temp)
{
Output(i);
flag = 1;
}
if (!flag)
printf( "对不起,查无此航班!\n" );
}
void Arrival(float temp)
{
int i, flag = 0;
i = temp / p;
if (ha[i].data.arrive==temp)
{
Output(i);
flag = 1;
}
if (!flag)
printf ( "对不起,查无此航班!" );
}
void Output(int adr)
{
printf("航班号\t起点站\t到达站\t班期\t起飞时间\t到达时间\t\n");
printf("%d\t%s\t%s\t%.2f\t",ha[adr].data.num , ha[adr].data.departure ,ha[adr].data.terminal,ha[adr].data.date );
printf("%.2f\t%.2f\t",ha[adr].data.start , ha[adr].data.arrive );
printf("\n");
}
void FileOutput()
{
FILE* fp;
fp= fopen("data.txt", "a+");
while (!feof(fp)) {
fscanf(fp, "%d,%s,%s,%f,%f,%f", &line.num, line.departure, line.terminal, &line.start,&line.arrive, &line.date);
}
fclose(fp);
}
void insert(int adr) {
ha[adr].data.num = line.num;
ha[adr].data.start = line.start;
strcpy(ha[adr].data.terminal, line.terminal);
ha[adr].data.arrive = line.arrive;
strcpy(ha[adr].data.departure, line.departure);
}