




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构与算法课程设计报告题目: 航班信息的查询与检索 学生姓名 学 号 专业班级 指导教师 日 期 元培学院教务处课 程 设 计 任 务 书班 级姓 名成 绩题目航班信息的查询与检索已知技术参数、设计要求、测试数据等一、 问题描述设计民航售票处的计算机系统可以为客户提供下列各项服务:1.查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、;2.承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况。二、基本要求1.对飞机航班信息进行排序和查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。2.采用快速排序法对的飞机航班号进行排序。3.利用二分查找法对排好序的航班记录按航班号查询。4.每个航班记录包括八项,分别为:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等二、 测试数据CA1505 深圳 海南 135 09:00 11:00 M90 980 10CA1544 上海 北京 1245 10:55 12:40 733 1960 10MU5341 上海 广州 每日 14:20 16:15 M90 1280 10CZ3869 重庆 深圳 246 08:55 10:35 733 1010 10MU3682 杭州 南京 23467 20:50 22:15 M90 1380 10HU1836 上海 北京 每日 09:40 11:20 738 1250 10CZ3528 成都 厦门 13457 15:10 16:50 CRJ 1060 10MU5566 北京 上海 135 09:00 11:00 A77 1234 10BK1456 海南 纽约 126 07:00 19:00 A77 5600 10BK1451 北京 纽约 126 08:00 20:00 A77 5600 10HU1136 上海 巴黎 每日 09:40 16:20 B38 3250 10MU3682 重庆 南京 23467 20:50 22:15 M90 1380 10CA1544 乌鲁木齐 北京 1245 10:55 15:40 733 3960 10AA1544 桂林 杭州 125 10:55 14:40 A73 2960 10CZ3869 深圳 重庆 246 08:55 10:35 733 1010 10AZ7733 海南 新加坡 136 08:55 10:35 777 910 10HU1136 上海 新加坡 每日 09:40 13:20 B38 2250 10HZ1136 北京 巴黎 每日 09:40 16:20 B33 3250 10设计进度安排或工作计划4月10日 4月17日 完成代码4月17日4月19日 完成报告 一、 需求分析要解决的问题:设计民航售票处的计算机系统可以为客户提供下列各项服务:1.查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、;2.承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况。具体要求:1.对飞机航班信息进行排序和查找,可按航班的航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。2. 采用快速排序法对的飞机航班号进行排序。3.利用二分查找法对排好序的航班记录按航班号查询。4.每个航班记录包括八项,分别为:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等二、 概要设计数据类型的声明: /*头文件以及存储结构*/#include#include#includeint n;using namespace std;class Employee2,表达式的抽象数据类型定义 static void twosearch(Employee a);/二分查找static void f_by_address(Employee a,int m);/按起点站/终点站查询staticvoid f_by_time(Employee a,int m);/按起飞时间/到达时间查询 friend void insert(Employee a);/添加航班 void show()/输出信息void book(Employee a)/订票系统void quicksort(Employee a,int low,int high) /-快速排序 3. 主程序的流程三、 详细设计 1.主要代码:friend istream&operator(istream&in,Employee&e)/文件输出流return ine.flight_nume.starte.ende.fly_datee.start_timee.end_timee.flight_typee.pricee.tickets;friend ostream&operator(ostream&out,Employee&e)/文件输入流return oute.flight_nume.starte.ende.fly_datee.start_timee.end_timee.flight_typee.pricee.tickets; void show()/输出信息cout 航班号 起飞站 终点站 班期 起飞时间 到达时间 机型 票价endl;cout flight_num start end fly_date start_time end_time flight_type priceendl;/-快速排序-void quicksort(Employee a,int low,int high)int z,y;Employee key;/定义一个key的类对象,key为关键字if(lowhigh)z=low;y=high; key=alow;/把第一个数据复制给key,为关键字while(z!=y)while(zy)&(strcmp(key.flight_num,ay.flight_num)=0)/当lowhigh且ay.flight_num大于等于关键字y-;/high向前移一位az=ay;/此时ay的值为关键字while(z=0)/当lowhigh且ay.flight_num小于等于关键字z+;/low向后移一位ay=az;/此时az的值为关键字az=key;quicksort(a,low,z-1);/对一边递归调用quicksort()排序quicksort(a,z+1,high);/对另一半递归调用quicksort()排序/通过航班号实现二分查找法查找void Employee:twosearch(Employee a)/二分查找char num6;int key=0;coutnum;int low=0,high=n-1,mid;while(low=high)mid=(low+high)/2;if(!strcmp(num,amid.flight_num)/找到该航班,并输出amid.show();key=1;return;else if(strcmp(num,amid.flight_num)0)high=mid-1;elselow=mid+1;if(!key)cout *对不起,没有您要查找的航班号* endl;void insert(Employee a)/添加航班char secret6;int i=3;coutsecret;if(!strcmp(secret,12345)cout请依次录入航班信息数据(航班号由2位大写字母和4位数字组成):endl;ofstream f;/定义文件对象f.open(初始化航班.txt,ios:app);if(f.fail()/打开文件失败cout打开文件失败!endl;exit(2);int i=n;while(!f.eof()/直到文件结尾/int i=sizeof(a)/sizeof(a0);cout 航班号 起飞站 终点站 班期 起飞时间 到达时间 机型 票价 票数ai.flight_numai.start_timeai.end_timeai.startai.endai.fly_dateai.flight_typeai.priceai.tickets;fai;n+;break;/通过文件输入流导入文件f.close();elsecout密码错误,请重新登入!(istream&in,Employee&e)/文件输出流friend ostream&operator(ostream&out,Employee&e)/文件输入流。在调试过程中遇到其它比较多的问题大概就是输出的格式问题,以及怎么把界面优化到一个良好的可视效果,比较编程最终实现的就是要人机界面要友好。 通过这次课程设计,我对C+类的思想有了更深的了解,学到了C+的文件操作和快速排序算法,虽然这次写的是一个很小的系统,但是为将来开发一个更庞大的系统奠定了一个良好的基础,在这里,要感谢董老师对我的细心帮助。五、 程序清单/*航班信息的查询与检索课程设计 代码*/#include#include#include/#includeint n;using namespace std;/*航班记录类描述*/class Employee /定义一个Employee的类public:char flight_num7;/航班号char start6;/起点站char end6;/终点站char fly_date6;/班期char start_time6;/起飞时间char end_time6;/到达时间char flight_type6;/机型int price;/票价int tickets;/票数public:Employee()Employee(char *a,char *b,char *c,char *d,char *e,char *f,char *g,int h):price(h)/构造函数strcpy(flight_num,a);strcpy(start,b);strcpy(end,c);strcpy(fly_date,d);strcpy(start_time,e);strcpy(end_time,f);strcpy(flight_type,g);Employee()/析构函数friend istream&operator(istream&in,Employee&e)/文件输出流return ine.flight_nume.starte.ende.fly_datee.start_timee.end_timee.flight_typee.pricee.tickets;friend ostream&operator(ostream&out,Employee&e)/文件输入流return oute.flight_nume.starte.ende.fly_datee.start_timee.end_timee.flight_typee.pricee.tickets;static void twosearch(Employee a);/二分查找static void f_by_address(Employee a,int m);/按起点站/终点站查询staticvoid f_by_time(Employee a,int m);/按起飞时间/到达时间查询 friend void insert(Employee a);/添加航班 void show()/输出信息cout 航班号 起飞站 终点站 班期 起飞时间 到达时间 机型 票价endl;cout flight_num start end fly_date start_time end_time flight_type priceendl;/*公有函数*/-订票系统void book(Employee a)char aa6;int b,key=0;char yn6;coutaa;int low=0,high=n-1,mid; while(low=high)mid=(low+high)/2;if(!strcmp(aa,amid.flight_num)/找到航班coutamid.flight_num 剩余票数:amid.ticketsendl;coutb;if(amid.tickets=b)coutyn;if(!strcmp(yn,YES)cout订票成功!endl;amid.tickets-=b;/原票数减去已订购的票数key=1;return;elsekey=1;return;elsecout订购的票数超出了余额!endl;else if(strcmp(aa,amid.flight_num)0)high=mid-1;elselow=mid+1; if(!key)cout *对不起,没有您要查找的航班号* endl;/-快速排序-void quicksort(Employee a,int low,int high)int z,y;Employee key;/定义一个key的类对象,key为关键字if(lowhigh)z=low;y=high; key=alow;/把第一个数据复制给key,为关键字while(z!=y)while(zy)&(strcmp(key.flight_num,ay.flight_num)=0)/当lowhigh且ay.flight_num大于等于关键字y-;/high向前移一位az=ay;/此时ay的值为关键字while(z=0)/当lowhigh且ay.flight_num小于等于关键字z+;/low向后移一位ay=az;/此时az的值为关键字az=key;quicksort(a,low,z-1);/对一边递归调用quicksort()排序quicksort(a,z+1,high);/对另一半递归调用quicksort()排序/-查 询 系 统-/通过航班号实现二分查找法查找void Employee:twosearch(Employee a)/二分查找char num6;int key=0;coutnum;int low=0,high=n-1,mid;while(low=high)mid=(low+high)/2;if(!strcmp(num,amid.flight_num)/找到该航班,并输出amid.show();key=1;return;else if(strcmp(num,amid.flight_num)0)high=mid-1;elselow=mid+1;if(!key)cout *对不起,没有您要查找的航班号* endl;/通过站点查询void Employee:f_by_address(Employee a,int m) char ar6;int key=0,i;if(m=2)coutar;for(i=0;in;i+)if(!strcmp(ar,ai.start)ai.show();key=1;else if(m=3)coutar;for(i=0;in;i+)if(!strcmp(ar,ai.end)ai.show();key=1;if(!key)cout *对不起,该站点不存在* endl;/通过起飞时间到达时间查询void Employee:f_by_time(Employee a,int m)char time6;int i,key=0;if(m=4)couttime;for(i=0;in;i+)if(!strcmp(time,ai.start_time)ai.show();key=1;else if(m=5)couttime;for(i=0;in;i+)if(!strcmp(time,ai.end_time)ai.show();key=1;if(!key)cout *对不起,该站点不存在* endl;/*分函数*void menushow()/菜单cout 航班信息查询与检索系统endl;cout =endl;cout 查询航线-endl;cout 1. 按航班号查询(Find by flight number)endl;cout 2. 按起点站查询(Find by start address)endl;cout 3. 按终点站查询(Find by arrived address)endl;cout 4. 按起飞时间查询(Find by start time)endl;cout 5. 按到达时间查询(Find by arrived time)endl;cout 订票系统endl;cout 6. 订票(book the ticket)endl;cout 管理员系统endl;cout 7. 添加班次(Add divisions )endl;cout 0. 退出系统(Exit program )endl;cout =endl;cout -版权所有:计算机1002 王嘉琦-endlendl;void insert(Employee a)/添加航班char secret6;int i=3;coutsecret;if(!strcmp(secret,12345)cout请依次录入航班信息数据(航班号由2位大写字母和4位数字组成):endl;ofstream f;/定义文件对象f.open(初始化航班.txt,ios:app);if(f.fail()/打开文件失败cout打开文件失败!endl;exit(2);int i=n;while(!f.eof()/直到文件结尾/int i=sizeof(a)/sizeof(a0);cout 航班号 起飞站 终点站 班期 起飞时间 到达时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母爱如山写给妈妈的抒情作文(8篇)
- 页岩气开采技术环境影响评估报告:2025年可持续发展研究
- 新能源企业2025年国际化发展中的技术创新与国际化市场拓展策略报告
- 2025年农业保险产品创新与农村保险服务信息化优化报告
- 广告策划与执行服务委托合同
- 新质生产力视角下的光伏设备解析
- 市场分析服务合作协议
- 人事行政年中工作总结
- 水轮机检修教学课件
- 综采集控工转正考核试卷及答案
- 审批及决策流程管理制度
- 泌尿系结石 课件
- 物业投标书样本
- 安全保密管理方案(2篇)
- 【组织沟通障碍及其对策探究-以A企业为例12000字(论文)】
- 殡葬礼仪服务投标方案(技术方案)
- 血液灌流治疗癌症的原理与前景
- 2024年四川能投宜宾市叙州电力限公司招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- -广告制作报价单-明细
- 屁屁辅助脚本
- 【顺丰集团财务共享中心运作问题与优化建议探析15000字(论文)】
评论
0/150
提交评论