您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页正文

C++课程设计——航空售票管理系统

来源:伴沃教育


内蒙古科技大学

本科生《C++程序设计》课程设计说明书

题 目:航空售票管理系统 学生姓名: 学 号:

专 业:计算科学与技术 班 级:计2010-1班 指导教师:XXX

内蒙古科技大学课程设计说明书

【摘要】

随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,航空系统在交通系统中已扮演着一个越来越重要的角色。然而,交通的快捷离不开信息的快捷。

随着随着计算机的发展和普及,人们的生活方式发生了巨大的改变,计算机在代替和延伸脑力劳动方面发挥着越来越重要的作用。在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给计算机处理,就可以很好地满足我们的需求。

航空售票管理系统可以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等工作。本文介绍了简易航空售票管理系统的实现过程。

【关键词】

航空售票管理系统 动态数组 类和对象 文件操作 运算符重载 多文件结构

II

内蒙古科技大学课程设计说明书

成绩评定标准

课程设计的验收答辩采取“讲解程序+提问+即时编程”的方式。

考核项目 评价质量 成绩 程序功能完全A能完全正确回答提问; 实现,并能通过B问题回答的基本意思正确; 答辩。(60%) C不能回答或回答错误,抽取程序小的功能即时编程,能完成; D不能回答或回答错误,即时编程无法完成; 程序设计符合A程序结构层次分明,提取出各个实体类,类的设计合理; 面向对象的思B程序结构层次分明,具有客户类和服务类; 想和原则,结构C类的设计基本正确; 合理(15) D几乎在一个类或者方法中实现了大部分的逻辑,结构不够清晰; 程序的风格A遵守编码规范,有良好的风格; (10%) 以下问题每出现一项成绩降一个等级: 1.类、方法和变量命名不符合规范; 2.方法和属性前缺少注释; 3.程序没有适当缩进; 设计说明书 (15%) 从以下几方面考核: 1.结构完整 2.图表正确 3.文字通顺 4.版面工整

III

内蒙古科技大学课程设计说明书

目 录

第一章 问题描述 ...................................................................................................................... 1 第二章 问题分析 ...................................................................................................................... 2

2.1 阐述你对问题的理解、解决问题的方案说明 ......................................................... 2 2.2 系统功能模块的划分 ................................................................................................. 2 第三章 数据模型 ...................................................................................................................... 4

3.1 相关数据结构的说明 ................................................................................................. 4 3.2 类的设计 ..................................................................................................................... 4 3.3 程序结构说明,即程序各个部分之间如何协调来完成任务 ................................. 5 3.4 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释 .................. 6 第四章 算法描述 ...................................................................................................................... 7

4.1 解题算法的设计思路介绍 ......................................................................................... 7 4.2 画出程序流程图 ......................................................................................................... 7 第五章 设计总结 .................................................................................................................... 12 附录 .......................................................................................................................................... 13 参考文献 .................................................................................................................................. 32 ……………………………………………………………………………………………… ………………………………………………………………………

IV

内蒙古科技大学课程设计说明书

第一章 问题描述

1.1该航空售票管理系统必须用C++语言进行设计,要能体现C++语言的特性。 1.2该系统至少要能提供下列服务:

(1) 录入航班信息,格式为:

航班号 mu2164 起始 包头 终点 北京 起飞时间 20:30 经济舱票价 610 剩余座位 87 可不定时地增加航班数据。

(2)浏览航班信息,可显示出所有航班,如果当前系统时间超过了某航班的起飞时间,则显示“此次航班已发出”的提示信息。

(3)查询路线:可按航班编号查询,可按起始站,终点站查询 (4)订票和退票功能

A:查询航班编号或站点。当剩余座位数大于0,并且当前系统时间小于起飞时间时才能售票,售票后自动更新剩余座位数。

B:退票时,输入退票的班次,当本班航班未发出时才能退票,退票后自动更新剩余座位数。

1

内蒙古科技大学课程设计说明书

第二章 问题分析

