广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现停车场管理系统的示例代码
  • 332
分享到

C++实现停车场管理系统的示例代码

C++实现停车场管理系统C++停车场管理系统C++管理系统 2023-05-15 17:05:51 332人浏览 八月长安
摘要

目录一、案例需求描述1.1、汽车信息模块1.2、普通用户模块1.3、管理员用户模块二、案例分析三、案例代码实现3.1、汽车信息类及方法实现3.2、普通用户类及方法实现3.3、管理员用

一、案例需求描述

停车场管理系统就是模拟停车场进行车辆管理的系统,该系统分为汽车信息模块,用户使用模块和管理员用户模块,各模块功能如下所示:

1.1、汽车信息模块

添加汽车信息:添加汽车属性。

删除汽车信息:输入停车场中存在的车牌号,删除汽车信息。

查找汽车信息:输入停车场存在的车牌号,显示汽车详细信息。

修改汽车信息:输入停车场内存在的车牌号,修改汽车属性信息。

停车时长统计:显示汽车在停车场中停留的时间和车辆总数。

停车场信息显示:显示停车场所有汽车的属性信息。

汽车信息保存:将汽车信息保存到本地文件中。

1.2、普通用户模块

可以查询、显示所有汽车信息及停车费信息,另外还包含停车时长统计与退出普通用户登录功能。由于是多次操作,因此需要有循环判断功能,这种情况多使用while嵌套switch case语句实现。

1.3、管理员用户模块

此模块具有普通用户模块的所有功能,此外还应有增、删、改的功能。

二、案例分析

通过案例描述我们得到了非常清晰的模块信息,因此在设计类时应该包含普通用户类、管理员用户类、汽车信息类。

大致思路:

在汽车信息类中实现基本功能并封装起来,以便后续调用。

在普通用户类中定义菜单功能,通过键入不同数字实现不同功能。

在管理员用户类中定义菜单功能,通过键入不同数字实现不同功能。

三、案例代码实现

这里我采用分文件编写的方式,建立user.h、admin.h、car.h及对应的三个.cpp文件和main.cpp文件,在main里面循环调用user和admin的方法就能实现停车场管理系统。

3.1、汽车信息类及方法实现

car.h

#pragma once // 防止头文件被重复调用
#include<string>
#include<ctime>
using namespace std;

class Car {
private:
	string carNum; // 汽车编号
	string carType; // 汽车型号
	string color; // 汽车颜色
	time_t inTime; // 汽车停车时间点
public:
	void addCar();  // 下面四行对应增删改查
	void delCar();
	void modCar();
	void findCar();
	void timeAmount(); // 计算停车时长并统计汽车总数
	void showInfor(); // 显示车辆信息(读文件)
	void saveInfor(); // 保存车辆信息(写文件)		
};

car.cpp

#include"car.h"
#include<fstream> // 读写操作
#include<iOStream>
#include<iomanip> // IO流控制头文件,类似C里的格式化输出
using namespace std;

