<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現飛機售票系統的具體程式碼,供大家參考,具體內容如下
通過“航空售票系統”C語言課程設計的實踐,掌握函數、資料的讀取和儲存。熟練連結串列的操作,為後期學習打下基礎。
(1) 將飛機坐位分為20排,每排4個位子。
(2) 系統可讓乘客自己選座號和區域,直到乘客滿意為止。
(3) 若無法滿足的話,改乘另一個航班。
(4) 定上票的乘客需給出姓名和身份證號。
(5) 要求列印出乘客資訊。
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 100 typedef struct plane { char ID[10]; /*航班代號*/ char BePlace[10];/*飛機起飛地點*/ char EnPlace[10];/*飛機降落終點*/ char data[15];/*飛機起飛時間*/ int max;/*飛機最大乘客人數*/ int num;/*飛機已售票數*/ }PLANE;PLANE ti[N]; typedef struct user { char name[20]; int number; char id[20]; char seat[3]; }USER;USER si[N]; int n,n1;/*當前的航班數目以及新加入的航班*/ int e,r; void menu(); void menu1(); void input(int i) /* 輸入航班模組,enter的子模組 */ { printf("請輸入航班代號:n"); scanf("%s",ti[i].ID); printf("請輸入起飛地點:n"); scanf("%s",ti[i].BePlace); printf("請輸入降落地點:n"); scanf("%s",ti[i].EnPlace); printf("請輸入起飛時間:n"); scanf("%s",ti[i].data); printf("請輸入最大座位:n"); scanf("%d",&ti[i].max); ti[i].num=0; } void enter() /* 新增航班模組 */ { int i; system( "cls" ); /*清屏*/ n1=0; n=n+n1; printf("請輸入航班的數目:"); scanf("%d",&n1); /*要輸入的記錄個數*/ printf("n請輸入資料(原已有%d趟航班)nn",n); for(i=n;i<n+n1;i++) { printf("n請輸入第 %d 航班記錄.n",i+1); input(i); /*呼叫輸入函數*/ } getchar(); menu(); } void printf_one(int i) /*顯示一個記錄的函數*/ { printf("t%-8s %-8s %-8s %-8s %-8d %-8d ",ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data,ti[i].max,ti[i].num); } void dele(int k) /* 刪除使用者資訊,shanchu的子模組 */ { int i; for(i=(k+1);i<N;i++){ strcpy(si[k].name,si[k+1].name); si[k].number=si[k+1].number; strcpy(si[k].id,si[k+1].id); } } int shanchu(struct plane a) /* 刪除使用者訂票模組,退票的子模組 */ { int i; for(i=0;i<N;i++) { if(strcmp(a.ID,si[i].id)==0) { dele(i); } } return i; } int browse() /* 瀏覽模組 */ { int i; r=0; system( "cls" ); puts("nt------------------------------航班瀏覽------------------------------"); printf("nt航班代號 起飛地點 降落地點 起飛時間 最大乘客 已售票數n"); for(i=0;i<n+n1;i++) { r=r+ti[i].num; } for(i=0;i<n+n1-r-2;i++) { printf_one(i); printf("n"); } getchar(); getchar(); menu(); return i; } void search_time() /* 時間查詢模組,查詢的子模組 */ { int i,m=0; struct plane s; system( "cls" ); printf("nnEnter the time:"); scanf("%s",s.data); /*輸入出發的時間*/ puts("n--------------------------------------------------------------------"); printf("nt航班代號 起飛地點 降落地點 起飛時間 最大乘客 已售票數n"); for(i=0;i<n+n1;i++) { if(strcmp(s.data,ti[i].data)==0) { m++; if((m!=0)&&(m%10==0)) /*目的是分屏顯示*/ { printf("nnPress any key to contiune . . ."); getchar(); puts("nn"); } printf_one(i); printf("n"); /*呼叫顯示一個記錄的函數*/ } } puts("n--------------------------------------------------------------------"); getchar(); /*按任意健*/ getchar(); menu1(); } void serch_end() /* 終點查詢模組,查詢的子模組 */ { int i,m=0; struct plane s; system( "cls" ); printf("nnEnter the end Place:"); scanf("%s",s.EnPlace); /*輸入要到達的地方*/ puts("n--------------------------------------------------------------------"); printf("nt航班代號 起飛地點 降落地點 起飛時間 最大乘客 已售票數n"); for(i=0;i<n+n1;i++) { if(strcmp(ti[i].EnPlace,s.EnPlace)==0) { m++; if((m!=0)&&(m%10==0)) /*目的是分屏顯示*/ { printf("nnPress any key to contiune . . ."); getchar(); puts("nn"); } printf_one(i); printf("n"); /*呼叫顯示一個記錄的函數*/ } } puts("n--------------------------------------------------------------------"); getchar(); /*按任意健*/ getchar(); menu1(); } void menu1() /* 查詢模組 */ { int n,w1; do { system( "cls" ); /*清屏*/ puts("tttt 飛機售票操作!nn"); puts("tt*********************MENU*********************nn"); puts("tttt1.按照時間查詢航班"); puts("tttt2.按照地點查詢航班"); puts("tttt3.返回主選單"); puts("nntt**********************************************n"); printf("Choice your number(1-3): [ ]bb"); scanf("%d",&n); if(n<1||n>3) /*對選擇的數位作判斷*/ { w1=1; printf("your choice is not between 1 and 3,Please input again:"); getchar(); getchar(); } else w1=0; } while(w1==1); /*選擇功能*/ switch(n) { case 1:search_time();break; case 2:serch_end();break; case 3:menu();break; } } int search() /* 售票的查詢模組,book的子模組 */ { int i,k; struct plane s; k=-1; printf("請輸入要訂票的起飛地點:n"); scanf("%s",s.BePlace);/*輸入要起飛的地方*/ printf("請輸入要訂票的降落地點:n"); scanf("%s",s.EnPlace);/*輸入要到達的地方*/ printf("請輸入要訂票的起飛時間:n"); scanf("%s",s.data); /*輸入出發的時間*/ for(i=0;i<n+n1;i++) /*查詢要修改的資料*/ { if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0) { k=i; /*找到要修改的記錄*/ strcpy(s.data,ti[i].data); printf_one(k); break; /*呼叫顯示一個記錄的函數*/ } } if(k==-1) { printf("nnNO exist!"); return -1; } else return k; } void book() /* 訂票模組 */ { int i; system( "cls" ); r=0; printf("歡迎進入售票視窗!n"); printf("飛機上有20排座位,每排有4個座位,每排分為A,B,C,D。其中A,D靠窗戶。n19,20為吸菸區。座位選擇按先選排序號再選座位號"); printf("nnn請輸入您的姓名:n"); /*使用者資訊輸入*/ scanf("%s",si[e].name); printf("請輸入您的身份證號:n"); scanf("%d",&si[e].number); printf("請輸入你想選的座位號:n"); scanf("%s",si[e].seat); i=search(); if(i!=-1) { if(ti[i].num>=ti[i].max) { printf("n該趟航班票已售完!"); } else { ti[i].num++; strcpy(si[e].id,ti[i].ID); e++; printf("n訂票成功!n"); } } else { printf("該航班不存在!n"); } getchar(); getchar(); /*按任意健*/ menu(); } void back() /* 退票模組 */ { int i,k=-1; struct plane s; char name[20]; int number; system( "cls" ); printf("歡迎進入退票視窗!n"); printf("n請輸入您的姓名:n"); scanf("%s",name); printf("請輸入您的身份證號:n"); scanf("%d",&number); printf("nn輸入航班代號:"); scanf("%s",s.ID); /*輸入要到達的地方*/ for(i=0;i<n+n1;i++) /*查詢要修改的資料*/ { if(strcmp(s.ID,ti[i].ID)==0) { k=i; /*找到要修改的記錄*/ printf_one(k); break; /*呼叫顯示一個記錄的函數*/ } } if(k==-1) { printf("nnNO exist!"); } else { ti[i].num--; shanchu(s);// r--; printf("n退票成功!n"); } getchar(); /*按任意健*/ getchar(); /*按任意健*/ menu(); } void watch() /*瀏覽已售資訊模組*/ { int i; system( "cls" ); r=0; for(i=0;i<n+n1;i++) { r=r+ti[i].num; } printf("nt-------------------已售資訊-------------------n"); printf("nt姓 名 身份證號 座位號 已買航班代號n"); for(i=0;i<r;i++) { printf("t%-6s %-8d %8s %5sn",si[i].name,si[i].number,si[i].seat,si[i].id); } printf("nt----------------------------------------------n"); getchar(); getchar(); menu(); } void save()/*檔案儲存*/ { int w=1,m=1; r=0; FILE *fp,*fp1; int i,j; system( "cls" ); if((fp=fopen("ticket.txt","wb"))==NULL) /*以輸出開啟方式,在此前的記錄被覆蓋*/ { printf("nCannot open filen"); return ; } for(i=0;i<n+n1;i++) if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1) { printf("file write errorn"); w=0; } if(w==1) { printf("ticket file save ok!n"); } fclose(fp); if((fp1=fopen("sale.txt","wb"))==NULL) /*以輸出開啟方式,在此前的記錄被覆蓋*/ { printf("nCannot open filen"); return ; } for(i=0;i<n+n1;i++) { r=r+ti[i].num; } for(j=0;j<=r;j++) if(fwrite(&si[j],sizeof(struct user),1,fp1)!=1) { printf("file write errorn"); m=0; } if(m==1) { printf("sale file save ok!n"); } fclose(fp1); getchar(); getchar(); menu(); } void load() /* 載入模組 */ { FILE *fp,*fp1; int i,w,j,m; w=1; m=1; system( "cls" ); if((fp=fopen("ticket.txt","rb"))==NULL) { printf("nCan not open file!n"); w=0; return; } n=0; for(i=0;!feof(fp);i++) { fread(&ti[i],sizeof(struct plane),1,fp); n++; } n=n-1; fclose(fp); if(w==1) printf("Load ticket file ok!n"); if((fp1=fopen("sale.txt","rb"))==NULL) { printf("nCan not open filen"); m=0; return; } r=0; for(j=0;!feof(fp1);j++) { fread(&si[j],sizeof(struct user),1,fp1); n++; } r=r-1; fclose(fp1); if(m==1) printf("Load sale file ok!"); getchar(); getchar(); menu(); } void menu() /* 主頁面 */ { int n,w1; do { system( "cls" ); /*清屏*/ puts("tttt 航空公司售票系統!nn"); puts("tt*********************MENU*********************nn"); puts("tttt1. 輸入新航班"); puts("tttt2. 瀏覽航班 "); puts("tttt3. 航班查詢"); puts("tttt4. 訂票"); puts("tttt5. 退票"); puts("tttt6. 瀏覽已售資訊"); puts("tttt7. 儲存"); puts("tttt8. 載入"); puts("tttt9. 退出"); puts("nntt**********************************************n"); printf("Choice your number(1-9): [ ]bb"); scanf("%d",&n); if(n<1||n>9) /*對選擇的數位作判斷*/ { w1=1; printf("your choice is not between 1 and 9,Please input enter to choice again:"); getchar(); getchar(); } else w1=0; } while(w1==1); /* 選擇功能,menu的子模組 */ switch(n) { case 1:enter();break; /*輸入模組*/ case 2:browse();break; /*瀏覽航班模組*/ case 3:menu1();break; /*航班查詢模組*/ case 4:book();break; /*訂票模組*/ case 5:back();break; /*退票模組*/ case 6:watch();break; /*瀏覽已售資訊模組*/ case 7:save();break; /*儲存模組*/ case 8:load();break; /*載入模組*/ case 9:exit(0); } } int main() /*主函數 */ { menu(); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援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