为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 飞机订票系统设计报告

飞机订票系统设计报告

2019-08-26 17页 doc 47KB 62阅读

用户头像

is_650122

暂无简介

举报
飞机订票系统设计报告 算法与数据结构程序设计 题    目:   飞机订票系统                  学    院:     计算机科学与过程学院                专    业:     信息安全                  姓    名:                     学    号:               指导教师:     王瑞霞                  2011年  9   月  9  日 目录 引言…………………………………………………1 1.系统概述………………………...
飞机订票系统设计报告
算法与数据结构程序设计     目:   飞机订票系统                  学    院:     计算机科学与过程学院                专    业:     信息安全                  姓    名:                     学    号:               指导教师:     王瑞霞                  2011年  9   月  9  日 目录 引言…………………………………………………1 1.系统概述………………………………………………….1 2.课程设计的目的…………………………………………..2 3.需求分析…………………………………………………..3 4.详细设计…………………………………………………….4 5.所遇到的问题和分析解决………………………………10 6.系统特色及关键技术……………………………………10 7.结论……………………………………………………10 引言: 当今时代是飞速发展的信息时代,科技的日新月异的发展必然会给人们的生活带来一定的变化。就数据处理方面来说,单纯的手工操作不仅工作量大、出错率高、更面临着修改难,时间成本过高的问题,寻求一种更为细致安全,高效率的数据管理方式成为人们日益探讨和追求的问题。而现代计算机的出现使者些成为了现实。从上世纪七十年代问世至今,计算机已经不是单纯的数据计算机器,它已经被广泛地应用于信息系统的环境。尤其对于复杂的信息管理,计算机往往现出极高的效率和安全性。 本文论述的飞机订票系统是为公司的管理者提供的一种集录入、删除、查询修改、排序、统计等于一体的便捷的飞机订票系统。该系统主要使得顾客订票能够更方便快捷。为此,本系统能够给他们带来一些较为方便快捷的导航帮助。 本系统论述了飞机订票系统的开发目标、实现过程,并着重介绍了系统设计、所遇到问题的分析和解决、系统特色及关键技术等方面。 本文共分为6章: 1.系统概述 2.课程设计的目的 3.需求分析 4.详细设计 5.所遇到的问题和分析解决 6.系统特色及关键技术 7.结论(心得体会) 1.系统概述 数据结构是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 关于数据结构在计算机学界至今还没有标准的定义: Sartaj Sahni 在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实例的元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象定义为“一个数据对象是实例或值的集合”。 Clifford A.Shaffer 在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型 Abstract Data Type)的物理实现。” Lobert L.Kruse 在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。 而本人的理解,数据结构通俗来讲就是将数据元素依据某种逻辑联系组织起来通过特定的算法将理论运用到生活中解决一些现实问题应用。在这次课程设计中,正是基于这样一种理念,在经过需求分析将实际情况综合起来之后设计并开发出了这样一个飞机订票系统。 本系统的主要功能是通过接收顾客的输入建立航班信息、顾客信息、订票情况、退票信息等内容,在实际的生产生活中确保数据的可靠性和安全性。 2.课程设计的目的 数据结构课程设计是综合运用数据结构课程中的几种典型数据结构,以及程序设计语言(c语言),自行实现一个较为完整的应用系统的设计和开发。 通过课程设计,自己通过系统分析、系统设计、编程调试、写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。 学会将知识应用于实际的方法。提高分析和解决问题的能力,增强综合能力。 2.1 飞机订票系统: 2.1.1 熟练掌握链表存储结构及其建立过程和常用操作; 2.1.2  学会自己调试程序的方法并掌握一定的技巧。 2.2课程设计内容 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票: 可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息: 当航班信息改变可以修改航班数据文件 要求: 根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能. 3.需求分析 无论是做任何开发或者设计,我想,这都是一个必不可少的至关重要的阶段,飞机订票系统也不例外。首先,作为一个系统的管理者,需要高效细致地管理 航班的相关资料,就必须得依据航班的实际情况对顾客的各个“板块”分门别类地建立适当的文件其次,一个顾客的流动要求本管理系统必须具备处理这些数据出入的能力。而我们更希望通过这样一个系统对顾客的某些信息一目了然,以便于相关人员能及时地做一些航班上的调整。使用范围方面,管理系统顾名思义就是飞机的一般的管理阶层了。界面上为了尽量设计得人性化一些,采用了多分枝的SWITCH CASE 语句,并有询问用户继续操作或是退出的选择处理。对于输出,要求格式清晰,让人一目了然。如若出现无符合查询条件的员工信息,则系统会给出相应提示。 本次系统开发主要的开发环境是VC,但因为它可以在编辑的时候一边给予提示,避免了不少语法上的错误。而此次开发所用的编程语言-----C语言是得到广泛应用的程序设计语言之一,不同于C++面向对象的设计理念,它属于结构化程序设计语言,由于既具备高级语言的特性,又具有直接操纵计算机硬件的能力因而更适合于底层的技术开发。 本次要求编制程序,实现航班信息,顾客信息的存储结构,完成信息的录入、顾客退票、顾客订票、航班信息的修改、查询航班信息五个功能。 1.每条航线所涉及的信息有航班号,起飞时间,抵达时间,始发地,目的地,票价,折扣情况,座位总数,剩余座位数 3.1录入: 可以录入航班情况: 航班号,起飞时间,抵达时间,始发地,目的地,票价,折扣情况,座位总数,剩余座位数 3.2航班信息修改: 对要修改的航班信息重新输入 3.3航班信息的查询:(航班信息改变则航班数据改变) 可以查询某个航线的情况: 如可以通过航班号查询有关航班的信息(航班号,起飞时间,抵达时间,始发地,目的地,票价,折扣情况,座位总数,剩余座位数) 3.4订票:(订票情况可以存在一个数据文件中) 可以订票,若已无票,可以重新选择再进行 3.5退票:可退票,退票后修改相关数据文件 客户资料有姓名,证件号,订购机票数量,航班号 3.6在此程序设计中要求做到以下要求或者运用到以下知识点: 3.6.1 熟练掌握根据问题需求抽象结构进而选择合适的物理结构的方法 3.6.2 掌握设计和调试应用程序的方法级技巧 3.6.3 掌握实用程序的开发与调试技术 3.6.4 线性结构和非线性结构 3.6.5 逻辑结构和物理结构 3.6.6 各种物理存储结构实现方式下各种运算的实现 4.详细设计 本系统涉及到三个文件,所以为了保持数据的一致性,所用操作都必须在三个文件上同时进行。下面对本管理系统的各模块及其功能作详细介绍。 本系统的主要流程图如下 先说一下主函数吧,本系统作为一个关于飞机订票的管理系统,首先在界面上就要人性化一点。为了能提供多选择的操作,主函数内部选用了多分枝的switch case 语句,用户一进入到该界面系统就会自动提示请选择相应的操作,当用户选定后便可使用由系统提供的各种功能函数。而switch语句的外层是一个do-while循环,当用户按照提示输入时可以不断地操作,输入非法时则不予执行。 进入该系统,首先映入用户眼帘的是下面一个界面。从下图我们可以看到,该界面是一个人性化的界面,当用户登陆后可以自主选择需要进行的各项操作,各项操作表面上是相互独立的,但实际上数据之间又相互关联。 下面是各部分的具体功能: 在头文件中宏定义了三个变量P_S、P_P、C_S,在其后的各项输入、输出中可以直接由其代替各自所表示的内容,从而使得程序的明朗,清晰化,不必在输入冗杂的代码来引起不必要的杂乱。此外还定义了航班和顾客两个结构体,其中航班结构体包含了航班号、起降时间、飞机的始发地和目的地以及飞机票价、折扣、座位总数和剩余机票输,二各科信息结构体中泽囊括了顾客姓名、证件号、所订机票数、所订航班号和订单号。 4.1飞机订票系统的初始选择主界面 4.2录入航班信息 选择1号功能,从主界面进入录入航班信息功能界面,输入航班的相关信息。 在录入函数中依次输入航班的相关信息,包括航班号、其得时间、抵达时间、飞机始发地、目的地、票价、折扣情况、座位总数以及剩余机票数。在输入一个航班结束后再判断是否继续录入航班信息,选择继续是再次输入相关信息,否则直接回到主界面进行其他的操作。 4.3修改航班信息 在主界面中选择修改航班信息选项后进入修改航班信息界面,进行各项的航班信息的修改和重新录入。 在修改函数中,定义了number 变量来输入要修改的航班号,定义plane_inf的指针p和指向它的头结点的指针。利用while来判断该航班是否为空或者存在,若存在则进入while内进一步查询,查到后则进行修改航班信息,完成后输出提示:您已成功修改ⅹⅹ号航班,否则输出提示信息:对不起,该航班不存在。而后释放相关链表,单击任意键退出该修改界面回到主界面。 4.4查询航班信息 在查询函数中,定义变量choice作switch 的选择输入,定义变量number代表航班号,定义飞机起降时间的变量,定义相关指针指向飞机结构体,便于输出的相关运用。用if判断该航班是否为空,若空,则单击任意键退出,否则进入do{}while循环体内进入查询选择界面:0:为返回主菜单界面;1:为用航班号查询航班信息2:为利用始发地来查询航班信息。在选择1后输入航班号,按下回车键后即可输出要查询的航班信息,选择2后则要求输入始发地,按下回车键后也同样可以输出该航班的相关信息。最后返回到主界面进行其他的操作。 4.5顾客订票功能 在订票函数中定义变量length,定义指向航班结构体和顾客结构体的两个指针,定义fp为顾客的信息文件指针,接着读取航班信息文件并初始化链表,如果航班结构体为空,清屏后返回,再读取顾客信息文件并初始化链表,将顾客结构体的统计的赋值给指针变量p1,再打开顾客信息文件,否则如果顾客想结构体不空,则找出最后一个结点,清屏后输入订票者的信息,包括姓名、证件号、订购机票数量和航班号,然后调用xg_hb函数,实现对航班信息链表的修改,在此期间,完成订票功能是回有提示信息:提示:您已成功订票 ,订单号是:ⅹⅹ;否则,当条件不满足时,会有提示:继续订票请输入Y,否则返回上一级菜单,然后依照提示进行相关输入,最后将修改后的航班信息链表写入到航班信息文件中,并释放相关函数。 4.6顾客退票功能 由主界面进入退票界面,在退票函数中,定义个相关变量及指针,如果顾客结构体为空,单击任意键退出,清屏后返回。在退票界面输入客户姓名,证件号和订单号,判断如果顾客结构体中内容不空时,查找到顾客的姓名和已订机票客户相同姓名并且证件号相同同时订单号也相同的顾客则给予退票,继续判断.如果该结构体内容为空,则输出: 该顾客信息不存在,单击任意键退出,否则将链表信息重新写到文件中,使相关航班信息票数恢复,此后删除退票顾客信息结点,最后输出:退票成功,单击任意键退出,然后回到主界面。 4.7退出系统 在主界面选择0号功能,进入退出系统界面,按任意键退出系统。 以上为界面显示的一些功能选项及信息,此外还有一些函数后功能并没有直接额体现在其中,但又是不能缺失的: 4.8其他功能 4.8.1查找修改结点的函数 该函数用来查找待修改结点,并判断是否符合条件。当航班结构体不空时,如果当找到要查找结点是结束查找,否则继续查找。如果该结构体为空时,在订票界面中显示信息: 对不起,该航班不存在,不能订票,后返回主界面;如果当输入顾客要订票数大于航班剩余机票数时,在订票界面显示信息:对不起,该航班只剩ⅹⅹ张票,然后返回主界面。 4.8.2实现航班号查询 在该函数中,当执行还未到尾结点就找到相应航班,则显示:“符合要求的航班信息如下所示:”,如果一直都没有找到,则显示输出:“对不起该航班信息不存在”,否则显示输出相关的航班信息. 4.8.3实现始发地及目的地查询 在查找过程中,当指针还没有指向尾结点时就找到了始发地和目的地相同的结点时,就表示找到了要求的航班,从而输出该航班的信息,否则,则继续查找,一直到结尾,如果还没找到,则输出:“对不起,没有符合您要求的航班”,此外,当找到的航班有多个,还可输出:“共有ⅹⅹ个航班符合您的要求”。 4.8.4实现将航班信息文件以链表实现 该函数定义航班结构体指针变量: p_inf *p1, *p2, *p3, *head,定义文件指针fp,打开文件信息,如果文件为空,则打印输出:航班信息不存在,单击任意键退出,返回为空;初始化航班信息链表时,外层循环由do{}while引导,内层则辅以if ——else语句,在do{}while中首先赋值变量p1以动态空间,如果链表为空,变量p2永远指向最后一个结点,否则变量p3指向最后一个结点的前一个结点,而变量p2永远指向最后一个结点,循环外读取文件,释放p2,如果头结点为p1,则赋空值给头结点,否则最后一个结点为空,关闭文件,返回头结点。 4.8.5实现将顾客信息文件以链表实现 打开顾客文件信息时,如果文件为空,输出:顾客信息不存在,单击任意键退出,返回空值;然后初始化顾客信息链表,赋予变量p1动态空间,如果链表为空,变量p2永远指向最后一个结点,否则变量p3指向最后一个结点的前一个结点,而变量p2永远指向最后一个结点,循环外读取文件,释放p2,如果头结点为p1,则赋空值给头结点,否则最后一个结点为空,关闭文件,返回头结点。 4.8.6将航班信息链表写入到航班信息文件中 首先打开航班信息文件,当航班信息文件为空时,输出:不能打开航班信息文件,然后退出,否则,当链表不空时,将航班信息链表写入到航班信息文件中;最后关闭航班信息文件。 4.8.7将顾客信息链表写入到顾客信息文件中 首先打开顾客信息文件,当顾客信息文件为空时,输出:不能打开航班信息文件,然后退出,否则,当链表不空时,将顾客信息链表写入到顾客信息文件中;最后关闭航班信息文件。 4.8.8释放航班信息表 当航班信息链表不为空时,将p付给p1,p再指向下一结点,然后在释放p1。 4.8.9释放顾客信息表 当顾客信息链表不为空时,将p付给p1,p再指向下一结点,然后在释放p1。 以上是个函数的相对独立定义使用,同时在他们的运用当中,有存在有不同程度,不同频率的函数调用,使得程序能够更加的完整,使用,并简洁。函数间的调用能够缩短一个函数之内的代码量,便于函数的阅读与调试,更易让人理解。 综上所述,即为整个函数的运行过程和一些函数功能与运用的分析,以下将对本次编程过程所遇问题加以分析了。 5.所遇到的问题和分析解决 在开发本系统时确实遇到了不少问题,以下就是关于这些问题的描述及其分析解决的过程。 在本次开发当中,选择运用了链表,因为这次是作为数据结构的课程设计,而数据结构中最常应用的就是链表的使用了,因而选择链表,就可以更能够加深对数据结构的理解和应用,虽然有的地方现在还不是很理解,不过书上的例子还是可以帮忙应用来实现相关功能,由此。我想尽管这门课程已经结束了,但我不能就此结束这门课程的学习。 5.1文件的建立 当建立文件时,多次建立都无法使用,在文件的读取,写入的时候,多次检查代码都无法正常运行,后来还是找了课本,重新看了上面的内容,理解了一些格式上的细节,和语言的描述才最终完成,不过感觉还是不大完善,看来,无论什么内容,隔得久了,不常用都是会失去它们,无论是多么简单的问题或者事情,久了就淡了,也就忘了,还是要不时的去回顾下啊,否则什么时候又在同一个地方出错,到时还真难处理啊,这可是得不偿失的,因而回顾以前的也总会有收获的,要看长远点。 5.2代码的重复、繁琐 代码因为程序的编写调试过程是由小到大逐个调试的,在调试完所有函数将其统一起来后,发现其实各个函数的内部都有一些代码是相同的,那就是函数的开头计算文件长度的那一段。发现很多地方代码有相似的,想直接复制过去,把变量等做相应改变,本来想把它们统一建立在一个结构体内,到时之改变类型就可以了,不过事实上发现,理想是美好的,现实是残酷的,我的水平还是无法调试处结果啊所以只能用老方式了。 6.系统特色及关键技术 本系统的特色在于界面非常友好,尤其在主函数方面,不仅主菜单运用了do-while语句与switch case 的结合使得用户可以自由选择需要执行的操作,在修改和查询等非级联操作功能里还内嵌了一个这样的结构,即switch语句的嵌套使用,do-while语句使得用户每执行完一次操作之后继续弹出选择菜单可以一直操作,直到用户按0退出结束,而switch-case的巧妙嵌套让用户能两级菜单之间自由转换,避免了某些不必要的操作。 7.结论 本系统至今为止已经完成预想的功能----建立文件、显示文件的内容、修改航班信息、删除航班信息、查询航班信息、顾客的订票信息和顾客退票的信息,当然,由于本人水平上的局限,比如在录入航班信息的时候需要一个一个的录入,并没有直接建立在文件上,也没有通过文件来读取,而且,本次系统没有实现顾客信息的查询功能,不过界面的制作勉强达到预期的单独做出一个独立的界面。这样的问题也正暴露出我平时学习态度方面的不足,以前总以为把书本上的知识基本了解就够了,但真正面对题目时才发现无从下手。书到用时方恨少,这话说得一点都不假。 这是其中的一个方面。另一个方面,细节决定成败。在编写该程序的过程中,因为细节问题不注意,确实走了不少弯路。比如在尝试将删除函数内部文件计数的部分单独分离出来作为一个函数,调试时发现老有警告称文件指针fp未初始化。在反复查看后终于发现,漏掉了一条if语句。在补全之后,终于顺利运行。 除了以上这些,这次课程设计也加深了我对数据结构这门课程的理解。 数据结构是基础的一门课,对于有过编程经验的人,结合自己的编程体会去领悟它的思想;对于初学者,捡一种自己最熟悉的语言去分析它总之千万不要满足于只停留在语言的细节上,而是应该高屋建瓴的去领会数据结构的思想。随着编程经历的丰富和对它的体会越深入,最初接触是对一些思想可能只是生硬的记忆,随着学习的深入逐渐领悟了很多。还记得当初初学c语言,做的第一个实验就是敲Hello world ,当时就是一知半解的状态,对着明明只有几行的代码愣是调了半个小时才编译运行得出来。然后是看书上的程序,了解基本语法后模仿其中的写法,通俗点讲也就是邯郸学步的状态。虽然经历了实验考试,但其中的算法只知其然而不知其所以然。随着学习的渐渐深入,接触数据结构 以后开始明白要真正理解一个程序就必须了解它的算法。算法是一个程序的灵魂,同样一个问题,好的算法不仅可以使程序节省许多空间开销,而且在时间代价上也会减少很多,真正起到事半功倍的作用。接着就是将所学知识运用到现实生活中,解决实际问题。而解决问题的第一步就是建模,把实际问题抽象成具体的模型,这是很关键的一步。然后才是设计算法,编写程序。程序的编写过程中书写的规范性是很重要但又往往容易被人们忽视的一点。众所周知,很多自认为是编程高手、老手的程序员能写出很好的算法,但是当面对企业的正规考核时往往“不幸落马”,究其原因,就是在代码书写时没有保持良好的习惯。殊不知,规范性的编程才是高质量的编程。高质量的编程编写出来的程序不仅简洁易懂,可读性强,而且可移植性高。同时,编写程序时还要注意在代码旁边适时地添加注释文字,帮助读者理解。文字不必太多,只要解释关键代码就行。不过,要养成习惯不是一朝一夕的事,必须在接触编程之初就严格遵守。不然就会像很多编程方面的“高手”,等到四处碰壁时才幡然悔悟,“亡羊补牢”,必定要花不少时间,而且难度上也要花不少功夫。所以,何不趁现在好好培养呢? 还要提的一点事,在这次飞机订票系统的开发过程中,我深感“程序要由小到大一步一步地调”这句话的正确性。不同与以往的实验,这次程序涉及到的函数较多,而且代码也不少,一开始时我还按照以前的习惯将程序都敲上去完整了才一步一步设置断点开始调,不仅费时费力,而且面对着屏幕上的一大堆错误还无从下手。后来还是听了前辈们的建议,把其它的函数注释掉,从创建函数开始一个一个函数地调试,确保现有的函数没问题后再把另一个函数添加进来。这样的方法针对性强,缩小了搜索的范围,能很快地找出问题所在。不能不说,这的确是一个很好的方法。 回顾这一次的课程设计,除了做出了这个管理系统,我自己的收获也挺大。系统开发过程中遇到的一些问题也让我认识到自己的不足,同时也学到了许多有用的东西。真正的好程序不是靠设置断点单步调试调出来的,而是靠缜密的思考及详细的考虑。不过,要学习的地方还有很多,遇到不懂的问题要虚心请教,只有在学习的过程中不断发现自己的不足,积累经验,才能使自己有进一步的提高。
/
本文档为【飞机订票系统设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索