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日

相关文章

  • win10下定时运行与开机自启动jar包的方法记录

    我来给你详细讲解win10下定时运行与开机自启动jar包的方法。我们可以分为两个部分来讲解,下面将分别进行详细介绍。 一、定时运行jar包的方法记录 1.安装JRE环境 在运行Java程序之前,需要安装Java Runtime Environment(JRE)环境。可以在官网下载安装。 2.运行jar包 运行jar包有多种方法,我们这里介绍一种简单的方法:使…

    C 2023年5月22日
    00
  • 浅谈Linux环境下并发编程中C语言fork()函数的使用

    浅谈Linux环境下并发编程中C语言fork()函数的使用 简介 在Linux环境下C语言的并发编程中,fork()函数是一种常见的创建新进程的方式。这个函数会创建一个子进程,子进程与父进程在某些方面是相同的,在另一些方面又是不同的。本文将详细讲解fork()函数的使用。 fork()函数的声明 fork()函数的声明如下所示: #include <u…

    C 2023年5月22日
    00
  • postgresql限制某个用户仅连接某一个数据库的操作

    限制某个用户仅连接某一个数据库的操作可以通过在PostgreSQL中修改pg_hba.conf和postgresql.conf文件来实现。下面是具体步骤: 修改pg_hba.conf文件 打开pg_hba.conf文件,在文件末尾添加一行内容: host database_name user_name IP_address authentication_me…

    C 2023年5月22日
    00
  • C语言之选择分支语句详解

    C语言之选择分支语句详解 在C语言中,选择分支语句主要用来根据某些条件来决定程序运行的不同路径,通常有以下三种形式: if语句 switch语句 三目运算符 if语句 if语句的一般形式如下: if (条件表达式) { // 条件满足时执行的代码块 } 例如,下面的代码将根据用户输入的数字来判断其是正数、负数还是零: #include <stdio.h…

    C 2023年5月24日
    00
  • Qt写入Json文件的方法详解(含源码+注释)

    下面我就为您详细讲解一下“Qt写入Json文件的方法详解(含源码+注释)”这篇文章。 一、前言 本文主要介绍Qt中如何使用QJsonDocument来进行Json的操作,其中包括Json文件的读取、写入及解析等操作。该文档由以下几个部分构成: Json的基础知识——介绍了Json的基础知识和理解 Qt中Json的API使用——介绍了整个Qt中Json相关AP…

    C 2023年5月23日
    00
  • C++实现单例模式的自动释放

    C++中的单例模式指的是某个类在整个程序中只有唯一的实例,这个实例可以全局被访问。而实现单例模式的自动释放则是让这个唯一实例在程序结束时自动释放,防止内存泄漏的发生。 以下是C++实现单例模式的自动释放的完整攻略: 懒汉式单例模式 实现思路 构造函数和析构函数私有化,防止实例对象被外部创建和销毁。 用静态指针变量指向唯一实例对象,保证实例对象的唯一性。 在程…

    C 2023年5月23日
    00
  • C语言实现员工工资管理系统

    C语言实现员工工资管理系统 介绍 本文将详细讲解如何用C语言实现一个员工工资管理系统。该系统将能够实现对员工信息的存储、修改、删除以及工资发放等基本功能。我们将分步骤地讲解整个系统的实现,供初学者参考。 准备工作 在开始实现之前,需要安装C语言的编译器,比如GCC。此外,需要在系统上安装适合的文本编辑器。在本文中,我们使用的是Visual Studio Co…

    C 2023年5月23日
    00
  • C语言中字符和字符串处理(ANSI字符和Unicode字符)

    C语言中字符和字符串处理(ANSI字符和Unicode字符) 字符处理 在C语言中,字符是采用ANSI编码方式表示的,ANSI编码是一个字符编码标准,定义了128个字符,包括数字、大小写字母、标点符号、控制字符等,使用一个字节表示一个字符。使用字符类型(char)来存储一个字符。 基本字符类型 在C语言中,基本的字符类型是char,在头文件和中还定义了字符类…

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