航班信息查询与检索系统

航班信息查询与检索系统
航班信息查询与检索系统

课程设计报告

课程设计名称:数据结构课程设计

题目:设计并实现一个航班信息查询与检索系统

院系:计算机学院

专业:

班级:

学号:

姓名:

指导教师:

学术诚信声明

本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。

本人签名: 日期:年月日

目录

1 题目介绍 (5)

2 课程设计要求 (5)

2.1课程设计内容 (5)

2.2课程设计目标 (5)

3 概要设计 (5)

3.1设计思路 (5)

3.2流程图 (5)

4 算法概述 (6)

4.1定义数据类型 (6)

4.2函数描述 (7)

5 测试数据 (10)

附录(关键部分程序清单) (12)

1、题目介绍

设计一个航班信息查询与检索系统。可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。

2、课程设计要求

1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。如下表所示:

2、对航班信息进行排序与查找。

3、概要设计

3.1、设计思路

根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。在查询设计中,使用折半查找法对排好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。

3.2、流程图

4、算法实现

4.1 . 定义数据类型

根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型:

typedef struct {

char start[6]; //起点站

char end[6]; //终点站

char sche[10]; //班期

char time1[5]; //起飞时间

char time2[5]; //到达时间

char model[4]; //机型

int price; //票价

}info; //航班记录类型

typedef struct{

char keys[keylen]; //关键字

info others;

int next;

}slnode; //表结点

typedef struct{

slnode sl[maxspace];

int keynum; //关键字长

int length; //当前表长

}sllist; //静态链表类型为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:

typedef int arrtype_n[10]; //十进制数字指针数组

typedef int arrtype_c[26]; //26个字母指针数组

4.2 . 函数描述

void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)

{

int j,p;

for(j=0;j<10;j++)

{

f[j]=e[j]=0;

}

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%48; //将数字字符转化为对应的数值型数字

if(!f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p; //将p指向的结点插入到第j个结点

}

}

void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)

{

int j,t;

for(j=0;!f[j];j++); //找第一个非空子表

sl[0].next=f[j];

t=e[j];

while(j<10-1)

{

for(j=j+1;j<10-1&&!f[j];j++); //找下一个非空子表

if(f[j])

{

sl[t].next=f[j];

t=e[j];

} //链接两个非空子表

}

sl[t].next=0;

}

链式基数排序算法

void radixsort(sllist &l)