从对问题的描述可以知道,我们需要建立的是具有能对数据录入,追加,浏览,检索和修改功能的软件。由于乘客的数量较大且不固定,因此选择用动态数组来保存乘客的基本信息:航班号、起始站名、终点站名、起飞时间、经济参票价、余票量等等。所以我们建立一个可以动态增长的数组,在必要的时候将数组的内容保存到文件中。系统主要实现的操作和功能是:录入航班信息、浏览航班信息、查询航线、订票功能、退票功能。要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。

2.1 阐述你对问题的理解、解决问题的方案说明

根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次;

(3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成.员函数的定义; (5)完成系统的应用模块; (6)功能调试;

(7)完成系统总结报告以及系统使用说明书。

2.2 系统功能模块的划分

该系统总共包含四大功能模块: 一、 更新航班信息功能模块

该模块为对航班信息的操作,仅向管理员开放使用,普通用户不能使用该功能对

2

内蒙古科技大学课程设计说明书

航班信息进行操作,故进入该功能需进行身份验证。

该模块又被分为五个子功能模块——信息库的重建、信息的插入、修改、删除和清空数据。

二、 浏览航班信息

完成将文件中的航班信息按照要求格式全部输出。 三、 查询航班信息

可以实现按航班号和按站点的查询并将查询到的信息输出。 四、 订票和退票系统

该模块根据订票和退票操作的相似性,将这两种操作放在一起。

另外,由于各模块函数是直接对文件进行操作,所以各功能模块是相互独立的。

3

内蒙古科技大学课程设计说明书

第三章 数据模型

3.1 相关数据结构的说明

本系统用到的容器主要是动态增长的vector ,使用该容器需用头文件#include ,其通过语句vector v_array;申请了一个可以动态增长的数组。该数组的元素类Flight的对象,通过语句Flight fly; v_array.push_back(fly);可实现数组v_array的增长。

该容器用来存放航班类Flight的对象,使用该容器可以可以存放个数不确定的对象,且可以方便地进行访问。

3.2 类的设计

程序中一共定义了两个类:Flight类和Traffic_system类。

在Flight类里定义了私有数据成员m_fnum[10]表示航班号, m_ftime[2]表示起飞时间,char m_fstar[18]表示起始站, m_fdestination[18]表示终点站, m_fprice表示票价, m_fseat表示票数;定义了共有的成员函数bool SetInfo()用来设置航班信息,friend istream& operator>>(istream& in, Flight& cp)用来重载提取运算符>>,friend ostream& operator<<(ostream& out, Flight& cp)用来重载插入运算符<<,void Display()用来输出航班信息,bool Book()用来订票,void Refund()用来退票,bool If_takeoff()用来判断是否起飞,bool If_deleted()用来判断该航班是否被删除,bool If_match(char (*p)[18], char ta)用来判断航班号或站点名是否相同。

另一个类为Traffic_system类,其中定义了私有数据成员m_sum和v_array,v_array是数组名,用来存放航班类对象,m_sum表示数组v_array中航班类对象的个数;还定义了私有的成员函数void Read_file()用来读取文件,void Save_file()用来保存数据到文

4

内蒙古科技大学课程设计说明书

件,以及公有的数据成员函数void Manage()用来管理航班信息,void Scan()用来浏览航班信息,int Search(int invoke = 0)完成查询功能,void BookRefund()用来订票和退票。 两个类之间是组合的关系,其中Flight类是Traffic_system类的子类。

3.3 程序结构说明,即程序各个部分之间如何协调来完成任务

程序的结构图如下: 重 新 创 建 信 保存文件 读取文件 删除全部 修改信息 删除信插入信更新航班信订票 和 退票 查询航班信浏览航班信主函数 息 息 如上图,程序中各功能模块所需的数据都直接取自文件,这样保证了各模块的独立性和数据的安全性。并且只有相应的模块进行写的操作,并且数据的写入不必依赖其他模块,这样使用户可以仅使用其中某一项功能,而不必进行多余的操作。

5

内蒙古科技大学课程设计说明书

3.4 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释

(1) 整个程序中未使用全局变量。 (2) 重要形参

A) 提取运算符重载函数istream& operator>>(istream& in, Flight& cp)中使用了形参in和cp,形参in为引用“ istream&”,与该函数的返回值相同,故可以将该函数的返回值传给该形参,实现“>>”操作符的连续使用。形参cp为引用“Flight&”,实现了对Flight类对象的输入重载。

