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

上传人:牧羊曲112 文档编号:5085517 上传时间:2023-06-02 格式:PPT 页数:20 大小:439.50KB
返回 下载 相关 举报
C++面向对象程序设计项目教程(项目九).ppt_第1页
第1页 / 共20页
C++面向对象程序设计项目教程(项目九).ppt_第2页
第2页 / 共20页
C++面向对象程序设计项目教程(项目九).ppt_第3页
第3页 / 共20页
C++面向对象程序设计项目教程(项目九).ppt_第4页
第4页 / 共20页
C++面向对象程序设计项目教程(项目九).ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C++面向对象程序设计项目教程(项目九).ppt》由会员分享,可在线阅读,更多相关《C++面向对象程序设计项目教程(项目九).ppt(20页珍藏版)》请在三一办公上搜索。

1、项目九,根据乘客和管理人员的需求,飞机订票系统可以提供下列服务:,(1)浏览、查询航班信息;,(2)购票、退票;,(3)管理航班信息(管理人员权限)。,项目说明,预备知识,接到项目要求后,首先需要分析项目中提出的要求然后定义项目的功能。根据功能的划分再进行类与核心控制的设计,最后进行编码和测试。,具体可分为以下步骤:,(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义;(5)编码完成系统的应用模块;(6)功能调试;(7)完成系统总结报告以及系统使用说明书。,一、问题分析和功

2、能定义,二、类设计及实现,三、核心控制设计,四、编码与测试,综合实践 设计飞机订票系统,一、问题分析和功能定义,这个阶段的工作也叫作“需求分析”,需要程序员和用户共同分析问题,从而确定整个软件系统要完成的功能。飞机订票系统的功能结构如图所示。,(一)更新航班信息模块,该模块用于更新对航班信息,仅向管理人员开放使用,需进行身份验证。其下分为五个子功能模块信息库的重建、信息的插入、修改、删除和清空数据。,(二)订票和退票模块,订票时,首先按航班编号或站点查询该航班的基本信息,当剩余座位数大于0且当前系统时间小于起飞时间时才能售票,售票后系统自动更新剩余座位数。,退票时,需输入退票的班次,只有该航班

3、未发出时才能退票,退票后将自动更新剩余座位数。,(三)查询航班信息模块,可以实现按航班号和按站点的两种方式进行查询并将查询到的信息输出。,(四)浏览航班信息,该模块用于将文件中的航班信息按照要求的格式全部输出。如果当前系统时间超过了某航班的起飞时间,则显示“此次航班已发出”的提示信息。,程序中各功能模块所需的数据都直接取自文件,而不是依赖其他模块,这样一来,保证了各模块的独立和数据的安全。,二、类设计及实现,本阶段的工作是要给出所有对象的描述,并确定对象之间是如何交互的。本项目中定义了两个类:Flight类和Traffic_system类。Flight类封装了航班的数据信息和方法,Traffi

4、c_system类用于管理Flight类对象。,(一)Flight类,Flight类中的数据信息主要包括:航班的航班号、起飞时间、站点等信息;方法主要包括:本次航班信息的输入、输出,对本航班的订票、退票管理,对时间、站名的核对,另外,重载了提取和插入运算符以方便对文件的输出和读取。,class Flightpublic:char m_fnum10;/航班号int m_ftime2;/起飞时间char m_fstar18;/起始站char m_fdestination18;/终点站int m_fprice;/票价int m_fseat;/票数Flight()m_fnum0=+;,Flight类的

5、具体信息如下所示:,bool SetInfo();/设置航班信息friend istream,(二)Traffic_system类,航班有多组,为了方便管理Flight类的各个对象,这里定义了一个Traffic_system类。将Flight类的对象作为Traffic_system类的数据成员,另外定义了一个数据成员用于记录航班数。,该类中还定义了两个私有的成员函数完成对文件的读写。其他共有的成员函数如Manage()、void Scan()、Search()和BookRefund()用来完成系统的管理信息、浏览、查询和订票、退票功能。,Traffic_system类的具体信息如下所示:,cl

6、ass Traffic_systempublic: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;/航班类数组;,三、核心控制设计,核心控制设计阶段主要完成程序的框架设计,这是实现软件系统体系的核心。在本项目中,程序的核心部分是数据存储结构的

7、选择以及类中函数的设计。,(一)数据存储结构的选择,乘客的基本信息包括航班号、起始站、终点站、起飞时间、票价、余票量等,乘客的数量较大且不固定,因此我们使用动态增长的Flight类数组来保存这些信息,在必要的时候可将数组的内容保存到文件中。,在本程序中我们使用的是vector数组,vector是C+标准程序库中的一个类,可视为会自动扩展容量的数组。使用vector时需在头文件中包含下面的代码:,#include,声明一个vector变量的方法如下:,vector v;,其中,T是vector要存储的对象集合的类型,该vector的变量名称是v。,访问vector中的任意元素或从末尾添加元素都可

8、以在常量级时间复杂度内完成,在本程序中我们用到了它的函数push_back(),其作用是在vector最后添加一个元素。,(二)函数的设计与实现,本项目中函数的实现比较简单,这里不再赘述,读者可参照源码。这里只将程序中带参数的函数进行简单介绍。,1istream&operator(istream&in,Flight&cp),提取运算符重载函数使用了形参in和cp:形参in为“istream&”引用类型,与该函数的返回值相同,故可以将该函数的返回值传给该形参,实现“”操作符的连续使用;形参cp为“Flight&”引用类型,实现了对Flight类对象的输入重载。,2ostream&operator

9、(ostream&out,Flight&cp),插入运算符重载函数使用了形参out和cp,其作用与提取运算符重载函数类似。,3bool Flight:If_match(char(*p)18,char ta),该函数使用了形参p和ta:形参p为指向字符数组的指针,它用来指向一个大小为18的字符数组;形参ta为字符型,其作用是使该函数区分航班号和站点名两种比较。,4int Traffic_system:Search(int invoke=0),该函数使用了形参invoke,该形参为int型并设置默认参数为0,其作用为区分调用者,以便输出相应的提示信息。,四、编码与测试,编码与测试的工作将在任务实施

10、中进行。,任务实施设计飞机订票系统,步骤1 在Visual C+中创建一个工作区,并在此工作区中创建一个Console Application即控制台应用程序类型的工程。在此工程中我们添加一个名为flight的头文件以及同名的一个源文件,其代码略。,步骤2 在步骤1创建的工程中添加一个名为Traffic_system的头文件以及同名的一个源文件,其代码略。,步骤3 在Visual C+中新建一个C+源文件,命名为main.cpp,用于编写程序的入口函数,其代码略。,步骤4 经编译、连接后,程序即可运行,由于篇幅限制,这里仅给出程序功能测试中的部分运行结果如图所示。,重新创建数据库信息,浏览航班信息,订票,退票并浏览航班信息,Thank you!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号