数据结构课程设计报告

发布 2022-10-05 03:29:28 阅读 1802

课程题目:航班信息查询与检索系统

专业。班级:

学生姓名。指导教师。

目录。一、 问题描述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 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...