飞机订票系统模拟.docx
- 文档编号:24583781
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:12
- 大小:153.09KB
飞机订票系统模拟.docx
《飞机订票系统模拟.docx》由会员分享,可在线阅读,更多相关《飞机订票系统模拟.docx(12页珍藏版)》请在冰豆网上搜索。
飞机订票系统模拟
目录
摘要1
前言2
正文3
1.问题描述3
2.逻辑设计3
3.详细设计5
4.程序编码5
5.调试与测试7
6.结果分析9
7.软件安装和使用说明10
总结11
参考文献12
致谢13
摘要
这项设计是以“数据结构”和“C/C++程序设计”为基础的实现飞机订票系统模拟的一项设计。
通过这项设计不仅可以实现民航售票系统地简单的服务功能,还可以帮助我更好地理解线性表、队列等的存储结构及有关的基本算法,加深对所学知识的理解和掌握。
这项设计主要用到的知识有线性表、文件的建立、输入、读取、保存,队列的存储结构及其相关算法的实现,考查了排序及结构体、指针等的综合用运,在老师的帮助下,我顺利的完成了这项设计。
关键字:
订票系统;线性表;队列;文件;数据结构。
前言
课程设计是对学生实践能力的考查,通过课程设计可以增强学生的动手能力。
培养学生严谨、细心、好学的精神,检查学生对知识的掌握情况,是教学中必不可少的一项重要环节。
该设计是对飞机订票系统的模拟设计,它可以实现民航售票处的计算机系统为客户提供的各项服务项目的模拟。
通过该题目的设计过程,加深了我对线性表及队列的逻辑结构、存储结构的理解,使我基本掌握了有关线性表及队列的基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,有效地把学到的知识用于解决实际问题,培养了我的动手操作能力。
此设计可以实现以下功能:
(1)增加(录入航班情况);浏览(浏览航班信息);查找航线(根据旅客提出的终点站名输出:
航班号、飞机号、日期);排序(按航班号排序);承办订票业务(根据客户提出的要求查询该航班票额情况,为客户办理订票);承办退票业务;修改航班信息(当航班信息改变可以修改航班数据)。
这是我的第一次课程设计,好多东西都不熟,在设计中出现问题是难免的,希望老师指点,感谢老师的帮助和指导,让我顺利的完成了这次课程设计作业!
正文
1.问题描述
使用链式存储结构存储航班信息及客户信息。
主要功能有:
录入(录入航班情况);查询航线(根据旅客提出的终点站名输出:
航班号、飞机号、日期、余票额);承办订票业务(根据客户提出的要求查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求);承办退票业务(根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询间其它排队预约的客户);修改航班信息(当航班信息改变可以修改航班数据);
2.逻辑设计
编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、排序、查询以及订票、退票的功能。
根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。
根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。
这就是看到题目后的最初的思路。
在这附上总体模块设计图:
因为飞机订票系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来存放航班的各项信息,根据题目要求定义如下结构体类型:
头文件包含、全局变量定义和结构体定义源代码:
#include
#include
#include
#defineN1000//定义最多的航班数
#definePRINT"%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//宏定义输出格式
structair//定义结构体数组
{
intnum;//定义航班号
charstart[20];//航班起始站
charover[20];//航班终点站
chartime[10];//飞行时间
intcount;//机票数量
}s[N];
inti,m=0;//定义全局变量,记录下航班信息的数量
charii[10];//用来选择是否继续的变量
3.详细设计
在本次的课程设计中我负责编制的是初始化、建立数据文件、数据文件读取、数据文件保存、增加航班信息、订票、退票业务函数的编写。
以下是我的负责部分的详细设计内容:
4.程序编码
定义系统初始化函
模块功能:
设立一个初始化函数来得到航班信息。
具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直接使用。
运用了access函数判断文件是否存在。
该函数源代码为:
voidchushihua()//初始化函数
{
if(access("hangban.dat",0))
build();
else
read();
}
定义建立新数据文件的函数
系统初始化后,没有寻找到数据文件,则进行新建数据文件,此函数的作用就是进行新建文件数据的录入。
运用到了文件指针的定义FILE*fp,文件的打开fopen和关闭fclose、成块读写函数中的fwrite;运用for循环进行各组数据的输入,用m++记录下输入的航班数量,并运用if语句判断是否输入下一条航班信息,若不继续则返回主界面。
该函数的源代码为:
定义读取文件内航班信息的函数
系统初始化之后,若原始数据文件存在,则进行文件内航班信息的读取,以供接下来程序中的各个函数来使用。
在该函数中同样运用到了文件指针FILE*fp、文件的打开fopen和关闭fclose、成块读写函数中的fread、文件结束检测函数feof同时配合while语句控制文件的读取;m++记录下读取到的航班数量等。
定义保存函数
因为在飞机订票系统中涉及到飞机的订票和退票业务,还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。
为了简便程序,我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存,将此次对文件修改的所有新信息都一次保存下来。
这样就实现了整个系统运行时进行一次读取,推出时一次保存的设计,大大简便了文件的调用和读取。
保存函数运用到的知识点与读取函数大致相同。
此函数的源代码为:
有关文件读取、写入和保存的函数定义完了就开始设计与题目要求直接相关的函数了。
定义订票业务函数
在这个函数中首先调用了search函数查找需要订票的航班。
运用if语句实现订票时的多种情况:
订票数输入不正确、飞机票数不足等情况。
订票成功时运用s[i].count=s[i].count-n;将已被订的机票数减去,以显示新的即时航班信息
定义退票业务函数:
与订票函数相类似,只做稍稍修改就行退票成功是用s[i].count=s[i].count+n;将航班的剩余票数加上去以显示即时航班信息。
定义主函数
主函数主要就是提供系统的主菜单界面供用户选择。
运行主函数时首先调用chushihua函数判定数据文件是否存在、是否要进行初始航班信息输入;若已存在则进入主界面菜单供用户选择,运用swich语句对用户的不同选择来调用各功能的函数。
并用do…while语句循环实现能够让用户进行多次的选择。
5.调试与测试
调试:
调试过程中曾经遇到过一些问题,但是也不多,遇到过:
订票或退票的时候不能将剩余的票数加上和减去。
后来经过详细的检查与对照课本知识点找出了相应的错误点,经过修改加入票数加减语句,再经过与保存函数的配合后实现了题目要求的功能。
调试成功。
测试:
程序最终运行情况如所贴图表。
第一次运行程序(输入初始数据)
界面提示输入原始数据:
请输入航班号→请输入起始站→请输入终点站→请输入飞行时间→请输入机票数。
我按照提示一次输入了4个航班信息后按提示输入“n”则不再继续输入,系统显示出了主菜单界面。
接着按0退出程序,显示“谢谢使用,再见。
”
图表1—主菜单界面
第二次运行程序(进行航班信息的浏览)
运行程序就不再显示输入航班信息了,而是直接显示出了主菜单界面(如图表1)。
在提示中输入“2”→显示航班信息。
输出如下航班信息(如图表2),确实显示出输入的4个航班信息。
图表2—显示航班信息
查询航班信息
在主菜单界面输入3→请输入航班号→输入“1010”→显示出所查找的信(如图表3)
图表3—查询航班信息
航班排序
在主菜单界面输入4→按照提示输入“2”(按航班号从大到小排序)→显示出排序后的航班信息(如图表4)
图表4—航班排序
订票业务
在主菜单输入5→提示输入航班号→输入1010→显示出该航班信息并提示输入订票数:
输入3→“订票成功”(如图表5)
图表5—订票业务1
票数不足情况(如图表6):
图表6—订票业务2
6.结果分析
系统只是按照题目的要求做的,虽然是很好地完成了题目要求的所有模块,但是在整个编程过程中我们也曾尝试增加我们感兴趣的功能,但是失败了。
经过此次的课程设计,可以很明确的了解到自己哪些知识点掌握的比较好,哪些知识点运用的还不够熟练。
通过此次课程设计也学会综合运用理论知识来分析和解决实际问题的能力、养成严谨的科学态度和良好的程序设计习惯,实现由知识向智能的初步转化;学会遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,并与同组成员共同完成设计、编写、调试和测试应用程序及编写文档的任务。
7.软件安装和使用说明
安装:
先复制“飞机订票系统”此文件到电脑上。
打开此文件中Debug文件夹中的应用程序,此文件就可以运行了。
使用说明:
(1):
此飞机模拟订票系统是作为数据结构与微机原理课程设计作品,仅供参考。
(2):
此作品所用开发工具为MicrosoftVisualStudio,欲打开工程项目需先安装该软件。
(3):
此程序实现增加(录入航班情况);浏览(浏览航班信息);查找航线(根据旅客提出的终点站名输出:
航班号、飞机号、日期);排序(按航班号排序);承办订票业务(根据客户提出的要求查询该航班票额情况,为客户办理订票);承办退票业务;修改航班信息(当航班信息改变可以修改航班数据)。
(4):
操作过程中按照界面指示有序地实现所需操作。
(5):
只有严格按照上面所要求操作,该程序才能正确运行。
总结
这次课程设计使我有了如下好多的收获:
巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
培养了我选用参考书,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点:
1、认真上好专业实验课,多在实践中锻炼自己。
写程序的过程中要考虑周到,严密。
在做设计的时候要有信心,有耐心,切勿浮躁。
认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
本次课程设计终于结束了。
通过这次课程设计,我加深了对顺序表和链表的概念的理解,并能够熟练地将它们运用到实际操作中。
通过此次课程设计了解了查找、排序的时间复杂度、空间复杂度,能够在实际情况中根据要求选择出最适合的查找方法和排序方法。
在做此次课程设计的过程中,有几次程序不能运行是由于少了分号、大括号等错误导致的,使我明白了在编程的时候一定要细心以减少这种低级错误发生。
除此之外,我也遇到了不少困难,但在老师的指导与帮助下解决了问题。
通过这次课程设计我认识到了自己在c语言与数据结构方面的不足,了解了自己还需要学习的方面,我会更加努力的学习
参考文献
[1]王连相,《C/C++程序设计》,中国科学技术出版社。
[2]张荣梅、梁晓林,《VisualC++实用教程(第一版)》,冶金工业出版社,2004。
[3]杨明军、董亚卓、汪黎,《C++实用教程(第一版)》,人民邮电出版社,2002。
[4]严蔚敏,吴伟民,《数据结构(C语言版)》,清华大学出版社。
致谢
在学习中,老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度以及侮人不倦的师者风范是我终生学习的楷模,老师们的高深精湛的造诣与严谨求实的治学精神,将永远激励着我。
这两年中还得到众多老师的关心支持和帮助。
在此,谨向老师们致以衷心的感谢和崇高的敬意!
另外,感谢校方给予我这样一次机会,能够在老师的帮助下顺利完成一个课程设计,并在这个过程当中,给予我们各种帮助,使我们在这学期快要结课的时候,能够将学到的只是应用到实践中,增强了我们实践操作和动手应用能力,提高了独立思考的能力。
感谢所有任课老师和所有同学在这三年来给自己的指导和帮助,是他们教会了我专业知识,教会了我如何学习,教会了我如何做人。
正是由于他们,我才能在各方面取得显著的进步,在此向他们表示我由衷的谢意。
感谢寝室里的舍友,是你们三年来对我的关照使我的拥有一个良好的学习环境是我能专心学习生活。
最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人课程设计答辩的各位老师表示感谢!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞机 订票 系统 模拟