• List item一个停车场管理系统,包括管理员和用户两种角色的功能。

  • List item代码开始部分定义了一个车辆类Car,包含车牌号、车辆详细信息和停车时间等属性,并提供了获取停车时长的方法。

  • List item接下来定义了停车场类ParkingLot,其中私有属性为车辆列表cars。它包含添加车辆、删除车辆、获取车辆、获取指定车辆停车时长、计算平均停车时长、显示车辆信息和将车辆信息保存到文件等方法。

  • List item然后定义了管理员类Admin,它拥有一个停车场对象,并通过构造函数进行初始化。管理员可以添加车辆、删除车辆、显示车辆信息、修改车辆信息和将车辆信息保存到文件。

  • List item接着定义了用户类User,也拥有一个停车场对象,并通过构造函数进行初始化。用户可以显示车辆信息、获取指定车辆停车时长和获取车辆对象。

  • List item最后,在main函数中创建了停车场、管理员和用户对象。通过用户输入选择不同的用户类型和操作,进行相应的功能调用,直到用户选择退出。

  • List item这段代码实现了一个简单的停车场管理系统,提供了基本的车辆管理功能,包括添加、删除、修改、显示和保存车辆信息等。

#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;}double getParkingTime(const string& plateNumber) {Car* car = getCar(plateNumber);if (car != NULL) {return car->getParkingTime(); // 获取指定车辆的停车时长}return 0.0;}double averageParkingTime() {double total = 0;int count = 0;for (vector<Car>::iterator it = cars.begin(); it != cars.end(); ++it) {total += it->getParkingTime();count++;}return count > 0 ? total / count : 0;}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(); // 显示车辆信息}double getParkingTime(const string& plateNumber) {return parkingLot->getParkingTime(plateNumber); // 获取指定车辆的停车时长}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;
}

一个停车场管理系统(C++)相关推荐

  1. 停车场管理系统 java_使用java编写一个停车场管理系统

    使用java编写一个停车场管理系统 发布时间:2020-11-30 16:00:28 来源:亿速云 阅读:145 作者:Leah 这篇文章给大家介绍使用java编写一个停车场管理系统,内容非常详细,感 ...

  2. 停车场管理系统c语言程序,c语言程序设计 停车场管理系统 停车场有1-20个车位号,设计一个停车场管理系统,实现停车场管理...

    #include #include #include #include #define max 3 #define price 1 int b=1; typedef struct { int day; ...

  3. 用C语言写一个停车场管理系统代码

    #define _CRT_SECURE_NO_WARNINGS//visual stduio添加对scanf的信任 #include<stdio.h> #include <stdli ...

  4. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  5. 停车场管理系统(一)

    第二章 算法的需求分析 2.1 需求分析的编写目的 本需求分析的目的是规范化本软件的编写,整合本软件的基本结构和所需要实现的基本功能,旨在于推进软件开发的进度,便于对软件开发过程中的控制与管理,同时提 ...

  6. java数据结构停车场管理系统_《数据结构》实验设计报告-停车场管理系统

    <<数据结构>实验设计报告-停车场管理系统>由会员分享,可在线阅读,更多相关<<数据结构>实验设计报告-停车场管理系统(28页珍藏版)>请在人人文库网上 ...

  7. java数据结构停车场管理系统_数据结构设计-停车场管理系统

    目  录 摘要及关键词 1 1 问题描述 1 1.1题目描述 1 1.2任务要求 1 2 设计思想及其目的 2 2.1设计思想 2 2.2设计目的 2 3 系统具备的功能 2 3.1 简体中文控制台界 ...

  8. C++课程设计——停车场管理系统

    停车场管理系统课程设计报告 1. 需求分析 2. 总体设计 3. 详细设计 4. 编码 5. 测试的步骤与内容 6. 总结 7. 参考文献 1. 需求分析 1.1 需求概述 设计一个停车场管理系统,使 ...

  9. 怒打1300行代码,一个文件实现停车场管理系统,C++语言代码挑战

    停车场具有实时功能.话不多说直接上代码,虽然有1300行左右,但是放在DevC++上直接就能跑.C++如果你已经学到位,即使1300行你也可以理解上去. #include<stdlib.h> ...

最新文章

  1. OpenFeign服务接口调用
  2. docker部署elasticsearch-+-Kibana(6-8)-+-SpringBoot-2-1-6
  3. 动手开发自己的第一个 composer 包
  4. 解决SpringBoot更新数据到MySQL乱码问题
  5. SD--关于价格过程的确定
  6. 在alv grid中的列中设置icon图标
  7. navicat使用查询向表中插入一行记录_SQL--每日一解------Bulk Insert 快速插入
  8. python编程的条件语句_自学Python编程【第五节】if条件语句
  9. 【目录】 网络瑞士军刀-netcat的秘诀
  10. Windows 7 硬盘安装方法
  11. Mustache.js使用笔记(内容属于转载总结)
  12. 第三十六期:人工智能统计调查:86%的消费者更喜欢人工客服
  13. 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间
  14. Kubernetes 小白学习笔记(33)--kubernetes云原生应用开发-总结
  15. [BX]和loop指令06 - 零基础入门学习汇编语言28
  16. 传感器基础结构与通信原理
  17. distpicker.js 三级联动,修改地址时设置默认值
  18. 接待员如何向客人upsell_前厅部接待员办理入住操作步骤
  19. 使用 admin 管理后台
  20. Android仿学习强国填空题考试界面

热门文章

  1. 如何使用Docker搭建Gitlab私有库
  2. C语言|统计字符串中英文字符个数
  3. 三星i9103入手体验
  4. DW_apb_uart (2)
  5. flag!flag!flag!flag!flag!flag!flag!flag!flag!flag!flag!flag!
  6. 怎样在网上赚钱?这几种都可以在网上赚到钱!
  7. 如何在微信公众号中加入数学公式,及用markdown语法?
  8. java 计算百分数方法
  9. week11 Open3D点云数据处理
  10. web前端日常更新 7.25