在这个C++课程设计中,开发的是一个车票管理系统。系统主要使用了面向对象编程的概念,通过定义类`Bus_infor`来表示公交车班次的信息,包括起点、终点、班次号、额定载客量、已售出的票数、发车时间和行车时间等关键属性。以下是关于该系统的详细知识点:
1. **类定义**:
- `Bus_infor` 类包含了描述公交车班次所需的所有属性和方法。
- 静态数据成员 `Bus_No` 用于统计`Bus_infor`对象的总数。
2. **成员变量**:
- `start` 和 `end` 分别存储起点站和终点站的名称,类型为字符数组。
- `Bus_order` 存储班次号,类型为整型。
- `all_tickted` 存储额定载量,即车辆的总座位数。
- `tickted` 记录已销售的票数。
- `Hour_start` 和 `Minute_start` 代表发车时间的小时和分钟。
- `GoHour` 存储行车时间,单位为小时。
3. **构造函数和析构函数**:
- 构造函数 `Bus_infor()` 初始化类的实例,增加 `Bus_No` 的值并设置 `tickted` 为0。
- 析构函数 `~Bus_infor()` 在对象销毁时减少 `Bus_No` 的值。
4. **输入输出函数**:
- `input()` 函数负责从用户那里获取班次信息,包括班次号、额定载量、发车时间、行车时间以及起始站和终点站。
- `input(ifstream &is)` 用于从文件中读取班次信息。
- `output()` 和 `output(ofstream &os)` 分别用于在控制台输出和向文件写入班次信息。
5. **操作函数**:
- `Order_tickt(int n)` 定义了订票功能,允许用户预订指定数量的票。
- `Unorder_tickt(int n)` 实现退票功能,允许用户取消预订的票。
- `GetTime_start()` 用于获取发车时间。
- `GetTime()` 可能是一个用于判断当前班次是否已出发或是否可以订票的函数。
- `Get_all_tickted()` 和 `Get_tickted()` 提供额定载量和已售票数的查询。
- `Get_bus_order()` 返回班次号。
- `Get_end()` 返回终点站的字符串。
6. **文件处理**:
- 包含 `<fstream>` 头文件,表明系统可能支持从文件读取和写入数据,用于持久化存储车票信息。
7. **错误处理**:
- 输入检查通过 `cin.fail()` 来确保用户输入的数据类型正确,如输入的不是数字时会提示重新输入。
8. **命名空间**:
- 使用 `std` 命名空间,简化对标准库函数的引用。
9. **链表操作**:
- `Bus_link::input()` 函数似乎用于动态添加新的班次信息到链表中,`p->next = p2` 表示在链表末尾插入新节点。
这个车票管理系统的设计覆盖了数据结构(链表)、文件操作、面向对象编程、输入输出处理、错误检查以及用户交互等多个核心编程概念。通过这样的课程设计,学生可以巩固和提高C++编程能力,并了解实际应用中的问题解决策略。