版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告报告(论文)题目: 1航班信息查询系统 2迷宫问题 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: B07513 作 者 姓 名 : 蒲熙德 作 者 学 号 : 20074051306 指导教师姓名: 斯琴巴拉 完 成 时 间 : 2008年12月31日 北华航天工业学院教务处制摘 要本次课设目的在于检验学生在数据结构课程一学期中的学习成果,从而加深学生对所学知识的进一步理解与巩固。本次课程设计过程中我主要根据课本中的实现思想及算法编写程序,体现以课本知识的应用为主,在学习了线性表、栈、队列、二叉树、树和图等结构的基础上,以能够更加熟练的应用所
2、学知识,并能结合一些著名算法来实现对一些实际问题的应用,例如,哈夫曼树等,从而更为深刻理解数据结构的内涵,熟悉它们各自的应用场合及方法。有些在平时课程中并没有掌握的内容在这次课程设计中都是先通过看课本学懂了,然后再在课程设计中加深印象,实现算法的应用和扩展。这次课程设计的设计内容主要是通过实际的例子和程序来实现课本中所学习的算法的应用。我主要做了迷宫问题、哈夫曼编码/译码实现两个题目。本文利用C+语言编写程序,分别实现了对自定义的迷宫有无路径的判定和航班信息查询系统信息的录入,查询,删除,排序。其中航班信息查询系统还可分为五个功能模块:主菜单设计要求、航班信息的录入、查询,排序,输出。两个系统
3、均已经过全面的测试,能够很好的运行,达到了预期的效果。关键词:数据结构 栈 查询 排序 目 录摘要.第1章 绪 论11.1 课程设计选题的目的112 课程设计选题的背景和意义113课题研究的主要内容2第2章 系统需求分析221输入/输出形式和输出值的范围222 程序功能32.3测试数据3第3章 概要设计43.1设计思想43.2函数间的关系4第4章 详细设计54.1航班信息查询系统的主要结构5第5章 调试分析415.1问题描述415.2问题的解决方案415.3设计实现的回顾讨论和分析415.4对算法的分析和改进设想415.5经验和体会41第6章 测试并列出测试结果426.1航班信息查询系统测试结
4、果:426.2迷宫问题测试结果43第7章 总 结447.1设计体会44系统的优点44本系统的不足447.2结束语44致 谢45参考文献45附 录46第1章 绪 论随着信息产业的飞速发展,信息化管理及查询已经引入并应用到各行业管理领域,各种形式的百货商场、大型仓储超市、便利店、连锁超市和专卖店等形式的零售业鳞次栉比,不断改变、影响着人们的价值观念和生活方式。因此,要提升企业竞争力,就要大力推进企业信息化建设,利用先进的办公自动化系统来实现企业内部信息管理、共享及交流,才能使企业在竞争激烈的21世纪取得先机。1.1 课程设计选题的目的为大家解决一些生活中实际的问题,在这个过程中,编程人员自身的能力
5、也在不断地提高。此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解了C+功能之强大,进一步让学生对面向对象的方法以及C+的编程思想有了较好了解和认识。此外,此次设计培养独立开发、设计、调试、运行程序的能力,激发了学生较强的自学兴趣,锻炼学生之间以及学生与老师的交通能力,培养学生合作精神,让学生更好的认识到合作的重要性,使学生在今后的学习中加强对合作精神的培养。12 课程设计选题的背景和意义课程设计选题的背景(1)航班信息查询系统对于航班信息的查询一直以来都世我们比较关注的问题,它与我们的生活密切相关。在此系统中要查询各个方面的信息,还要添加和删除一些
6、信息,会用到我们学过的许多知识。 (2)迷宫问题一款智力游戏能开发人的大脑,尤其是在儿童时期。迷宫相信大家都玩过,但是有的迷宫在开始构造时的错误就没有出路,而让游戏者花费很多时间去寻找出路,所以需要一个程序来判断此迷宫是否有出路,避免了浪费时间。1.2.2课程设计选题的意义一般来说,课程设计要比教学实验复杂一些,涉及的深度深,而且更加实用些。其目的是通过课程设计的综合训练,培养学生分析解决实际问题和编程等动手能力,最终目标是想通过这种形式,帮助同学系统掌握C+这门课程的主要内容,使老师更好的完成教学任务。结合实际应用的要求,使课程设计既覆盖教学所要求的知识点,又接近工程的实际需要,训练自己实际
7、分析问题和解决问题以及编程的能力。通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。只要学生在吃透要求和算法的前提下,完全可以不按书中提示的参考程序,自己设计出更具有特色的程序。13课题研究的主要内容(1)航班信息查询系统要求完成主菜单的设计,包括:创建,修改(插入,删除,更新),查询,输出及退出系统。查询时,可按航班号、起点站、终点站、起飞时间、到达时间等进行查询;修改时,可按航班号、起点站、起飞时间、票价等进行操作;输出时所有结果必须排序。排序关键字为起点站、终点站、起飞时间、到达
8、时间、票价等。(2)迷宫问题 可由操作者自己输入迷宫的大小及设计迷宫的内部构造,操作者也可输入迷宫的入口点和出口点。系统会对输入的数据进行判断其合法性,如不正确,系统会有提示语句,让操作者重新输入。通过计算最后输出一条迷宫的出路。第2章 系统需求分析21输入/输出形式和输出值的范围输入/输出形式的范围(1)首先要输入航班的信息,包括:航班号,起点站,终点站,班期,起飞时间,到达时间,票价,这些信息有些要定义成数组,有的要定义成整型,还有字符型的,对于这些字符的定义要认真不能出错。如果输错信息,将会有提示信息,可以重新输入。(2)迷宫已定义为六行八列。边围规定为1,内围用0、1输入,不用其他的数
9、字,若输入错误系统提示重新输入。入口已默认,输入出口坐标必须在自定义的数组的范围内,系统并会做出判断,然后再给出提示。最后输出从入口点到出口点的坐标。输出值的范围(1)在航班信息查询系统中,本系统设定的MAX值为30,MAX可根据实际情况进行修改。每次输入有误均有提示,可以修改其值。(2)迷宫输出值是整型,入口,出口自行设置,也可以修改。22 程序功能(1)航班信息查询系统要求完成主菜单的设计,包括:创建,修改(插入,删除,更新),查询,输出及退出系统。查询时,可按航班号、起点站、终点站、起飞时间、到达时间等进行查询;修改时,可按航班号、起点站、起飞时间、票价等进行操作;输出时所有结果必须排序
10、。排序关键字为起点站、终点站、起飞时间、到达时间、票价等。(2)迷宫问题在迷宫问题中,可由操作者自己输入迷宫的大小及设计迷宫的内部构造,操作者自己也可输入迷宫的入口点和出口点。系统会对输入的数据进行判断其合法性,如不正确,系统会有提示语句,让操作者重新输入。最后输出一条迷宫的出路。2.3测试数据正确的输入及输出结果(1)航班信息查询系统:正确输入,系统继续执行,如图2-1所示:图2-1 正确输入错误输入,如图2-2所示:图2-2 错误输入(2)迷宫问题:正确输入,如图2-3所示:图2-3正确输入第3章 概要设计3.1设计思想 (1)航班信息查询借助顺序表来实现,查询用顺序查找,用冒泡排序实现实
11、现排序输出。(2)用二维数组来表示迷宫,用栈来保存走过的路径和方向,定义一个结构体来存储该信息。再用结构体表示方向。3.2函数间的关系(1)航班信息查询系统,函数间的关系如图3-1所示:Void paixu1() paixu1()Void paixu2() paixu1()Void paixu3() paixu1()Void chaxun()Void paixu4() paixu1()Void paixu5() paixu1()Voidshanchu4() paixu1()Voidshanchu3() paixu1()Voidshanchu2() paixu1()Voidshanchu1()
12、paixu1()Voidshanchu5() paixu1()Void delete_seqlist ()Void main()Void insert_seqlist ()Void xiugai3() paixu1()Void xiugai2() paixu1()Void xiugai1() paixu1()Void xiugai5() paixu1()Void xiugai4() paixu1()Void xiugai()Void shuchu4() paixu1()Void shuchu3() paixu1()Void shuchu2() paixu1()Void shuchu1() pa
13、ixu1()Void shuchu5() paixu1()Void shuchu()图3-1(2)迷宫问题,函数间的关系,如图3-2所示:Void main()创建迷宫出口坐标入口坐标输出路径图3-2第4章 详细设计4.1航班信息查询系统的主要结构结构定义如下:typedef structint hour,min;time;typedef structint sche7;int tianshu;node;typedef structchar number8;/航班号char bstation15;/始发站char estation15;/终点站time btime;/起飞时刻time etim
14、e;/到达时刻char model3;/机型node banqi;/班期int price;/票价infotype;/车次信息typedef struct infotype datamaxsize;int last;seqlist;seqlist *init_seqlist()/ 顺序表初始化seqlist *l;l=new seqlist;if(l)l-last=-1;return l;else return NULL;int insert_seqlist(seqlist *l)/插入if(l-last=maxsize-1)cout表满last+;char a8,b15,c15,h3;int
15、 d,e,f,g,k,p,o;coutabcdefgk;/航班号,起点站,终点站,起飞时间,到达时间,票价 int n=l-last;while(n=0)if(strcmp(a,l-datan.number)=0)cout输入航班号相同,请重新输入!last;cina;elsen-;while(k0)cout输入票价小于零,请重新输入!k;while(d=24)cout输入起飞时间小时错误,请重新输入!d;while(e=60)cout输入起飞时间分钟错误,请重新输入!e;while(f=24)cout输入到达时间小时错误,请重新输入!f;while(g=60)cout输入到达时间分钟错误,请
16、重新输入!g;cout请输入航班型号 航班一周运行的天数:hp;while(p7)cout请注意!一周只有七天!哈哈,请重新输入:p;l-datal-last.banqi.tianshu=p;cout请输入这周那些天有航班,用空格键隔开:;for(int m=0;mo;l-datal-last.banqi.schem=o;strcpy(l-datal-last.number,a);strcpy(l-datal-last.bstation,b);strcpy(l-datal-last.estation,c);l-datal-last.btime.hour=d;l-datal-last.btime
17、.min=e;l-datal-last.etime.hour=f;l-datal-last.etime.min=g;strcpy(l-datal-last.model,h); l-datal-last.price=k;return 1;按票价进行排序:void paixu1(seqlist *l)int n=l-last;int i,j,swap;for(i=0;in;i+)swap=0;for(j=0;jdataj.pricel-dataj+1.price)strcpy(l-datamaxsize-1.number,l-dataj.number);strcpy(l-dataj.number,
18、l-dataj+1.number);strcpy(l-dataj+1.number,l-datamaxsize-1.number);strcpy(l-datamaxsize-1.bstation,l-dataj.bstation);strcpy(l-dataj.bstation,l-dataj+1.bstation);strcpy(l-dataj+1.bstation,l-datamaxsize-1.bstation);strcpy(l-datamaxsize-1.estation,l-dataj.estation);strcpy(l-dataj.estation,l-dataj+1.esta
19、tion);strcpy(l-dataj+1.estation,l-datamaxsize-1.estation);l-datamaxsize-1.btime.hour=l-dataj.btime.hour;l-dataj.btime.hour=l-dataj+1.btime.hour;l-dataj+1.btime.hour=l-datamaxsize-1.btime.hour;l-datamaxsize-1.btime.min=l-dataj.btime.min;l-dataj.btime.min=l-dataj+1.btime.min;l-dataj+1.btime.min=l-data
20、maxsize-1.btime.min;l-datamaxsize-1.etime.hour=l-dataj.etime.hour;l-dataj.etime.hour=l-dataj+1.etime.hour;l-dataj+1.etime.hour=l-datamaxsize-1.etime.hour;l-datamaxsize-1.etime.min=l-dataj.etime.min;l-dataj.etime.min=l-dataj+1.etime.min;l-dataj+1.etime.min=l-datamaxsize-1.etime.min;l-datamaxsize-1.pr
21、ice=l-dataj.price;l-dataj.price=l-dataj+1.price;l-dataj+1.price=l-datamaxsize-1.price;l-datamaxsize-1.banqi=l-dataj.banqi;l-dataj.banqi=l-dataj+1.banqi;l-dataj+1.banqi=l-datamaxsize-1.banqi;swap=1;if(swap=0)break;按起飞地点进行排序void paixu2(seqlist *l)int n=l-last;int i,j,swap;for(i=0;in;i+)swap=0;for(j=0;
22、jdataj.bstation,l-dataj+1.bstation)0)strcpy(l-datamaxsize-1.number,l-dataj.number);strcpy(l-dataj.number,l-dataj+1.number);strcpy(l-dataj+1.number,l-datamaxsize-1.number);strcpy(l-datamaxsize-1.bstation,l-dataj.bstation);strcpy(l-dataj.bstation,l-dataj+1.bstation);strcpy(l-dataj+1.bstation,l-datamax
23、size-1.bstation);strcpy(l-datamaxsize-1.estation,l-dataj.estation);strcpy(l-dataj.estation,l-dataj+1.estation);strcpy(l-dataj+1.estation,l-datamaxsize-1.estation); l-datamaxsize-1.btime.hour=l-dataj.btime.hour;l-dataj.btime.hour=l-dataj+1.btime.hour;l-dataj+1.btime.hour=l-datamaxsize-1.btime.hour;l-
24、datamaxsize-1.btime.min=l-dataj.btime.min;l-dataj.btime.min=l-dataj+1.btime.min;l-dataj+1.btime.min=l-datamaxsize-1.btime.min;l-datamaxsize-1.etime.hour=l-dataj.etime.hour;l-dataj.etime.hour=l-dataj+1.etime.hour;l-dataj+1.etime.hour=l-datamaxsize-1.etime.hour;l-datamaxsize-1.etime.min=l-dataj.etime.
25、min;l-dataj.etime.min=l-dataj+1.etime.min;l-dataj+1.etime.min=l-datamaxsize-1.etime.min;l-datamaxsize-1.price=l-dataj.price;l-dataj.price=l-dataj+1.price;l-dataj+1.price=l-datamaxsize-1.price;l-datamaxsize-1.banqi=l-dataj.banqi;l-dataj.banqi=l-dataj+1.banqi;l-dataj+1.banqi=l-datamaxsize-1.banqi;swap
26、=1;if(swap=0)break;按终点站进行排序:void paixu3(seqlist *l)int n=l-last;int i,j,swap;for(i=0;in;i+)swap=0;for(j=0;jdataj.estation,l-dataj+1.estation)0)strcpy(l-datamaxsize-1.number,l-dataj.number);strcpy(l-dataj.number,l-dataj+1.number);strcpy(l-dataj+1.number,l-datamaxsize-1.number);strcpy(l-datamaxsize-1.
27、bstation,l-dataj.bstation);strcpy(l-dataj.bstation,l-dataj+1.bstation);strcpy(l-dataj+1.bstation,l-datamaxsize-1.bstation);strcpy(l-datamaxsize-1.estation,l-dataj.estation);strcpy(l-dataj.estation,l-dataj+1.estation);strcpy(l-dataj+1.estation,l-datamaxsize-1.estation);l-datamaxsize-1.btime.hour=l-da
28、taj.btime.hour;l-dataj.btime.hour=l-dataj+1.btime.hour;l-dataj+1.btime.hour=l-datamaxsize-1.btime.hour;l-datamaxsize-1.btime.min=l-dataj.btime.min;l-dataj.btime.min=l-dataj+1.btime.min;l-dataj+1.btime.min=l-datamaxsize-1.btime.min;l-datamaxsize-1.etime.hour=l-dataj.etime.hour;l-dataj.etime.hour=l-da
29、taj+1.etime.hour;l-dataj+1.etime.hour=l-datamaxsize-1.etime.hour;l-datamaxsize-1.etime.min=l-dataj.etime.min;l-dataj.etime.min=l-dataj+1.etime.min;l-dataj+1.etime.min=l-datamaxsize-1.etime.min;l-datamaxsize-1.price=l-dataj.price;l-dataj.price=l-dataj+1.price;l-dataj+1.price=l-datamaxsize-1.price;l-d
30、atamaxsize-1.banqi=l-dataj.banqi;l-dataj.banqi=l-dataj+1.banqi;l-dataj+1.banqi=l-datamaxsize-1.banqi;swap=1;if(swap=0)break;按起飞时间按进行排序void paixu4(seqlist *l)int n=l-last;int i,j,swap;for(i=0;in;i+)swap=0;for(j=0;jdataj.btime.hour*60+l-dataj.btime.min)(l-dataj.btime.hour*60+l-dataj.btime.min)strcpy(l
31、-datamaxsize-1.number,l-dataj.number);strcpy(l-dataj.number,l-dataj+1.number);strcpy(l-dataj+1.number,l-datamaxsize-1.number);strcpy(l-datamaxsize-1.bstation,l-dataj.bstation);strcpy(l-dataj.bstation,l-dataj+1.bstation);strcpy(l-dataj+1.bstation,l-datamaxsize-1.bstation);strcpy(l-datamaxsize-1.estat
32、ion,l-dataj.estation);strcpy(l-dataj.estation,l-dataj+1.estation);strcpy(l-dataj+1.estation,l-datamaxsize-1.estation);l-datamaxsize-1.btime.hour=l-dataj.btime.hour;l-dataj.btime.hour=l-dataj+1.btime.hour;l-dataj+1.btime.hour=l-datamaxsize-1.btime.hour;l-datamaxsize-1.btime.min=l-dataj.btime.min;l-da
33、taj.btime.min=l-dataj+1.btime.min;l-dataj+1.btime.min=l-datamaxsize-1.btime.min;l-datamaxsize-1.etime.hour=l-dataj.etime.hour;l-dataj.etime.hour=l-dataj+1.etime.hour;l-dataj+1.etime.hour=l-datamaxsize-1.etime.hour;l-datamaxsize-1.etime.min=l-dataj.etime.min;l-dataj.etime.min=l-dataj+1.etime.min;l-da
34、taj+1.etime.min=l-datamaxsize-1.etime.min;l-datamaxsize-1.price=l-dataj.price;l-dataj.price=l-dataj+1.price;l-dataj+1.price=l-datamaxsize-1.price;l-datamaxsize-1.banqi=l-dataj.banqi;l-dataj.banqi=l-dataj+1.banqi;l-dataj+1.banqi=l-datamaxsize-1.banqi;swap=1;if(swap=0)break;按到达时间进行排序:void paixu5(seqli
35、st *l)int n=l-last;int i,j,swap;for(i=0;in;i+)swap=0;for(j=0;jdataj.etime.hour*60+l-dataj.etime.min)(l-dataj+1.etime.hour*60+l-dataj+1.etime.min)strcpy(l-datamaxsize-1.number,l-dataj.number);strcpy(l-dataj.number,l-dataj+1.number);strcpy(l-dataj+1.number,l-datamaxsize-1.number);strcpy(l-datamaxsize-
36、1.bstation,l-dataj.bstation);strcpy(l-dataj.bstation,l-dataj+1.bstation);strcpy(l-dataj+1.bstation,l-datamaxsize-1.bstation);strcpy(l-datamaxsize-1.estation,l-dataj.estation);strcpy(l-dataj.estation,l-dataj+1.estation);strcpy(l-dataj+1.estation,l-datamaxsize-1.estation);l-datamaxsize-1.btime.hour=l-
37、dataj.btime.hour;l-dataj.btime.hour=l-dataj+1.btime.hour;l-dataj+1.btime.hour=l-datamaxsize-1.btime.hour;l-datamaxsize-1.btime.min=l-dataj.btime.min;l-dataj.btime.min=l-dataj+1.btime.min;l-dataj+1.btime.min=l-datamaxsize-1.btime.min;l-datamaxsize-1.etime.hour=l-dataj.etime.hour;l-dataj.etime.hour=l-
38、dataj+1.etime.hour;l-dataj+1.etime.hour=l-datamaxsize-1.etime.hour;l-datamaxsize-1.etime.min=l-dataj.etime.min;l-dataj.etime.min=l-dataj+1.etime.min;l-dataj+1.etime.min=l-datamaxsize-1.etime.min;l-datamaxsize-1.price=l-dataj.price;l-dataj.price=l-dataj+1.price;l-dataj+1.price=l-datamaxsize-1.price;l
39、-datamaxsize-1.banqi=l-dataj.banqi;l-dataj.banqi=l-dataj+1.banqi;l-dataj+1.banqi=l-datamaxsize-1.banqi;swap=1;if(swap=0)break;int location_seqlist1(seqlist *l,char x8)int i=0;while(ilast&strcmp(l-datai.number,x)!=0)i+;if(il-last)return -1;elsereturn i;int location_seqlist2(seqlist *l,char x15)int i=
40、0;while(ilast&strcmp(l-datai.bstation,x)!=0)i+;if(il-last)return -1;elsereturn i;int location_seqlist3(seqlist *l,char x15)int i=0;while(ilast&strcmp(l-datai.estation,x)!=0)i+;if(il-last)return -1;elsereturn i;int location_seqlist4(seqlist *l,int x,int y)int i=0;while(ilast&(l-datai.btime.hour!=x)|(
41、l-datai.btime.min!=y)i+;if(il-last)return -1;elsereturn i;int location_seqlist5(seqlist *l,int x,int y)int i=0;while(ilast&(l-datai.etime.hour!=x)|(l-datai.etime.min!=y)i+; if(il-last)return -1;elsereturn i;按航班号进行查找:void chazhao1(seqlist *l)char key15;int i,k=l-last;coutkey;for(i=l-last;i=0&strcmp(l
42、-datai.number,key)!=0;i-);if(i0)cout此航班不存在=0)for(i=k;i=0&strcmp(l-datai.number,key)!=0;i-);k=i;if(k=0)cout航班t机型t起点站t终点站t起飞时间t到达时间t票价t班期endl;coutdatai.numbertdatai.modeltdatai.bstationtdatai.estationtdatai.btime.hour:datai.btime.mintdatai.etime.hour:datai.etime.mintdatai.pricet;for(int q=0;qdatai.banqi.tianshu;q+)coutdatai.banqi.scheq ;coutlast;cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年健康管理与服务模式创新
- 幼儿园停办清算通知书
- 广西兴业县征地通知书
- 广饶小学学校放假通知书
- 库房路面整修通知书
- 延吉学校延迟开学通知书
- 延边出租车禁运通知书
- 开发区大学城开学通知书
- 开江工业园停电通知书
- 张北供暖缴费通知书
- JJF 2137-2024 表面铂电阻温度计校准规范
- 夜间施工专项施工方案
- 铲车堆场服务技术方案
- 介绍哈萨克族的课件
- 劳动教育-专题一崇尚劳动(劳动的意义)
- 浙江省杭州市杭州中学2023-2024学年九年级上学期期中科学试卷
- 新版入团志愿书表格(含申请书范本)
- 浅圆仓外立面整体环状吊篮施工工法
- 计算机考试题目及答案计算机考试选择题
- GB/T 10003-2008普通用途双向拉伸聚丙烯(BOPP)薄膜
- 陕西西北工业大学电子信息学院党务秘书公开招聘1人【共500题附答案解析】模拟检测试卷
评论
0/150
提交评论