用C++实现停车场管理系统

该系统具有以下功能:

- 停车:输入车牌号和进入时间,自动分配停车位编号,如果停车场已满则提示停车场已满。

- 离开停车场结算停车费用:输入停车位编号和离开时间,自动计算停车费用,如果已结算则提示已结算。

- 显示停车记录:按照停车位编号顺序显示停车记录,包括车牌号、进入时间、离开时间和停车费用。

- 退出系统:结束程序。

该程序通过使用 vector 存储停车记录,动态分配停车位编号,并通过 switch-case 语句实现菜单选择功能。

#include <iostream>
#include <vector>
#include <string>
using namespace std;

const int MAX_CAPACITY = 100;

// 停车记录结构体
struct ParkingRecord {
    int id;                 // 停车位编号
    string licensePlate;    // 车牌号
    int timeIn;             // 进入时间
    int timeOut;            // 离开时间
    float cost;             // 停车费用
};

// 停车场类
class ParkingLot {
public:
    ParkingLot();

    // 显示菜单
    void showMenu();

    // 停车
    void parkCar();

    // 离开停车场结算停车费用
    void checkOutCar();

    // 显示停车记录
    void showParkingRecords();

private:
    vector<ParkingRecord> parkingLot;   // 停车场
    int currentCapacity;                // 当前停车场容量
};

// 构造函数
ParkingLot::ParkingLot() {
    currentCapacity = 0;
}

// 显示菜单
void ParkingLot::showMenu() {
    cout << "Welcome to the Parking Lot Management System!" << endl;
    cout << "1. Park a car" << endl;
    cout << "2. Check out a car" << endl;
    cout << "3. Show parking records" << endl;
    cout << "4. Exit" << endl;
    cout << "Please enter your choice: ";
}

// 停车
void ParkingLot::parkCar() {
    if (currentCapacity >= MAX_CAPACITY) {
        cout << "Sorry, the parking lot is full." << endl;
        return;
    }

    ParkingRecord newRecord;
    cout << "Please enter the license plate number (up to 9 characters): ";
    cin >> newRecord.licensePlate;
    cout << "Please enter the time in (in minutes since 00:00): ";
    cin >> newRecord.timeIn;

    newRecord.id = currentCapacity + 1;
    parkingLot.push_back(newRecord);
    currentCapacity++;

    cout << "The car is parked at spot " << newRecord.id << "." << endl;
}

// 离开停车场结算停车费用
void ParkingLot::checkOutCar() {
    int id;
    cout << "Please enter the parking spot number: ";
    cin >> id;

    if (id < 1 || id > currentCapacity) {
        cout << "Invalid parking spot number." << endl;
        return;
    }

    ParkingRecord *record = &parkingLot[id-1];
    if (record->timeOut > 0) {
        cout << "The car has already been checked out." << endl;
        return;
    }

    cout << "Please enter the time out (in minutes since 00:00): ";
    cin >> record->timeOut;

    float hours = (record->timeOut - record->timeIn) / 60.0;
    record->cost = hours * 1.5;

    cout << "The cost for parking is $" << record->cost << "." << endl;
}

// 显示停车记录
void ParkingLot::showParkingRecords() {
    if (currentCapacity == 0) {
        cout << "There is no car parked in the parking lot." << endl;
        return;
    }

    cout << "Parking records:" << endl;
    cout << "ID\tLicense Plate\tTime In\tTime Out\tCost" << endl;
    for (int i = 0; i < currentCapacity; i++) {
    ParkingRecord record = parkingLot[i];
    cout << record.id << "\t" << record.licensePlate << "\t\t" 
         << record.timeIn << "\t" << record.timeOut << "\t" 
         << record.cost << endl;
    }

// 主函数
int main() {
ParkingLot parkingLot;
int choice;
do {
    parkingLot.showMenu();
    cin >> choice;

    switch (choice) {
        case 1:
            parkingLot.parkCar();
            break;
        case 2:
            parkingLot.checkOutCar();
            break;
        case 3:
            parkingLot.showParkingRecords();
            break;
        case 4:
            cout << "Thank you for using the Parking Lot Management System." << endl;
            break;
        default:
            cout << "Invalid choice." << endl;
            break;
    }

    cout << endl;
} while (choice != 4);

return 0;
  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
停车场管理系统是一个比较常见的课程设计题目,下面是一些参考思路和代码片段供你参考: 1. 首先,你需要设计一个数据结构来存储停车场的车辆信息,比如使用链表或数组。 ``` typedef struct car { char license[10]; // 车牌号 int time; // 进入时间 } Car; Car park[100]; // 停车场车辆信息数组 int top = -1; // 栈顶指针 ``` 2. 实现车辆进入停车场的功能,需要判断停车场是否已满,如果未满则将车辆信息添加到停车场中。 ``` void enter() { if (top == 99) { printf("停车场已满!\n"); return; } top++; printf("请输入车牌号:"); scanf("%s", park[top].license); park[top].time = time(NULL); // 记录进入时间 printf("车辆已经成功进入停车场!\n"); } ``` 3. 实现车辆离开停车场的功能,需要根据车牌号在停车场中查找车辆信息,并计算停车费用。 ``` void leave() { char license[10]; printf("请输入车牌号:"); scanf("%s", license); int i, flag = 0; for (i = 0; i <= top; i++) { if (strcmp(park[i].license, license) == 0) { flag = 1; int duration = (time(NULL) - park[i].time) / 60; // 计算停车时长(分钟) float cost = duration * 0.5; // 停车费用为每分钟 0.5 元 printf("停车时长为 %d 分钟,停车费用为 %.2f 元。\n", duration, cost); // 将车辆信息从停车场中删除 for (int j = i; j < top; j++) { park[j] = park[j + 1]; } top--; break; } } if (flag == 0) { printf("未找到该车辆!\n"); } } ``` 4. 最后,你需要编写一个菜单函数,让用户选择要执行的功能。 ``` void menu() { printf("停车场管理系统\n"); printf("1. 车辆进入停车场\n"); printf("2. 车辆离开停车场\n"); printf("3. 退出\n"); int choice; while (1) { printf("请选择要执行的操作:"); scanf("%d", &choice); switch (choice) { case 1: enter(); break; case 2: leave(); break; case 3: exit(0); default: printf("无效的选择!\n"); break; } } } ``` 以上是一个简单的停车场管理系统实现思路和代码片段,你可以根据自己的需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT大鸵鸟

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值