void Car::addCar() {
	time_t _time; // 定义时间变量,秒数,调用time()获取
	while (1) {
	AA:		cout << "请输入车牌号:";
		cin >> carNum;
		// 判断文件中是否已存在相同车牌号
		ifstream ifs("carData.txt", ios::in); // 读文件
		if (ifs) {
			char buf[1024];
			string strs[20];
			int index = 0; // 标识数组索引
			while (!ifs.eof()) { // 读取文件直到末尾
				ifs.getline(buf, 100); // 每次读取一行数据,放入buf数组 注:第二个参数为字符数,缓冲区尽量大,否则循环会异常结束
				strs[index++] = buf[0]; // buf[0]为车牌号,存入strs数组,索引自增
			}
			// 遍历strs数组,auto 自动推导数据类型,这里等价于 string
			for (auto& num : strs) {
				// 判断输入车牌号是否与文件里重复
				if (num == carNum) {
					cout << "车牌号重复!" << endl;
					Goto AA; // 重复后重新输入车牌号
				}
			}
		}
		// 车牌号不重复继续加下来的输入
		cout << "请输入车的种类:";
		cin >> carType;
		cout << "请出入车的颜色:";
		cin >> color;
		inTime = time(&_time); // 记录停车时间
		// 保存新增车辆信息
		saveInfor();
		char ch; 
		cout << "\t是否继续?(y/n)"; // 判断是否继续输入,\t 制表符,通常八个空格
		cin >> ch;
		if (ch == 'n' || ch == 'N') {
			break;
		}
	}
}
void Car::delCar() {
	// 读文件
	ifstream carData("carData.txt", ios::in); 
	// 创建文件写入流,缓冲文件
	ofstream outData("tempCarData.txt", ios::out);
	if (!outData || !carData) {
		cout << "文件打开失败!" << endl;
		return;
	}
	string carId, name, str;
	bool flag = true;
	cout << "请输入要删除的车牌号:";
	cin >> carId;
	// 读取文件第一个字段(车牌号) >> 遇空格结束读取
	while (carData >> name) {
		getline(carData,str); // 将该行数据读取到 str
		// 如果相同,输出要删除的车辆信息:颜色,型号,停车时间
		if (name == carId) {
			cout << "要删除的车辆信息:" << endl << str << endl;
			flag = false;
			break;
		}
		// 如果不相同,将车辆信息写入到temp,否则舍弃该行
		outData << name << " " << str << endl;
	}
	if (flag) cout << "该车牌号不存在" << endl;
	else {
		while (getline(carData, str)) { // 继续按行读取,此时第一行
			outData << str << endl; // 写入到temp
		}
		carData.close();
		outData.close();
		// 读取 temp,写入 carData
		ifstream in("tempCarData.txt", ios::in);
		ofstream out("carData.txt", ios::out);
		if (!in || !out) {
			cout << "文件读取失败!" << endl;
			return;
		}
		else {
			while (getline(in, str)) { // 按行读取,写入
				out << str << endl;
			}
		}
		in.close();
		out.close();
	}
}
void Car::modCar() {
	string chepai1, chepai2, str;
	time_t  time1;
	int i = 1;
	cout << "请输入你要修改的车辆的车牌号" << endl;
	cin >> chepai1;
	ifstream indata("carData.txt", ios::in);
	ofstream outdata("tempCarData.txt", ios::out);
	if (!indata || !outdata)
	{
		cerr << "文件打开错误" << endl;
		exit(1);
	}
	while (indata >> chepai2)
	{
		indata >> carType >> color >> inTime; // 读取该行剩余元素
		if (chepai1 == chepai2)
		{
			i = 0;
			cout << "已找到所要修改的车辆" << endl;
			cout << "修改后的车牌号" << endl;
			cin >> carNum;
			cout << "修改后的车辆型号" << endl;
			cin >> carType;
			cout << "修改后的车辆颜色" << endl;
			cin >> color;
			inTime = time(&time1);
			// 写入carData.txt
			outdata << carNum << " " << carType << "  " << color << "  " << inTime << endl;
			break;
		}
		// 车牌号不同,将车辆信息存到temp
		outdata << chepai2 << " " << carType << "  " << color << "  " << inTime << endl;
	}
	if (i) { 
		cout << "停车场中没有找到要修改的车辆" << endl; 
	}
	outdata.close();
	indata.close();
	ifstream in("tempCarData.txt", ios::in);
	ofstream out("carData.txt", ios::out);
	if (!in || !out)
	{
		cout << "文件打开错误" << endl;
		exit(1);
	}
	while (getline(in, str))
	{
		out << str << endl;
	}
	in.close();
	out.close();
}
void Car::findCar() {
	ifstream carData("carData.txt", ios::in);
	if (!carData)
	{
		cout << "文件打开失败" << endl;
		return;
	}
	else {
		string carId;
		time_t _time, t1;
		bool flag = true;
		cout << "请输入要查找的车牌号" << endl;
		cin >> carId;
		while (carData >> carNum) // 读取车牌号
		{
			carData >> carType >> color >> inTime;
			t1 = time(&_time); // 获取系统当前时间
			if (carId == carNum)
			{
				flag = false;
				break;
			}
		}
		if (flag) {
			cout << "未找到该车辆信息!" << endl;
		}
		else {
			cout << "车牌号" << carNum <<" "<<"车的型号:" << carType <<" " <<
			" 车的颜色:" << color << " "<<"停车时长:" << (t1 - inTime) << "秒" 
				<<" "<< "停车费 " << (t1 - inTime) * 0.05 << "元" << endl;
		}
		carData.close();
	}
}
void Car::timeAmount() {
	time_t it, time1;
	int c1 = 0, c2 = 0;
	ifstream indata("carData.txt", ios::in);
	if (!indata)
	{
		cerr << "文件打开失败" << endl;
		exit(1);
	}
	while (indata >> carNum)
	{
		indata >> carType >> color >> inTime;
		it = time(&time1);
		if ((it - inTime) / (60 * 60 * 24) >= 24)
		{
			c1++;
		}
		else c2++;
	}
	cout << "车辆总数是:" << c1 + c2 << endl;
	cout << "其中停放超过24小时的有" << c1 << "辆" << endl;
	cout << "其中停放不超过24小时的有" << c2 << "辆" << endl;
	indata.close();
}
void Car::showInfor() {
	int i = 1;
	string chepai;
	time_t it, time1;
	ifstream indata("carData.txt", ios::in);
	if (!indata)
	{
		cerr << "文件打开错误" << endl;
		exit(1);
	}
	cout << "停车场中所有汽车信息如下所示:" << endl;
	cout << "-----------------------------" << endl;
	while (indata >> chepai)
	{
		indata >> carType >> color >> inTime;
		it = time(&time1);
		cout << "第" << i << "辆车信息如下" << endl;
		cout << "车牌号" << chepai << "  车的型号:" << carType << "  车的颜色:" << color 
			<< "  停车时间" << (it - inTime) << "秒" << 
			"  停车费 " << (it - inTime) * 0.05 << "元" << endl;
		i++;
	}
	indata.close();
}
void Car::saveInfor() {
	ofstream outData("carData.txt", ios::app); // app 追加方式写文件,即在文件末尾添加
	if (!outData) {
		cout << "文件打开失败!" << endl;
		return;
	}
	else {
		// 将新增车辆信息写入carData
		outData << carNum << " " << carType << " " << color << " " << inTime << endl;
	}
	outData.close();
}

