C++实现停车场管理系统的完整攻略
目录
- 简介
- 功能需求
- 设计思路
- 代码实现
- 示例说明
- 总结
1. 简介
停车场管理系统是一种常见的用于管理停车场的软件系统,通常包括车辆进入、出场、停车位置管理等多个功能。本文将介绍如何使用C++语言实现一个简单的停车场管理系统。
2. 功能需求
本次实验中,我们将实现以下功能:
- 停车:记录车辆入场时间和车牌号,并将车辆信息存储到停车场内。
- 取车:根据车牌号查询停车场内的车辆信息,并计算出停车费用。
- 显示停车场内的车辆信息:以列表的形式展示停车场内所有车辆的信息。
3. 设计思路
本系统采用基于面向对象的编程思想来设计,主要有以下几个类:
- Car:车辆类,包含车牌号和入场时间属性,以及计算停车费用的方法。
- ParkingLot:停车场类,为车辆提供停车和取车功能,以及存储车辆信息的容器。
- ParkingSystem:停车场管理系统,主要用于用户界面的交互和显示停车场内车辆信息。
主要操作流程如下:
- 用户输入指令,程序根据指令调用ParkingSystem类中的方法实现相应功能。
- ParkingSystem类中的方法调用ParkingLot类中的方法,完成对停车场内车辆信息的存取、计算停车费用等操作。
- 通过终端输出展示停车场内车辆信息等结果。
4. 代码实现
下面是各个类的具体实现代码,其中包含了类的声明和定义。
Car类
class Car {
public:
Car(string plateNumber, time_t enterTime);
string getPlateNumber() const;
time_t getEnterTime() const;
int getCost(const time_t& endTime) const;
private:
string plateNumber;
time_t enterTime;
};
Car::Car(string plateNumber, time_t enterTime)
: plateNumber(plateNumber)
, enterTime(enterTime) { }
string Car::getPlateNumber() const {
return plateNumber;
}
time_t Car::getEnterTime() const {
return enterTime;
}
int Car::getCost(const time_t& endTime) const {
int seconds = (int)difftime(endTime, enterTime);
int minutes = seconds / 60;
int hours = minutes / 60;
if (minutes % 60 > 0) {
hours++;
}
int cost = hours * 5; // 停车费用为每小时5元
return cost;
}
ParkingLot类
class ParkingLot {
public:
bool park(Car car);
Car take(string plateNumber, time_t endTime);
void display() const;
private:
vector<Car> cars;
};
bool ParkingLot::park(Car car) {
cars.push_back(car);
return true;
}
Car ParkingLot::take(string plateNumber, time_t endTime) {
Car result("", 0);
int index = -1;
for (int i = 0; i < (int)cars.size(); ++i) {
if (cars[i].getPlateNumber() == plateNumber) {
index = i;
break;
}
}
if (index == -1) {
return result;
}
result = cars[index];
cars.erase(cars.begin() + index);
return result;
}
void ParkingLot::display() const {
cout << "Parking Lot:" << endl;
for (const Car& car : cars) {
cout << "Plate Number: " << car.getPlateNumber()
<< ", Enter Time: " << ctime(&(car.getEnterTime()));
}
}
ParkingSystem类
class ParkingSystem {
public:
void run();
private:
ParkingLot parkingLot;
void displayMenu() const;
time_t getCurrentTime() const;
};
void ParkingSystem::run() {
while (true) {
displayMenu();
char choice;
cin >> choice;
switch (choice) {
case '1': {
string plateNumber;
cout << "Enter Plate Number: ";
cin >> plateNumber;
Car car(plateNumber, getCurrentTime());
if (parkingLot.park(car)) {
cout << "Park Successfully!" << endl;
} else {
cout << "Park Failed!" << endl;
}
break;
}
case '2': {
string plateNumber;
cout << "Enter Plate Number: ";
cin >> plateNumber;
Car car = parkingLot.take(plateNumber, getCurrentTime());
if (car.getPlateNumber() != "") {
int cost = car.getCost(getCurrentTime());
cout << "Take Successfully! Cost: " << cost << endl;
} else {
cout << "Take Failed! The Plate Number Not Exists!" << endl;
}
break;
}
case '3': {
parkingLot.display();
break;
}
case 'x':
case 'X': {
cout << "Exit!" << endl;
return;
}
default: {
cout << "Invalid Input! Please Try again!" << endl;
break;
}
}
}
}
void ParkingSystem::displayMenu() const {
cout << "<< Parking System >>" << endl;
cout << "1. Park" << endl;
cout << "2. Take" << endl;
cout << "3. Display" << endl;
cout << "x. Exit" << endl;
}
time_t ParkingSystem::getCurrentTime() const {
return time(nullptr);
}
5. 示例说明
下面是一些示例说明,展示了系统如何处理用户的输入以及相关操作的执行结果。
示例1
进入系统后,用户选择将车停入车场,在提示框中输入车牌号码(此处以“京A88888”为例),系统会显示停入成功,如下所示:
<< Parking System >>
1. Park
2. Take
3. Display
x. Exit
Enter Your Choice: 1
Enter Plate Number: 京A88888
Park Successfully!
此时通过调用 ParkingLot::display
方法,可以看到停车场中现在停有1辆车,如下所示:
Parking Lot:
Plate Number: 京A88888, Enter Time: Sat Oct 2 13:59:40 2021
示例2
进入系统后,用户选择从车场中取出车,在提示框中输入车牌号码(例如:K12345),如果车场中存在该车辆信息,则系统计算出停车费用(按照每小时5元计算),并输出“取车成功,费用xxx元”,如下所示:
<< Parking System >>
1. Park
2. Take
3. Display
x. Exit
Enter Your Choice: 2
Enter Plate Number: K12345
Take Successfully! Cost: 10
若该车牌号码不存在,则提示“取车失败,该车牌号码不存在”。
6. 总结
C++实现停车场管理系统,主要使用了面向对象的编程思想,以类的形式组织各种功能,并通过类间的调用来完成停车、取车和显示停车场信息的功能。在实现过程中,需要考虑车辆信息的存储和费用的计算,同时还需要注意输入格式的检查和错误的提示。通过本次实验,我们深入理解了C++的面向对象编程基础,并掌握了使用C++实现系统的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现停车场管理系统 - Python技术站