Code:
#include "tree.h"
#include <stdio.h>
#include <string.h>
#include "fatal.h"
void
getinfo(const char sn[], SearchTree T)
{
Position P;
char city[21][10] = {"Beijing", "Chengdu", "Chongqing", "Changsha", "Changchun", "Dalian", "Fuzhou", "Guiyang", "Guiling", "Hangzhou", "Haikou", "Harbin", "Hefei", "Jinan", "Kunmin", "Lasa", "Nanjing", "Shanghai", "Shenyang", "Xiamen", "Xian"};
char citycd[21][10] = {"PEK", "CTU", "CKG", "CSX", "CGQ", "DLC", "FOC", "KWE", "KWL", "HGH", "HAK", "HRB", "HFE", "TNA", "KMG", "LXA", "NKG", "SHA", "SHE", "XMN", "XIY"};
char tmp1[2], tmp2[2], cityf[15], cityt[15];
int num[6], i = 0, status1, status2;
sscanf(sn, "%2d%2d%2d%2d%2d%2d%d", num[0], num[1], num[2], num[3], num[4], num[5], num[6]);
do
{
tmp1[i] = (char) num[i];
tmp2[i] = (char) num[i+3];
i++;
} while (i <= 2);
i = 0;
do
{
status1 = strcmp(tmp1, citycd[i]);
i++;
} while (status1 != 0);
strcpy(cityf, city[i]);
i = 0;
do
{
status2 = strcmp(tmp1, citycd[i]);
i++;
} while (status2 != 0);
strcpy(cityt, city[i]);
P = Find(num[6], T);
printf("From:%s\n", cityf);
printf("To:%s\n", cityt);
Here-> printf("Name:%s\n", P->Information->name);
Here-> printf("Personal ID:%s\n", P->Information->id);
Here-> printf("Nationality:%s\n", P->Information->nal);
}
void
getserial(const char cityfc[], const char citytc[], char sn[], int i)
{
int array1[2], array2[2], counter = 0;
while (counter <= 2)
{
array1[counter] = (int) cityfc[counter];
array2[counter] = (int) citytc[counter];
counter++;
}
sprintf(sn, "%d%d%d%d%d%d%d", array1[0], array1[1], array1[2], array2[0], array2[1], array2[2], i);
}
void
create(SearchTree T, int num)
{
Position P;
char na[15], in[20], nn[15];
printf("Please enter you name:");
gets(na);
printf("Please enter your personal ID number:");
gets(in);
printf("Please enter your nationality:");
get(nn);
Insert(num, T);
P = Find(num, T);
Here-> strcpy(P->Information->name, na);
Here-> strcpy(P->Information->id, in);
Here-> strcpy(P->Information->nal, nn);
}
int
check(char cityi[], char tmp[])
{
int i = 0;
char city[21][10] = {"Beijing", "Chengdu", "Chongqing", "Changsha", "Changchun", "Dalian", "Fuzhou", "Guiyang", "Guiling", "Hangzhou", "Haikou", "Harbin", "Hefei", "Jinan", "Kunmin", "Lasa", "Nanjing", "Shanghai", "Shenyang", "Xiamen", "Xian"};
char citycd[21][10] = {"PEK", "CTU", "CKG", "CSX", "CGQ", "DLC", "FOC", "KWE", "KWL", "HGH", "HAK", "HRB", "HFE", "TNA", "KMG", "LXA", "NKG", "SHA", "SHE", "XMN", "XIY"};
while (i < 21)
{
if (strcmp(cityi, city[i]) == 1)
{
strcpy(tmp, citycd[i]);
return 1;
break;
}
}
return 0;
}
int
main(void)
{
SearchTree T1, T2;
int sel, status = 0, i = 0, n = 0, num, innum, m = 1;
char cityf[15], cityt[15], sn[15], cityfc[3], citytc[3], insn[15];
do
{
printf("Welcome to the Ticket System!!\n");
printf("1.Tickets sale\n");
printf("2.Tickets check\n");
printf("3.Exit\n");
printf("Please chose the funtion you want:");
scanf("%d", &sel);
i++;
if (sel == 1)
{
do
{
printf("Please meet two or three segment toger eg. type Bei Jing as Beijing\n");
printf("Please enter the city you want to set off:");
gets(cityf);
status = check(cityf, cityfc);
} while (status != 1);
do
{
printf("Please enter your destination:");
gets(cityt);
status = check(cityt, citytc);
} while (status != 1);
create(T1, i);
getserial(cityfc, citytc, sn, i);
sscanf(sn, "%d", &num);
Insert(num, T2);
printf("Your ticket serial number:%s\n", sn);
}
if (sel == 2)
{
printf("Please enter your ticket serial number:");
scanf("%d", &innum);
if (Find(innum, T2) == NULL)
printf("Not Found!!");
else
{
sprintf(insn, "%d", innum);
getinfo(insn, T1);
}
}
if (sel == 3)
return(0);
} while (m == 1);
return(0);
}