3.2、普通用户类及方法实现

user.h

#pragma once
#include<string>
using namespace std;

// 普通用户类,只能查看、统计、显示车辆,无法实现增删改
class User {
public:
	void checkCar(); // 普通用户登录菜单
};

user.cpp

#include<iostream>
#include<windows.h>
#include"user.h"
#include"car.h"
using namespace std;
void User::checkCar() {
	Car car;
	while (1) {
		system("cls"); // 清空屏幕
		cout << "1.显示车辆状况" << endl;
		cout << "2.查询车辆信息" << endl;
		cout << "3.统计车辆" << endl;
		cout << "4.退出普通用户" << endl;
		
		int c;
		cout << "输入要执行的操作:";
		cin >> c;
		switch (c) {
			case 1: car.showInfor(); break;
			case 2: car.findCar(); break;
			case 3: car.timeAmount(); break;
			case 4: return;
			default: cout << "请输入正确的操作" << endl;
		}
		system("pause");
	}
}

3.3、管理员用户类及方法实现

admin.h

#pragma once // 避免同一个头文件被包含多次
#include<string>
#include"user.h"
using namespace std;

// 管理员类,公有继承普通用户类,可以添加,修改,删除

class Admin:public User {
public:
	void Manager(); // 显示管理员登录的菜单
};

admin.cpp

#include"admin.h"
#include"car.h"
#include<iostream>
#include<fstream>
#include<string>
using namespace std;

void Admin::Manager() {
	Car car;
	while (1) {
		system("cls"); // 清空屏幕
		cout << "1.增加车辆" << endl;
		cout << "2.显示所有车辆信息" << endl;
		cout << "3.查询" << endl;
		cout << "4.修改" << endl;
		cout << "5.删除" << endl;
		cout << "6.统计" << endl;
		cout << "7.退出管理用户" << endl;
		int choice;
		cout << "请输入要执行的操作:";
		cin >> choice;
		switch (choice) {
			case 1: car.addCar(); break;
			case 2: car.showInfor(); break;
			case 3: car.findCar(); break;
			case 4: car.modCar(); break;
			case 5: car.delCar(); break;
			case 6: car.timeAmount(); break;
			case 7: return;
			default: cout << "输入错误!" << endl; 
		}
		system("pause");
	}
}

3.4、主函数调用情况

#include"user.h"
#include"admin.h"
#include<iostream>
using namespace std;
int main() {
	User user; // 普通用户对象
	Admin admin; // 管理员对象
	int choice;
	while (1) {
		system("cls");
		cout << "1.普通用户登录" << endl;
		cout << "2.管理员登录" << endl;
		cout << "3.退出系统" << endl;
		cout << "请输入要执行的操作:" << endl;
		cin >> choice;
		switch (choice) {
			case 1: user.checkCar(); break;
			case 2: admin.Manager(); break;
			case 3: exit(0); // 退出系统
			default: cout << "请输入正确的操作" << endl;
		}
		system("pause");
	}
	return 0;
}

四、运行界面截图

以上就是c++实现停车场管理系统的示例代码的详细内容,更多关于C++停车场管理系统的资料请关注编程网其它相关文章!

--结束END--

本文标题: C++实现停车场管理系统的示例代码

