C++实现航空订票程序

C++实现航空订票程序

程序设计

  • 题目描述:设计一个航空订票系统,要求能够查询航班、预订航班、退订航班等功能。

  • 程序设计思路:将航班信息、旅客信息以及订单信息进行数据结构的设计,然后通过调用相应的函数实现不同的功能。

程序代码

  • 数据结构:
//航班信息结构体
struct flight{
    string flightno;  //航班号
    string departure;  //起点
    string destination;  //终点
    date ddate;    //出发日期
    time deptime;  //出发时间
    time arrtime;  //到达时间
    double ticketprice;  //机票价格
    int ticketnum;   //可用票数
};

//旅客信息结构体
struct passenger{
    string id;     //身份证号
    string name;   //姓名
    string tel;    //联系电话
};

//订单信息结构体
struct order{
    string orderid;  //订单编号
    string flightno;  //航班号
    string passengerid;  //旅客身份证号
    int ticketnum;  //预订票数
    date orderdate;  //预订日期
    double totalprice;  //总价
};
  • 函数说明:
//输入航班信息
void inputflight(flight &f);

//输入旅客信息
void inputpassenger(passenger &p);

//输入日期
date inputdate();

//输入时间
time inputtime();

//用于输出指定日期的航班信息
void searchdateflight(vector<flight> &f);

//用于预订航班
void bookflight(vector<flight> &f, vector<passenger> &p, vector<order> &o);

//用于进行退票
void cancelorder(vector<order> &o, vector<flight> &f);
  • 程序主函数
int main(){
    vector<flight> f_list;
    vector<passenger> p_list;
    vector<order> o_list;
    int choice;
    while(1){
        printf("航空订票系统\n");
        printf("1.输入航班信息\n2.查询航班\n3.预订航班\n4.查询订单\n5.退票\n0.退出系统\n请选择操作:");
        scanf("%d", &choice);
        switch(choice){
            case 1:
                flight f;
                inputflight(f);
                f_list.push_back(f);
                break;
            case 2:
                searchdateflight(f_list);
                break;
            case 3:
                bookflight(f_list, p_list, o_list);
                break;
            case 4:
                printf("订单信息如下:\n");
                for(int i=0; i<o_list.size(); i++){
                    printf("订单编号:%s,航班号:%s,乘客身份证号:%s,预订票数:%d,总价:%0.2f\n",
                           o_list[i].orderid.c_str(), o_list[i].flightno.c_str(), o_list[i].passengerid.c_str(),
                           o_list[i].ticketnum, o_list[i].totalprice);
                }
                break;
            case 5:
                cancelorder(o_list, f_list);
                break;
            case 0:
                printf("谢谢使用!\n");
                exit(0);
                break;
            default:
                printf("输入无效,请重新输入!\n");
                break;
        }
    }
    return 0;
}

示例说明

  • 示例1:输入航班信息

输入以下数据:

航班号:CA987
起点:北京
终点:广州
出发日期:2021-09-10
出发时间:09:15
到达时间:13:20
机票价格:1200
可预订票数:50

程序执行结果:

航空订票系统
1.输入航班信息
2.查询航班
3.预订航班
4.查询订单
5.退票
0.退出系统
请选择操作:1
航班号:CA987
起点:北京
终点:广州
出发日期:2021-09-10
出发时间:09:15
到达时间:13:20
机票价格:1200
可预订票数:50
输入航班信息成功!
  • 示例2:查询航班

输入以下数据:

输入查询日期:2021-09-10

程序执行结果:

航空订票系统
1.输入航班信息
2.查询航班
3.预订航班
4.查询订单
5.退票
0.退出系统
请选择操作:2
查询日期:2021-09-10
CA987,北京 -> 广州,出发时间:09:15,到达时间:13:20,机票价格:1200,可预订票数:50

