课程题目:航班信息查询与检索系统
专业。班级:
学生姓名。指导教师。
目录。一、 问题描述3
二、 需求分析3
三、 概要设计3
四、 详细设计4
五、 调试分析6
六、 测试结果6
七、 设计小结8
八、 用户手册8
九、附录8一、问题描述:
本课题要求实现对飞机航班信息的录入、保存和查找功能,要实现查找,应先对航班信息(即所有记录)进行排序,每个航班记录包括八项,分别是航班号、起点站、终点站、航班班期、起飞时间、到达时间、飞机型号和票价。如下**所示即为航班信息:
查找时,可分别按航班号、起点站、终点站、班期、起飞时间、到达时间等信息进行输入查找。本程序的核心是按照航班号进行查找,即对航班号进行基数排序。用到数据结构课上的多关键字排序(基数排序等)、顺序查找、折半查找,静态链表的存储结构,c语言中文件的读入和保存等基本知识。
航班号项的格式为:
k0k1k2k3k4k5
其中k0和k1的输入值为航空公司的别称,用两个大写字母表示;后4位为航班编号。记录中其余7项出票价定义为整型外,其他均定义为字符数组型。分别进行基数排序。
二、需求分析。
如今乘飞机旅行的人越来越多,人们要关心和了解各类航班的班次、起点站、终点站、飞机起飞时间、到达某地的时间、机票**以及机型等信息,这就涉及信息的查询与检索。通过程序的编写,可以简单实现一些航班信息的录入、保存、查找等即时即用的功能。通过录入、保存足量的航班信息,用户便可以很方便地进行相关信息的查找,进而满足用户的需求。
3、概要设计。
1、实现方法。
1)第一次运行程序时,将无任何航班信息的记录,程序将提示用户是否录入航班信息;
2)录完信息后即可进行航班信息的查找。
3)根据用户输入的航班号,程序将调用binsearch()子函数进行二分查找,由用户输入的起点站名、终点站名、起飞时间、到达时间,程序均调用seqsearch()子函数进行顺序查找。
4)根据用户的选择,仍可进行信息的录入操作。
5)退出系统后, 录入的信息将被保存到名为record的文件中。
2、模块设计。
四、详细设计。
1、结构体定义。
采用静态链表存储所有航班信息记录。
typedef struct
char start[9起点站。
char end[9终点站。
char sche[15航班班期。
char timeoff[7起飞时间。
char timeon[7到达时间。
char model[6机型。
int price票价。
infotype航班记录类型。
typedef struct
keytype keys[keylen关键字(航班号)
infotype others航班其他记录。
int next;
slnode静态链表结点类型。
typedef struct
slnode sl[maxspace]; 静态链表,sl[0]为头结点。
int keynum记录当前关键字字符个数。
int length当前表长。
sllist; /静态链表类型。
2、基数排序和二分查找。
基数排序借助分配和收集两种操作对单逻辑关键字进行排序,本课题的设计师根据航班号进行基数排序,排序时先按低位数字字符从低位到高位调用distribute_n()函数和 collect_n()函数进行数字字符的分配收集,再对高两位大写字母字符调用distribute_c()函数和 collect_c()函数进行分配和收集,接着调用 radixsort()进行基数排序,最后调用arrange()函数按指针链重新整理静态链表。
按照航班号排好序后,即可调用 binsearch()函数进行二分查找。
3、主要模块的实现
系统以主函数void main()为入口,调用系统函数fopen()从文件中读取数据,然后调用子函数radixsort()和arrange()进行基数排序,接着进入欢迎界面,并显示文件中目前已存储的航班信息,提示用户是否需要录入信息,若需要,则调用输入函数inputdata(l)进行信息的录入,否则调用查询函数searchcon(l)显示查询菜单并提示用户进行信息查找。退出系统后调用s**e()函数保存已录信息。
主菜单函数。ny
yn五、调试分析。
程序在经过了许多次调试之后,终于运行成功。在这样一个过程中,通过查资料、请教同学、上网查询等途径,主要克服了以下问题:
(1)怎样实现对界面的美化,即对文档、背景颜色的控制;尽管还没有掌握,但是能有一定的了解,以后可以进一步学习。
2)在进行航班信息的查找时,当航班记录存在时总会出现“无此航班信息,可能是输入错误!”,接着又显示出要查找的记录;若无航班信息记录时,则会重复多遍“无此航班信息,可能是输入错误!”提醒,经过多次调试,该问题被解决,是循环体出错了。
3)通过分析、查找资料,实现了对记录的录入、保存和按各种信息查找。
六、测试结果。
1、主界面。
2、查询界面。
3、按起点站查找(查找结果)
七、设计小结。
这次课程设计使这学期所学的数据结构知识得到了巩固和应用。数据结构是一门重要的科目,其中涉及的算法在各类编程中应用范围广范。本次实验应用了c语言编写,对上学期所学的知识有了进一步的实践。
虽然在设计过程中遇到了很多困难,但感觉收获还是挺多的,通过学习自己扩充了很多知识点。通过这周的课程设计,我意识到好的学习方法的重要性,在学习中要学会主动,不要什么东西都指望别人,要靠自己去细心观察,多问自己一个为什么,多动手查查、看看,这样自己学到手的东西才会更多!
八、用户手册。
打开程序运行时,界面将出现欢迎使用的信息,提示用户是否需要添加信息,若该程序以前被使用过,将被保存一些航班信息,界面也会显示目前存储的一些航班记录;若用户要添加添加信息,则选y或y进行信息的录入,否则敲其他任意键进入下一个界面,即航班信息查询,根据界面信息提示,用户可任意选择航班信息项进行查找需要的航班信息,也可选择信息录入项继续录入信息,选择退出系统后,用户录入的信息将被保存到名为record的文件中。
1、 主界面。
2、录入信息。
2、 查询界面。
4、按航班号查找。
5、按起点站查找。
6、按终点站查找。
7、按起飞时间查找。
8、按到达时间查找。
9、按航班班期查找。
10、退出系统。
九、附录。#include<>
#include<>
#include<>
#define maxspace 100
#define keylen 6
#define radix_n 10
#define radix_c 26
typedef char keytype;
typedef struct
char start[9起点站。
char end[9终点站。
char sche[15航班班期。
char timeoff[7起飞时间。
char timeon[7到达时间。
char model[6机型。
int price票价。
infotype航班记录类型。
typedef struct
keytype keys[keylen关键字(航班号)
infotype others航班其他记录。
int next;
slnode静态链表结点类型。
typedef struct
slnode sl[maxspace]; 静态链表,sl[0]为头结点。
int keynum记录当前关键字字符个数。
int length当前表长。
sllist; /静态链表类型。
typedef int array_n[radix_n]; 十进制数字指针数组。
typedef int array_c[radix_c]; 26个字母指针数组。
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...