<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現火車訂票系統的具體程式碼,供大家參考,具體內容如下
1.執行程式時,首先進入到選單部分,選單部分提供了選單顯示和輸入功能部分。其執行效果如圖所示。在主介面上輸入數位0——6,實現相應的功能。
2.主介面輸入“1”,進入新增火車資訊介面,如圖所示。根據螢幕上給出的提示輸入火車的車次,起點,終點,出發時間,到達時間,票價和可以訂購的票數。
3.主介面輸入“2”,可以查詢火車資訊,可以選擇查詢的方法有兩種,一種是按照車次查詢,一種是按照你想要到達的地方查詢,執行效果如圖所示。
4.當在主介面輸入“3”時,進入訂票介面,按照提示輸入你想要到達的城市,會自動顯示出你終點站為你輸入城市的資訊,根據提示輸入你是否決定訂票以及你的個人資訊,執行效果如圖所示。
5.當在主介面輸入“4”時,進入修改介面,根據提示輸入你要修改的內容,修改模組的執行效果如圖所示。
6.當在主介面輸入“5”時,可以顯示出所有的火車資訊,顯示模組效果如圖所示。
7.當在主介面輸入“6”時,進入到儲存模組,將錄入的火車資訊進行儲存,並且將訂票人的資訊也進行儲存,儲存在指定的磁碟檔案中。執行效果如圖所示。
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dos.h> #define HEADER1 " -------------------------------BOOK TICKET----------------------------------n" #define HEADER2 " | number |start city|reach city|takeofftime|receivetime|price|ticketnumber|n" #define HEADER3 " |----------|----------|----------|-----------|-----------|-----|------------|n" #define FORMAT " |%-10s|%-10s|%-10s|%-10s |%-10s |%5d| %5d |n" #define DATA p->data.num,p->data.startcity,p->data.reachcity,p->data.takeofftime,p->data.receivetime,p->data.price,p->data.ticketnum int saveflag=0 ; /*定義儲存火車資訊的結構體*/ struct train { char num[10];/*列車號*/ char startcity[10];/*出發城市*/ char reachcity[10];/*目的城市*/ char takeofftime[10];/*發車時間*/ char receivetime[10];/*到達時間*/ int price;/*票價*/ int ticketnum ;/*票數*/ }; /*訂票人的資訊*/ struct man { char num[10];/*ID*/ char name[10];/*姓名*/ int bookNum ;/*訂的票數*/ }; /*定義火車資訊連結串列的結點結構*/ typedef struct node { struct train data ; struct node * next ; }Node,*Link ; /*定義訂票人連結串列的結點結構*/ typedef struct Man { struct man data ; struct Man *next ; }book,*bookLink ; /* 初始介面*/ void menu() { puts("nn"); puts("tt|------------------------------------------------------|"); puts("tt| Booking Tickets |"); puts("tt|------------------------------------------------------|"); puts("tt| 0:quit the system |"); puts("tt| 1:Insert a train information |"); puts("tt| 2:Search a train information |"); puts("tt| 3:Book a train ticket |"); puts("tt| 4:Modify the train information |"); puts("tt| 5:Show the train information |"); puts("tt| 6:save information to file |"); puts("tt|------------------------------------------------------|"); } /*新增一個火車資訊*/ void Traininfo(Link linkhead) { struct node *p,*r,*s ; char num[10]; r = linkhead ; s = linkhead->next ; while(r->next!=NULL) r=r->next ; while(1) { printf("please input the number of the train(0-return)"); scanf("%s",num); if(strcmp(num,"0")==0) break ; /*判斷是否已經存在*/ while(s) { if(strcmp(s->data.num,num)==0) { printf("the train '%s'is existing!n",num); return ; } s = s->next ; } p = (struct node*)malloc(sizeof(struct node)); strcpy(p->data.num,num);/*輸入車號*/ printf("Input the city where the train will start:"); scanf("%s",p->data.startcity);/*輸入出發城市*/ printf("Input the city where the train will reach:"); scanf("%s",p->data.reachcity);/*輸入到站城市*/ printf("Input the time which the train take off:"); scanf("%s",p->data.takeofftime);/*輸入出發時間*/ printf("Input the time which the train receive:"); scanf("%s",&p->data.receivetime);/*輸入到站時間*/ printf("Input the price of ticket:"); scanf("%d",&p->data.price);/*輸入火車票價*/ printf("Input the number of booked tickets:"); scanf("%d",&p->data.ticketnum);/*輸入預定票數*/ p->next=NULL ; r->next=p ;/*插入到連結串列中*/ r=p ; saveflag = 1 ; } } /*列印火車票資訊*/ void printheader() /*格式化輸出表頭*/ { printf(HEADER1); printf(HEADER2); printf(HEADER3); } void printdata(Node *q) /*格式化輸出表中資料*/ { Node* p; p=q; printf(FORMAT,DATA); } /*查詢火車資訊*/ void searchtrain(Link l) { Node *s[10],*r; int sel,k,i=0 ; char str1[5],str2[10]; if(!l->next) { printf("There is not any record !"); return ; } printf("Choose the way:n1:according to the number of train;n2:according to the city:n"); scanf("%d",&sel);/*輸入選擇的序號*/ if(sel==1) { printf("Input the the number of train:"); scanf("%s",str1); r=l->next; while(r!=NULL) if(strcmp(r->data.num,str1)==0)/*檢索是否有與輸入的車號相匹配的*/ { s[i]=r; i++; break; } else r=r->next; } else if(sel==2) { printf("Input the city you want to go:"); scanf("%s",str2); r=l->next; while(r!=NULL) if(strcmp(r->data.reachcity,str2)==0)/*檢索是否有與輸入的城市相匹配的火車*/ { s[i]=r; i++; r=r->next; } else r=r->next; } if(i==0) printf("can not find!"); else { printheader(); for(k=0;k<i;k++) printdata(s[k]); } } /*訂票子模組*/ void Bookticket(Link l,bookLink k) { Node *r[10],*p ; char ch[2],tnum[10],str[10],str1[10],str2[10]; book *q,*h ; int i=0,t=0,flag=0,dnum; q=k ; while(q->next!=NULL) q=q->next ; printf("Input the city you want to go: "); scanf("%s",&str);/*輸入要到達的城市*/ p=l->next ; while(p!=NULL) { if(strcmp(p->data.reachcity,str)==0) { r[i]=p ;/*將滿足條件的記錄存到陣列r中*/ i++; } p=p->next ; } printf("nnthe number of record have %dn",i); printheader(); for(t=0;t<i;t++) printdata(r[t]); if(i==0) printf("nSorry!Can't find the train for you!n"); else { printf("ndo you want to book it?<y/n>n"); scanf("%s",ch); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判斷是否訂票*/ { h=(book*)malloc(sizeof(book)); printf("Input your name: "); scanf("%s",&str1); strcpy(h->data.name,str1); printf("Input your id: "); scanf("%s",&str2); strcpy(h->data.num,str2); printf("please input the number of the train:"); scanf("%s",tnum); for(t=0;t<i;t++) if(strcmp(r[t]->data.num,tnum)==0) { if(r[t]->data.ticketnum<1)/*判斷剩餘的供訂票的票數是否為0*/ { printf("sorry,no ticket!"); sleep(2); return; } printf("remain %d ticketsn",r[t]->data.ticketnum); flag=1; break; } if(flag==0) { printf("input error"); sleep(2); return; } printf("Input your bookNum: "); scanf("%d",&dnum); r[t]->data.ticketnum=r[t]->data.ticketnum-dnum;/*定票成功則可供訂的票數相應減少*/ h->data.bookNum=dnum ; h->next=NULL ; q->next=h ; q=h ; printf("nLucky!you have booked a ticket!"); getch(); saveflag=1 ; } } } /*修改火車資訊*/ void Modify(Link l) { Node *p ; char tnum[10],ch ; p=l->next; if(!p) { printf("nthere isn't record for you to modify!n"); return ; } else { printf("nDo you want to modify it?(y/n)n"); getchar(); scanf("%c",&ch); if(ch=='y'||ch=='Y') { printf("nInput the number of the train:"); scanf("%s",tnum); while(p!=NULL) if(strcmp(p->data.num,tnum)==0)/*查詢與輸入的車號相匹配的記錄*/ break; else p=p->next; if(p) { printf("Input new number of train:"); scanf("%s",&p->data.num); printf("Input new city the train will start:"); scanf("%s",&p->data.startcity); printf("Input new city the train will reach:"); scanf("%s",&p->data.reachcity); printf("Input new time the train take off"); scanf("%s",&p->data.takeofftime); printf("Input new time the train reach:"); scanf("%s",&p->data.receivetime); printf("Input new price of the ticket::"); scanf("%d",&p->data.price); printf("Input new number of people who have booked ticket:"); scanf("%d",&p->data.ticketnum); printf("nmodifying record is sucessful!n"); saveflag=1 ; } else printf("tcan't find the record!"); } } } void showtrain(Link l)/*自定義函數顯示列車資訊*/ { Node *p; p=l->next; printheader(); if(l->next==NULL) printf("no records!"); else while(p!=NULL) { printdata(p); p=p->next; } } /*儲存火車資訊*/ void SaveTrainInfo(Link l) { FILE*fp ; Node*p ; int count=0,flag=1 ; fp=fopen("f:\train.txt","wb"); if(fp==NULL) { printf("the file can't be opened!"); return ; } p=l->next ; while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) { p=p->next ; count++; } else { flag=0 ; break ; } } if(flag) { printf(" saved %d train recordsn",count); saveflag=0 ; } fclose(fp); } /*儲存訂票人的資訊*/ void SaveBookInfo(bookLink k) { FILE*fp ; book *p ; int count=0,flag=1 ; fp=fopen("f:\man.txt","wb"); if(fp==NULL) { printf("the file can't be opened!"); return ; } p=k->next ; while(p) { if(fwrite(p,sizeof(book),1,fp)==1) { p=p->next ; count++; } else { flag=0 ; break ; } } if(flag) { printf(" saved %d booking recordsn",count); saveflag=0 ; } fclose(fp); } main() { FILE*fp1,*fp2 ; Node *p,*r ; char ch1,ch2 ; Link l ; bookLink k ; book *t,*h ; int sel ; l=(Node*)malloc(sizeof(Node)); l->next=NULL ; r=l ; k=(book*)malloc(sizeof(book)); k->next=NULL ; h=k ; fp1=fopen("f:\train.txt","ab+");/*開啟儲存車票資訊的檔案*/ if((fp1==NULL)) { printf("can't open the file!"); return 0 ; } while(!feof(fp1)) { p=(Node*)malloc(sizeof(Node)); if(fread(p,sizeof(Node),1,fp1)==1)/*從指定磁碟檔案讀取記錄*/ { p->next=NULL ; r->next=p ;/*構造連結串列*/ r=p ; } } fclose(fp1); fp2=fopen("f:\man.txt","ab+"); if((fp2==NULL)) { printf("can't open the file!"); return 0 ; } while(!feof(fp2)) { t=(book*)malloc(sizeof(book)); if(fread(t,sizeof(book),1,fp2)==1) { t->next=NULL ; h->next=t ; h=t ; } } fclose(fp2); while(1) { system("CLS"); menu(); printf("tplease choose (0~6): "); scanf("%d",&sel); system("CLS"); if(sel==0) { if(saveflag==1)/*當退出時判斷資訊是否儲存*/ { getchar(); printf("nthe file have been changed!do you want to save it(y/n)?n"); scanf("%c",&ch1); if(ch1=='y'||ch1=='Y') { SaveBookInfo(k); SaveTrainInfo(l); } } printf("nThank you!!You are welcome toon"); break ; } switch(sel)/*根據輸入的sel值不同選擇相應操作*/ { case 1 : Traininfo(l);break ; case 2 : searchtrain(l);break ; case 3 : Bookticket(l,k);break ; case 4 : Modify(l);break ; case 5: showtrain(l);break; case 6 : SaveTrainInfo(l);SaveBookInfo(k);break ; case 0: return 0; } printf("nplease press any key to continue......."); getch(); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45