本文链接: https://www.lsjlt.com/news/209368.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现停车场管理系统的示例代码
    目录一、案例需求描述1.1、汽车信息模块1.2、普通用户模块1.3、管理员用户模块二、案例分析三、案例代码实现3.1、汽车信息类及方法实现3.2、普通用户类及方法实现3.3、管理员用...
    99+
    2023-05-15
    C++实现停车场管理系统 C++停车场管理系统 C++管理系统
  • C++如何实现停车场管理系统
    本文小编为大家详细介绍“C++如何实现停车场管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何实现停车场管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、案例需求描述停车场管理系统就是模拟...
    99+
    2023-07-06
  • python实现停车场管理系统
    目录一、需求二、代码2.1 初始化模块__init__.py2.2 主程序模块main.py2.3 停车管理模块ParkingManagementSystem.py2.4 车元素模块...
    99+
    2022-11-11
  • C语言实现简易停车场管理系统
    本文实例为大家分享了C语言实现停车场管理系统的具体代码,供大家参考,具体内容如下 问题描述: 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按...
    99+
    2022-11-13
  • C语言实现简单的停车场管理系统
    本文实例为大家分享了C语言实现简单停车场管理系统的具体代码,供大家参考,具体内容如下 1.问题描述 1)有一个两层的停车场,每层有6个车位,当第一层车位停满后才允 许使用第二层(停车...
    99+
    2022-11-13
  • C语言实现停车管理系统的代码怎么写
    本篇内容主要讲解“C语言实现停车管理系统的代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言实现停车管理系统的代码怎么写”吧!设计题目设停车场是一个可以停放n辆汽车的南北方向的狭长通...
    99+
    2023-06-29
  • C/C++利用栈和队列实现停车场管理系统
    目录纯c语言版包含的功能运行效果源码c++版包含的功能运行效果源码纯c语言版 包含的功能 1、停车功能 如果停车场满,能够暂时存放到便道内 2、开走车功能 将指定车开走后打印收据,便...
    99+
    2022-11-13
  • C语言实现停车管理系统
    本题为大家分享了C语言实现停车管理系统的具体代码,供大家参考,具体内容如下 设计题目 设停车场是一个可以停放n辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按...
    99+
    2022-11-13
  • 怎么用C语言实现简易停车场管理系统
    本篇内容主要讲解“怎么用C语言实现简易停车场管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现简易停车场管理系统”吧!问题描述:设停车场内只有一个可停放n辆汽车的狭长通道,且...
    99+
    2023-06-29
  • 如何用C语言实现简单的停车场管理系统
    本篇内容主要讲解“如何用C语言实现简单的停车场管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用C语言实现简单的停车场管理系统”吧!1.问题描述1)有一个两层的停车场,每层有6个车位,...
    99+
    2023-06-29
  • C语言实现职工工资管理系统的示例代码
    目录一、需求分析二、项目环境2.1、项目创建过程2.2、向项目添加头文件与源文件三、职工工资管理系统模块功能3.1、系统总体设计框图3.2、系统模块总体设计3.3、设计系统菜单功能3...
    99+
    2022-11-13
  • C++图书管理系统程序的示例代码
    这篇文章主要为大家展示了“C++图书管理系统程序的示例代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++图书管理系统程序的示例代码”这篇文章吧。具体内容如下c++综合实验,功能基本都实现了...
    99+
    2023-06-29
  • JavaSE实现图书管理系统的示例代码
    目录前言1. 项目需求2. 实现思路3. 代码实现包的设计book包operations包user包4. 实现效果前言 这篇博客是在学习了一部分Java基础语法之后的练习项目,通过这...
    99+
    2022-11-13
  • Java实现图书管理系统的示例代码
    目录一、功能介绍二、Main包三、User包1. User2. AdminUser3. NormalUser四、book包1. Book2. BookList五、operations...
    99+
    2022-11-13
  • Python实现GUI学生管理系统的示例代码
    目录序 言代码解析一、登录页面二、主页面显示三 、页面显示四、查询数据五、删除数据六、修改数据七、关于部分八、数据保存,保存信息序 言 哈喽兄弟们,好久不见!最近实在太忙了,所以又双...
    99+
    2022-11-13
  • python 管理系统实现mysql交互的示例代码
    没配置的可以看一下我上一篇 地址 开启小皮 数据库text 数据库表 student 字段 student_no name age sex 效果图如下 增 删 查 改 ...
    99+
    2022-11-12
  • C#实现启动项管理的示例代码
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-15
    C#启动项管理 C# 启动项
  • C/C++实现获取系统时间的示例代码
    目录概述示例易用性封装概述 C 标准库提供了 time() 函数与 localtime() 函数可以获取到当前系统的日历时间,但 time() 函数精度只能到秒级,如果需要更高精度的...
    99+
    2022-12-20
    C++获取系统时间 C++ 系统时间 C++获取时间
  • C语言实现2D赛车游戏的示例代码
    目录一、简介二、如何建立一个地图包三、关于碰撞图的绘制四、游戏时的说明五、如何更好地绘制赛场图与碰撞图六、实现代码一、简介 此游戏是《2D 赛车》的”魔改版“...
    99+
    2022-12-28
    C语言实现2D赛车游戏 C语言 赛车游戏 C语言 游戏
  • Python实现学生信息管理系统的示例代码
    目录前言正文一、新手小白的福利——零基础学生信息管理系统二、GUI界面化版本——Tkinter学生信息管理系统前言 夏天是用来告别的季...
    99+
    2023-02-15
    Python实现学生信息管理系统 Python学生信息管理系统 Python信息管理系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作