




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程设计报告 课程设计名称:数据结构课程设计课程设计名称:数据结构课程设计 题目:设计并实现一个航班信息查询与检索系统题目:设计并实现一个航班信息查询与检索系统 院系:计算机学院院系:计算机学院 专业:专业: 班级:班级: 学号:学号: 姓名:姓名: 指导教师:指导教师: _ -可编辑修改- 学术诚信声明 本人声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师 指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中 特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己 经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。 与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明 确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人 愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承 担相关一切后果。 本人签名: 日期: 年 月 日 _ -可编辑修改- _ -可编辑修改- 课程设计名称数数据据结结构构课课程程设设计计专业 学生姓名班级学号 题目名称设计并实现一个航班信息查询与检索系统设计并实现一个航班信息查询与检索系统 起止日期 20162016 年 1212 月 1818 日起至 20172017 年 1 1 月 4 4 日止 课设内容和要求: 对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时 间间 和到达时间等信息进行查询。和到达时间等信息进行查询。 要求:要求: 1. 1.设计数据结构设计数据结构 2. 2.选择合适的排序和查找算法选择合适的排序和查找算法 3. 3.设计软件的功能结构设计软件的功能结构 4. 4.采用模块化编程采用模块化编程 5. 5.给出现实方法和算法给出现实方法和算法 6. 6.按课程设计规范撰写课程设计报告按课程设计规范撰写课程设计报告 参考资料: 1 严蔚敏、陈文博,数据结构及应用算法教程M.北京:清华大学出版社,2011.5 2 张小莉、王苗、罗文劼,数据结构与算法M.北京:机械工业出版社,2014.4 _ -可编辑修改- 教教研研室室审审核核意意见见: 教教研研室室主主任任签签字字: 指导教师(签名)指导教师(签名) 年月日 学学 生(签名)生(签名)年月日 _ -可编辑修改- 课程设计总结:课程设计总结: 本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为 主线,用到了二分查找和顺序查找等知识,还有建立静态链表等。通过这次课程 设计,使我对 C 语言编程有了新的认识。以前编程只是注重如何编写函数能够 完成所需要的功能,只是凭单纯的意识和简单的语句来堆砌出一段程序。但现在 编程感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素,选取 自己需要的数据结构,在编写每一个函数之前,可以仔细斟酌比对,挑选出最适 合当前状况的算法。这样,即使在完整的程序还没有写出来之前,自己心中已经 有了明确的原图了。这样无形中就提高了自己编写的程序的质量。另外,我还体 会到深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能 用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写 程序的关键。 _ -可编辑修改- 目目 录录 1 1 题目介绍题目介绍.5 5 2 2 课程设计要求课程设计要求.5 5 2.1 课程设计内容.5 2.2 课程设计目标.5 3 3 概要设计概要设计.5 5 3.1 设计思路.5 3.2 流程图.5 4 4 算法概述算法概述.6 6 4.1 定义数据类型.6 4.2 函数描述.7 5 5 测试数据测试数据.1010 附附 录(关键部分程序清单)录(关键部分程序清单).1212 _ -可编辑修改- 1 1、题目介绍、题目介绍 设计一个航班信息查询与检索系统。可按航班的航班号、起点站、终点站、起飞时间 以及到达时间等信息进行查询。 2 2、课程设计要求、课程设计要求 1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、 飞机型号、票价。如下表所示: 航班号起点站终点站班期起飞时间到达时间机型票价 CA1544 合肥北京 1.2.4.510551240733960 MU5341 上海广州每日 14201615M901280 CZ3869 重庆深圳 2.4.6085510357331010 2、对航班信息进行排序与查找。 3 3、概要设计、概要设计 3.13.1、设计思路、设计思路 根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了 一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数 据进行排序,最后执行数据查询和检索。在查询设计中,使用折半查找法对排 好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查 找的则采用顺序查询方法。 _ -可编辑修改- 3.23.2、流程图、流程图 数据输入、排序 接受查找条件、查 找关键字 定义数据类型 显示输出 开开 始始 录入信息提示录入信息提示 信息录入信息录入 查询菜单显示查询菜单显示 输入查询序号输入查询序号 判断符号是否判断符号是否 合法合法 按航班号按航班号 查询查询 按起飞时间按起飞时间 查询查询 按到达时间查按到达时间查 询询 按起点站查按起点站查 询询 按终点站按终点站 查询查询 _ -可编辑修改- 4 4、算法实现、算法实现 4. 4.1 1 . . 定义数据类型定义数据类型 根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关 的数据类型: typedef struct char start6; /起点站 char end6; /终点站 char sche10; /班期 char time15; /起飞时间 char time25; /到达时间 char model4; /机型 int price; /票价 info; /航班记录类型 typedef struct char keyskeylen; /关键字 info others; 输出查询结果输出查询结果 结结 束束 _ -可编辑修改- int next; slnode; /表结点 typedef struct slnode slmaxspace; int keynum; /关键字长 int length; /当前表长 sllist; /静态链表类型 为了进行基数排序,需要定义在分配和收集操作时用到的指针数组: typedef int arrtype_n10; /十进制数字指针数组 typedef int arrtype_c26; /26 个字母指针数组 4.24.2 . . 函数描述函数描述 void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,p; for(j=0;j10;j+) fj=ej=0; for(p=sl0.next;p;p=slp.next) j=slp.keysi%48; /将数字字符转化为对应的数值型数字 if(!fj) _ -可编辑修改- fj=p; else slej.next=p; ej=p; /将 p 指向的结点插入到第 j 个结点 void collect(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,t; for(j=0;!fj;j+); /找第一个非空子表 sl0.next=fj; t=ej; while(j10-1) for(j=j+1;j=0;i-) distribute_c(l.sl,i,fc,ec); collect_c(l.sl,i,fc,ec); void arrange(sllist slnode temp; p=l.sl0.next; for(i=1;il.length;i+) while(pi) p=l.slp.next; q=l.slp.next; if(p!=i) temp=l.slp; _ -可编辑修改- l.slp=l.sli; l.sli=temp; /交换记录 l.sli.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.slmid.keys)=0) return mid; else if(strcmp(key,l.slmid.keys)0) high=mid-1; else low=mid+1; return 0; 5 5、测试数据、测试数据 编译后运行,显示: 录入信息_ _ -可编辑修改- 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 录入:CA1544 合肥 北京 1.2.4.5 1055 1240 733 960 显示:是否继续?y/n: 录入:y 显示:航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 录入:MU5341 上海 广州 每日 1420 1615 M90 1280 显示:是否继续?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 1055 1240 733 960 录入:2 显示:输入要查询的航班起点站: 录入:合肥 显示:航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票 价 显示:CA1544 合肥 北京 1.2.4.5 1055 1240 733 960 _ -可编辑修改- 录入:2 显示:输入要查询的航班起点站: 录入:广州 显示: _ -可编辑修改- 附录附录 源程序:源程序: #include #include #define max 100 #define keylen 7 typedef struct char start6; char end6; char sche10; char time15; char time25; _ -可编辑修改- char model4; int price; info; typedef struct char keyskeylen; info others; int next; slnode; typedef struct slnode slmax; int keynum; int length; sllist; typedef int arrtype_n10; typedef int arrtype_c26; void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,p; for(j=0;j10;j+) fj=ej=0; for(p=sl0.next;p;p=slp.next) _ -可编辑修改- j=slp.keysi%48; if(!fj) fj=p; else slej.next=p; ej=p; void collect(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,t; for(j=0;!fj;j+); sl0.next=fj; t=ej; while(j10-1) for(j=j+1;j10-1j+); if(fj) slt.next=fj; t=ej; slt.next=0; void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e) _ -可编辑修改- int j,p; for(j=0;j26;j+) fj=ej=0; for(p=sl0.next;p;p=slp.next) j=slp.keysi%65; if(!fj) fj=p; else slej.next=p; ej=p; void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e) int j,t; for(j=0;!fj;j+); sl0.next=fj; t=ej; while(j26-1) for(j=j+1;j=0;i-) distribute_c(l.sl,i,fc,ec); collect_c(l.sl,i,fc,ec); void arrange(sllist _ -可编辑修改- slnode temp; p=l.sl0.next; for(i=1;il.length;i+) while(pi) p=l.slp.next; q=l.slp.next; if(p!=i) temp=l.slp; l.slp=l.sli; l.sli=temp; l.sli.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.slmid.keys)=0) return mid; _ -可编辑修改- else if(strcmp(key,l.slmid.keys)0) high=mid-1; else low=mid+1; return 0; void seqsearch(sllist l,char key,int i) int j,k,m=0; printf(-n); printf( 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 n); for(j=1;j=1 printf( * 航班信息查询系统 *n); printf(-n); printf( * 1.航 班 号 *n); printf( * 2.起 点 站 *n); printf( * 3.终 点 站 *n); printf( * 4.起飞时间 *n); printf( * 5.到达时间 *n); printf( * 0.退出 *n); printf( -n); printf( (0-5)号服务项目:); scanf(%d, printf(n); switch(i) _ -可编辑修改- case 1:printf(输入要查询的航班号(字母要大写):); scanf(%s,key); k=binsearch(l,key); printf(-n); if(k=0) printf( 无此航班信息,可能是输入错误! n); else printf( 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 n); printf( %-8s%-7s%-7s%-11s%-6s%-6s%-5s%4d n,l.slk.keys,l.slk.others.start,l.slk.others.end,l.slk.others.sche,l.slk.others.time1,l.slk.others.ti me2,l.slk.others.model,l.slk.others.price); printf(-n); break; case 2:printf(输入要查询的航班起点站:); scanf(%s,key); seqsearch(l,key,i); break; case
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级月嫂基础知识培训
- 2.2.4细胞-生命活动的基本单位 分层练习(有答案) 高一生物学苏教版必修一
- 高空坠落现场处理课件
- 北京幼师考试笔试真题及答案
- 北京初三政治中考试卷及答案
- 电焊工常规知识培训课件
- 6-Benzylaminopurine-suitable-for-plant-cell-culture-生命科学试剂-MCE
- 高温消防知识培训方案课件
- 保定高一期末考试试题及答案
- 高校地理考试题及答案
- 市妇幼保健院关于调整实验室生物安全管理委员会的通知
- 亚麻籽油在化妆品配方的应用研究
- 企业负责人施工现场带班检查记录
- 2025年空分设备行业研究报告及未来发展趋势预测
- 幼师面试精 选题目及答案解析
- 企业营销自动化平台开发及应用研究
- 通信技术对生活方式的改变
- 医院招聘面试题目及参考答案
- 神经外科护士进修汇报:专业提升与实践应用
- 重庆导游基础知识课件
- 建筑工地基孔肯雅热防控和应急方案
评论
0/150
提交评论