数据结构之航班信息查询与检索

Markdown首次练习

数据结构之航班信息查询与检索

一、 课程设计名称:航班信息查询与检索
二、 使用工具软件Visual C++ /Dev-C++
在这里插入图片描述

三、 课程设计内容简介:
根据题目所要求,程序必须实现航班信息的录入和查询。每条航班记录包括8项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价并且要按不同的关键字对用户指定的航班信息进行查询与检索,有输入和输出模块。
本系统需要实现航班信息的录入和按不同关键字的查询,并显示查询结果。在程序中,分别以航班号、始点站、终点站、起飞时间和到达时间为关键字,使用顺序查找法或折半查找法对航班记录进行查询。而在查找之前,需要对关键字进行排序。
四、基本要求:

友好性:界面要友好,输入有提示,尽量展示人性化
可读性:源程序代码清晰、有层次
健壮性:用户输入非法数据时,系统要及时给出警告信息

准备工作

拿到此课题后首先要确定课题所需要实现的功能,并对程序有一个前期的设想,同时要保证界面的美观简洁。
五、设计思路如下:

  1. 思考代码的主要框架该如何分布,画出基本结构流程图,有利于后面的编程环节顺利进行。
Created with Raphaël 2.2.0 定义数据类型 数据输入、排序 确认查找条件? 输入查找结果 yes no

2.模块安排:首先,把输入板块放在最前面,用来输入航班信息的记录,然后把关键字分为六个模块进行航班信息的查询。输入板块要设定一个结构体函数,里面包含航班信息的8项基本信息,用来录入所有的航班信息。

struct fly{
char flight_num[10];
char start[10];
char endp[10];
char dats[10];
int takeoff;
int landtime;
char type[10];
int price;
}a[10];
typedef fly Fly;
  1. 确定整体函数的主框架,即main函数应该包含哪些内容。在程序中,要分别以航班号、始点站、终点站、起飞时间和到达时间为关键字,所以确定主函数用switch语句分别对应6个关键字的查找,即相关函数的调用。
int main()
{   
    int t;
    cin>>t;
	init(t);
    int n;
    while(1){
        printf("请选择查找的内容:1.航班号  2.起点站 3.终点站 4.起飞时间 5.到达时间 6.价格 \n");
		cin>>n;
        switch(n){
    case 1:
        find_num(t);
        break;
    case 2:
        find_sta(t);
        break;
    case 3:
        find_endp(t);
        break;
    case 4:
        flytime(t);
        break;
    case 5:
        offtime(t);
        break;
    case 6:
        pricedown(t);
        break;
    case 0:
        return 0;
        }
 
    }
    return 0;
}

4.函数的初始化:用何种函数去定义就会影响整个代码的运行过程。Scanf函数用来接收输入的字符或信息,用字符数组更简便去定义,但是航班信息的容量不好控制,用线性表可以更方便查询与记录。

	初始化函数:
void init(int n){
	int i;
	//cin>>n;
	for(i=0;i<n;i++){
		//scanf("%s %s %s %s %d %d %s %d",a[i].flight_num,a[i].start,a[i].endp,a[i].dats,&a[i].takeoff,&a[i].landtime,a[i].type,&a[i].price);
		scanf("%s",a[i].flight_num);
		scanf("%s",a[i].start);
		scanf("%s",a[i].endp);
		scanf("%s",a[i].dats);
		scanf("%d",&a[i].takeoff);
		scanf("%d",&a[i].landtime);
		scanf("%s",a[i].type);
		scanf("%d",&a[i].price);
	}
}

5.程序的完善和运行

前面的准备工作以及功能代码的完成并不能代表整个代码顺利进行,还要进行最后的测试、修改以及完善。

六、 课程设计中目前存在的问题
此程序由于个人能力有限,没有能够运用线性表对航班信息进行录入,以及缺乏对某个航班具体时间的查询。航班信息的容量由于使用数组定义导致容量有限。
在这里插入图片描述

最后的运行结果在这里插入图片描述

七、 设计实践过程中的自我感受

  1. 通过此次课程设计我懂得了理论与实际相结合是很重要的,光有理论知识是不能够达到学习数据结构这门专业课的目的。只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正实现利用所学数据结构的知识实现一系列开发,也从而提高自己的实际动手能力和独立思考的能力。此次课程设计虽然存在很多困难,但仍通过借鉴书本上的知识,和自身学习知识能力相结合将此次作品呈现了出来。
  2. 航班信息的录入模块信息不能写死,虽然每次都要录入航班相关信息,但要比更改整个程序信息简单。
  3. 学习数据结构使我们更好的掌握编程相关知识,此次“航班信息的查询与检索”更是贴合我们的生活,使我更好地认识了编程能力的重要性与方便性。我们不仅要学习理论知识,还要学会与实践相结合,只有这样,才能发挥学习此课程的目的和意义。
  • 完成任务Alt

八 == 主要参考资料==

[1]严蔚敏等,《数据结构》,清华大学出版社,北京,2000。
[2]谭浩强,《C语言程序设计》,清华大学出版社,北京。

  • 9
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1.问题描述 该设计要求对飞机航班信息进行排序和查找。可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。 2.扩展功能: ①能够在起点站与终点站相同的航班信息中筛选出票价最低及飞行时间最短的航班,并显示; ②能够不断添加新的航班信息; ③能够检验输入时间的合法性。 3.任务要求 对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。 每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表(8条记录) 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 CA1544 合肥 北京 1.2.4.5 1055 1240 733 960 MU5341 上海 广州 每日 1420 1615 M90 1280 CZ3869 重庆 深圳 2.4.6 0855 1035 733 1010 MU3682 桂林 南京 2.3.4.6.7 2050 2215 M90 1380 HU1836 上海 北京 每日 0940 1120 738 1250 CZ3528 成都 厦门 1.3.4.5.7 1510 1650 CRJ 1060 MU4594 昆明 西安 1.3.5.6 1015 1140 328 1160 SC7425 青岛 海口 1.3.6 1920 2120 DH4 1630 其中航班号一项的格式为: K0 K1 K2 K3 K4 K5 C Z 3 8 6 9 其中K0和K1的输入值是航空公司的别称,用两个大写字母标示,后4位为航班号,这种航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值