数据结构航班信息的管理实验报告.doc_第1页
数据结构航班信息的管理实验报告.doc_第2页
数据结构航班信息的管理实验报告.doc_第3页
数据结构航班信息的管理实验报告.doc_第4页
数据结构航班信息的管理实验报告.doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计 实验课程: 航班信息系统 班 级: 软件13301 组 长: XXXX 成 员:XXXX、XXXX、XXXXXX、XXXX 学 号:XXXXXXXXXX、1XXXXXXXXX、 1XXXXXXXXX、XXXXXXXXXX 指导教师: XXXXXXX 目录一、概述:2二、系统分析:22.1 输入/输出形式和输出值22.2 功能需求32.3 系统特点3三、概要设计:33.1 设计思路33.2 数据处理33.3 基本概念和数据处理43.4 数据流图6四、详细设计:74.1 设计说明74.2 算法设计与分析7二分查找74.3 算法实现8五、运行与测试:9六、总结与心得:11附录:程序代码12一、 概述:设计一个航班信息查询与检索系统。可事先按要求录入航班信息、删除航班信息、查看全部航班信息及按航班的航班号、起点站、终点站、起飞时间、以及到达时间等信息进行查询。二、系统分析:2.1 输入/输出形式和输出值进入系统后,首先按照要求输入航班信息,包括:航班号、起点站、终点站、航班期、起飞时间、到达时间、票价。除票价为整型外,其他均为字符型。信息完成后均以Enter结束。当输入完一个航班信息后,会提示是否继续输入,若要继续输入则重复上述步骤,否显示主菜单。根据主菜单输入功能序号选择,若用户输入的值超过给定范围,则提示错误并要求重新输入。2.2 功能需求(1)输入航班信息(2)删除航班信息,可按航班号、起点站、终点站、起飞时间、到达时间等删除(3)按不同类型查询航班信息,如航班号、起点站、终点站、起飞时间、到达时间等(4)显示当前所有的航班记录(5)退出系统2.3 系统特点本系统的使用者是航空公司,操作人员只需具备基本的计算机操作技巧即可。三、概要设计:3.1 设计思路根据设计要求,程序必须实现航班信息的录入和查询。程序首先定义了一个用于存储航班信息的数据类型,再由用户录入航班数据路,在录入的同时并对数据进行排序,最后执行数据查询和检索。在设计过程中,使用二分查找法对航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、到达时间查找。3.2 数据处理航班信息管理系统退出显示全部记录查询航班信息删除航班信息录入航班信息按终点站删除查询按起飞时间删除查询按到达时间删除查询按航班号删除查询按起点站删除查询3.3 基本概念和数据处理开始初始化信息主菜单显示输入查询序号判断序号是否合法按地点查询按时间查询按航班号查询按票价查询输出航班信息结束3.4 数据流图航班信息航班信息管理员业务处理用 户查询关键字四、详细设计:4.1 设计说明1)利用起点站、终点站、起飞时间、到达时间为关键字来查询航班信息。该查找算法使用最简单的顺序查找方法进行。即按照航班信息的结构体数组依次与被查找信息进行比较,若找到,则输出结构即可,若没找到,则输出相关的提示信息。 2)利用航班号作为关键字进行查询由于设计内容要求使用基数排序对这组航班信息进行排序,并利用二分查找法对排好的航班记录按航班号实现快速查找,因此此算法设计包括基数排序和二分查找。4.2 算法设计与分析基数排序基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法,其是通过“分配”和“收集”两种操作对相应关键字进行排序。算法思路是按照排序关键字的每一位字符进行排序。排序前,先定义一个队列数组,每个队列数组与某个关键字位对应,某队列中只能存放与该关键字位对应的元素。首先先从关键字的最后一位字符进行判断,根据关键字位,把这个元素放入相应的队列中去,这就是“分配”过程。等到所有元素均被分配到相应队列中之后,在把各个队列中的元素,按照队列数组顺序,依次重新放回原元素数组中,这就是“收集”过程。经过“分配”和“收集”后,一次排序完成。接着再以关键字的倒数第二位字符作为关键字位进行上述排序过程,直到按照关键字的所有位全部进行排序过后,整个序列就成为有序序列,排序完成。二分查找二分查找是对有序序列进行快速查找的一种有效方法。它的基本思想是,每次都与这个有序序列的中间元素进行比较,若找到,则输出元素信息,若没找到,则判断这个中间元素比待查找的元素大还是小,如果大,那么查找工作继续在该有序序列的前半段进行;反之,则继续查找该有序序列的后半段。如此一直查找,直到找到该元素或者查找到只剩下一个元素而这个元素与待查找元素不相符时,查找结束。前一种情况找到了待查找元素,输出该元素,后一种没有找到,输出相应提示信息。4.3 算法实现1定义数据类型根据设计要求,所用到的数据记录只有航班信息,因此要定义相关的数据类型。本系统采用链式存储的存储结构,分别定义三个结构体。 typedef struct /定义航班信息的结构体,静态链表类型char terminal6; /定义起点站char end6; /定义终点站char flightNo10; /定义航班期char startTime5; /定义起飞时间char endTime5; /定义到达时间char type10; /定义机型int price; /定义票价infotype;typedef structkeytype keyskeylen; /航班号,动态链表infotype others;int next;slnode;typedef struct/定义存储信息的结构体slnode slMAX;int keynum; /信息数量,最大表长int length; /信息长度,当前表长sllist; /顺序表类型2实现排序的各函数说明(1)显示一条航班记录函数void Display(SLList L,int i)(2)删除记录函数void del(SLList L, keytype key,int i)(3)显示所有记录函数void displayall(SLList L)(4)顺序查找函数void SeqSearch(sllist l,keytype key,int i)(5)查询检索菜单void serachcon (sllist l)(6)录入航班数据函数void InputData(sllist &l)(7)主函数void main()初始化;数据输入;排序处理;接受查找要求及查找关键字;查找处理;输出查找结果;五、运行与测试:1、录入航班信息 2、删除航班信息3、按起点站查询航班4、按终点站查询航班及显示全部航班信息5、退出航班信息与检索系统六、总结:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX! XXXX附录:程序代码#include #include #include struct SLNode char start10; /起点 char end 10;/终点 char sche10;/班期 char time16;/起飞时间 char time26;/到达时间 char model4;/机型 int price;/票价 char keys6; /关键字(航班号);/航班记录类型/静态链表节点类型typedef struct SLNode *sl;/动态链表 int listsize;/最大表长 int length;/当前表长SLList;/顺序表类型/显示一条航班记录函数void Display(SLList L,int i) printf(航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价n); printf(%6s%6s %6s %6s %6s %6s %4s %dn,L.sli.keys,L.sli.start,L.sli.end,L.sli.sche,L.sli.time1,L.sli.time2,L.sli.model,L.sli.price);/顺序查找函数void SeqSearch(SLList L,char key,int i) int k,j,m=0; for(j=1;j=L.length;j+) switch(i) case 1: k=strcmp(key,L.slj.keys); break; case 2: k=strcmp(key,L.slj.start); break;/起点站 case 3: k=strcmp(key,L.slj.end); break;/终点站 case 4: k=strcmp(key,L.slj.time1); break;/起飞时间 case 5: k=strcmp(key,L.slj.time2); break;/到达时间 if(k=0) m=1; Display(L,j); if(m=0) printf(无此航班信息,您可能输入错误!n); void del(SLList &L,char key,int i) int k,j,m=0;char ch; for(j=1;j=0 & i=5) switch(i) case 1 : printf(请输入要查询的航班号(字母要大写):); scanf(%s,key); getchar(); SeqSearch(L,key,i); break; case 2 : printf(请输入要查询的航班的起始站名:); scanf(%s,key); getchar(); SeqSearch(L,key,i); break; case 3 : printf(请输入要查询的航班的终点站名:); scanf(%s,key); getchar(); SeqSearch(L,key,i); break; case 4 : printf(请输入要查询的航班的起飞时间:); scanf(%s,kl); getchar(); SeqSearch(L,kl,i); break; case 5 : printf(请输入要查询的航班的到达时间:); scanf(%s,kl); getchar(); SeqSearch(L,kl,i); break; case 0 : return ; else printf(您输入的信息错误!n); /输入航班记录函数void InputData(SLList &L) int i;char yn=y;while(yn=y|yn=Y) if(L.listsize0) int i; char key10,kl8; while(1) printf(*n); printf(* 航班信息删除系统 *n); printf(*n); printf(* 1. 按 航 班 号 删 除 *n); printf(* 2. 按 起 点 站 删 除 *n); printf(* 3. 按 终 点 站 删 除 *n); printf(* 4. 按 起飞时间 删 除 *n); printf(* 5. 按 到达时间 删 除 *n); printf(* 0. 返 回 *n); printf(*n); printf(* 请输入(0-5):); scanf(%d,&i); getchar(); if(i=0 & i0) printf(航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价n); for(int i=1;i=L.length;i+) printf(%6s%6s %6s %6s %6s %6s %4s %dn,L.sli.keys,L.sli.start,L.sli.end,L.sli.sche,L.sli.time1,L.sli.time2,L.sli.model,L.sli.price); else printf(没有记录!n);void main()int i;SLList L;L.sl=(SLNode *)malloc(100*sizeof(SLNode);L.listsize=100;L.length=0;system(c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论