求C++停车场管理系统,价格可议

img


最好明晚8点前能写出来,按照那个要求来写,越详细越好,价格可议

TechWhizKid参考GPT回答:
完整代码:

img


#include <iostream>
#include <vector>
#include <string>
#include <ctime>
#include <fstream>

using namespace std;

class Car {
public:
    string plateNumber; // 车牌号
    string details; // 车辆详细信息
    time_t parkTime; // 停车时间

    Car(string plateNumber, string details)
        : plateNumber(plateNumber), details(details), parkTime(time(0)) {}

    double getParkingTime() {
        return difftime(time(0), parkTime);
    }
};

class ParkingLot {
private:
    vector<Car> cars; // 车辆列表

public:
    void addCar(const Car& car) {
        cars.push_back(car); // 添加车辆
    }

    void deleteCar(const string& plateNumber) {
        for (vector<Car>::iterator it = cars.begin(); it != cars.end(); ++it) {
            if (it->plateNumber == plateNumber) {
                cars.erase(it); // 删除车辆
                break;
            }
        }
    }

    Car* getCar(const string& plateNumber) {
        for (vector<Car>::iterator it = cars.begin(); it != cars.end(); ++it) {
            if (it->plateNumber == plateNumber) {
                return &(*it); // 获取车辆
            }
        }
        return NULL;
    }

    void showCars() {
        for (vector<Car>::iterator it = cars.begin(); it != cars.end(); ++it) {
            Car& car = *it;
            cout << "车牌号:" << car.plateNumber << " 详细信息:" << car.details << " 停车时间:" << car.getParkingTime() << endl; // 显示车辆信息
        }
    }

    void saveToFile(const string& filename) {
        ofstream file(filename.c_str());
        if (file.is_open()) {
            for (vector<Car>::iterator it = cars.begin(); it != cars.end(); ++it) {
                Car& car = *it;
                file << car.plateNumber << " " << car.details << " " << car.parkTime << endl; // 保存车辆信息到文件
            }
            file.close();
            cout << "汽车信息已保存到文件:" << filename << endl;
        } else {
            cout << "无法打开文件:" << filename << endl;
        }
    }
};

class Admin {
private:
    ParkingLot* parkingLot; // 停车场

public:
    Admin(ParkingLot* parkingLot) : parkingLot(parkingLot) {}

    void addCar(const string& plateNumber, const string& details) {
        Car car(plateNumber, details);
        parkingLot->addCar(car); // 添加车辆
        cout << "车辆信息已添加" << endl;
    }

    void deleteCar(const string& plateNumber) {
        parkingLot->deleteCar(plateNumber); // 删除车辆
        cout << "车辆信息已删除" << endl;
    }

    void showCars() {
        parkingLot->showCars(); // 显示车辆信息
    }

    void modifyCar(const string& plateNumber, const string& newDetails) {
        Car* car = parkingLot->getCar(plateNumber);
        if (car != NULL) {
            car->details = newDetails; // 修改车辆信息
            cout << "车辆信息已修改" << endl;
        } else {
            cout << "未找到车辆!" << endl;
        }
    }

    void saveCarsToFile(const string& filename) {
        parkingLot->saveToFile(filename); // 保存车辆信息到文件
    }
};

class User {
private:
    ParkingLot* parkingLot; // 停车场

public:
    User(ParkingLot* parkingLot) : parkingLot(parkingLot) {}

    void showCars() {
        parkingLot->showCars(); // 显示车辆信息
    }

    Car* getCar(const string& plateNumber) {
        return parkingLot->getCar(plateNumber); // 获取车辆
    }
};

