?? train.c
字號:
#include"train.h"
train *init_train(){//初始化鏈表
train *l;
l=(train*)malloc(sizeof(train));
if(l==NULL){
exit(OVERFLOW);
}
l->next_town =NULL;
l->next_train =NULL;
return l;
}
town *init_town(){//初始化鏈表
town *l;
l=(town*)malloc(sizeof(town));
if(l==NULL){
exit(OVERFLOW);
}
l->next_town =NULL;
return l;
}
status insert_train(train *l, char *train_num,char *start_place,char *end_place,int fare,int hour)
{
train *p;
p=(train*)malloc(sizeof(train));
strcpy(p->train_num ,train_num);
strcpy(p->start_place ,start_place);
strcpy(p->end_place ,end_place);
p->fare =fare;
p->hour =hour;
p->next_town =NULL;
p->next_train =l->next_train ;
l->next_train =p;
return OK;
}
status insert_town(train *l, char *name,time_train arrive,time_train leave)
{
town *p;
p=(town*)malloc(sizeof(town));
strcpy(p->name ,name);
p->arrive .day =arrive.day ;
p->arrive .hour =arrive.hour ;
p->arrive .minute =arrive.minute ;
p->leave .day =leave.day ;
p->leave .hour =leave.hour ;
p->leave .minute =leave.minute;
p->next_town =NULL;
p->next_town =l->next_town ;
l->next_town =p;
PR("%s,%d,%d,%d,%d,%d,%d\n",p->name,p->arrive .day ,p->arrive .hour ,p->arrive.minute ,p->leave .day ,p->leave .hour ,p->leave .minute);
return OK;
}
status find_train_num(train *l,char *train_num)
{
train *p;
p=l->next_train;
for(;p!=NULL;p=p->next_train )
{
if(strcmp(train_num,p->train_num )==0)
{
PR(" 列車號 始發站 終點站 車費 時間\n");
PR("%8s%8s%8s%8d元%8d小時\n",p->train_num ,p->start_place ,p->end_place ,p->fare ,p->hour );
return OK;
}
}
PR("對不起,無 %s 列車!\n",train_num);
return ERROR;
}
status find_place(train *l,char *start_place,char *end_place,char choice)
{ //choice 0:最快,1:最省錢,2:全部
train *p;
train *q[SIZE];
train *r;
int i=0,j=0;
p=l->next_train;
for(;p!=NULL;p=p->next_train )
{
if(strcmp(start_place,p->start_place)==0&&strcmp(end_place,p->end_place)==0)
{
// PR("%s,%s,%s,%d,%d\n",p->train_num ,p->start_place ,p->end_place ,p->fare ,p->hour );
q[i]=p;
i++;
}
}
if(i>0)
{
if(choice=='0')
{
r=q[0];
for(j=1;j<i;j++)
{
if(q[j]->hour <r->hour )
{
r=q[j];
}
}
PR(" 列車號 始發站 終點站 車費 時間\n");
PR("%8s%8s%8s%8d元%8d小時\n",r->train_num ,r->start_place ,r->end_place ,r->fare ,r->hour );
return OK;
}
else if (choice=='1')
{
r=q[0];
for(j=1;j<i;j++)
{
if(q[j]->fare < r->fare )
{
r=q[j];
}
}
PR(" 列車號 始發站 終點站 車費 時間\n");
PR("%8s%8s%8s%8d元%8d小時\n",r->train_num ,r->start_place ,r->end_place ,r->fare ,r->hour );
return OK;
}
else if (choice=='2')
{
for(j=0;j<i;j++)
{
PR(" 列車號 始發站 終點站 車費 時間\n");
PR("%8s%8s%8s%8d元%8d小時\n",q[j]->train_num ,q[j]->start_place ,q[j]->end_place ,q[j]->fare ,q[j]->hour );
}
}
}
else {//當沒有一輛時.
PR("無符合條件的列車!\n");
return ERROR;
}
return ERROR;
}
status creat_train(train *l)
{
int i,j,num,town_num;
char train_num[9];
char start_place[9];
char end_place[9];
int fare;
int hour;
time_train arrive;
time_train leave;
int day_a,day_l,hour_a,hour_l,minute_a,minute_l;
char name[9];
/* char *train_num[]={"T167","T168","1363","1364","37","38","K701","K702","T61","T62"};
char *start_place[]={"北京","南昌","北京","成都","北京","武漢","北京","太原","北京","貴陽"};
char *end_place[]={"南昌","北京","成都","北京","武漢","北京","太原","北京","貴陽","北京"};
int fare[]={170,170,150,150,140,140,40,40,201,201};
int hour[]={14,14,22,22,11,11,5,5,27,27};*/
FILE *f;
char filename[]="f:\\train3.txt";
if((f=fopen(filename,"r"))==NULL)
{
printf("can not open file to read(fscanf):%s\n",filename);
return ERROR;
}
fscanf(f,"%d",&num);
PR("num:%d\n",num);
for(i=0;i<num;i++)
{
fscanf(f,"%d",&town_num);
// PR("town_num: %d\n",town_num);
fscanf(f,"%s%s%s%d%d",train_num ,start_place ,end_place ,&fare ,&hour );
PR("%s%s%s%d%d\n",train_num ,start_place ,end_place ,fare ,hour );
insert_train(l,train_num ,start_place ,end_place ,fare ,hour );
for(j=0;j<town_num;j++)
{
fscanf(f,"%s%d%d%d%d%d%d",name,&day_a,&day_l,&hour_a,&hour_l,&minute_a,&minute_l);
PR("%s,%s,%d,%d,%d,%d,%d,%d\n",train_num,name,day_a,day_l,hour_a,hour_l,minute_a,minute_l);
arrive.day =day_a;
arrive.hour =hour_a;
arrive.minute =minute_a;
leave.day =day_l;
leave.hour =hour_l;
leave.minute =minute_l;
if(l->next_train ==NULL)
{
insert_town(l,name,arrive,leave);
}
else insert_town(l->next_train,name,arrive,leave);
}//end for j
}
fclose(f);
return OK;
}
status print_train(train *l)
{
train *p=l;
town *q;
PR(" 列車號 始發站 終點站 車費 時間\n");
for(p=p->next_train ;p!=NULL;p=p->next_train )
{
PR("%8s%8s%8s%8d元%8d小時\n",p->train_num ,p->start_place ,p->end_place ,p->fare ,p->hour );
for (q=p->next_town;q!=NULL;q=q->next_town)
{
PR("車站 到達時間 開出時間\n");
// PR("%s",q->name );
PR( "%s%d(天):%d:%d%d(天):%d:%d",q->name,q->arrive .day ,q->arrive .hour ,q->arrive.minute ,q->leave .day ,q->leave .hour ,q->leave .minute);
}
PR("\n");
}
return OK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -