C++面向对象程序设计项目教程(项目九)

上传人:ning****hua 文档编号:243017348 上传时间:2024-09-13 格式:PPT 页数:20 大小:1MB
返回 下载 相关 举报
C++面向对象程序设计项目教程(项目九)_第1页
第1页 / 共20页
C++面向对象程序设计项目教程(项目九)_第2页
第2页 / 共20页
C++面向对象程序设计项目教程(项目九)_第3页
第3页 / 共20页
点击查看更多>>
资源描述
,C+,面向对象程序设计项目教程,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,项目,九,根据乘客和管理人员的需求,飞机订票系统可以提供下列服务:,(,1,)浏览、查询航班信息;,(,2,)购票、退票;,(,3,)管理航班信息(管理人员权限)。,项目,说明,预备知识,接到项目要求后,首先需要分析项目中提出的要求然后定义项目的功能。根据功能的划分再进行类与核心控制的设计,最后进行编码和测试。,具体可分为以下步骤:,(,1,)分析系统中的各个实体之间的关系及其属性和行为;,(,2,)根据问题描述,设计系统的类层次;,(,3,)完成类层次中各个类的描述(包括属性和方法);,(,4,)完成类中各个成员函数的定义;,(,5,)编码完成系统的应用模块;,(,6,)功能调试;,(,7,)完成系统总结报告以及系统使用说明书。,一、问题分析和功能定义,二、类设计及实现,三、核心控制设计,四、编码与测试,综合,实践,设计,飞机订票系统,一、问题分析和功能定义,这个阶段的工作也叫作“需求分析”,需要程序员和用户共同分析问题,从而确定整个软件系统要完成的功能。飞机订票系统的功能结构如图所示。,(一)更新航班信息模块,该模块用于更新对航班信息,仅向管理人员开放使用,需进行身份验证。其下分为五个子功能模块信息库的重建、信息的插入、修改、删除和清空数据。,(二)订票和退票模块,订票时,首先按航班编号或站点查询该航班的基本信息,当剩余座位数大于,0,且当前系统时间小于起飞时间时才能售票,售票后系统自动更新剩余座位数。,退票时,需输入退票的班次,只有该航班未发出时才能退票,退票后将自动更新剩余座位数。,(三)查询航班信息模块,可以实现按航班号和按站点的两种方式进行查询并将查询到的信息输出。,(四)浏览航班信息,该模块用于将文件中的航班信息按照要求的格式全部输出。如果当前系统时间超过了某航班的起飞时间,则显示“此次航班已发出”的提示信息。,程序中各功能模块所需的数据都直接取自文件,而不是依赖其他模块,这样一来,保证了各模块的独立和数据的安全。,二、类设计及实现,本阶段的工作是要给出所有对象的描述,并确定对象之间是如何交互的。本项目中定义了两个类:,Flight,类和,Traffic_system,类。,Flight,类封装了航班的数据信息和方法,,Traffic_system,类用于管理,Flight,类对象。,(一),Flight,类,Flight,类中的数据信息主要包括:航班的航班号、起飞时间、站点等信息;方法主要包括:本次航班信息的输入、输出,对本航班的订票、退票管理,对时间、站名的核对,另外,重载了提取和插入运算符以方便对文件的输出和读取。,class Flight,public:,char m_fnum10;/,航班号,int m_ftime2;/,起飞时间,char m_fstar18;/,起始站,char m_fdestination18;/,终点站,int m_fprice;/,票价,int m_fseat;/,票数,Flight(),m_fnum0 = +;,Flight,类的具体信息如下所示:,bool SetInfo();/,设置航班信息,friend istream,/,提取运算符重载,friend ostream,/,插入运算符重载,void Display();/,输出航班信息,bool Book();/,订票,void Refund();/,退票,bool If_takeoff();/,判断是否起飞,bool If_deleted();/,判断是否删除,bool If_match(char (*p)18, char ta);/,判断航班号或站点名是否相同,;,(二),Traffic_system,类,航班有多组,为了方便管理,Flight,类的各个对象,这里定义了一个,Traffic_system,类。将,Flight,类的对象作为,Traffic_system,类的数据成员,另外定义了一个数据成员用于记录航班数。,该类中还定义了两个私有的成员函数完成对文件的读写。其他共有的成员函数如,Manage(),、,void Scan(),、,Search(),和,BookRefund(),用来完成系统的管理信息、浏览、查询和订票、退票功能。,Traffic_system,类的具体信息如下所示:,class Traffic_system,public:,Traffic_system(), m_sum = 0; ,void Manage();/,管理航班信息,void Scan();/,浏览,int Search(int invoke = 0);/,查询功能,void BookRefund();/,订票和退票,private:,void Read_file();/,读取文件,void Save_file();/,保存文件,int m_sum;/,记录航班数,vector v_array;/,航班类数组,;,三、核心控制设计,核心控制设计阶段主要完成程序的框架设计,这是实现软件系统体系的核心。在本项目中,程序的核心部分是数据存储结构的选择以及类中函数的设计。,(一)数据存储结构的选择,乘客的基本信息包括航班号、起始站、终点站、起飞时间、票价、余票量等,乘客的数量较大且不固定,因此我们使用动态增长的,Flight,类数组来保存这些信息,在必要的时候可将数组的内容保存到文件中。,在本程序中我们使用的是,vector,数组,,vector,是,C+,标准程序库中的一个类,可视为会自动扩展容量的数组。使用,vector,时需在头文件中包含下面的代码:,#include ,声明一个,vector,变量的方法如下:,vector v;,其中,,T,是,vector,要存储的对象集合的类型,该,vector,的变量名称是,v,。,访问,vector,中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,在本程序中我们用到了它的函数,push_back(),,其作用是在,vector,最后添加一个元素。,(二)函数的设计与实现,本项目中函数的实现比较简单,这里不再赘述,读者可参照源码。这里只将程序中带参数的函数进行简单介绍。,1,istream& operator(istream& in, Flight& cp),提取运算符重载函数使用了形参,in,和,cp,:形参,in,为“,istream&,”引用类型,与该函数的返回值相同,故可以将该函数的返回值传给该形参,实现“,”操作符的连续使用;形参,cp,为“,Flight&,”引用类型,实现了对,Flight,类对象的输入重载。,2,ostream& operator(ostream& out, Flight& cp),插入运算符重载函数使用了形参,out,和,cp,,其作用与提取运算符重载函数类似。,3,bool Flight:If_match(char (*p)18, char ta),该函数使用了形参,p,和,ta,:形参,p,为指向字符数组的指针,它用来指向一个大小为,18,的字符数组;形参,ta,为字符型,其作用是使该函数区分航班号和站点名两种比较。,4,int Traffic_system:Search(int invoke = 0),该函数使用了形参,invoke,,该形参为,int,型并设置默认参数为,0,,其作用为区分调用者,以便输出相应的提示信息。,四、编码与测试,编码与测试的工作将在任务实施中进行。,任务实施设计飞机订票系统,步骤,1,在,Visual C+,中创建一个工作区,并在此工作区中创建一个,Console Application,即控制台应用程序类型的工程。在此工程中我们添加一个名为,flight,的头文件以及同名的一个源文件,其代码,略。,步骤,2,在步骤,1,创建的工程中添加一个名为,Traffic_system,的头文件以及同名的一个源文件,其代码,略。,步骤,3,在,Visual C+,中新建一个,C+,源文件,命名为,main.cpp,,用于编写程序的入口,函数,其代码,略。,步骤,4,经编译、连接后,程序即可运行,由于篇幅限制,这里仅给出程序功能测试中的部分运行结果如图所示。,重新创建数据库信息,浏览航班信息,订票,退票并浏览航班信息,Thank you,!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!