int main() {
    ParkingLot parkingLot; // 停车场
    Admin admin(&parkingLot); // 管理员
    User user(&parkingLot); // 用户

    int userType, choice;
    string plateNumber, details;
    do {
        cout << "1. 管理员\n2. 用户\n3. 退出\n请输入用户类型:";
        cin >> userType;
        switch (userType) {
            case 1:
                cout << "1. 添加车辆\n2. 删除车辆\n3. 显示车辆\n4. 修改车辆\n5. 保存车辆信息到文件\n6. 返回主菜单\n请输入选择:";
                cin >> choice;
                switch (choice) {
                    case 1:
                        cout << "请输入车牌号:";
                        cin >> plateNumber;
                        cout << "请输入车辆详细信息:";
                        cin >> details;
                        admin.addCar(plateNumber, details);
                        break;
                    case 2:
                        cout << "请输入车牌号:";
                        cin >> plateNumber;
                        admin.deleteCar(plateNumber);
                        break;
                    case 3:
                        admin.showCars();
                        break;
                    case 4:
                        cout << "请输入车牌号:";
                        cin >> plateNumber;
                        cout << "请输入新的车辆详细信息:";
                        cin >> details;
                        admin.modifyCar(plateNumber, details);
                        break;
                    case 5:
                        admin.saveCarsToFile("car_info.txt");
                        break;
                }
                break;
            case 2:
                cout << "1. 显示车辆\n2. 获取车辆\n3. 返回主菜单\n请输入选择:";
                cin >> choice;
                switch (choice) {
                    case 1:
                        user.showCars();
                        break;
                    case 2:
                        cout << "请输入车牌号:";
                        cin >> plateNumber;
                        Car* car = user.getCar(plateNumber);
                        if (car != NULL) {
                            cout << "车牌号:" << car->plateNumber << " 详细信息:" << car->details << " 停车时间:" << car->getParkingTime() << endl;
                        } else {
                            cout << "未找到车辆!" << endl;
                        }
                        break;
                }
                break;
        }
    } while (userType != 3);
    return 0;
}

该回答引用GPT与博主@晓码自在合作编写:

这里是一份简单的C++停车场管理系统设计:

  1. 结构设计
  • 车辆类:包括车牌号、到达时间、离开时间、停车费用等信息
  • 停车场类:包括车辆列表、收费标准(首两小时免费,之后每小时10元)、总收入等信息
  1. 主要函数
  • 进入停车场:记录车牌号和到达时间,实例化一辆车并添加到车辆列表
  • 离开停车场:根据车牌号找到相应车辆,计算停车时长和费用,更新车辆信息并从列表中移除,更新总收入
  • 显示车辆列表:打印车辆列表中的所有车辆信息
  • 显示总收入:打印停车场的总收入
  1. 示例代码
cpp
#include <string> 
#include <list>
#include <iostream>

using namespace std;

class Vehicle 
{
public:
    string license;      //车牌号
    int arrivalTime;     //到达时间
    int leavingTime;     //离开时间
    double fee;          //停车费用

    Vehicle(string license, int arrivalTime) 
    {
        this->license = license;
        this->arrivalTime = arrivalTime;
        this->leavingTime = 0;
        this->fee = 0;
    }
};

class ParkingLot
{
public:
    list<Vehicle> vehicles;     //车辆列表
    double totalIncome;        //总收入
    int baseTime = 2;          //基本时长,2小时
    int unitTime = 1;          //单位时长,1小时
    double unitFee = 10;       //单位费用,10元

public:
    //进入停车场
    void in(string license, int time) 
    {
        Vehicle v(license, time);
        vehicles.push_back(v);
    }

    //离开停车场
    void out(string license, int time)
    {
        for (Vehicle &v : vehicles) {
            if (v.license == license) {
                int t = time - v.arrivalTime;
                if (t <= baseTime) v.fee = 0;      //未超过基本时长,免费
                else v.fee = unitFee * (t / unitTime);  
                v.leavingTime = time;
                totalIncome += v.fee;       //更新总收入
                vehicles.remove(v);               //从列表中移除
            }
        }
    }
    
    //显示车辆列表
    void displayVehicles() 
    {
        for (Vehicle v : vehicles) {
            cout << "车牌号:" << v.license << " 到达时间:" << v.arrivalTime 
                 << " 离开时间:" << v.leavingTime << " 停车费用:" << v.fee << endl;
        }
    }
    
    //显示总收入
    double getTotalIncome() {
        return totalIncome; 
    }
};

int main() {
    ParkingLot *parkingLot = new ParkingLot();
    
    //车辆1进入
    parkingLot->in("浙A12345", 10);  
    
    //车辆2进入
    parkingLot->in("浙B12345", 12);  
    
    //车辆1离开
    parkingLot->out("浙A12345", 15);
    
    //显示车辆列表
    parkingLot->displayVehicles();
    
    //显示总收入
    cout << "总收入:" << parkingLot->getTotalIncome() << "元" << endl;
}

以上就是一个简单的C++停车场管理系统设计和示例。系统有结构清晰,主要功能包括进入、离开和收费功能,可以储存车辆信息和计算总收入。如果需要当前车辆列表和实时总收入等,可以相应增加显示相关信息的函数。

希望这个简单案例能给你的项目设计提供一定参考。