篇一:航班信息的查询和检索.
题目:航班信息的查询与检索
设计一个实用的航班信息查询和检索系统,要求能对飞机航班信息进行排序和查询。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
一、 模型分析
当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。因此设计此航班信息查询系统。
本算法可对飞机航班信息进行录入、排序和查找,可按航班的航班号、起点站、终点站、起飞时间和到达时间信息进行查询。
(1) 输入的形式:选择功能时,应输入与所选功能对应的一个整型数据;输入航班信息包括航班号(由2位大写字母和4位数字组成)、起点站(1~6位字符)、终点站(1~6位字符)、班期(1~7位字符)、起飞时间(1~4位字符)、到达时间(1~4位字符)、机型(1~3位字符)和票价(整型数字)。
(2)输出的形式:提示用户输入功能代号;提示用户输入要查询的航班信息;显示给航班记录的相关信息,包括航班号、起点站、终点站、班期、起飞时间、到达时间、机型和票价信息。
(3)算法所采用的数据结构:用链式基数排序算法对航班号进行排序,按链表对各条记录进行有序化运算;用二分查找算法检索航班号信息,用顺序查找算法检索其他信息,显示查询结果。
(4)测试数据: /* CA1544 合肥 北京 1.2.4.5 1055 1240 733 960 n 1
CA1544 */
操作顺序如下: 步骤一.航班信息输入。
CA1544 合肥 北京 1.2.4.5 1055 1240 733 960<Enter> 步骤二.航班信息查询。
选择按航班号查询:1<Enter>
输入待查询的航班号:CA1544<Enter>
输入效验成功时,若查找到,即会显示该航班记录的相关信息: CA1544 合肥 北京 1.2.4.5 1055 1240 733 960若未查找到,即会显示:
“很抱歉,无此航班信息。”验证失败时,即会显示:
“错误信息:航班号须由2位大写字母和4位数字组成。”然后结束此次操作。
二、 算法设计
(1)为了实现上述程序功能,采用链式基数排序算法对航班号进行排序,然后便能用
二分查找算法高效地检索航班号信息,其他信息的检索功能采用顺序查找算法实现。
(2)算法用到的抽象数据类型定义: ADT SInfor{数据对象:D={ei|ei∈StructSet, i=1,2,…,n,n>=0}数据关系:R1={<ei-1,ei>|ei-1,ei∈D,i=1,…,n}
基本操作: CreateSInfor(&L) 操作结果:构造一个存储航班信息的链表。 DestroySInfor(&L) 初始条件:L已存在。 操作结果:销毁L。 AddSInfor(&L) 初始条件:L已存在。 操作结果:添加航班信息。 SearchSInfor(L) 初始条件:L已存在。 操作结果:查询航班信息。 DisplaySInfor(&L) 初始条件:L已存在。 操作结果:显示航班信息。 }ADT Sinfor
(3)主程序的流程: int main(void) {初始化;显示用户界面;信息录入,并作输入效验;执行查询; 退出系统; }
(4)各程序模块之间的调用关系: main()调用Prompt(),InputData(),searchcon() InputData()调用Check_HangBanHao(),RadixSort() , Arrange() searchcon()调用BinSearch(),SeqSearch(),Display(),Prompt() RadixSort()调用Distribute(),Collect(),Distribute_c(),Collect_c()
(5)函数调用关系图:
main()
InputData()
RadixSort()
searchcon()
Check_HangBanHao() Arrange() Distribute() Distribute() Distribute() BinSearch() SeqSearch()
Display()
三、完整源程序 :
#include <iostream> #include <string.h> #include <conio.h> #include <windows.h>
#define MaxSpace 100 #define keylen 6 #define RADIX_n 10 #define RADIX_c 26
#define SHOW_MSG_ERROR "\n错误信息:航班号须由2位大写字母和4位数字组成。\n输入数据错误,程序终止执行!\n"
using namespace std;
typedef char KeyType; typedef struct { char start[6]; //起点 char end[6]; //终点 char sche[6]; //班期 char time1[4]; //起飞时间 char time2[4]; //到达时间 char model[3]; //机型 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];
KeyType key[keylen],kl[4];
/*====================函数声明*/
void Distribute(SLNode *sl, int i, ArrType_n &f, ArrType_n &e); void Collect(SLNode *sl, int i, ArrType_n f, ArrType_n e);
void Distribute_c(SLNode *sl, int i, ArrType_c &f, ArrType_c &e); void Collect_c(SLNode *sl, int i, ArrType_c f, ArrType_c e); void RadixSort(SLList &L); void Arrange(SLList &L);
int BinSearch(SLList L, KeyType key[]);
void SeqSearch(SLList L, KeyType key[],int i); void DisplayStyle(int i, char *s); void Display(SLList L, int i); void Quit(void);
void searchcon(SLList L); void Prompt(void);
bool InputData(SLList &L);
bool Check_HangBanHao(char *HangBanHao);
/*----------------------------- 数字字符分配函数 */
void Distribute(SLNode *sl, int i, ArrType_n &f, ArrType_n &e) { int j,p;
for(j=0;j<RADIX_n;j++)f[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 //| 将p指向的结点插入到第j个子表中 sl[e[j]].next=p; //|e[j]=p; //--------------------------------// } }
/*----------------------------- 数字字符收集函数 */ void Collect(SLNode *sl, ArrType_n f, ArrType_n e)
篇二:航班信息管理系统
课 程 设 计
课程名称 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 -
一 设计目的
进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其他相关设计的技能。
二 课程设计的内容
对航班信息(包括航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间、单价)和乘客信息(包括航班号、身份证号码
姓名、性别、出生年月、座位号)进行管理,包括航班信息与乘客信息的输入、输出、查询、删除、统计、退出。假设现收集到了一个机场的所有的航班信息,要求用C语言编写一个简单的航班信息管理系统,可进行录入、查询、修改和浏览航班信息的功能;乘客提出航班号、起飞地点、起飞时间、降落地点、订票数等订票要求,根据事先保存的航班数据决定乘客能否订票。只有全部满足了乘客的订票要求并且所订航班有足够的未订座位之后才能完成订票处理,并且修改该航班的未订座位数(每个航班的未订座位数的初始值就是该航班的最大载客数),否则,订票失败,并且给出不能订票的原因。
三 课程设计的要求与数据
1、对航班信息(包括航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间、单价)和乘客信息(包括航班号、身份证号码、姓名、性别、出生年月、座位号)进行管理,包括航班信息与乘客信息的输入、输出、查询、删除、统计、退出;
2、航班信息内容较多,要求设计的管理系统能够完成以下功能:
(1)、航班信息录入功能:航班信息用文件保存,可以一次完成若干条记录的输入;
(2)、航班信息浏览功能:完成全部航班记录的显示;
(3)、查询功能:完成按航班号或按目的地查找航班记录,并显示;
(4)、航班信息的修改:按航班号进行修改某个航班的信息;
(5)、航班信息的删除:按航班号进行删除某个航班的信息;
(6)、订票处理:按乘客的订票方式完成航班订票处理;
(7)、应提供一个界面来调节各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
四 课程设计应完成的工作
1、编写算法;
2、算法测试,并有具体的测试结果和结果分析;
3、撰写课程设计报告,内容包括:
(1) 封面扉页
(2) 设计任务书
(3) 目录
(4) 总体设计方案(包括流程图)
(5) 使用说明及运行实例(包括界面)
(6) 成员设计内容简介
(7) 项目源代码(注意注释的使用)
(8) 指导老师评语
五 总体设计
1、功能1:航班信息的输入并对输入的内容进行错误检查;
2、功能2:航班信息的显示浏览;
3、功能3:航班信息的修改并对修改的内容进行错误检查;
4、功能4:航班信息的删除;
5、功能5:航班信息的查询;
6、功能6:乘客信息输入并对输入的内容进行错误检查;
7、功能7:订票处理检查是否还有空座位;
8、退出系统。
六 详细设计
系统的整体框图如图1所示:
图1 整体框图
1、打开存放着航班信息与乘客信息的文件:分别打开航班文件与乘客文件,存放在链表中,供后续函数调用;可用函数void read_psg_data(void)、void read_pla_data(void)来实现此操作。 这是两个无参函数,用来读取存储在文件中的信息当到达文件尾时关闭文件并退出函数,带回指向链表头的一个指针和指向链表尾的指针。 算法:fopen()函数打开文件后读取一定长度的信息存到malloc()分配的内存地址空间,声明两个全局指针pla_head和psg_head,每读取一组数据就将其地址存放在pla1节点中,并链接到之前列表的尾端。N-S流程图如图2所示(以读
篇三:航班信息的查询与检索
课 程 设 计
设计题目: 航班信息的查询与检索
院 系 信息学院 班级 学生姓名 学 号
指导教师 职称讲师、讲师
起止日期:2015年12月21日起——至2013年12月31日止
计算机组成原理课程设计成绩评定表
计算机组成原理课程设计成绩评定表
计算机组成原理课程设计成绩评定表
计算机组成原理课程设计成绩评定表