以上就是C++实现航空订票程序的完整攻略,包括程序设计思路、数据结构、函数说明、程序主函数以及两个示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现航空订票程序 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • MySQL与PHP的基础与应用专题之数据完整性

    MySQL与PHP的基础与应用专题之数据完整性攻略 1. 数据完整性的概念 数据完整性是指数据的准确性、合法性、一致性和有效性等方面。 在数据库中,可以通过设置约束条件来保证数据的完整性,包括以下几种类型的约束: 主键约束 外键约束 唯一约束 非空约束 默认约束 检查约束 2. 主键约束 主键是唯一标识一张表中某一行数据的字段或字段组合,主键的值必须唯一且不…

    C 2023年5月23日
    00
  • Lua教程(二十一):编写C函数的技巧

    Lua教程(二十一):编写C函数的技巧 在Lua的扩展开发中,编写C函数是非常必要的。本篇文章将介绍一些编写C函数时需要掌握的技巧。 捕获Lua栈 当我们需要在C中调用Lua函数并获得Lua栈中的值时,我们需要使用Lua_API中提供的函数来实现这一目标。我们可以通过以下示例实现: int my_function(lua_State* L) { int ar…

    C 2023年5月24日
    00
  • thinkphp下MySQL数据库读写分离代码剖析

    下面是“thinkphp下MySQL数据库读写分离代码剖析”的完整攻略,包含了步骤、示例代码和注意点。 步骤 1. 安装MySQL主从复制 首先,需要安装MySQL主从复制功能,将主服务器的数据同步到从服务器,实现读写分离。 2. 配置主从服务器 在主服务器和从服务器中,分别配置MySQL的主从关系和各自的配置文件。在配置文件中,需要设置数据库的用户名、密码…

    C 2023年5月23日
    00
  • C 程序 使用递归来反转字符串

    下面我为您详细讲解“C 程序使用递归来反转字符串”的完整使用攻略。 程序简介 该程序使用递归算法来反转字符串,即将字符串的字符顺序颠倒。使用递归的方法,需要将任务分为一个个较小的子任务,最终通过不断调用函数自身实现问题的解决。 程序实现 1. 程序分析 该程序主要有以下两个函数: void reverse_string(char* str) 函数:通过递归的…

    C 2023年5月9日
    00
  • C++ STL标准库std::vector扩容时进行深复制原因详解

    C++ STL标准库std::vector是一个提供动态数组功能的容器,它提供了扩容机制,即当当前存储的元素个数达到容量限制时,会自动将容量扩大一倍,以适应更多元素的存储。但在扩容的过程中,每一个元素都必须进行深复制操作,这是因为在动态内存分配中,变量在内存中的位置不连续,因此需要将每个元素重新复制到新的内存位置上。 下面以两个简单示例详细说明std::ve…

    C 2023年5月23日
    00
  • CMake的简单应用

    请允许我来讲解“CMake的简单应用”的完整攻略。 什么是 CMake CMake 是一个跨平台的编译构建工具,它可以用来自动生成 Makefile、Visual Studio 的项目、XCode 的工程等等编译构建相关的文件。 它可以帮助我们更方便地管理和构建跨平台的项目,提高开发效率和代码可维护性。下面我们将介绍如何使用 CMake 来构建项目。 CMa…

    C 2023年5月23日
    00
  • C 头文件

    下面详细讲解一下 C 头文件的完整使用攻略。 什么是 C 头文件 在 C 语言中,头文件是一种特殊的文件,它包含了一些函数和变量的声明,可以被其他源文件引用。头文件的作用就是让代码更好维护和组织,可以将程序中的一些常用的函数和变量声明都放在头文件中,便于管理和使用。 如何使用 C 头文件 C 头文件通常包含两个部分:宏定义和函数声明。其中,宏定义是用来定义一…

    C 2023年5月10日
    00
  • Java日常练习题,每天进步一点点(61)

    下面是对Java日常练习题的完整攻略。 标题 题目命名规则:题目序号-题目名称 例如:61-代码中的注释 描述 放置题目的具体描述,包括题目的背景、要求和提示等信息。 示例说明 以案例的形式,分别举例解决方案的具体实现和结果。 示例一 题目:将列表排序并输出 描述:给定一个字符串类型的数组,将该数组按字典排序后输出。 示例输入: String[] arr =…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部