C++实现车票管理系统

C++实现车票管理系统

系统功能

该车票管理系统主要实现以下功能:

  1. 查询车票信息
  2. 购买车票
  3. 退票操作
  4. 统计车票销售额和余票数操作

设计思路

数据结构

使用结构体来存储车票信息,包括车次、起点站、终点站、发车时间、到达时间、车票价格和车票余量等信息。同时,为了方便对车票信息进行查找、添加和删除等操作,可以使用一个存储车票信息的数组来进行管理。

struct Ticket {
  string train_num; // 车次
  string from_station; // 起点站
  string to_station; // 终点站
  string departure_time; // 发车时间
  string arrival_time; // 到达时间
  int price; // 票价
  int remain; // 剩余票数
};

Ticket tickets[1000]; // 存储车票信息的数组
int ticket_num = 0; // 当前车票数量

功能实现

查询车票信息

查询车票信息是常见的操作,可以根据起点站和终点站来查询符合条件的车票信息。具体实现过程中,可以使用一个循环遍历车票数组,逐一检查每张车票是否符合条件,如果符合则将其展示出来。

void query_ticket() {
  string from, to; // 起点站和终点站
  cout << "请输入起点站:";
  cin >> from;
  cout << "请输入终点站:";
  cin >> to;

  for (int i = 0; i < ticket_num; i++) {
    Ticket ticket = tickets[i];
    if (ticket.from_station == from && ticket.to_station == to && ticket.remain > 0) {
      cout << "车次:" << ticket.train_num << endl
           << "起点站:" << ticket.from_station << endl
           << "终点站:" << ticket.to_station << endl
           << "发车时间:" << ticket.departure_time << endl
           << "到达时间:" << ticket.arrival_time << endl
           << "价格:" << ticket.price << endl
           << "余票数:" << ticket.remain << endl;
      cout << endl;
    }
  }
}

购买车票

购买车票是该系统的核心功能,需要进行以下步骤:

  1. 输入购票信息(车次、起点站、终点站)
  2. 检查所选车票是否有余量,若没有则提示购票失败
  3. 若有余量,则将余票数减去1,同时计算并输出购票信息和售票总额
void buy_ticket() {
  string train_num, from, to; // 车次、起点站和终点站
  cout << "请输入需要购买的车次:";
  cin >> train_num;
  cout << "请输入起点站:";
  cin >> from;
  cout << "请输入终点站:";
  cin >> to;

  for (int i = 0; i < ticket_num; i++) {
    Ticket &ticket = tickets[i];
    if (ticket.train_num == train_num && ticket.from_station == from && ticket.to_station == to && ticket.remain > 0) {
      ticket.remain--; // 余票数减1
      int price = ticket.price;
      int total = price * (1 + 0.1); // 计算售票总额
      cout << "购票成功!" << endl
           << "车次:" << ticket.train_num << endl
           << "起点站:" << ticket.from_station << endl
           << "终点站:" << ticket.to_station << endl
           << "发车时间:" << ticket.departure_time << endl
           << "到达时间:" << ticket.arrival_time << endl
           << "价格:" << ticket.price << endl
           << "余票数:" << ticket.remain << endl
           << "售票总额:" << total << endl;
      return;
    }
  }

  cout << "购票失败,请重新选择车票!" << endl;
}

退票操作

退票操作需要输入订单号,然后根据订单号查询对应车次,将余票数加1,同时输出退票信息。

void return_ticket() {
  string oid; // 订单号
  cout << "请输入订单号:";
  cin >> oid;

  for (int i = 0; i < ticket_num; i++) {
    Ticket &ticket = tickets[i];
    if (ticket.train_num == oid) {
      ticket.remain++;
      cout << "退票成功!" << endl
           << "车次:" << ticket.train_num << endl
           << "起点站:" << ticket.from_station << endl
           << "终点站:" << ticket.to_station << endl
           << "发车时间:" << ticket.departure_time << endl
           << "到达时间:" << ticket.arrival_time << endl
           << "价格:" << ticket.price << endl
           << "余票数:" << ticket.remain << endl;
      return;
    }
  }

  cout << "订单不存在!" << endl;
}

统计车票销售额和余票数操作

统计车票销售额和余票数操作是为商家提供业务数据的重要功能,需要遍历车票数组,累加余票数和售票总额。

void summary() {
  int remain = 0, sales = 0; // 余票数和售票总额

  for (int i = 0; i < ticket_num; i++) {
    Ticket &ticket = tickets[i];
    remain += ticket.remain;
    sales += ticket.price * (1 + 0.1) * (1 - ticket.remain / 100.0); // 考虑余票数的折扣
  }

  cout << "售出车票总额:" << sales << endl
       << "剩余车票数:" << remain << endl;
}