{

int i;

arrtype_n fn,en;

arrtype_c fc,ec;

for(i=0;i

l.sl[i].next=i+1;

l.sl[l.length].next=0; //将普通的线性表改为静态链表

for(i=l.keynum-1;i>=2;i--) //按最低位优先依次对各关键字进行分

配和收集

{

distribute(l.sl,i,fn,en);

collect(l.sl,i,fn,en);

}

for(i=1;i>=0;i--)

{

distribute_c(l.sl,i,fc,ec);

collect_c(l.sl,i,fc,ec);

}

}

void arrange(sllist &l) //按指针链表整理静态链表

{

int p,q,i;

slnode temp;

p=l.sl[0].next;

for(i=1;i

{

while(p

p=l.sl[p].next;

q=l.sl[p].next;

if(p!=i)

{

temp=l.sl[p];

l.sl[p]=l.sl[i];

l.sl[i]=temp; //交换记录

l.sl[i].next=p;

}

p=q;

}

}

折半查找函数定义

int binsearch(sllist l,char key[])

{

int low,high,mid;

low=1;

high=l.length;

while(low<=high)

{

mid=(low+high)/2;

if(strcmp(key,l.sl[mid].keys)==0)

return mid;

else if(strcmp(key,l.sl[mid].keys)<0)

high=mid-1;

else

low=mid+1;

}

return 0;

}

5、测试数据

编译后运行,显示:

录入信息^_^

航班号起点站终点站班期起飞时间到达时间机型票价

录入:CA1544合肥北京 1.2.4.5 10551240 733960

显示:是否继续?y/n:

录入:y

显示:航班号起点站终点站班期起飞时间到达时间机型票价录入:MU5341上海广州每日14201615 M901280

显示:是否继续?y/n:

录入:y

显示:航班号起点站终点站班期起飞时间到达时间机型票价录入:CZ3869 重庆深圳 2.4.6 0855 1035 733 1010

显示:是否继续?y/n:

录入:n

录入航班信息后,屏幕显示:

-------------------------------

* 航班信息查询系统*

-------------------------------

* 1.航班号*

* 2.起点站*

* 3.终点站*

* 4.起飞时间*

* 5.到达时间*

* 0.退出*

-----------------------------

(0-5)号服务项目:

录入:1

显示:输入要查询的航班号(字母要大写):

录入:CA1544

显示:航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京1.2.4.5 10551240 733960

录入:2

显示:输入要查询的航班起点站:

录入:合肥

显示:航班号起点站终点站班期起飞时间到达时间机型票价显示:CA1544合肥北京 1.2.4.5 10551240 733960

录入:2

显示:输入要查询的航班起点站: 录入:广州

显示:

附录源程序:

#include

#include

#define max 100

#define keylen 7

typedef struct

{

char start[6];

char end[6];

char sche[10];

char time1[5];

char time2[5];

char model[4];

int price;

}info;

typedef struct

{

char keys[keylen];

info others;

int next;

}slnode;

typedef struct

{

slnode sl[max];

int keynum;

int length;

}sllist;

typedef int arrtype_n[10];

typedef int arrtype_c[26];

void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) {

int j,p;

for(j=0;j<10;j++)

{

f[j]=e[j]=0;

}

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%48;

if(!f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p;

}

}

void collect(slnode *sl,int i,arrtype_n f,arrtype_n e) {

int j,t;

for(j=0;!f[j];j++);

sl[0].next=f[j];

t=e[j];

while(j<10-1)

{

for(j=j+1;j<10-1&&!f[j];j++);

if(f[j])

{

sl[t].next=f[j];

t=e[j];

}

}

sl[t].next=0;

}

void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {

int j,p;

for(j=0;j<26;j++)

{

f[j]=e[j]=0;

}

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%65;

if(!f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p;

}

}

void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {

int j,t;

for(j=0;!f[j];j++);

sl[0].next=f[j];

t=e[j];

while(j<26-1)

{

for(j=j+1;j<26-1&&!f[j];j++);

if(f[j])

{

sl[t].next=f[j];

t=e[j];

}

}

sl[t].next=0;

}

void radixsort(sllist &l)

{

int i;

arrtype_n fn,en;

arrtype_c fc,ec;

for(i=0;i

l.sl[i].next=i+1;

l.sl[l.length].next=0;

for(i=l.keynum-1;i>=2;i--)

{

distribute(l.sl,i,fn,en);

collect(l.sl,i,fn,en);

}

for(i=1;i>=0;i--)

{

distribute_c(l.sl,i,fc,ec);

collect_c(l.sl,i,fc,ec);

}

}

void arrange(sllist &l)

{

int p,q,i;

slnode temp;

p=l.sl[0].next;

for(i=1;i

{

while(p

p=l.sl[p].next;

q=l.sl[p].next;

if(p!=i)

{

temp=l.sl[p];

l.sl[p]=l.sl[i];

l.sl[i]=temp;

l.sl[i].next=p;

}

p=q;

}

}

数据结构课程设计-航班查询与检索(含代码、流程图、输出结果)

算法与数据结构实验报告航班查询与检索 题目:航班查询与检索 指导老师: 组长: 成员: 一:航班信息的查询与检索

初始化信息 进行排序 主菜单显示输入查询序号判断序号是否合法 按航班号查询按时间 查询 按地点 查询 按票价 查询 输出航班信息 结束 开始 按时间查询:

按站点查询: 开始 输入票价范围 判断有无符合条件票价 输出相应信息 返回查询信息 按票价范围查询 输入查询时间 Time=1 按抵达时间查询 按起飞时间查询 返回查询信息 开始 是 否

二分法查询: 开始 返回查询信息 输入起点终点及AD AD=1? 按目的站查询 按起点站查询 否 是

二: 算法分析:程序主要采用结构体 链表 顺序表 队列 主要算法:/*航班信息的查询与检索*/ 三:/*航班信息的查询与检索*/ #include #include 输入航班号 开始 输入航班号对应序列号 High=mid+1 Low<=hi gh Num=F[mid].flight_number Mid=(high+low)/2 Num

#include #define N 6 //航班数 //航班信息 typedef struct flight { char flight_number[10]; //航班号 char start_address[10]; //起飞站 char arrived_address[10]; //终点站 char work_date[10]; //班期 char start_time[6]; //起飞时间 char arrived_time[6]; //到达时间 char FlightType[4]; //机型 int fare; //票价 }DataType; struct flight Flight[N]; //-----------按航班号进行基数排序----------- typedef char KeyType; #define D 7 // D为排序码的最大位数 #define R 'a' // R为基数,这里为小于字母'a'代表的整型值struct Node; //单链表结点类型 typedef struct Node RadixNode; struct Node { KeyType key[D]; //关键字 DataType info; //数据信息 RadixNode *next; }; typedef RadixNode * RadixList; typedef struct QueueNode { RadixNode *f; //对列的头指针 RadixNode *e; //对列的尾指针 }Queue; Queue queue[R];//用队列表示桶 void radixSort(RadixList * plist, int d, int r) { int i,j,k; RadixNode *p, *head; head=(*plist)->next; for(j=d-1; j>=0; j--) //进行d次分配和收集 { p=head; for(i=0; i

航班信息查询与检索(基数排序二插文件)

/*#include "stdafx.h"*/ #include #include #include #include #include using namespace std; #define maxspace 100 #define keylen 7 #define radix_n 10 #define radix_c 26 typedef char keytype; typedef struct { char start[6]; char end[6]; char sche[10]; char time1[5]; char time2[5]; char model[4]; int price; }infotype; typedef struct { keytype keys[keylen]; infotype others; int next; }slnode; typedef struct { slnode sl[maxspace]; int keynum; int length; }sllist; typedef int arrtype_n[radix_n]; typedef int arrtype_c[radix_c]; //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) { int j,p,k; for(j=0;j

数据结构课程设计航班信息查询与检索

学院名称 《数据结构》课程设计报告题目——航班信息查询与检索 班级: 姓名: 时间:2012/12/29---2013/1/5

二○一二年十二月二十九日 课程设计任务书及成绩评定 航班信息查询与检索 课题 名称 Ⅰ、题目的目的和要求: 1、设计目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 2、设计题目要求: 问题描述:该设计要求对飞机航班信息进行排序和查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。 任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,

这种航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。 Ⅱ、设计进度及完成情况 Ⅲ、主要参考文献及资料 [1] 严蔚敏数据结构(C语言版)清华大学出版社 1999 [2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999

[3] 谭浩强 C语言程序设计清华大学出版社 [4] 与所用编程环境相配套的C语言或C++相关的资料 Ⅳ、成绩评定: 设计成绩:(教师填写) 指导老师:(签字) 二○一三年一月五日

c语言航班信息查询系统实验报告

软件学院大作业任务书题目:航班信息查询系统 专业: 班级: 姓名: 学号: 完成人数: 起讫日期: 任课教师:职称:讲师 部分管主任: 完成时间:

说明 1.本任务书由任课教师填写后,下达到学生。 2.任务完成后,任课教师需填写小结表。 3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一 并报送各教学研究部审核后转教务办。 4.另附一份全班大作业总结

NANCHANG UNIVERSITY 高级语言程序设计课程设计 题目: 航班信息查询系统 学院: 专业: 班级: 完成人数: 成员: 起讫日期: 任课教师: 完成时间: 填表日期:

目录 一、需求分析.............................................................................................................................. - 1 - 1.1 项目介绍.................................................................................................................. - 1 - 1.2 功能需求.................................................................................................................. - 1 - 二、系统分析.............................................................................................................................. - 1 - 2.1 本程序需解决的关键技术问题.............................................................................. - 1 - 2.2 程序流程.................................................................................................................. - 1 - 三、程序设计与实现.................................................................................................................. - 2 - 3.1 程序设计.................................................................................................................. - 2 - 3.2 程序实现....................................................................................... 错误!未定义书签。 四、系统测试............................................................................................................................ - 11 - 五、个人小结............................................................................................................................ - 13 - 六、参考文献............................................................................................................................ - 13 -

航班信息查询与检索系统

课程设计报告 课程设计名称:数据结构课程设计 题目:设计并实现一个航班信息查询与检索系统 院系:计算机学院 专业: 班级: 学号: 姓名: 指导教师:

学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期:年月日

目录 1 题目介绍 (5) 2 课程设计要求 (5) 2.1课程设计内容 (5) 2.2课程设计目标 (5) 3 概要设计 (5) 3.1设计思路 (5) 3.2流程图 (5) 4 算法概述 (6) 4.1定义数据类型 (6) 4.2函数描述 (7) 5 测试数据 (10) 附录(关键部分程序清单) (12)

1、题目介绍 设计一个航班信息查询与检索系统。可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。 2、课程设计要求 1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。如下表所示: 2、对航班信息进行排序与查找。 3、概要设计 3.1、设计思路 根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。在查询设计中,使用折半查找法对排好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。 3.2、流程图

对飞机航班信息进行排序和查找

数据结构实验报告 姓名:学号: 专业:信息技术班级: 任课老师:辅导教师: 试验编号:试验五小组成员: 一、实验项目: 航班信息查询 二、实验目的: 对飞机航班信息进行排序和查找。 三、实验内容: 对飞机航班信息进行排序和查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。 四、需求分析 1、先对飞机航班进行排序; 2、根据飞机的各个信息进行查找; 五、概要设计 1、根据要实现的功能,应该以链表来表示集合,所以需要构造的数据类型为链表和集合。 2、结构体hangban struct hangban{ char k[6]; //航班号 string qd; //起点站 string zd; //终点站 string bq; //班期 int btime; //起飞时间 int etime; //到达时间 string jx; //机型 int price; //票价 };//结构体hangban 3、部分函数功能简介 void initb() //创建表 void printb() //输出 void chazhao() //查找信息 void findk() //按航班号查找void findqd() //按起点站查找void findzd() //按终点站查找void findbq() //按班期查找 void findbtime() //按起飞时间查找

void findetime( ) //按到达时间查找void findjx() //按机型查找 void findprice() //按票价查找 六、详细设计 #include using namespace std; struct hangban{ char k[6]; //航班号 string qd; //起点站 string zd; //终点站 string bq; //班期 int btime; //起飞时间 int etime; //到达时间 string jx; //机型 int price; //票价 };//结构体hangban const int n=3; hangban h[n]; void initb() //创建航班信息表{ int l; hangban h1; for(int i=0;i>h[i].k[j]; cout<<"输入起点站"<>h[i].qd; cout<<"输入终点站"<>h[i].zd; cout<<"输入班期"<>h[i].bq; cout<<"输入起飞时间"<>h[i].btime; cout<<"输入到达时间"<>h[i].etime; cout<<"输入机型"<>h[i].jx; cout<<"输入票价"<>h[i].price; } for(int i=0;i

航班查询系统

。 武汉轻工大学数计学院《数据结构》课程设计报告 名称:航班查询系统 班级:信息与计算科学1301 姓名:王杰 学号:1312010027 指导教师:王防修 学年学期:2014 ~ 2015 学年第一学期 2014 年12 月26 日

一、需求分析 1. 问题描述: 本任务要求对飞机航班信息进行排序和查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。本设计主要是对排序以及查找等概念进行综合练习。以链式基数排序为主线,用到二分查找和顺序查找等知识,还有建立静态链表等相关概念. 2. 基本要求: 进入系统后,首先提示输入航班的信息,包括:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号及票价等,票价为整型,其他为字符型。当输入完一个信息后会提示是否继续输入,重复以上步骤输入全部的信息。进入主菜单后会给出用户操作的界面,根据提示进行航班信息的查询。 二、概要设计 1.系统的功能: 本任务要求对飞机航班信息进行排序和查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。本设计主要是对排序以及查找等概念进行综合练习。以链式基数排序为主线,用到二分查找和顺序查找等知识,还有建立静态链表等相关概念。 2.系统模块分析: (1)航班排序对输入系统内的航班首先要进行排序,我们采用的基数排序,从低位到高位依次对关键字进行分配和收集,分两段实现其算法流程图。

(2)时间查找根据航班的起飞时间(到达时间)查找航班的信息。 (3)二分法查找功能 (4)显示功能显示功能是将所求单词的所有行列信息依次显示在屏幕上。 航班查询系统 程序源代码: # include # include # include #include # include # include # define Null 0 struct flight { char fltNum[15]; char StartingPoint [20]; char Terminal [20]; char DepartureTime[8]; char ArrivalTime[8];

航班信息的查询与检索

目录 (2) 1 概述 (2) 1.1 课程设计名称 (2) 1.2 课程设计目的 (2) 1.3 课程设计内容 (2) 2 系统分析 (2) 2.1 设计要求 (2) 2.2 设计分析 (2) 3 概要设计 (3) 3.1 系统总流程图 (3) 3.2 定义数据类型 (3) 3.3 实现排序的各函数的说明 (4) 4 详细设计 (4) 4.1 数据类型的定义 (4) 4.2 链式基数排序 (5) 4.2.1 一趟数字字符分配函数 .................... 错误!未定义书签。 4.2.2 一趟数字字符的收集函数................. 错误!未定义书签。 4.2.3 一趟字母字符分配函数 .................... 错误!未定义书签。 4.2.4 一趟字母字符收集 ........................... 错误!未定义书签。 4.2.6 链式基数排序函数 ........................... 错误!未定义书签。 4.3 重新整理静态链表 (6) 4.4 查找算法实现 (6) 4.4.1 二分查找函数 (6) 4.4.2 顺序查找函数 (7) 4.5 输入输出函数 (7) 5 运行与测试 (8) 6 总结与心得 (11) 7 参考文献 (11) 8 附录(程序源代码) (11)

目录 1 概述 1.1 课程设计名称 航班信息的查询与检索 1.2 课程设计目的 通过本次实验,掌握数据结构中的几种排序算法和查找算法,了解静态链表的运用,利用上述的算法完成航班信息的查询与检索。 2 系统分析 2.1 课程设计内容 本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。我们可以利用航班的这些信息,通过其中的任意一个信息,找出我们所需要的查找的航班的所有信息,所以,我们可以采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排序好的航班记录按航班号实现快速查找,并按其他关键字的查找可以采用最简单的顺序查找方法进行。 2.2 设计要求 1) 提供对航班信息的排序功能 2 提供对航班信息的输入输出记录功能找出我们所需要的查找的航班的所有信息 3)提供按关键字(航班号)快速查询或顺序查询功能 2.3 设计分析 对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用得比较少。 每个航班记录包括八项,分别是:航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。其中航班号一项的格式为: K0 k1 k2 k3 k4 k5 C Z 3 8 6 9 航班关键字可分为两段,即字母和数字。其中k0和k1是航空公司的别称,用两个大写字母表

航班信息的查询与检索实验报告

目录 1 概述................................................................................................ 1.1 问题描述 ................................................................................ 1.2 基本要求 ................................................................................ 2 系统分析......................................................................................... 2.1 功能需求分析......................................................................... 2.2 设计要求 ................................................................................ 3 概要设计......................................................................................... 3.1 各函数说明............................................................................. 4 详细设计......................................................................................... 4.1数据类型定义模块 .................................................................. 4.2实现排序的各函数模块 ........................................................... 5 运行与测试..................................................................................... 5.1 航班信息输入......................................................................... 5.2 航班信息查询......................................................................... 5.3 退出航班信息系统.................................................................. 6 总结与心得 (12) 参考文献

航班信息查询与检索系统优选稿

航班信息查询与检索系 统 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

课程设计报告 课程设计名称:数据结构课程设计题目:设计并实现一个航班信息查询与检索系统院系:计算机学院 专业: 班级: 学号: 姓名: 指导教师: 学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期:年月日 课程设计名称数据结构课程设计专业 学生姓名班级学号 题目名称设计并实现一个航班信息查询与检索系统

目录 1、题目介绍 设计一个航班信息查询与检索系统。可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。 2、课程设计要求 1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。如下表所示:

2、对航班信息进行排序与查找。 3、概要设计 3.1、设计思路 根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。在查询设计中,使用折半查找法对排好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。 3.2、流程图 4 4.1 . 定义数据类型

数据结构课程设计航班信息的查询与检索

目录 第1章概述 (1) 第2章设计要求与分析 (2) 2.1设计要求 (2) 2.2设计分析 (2) 2.2.1定义数据类型 (2) 2.2.2实现排序的个函数说明 (3) 第3章算法实现 (4) 3.1 一趟分配算法 (4) 3.2 一趟收集算法 (4) 3.3 链式基数排序算法 (11) 3.4 二分查找的函数定义 (12) 第4章程序代码 (12) 第5章运行与测试 (20) 第6章实验反思 (23) 参考文献 (23) 第1章概述 排序和查找是在数据信息处理中使用频度极高的操作。为了加快查找的速度,需要先对数据记录按关键字排序。当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、

时间、价格及机型等信息。在这个飞机航班数据的信息模型中,航班号是关键字,而且是具有结构特点的一类关键字。因为航班号是字母数字混变的,例如CZ3869,这种记录集合是一个适合与多关键字排序的例子。 第2章设计要求与分析 2.1设计要求 该设计要求对飞机航班信息进行排序和查找.可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。 对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他词关键字的查找可采用最简单的顺序查找方法进行,因为他们用的较少。 每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表如下表所示: 其中k0和k14位为航班表号,这种航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串型即可。 2.2设计分析 2.2.1定义数据类型 根据设计要求,我们知道设计中所用到的数据记录只有航班信息,因此要定义行管的数据类型:

航班信息管理系统

课程设计 课程名称C语言课程设计 题目名称航班信息管理系统 学生学院物理与光电工程学院专业班级电子科学与技术(4)班学号 学生姓名 指导教师 2015 年10 月23 日

目录 一设计目的.............................................................................................................................. - 2 - 二课程设计的内容.................................................................................................................. - 2 - 三课程设计的要求与数据...................................................................................................... - 2 - 四课程设计应完成的工作...................................................................................................... - 3 - 五总体设计.............................................................................................................................. - 3 - 六详细设计.............................................................................................................................. - 3 - 七调试分析.............................................................................................................................. - 9 - 7.1 源程序及注释............................................................................................................... - 9 - 7.2 调试与测试................................................................................................................. - 30 - 7.2.1 算法调试过程中出现的问题及解决方法:.................................................. - 30 - 7.2.2 主要程序运行结果.......................................................................................... - 32 - 八总结.................................................................................................................................... - 35 - 九参考文献............................................................................................................................ - 36 -

20141204060 航班信息的查询与检索(排序应用)

淮北师范大学 综合设计报告 航班信息的查询与检索(排序应用) 课程数据结构 学院计算机科学与技术 专业网络工程 年级 2014级 学号 20141204060 姓名覃小玲 任课教师乙从才 2015年12月2 3日

一、设计目的与内容 通过本次实验,掌握数据结构中的几种排序算法和查找算法,了解静态链表的运用,利用上述的算法完成航班信息的查询与检索。 二、设计分析 对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用得比较少。 每个航班记录包括八项,分别是:航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。其中航班号一项的格式为: K0 k1 k2 k3 k4 k5 航班关键字可分为两段,即字母和数字。其中k0和k1是航空公司的别称,用两个大写字母表示,后4位为航班编号。 (1)系统总流程图 (2)定义数据类型 根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型:

typedef struct { char start[7]; //起点 char end[7]; //终点 char sche[12]; //班期 char time1[5]; //起飞时间 char time2[5]; //到达时间 char model[4]; //机型 int price; //票价 }InfoType; //航班记录类型 typedef struct{ KeyType keys[keylen]; //关键字 InfoType others; int next; }slnode; //表结点 typedef struct{ SLNode sl[MaxSpace]; //静态链表,s1[0]为头结点 int keylen; //关键字长 int length; //当前表长 }SLList; //静态链表类型 为了进行基数排序,需要定义在分配和收集操作时用到的指针数组: typedef int ArrType_n[10]; //十进制数字指针数组 typedef int ArrType_c[26]; //26个字母指针数组 (3)实现排序的各函数的说明 1)一趟分配函数: void Distribute(SLNode *s1,int i,ArrType f,ArrType e); //本算法是按关键字key[i]建立RADIX个子表,使同一个子表中记录的keys[i] //相同,f[0..RADIX]和e[0..RADIX]分别指向各子表中的第一个和最后一个记录 2)一趟搜集函数: void Collect(SLNode *s1,int i,ArrType f,ArrType e); //本算法是按关键字keys[i]从小到大将[0..RADIX]所指的各子表依次链接成一个链表3)链式基数排序函数: void RadixSort(SLList &L); //本算法是按关键字从低位到高位依次对各关键字进行分配和收集,分两段实现4)二分查找函数: int BinSearch(SLList L,KeyType key[]); //L为待查找的表,key[]为待查找的关键字,按二分查找的思想实现查找 5)主控函数 void main() { 初始化; 数据输入; 排序处理; 接受查找要求及查找关键字;

航班信息的查询与检索

航班信息的查询与检索

目录 (3) 1 概述 (3) 1.1 课程设计名称 (3) 1.2 课程设计目的 (3) 1.3 课程设计内容 (3) 2 系统分析 (3) 2.1 设计要求 (3) 2.2 设计分析 (4) 3 概要设计 (4) 3.1 系统总流程图 (4) 3.2 定义数据类型 (5) 3.3 实现排序的各函数的说明 (7) 4 详细设计 (8) 4.1 数据类型的定义 (8) 4.2 链式基数排序 (9) 4.2.1 一趟数字字符分配函数 ............. 错误!未定义书签。 4.2.2 一趟数字字符的收集函数.......... 错误!未定义书签。 4.2.3 一趟字母字符分配函数 ............. 错误!未定义书签。 4.2.4 一趟字母字符收集 .................... 错误!未定义书签。 4.2.6 链式基数排序函数 .................... 错误!未定义书签。 4.3 重新整理静态链表 (10) 4.4 查找算法实现 (11) 4.4.1 二分查找函数 (11) 4.4.2 顺序查找函数 (12) 4.5 输入输出函数 (13) 5 运行与测试 (16) 6 总结与心得 (19) 7 参考文献 (20) 8 附录(程序源代码) (20)

目录 1 概述 1.1 课程设计名称 航班信息的查询与检索 1.2 课程设计目的 通过本次实验,掌握数据结构中的几种排序算法和查找算法,了解静态链表的运用,利用上述的算法完成航班信息的查询与检索。 2 系统分析 2.1 课程设计内容 本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。我们可以利用航班的这些信息,通过其中的任意一个信息,找出我们所需要的查找的航班的所有信息,所以,我们可以采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排序好的航班记录按航班号实现快速查找,并按其他关键字的查找可以采用最简单的顺序查找方法进行。 2.2 设计要求 1) 提供对航班信息的排序功能 2 提供对航班信息的输入输出记录功能找出我们所需要的查

数据结构课程设计航班信息的查询与检索

目录 第1章概述 (2) 第2章设计要求与分析 (2) 2.1设计要求 (2) 2.2设计分析 (3) 2.2.1定义数据类型 (3) 2.2.2实现排序的个函数说明 (4) 第3章算法实现 (4) 3.1 一趟分配算法 (4) 3.2 一趟收集算法 (5) 3.3 链式基数排序算法 (5) 3.4 二分查找的函数定义 (6) 第4章程序代码 (7) 第5章运行与测试 (7) 第6章实验反思 (10) 参考文献 (11) 第1章概述 排序和查找是在数据信息处理中使用频度极高的操作。为了加快查找的速度,需要先对数据记录按关键字排序。当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、

时间、价格及机型等信息。在这个飞机航班数据的信息模型中,航班号是关键字,而且是具有结构特点的一类关键字。因为航班号是字母数字混变的,例如CZ3869,这种记录集合是一个适合与多关键字排序的例子。 第2章设计要求与分析 2.1设计要求 该设计要求对飞机航班信息进行排序和查找.可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。 对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他词关键字的查找可采用最简单的顺序查找方法进行,因为他们用的较少。 每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表如下表所示: 其中航班号一项的格式为: 其中k0和k1的输入值是航空公司的别称,用两个大写字母表示,后4位为航班表号,这种航班号关键字可分成两段,即字母和数字。其余七项输入容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串型即可。 2.2设计分析 2.2.1定义数据类型 根据设计要求,我们知道设计中所用到的数据记录只有航班信息,因此要定义行管的数

航班信息的查询与检索数据结构程序设计实验报告

实验报告 课程名称数据结构综合设计实验实验项目航班信息的查询与检索 系别___ _计算机学院_ ______ 专业___ 网络工程___ 班级/学号_网工1202/2012011411___ 学生_______王宇涵__________ 实验日期_2014年6月17日 成绩_______________________ 指导教师黄改娟田英爱

1.1 课程设计名称 航班信息的查询与检索 1.2 课程设计目的 通过本次实验,掌握数据结构中的几种排序算法和查找算法,了解静态链表的运用,利用上述的算法完成航班信息的查询与检索。 2 系统分析 2.1 课程设计容 本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。我们可以利用航班的这些信息,通过其中的任意一个信息,找出我们所需要的查找的航班的所有信息,所以,我们可以采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排序好的航班记录按航班号实现快速查找,并按其他关键字的查找可以采用最简单的顺序查找方法进行。 2.2 设计要求 1) 提供对航班信息的排序功能 2 提供对航班信息的输入输出记录功能找出我们所需要的查找的航班的所有信息3)提供按关键字(航班号)快速查询或顺序查询功能 2.3 设计分析 对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用得比较少。 每个航班记录包括八项,分别是:航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。其中航班号一项的格式为:

航班信息查询信息分析

航班信息查询系统分析 航班信息查询系统 当今乘飞机的人越来越多,人们需要关心了解各类航班的班次、时间、价格、机型等信息,设计一个航班信息查询系统,可供人们查询航班信息,该查询系统可按一个或者多个条件查询,航班信息表的部分内容如下: 航班号起点站终点站起飞时间机型票价CA1544 合肥北京10:55 733 960 MU5341 上海重庆14:20 M90 1280 CZ3869 广州南京08:55 733 1010 MU3682 深圳桂林20:50 M90 1060 HUI1863 昆明西安10:15 738 1250 一、需求分析(余子轩、包灵美) 制作一个航班信息查询系统,能够完整显示航班信息可以通过航班号、机型、起点站、到达站、起飞时间中的一个或多个条件查询并显示航班动态。 要求进入查询系统后,可以按要求选择需要更新的操作,并按提速输入要更新的航班数据,更新操作完成后返回初始界面。在选择查询时,能显示输入查询条件的界面并提示输入信息(航班号、起点站、

终点站、班期、起飞时间、到达时间、飞机型号及票价),若输入的信息符合要求则显示相对应的航班信息,否则显示“没有相关航班”并返回输入界面。如果主要想实现查询功能,就可以采用顺序的存储结构;想实现更新操作,采用链式存储结构;相比之下,这次主要想实现的功能是查询功能,因此采用顺序存储结构。考虑到此航班信息查询系统查询功能用到的比较多而更新操作使用的比较少,为了使操作简便,程序利用效率高,使用顺序表来存储航班信息。本系统采用二分查找法、基数排序法、最高位优先法。 二分查找法也称为折半查找法:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果xa[n/2],则我们只要在数组a的右半部继续搜索x。 基数排序法:其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。 最高位优先法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分组,直到按最次位关键码kd对各子组排序后。再将各组连接起来,便得到一个有序序列。 需要注意到的是:在整个航班信息查询系统当中,需要对所要查询的信息进行一定的判断,看是否存在乘客所要查询的航班信息,以

相关文档
最新文档