B) 插入运算符重载函数ostream& operator<<(ostream& out, Flight& cp)中使用了形参out和cp,其作用与上面类似。

C) 函数bool Flight::If_match(char (*p)[18], char ta)中使用了形参p 和ta,形参p为指向字符数组的指针,它用来指向一个大小为18的字符数组;形参ta为字符型,其作用是使该函数区分航班号和站点名两种比较。

D) 函数int Traffic_system::Search(int invoke = 0)中使用了形参invoke,该形参为int型并设置默认参数0,其作用为区分调用者,以便输出相应的提示信息。

6

内蒙古科技大学课程设计说明书

第四章 算法描述

4.1 解题算法的设计思路介绍

首先根据问题描述抽象出一个航班类,封装了航班的数据信息和方法。数据里主要有航班的航班号、起飞时间、站点等信息,方法主要是对该类中数据的值的输入、输出对本班次机票的管理,对时间、站名等的核对,另外为了方便对文件的输出和读取,还以友元的形式重载了提取和插入运算符。

由于有航班有多组,为了方便管理各个对象,所以有定义了一个Traffic_system类,将Flight类的对象作为Traffic_system类的数据成员。Traffic_system类中还定义了两个私有的成员函数完成对文件的读写。共有的成员函数主要是Manage(),void Scan(), Search(int invoke = 0)和BookRefund(),用来完成系统的几大功能。

4.2 画出程序流程图

文件“航空售票管理系统v-1.0.cpp”中 主函数流程图——main()

7

内蒙古科技大学课程设计说明书

开始 输出菜单 输入tab Y tab=1 管理 break; N Y tab=2 浏览 break; N Y tab=3 查询 break; N Y tab=4 订票和退票 break; N Y tab=5 清屏 break; N tab=0 Y 结束

文件“class/Traffic_system.cpp”中

8

内蒙古科技大学课程设计说明书

类中Traffic_system中 浏览函数——void Scan()

开始 读文件 Y m_su =0 N 输出表头 i <= 0 删除全部 N i < m_sum Y 重建 删除全部 返回

9

内蒙古科技大学课程设计说明书

查询函数——Search(int invoke = 0)

开始 读文件 输出提示信息 输入tab Y tab=0 N N Y tab=1 返回 -1 输入 str[0] 输入str[0], str[1] ta<=’1’ i<=0 ta<=’2’ N i++ i < m_sum Y N v_array[i].If_match(str, ta) Y

返回 i 10

内蒙古科技大学课程设计说明书

订票退票函数BookRefund()

开始 输出菜单 输入tab Y tab=1 查询 订票 保存 break; N Y tab=2 查询 退票 保存 break; N tab=0 Y 结束 11

内蒙古科技大学课程设计说明书

第五章 设计总结

此课程设计完成了对航线查询、订票、退票等功能的设计操作,并且为了插入和删除方便,运用动态数组做存储结构。此课程设计还包含了清屏功能以及退出功能。对程序在运行时输入错误操作的修改,提供了一定方便条件基本上能安全的运行,具备的功能符合题目的要求。用了文件的操作,是此程序的最大优点。程序写的还算简练,结构清晰,各个模块的分工和功能明确。

经过两周的课程设计,我认识到把课堂上老师讲的知识运用到实际操作中的重要性。我这次课程设计的题目是航空订票系统,在开始阶段,根本无从下手,后来通过查阅一些相关资料和老师的耐心讲解,最终成功完成整个程序的设计。通过这次课设我对C++语言中的类的定义、运算符重载等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这在以后的学习和工作中都会有帮助的,更使我意识到了学习C++语言的重要性。

程序中运用了多文件结构,虽然程序不是太大,但多文件结构的使用是我模仿正规软件的结构来写的,我想这对我以后的提高有帮助。

另外,对程序的不断调试,是我的查错能力有了很大的提高。

12

内蒙古科技大学课程设计说明书

附录

【程序清单】

文件——航空售票管理系统v-1.0.cpp #include #include using namespace std;