示例

以下是两个示例,分别展示了查询车票信息和购买车票的操作。

查询车票信息

请输入起点站:北京
请输入终点站:上海

车次:D32
起点站:北京
终点站:上海
发车时间:2021-08-01 09:00
到达时间:2021-08-01 18:00
价格:500
余票数:5

车次:D35
起点站:北京
终点站:上海
发车时间:2021-08-02 08:00
到达时间:2021-08-02 17:00
价格:480
余票数:12

购买车票

请输入需要购买的车次:D35
请输入起点站:北京
请输入终点站:上海

购票成功!
车次:D35
起点站:北京
终点站:上海
发车时间:2021-08-02 08:00
到达时间:2021-08-02 17:00
价格:480
余票数:11
售票总额:528

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现车票管理系统 - Python技术站

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

相关文章

  • C++11/14 线程的创建与分离的实现

    下面就详细讲解C++11/14线程的创建与分离的实现的攻略。 线程的创建 使用C++11/14标准提供的std::thread库可以创建线程。线程的创建可以通过以下操作: 定义一个线程对象,并指定线程函数 c++std::thread my_thread(my_func); 这里的my_func是一个函数指针,指向线程所要执行的函数。 定义一个匿名线程对象,…

    C 2023年5月22日
    00
  • C++编程语言实现单链表详情

    C++编程语言实现单链表详情 本文将详细讲解如何使用C++语言实现单链表。单链表是一种非常常见的数据结构,它由多个节点组成,在每个节点中存储一个数据元素和指向下一个节点的指针。本文将分步骤介绍如何设计和实现单链表。 1、单链表节点的定义 在C++中,我们可以定义一个节点类来表示单链表中的每个节点。每个节点中包含两个成员变量,一个是存储数据元素的变量,另一个是…

    C 2023年5月24日
    00
  • c++编写String类代码实例

    下面是详细讲解”C++编写String类代码实例”的攻略: 1. 什么是String类? String类是C++中封装了的字符串类,它提供了很多操作字符串的方法,如获取字符串长度、复制字符串、连接字符串、比较字符串等等。使用String类可以大大简化字符串操作的过程,提高代码可读性和可维护性。 2. String类的基本实现 2.1 类的定义 class S…

    C 2023年5月24日
    00
  • VC下通过系统快照实现进程管理的方法

    VC下通过系统快照实现进程管理方法 什么是系统快照 系统快照是指对操作系统当前的状态进行记录和保存。在Windows系统中,我们可以通过快照来获取系统中进程和线程的相关信息,这些信息包括程序的运行状况、CPU使用率、内存使用情况等,可以用于实现进程管理。 快照函数 Windows系统提供了一系列的快照函数,可以用于获取系统当前的状态。其中,最常用的函数包括:…

    C 2023年5月23日
    00
  • C++实现简单学生管理系统

    C++实现简单学生管理系统 概述 这是一个基于C++语言的简单学生管理系统,可实现学生信息的添加、删除、修改、查询、打印等功能。主要分为4个模块:菜单选择、学生信息操作、文件读写和程序退出。 菜单选择 菜单选择模块主要用于输出菜单并接受用户输入的选项。 void showMenu() { cout << "*****学生管理系统****…

    C 2023年5月23日
    00
  • vs怎么创建C语言的除法程序?

    下面是详细讲解如何使用 VS Code 创建 C 语言的除法程序的完整攻略。 准备工作 安装 C 语言编译器。推荐使用 MinGW,可以在 https://sourceforge.net/projects/mingw/files/ 下载安装程序。 安装 VS Code。可以在官网 https://code.visualstudio.com/ 下载安装程序。 …

    C 2023年5月23日
    00
  • C++11中bind绑定器和function函数对象介绍

    C++11中bind绑定器和function函数对象介绍 C++11引入了许多新特性,其中包括bind绑定器和function函数对象。这些特性使得C++在编写现代化的代码方面变得更加简单和灵活,为程序员提供了更多的工具来实现代码复用和组合。 bind绑定器 bind绑定器是一个函数模板,它可以用来将一个函数的参数绑定到特定的值或另一个函数。这使得我们可以轻…

    C 2023年5月22日
    00
  • C语言中循环语句练习实例

    下面我将详细讲解如何练习C语言中的循环语句。 什么是循环语句 在 C 语言中, 循环语句分为 for、while、do..while 三种类型。循环语句可以让程序多次执行同一段代码,简化程序逻辑。 循环语句的语法 for 循环语句语法 for (初始化表达式; 条件表达式; 更新表达式) { // 循环体语句 } 其中,初始化表达式只在循环开始时执行一次,条…

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