第一篇:鐵路客運售票模擬系統
學生實習報告
課程名稱_ 數據結構與數據處理應用訓練 題目名稱 學生學院 專業班級
學 號
學生姓名
指導教師
2014 年 2 月
日
[單擊此處添加課程設計題目]
XXX
計算分院 計算1103
【摘要】
模擬鐵路客運售票系統,采用鏈表結構儲存數據,有訂票、退票、查詢、修改、讀取文件等功能模塊,整體系統運行為一個無限循環,根據輸入指令進行不同操作,主要知識有結構的定義,鏈表的操作,循環的應用。
【關鍵詞】
鐵路客運售票模擬系統,查詢車次,車票預訂,辦理退票 內容與要求
鐵路客運售票模擬系統 【問題描述】
鐵路客運售票系統的業務活動包括:查詢車次、車票預訂和辦理退票。試設計一個鐵路客運售票模擬系統,使上述業務可以借助計算機來完成。【具體要求】
鐵路客運售票處的計算機系統可以為客戶提供下列各項服務:
1. 查詢車次:根據旅客提供的出發站、到達站、出發日輸出下列信息:
車次號、出發站、到達站、出發時間、到達時間、各類車票的余票額(包括軟臥、硬臥、軟座、硬座、無座)等。還可根據客戶要求,輸出某車次從起點站到終點站的各站點的名稱及出發時間和到達時間。
2.承辦訂票業務:根據客戶提出的要求(日期、車次號、座位類別、訂票數額)查詢該車次該座位類別票額情況,若尚有余額,則為客戶辦理訂票手續,并輸出座位號(座位號信息的輸出可作為選做部分);若無票或余票額少于訂票額,則需要重新詢問客戶要求。若客戶需要,可預約登記排隊等候。
3.承辦退票業務:根據客戶提供的情況(日期、車次號、座位類別、退票數額),為客戶辦理退票手續,然后查詢該車次該座位類別是否有人預約登記,首先詢問排在第一的客戶,若退票數能滿足他的要求,則為他辦理訂票手續,否則依次詢問其他排隊預約的客戶。為簡化問題,可以規定同一個座位只能售出一次票,即不考慮同一個座位分不同路段出售多次。還可規定只能查詢或預訂未來3天之內的車票,即每個車次只需分別保存3個班次的售票情況。【實現提示】
每個車次應包含的信息有:車次號、出發日、起點站名、各中途站名、終點站名、各站點的到達時間與出發時間、各類座位車票定額、各類座位余票額、各座位是否已售出信息(選做內容,可用一張表記錄每個座位是否已售出)、各類座位已訂票的客戶名單(包括姓名、出發站、到達站、訂票額、座位號(選做))和各類座位預約登記的客戶名單(包括姓名、出發站、到達站、所需票額)。這最后兩項顯然可以分別用線性表和隊列實現(每一類別的座位需有各自的線性表和隊列)。為查找方便,已訂票客戶的線性表應按客戶姓名有序,并且,為插入和刪除方便,應以鏈表作存儲結構;由于預約人數無法預料,隊列也應以鏈表作存儲結構。整個系統需匯總各車次的情況記錄在一張線性表上,由于車次基本不變,可采用順序存儲結構,并按車次有序,因為每個車次需保存未來3天的售票情況,可考慮每個車次的每一班次是這張表上的一個記錄,也可以每個車次是一個記錄,里面分別包含3趟班次的售票情況。每個記錄需定義成一個結構類型。【測試數據】
自己設計,報告上要求寫出多批數據測試結果。【實現說明】
每個同學可以根據自己的實際情況對該鐵路客運售票模擬系統的功能進行增減。有能力的同學在完成上述功能的基礎上,可以充分發揮自己的想象力,增加該系統的功能和其它服務項目,如可以按照實用性來完善上述模擬系統,考慮輸出座位號信息、同一個座位允許分不同路段出售多次等;能力較弱的同學則可以簡化上述系統,如不考慮預約登記排隊等候車票、不考慮各種座位類別(即每個車次只有一種座位)、還可以不考慮中途站點(即每個車次只設置起點站與終點站,中間不停)等。總體設計
開始判斷操作指令繼續下一輪指令1.訂票先根據出發站和到達站查詢列車班次,然后訂票2.退票根據姓名,時間,車次,座位類別進行退票3.查詢輸出所有路線信息與乘客信息5.讀取文件讀取存檔文件中的路線信息和乘客信息1.增加路線輸入增加路線信息4.修改路線判斷操作指令2.刪除路線輸入刪除路線日期與車次6.退出退出程序3.修改密碼3 詳細設計
路線信息
typedef struct trainline //路線 { char date[9];//日期
char train_num[8];//車次號 struct station *sta;//途經站
char begin_time[6];//出發時間
char end_time[6];//到達時間
int RW;//軟臥余量
int YW;//硬臥余量
int RZ;//軟座余量
int YZ;//硬座余量
int WZ;//無座余量 struct trainline *next;//下一個節點 }trainline;
停靠站點信息
typedef struct station//停靠站 { char stop[9];//停靠站名
char stop_time;//停靠時間
struct station *next;//下一個節點 }station;
乘客訂票信息
typedef struct customer //乘客 { char name[9];//顧客名
char date[9];//日期
char train_num[9];//車次號 int seat_level;//座位類別
int seat_num;//座位數量
struct customer *next;//下一個節點 }customer;
找到路線鏈表中的末尾節點
status increase_train(trainline *l,char *date,char *train_num,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//增加路線 將需要插入的路線信息插入到鏈表中指定節點之后
status insert_trainline(trainline **p,char *date,char *train_num,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//trainline鏈表插入操作
將需要插入的乘客訂票信息插入到鏈表中
status insert_customer(customer **p,char *name,char *date,char *train_num,int seat,int seat_num)//customer鏈表插入操作
刪除某條路線,首先搜索到該路線,然后在鏈表中跳過該節點
status delete_trainline(trainline *h,char *date,char *train_num)//刪除路線
刪除某條乘客訂票記錄,首先搜索到該記錄,然后在鏈表中跳過該節點
status delete_customer(customer *h,char *date,char *train_num)//刪除顧客 修改路線座位余量,首先搜索到該路線,然后刪除對應的座位類別的余量
trainline *modefy_trainline(trainline *l,char *date,char *train_num,int seat_level,int num)//修改trainline鏈表中的數據 退票,首先搜索到該訂票記錄,然后確定退票數量,如果大于訂票數量,則減去退票數量;如果等于退票數量,則刪除此訂票記錄;如果小于,則輸出數量不足,退票失敗。如果退票成功,則路線中相應座位余量增加。
status delete_cus(customer *h,trainline *l,char *name,char *date,char *train_num,int level,int num)//乘客退票
以下兩個函數是為了方便操作所賦予的初始化數據
status creat_trainline(trainline **l)//創建trainline單鏈表 status creat_customer(customer **l)////創建customer單鏈表
訂票查詢,根據提供站點,查找路線,判斷同意路線中是否有這兩個站點,并且順序正確 void book_search(trainline *l,char *begin_place,char *end_place)//訂票查詢函數 訂票,首先找到該車次,然后判斷余量是否夠,如果夠,則訂票;反之,訂票失敗。訂票成功,則增加乘客訂票記錄,兵減少相應車次的座位余量。
status book(trainline *l,char *date,char *train_num,customer *c,char *name,int seat_level,int num)//訂票函數
根據路線鏈表和乘客鏈表逐個輸出信息
status print_trainline(trainline *l)//打印路線信息 status print_customer(customer *l)//打印乘客信息
根據路線鏈表和乘客鏈表,逐個在 C盤 trainline.dat 和 customer.dat 文件中輸出信息 status save_trainline(trainline *l)//保存trainline.dat status save_customer(customer *l)//保存乘客信息 customer.dat
從 C盤 trainline.dat 和 customer.dat 文件中讀取記錄,并用訂票和增加路線函數逐條添加到系統中
status load_trainline(trainline *l)//導入路線信息,必須為5個站 status load_customer(customer *l)//導入乘客信息 程序測試 查詢路線、乘客信息
status print_trainline(trainline *l)//打印路線信息 status print_customer(customer *l)//打印顧客信息 訂票 首先查詢 出發站-終點站
void book_search(trainline *l,char *begin_place,char *end_place)//訂票查詢函數
然后根據查詢結果購買自己需要車次 status book(trainline *l,char *date,char *train_num,customer *c,char *name,int seat_level,int num)//訂票函數
訂票后的查詢結果 退票(可以全部退完,也可以退一部分)status delete_cus(customer *h,trainline *l,char *name,char *date,char *train_num,int level,int num)//乘客退票
退票后查詢結果 修改路線 默認密碼12345678 代碼:pass[9]=“12345678” 增加路線 status increase_train(trainline *l,char *date,char *train_num, station *stat,char *begin_time,char *end_time, int RW,int YW,int RZ,int YZ,int WZ)//增加路線
注意時間“:”為英文字符,輸入中文字符會報錯
增加路線后查詢結果 刪除路線
刪除路線后查詢結果 讀入文件
status load_trainline(trainline *l)//導入路線信息,必須為5個站 status load_customer(customer *l)//導入乘客信息
隱藏密碼函數
status inputpassword(char cc[9])//隱藏密碼為*號的函數
系統存檔 status save_trainline(trainline *l)//保存trainline.dat status save_customer(customer *l)//保存顧客信息 customer.dat
每完成一輪操作 系統自動存檔一次,如果需要繼續上一回的存檔,請打開后直接選5讀入存檔總結
[單擊此處添加正文]
參考文獻
1.徐孝凱.數據結構實用教程.清華大學出版社.2006.9
附錄
Slove.h #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 #define OVERFLOW-2 #define PR printf #define RUANW 1 #define YINGW 2 #define RUANZ 3 #define YINGZ 4 #define WUZ 5
typedef int status;typedef struct trainline //路線 { char date[9];//日期
char train_num[8];//車次號 //char begin_place[9];//出發地
//char end_place[9];//目的地
struct station *sta;//途經站
char begin_time[6];//出發時間
char end_time[6];//到達時間 // int total;//座位總數 // int left;int RW;//軟臥余量 int YW;//硬臥余量
int RZ;//軟座余量
int YZ;//硬座余量
int WZ;//無座余量
struct trainline *next;//下一個節點 }trainline;
typedef struct station//停靠站 { char stop[9];//停靠站名
char stop_time;//停靠時間
struct station *next;//下一個節點 }station;
typedef struct customer //乘客 { char name[9];//顧客名
char date[9];//日期
char train_num[9];//車次號
int seat_level;//座位類別
int seat_num;//座位數量
struct customer *next;//下一個節點 }customer;
station *init_station()//初始化途經站 { station *l;l=(station*)malloc(sizeof(station));
if(l==NULL)exit(0);
l->next=NULL;return l;}
trainline *init_trainline()//初始化路線鏈表 { trainline *l;
l=(trainline*)malloc(sizeof(trainline));
if(l==NULL)exit(0);
l->next=NULL;return l;}
customer * init_customer()//初始化乘客鏈表 { customer *l;l=(customer*)malloc(sizeof(customer));
if(l==NULL)exit(0);
l->next=NULL;return l;}
status insert_trainline(trainline **p,char *date,char *train_num,//char *begin_place,char *end_place,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//trainline鏈表插入操作 { trainline *q;q=(trainline*)malloc(sizeof(trainline));
strcpy(q->date , date);strcpy(q->train_num , train_num);//strcpy(q->begin_place , begin_place);//strcpy(q->end_place , end_place);q->sta=stat;strcpy(q->begin_time , begin_time);strcpy(q->end_time , end_time);q->RW =RW;q->YW =YW;q->RZ =RZ;q->YZ =YZ;q->WZ =WZ;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;//PR(“insert %d ,%dis succssed!n”,e,bl);return OK;}
status insert_customer(customer **p,char *name,char *date,char *train_num,int seat,int seat_num)//customer鏈表插入操作 { customer *q;q=(customer*)malloc(sizeof(customer));
/* { PR(“內存分配失敗n”);return OVERFLOW;}*/ strcpy(q->name , name);strcpy(q->date , date);strcpy(q->train_num , train_num);q->seat_level =seat;q->seat_num =seat_num;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;//PR(“insert %d ,%dis succssed!n”,e,bl);return OK;}
status delete_trainline(trainline *h,char *date,char *train_num)//刪除路線 { trainline *p,*pr;pr=h;p=pr->next;while(p!=NULL){
if(strcmp(date,p->date)==0 && strcmp(train_num,p->train_num)==0)
{
pr->next =p->next;
PR(“刪除 %s 車次n”,p->date);
return OK;
}
pr=pr->next;
p=pr->next;} PR(“無此車次,無法刪除!n”);return ERROR;}
status delete_customer(customer *h,char *date,char *train_num)//刪除顧客 { customer *p,*pr;pr=h;p=pr->next;while(p!=NULL){
if(strcmp(date,p->date)==0 && strcmp(train_num,p->train_num)==0)
{
pr->next =p->next;
}
pr=pr->next;
p=pr->next;} return OK;}
trainline *modefy_trainline(trainline *l,char *date,char *train_num,int seat_level,int num)//修改trainline鏈表中的數據 { trainline *p;p=l->next;for(;p!=NULL;p=p->next){
if(strcmp(date,p->date)==0 && strcmp(train_num,p->train_num)==0)
{
if(seat_level == RUANW)p->RW += num;
else if(seat_level == YINGW)p->YW += num;
else if(seat_level == RUANZ)p->RZ += num;
else if(seat_level == YINGZ)p->YZ += num;
else if(seat_level == WUZ)p->WZ += num;
// PR(“modefy %sn”,p->line_num);
return l;
} } PR(“沒有這個路線,無法完成修改任務!n”);return 0;}
status delete_cus(customer *h,trainline *l,char *name,char *date,char *train_num,int level,int num)//乘客退票 { customer *p,*pr;int seat_num;// qr=h;pr=h;p=pr->next;// PR(“開始刪除n”);while(p!=NULL){
if(strcmp(name,p->name)==0 && strcmp(date,p->date strcmp(train_num,p->train_num)==0 && level==p->seat_level)
{
seat_num=p->seat_num;
l=modefy_trainline(l,date,train_num,level,num);
if(num == seat_num){
pr->next =p->next;
PR(“乘客 %s 退票成功!n”,p->name);
}
else if(num < seat_num){
p->seat_num-= num;
PR(“乘客 %s 退票成功!n”,p->name);
}
else
PR(“數量不足,退票失敗!n”,p->name);
return OK;
}
pr=pr->next;
p=pr->next;} PR(“無此顧客,無法退票!n”);return ERROR;}
status creat_trainline(trainline **l)//創建trainline單鏈表 { trainline *p=*l;int i=0;char *date[3]={“20140224”,“20140226”,“20140225”};char *train_num[3]={“T01”,“D02”,“G03”};char place[3][5][9]={“北京”,“杭州”,“上海”,“南昌”,“廣州”,“廣州”,“上海”,“金山”,“北京”,“敦煌”,“嘉興”,“北京”,“上海”,“山西”,“深圳”};station *stat[3];for(i=0;i<3;i++){
stat[i]=init_station();
for(int j=0;j<5;j++){
station *st;
st=(station*)malloc(sizeof(station));
strcpy(st->stop,place[i][j]);
//可以在這里加停靠時間
st->next=stat[i];
stat[i]=st;)==0 &&
}
//stat[i]->next=NULL;} char *begin_time[3]={“12:02”,“22:42”,“05:09”};char *end_time[3]={“17:15”,“06:07”,“10:54”};int RW[3]={100,100,100};int YW[3]={100,100,100};int RZ[3]={100,100,100};int YZ[3]={100,100,100};int WZ[3]={100,100,100};for(i=0;i<3;i++)
insert_trainline(&p,date[i],train_num[i],stat[i],//begin_place[i],end_place[i],begin_time[i],end_time[i],RW[i],YW[i],RZ[i],YZ[i],WZ[i]);
return OK;}
status creat_customer(customer **l)////創建customer單鏈表 { customer *p=*l;int i=0;char *name[3]={“yangj”,“yunhl”,“fangs”};char *date[3]={“20140224”,“20140225”,“20140226”};char *train_num[3]={“T01”,“G03”,“D02”};int seat_level[3]={RUANW,YINGZ,WUZ};int seat_num[3]={2,3,4};for(i=0;i<3;i++)
insert_customer(&p,name[i],date[i],train_num[i],seat_level[i],seat_num[i]);
return OK;}
status increase_train(trainline *l,char *date,char *train_num,station *stat,char *begin_time,char *end_time,int RW,int YW,int RZ,int YZ,int WZ)//增加路線 { trainline *p=l->next;for(;p->next!=NULL;p=p->next){} insert_trainline(&p,date,train_num,stat,//begin_place,end_place,begin_time,end_time,RW,YW,RZ,YZ,WZ);PR(“增加車次 %s %s 成功!n”,date,train_num);return OK;}
status book(trainline *l,char *date,char *train_num,customer *c,char *name,int seat_level,int num)//訂票函數 { trainline *p=l;customer *q=c->next;p=l->next;for(;q->next!=NULL;q=q->next){} // PR(“%sn”,q->name);for(;p!=NULL;p=p->next){
if(strcmp(date,p->date)==0)
{
if(seat_level == RUANW && p->RW >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->RW-=num;
return OK;
}
else if(seat_level == YINGW && p->YW >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->YW-=num;
return OK;
}
else if(seat_level == RUANZ && p->RZ >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->RZ-=num;
return OK;
}
else if(seat_level == YINGZ && p->YZ >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->YZ-=num;
return OK;
}
else if(seat_level == WUZ && p->WZ >0)
{
PR(“恭喜您!訂票成功!n”);
insert_customer(&q,name,date,train_num,seat_level,num);
p->WZ-=num;
return OK;
}
else PR(“對不起,余量不足!n”);
return 0;
} } PR(“對不起,沒有這個路線號!n”);return ERROR;}
void book_search(trainline *l,char *begin_place,char *end_place)//訂票查詢函數 { trainline *p=l;//customer *q=c->next;p=l->next;//for(;q->next!=NULL;q=q->next){} // PR(“%sn”,q->name);for(;p!=NULL;p=p->next){
station *st=p->sta;
int stop_begin=0,stop_end=0,flag=1;
for(;st->next!=NULL;st=st->next){
if(strcmp(begin_place,st->stop)==0)
stop_begin=flag++;
if(strcmp(end_place,st->stop)==0)
stop_end=flag++;
if(stop_begin==1 && stop_end==2){
PR(“%15s%5s%12s%c%5s%10d%5d%5d%5d%5dn”,p->date ,p->train_num ,//p->begin_place ,'-',p->end_place ,p->begin_time ,'-',p->end_time ,p->RW ,p->YW,p->RZ ,p->YZ ,p->WZ);
station *st=p->sta;
PR(“途經: ”);
for(;st->next!=NULL;st=st->next){
PR(“%s ”,st->stop);
}
PR(“n”);
break;
}
} } }
status print_trainline(trainline *l)//打印路線信息 { trainline *p=l->next;for(;p!=NULL;p=p->next){
PR(“%15s%5s%12s%c%5s%10d%5d%5d%5d%5dn”,p->date ,p->train_num ,//p->begin_place ,'-',p->end_place ,p->begin_time ,'-',p->end_time ,p->RW ,p->YW,p->RZ ,p->YZ ,p->WZ);
station *st=p->sta;
PR(“途經: ”);
for(;st->next!=NULL;st=st->next){
PR(“%s ”,st->stop);
}
PR(“n”);}
return OK;}
status print_customer(customer *l)//打印顧客信息 { customer *p=l->next;for(;p!=NULL;p=p->next)
PR(“%5s %9s %5s %6d %6dn”,p->name ,p->date ,p->train_num ,p->seat_level ,p->seat_num);
return OK;}
status save_trainline(trainline *l)//保存trainline.dat { FILE *fp_trainline;trainline *p=l->next;char filename[]=“c: rainline.dat”;if((fp_trainline=fopen(filename,“wb”))==NULL){
printf(“can not open file to write:%sn”,filename);
return ERROR;} for(;p!=NULL;p=p->next){
fprintf(fp_trainline,“%s,%s,%s,%s,%d,%d,%d,%d,%d,”,p->date ,p->train_num ,//p->begin_place ,p->end_place ,p->begin_time ,p->end_time ,p->RW ,p->YW ,p->RZ ,p->YZ ,p->WZ);
station *st=p->sta;
for(;st->next!=NULL;st=st->next){
fprintf(fp_trainline,“%s,”,st->stop);
}
fprintf(fp_trainline,“#”);} fclose(fp_trainline);return OK;}
status save_customer(customer *l)//保存顧客信息 customer.dat { FILE *fp_customer;customer *p=l->next;char filename[]=“c:customer.dat”;if((fp_customer=fopen(filename,“wb”))==NULL){
printf(“can not open file to write:%sn”,filename);
return ERROR;} for(;p!=NULL;p=p->next){
// PR(“%s,%s,%dn”,p->name ,p->line_num ,p->seat_num);
fprintf(fp_customer,“%s,%s,%s,%d,%d,#”,p->name ,p->date ,p->train_num ,p->seat_level ,p->seat_num);} fclose(fp_customer);return OK;}
int changStrInt(char *ch)//把字符串轉化為整型 { int a=1,b=0,c=0,i;for(i=strlen(ch)-1;i>=0;i--){
if(ch[i]<58&&ch[i]>47)
{
b=a*(ch[i]-48);
a=a*10;
c=c+b;
}
else
{
PR(“%c 不合法,無法將此字符串轉化為整形!n”,ch[i]);
return 0;
}
// printf(“the c is %dn”,c);} return c;}
status load_trainline(trainline *l)//導入路線信息,必須為5個站 { FILE *fp_trainline;int flag=0,i=0;char ch;char date[9];//日期
char train_num[9];//車次號
char begin_time[6],end_time[6];//時間
char RW_str[5],YW_str[5],RZ_str[5],YZ_str[5],WZ_str[5];//座位余量字符串
int RW,YW,RZ,YZ,WZ;//座位余量 char place[9];//站名
station *sta=init_station();//途經站
// trainline *p=l;char filename[]=“c: rainline.dat”;if((fp_trainline=fopen(filename,“rb”))==NULL){
printf(“can not open file to load:%sn”,filename);
return ERROR;} while(!feof(fp_trainline)){
ch=fgetc(fp_trainline);
if(ch!='#')
{
if(flag==0&&ch!=','){ date[i]=ch;i++;} else if(flag==1&&ch!=','){ train_num[i]=ch;i++;} else if(flag==2&&ch!=','){ begin_time[i]=ch;i++;} else if(flag==3&&ch!=','){ end_time[i]=ch;i++;} else if(flag==4&&ch!=','){ RW_str[i]=ch;i++;} else if(flag==5&&ch!=','){ YW_str[i]=ch;i++;} else if(flag==6&&ch!=','){ RZ_str[i]=ch;i++;} else if(flag==7&&ch!=','){ YZ_str[i]=ch;i++;} else if(flag==8&&ch!=','){ WZ_str[i]=ch;i++;
} else if(flag>=9&&flag<=13&&ch!=','){
place[i]=ch;
i++;} else if(ch==','){
if(flag==0)date[i]=0;
else if(flag==1)train_num[i]=0;
else if(flag==2)begin_time[i]=0;
else if(flag==3)end_time[i]=0;
else if(flag==4)RW_str[i]=0;
else if(flag==5)YW_str[i]=0;
else if(flag==6)RZ_str[i]=0;
else if(flag==7)YZ_str[i]=0;
else if(flag==8)WZ_str[i]=0;
else if(flag>=9&&flag<=13){
place[i]=0;
station *st;
st=(station*)malloc(sizeof(station));
strcpy(st->stop,place);
//可以在這里加停靠時間
st->next=sta;
sta=st;
}
flag++;
i=0;} else {
PR(“錯誤n”);
return ERROR;} } else { flag=0;i=0;RW=changStrInt(RW_str);YW=changStrInt(YW_str);RZ=changStrInt(RZ_str);YZ=changStrInt(YZ_str);WZ=changStrInt(WZ_str);
PR(“%15s%5s%6s%c%5s%5d%5d%5d%5d%5dn”,date ,train_num ,begin_time ,'-',end_time ,RW ,YW,RZ ,YZ ,WZ);
PR(“途經: ”);
station *st=sta;
for(;st->next!=NULL;st=st->next){
PR(“%s ”,st->stop);
}
PR(“n”);
//increase_train(l,date,train_num,sta,//
begin_time,end_time,RW,YW,RZ,YZ,WZ);
insert_trainline(&l,date,train_num,sta,begin_time,end_time,RW,YW,RZ,YZ,WZ);
station *ss=init_station();
sta=ss;
} } fclose(fp_trainline);return OK;}
status load_customer(customer *l)//導入乘客信息 { FILE *fp_customer;int flag=0,i=0;char ch;char name[9];char date[9];//日期
char train_num[9];//車次號
char seat_level_str[5],num_str[5];int seat_level,num;//座位類別,數量 // customer *p=*l;char filename[50]=“c:customer.dat”;if((fp_customer=fopen(filename,“rb”))==NULL){
printf(“can not open file to load:%sn”,filename);
return ERROR;}
while(!feof(fp_customer)){ ch=fgetc(fp_customer);//printf(“%cn”,ch);if(ch!='#'){
if(flag==0&&ch!=',')
{
name[i]=ch;
i++;
}
else if(flag==1&&ch!=',')
{
date[i]=ch;
i++;
}
else if(flag==2&&ch!=',')
{
train_num[i]=ch;
i++;
}
else if(flag==3&&ch!=',')
{
seat_level_str[i]=ch;
i++;
}
else if(flag==4&&ch!=',')
{
num_str[i]=ch;
i++;
}
else if(ch==',')
{
if(flag==0)name[i]=0;
else if(flag==1)date[i]=0;
else if(flag==2)train_num[i]=0;
else if(flag==3)seat_level_str[i]=0;
else if(flag==4)num_str[i]=0;
flag++;
i=0;
}
else
{
PR(“錯誤n”);
return ERROR;
}
}
else
{
flag=0;
seat_level=changStrInt(seat_level_str);
num=changStrInt(num_str);
PR(“%10s %10s %5d %5dn”,name ,date ,train_num ,seat_level ,num);
insert_customer(&l,name,date,train_num,seat_level,num);
// p=p->next;
} } fclose(fp_customer);return OK;}
status inputpassword(char cc[9])//隱藏密碼為*號的函數 { char c;int i;for(i=0;c=getch();i++){
if(c==13)break;/*13='n'*/
else
{
cc[i]=c;
printf(“*”);
} } cc[i]=' 主站蜘蛛池模板: 久久人人爽人人人人片| 国产成人一区二区三区在线观看| 免费大片黄国产在线观看| 亚洲精品人成网线在线播放va| 无码av一区二区大桥久未| 青草国产精品久久久久久| 国产亚洲日韩在线aaaa| 亚洲愉拍自拍另类图片| 国产精品久久国产精品99 gif| 精品国产三级a∨在线欧美| 亚洲乱人伦中文字幕无码| 久久五月精品中文字幕| 7777亚洲大胆裸体艺术全集| 日韩人妻无码中文字幕视频| 中国xxxx做受视频| 成人免费a级毛片无码片2022| 色欲av巨乳无码一区二区| 精品系列无码一区二区三区| 国产精品白浆在线观看免费| 丰满人妻熟妇乱又伦精品劲| 萝卜视频高清免费视频日本| 国模欢欢炮交啪啪150| 国产精品爆乳奶水无码视频| 麻豆传媒在线观看| 日本真人边吃奶边做爽电影| 国产综合色在线精品| 国产成人精品999在线观看| 色与欲影视天天看综合网| 国产午夜福利精品一区二区三区| 自怕偷自怕亚洲精品| 国产成人av综合久久视色| 久久国产美女精品久久| 亚洲伊人成综合网2222| 午夜无码视频| 狠狠色噜噜狠狠狠777米奇888| 偷窥xxxx盗摄国产| 无码人妻一区二区三区免费看| 天天摸日日摸狠狠添| 在办公室被c到呻吟的动态图| 久久人人爽人人爽人人av| 小蜜被两老头吸奶头在线观看|