#include \"class/Traffic_system.h\" int main() {

Traffic_system civil_aviation; //若文件不存在,则新建文件

ofstream newfile( \"flight information.txt\if (!newfile) { }

newfile.close(); int tab; while(1) {

cout << \"\\n>>>>>>>>>>>>>>>>>>>>>>>>>>欢迎进入航空售票管理系统

\"******

cerr << \"文件\\\"flight information.txt\\\"无法打开!\\n\"; exit(2);

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\"

<< ***********\"

<< \"****** 1——更新航班信息(需管理员身份验证) 2——浏览 << \"****** 3——查询航班信息 4——订票 << \"****** 5——清 屏 0——退

13

航班信息 ***********\" 和 退票 ***********\"

内蒙古科技大学课程设计说明书

出 系 统 ***********\"

<<

\"********************************************************************************\"

<< \"你需要做什么?(选择0~4)\" << endl;

cin >> tab;

while(!(tab == 1 || tab == 2 || tab == 3 || tab == 4 || tab == 5 || tab == 0)) { } switch(tab) {

case 1: {

civil_aviation.Manage(); break;

cout << \"请输入正确选择(0~4):\"; cin >> tab;

} //航线管理 case 2: {

civil_aviation.Scan(); break;

} //订票办理 case 3: {

civil_aviation.Search(); break;

} //退票办理 case 4: { }

case 5: system(\"cls\"); break; case 0:return 0; //退出系统

14

civil_aviation.BookRefund(); break;

内蒙古科技大学课程设计说明书

}

}

}

文件——class/Traffic_system.h #include

using namespace std;

#include \"flight.h\"

//用于对文件的操作 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();//保存文件 private:

int m_sum;//记录航班数

vector v_array;//航班类数组

};

文件——class/Traffic_system.cpp #include

15

内蒙古科技大学课程设计说明书

#include

using namespace std;

#include \"Traffic_system.h\"

//读取文件

void Traffic_system::Read_file() { }

//保存文件

