当前位置:文档之家› 航空订票系统课程设计

航空订票系统课程设计

设计题目航空订票系统任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。

试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。

功能要求:(1)录入:可以录入航班情况(2)查询:可以查询某个航线的情况(如输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票:可退票,退票后修改相关数据文件;(5)客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;(6)修改航班信息:当航班信息改变可以修改航班数据文件。

需求分析本演示程序中,由用户录入或修改航班情况,进行查询,预定及办理退票等业务,用户在菜单中进行各个不同功能的选择,有“输入航班信息”、“列出航班信息”、“按航班号查询航班信息”、“按出发到达城市查询航班信息”、“订票”、“退票”、“修改航班信息”、“退出程序”八个功能。

概要设计typedef struct{double number;//订单编号char name[20];//姓名char id[20];//身份证号int count;//数量char p[20];//航班号}GUEST;typedef struct{char num[20];//航班号char depart[30];//出发城市char arrive[30];//到达城市char start[20];//起飞时间char end[20];//到达时间int price;//价格int discount;//折扣率(%)int total;//总票数int rest;//剩余票数int t;//订单数GUEST guest[20];//乘客}PLANE;PLANE plane[20];int n;//n为航班数void inputplane()//输入航班void list()//显示void search1()//按航班号查询void search2()//按起飞抵达城市查询void book()//订票void quit()//退票void change()//修改程序调用关系如下:1 2 3 4 5 6 7 8详细设计#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{double number;//订单编号char name[20];//姓名char id[20];//身份证号int count;//数量char p[20];//航班号}GUEST;typedef struct{char num[20];//航班号char depart[30];//出发城市char arrive[30];//到达城市char start[20];//起飞时间char end[20];//到达时间int price;//价格int discount;//折扣率(%)int total;//总票数int rest;//剩余票数int t;//订单数GUEST guest[20];//乘客}PLANE;PLANE plane[20];int n;//n为航班数void inputplane(){//输入航班int i;printf("输入总航班数:");scanf("%d",&n);printf("输入航班信息:\n");printf("航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n");for(i=0;i<n;i++)scanf("%s %s %s %s %s %d %d %d %d",plane[i].num,plane[i].depart,plane[i].arrive,plane[i].s tart,plane[i].end,&plane[i].price,&plane[i].discount,&plane[i].total,&plane[i].rest);}void list(){//显示int i;printf("航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n");for(i=0;i<n;i++)printf("%s %s %s %s \t%s\t%d %d\t%d \t%d\n",plane[i].num,plane[i].depart,plane[i].arrive,plane[i].start,plane[i].end,plane[i].price,plane[i ].discount,plane[i].total,plane[i].rest);}void search1(){//按航班号查询int i;char num[20];printf("输入你查询的航班号:");scanf("%s",num);for(i=0;i<n;i++){if(strcmp(num,plane[i].num)==0){printf("航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n");printf("%s %s %s %s \t%s\t%d %d\t%d \t%d\n",plane[i].num,plane[i].depart,plane[i].arrive,plane[i].start,plane[i].end,plane[i].price,plane[i ].discount,plane[i].total,plane[i].rest);break;}}if(i==n)printf("没有此航班!\n");}void search2(){//按起飞抵达城市查询int i;char a[50],b[50];printf("输入起飞城市和到达城市:");scanf("%s %s",a,b);printf("航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n");for(i=0;i<n;i++){if((strcmp(a,plane[i].depart)==0)&&(strcmp(b,plane[i].arrive)==0))printf("%s %s %s %s \t%s\t%d %d\t%d \t%d\n",plane[i].num,plane[i].depart,plane[i].arrive,plane[i].start,plane[i].end,plane[i].price,plane[i ].discount,plane[i].total,plane[i].rest);}printf("\n");for(i=0;i<n;i++){if((strcmp(a,plane[i].depart)==0)&&(strcmp(b,plane[i].arrive)==0))break;}if(i==n)printf("没有此航班!\n");}void book(){//订票char name[20],p[20],id[20];double number;int i,j,k,y,count;for(i=0;i<n;i++)plane[i].t=0;do{printf("输入订单信息:\n");printf("订单编号姓名身份证号订票数航班号\n");scanf("%d %s %s %d %s",&number,name,id,&count,p);for(i=0;i<n;i++){if(strcmp(p,plane[i].num)==0)break;}if(i==n)printf("没有此航班\n");else{if(plane[i].rest>=count){j=plane[i].t;plane[i].guest[j].number=number;strcpy(plane[i].guest[j].name,name);strcpy(plane[i].guest[j].id,id);plane[i].guest[j].count=count;strcpy(plane[i].guest[j].p,p);plane[i].rest-=count;plane[i].t++;}else{printf("很抱歉,该航班剩余票数为%d 张\n",plane[i].rest);for(k=0;k<n;k++){if((strcmp(plane[i].depart,plane[k].depart)==0)&&(strcmp(plane[i].depart,plane[k].depart)= =0))break;}if(k==n)printf("没有其他从%s到%s的航班\n",plane[i].depart,plane[i].arrive);else{printf("从%s到%s还有%s 航班\n\n",plane[k].depart,plane[k].arrive,plane[k].num);printf("航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n");printf("%s %s %s %s \t%s\t%d %d\t%d \t%d\n",plane[k].num,plane[k].depart,plane[k].arrive,plane[k].start,plane[k].end,plane[k].price,pla ne[k].discount,plane[k].total,plane[k].rest);}}}printf("是否继续订票,“是”输入1,“否”输入0\n");scanf("%d",&y);}while(y);}void quit(){ //退票double number;char id[20];int i,j,temp,k,y;temp=0;printf("请输入您的订单编号:\n");scanf("%d",&number);printf("请输入您的身份证:\n");scanf("%s",id);for(i=0;i<n;i++){for(j=0;j<plane[i].t;j++){if(number==plane[i].guest[j].number&&(strcmp(id,plane[i].guest[j].id)==0)) {temp=1;break;}}if(temp==1)break;}if(i==n)printf("没有此订单!\n");else{printf("订单编号姓名身份证号订票数航班号\n");printf(" %d",plane[i].guest[j].number);printf(" %s",plane[i].guest[j].name);printf(" %s",plane[i].guest[j].id);printf(" %d",plane[i].guest[j].count);printf(" %s\n",plane[i].guest[j].p);printf("您是否确认删除(1/0)\n");scanf("%d",&y);if(y==1){plane[i].rest+=plane[i].guest[j].count;for(k=j+1;k<plane[i].t;k++){plane[i].guest[k-1].number=plane[i].guest[k].number;strcpy(plane[i].guest[k-1].name,plane[i].guest[k].name);strcpy(plane[i].guest[k-1].id,plane[i].guest[k].id);plane[i].guest[k-1].count=plane[i].guest[k].count;strcpy(plane[i].guest[k-1].p,plane[i].guest[k].p);}plane[i].t--;printf("退票成功!!\n");}}}void change()//修改{char a[20];int i;printf("请输入你要修改的航班号:");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,plane[i].num)==0)break;}if(i==n)printf("没有此航班!\n");else{printf("原信息:\n");printf("航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n");printf("%s %s %s %s \t%s\t%d %d\t%d \t%d\n",plane[i].num,plane[i].depart,plane[i].arrive,plane[i].start,plane[i].end,plane[i].price,plane[i ].discount,plane[i].total,plane[i].rest);printf("请输入修改后的信息:\n");printf("航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n");scanf("%s %s %s %s %s %d %d %d %d",plane[i].num,plane[i].depart,plane[i].arrive,plane[i].start, plane[i].end,&plane[i].price,&plane[i].discount,&plane[i].total,&plane[i].rest);}}void main(){int a,b;do{system("cls");for(a=0;a<50;a++)printf("*");printf("\n");printf("\t\t1:输入航班信息\n");printf("\t\t2:列出航班信息\n");printf("\t\t3:按航班号查询航班信息\n");printf("\t\t4:按出发到达城市查询航班信息\n");printf("\t\t5:订票\n");printf("\t\t6:退票\n");printf("\t\t7:修改航班信息\n");printf("\t\t8:退出程序\n");for(a=0;a<50;a++)printf("*");printf("\n");printf("请输入功能选项1-8):\n");scanf("%d",&b);switch(b){case 1:inputplane();system("pause");break;case 2:list();system("pause");break;case 3:search1();system("pause");break;case 4:search2();system("pause");break;case 5:book();system("pause");break;case 6:quit();system("pause");break;case 7:change();system("pause");break;case 8:break;}}while(1);}调试分析a.在做“退票”函数(即void quit())时,系统总是显示没有此订票,最后发现没有跳出其中的一个这个双层for循环,现在通过调试,解决了这个问题。

相关主题