GPT答: |
7i24.cn
|
;
// Car.h
#include <iostream>
#include <string>
#include <time.h>
class Car {
private:
std::string number;// 车牌号
std::string model; // 车型
time_t enterTime; // 入场时间
time_t quitTime; // 出场时间
double price; // 每小时收费价
double cost; // 费用
public:
Car();
~Car();
const std::string& getNumber() const;
void setNumber(const std::string &number);
const std::string& getModel() const;
void setModel(const std::string &model);
time_t getEnterTime() const;
void setEnterTime(time_t enterTime);
time_t getQuitTime() const;
void setQuitTime(time_t quitTime);
double getPrice() const;
void setPrice(double price);
double getCost() const;
void setCost(double cost);
};
// Car.cpp
#include "Car.h"
Car::Car()
: number(std::string()),
model(std::string()),
enterTime(time(0)),
quitTime(time(0)),
price(0.0),
cost(0.0)
{
}
Car::~Car()
{
}
const std::string &Car::getNumber() const
{
return number;
}
void Car::setNumber(const std::string &number)
{
Car::number = number;
}
const std::string &Car::getModel() const
{
return model;
}
void Car::setModel(const std::string &model)
{
Car::model = model;
}
time_t Car::getEnterTime() const
{
return enterTime;
}
void Car::setEnterTime(time_t enterTime)
{
Car::enterTime = enterTime;
}
time_t Car::getQuitTime() const
{
return quitTime;
}
void Car::setQuitTime(time_t quitTime)
{
Car::quitTime = quitTime;
}
double Car::getPrice() const
{
return price;
}
void Car::setPrice(double price)
{
Car::price = price;
}
double Car::getCost() const
{
return cost;
}
void Car::setCost(double cost)
{
Car::cost = cost;
}
// CarManager.h
#include <iostream>
#include <string>
#include <map>
#include "Car.h"
class CarManager {
private:
std::string id; // 管理员id
std::string key; // 管理员密码
std::map<std::string, Car> cars; // 停车场车辆数据
public:
CarManager();
~CarManager();
const std::string& getId() const;
void setId(const std::string &id);
const std::string& getKey() const;
void setKey(const std::string &key);
bool CarIn(const std::string& number, const std::string& model); // 车辆入场
bool CarOut(const std::string& number); // 车辆出场
Car getCar(const std::string& number) const; // 获取车辆信息
void print() const; // 打印全部车辆信息
int carNumber() const; // 统计停车场车位数
bool isFull() const; // 停车场是否已满
double totalCost() const; // 管理员账户累计收费
};
// CarManager.cpp
#include "CarManager.h"
CarManager::CarManager()
: id(std::string()),
key(std::string())
{
}
CarManager::~CarManager()
{
}
const std::string &CarManager::getId() const
{
return id;
}
void CarManager::setId(const std::string &id)
{
CarManager::id = id;
}
const std::string &CarManager::getKey() const
{
return key;
}
void CarManager::setKey(const std::string &key)
{
CarManager::key = key;
}
bool CarManager::CarIn(const std::string& number, const std::string& model)
{
if(isFull())
std::cout << "停车场已满, 请移至其他位置!" << std::endl;
else
{
// 车牌号去重
if(cars.find(number) != cars.end())
return false;
else
{
// 新建Car类对象
Car car;
car.setNumber(number);
car.setModel(model);
car.setEnterTime(time(0));
cars.insert({number, car});
return true;
}
}
return false;
}
bool CarManager::CarOut(const std::string& number)
{
auto iter = cars.find(number);
if(iter != cars.end())
{
time_t enter = iter->second.getEnterTime();
time_t quit = time(0);
// 计算停车时间单位(H)
double hours = difftime(quit,enter)/(60 * 60);
// 计算账单
double cost = (iter->second).getPrice() * hours;
(iter->second).setCost(cost);
// 设置出场时间
(iter->second).setQuitTime(quit);
return true;
}
else
return false;
}
Car CarManager::getCar(const std::string& number) const
{
auto iter = cars.find(number);
if(iter != cars.end())
return iter->second;
else
return Car();
}
void CarManager::print() const
{
std::cout<<"车牌号\t车型\t入场时间\t出场时间\t费用"<<std::endl;
for(auto iter = cars.begin(); iter != cars.end(); iter++)
{
std::cout << iter->second.getNumber() << "\t"
<< iter->second.getModel() <<"\t"
<< ctime(&(iter->second.getEnterTime()))
<< ctime(&(iter->second.getQuitTime()))
<< iter->second.getCost() << std::endl;
}
}
int CarManager::carNumber() const
{
return cars.size();
}
bool CarManager::isFull() const
{
return carNumber() >= 100;
}
double CarManager::totalCost() const
{
double sum = 0.0;
for(auto it : cars)
sum += it.second.getCost();
return sum;
}
|