C++面向对象程序设计项目教程(项目九).ppt_第1页
C++面向对象程序设计项目教程(项目九).ppt_第2页
C++面向对象程序设计项目教程(项目九).ppt_第3页
C++面向对象程序设计项目教程(项目九).ppt_第4页
C++面向对象程序设计项目教程(项目九).ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

5、fprice; /票价 int m_fseat; /票数 Flight() m_fnum0 = +; ,Flight类的具体信息如下所示:,10,a,bool SetInfo(); /设置航班信息 friend istream,11,a,(二)Traffic_system类,航班有多组,为了方便管理Flight类的各个对象,这里定义了一个Traffic_system类。将Flight类的对象作为Traffic_system类的数据成员,另外定义了一个数据成员用于记录航班数。,该类中还定义了两个私有的成员函数完成对文件的读写。其他共有的成员函数如Manage()、void Scan()、Sear

6、ch()和BookRefund()用来完成系统的管理信息、浏览、查询和订票、退票功能。,12,a,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;

7、/记录航班数 vector v_array; /航班类数组 ;,13,a,三、核心控制设计,核心控制设计阶段主要完成程序的框架设计,这是实现软件系统体系的核心。在本项目中,程序的核心部分是数据存储结构的选择以及类中函数的设计。,(一)数据存储结构的选择,乘客的基本信息包括航班号、起始站、终点站、起飞时间、票价、余票量等,乘客的数量较大且不固定,因此我们使用动态增长的Flight类数组来保存这些信息,在必要的时候可将数组的内容保存到文件中。,14,a,在本程序中我们使用的是vector数组,vector是C+标准程序库中的一个类,可视为会自动扩展容量的数组。使用vector时需在头文件中包含下面

8、的代码:,#include ,声明一个vector变量的方法如下:,vector v;,其中,T是vector要存储的对象集合的类型,该vector的变量名称是v。,访问vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,在本程序中我们用到了它的函数push_back(),其作用是在vector最后添加一个元素。,15,a,(二)函数的设计与实现,本项目中函数的实现比较简单,这里不再赘述,读者可参照源码。这里只将程序中带参数的函数进行简单介绍。,1istream& operator(istream& in, Flight& cp),提取运算符重载函数使用了形参in和cp:形

9、参in为“istream&”引用类型,与该函数的返回值相同,故可以将该函数的返回值传给该形参,实现“”操作符的连续使用;形参cp为“Flight&”引用类型,实现了对Flight类对象的输入重载。,16,a,2ostream& operator(ostream& out, Flight& cp),插入运算符重载函数使用了形参out和cp,其作用与提取运算符重载函数类似。,3bool Flight:If_match(char (*p)18, char ta),该函数使用了形参p和ta:形参p为指向字符数组的指针,它用来指向一个大小为18的字符数组;形参ta为字符型,其作用是使该函数区分航班号和站

10、点名两种比较。,4int Traffic_system:Search(int invoke = 0),该函数使用了形参invoke,该形参为int型并设置默认参数为0,其作用为区分调用者,以便输出相应的提示信息。,四、编码与测试,编码与测试的工作将在任务实施中进行。,17,a,任务实施设计飞机订票系统,步骤1 在Visual C+中创建一个工作区,并在此工作区中创建一个Console Application即控制台应用程序类型的工程。在此工程中我们添加一个名为flight的头文件以及同名的一个源文件,其代码略。,步骤2 在步骤1创建的工程中添加一个名为Traffic_system的头文件以及同名的一个源文件,其代码略。,步骤3 在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论