【簡介:】本篇文章給大家談談《c++機票預訂系統(tǒng)》對應的知識點,希望對各位有所幫助。本文目錄一覽:
1、數(shù)據(jù)結(jié)構課程設計——航空訂票系統(tǒng)(C語言)
2、c語言程序設計飛機訂票系統(tǒng)
3
本篇文章給大家談談《c++機票預訂系統(tǒng)》對應的知識點,希望對各位有所幫助。
本文目錄一覽:
數(shù)據(jù)結(jié)構課程設計——航空訂票系統(tǒng)(C語言)
1、任務:航空客運定票的業(yè)務活動包括:查詢航線、客票預定和辦理退票等。試設計一個航空客運定票系統(tǒng),以使上述業(yè)務可以借助計算機來完成。 2、功能要求: 1) 錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構、具 體數(shù)據(jù)自定) 2) 查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵 達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市, 查詢飛機航班情況; 3) 訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構自己設定)可以訂票,如果 該航班已經(jīng)無票,可以提供相關可選擇航班; 4) 退票: 可退票,退票后修改相關數(shù)據(jù)文件; 5) 客戶資料:有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號; 6) 修改航班信息:當航班信息改變可以修改航班數(shù)據(jù)文件。 3、要有一個好的界面~~~~~~~~~~~~~~~~~~~~~~~~4、需求分析 系統(tǒng)需求(系統(tǒng)要求實現(xiàn)的功能的具體情況)5、 概要設計 系統(tǒng)分析(分析系統(tǒng)的功能和具體模塊的劃分) 系統(tǒng)流程(系統(tǒng)的流程圖) 程序詳細代碼:
c語言程序設計飛機訂票系統(tǒng)
呵呵 這個也是我在網(wǎng)上搜的 挺不錯 沒有錯誤
#includestdio.h //標準輸入、輸出頭文件
#includestring.h //包含字符串函數(shù)處理頭文件
#includestdlib.h //包含動態(tài)存儲與釋放函數(shù)頭文件
#define N 10000
struct air //定義結(jié)構體數(shù)組
{
int num;
char start[20];
char over[20];
char time[10];
int count;
}s[N];
int i;
int m=0;
#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定義輸出格式
void input(); //輸入航班信息
void print(); //輸出航班信息
void save(); //保存航班信息
void read(); //讀取航班信息
void search(); //查找航班信息
void shanchu(); //刪除航班信息
void dingpiao(); //訂票信息
void tuipiao(); //退票信息
void xiugai(); //修改信息
void main()
{
int j;
printf(" ★---您好,歡迎進入中國民航管理系統(tǒng)!---★\n");
printf("================================================================================\n");
do
{
printf(" -------- ☆ 1.輸入航班信息 ☆-------- \n\n"
" -------- ☆ 2.瀏覽航班信息 ☆-------- \n\n"
" -------- ☆ 3.修改航班信息 ☆-------- \n\n"
" -------- ☆ 4.查找航班信息 ☆-------- \n\n"
" -------- ☆ 5.刪除航班信息 ☆-------- \n\n"
" -------- ☆ 6.訂票信息 ☆-------- \n\n"
" -------- ☆ 7.退票信息 ☆-------- \n\n"
" -------- ☆ 0.退出 ☆-------- \n\n");
printf("================================================================================\n");
printf("請在0-7中選擇以回車鍵結(jié)束:\n\n");
scanf("%d",j);
switch(j)
{
case 1: input();//調(diào)用輸入模塊
break;
case 2:print();//調(diào)用打印模塊
break;
case 3:xiugai();//調(diào)用修改模塊
break;
case 4:search();//調(diào)用查找模塊
break;
case 5:shanchu(); //調(diào)用刪除模塊
break;
case 6:dingpiao();//調(diào)用訂票模塊
break;
case 7:tuipiao();//調(diào)用退票模塊
break;
case 0:;
break;
}
}while(j!=0); //判斷結(jié)束
printf("謝謝使用,再見!\n");
}//主函數(shù)結(jié)束
void input()//打印模塊程序
{
char f[]="2008china"; //設置密碼
int y;
printf("請輸入密碼并以回車鍵結(jié)束:\n\n");
scanf("%s",f); //讀取密碼
if(strcmp(f,"2008china")==0)
{
printf("請依次輸入航班信息(機票數(shù)位0結(jié)束輸入):\n\n"
"完成輸入信息請鍵入w以回車鍵結(jié)束\n\n"); //打印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;iN;i++)
{
printf("請輸入航班號:\n");
scanf("%d",s[i].num); //讀取航班號
printf("請輸入起始站:\n");
scanf("%s",s[i].start);//讀取起始站
printf("請輸入終點站:\n");
scanf("%s",s[i].over);//讀取終點站
printf("請輸入時間:\n");
scanf("%s",s[i].time);//讀取時間
printf("請輸入機票數(shù)(機票數(shù)為0結(jié)束輸入):\n",m);
scanf("%d",s[i].count);//讀取機票數(shù)
m++;
printf("第%d個信息已經(jīng)輸完是否繼續(xù)?按任意鍵繼續(xù),按 0結(jié)束",m);
scanf("%d",y);
if(y==0)
{
save();//將結(jié)構體信息存盤
print();//輸出輸入的航班信息
break;
}
}
}
else
printf("輸入密碼錯誤!請檢查您的密碼是否正確!謝謝!再見!\n\n");
}
void save()//保存模塊程序
{
FILE *fp,*fp1;//定義文件指針
if((fp=fopen("chen.dat","wb"))==NULL)//打開文件并判斷是否出錯
{
printf("創(chuàng)建文件失敗!\n\n");//打印出錯提示
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)//打開文件并判斷是否出錯
{
printf("創(chuàng)建文件失敗!\n\n");//打印出錯提示
getchar();
return;
}
for(i=0;im;i++)
if(fwrite(s[i],sizeof(struct air),1,fp)==0)//向文件寫入數(shù)據(jù),并判斷是否出錯
printf("向文件輸入數(shù)據(jù)失敗!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//關閉文件
fclose(fp1);//關閉文件
}
void read()//從文件讀取信息模塊
{
FILE *fp,*fp1;//定義文件指針
if((fp=fopen("chen.dat","rb"))==NULL)//打開文件,并判斷是否出錯
{
printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//打印出錯提示
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)//打開文件并判斷是否出錯
{
printf("創(chuàng)建文件失敗!\n\n");//打印出錯提示
getchar();
return;
}
fscanf(fp1,"%d",m);
fclose(fp1);//關閉文件
for(i=0;im;i++)
{
fread(s[i],sizeof(air),1,fp);//從文件中讀取信息
}
fclose(fp);//關閉文件
}
void print()//打印模塊
{
char w[10];
read();//調(diào)用讀取文件函數(shù)
printf("航班號 起始站 終點站 時間 機票數(shù)\n");
for(i=0;im;i++)
{
printf(PRINT);//打印信息
}
printf("請按任意鍵回車鍵結(jié)束返回上層菜單以:\n");
scanf("%s",w);
}
void search()//查詢模塊
{
char name1[20];
char name2[20];
char ii[10];
int n,no;
do
{
printf("請選擇查找方式:\n\n");//打印查詢方式菜單
printf("1.按航班號查找\n\n"
"2.按終點站查找\n\n"
"3.按航線查找\n\n"
"0.返回\n\n");
printf("請在0-3中選擇:\n\n"
"按其他鍵以回車鍵結(jié)束返回主菜單:\n\n");
scanf("%d",n);//讀取查找方式
if(n==0)
break;
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",no);//航班號
break;
case 2:
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//讀取終點站
break;
case 3:
printf("請輸入起始站名稱:\n");
scanf("%s",name1);//讀取起始站
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//終點站
break;
}
read();//調(diào)用讀取函數(shù)
for(i=0;im;i++)
{
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按終點站起始站判斷輸出條件
{
printf("\n查找航班信息成功!\n");
printf("航班號 起始站 終點站 時間 機票數(shù)\n");
printf(PRINT);//打印信息
break;
}
if(s[i].num==no)//按航班號判斷輸出條件
{
printf("\n查找航班信息成功!\n");
printf("航班號 起始站 終點站 時間 機票數(shù)\n");
printf(PRINT);//打印信息
break;
}
}
no=0;//將航班號賦值為0
printf("沒有您需要的信息或查找完畢:\n\n"
"是否繼續(xù)查找?請鍵入yes或no以回車鍵結(jié)束\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);//判斷結(jié)束
}
void shanchu()//刪除模塊
{
char name1[20];
char name2[20];
char ii[10];
char f[]="2008china";//設置密碼
int no,n;
printf("請輸入密碼并以回車鍵結(jié)束:\n\n");
scanf("%s",f);//讀取密碼
if(strcmp(f,"2008china")==0) //判斷密碼是否正確
{
do
{
printf("請選擇刪除以方式回車鍵結(jié)束:\n\n");//打印刪除方式菜單
printf("*1.按航班號刪除\n\n"
"*2.按航線刪除\n\n"
"*0.返回\n\n");
printf("請在0-2中選擇以回車鍵結(jié)束:\n");
scanf("%d",n);//讀取刪除方式
if(n==0)
break; //跳出循環(huán)
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",no);//讀取航班號
read();//調(diào)用讀取函數(shù)
break;//跳出循環(huán)
case 2:
printf("請輸入起始站 名稱:\n");
scanf("%s",name1);//讀取起始站
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//讀取終點站
read();//調(diào)用讀取函數(shù)
break;//跳出循環(huán)
}
for(i=0;im;i++)
{
if(s[i].num==no||strcmp(s[i].start,name1)==0strcmp(s[i].over,name2)==0)//判斷輸入信息是否存在
{
s[i]=s[m-1];
m--;
}
}
printf("查找完畢或沒有這個信息\n\n");
printf("是否繼續(xù)刪除\n");
printf("請鍵入yes或no以回車鍵結(jié)束\n");
scanf("%s",ii); //讀取是否繼續(xù)信息
save(); //調(diào)用讀取函數(shù)
if(!strcmp(ii,"yes")) //判斷是否繼續(xù)刪除
printf("請按任意鍵以回車鍵結(jié)束返回上層菜單:\n");
break;
}while(n!=1n!=2n!=3n!=4n!=0); //判斷結(jié)束
}
else
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
void dingpiao()//訂票模塊
{
int n;
char a[10];
do
{
search();//調(diào)用查詢模塊
printf("請輸入您要訂的機票數(shù)以回車鍵結(jié)束:\n");
scanf("%d",n);//讀取所訂機票數(shù)
if(n0)
{
printf("請輸入有效的機票數(shù)!\n");//判斷機票數(shù)是否出錯
break;
}
if(s[i].count!=0s[i].count=n)//判斷是否出錯
{
s[i].count=s[i].count-n;
save();//調(diào)用保存函數(shù)
printf("訂票成功!\n\n");
break;
}
if(s[i].countn)//判斷是否出錯
{
printf("請輸入有效的機票數(shù):\n");
break;
}
printf("是否繼續(xù)? 請輸入yes或no以回車鍵結(jié)束:\n");//判斷是否繼續(xù)訂票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷結(jié)束
}
void tuipiao()//退票模塊
{
int n;
char a[10];
do
{
search();//調(diào)用查詢模塊
printf("請輸入您要退的機票數(shù)目:\n");
scanf("%d",n);//輸入所退票數(shù)
if(n0) //判斷票數(shù)是否有效
printf("請輸入有效的機票數(shù)!\n");
s[i].count=s[i].count+n;
save(); //調(diào)用保存模塊
printf("退票成功!\n\n");
printf("是否繼續(xù)? 請鍵入yes或no以回車鍵結(jié)束:\n\n");//判斷是否繼續(xù)退票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷并跳出循環(huán)
getchar();
}
void xiugai() //修改模塊
{
struct xiu //定義結(jié)構體
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
}x[1];
char j[10];
char f[]="2008china";//設置密碼
int n;
printf("請輸入密碼并以回車鍵結(jié)束:\n\n");
scanf("%s",f);//讀取密碼
if(strcmp(f,"2008china")==0)//判斷是否出錯
{
read();//調(diào)用讀取模塊
do
{
printf( "請選擇修改方式:\n\n"
"*1,按航班號修改:\n\n"
"*2,按航線修改: \n\n");
printf("請在1---2中修改以回車鍵結(jié)束:\n\n");
scanf("%d",n);//讀取修改方式
switch(n)
{
case 1:printf("請輸入航班號:\n");
scanf("%d",x[0].no);//讀取航班號
break;
case 2:printf("請輸入起始站:\n");
scanf("%s",x[0].name1);//讀取起始站
printf("請輸入終點站:\n");
scanf("%s",x[0].name2);//讀取終點站
break;
}
for(i=0;im;i++)
{
if(strcmp(s[i].over,x[0].name1)==0strcmp(s[i].over,x[0].name2)==0)//判斷輸出條件
{
printf("航班號 起始站 終點站 時間 機票數(shù)\n");
printf(PRINT);
break;
}
if(s[i].num==x[0].no)//判斷輸出條件
{
printf("航班號 起始站 終點站 時間 機票數(shù)\n");
printf(PRINT);
break;
}
}
x[0].no=0; //將結(jié)構體中的號為零
printf("請輸入新航班號、起始站、終點站、時間(星期幾)、機票數(shù):\n");
scanf("%d%s%s%s%d",x[0].no,x[0].name1,x[0].name2,x[0].time,x[0].count);//定義輸入格式
s[i].num=x[0].no;//替換航班號
strcpy(s[i].start,x[0].name1);//替換其始站
strcpy(s[i].over,x[0].name2);//替換終點站
strcpy(s[i].time,x[0].time);//替換時間
s[i].count=x[0].count;//替換機票數(shù)
save();//調(diào)用保存模塊
printf("是否繼續(xù)?請鍵入yes或no以回車鍵結(jié)束:\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0); //判斷結(jié)束
}
else
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
C語言的題目---試設計一個航空客運訂票系統(tǒng)
白癡,這個問題至少200分,我以前的比這個簡單的200分也沒人回答
#include stdio.h
#include string.h
#include conio.h
#include ctype.h
#include stdlib.h
#include malloc.h
#include math.h//overflow
#define ok 1
typedef struct Yidingkehu
{//單鏈表
char name[15];//已訂票的客戶姓名
int dingpiaoshu;//已訂票數(shù)量
struct Yidingkehu *next1;//
}Yidingkehu,*Link;
typedef struct Weidingkehu
{//單鏈隊
char name[15];//預訂票的客戶姓名
int yudingpiao;// 要訂票數(shù)量
struct Weidingkehu *next2;//下一個鏈隊結(jié)點指針
}Weidingkehu,*Qptr;
typedef struct Hangxian
{//創(chuàng)建一個含有六個信息的結(jié)構體
char hangbanhao[15];//航班號-
char feijihao[15];//飛機號
int feixingriqi;//起飛時間
int chenkerenshu;//座位數(shù)
int yupiao;//余票
char zhongdianzhai[15];//降落城市
struct Hangxian *next;//指向下一個鏈結(jié)點的指針
struct Yidingkehu *yiding;//定義一個指向已訂票客戶的頭結(jié)點指針
struct Weidingkehu *yudingqueue;
}Hangxian,*Linklist;
Linklist InitLinklist();//01
int InsertLinklist(Linklist head1);//02
void hbhchaxun();//通過航班號查詢
void mddchaxun();//通過目的地查詢
void lurugongneng();//初始化錄入功能
void chaxungongnen();//查詢功能
void dingpiaogongnen();//訂票功能
void tuipiaogongnen();//退票功能
void main()
{
int n;
do{ //打印主界面
printf("\t 歡迎使用航空客運訂票系統(tǒng)\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1. 錄入功能 ==\n");
printf("\t==2. 查詢功能 ==\n");
printf("\t==3. 訂票功能 ==\n");
printf("\t==4. 退票功能 ==\n");
printf("\t==5. 退出 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",n);printf("\n");
switch(n)
{
case 1: lurugongneng();//錄入功能
break;
case 2: chaxungongnen();//查詢功能
break;
case 3: dingpiaogongnen();//訂票功能
break;
case 4:tuipiaogongnen();//退票功能
break;
default :exit(0);//退出
}
}while(n==1||n==2||n==3||n==4);
}
void lurugongneng()//初始化的單鏈表*********************************************************錄入功能
{
Linklist p;
//int m,n;
if(!p) exit(OVERFLOW);
printf("\t請依次輸入下面幾項內(nèi)容:\n\n");//這里的輸入采用一個個單獨輸入,避免了亂賦值的現(xiàn)象
printf("航班號\n");
gets(p-hangbanhao);//這里的二個gets主要是因為在回車鍵的輸入,其中的第一個是來接收上次的回車
gets(p-hangbanhao);
printf("飛機號\n");
gets(p-feijihao);
printf("終點站\n");
gets(p-zhongdianzhai);
printf("飛行日期\n");
scanf("%d",p-feixingriqi);
printf("乘客總數(shù)\n");
scanf("%d",p-chenkerenshu);
printf("余票數(shù)\n");
scanf("%d",p-yupiao);
}
void chaxungongnen()//******************************************************************查詢功能
{
int n;
printf("\t 查 找 航 線 信 息 \n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1. 通過目的地查詢 ==\n");
printf("\t==2. 通過航班號查詢 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",n);
printf("\n");//格式化
switch(n)
{
case 1:mddchaxun();
break;
case 2:hbhchaxun();
break;
default :break;
}
}
void mddchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的目的地:");
gets(c);
gets(c);//原因同上
do{
p=p-next;
if(p)
{
m=strcmpi((*p).zhongdianzhai,c);//如果==的話則m=0;
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p-hangbanhao);
printf("\t飛機號:%s\n",p-feijihao);
printf("\t飛行時間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的目的地:\n\n"); m=0;
}
}while(m!=0);
}
void hbhchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的航班號:");
gets(c); gets(c);printf("\n");
do{
p=p-next;
if(p)
{
m=strcmpi((*p).hangbanhao,c);//如果==的話則m=0;這里的(*p).與p-的作用是一樣的
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p-hangbanhao);
printf("\t飛機號:%s\n",p-feijihao);
printf("\t飛行時間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的航班號:\n"); m=0;
}
}while(m!=0);
}
void dingpiaogongnen()//***************************************************************訂票功能
{
char c[15];
int m=1,piao,ydpiao=0,yd=0,n;//
gets(c);
printf("請輸入終點站名:"); gets(c); printf("\n");
p=L-next;
if(p) {
do{//查找一下,是否有這個航班
if(!p)
{
printf("對不起,沒有你要找的航班:\n\n");
goto loop1;
}
m=strcmpi(p-zhongdianzhai,c);
if(m==0)
{
printf("航班信息:\n");
printf("航班號:%s\n",p-hangbanhao);
printf("飛機號:%s\n",p-feijihao);
printf("飛行時間:周%d\n",p-feixingriqi);
printf("余票量:%d\n",p-yupiao);}
else p=p-next;
}while(m!=0);
if(m==0)
{
do{
printf("\n請輸入你要訂的票數(shù):"); scanf("%d",piao);
if(piao=p-yupiao)
{
h=p-yiding;
if(h)
{
h1=h;
h=h-next1;
h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));
printf("請輸入你的名字:");
gets(h-name);gets(h-name);
h-dingpiaoshu=piao;
h-next1=h1-next1;
h1-next1=h;
p-yupiao=p-yupiao-piao;
printf("訂票成功:\n"); m=2;
}
}
else
{
printf("余票量:%d\n",p-yupiao);
printf("對不起,余票 %d 張不足,不能完成訂票\n\n",p-yupiao);
printf(" 是否要重新訂票?\n");
printf("需要請輸入1 否則請按2 預訂請輸入3 : ");
scanf("%d",m);
printf("\n");
if(m==3) goto loop3;
}
}while(m==1);
}
}
else if(!p)
{
loop3: struct Weidingkehu *q3;
printf("對不起,該航班的票已售完\n");
q.front=p-yudingqueue;
if(q.front==q.rear) printf("沒有人預訂票,是否要預訂?\n");
else if(q.front!=q.rear) printf("已有人預訂票,是否要預訂?\n");
printf("預訂請輸入1 否則輸入2 : ");
scanf("%d",n);
printf("\n");
if(n==1)
{
printf("請輸入你的姓名"); gets(q3-name); gets(q3-name);//q3不能指向name???
printf("請輸入訂票數(shù)"); scanf("%d",q3-yudingpiao);
q3-next2=NULL;
q.rear-next2=q3;
q.rear=q3;
printf(" 你已經(jīng)預訂了 !\n");
}
}
loop1:;
}
void tuipiaogongnen()//***************************************************************退票功能
{
}
關于《c++機票預訂系統(tǒng)》的介紹到此就結(jié)束了。