void Traffic_system::Save_file() {

ifstream file( \"flight information.txt\"); if (!file) { }

m_sum = 0; while (!file.eof()) { } m_sum--;// file.close();

Flight fly;

v_array.push_back(fly);// file >> v_array[m_sum++];

cerr << \"文件\\\"flight information.txt\\\"无法打开!\\n\"; exit(1);

ofstream file( \"flight information.txt\" , ios::trunc); if (!file) { }

16

cerr << \"文件\\\"flight information.txt\\\"无法打开!\\n\"; exit(2);

内蒙古科技大学课程设计说明书

}

int i = -1;

while (++i < m_sum) { }

file.close();

if (!v_array[i].If_deleted()) { }

file << v_array[i];

//管理航班信息

void Traffic_system::Manage() {

char password[20];//用于存贮密码 int times = 3;

cout << \"登录系统需验证密码!\" << endl; do {

times--;

cout << \"请输入密码:(默认000)\"; cin >> password;

if(strcmp(password, \"000\") == 0)//密码是“000” { }

else if (times > 0)

cout << \" 密码错误!\\n 剩余\" << times << \"次机会!\" << endl;

times = -1; break;

//验证密码。三次错误后,就自动退出程序

}while(times > 0); if(times != -1) {

cout << \"对不起!\\n 您不是管理员! 不能使用此系统!\" << endl; return;

17

内蒙古科技大学课程设计说明书

}

system(\"cls\"); while (1) {

int tab;

cout << \"\\n******************************欢迎使用航班信息管理系统 <<

**************************\\n\"

\"————————————————————————————————————————\"

<< \"\**\ >>1——重新创建信息库\\ >>2——插入信息

**\\n\**\ >>3——修改信息\\ >>4——删除信息 **\\n\**\ >>5——删除全部\\ >>0——退出管理 **\\n\"

<<

\"————————————————————————————————————————\"

<< \"你需要做什么?(选择0~5)\" << endl; cin >> tab;

while(!(tab == 1 || tab == 2 || tab == 3 || tab == 4 || tab == 5 || tab == 0)) { } switch(tab) {

case 1: { }

18

cout << \"请输入正确选择(0~5):\"; cin >> tab;

m_sum = 0; Flight fly;

cout << \"请进行信息录入。按“+”结束!\\n\"; do

v_array.push_back(fly);// while (v_array[m_sum++].SetInfo());

break;

内蒙古科技大学课程设计说明书

case 2: {

Read_file(); Flight fly;

cout << \"请进行信息录入。按“+”结束!\\n\"; do

v_array.push_back(fly);// while (v_array[m_sum++].SetInfo());

break;

} case 3: {

char fnum[1][18]; Read_file();

cout << \"请输入您要修改信息的航班号:\"; cin >> fnum[0]; int i = 0;

for (; i < m_sum; i++) {

if (v_array[i].If_match(fnum, '1')) {

cout << \"该航班的原信息为:\\n\"

<<

\"

———————————————————————————————————————\\n\"

<< \"丨 航 班 号 丨 起 始 站 丨 终 <<

\"

点 站 丨起飞时间丨票价丨余 票丨\"

———————————————————————————————————————\\n\";

v_array[i].Display();

cout << \"请输入正确信息!\\n\"; v_array[i].SetInfo();

m_sum++;//保持及总航线数不变 break;

19

内蒙古科技大学课程设计说明书

}

}

}

if (i == m_sum) { }

m_sum++;// break;

cout << \"抱歉!您要修改的信息不存在!\" << endl; return;

case 4: {

char fnum[1][18];

Flight empty;//声明\"空\"对象,用于删除 Read_file();

cout << \"请输入您要删除航班的航班号:\"; cin >> fnum[0]; int i = 0;

for (; i < m_sum; i++) {

if (v_array[i].If_match(fnum, '1')) {

cout << \"您要删除的航班为:\\n\" <<

\"

———————————————————————————————————————\\n\"

<< \"丨 航 班 号 丨 起 始 站 丨 终 点 <<

\"

站 丨起飞时间丨票价丨余 票丨\"

———————————————————————————————————————\\n\";

v_array[i].Display(); v_array[i] = empty;

m_sum++;//保持及总航线数不变 break;

20

内蒙古科技大学课程设计说明书

}

}

}

}

}

if (i == m_sum) { } break;

cout << \"您要删除的信息不存在!\" << endl; return;

case 5:m_sum = 1; break; case 0:return; }

cout << \"《确认\\\\Y》 《取消\\\\N》\\n请选择:\"; char yn; do {

cin >> yn;

}while(!(yn == 'Y' || yn == 'y' || yn == 'N' || yn == 'n' )); if(yn == 'Y' || yn == 'y') { }

m_sum--;//对应m_sum++ Save_file();

cout << \"操作成功!\" << endl;

//浏览

void Traffic_system::Scan() {

char c; Read_file(); if (m_sum == 0) {

cout << \"暂无信息!请等待管理人员更新!\";

21

内蒙古科技大学课程设计说明书

}

return;

cout << \"\航班信息表:\\n\" <<

\"

———————————————————————————————————————\\n\"

<< \"丨 航 班 号 丨 起 始 站 丨 终 点 站 丨起飞时 <<

\"

间丨票价丨余 票丨\"

———————————————————————————————————————\\n\"; }

//查询功能

int Traffic_system::Search(int invoke) {

int tab; Read_file(); cout

<<

for (int i = 0; i < m_sum; i++)

v_array[i].Display();

cout << \"按任意键返回主菜单!\"; cin >> c;

\"*************************************************************************\\n*** >>1——按航班号查询 >>2——按站点查询 >>0——返回 ***\\n*************************************************************************\\n请选择(0~2):\"

<< endl; cin >> tab;

while(!(tab == 1 || tab == 2 || tab == 0)) { }

char str[2][18], ta;

22

cout << \"请输入正确选择(0~2):\"; cin >> tab;

内蒙古科技大学课程设计说明书

if (tab == 0) return -1; else if (tab == 1) { } else { }

for (int i = 0; i < m_sum; i++) {

if (v_array[i].If_match(str, ta)) {

cout << \"您要查询的结果如下:\\n\" <<

\"

cout << \"请输入出发站:\"; cin >> str[0];

cout << \"请输入终点站:\"; cin >> str[1]; ta = '2';

cout << \"请输入航班号:\"; cin >> str[0]; ta = '1';

———————————————————————————————————————\\n\"

<< \"丨 航 班 号 丨 起 始 站 丨 终 点 站 <<

\"

丨起飞时间丨票价丨余 票丨\"

———————————————————————————————————————\"

<< endl; v_array[i].Display(); if (invoke == 0) {

cout << \"按任意键返回主菜单!\"; char c;

23

内蒙古科技大学课程设计说明书

}

}

}

}

cin >> c;

return i;

cout << \"抱歉!您查询的航班不存在!\" << endl; return -1;

//订票和退票

void Traffic_system::BookRefund() {

while (1) {

cout << <<

<< \"请选择:\\\\\\\\ ***\\n***\ >>1——订票\>>2——退票\>>0——返回主菜<<

<<

\"**************************欢迎进入机票服务系统

**********************\\n\\n\"

\"——————————————————————————————————\\n\" 单 ***\\n\"

\"——————————————————————————————————\" endl;

int tab; cin >> tab;

while(!(tab == 1 || tab == 2 || tab == 0)) { } char ta; switch(tab) {

case 1:

24

cout << \"请输入正确选择(0~2):\"; cin >> tab;

内蒙古科技大学课程设计说明书

{ } case 2: {

char str[1][18]; Read_file();

cout << \"请输入航班号:\"; cin >> str[0]; int i = 0;

for (; i < m_sum; i++) {

if (v_array[i].If_takeoff()) {

v_array[i].Refund();

cout << \"《确认退票\\\\Y》 《取消退票\\\\N》\\n请选择:\"; do

25

cout << \"请先查找该航班:\" << endl; int i; i = Search(1);

if (i != -1 && v_array[i].Book()) { } break;

cout << \"《确认订票\\\\Y》 《取消订票\\\\N》\\n请选择:\"; do {

cin >> ta;

}while(!(ta == 'Y' || ta == 'y' || ta == 'N' || ta == 'n' )); if(ta == 'Y' || ta == 'y') { }

Save_file();

cout << \"订票成功!\" << endl;

continue;

if (v_array[i].If_match(str, '1'))

内蒙古科技大学课程设计说明书

}

}

}

}

{

cin >> ta;

}while(!(ta == 'Y' || ta == 'y' || ta == 'N' || ta == 'n' )); if(ta == 'Y' || ta == 'y') { } break;

Save_file();

cout << \"退票成功!\" << endl;

if (i == m_sum) { }

cout << \"不存在该航班或该航班已起飞!不能退票。\" << endl; break;

}

case 0:return; }

文件——class/ flight.h class Flight { public:

Flight() { }

bool SetInfo();//设置航班信息

friend istream& operator>>(istream& in, Flight& cp);//提取运算符重载 friend ostream& operator<<(ostream& out, Flight& cp);//插入运算符重载 void Display();//输出航班信息

26

m_fnum[0] = '+';

内蒙古科技大学课程设计说明书

bool Book();//订票 void Refund();//退票

bool If_takeoff();//判断是否起飞 bool If_deleted();//判断是否删除

bool If_match(char (*p)[18], char ta);//判断航班号或站点名是否相同 private:

char m_fnum[10];//航班号 int m_ftime[2];//起飞时间 char m_fstar[18];//起始站 char m_fdestination[18];//终点站 int m_fprice;//票价 int m_fseat;//票数

};

文件——class/ flight.cpp #include #include #include #include //time.h in C

using namespace std;

#include #include \"flight.h\"

//<<运算符重载

istream& operator>>(istream& in, Flight& cp) { in >> cp.m_fnum >> cp.m_fstar >> cp.m_fdestination cp.m_ftime[1] >> cp.m_fprice >> cp.m_fseat;

return in;

}

ostream& operator<<(ostream& out, Flight& cp)

27

>> cp.m_ftime[0] >> 内蒙古科技大学课程设计说明书

{ }

//获取系统时间 int get_systemtime() { }

//判断是否起飞 bool Flight::If_takeoff() { }

//判断是否作废 bool Flight::If_deleted() { }

//判断航班号或站点名是否相同

bool Flight::If_match(char (*p)[18], char ta) {

out << cp.m_fnum << \" \" << cp.m_fstar << \" \" << cp.m_fdestination << \" \" << return out;

cp.m_ftime[0] << \" \" << cp.m_ftime[1] << \" \" << cp.m_fprice << \" \" << cp.m_fseat << \"\\n\";

time_t now; struct tm *fmt; time(&now);

fmt = localtime(&now);

return (fmt->tm_hour * 60 + fmt->tm_min);

return (m_ftime[0] * 60 + m_ftime[1] <= get_systemtime());

return m_fnum[0] == '-';

if (ta == '1')

return (!strcmp(m_fnum, p[0])); else

return (!strcmp(m_fstar, p[0]) && !strcmp(m_fdestination, p[1]));

28

内蒙古科技大学课程设计说明书

}

//设置航班信息 bool Flight::SetInfo() { }

//输出航班信息 void Flight::Display() {

if (If_takeoff()) {

cout << \"丨 \" << setiosflags(ios::left) << setw(10) << m_fnum << \"丨 \" << setw(18)

<< \"丨 \" << \" 本次航班已经起飞!\" << \" 丨\" <<

\"

cout << \"输入航班号:\"; cin >> m_fnum; if (m_fnum[0] == '+') return false; cout << \"起始站:\"; cin >> m_fstar; cout << \"终点站:\"; cin >> m_fdestination;

cout << \"请输入起飞时间:(格式:03:05)\"; scanf(\"%d:%d\cout << \"票价:\"; cin >> m_fprice; cout << \"余票:\"; cin >> m_fseat; return true;

<< m_fstar << \"丨 \" << setw(18) << m_fdestination

———————————————————————————————————————\"

}

<< endl;

29

内蒙古科技大学课程设计说明书

else {

cout << \"丨 \" << setiosflags(ios::left) << setw(10) << m_fnum << \"丨 \" << setw(18)

<< \"丨 \" << setiosflags(ios::right) << setw(2) << setfill('0') << m_ftime[0] << << \" 丨\" << setw(4) << m_fprice << \"丨\" << setw(5) << m_fseat << \"丨\" << <<

\"

<< m_fstar << \"丨 \" << setw(18) << m_fdestination \":\" << setw(2) << m_ftime[1] << setfill(' ') resetiosflags(ios::right)

———————————————————————————————————————\" } //订票

bool Flight::Book() { }

30

}

<< endl;

if (If_takeoff()) { } int count;

cout << \"请输入订购的票数:\"; cin >> count; if (m_fseat < count) { }

m_fseat -= count; return true;

cout << \"余票不足!\" << endl; return false;

cout << \"该航班已经起飞,停止售票!\" << endl; return false;

内蒙古科技大学课程设计说明书

//退票

void Flight::Refund() { if (If_takeoff()) { cout << \"该航班已经起飞,停止退票!\" << endl; return;

} int count;

cout << \"请输入退订票数\"; cin >> count; m_fseat += count;

}

31

内蒙古科技大学课程设计说明书

参考文献

[1] Bjarne Stroustrup, THE C++ PROGRAMMING LANGUAGE, Higher Education Press Pearson Education,

2002

[2] [美]Walter Savitch著,周靖译,C++面向对象程序设计——基础、数据结构与编程思想,清华大学出版

社,2004

[3] [美]Brian Overland著,董梁等译,C++语言命令详解,电子工业出版社,2000

[4] [美]AI Stevens著,林瑶等译,C++大学自学教程,电子工业出版社,2004

[5] 刁成嘉主编,面向对象C++程序设计,机械工业出版社,2004

[6] 刘瑞新主编,曹建春,沈淑娟,张连堂等编著,Visual C++面向对象程序设计程,机械工业出版社,2004

[7] 陈文宇,张松梅编著,C++语言教程,电子科技大学出版社,2004

[8] 张凯主编,付兴宏主审,VC++程序设计,大连理工大学出版社,2002

32

因篇幅问题不能全部显示,请点此查看更多更全内容

Top