收藏 分销(赏)

航空订票系统课程设计.doc

上传人:精*** 文档编号:10416981 上传时间:2025-05-27 格式:DOC 页数:16 大小:214.79KB 下载积分:8 金币
下载 相关 举报
航空订票系统课程设计.doc_第1页
第1页 / 共16页
航空订票系统课程设计.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
设计题目 航空订票系统 任务: 航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。 功能要求: (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-10)? 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].start,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,plane[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循环,现在通过调试,解决了这个问题。 b. 调试后程序会自动判断输入的数字的有效性。 用户手册 (1)演示程序的运行环境为Windows Vista系统,Microsoft Visual Studio 6.0中的Microsoft Visual C++ 6.0中运行。执行文件为:航空订票系统.exe (2)进入演示程序后即显示DOS形式的界面: (3)输入航班信息。 (4)由用户在菜单页面选择需要执行的功能,系统会显示相关信息 测试结果 (1)输入航班信息 (2)列出航班信息 (3)按航班号查询航班信息 (4)按出发到达城市查询航班信息 (5)订票 显示退票后航班信息: (6)退票 显示退票后航班信息: (7)修改: 修改后显示航班信息 对于特殊情况的处理 (1)输入不存在的航班号进行查询 (2)输入不存在的出发到达城市进行查询 (3)剩余票数不足 (4)修改时输入不存在的航班号
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服