【簡介:】本篇文章給大家談?wù)劇禼++飛機(jī)訂票系統(tǒng)》對應(yīng)的知識點,希望對各位有所幫助。本文目錄一覽:
1、怎樣查詢飛機(jī)訂票信息?
2、求c語言編程 通訊錄或者飛機(jī)票查詢系統(tǒng)
3、C語言程
本篇文章給大家談?wù)劇禼++飛機(jī)訂票系統(tǒng)》對應(yīng)的知識點,希望對各位有所幫助。
本文目錄一覽:
- 1、怎樣查詢飛機(jī)訂票信息?
- 2、求c語言編程 通訊錄或者飛機(jī)票查詢系統(tǒng)
- 3、C語言程序?qū)戯w機(jī)訂票系統(tǒng)
- 4、c語言如何編寫飛機(jī)訂票系統(tǒng)?
- 5、c語言編程:飛機(jī)訂票系統(tǒng),c++運(yùn)行
怎樣查詢飛機(jī)訂票信息?
第一種方法撥打電話進(jìn)行查詢。
撥打95583進(jìn)行咨詢。
第二種方法:通過網(wǎng)站進(jìn)行查詢
1)打開一個瀏覽器,在百度中輸入“中國航空”,單擊“百度一下”
2)單擊“中國國航官方網(wǎng)站”官網(wǎng)
3)此時打開中國國際航空公司的網(wǎng)站
4)點擊上方的“預(yù)訂管理”——“機(jī)票訂單”選項
5)在這個界面中,輸入訂單號、手機(jī)號碼、驗證碼,點擊下方的“查找訂單”按鈕即可查詢到飛機(jī)票的信息
求c語言編程 通訊錄或者飛機(jī)票查詢系統(tǒng)
這個是我自己做的類式的,你可以按自己的要求改下·不難的和你的差不多,給分哦
#includestdlib.h
#includestdio.h
#includestring.h
#includeconio.h
#define N 10
/*****定義結(jié)構(gòu)體*****/
typedef struct students /*標(biāo)記為students*/
{
char num[10]; /*學(xué)生學(xué)號*/
char name[10]; /*學(xué)生姓名*/
int age; /*年齡*/
char sex[10]; /*性別*/
float cyy; /*C語言成績*/
float computer; /*計算機(jī)成績*/
float english; /*英語成績*/
float pj; /*平均成績*/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void save(STU students[] ,int n);//導(dǎo)出
int Locate(STU students[],int n);//查詢
/*--------------顯示菜單--------------------*/
char displaymenu()
{
char k;
system("cls");
printf(" 學(xué)生成績管理 \n");
printf("-----------------------------------應(yīng)用菜單-------------------------------------\n");
printf(" 1 輸入學(xué)生成績\n\n");
printf(" 2 輸出學(xué)生成績\n\n");
printf(" 3 查詢學(xué)生成績\n\n");
printf(" 4 修改學(xué)生成績\n\n");
printf(" 5 查看成績排序\n\n");
printf(" 6 查看成績統(tǒng)計\n\n");
printf(" 7 保存數(shù)據(jù)\n\n");
printf(" 8 讀取數(shù)據(jù)\n\n");
printf(" 9 退出系統(tǒng)\n\n");
printf(" 請選擇你想進(jìn)行的操作:");
k=getchar();
return k;
}
/*****定義輸出函數(shù)*****/
void printheader() /*格式化輸出表頭*/
{
printf("\n\n************************學(xué)生成績管理系統(tǒng)****************************\n\n\n");
printf("| 學(xué)號 | 姓名 | 年齡 | 性別 | C語言成績 |計算機(jī)成績 | 英語成績| 平均成績 | \n");
}
void printdata(STU pp) /*格式化輸出表中數(shù)據(jù)*/
{
STU* p;
p=pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p-num,p-name,p-age,p-sex,p-cyy,p-computer,p-english,p-pj);
}
/*****添加學(xué)生信息*****/
int add(STU students[] ,int *n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 請輸入學(xué)生信息 \n");
printf(" 退出請在學(xué)生號處輸入:0 \n");
printf("請輸入學(xué)生學(xué)號:\n ");
scanf("%s",students[i].num);
while(strcmp(students[i].num,"0") )//當(dāng)輸入的學(xué)號為0時結(jié)束輸入
{
printf("請輸入學(xué)生姓名:\n ");
scanf("%s",students[i].name);
printf("****************\n\n\n");
printf("請輸入學(xué)生年齡:\n ");
scanf("%d",students[i].age);
printf("****************\n\n\n");
printf("請輸入學(xué)生性別:\n");
scanf("%s",students[i].sex);
printf("****************\n\n\n");
printf("請輸入C語言成績:\n ");
scanf("%f",students[i].cyy);
printf("****************\n\n\n");
printf("請輸入計算機(jī)成績:\n ");
scanf("%f",students[i].computer);
printf("****************\n\n\n");
printf("請輸入英語成績:\n ");
scanf("%f",students[i].english);
printf("****************\n\n\n");
students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;
printf("學(xué)生平均成績: %-8.0f\n",students[i].pj);
i++;
printf("****************\n\n\n");
printf("請輸入學(xué)生學(xué)號:\n ");
scanf("%s",students[i].num);
}
*n=i;
save(students ,i);
return i;
}
/*****查詢學(xué)生信息函數(shù)*****/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出請輸入:0 \n");
printf("請選擇以什么方式查詢:1).按學(xué)生學(xué)號查詢 2).按學(xué)生姓名查詢 \n");
scanf("%d",k);
if(k==1)
{
printf("請輸入你要查詢的學(xué)生學(xué)號:\n");
scanf("%s",num);
while(in)
{
if(strcmp(students[i].num,num)==0) /*若找到學(xué)號*/
{
printf("學(xué)生學(xué)號:%s\n*學(xué)生姓名:%s\n*學(xué)生年齡:%d\n*學(xué)生性別:%s\nC語言成績:%-8.0f\n計算機(jī)成績:%-8.0f\n英語成績:%-8.0f\n平均成績:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i=n)
printf("沒有所找學(xué)生信息\n");
getchar();
}
else if(k==2)
{
printf("請輸入你要查詢的學(xué)生姓名:\n");
scanf("%s",name);
while(in)
{
if(strcmp(students[i].name,name)==0) /*若找到姓名*/
{ printf("學(xué)生學(xué)號:%s\n學(xué)生姓名:%s\n學(xué)生年齡:%d\n學(xué)生性別:%s\n學(xué)生C語言成績:%-8.0f\n計算機(jī)成績:%-8.0f\n英語成績:%-8.0f\n平均成績:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i=n)
printf("沒有所找學(xué)生信息\n");
}
return m;/*返回一個根m便于修改學(xué)生信息*/
getchar();
}
/*****顯示函數(shù)*****/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /*表示沒有學(xué)生信息記錄*/
{
printf("\n沒有學(xué)生記錄!\n");
}
printf("\n\n");
printheader(); /*輸出表格頭部*/
i=0;
while(in) /*逐條輸出數(shù)組中存儲的學(xué)生信息*/
{
printdata(students[i]);
i++;
}
getchar();
}
/*****修改子程序*****/
void Modify(STU students[],int n)
{
int i;
if(n=0)
{
system("cls");
printf(" \n退出請輸入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改學(xué)生信息");
input(students,n);
i=Locate(students,n); /*查詢到該數(shù)組元素,并返回下標(biāo)值*/
if(i!=-1) /*若i!=-1,表明已經(jīng)找到該數(shù)組元素*/
{
printf("請輸入新的學(xué)生信息: \n");
printf(" 學(xué)號: ");
scanf("%s",students[i].num);
printf(" 姓名: ");
scanf("%s",students[i].name);
printf(" 年齡: ");
scanf("%d",students[i].age);
printf(" 性別: ");
scanf("%s",students[i].sex);
printf(" C語言: ");
scanf("%f",students[i].cyy);
printf(" 英語: ");
scanf("%f",students[i].english);
printf(" 計算機(jī): ");
scanf("%f",students[i].computer);
students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;
printf("平均成績: %-9.0f\n",students[i].pj);
save(students ,n);
printf("\n-------------修改成功!-------------\n");
}
else
printf("not found!\n");
getchar();
}
/*****學(xué)生成績排序子程序*****/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出請輸入:0 \n");
printf("成績排序方式選擇: 1.按C語言 2.按英語 3.按平均 \n ");
scanf("%d",k);
if(k==1) /*用選擇法對C語言排序*/
{
for(i=0; in; i++)
for(j=0;jn-1;j++)
{
if(students[i].englishstudents[j+1].english)
{
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
}
}
}
else if(k==2)/*英語用冒泡法*/
{
for(a=0; an-1; a++)
{
c=a;
for(b=a+1; bn; b++)
if(students[b].cyystudents[c].cyy)
c=b;
if (c!=a)
{
temp=students[a];
students[a]=students[c];
students[c]=temp;
}
}
}
if(k==3) /*平均成績用插入法*/
{
for(d=1;dn;d++)
{
p=students[d].pj;
for(e=0;ed;e++)
if(students[e].pjp)
break;
if(e==d)
continue;
for(f=d;fe;f--)
students[f]=students[f-1];
students[e]=temp;
}
}
input(students,n); /*顯示排序后的所有記錄*/
save(students ,n);
printf("\n 排序完成!\n");
}
/*****統(tǒng)計學(xué)生分?jǐn)?shù)在各等級的人數(shù)子程序*****/
void Tongji(STU students[],int n)
{
int count6085=0,count85=0,count60=0;
int i=0;
system("cls");
printf(" \n退出請輸入:0 \n");
input(students,n);
i=0;
while(in)
{
if(students[i].pj85) /*平均成績=85*/
if(students[i].pj=60students[i].pj=85) /*60平均成績85*/
if(students[i].pj60) /*平均成績60*/
}
printf("\n************統(tǒng)計結(jié)果************\n\n");
printf("平均成績高于85分的人數(shù):%d \n",count85);
printf(" \n");
printf("平均成績在65分和80分之間的人數(shù):%d \n",count6085);
printf(" \n");
printf("平均成績低于60分的人數(shù):%d \n",count60);
printf(" \n");
printf("\n\n**********統(tǒng)計結(jié)束**********");
getchar();
}
/*****導(dǎo)出或保存數(shù)據(jù)*****/
void save(STU students[],int n)
{
FILE* fp;
int i=0;
fp=fopen("students","wb+");/*以讀寫方式打開創(chuàng)建一個二進(jìn)制文件*/
if(fp==NULL) /*打開文件失敗*/
{
printf("\n*******打開文件錯誤!*******\n");
return ;
}
for(i=0;in;i++)
{
if(fwrite(students[i],sizeof(STU),1,fp)==1)/*每次寫一條記錄或一個結(jié)構(gòu)數(shù)組元素至文件*/
{
continue;
}
else
{
break;
}
}
if(i0)
{
getchar();
printf("\n\n*共導(dǎo)出%d個學(xué)生信息*\n",i);
getchar();
}
else
{
system("cls");
printf("**沒有信息導(dǎo)出*\n");
getchar();
}
fclose(fp); /*關(guān)閉此文件*/
}
/*****導(dǎo)入數(shù)據(jù)*****/
void Read(STU students[],int * n)
{
FILE* fp;
int i=0;
fp=fopen("students","rb");/*以只讀方式打開一個已有的二進(jìn)制文件*/
if(fp==NULL) /*打開文件失敗*/
{
printf("\n********打開文件錯誤!********\n");
exit(0);
}
for(i=0;iN;i++)
{
if(fread(students[i],sizeof(STU),1,fp)==1)/*每次讀一條記錄或一個結(jié)構(gòu)數(shù)組元素至文件*/
continue;
else
break;
}
*n=i;
if(i0)
{
printf("\n\n************共導(dǎo)入:%d 個學(xué)生信息 ************\n",i);
getchar();
}
else
{ system("cls");
printf("************沒有信息導(dǎo)入!************\n");
getchar();
}
getchar();
fclose(fp); /*關(guān)閉此文件*/
}
/*****主函數(shù)*****/
void main()
{
STU students[N];
int n;
char s1[3],s2[3]=;
int i,k;
printf("\n\n");
printf("******************************************************\n");
printf("^ 歡迎使用本軟件 ^\n\n");
printf("^ 版本 : oooo ^\n\n\n");
printf("^ 姓名:盧景光 班級: 09623 學(xué)號:34 ^\n");
printf("^ ^\n");
printf("******************************************************\n");
printf("\n\n");
for(i=0;i3;i++)
{
printf("\n請輸入密碼:");
gets(s1);
if(strcmp(s1,s2)==0)
break;
else
printf("\n密碼錯誤,請重新輸入");
}
if(i2)
{
printf("\n您已連續(xù)3次輸錯,系統(tǒng)將退出!\n");
exit(0);
}
else
{
while(1)
{
k=displaymenu();
switch(k)
{
case '1' : add(students,n); break;
case '2' : Read(students,n);input(students,n) ;break;
case '3' : Read(students,n);Locate(students,n);break;
case '4' : Read(students,n);Modify(students,n)break;
case '5' : Read(students,n);sort(students,n);break;
case '6' : Read(students,n);Tongji(students,n); break;
case '7' : save(students,n) ;break;
case '8' : Read(students,n);break;
case '9' : system("cls");
printf("\n **********謝謝您的使用**********\n");exit(0);break;
default : printf("\n\n輸入錯誤,輸入必須是0~9之間的一個數(shù)字!請重新輸入\n");getchar();getchar();
}
}
}
}
C語言程序?qū)戯w機(jī)訂票系統(tǒng)
#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];//預(yù)訂票的客戶姓名
int yudingpiao;// 要訂票數(shù)量
struct Weidingkehu *next2;//下一個鏈隊結(jié)點指針
}Weidingkehu,*Qptr;
typedef struct Hangxian
{//創(chuàng)建一個含有六個信息的結(jié)構(gòu)體
char hangbanhao[15];//航班號-
char feijihao[15];//飛機(jī)號
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 歡迎使用航空客運(yùn)訂票系統(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("飛機(jī)號\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飛機(jī)號:%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飛機(jī)號:%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("飛機(jī)號:%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 預(yù)訂請輸入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("沒有人預(yù)訂票,是否要預(yù)訂?\n");
else if(q.front!=q.rear) printf("已有人預(yù)訂票,是否要預(yù)訂?\n");
printf("預(yù)訂請輸入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)預(yù)訂了 !\n");
}
}
loop1:;
}
void tuipiaogongnen()//***************************************************************退票功能
{
}
請采納答案,支持我一下。
c語言如何編寫飛機(jī)訂票系統(tǒng)?
#includestdio.h
#includestring.h
#includeconio.h
#includectype.h
#includestdlib.h
#includemalloc.h
#includemath.h//overflow
#defineok1
typedefstructYidingkehu
{//單鏈表
charname[15];//已訂票的客戶姓名
intdingpiaoshu;//已訂票數(shù)量
structYidingkehu*next1;//
}Yidingkehu,*Link;
typedefstructWeidingkehu
{//單鏈隊
charname[15];//預(yù)訂票的客戶姓名
intyudingpiao;//要訂票數(shù)量
structWeidingkehu*next2;//下一個鏈隊結(jié)點指針
}Weidingkehu,*Qptr;
typedefstructHangxian
{//創(chuàng)建一個含有六個信息的結(jié)構(gòu)體
charhangbanhao[15];//航班號-
charfeijihao[15];//飛機(jī)號
intfeixingriqi;//起飛時間
intchenkerenshu;//座位數(shù)
intyupiao;//余票
charzhongdianzhai[15];//降落城市
structHangxian*next;//指向下一個鏈結(jié)點的指針
structYidingkehu*yiding;//定義一個指向已訂票客戶的頭結(jié)點指針
structWeidingkehu*yudingqueue;
}Hangxian,*Linklist;
LinklistInitLinklist();//01
intInsertLinklist(Linklisthead1);//02
voidhbhchaxun();//通過航班號查詢
voidmddchaxun();//通過目的地查詢
voidlurugongneng();//初始化錄入功能
voidchaxungongnen();//查詢功能
voiddingpiaogongnen();//訂票功能
voidtuipiaogongnen();//退票功能
voidmain()
{
intn;
do{//打印主界面
printf("\t歡迎使用航空客運(yùn)訂票系統(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)
{
case1:lurugongneng();//錄入功能
break;
case2:chaxungongnen();//查詢功能
break;
case3:dingpiaogongnen();//訂票功能
break;
case4:tuipiaogongnen();//退票功能
break;
default:exit(0);//退出
}
}while(n==1||n==2||n==3||n==4);
}
voidlurugongneng()//初始化的單鏈表*********************************************************錄入功能
{
Linklistp;
//intm,n;
if(!p)exit(OVERFLOW);
printf("\t請依次輸入下面幾項內(nèi)容:\n\n");//這里的輸入采用一個個單獨輸入,避免了亂賦值的現(xiàn)象
printf("航班號\n");
gets(p-hangbanhao);//這里的二個gets主要是因為在回車鍵的輸入,其中的第一個是來接收上次的回車
gets(p-hangbanhao);
printf("飛機(jī)號\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);
}
voidchaxungongnen()//******************************************************************查詢功能
{
intn;
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)
{
case1:mddchaxun();
break;
case2:hbhchaxun();
break;
default:break;
}
}
voidmddchaxun()//通過目的地查詢
{
charc[15];
intm;
Linklistp=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飛機(jī)號:%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);
}
voidhbhchaxun()//通過目的地查詢
{
charc[15];
intm;
Linklistp=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飛機(jī)號:%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);
}
voiddingpiaogongnen()//***************************************************************訂票功能
{
charc[15];
intm=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");
gotoloop1;
}
m=strcmpi(p-zhongdianzhai,c);
if(m==0)
{
printf("航班信息:\n");
printf("航班號:%s\n",p-hangbanhao);
printf("飛機(jī)號:%s\n",p-feijihao);
printf("飛行時間:周%d\n",p-feixingriqi);
printf("余票量:%d\n",p-yupiao);}
elsep=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=(structYidingkehu*)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預(yù)訂請輸入3:");
scanf("%d",m);
printf("\n");
if(m==3)gotoloop3;
}
}while(m==1);
}
}
elseif(!p)
{
loop3:structWeidingkehu*q3;
printf("對不起,該航班的票已售完\n");
q.front=p-yudingqueue;
if(q.front==q.rear)printf("沒有人預(yù)訂票,是否要預(yù)訂?\n");
elseif(q.front!=q.rear)printf("已有人預(yù)訂票,是否要預(yù)訂?\n");
printf("預(yù)訂請輸入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)預(yù)訂了!\n");
}
}
loop1:;
}
voidtuipiaogongnen()//***************************************************************退票功能
{
}
///////////以下是人家的要求//////////
1、本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:起飛地、目的地航班號、座次號碼、座次訂出與否標(biāo)記、訂座者的姓名和訂座者的身份證號碼。
2、本系統(tǒng)顯示這樣的菜單:
(1)輸入航班信息
(2)輸出航班信息
(3)查找航班信息
a.顯示空座的數(shù)量
b.顯示空座的信息
c.顯示已訂座的信息
d.起飛時間
(4)訂票預(yù)約
(5)刪除定票預(yù)約
(6)退出系統(tǒng)
1、本系統(tǒng)成功執(zhí)行菜單的每個信息,選項4)和5)將要求額外的輸入,并且它們都允許用戶收回其輸入。
2、查找航班信息既可按線路查,也可按目的地查。
4、在兩次運(yùn)行之間,數(shù)據(jù)被保存于一個文件里,當(dāng)本程序重新開
始的時候,它首先從該文件讀入數(shù)據(jù)
c語言編程:飛機(jī)訂票系統(tǒng),c++運(yùn)行
#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];//預(yù)訂票的客戶姓名
int yudingpiao;// 要訂票數(shù)量
struct Weidingkehu *next2;//下一個鏈隊結(jié)點指針
}Weidingkehu,*Qptr;
typedef struct Hangxian
{//創(chuàng)建一個含有六個信息的結(jié)構(gòu)體
char hangbanhao[15];//航班號-
char feijihao[15];//飛機(jī)號
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 歡迎使用航空客運(yùn)訂票系統(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("飛機(jī)號\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飛機(jī)號:%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飛機(jī)號:%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("飛機(jī)號:%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 預(yù)訂請輸入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("沒有人預(yù)訂票,是否要預(yù)訂?\n");
else if(q.front!=q.rear) printf("已有人預(yù)訂票,是否要預(yù)訂?\n");
printf("預(yù)訂請輸入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)預(yù)訂了 !\n");
}
}
loop1:;
}
void tuipiaogongnen()//***************************************************************退票功能
{
}
///////////以下是人家的要求//////////
1、本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:起飛地、目的地 航班號、座次號碼、座次訂出與否標(biāo)記、訂座者的姓名和訂座者的身份證號碼。
2、本系統(tǒng)顯示這樣的菜單:
(1) 輸入航班信息
(2) 輸出航班信息
(3) 查找航班信息
a.顯示空座的數(shù)量
b.顯示空座的信息
c.顯示已訂座的信息
d.起飛時間
(4)訂票預(yù)約
(5)刪除定票預(yù)約
(6)退出系統(tǒng)
1、 本系統(tǒng)成功執(zhí)行菜單的每個信息,選項4)和5)將要求額外的輸入,并且它們都允許用戶收回其輸入。
2、 查找航班信息既可按線路查,也可按目的地查。
4、在兩次運(yùn)行之間,數(shù)據(jù)被保存于一個文件里,當(dāng)本程序重新開
始的時候,它首先從該文件讀入數(shù)據(jù)
關(guān)于《c++飛機(jī)訂票系統(tǒng)》的介紹到此就結(jié)束了。