基于搜索二叉樹的停車收費管理系統

系統效果:
錄入汽車信息

查看汽車信息

收費信息查看

查詢車庫車輛

?

代碼展示:

//SearchBinaryTree.h
#pragma once
#include<iostream>
#include<string>
#include<time.h>
#include<Windows.h>
using namespace std;template<class K, class V>
struct BSTNode
{K _key;V _value;BSTNode<K, V>* _left;BSTNode<K, V>* _right;BSTNode(const K& key,const V& value):_key(key),_value(value),_left(nullptr),_right(nullptr){}
};template<class K, class V>
class BSTree
{typedef BSTNode<K, V> Node;
public:BSTree():_root(nullptr){}~BSTree(){Destroy(_root);_root = nullptr;}bool Insert(const K& key, const V& value);bool Erase(const K& key);Node* Find(const K& key){{Node* cur = _root;while (cur){if (cur->_key < key){cur = cur->_right;}else if (cur->_key > key){cur = cur->_left;}else{return cur;}}return nullptr;}}void Destroy(Node* root){if (root == nullptr)return;Destroy(root->_left);Destroy(root->_right);delete root;}void InOeder(){_InOeder(_root);}private:void _InOeder(Node* root);private:Node* _root;
};template<class K, class V>
inline bool BSTree<K, V>::Insert(const K& key, const V& value)
{if (_root == nullptr){_root = new Node(key, value);return true;}Node* parent = nullptr;Node* cur = _root;while (cur){if (cur->_key < key){parent = cur;cur = cur->_right;}else if (cur->_key > key){parent = cur;cur = cur->_left;}else{return false;}}cur = new Node(key, value);if (parent->_key > cur->_key){parent->_left = cur;}else if (parent->_key < cur->_key){parent->_right = cur;}return true;
}template<class K, class V>
inline bool BSTree<K, V>::Erase(const K& key)
{Node* cur = _root;Node* parent = nullptr;while (cur){if (cur->_key < key){parent = cur;cur = cur->_right;}else if (cur->_key > key){parent = cur;cur = cur->_left;}else{if (cur->_left = nullptr){if (parent == nullptr){_root = cur->_right;}else{if (parent->_left == cur){parent->_left = cur->_right;}else{parent->_right = cur->_right;}}delete cur;return true;}else if (cur->_right == nullptr){if (parent == nullptr){_root = cur->_left;}else{if (parent->_left == cur){parent->_left = cur->_left;}else{parent->_right = cur->_left;}}delete cur;return true;}else{Node* rightMin = cur->_right;Node* rightMinParent = cur;while (rightMin->_left){rightMinParent = rightMin;rightMin = rightMin->_left;}cur->_key = rightMin->_key;if(rightMinParent->_left == rightMin)rightMinParent->_left = rightMin->_right;elserightMinParent->_right = rightMin->_right;delete rightMin;return true;}}}return false;
}template<class K, class V>
inline void BSTree<K, V>::_InOeder(Node* root)
{if (root == nullptr)return;_InOeder(root->_left);cout << "汽車車牌號:" << root->_key << " ";struct tm info;localtime_s(&info, &root->_value);char buffer2[80];strftime(buffer2, 80, "%Y-%m-%d %H:%M:%S", &info);cout << "入庫的時間:" << buffer2 << endl;_InOeder(root->_right);
}

//Parking_Fee.h
#pragma once
#include"SearchBinaryTree.h"class ParFee
{
public:void menu();void entering();void Find();void Erase();void statistics();BSTree<string, time_t> par;
};

//Parking_Fee.cpp
#include"SearchBinaryTree.h"
#include"Parking_Fee.h"void ParFee::entering()
{time_t seconds = time(NULL);time_t curLocalTime;time(&curLocalTime);struct tm info;localtime_s(&info, &curLocalTime);char buffer2[80];strftime(buffer2, 80, "%Y-%m-%d %H:%M:%S", &info);cout << "請輸入識別的汽車車牌號>:" << endl;string ID; cin >> ID;cout << "====>" << endl;Sleep(1000);cout << "=========>" << endl;Sleep(1000);cout << "=================>" << endl;Sleep(1000);cout << "錄入成功" << endl;system("pause");system("cls");cout << "*-----------------------*" << endl;cout << "<<><>汽車車牌號:" << ID << endl;cout << "<<><>入庫的時間:" << buffer2 << endl;cout << "*-----------------------*" << endl;par.Insert(ID, seconds);system("pause");
}void ParFee::Find()
{cout << "<*請輸入你要查詢的車輛*>" << endl;string ID; cin >> ID;auto ret = par.Find(ID);if (ret){cout << "<<><>汽車車牌號:" << ID << endl;struct tm info;localtime_s(&info, &ret->_value);char buffer2[80];strftime(buffer2, 80, "%Y-%m-%d %H:%M:%S", &info);cout << "<<><>入庫的時間:" << buffer2 << endl;}else{cout << "無此汽車,請重新輸入" << endl;}system("pause");
}void ParFee::Erase()
{cout << "<*請輸入將要離開的車輛*>" << endl;string ID; cin >> ID;auto ret = par.Find(ID);time_t  leave_seconds = time(NULL);time_t curLocalTime;time(&curLocalTime);struct tm info;localtime_s(&info, &curLocalTime);char buffer3[80];strftime(buffer3, 80, "%Y-%m-%d %H:%M:%S", &info);if (ret){cout << "<<><>汽車車牌號:" << ID << endl;struct tm info;localtime_s(&info, &ret->_value);char buffer2[80];strftime(buffer2, 80, "%Y-%m-%d %H:%M:%S", &info);cout << "<<><>入庫的時間:" << buffer2 << endl;cout << "<<><>離開的時間:" << buffer3 << endl;long long int course_timt = difftime(leave_seconds, ret->_value);int a, b, c;a = course_timt % 60;b = course_timt / 60 % 60;c = course_timt / 60 / 60;cout << ID << "車輛 停車花費時間為:" << c << " h " << b << " min " << a << " sec " << endl;cout << "需要收取費用:" << 20 * c << " 元" << endl;}else{cout << "無此汽車,請重新輸入" << endl;}par.Erase(ID);system("pause");
}void ParFee::statistics()
{par.InOeder();system("pause");
}void ParFee::menu()
{while (true){printf("\t\t\t*****************************************************\n");printf("\t\t\t*---------------------------------------------------*\n");printf("\t\t\t*                   停車場收費管理系統              *\n");printf("\t\t\t*****************************************************\n");printf("\t\t\t********************系統功能菜單*********************\n");printf("\t\t\t----------------------     --------------------------\n");printf("\t\t\t*****************************************************\n");printf("\t\t\t**    1、錄入汽車信息   *     2、查看汽車信息      **\n");printf("\t\t\t*****************************************************\n");printf("\t\t\t**    3、收費信息查看   *     4、查詢車庫車輛      **\n");printf("\t\t\t*****************************************************\n");printf("\t\t\t----------------------     --------------------------\n");int input;cin >> input;system("cls");switch (input){case 1:{entering();system("cls");break;};case 2:{Find();system("cls");break;};case 3:{Erase();system("cls");break;};case 4:{statistics();system("cls");break;};}}
}

//main.cpp
#include"SearchBinaryTree.h"
#include"Parking_Fee.h"int main(){system("color F4");ParFee par;par.menu();return 0;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45794.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45794.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45794.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

百分點科技入選《2024中國數據要素產業圖譜1.0版》

近日&#xff0c;數據猿與上海大數據聯盟發布了《2024中國數據要素產業圖譜1.0版》&#xff0c;百分點科技憑借領先的數據科學技術和深入的行業洞察力&#xff0c;入選數據管理/治理、數據分析與挖掘、應急管理三大領域。 在數據要素的發展關鍵期&#xff0c;數據作為生產要素持…

Hadoop中的YARN組件

文章目錄 YARN 的主要功能YARN 的架構YARN 的工作流程YARN 的優勢總結 YARN&#xff08;Yet Another Resource Negotiator&#xff09;是 Hadoop 生態系統中的一個關鍵組件&#xff0c;負責資源管理和作業調度。它是 Hadoop 2.x 及更高版本中的核心模塊&#xff0c;旨在提高集群…

【雷豐陽-谷粒商城 】【分布式高級篇-微服務架構篇】【26】【內網穿透】cpolar

持續學習&持續更新中… 守破離 【雷豐陽-谷粒商城 】【分布式高級篇-微服務架構篇】【27】【內網穿透】cpolar 內網穿透cpolar內網穿透聯調配置練習—使用公網地址訪問gulimall.com參考 內網穿透 正常的外網需要訪問我們項目的流程是&#xff1a; 買服務器并且有公網固定…

怎么壓縮視頻文件?簡單的壓縮視頻方法分享

視頻已成為我們日常生活中不可或缺的一部分。但隨著視頻質量的提高&#xff0c;文件大小也逐漸成為我們分享的阻礙。如何有效壓縮視頻文件&#xff0c;使其既能保持清晰&#xff0c;又能輕松分享&#xff1f;今天&#xff0c;給大家分享五種實用的視頻壓縮方法&#xff0c;快來…

簡談設計模式之適配器模式

適配器模式是結構型設計模式之一, 用于將一個類的接口轉換成客戶期望的另一個接口. 通過使用適配器模式, 原本由于接口不兼容而無法一起工作的類可以協同工作 適配器模式通常有兩種實現方式 類適配器模式 (Class Adapter Pattern&#xff09;: 使用繼承來實現適配器。**對象適…

安裝adb和常用命令

下載ADB安裝包 https://dl.google.com/android/repository/platform-tools-latest-windows.zip 解壓安裝包 解壓如上下載的安裝包&#xff0c;然后復制adb.exe所在的文件地址 配置環境變量 我的電腦——>右鍵屬性——>高級系統設置——>環境變量——>系統變量—…

stm32學習:(寄存器1)控制寄存器來讓led亮

開啟時鐘&#xff0c;先查找到開啟時鐘的寄存器&#xff0c;然后通過該寄存器操作時鐘的開啟或關閉&#xff0c;要打開的是GPIOA的時鐘 在芯片手冊&#xff0c;找到RCC寄存器描述章節找到APB2外設時鐘使能寄存器&#xff08;RCC_APB2ENR)&#xff0c;現在算RCC_APB2ENR這個寄存…

基于mcu固件反匯編逆向入門示例-stm32c8t6平臺

基于mcu固件反匯編逆向入門示例-stm32c8t6平臺 本文目標&#xff1a;基于mcu固件反匯編逆向入門示例-stm32c8t6平臺 按照本文的描述&#xff0c;應該可以在對應的硬件上通實驗并舉一反三。 先決條件&#xff1a;擁有C語言基礎&#xff0c;集成的開發環境&#xff0c;比如&am…

ES6及ESNext規范

1、let 和 const 而let引入了塊級作用域的概念, 創建setTimeout函數時&#xff0c;變量i在作用域內。對于循環的每個迭代&#xff0c;引用的i是i的不同實例。 暫時性死區&#xff1a;不允許變量提升 const就很簡單了, 在let的基礎上, 不可被修改 js 代碼解讀 for(var i0;i<…

《背包亂斗》為什么好玩 蘋果電腦怎么玩《背包亂斗》游戲 mac怎么玩steam windows游戲

在當今競爭激烈的游戲市場中&#xff0c;《背包亂斗》以其獨特的魅力在眾多作品中脫穎而出&#xff0c;吸引了大量玩家的關注和喜愛。其創新的游戲機制和不斷迭代的內容&#xff0c;加之出色的視覺效果和社區建設&#xff0c;使其成為了游戲界的一股清流。 一、《背包亂斗》為…

Hadoop學習記錄一

HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop項目的一部分&#xff0c;用于存儲海量數據。HDFS設計為可以在廉價硬件上運行&#xff0c;同時提供高容錯性。HDFS主要由三個關鍵角色組成&#xff1a;NameNode、DataNode和SecondaryNameNode。下面我用大白…

《絕區零》是一款什么類型的游戲,Mac電腦怎么玩《絕區零》蘋果電腦玩游戲怎么樣

米哈游的《絕區零》最近在網上爆火呀&#xff0c;不過很多人都想知道mac電腦能不能玩《絕區零》&#xff0c;今天麥麥就給大家介紹一下《絕區零》是一款什么樣的游戲&#xff0c;Mac電腦怎么玩《絕區零》。 一、《絕區零》是一款什么樣的游戲 《絕區零》是由上海米哈游自主研發…

Web前端-Web開發HTML基礎1-input

一. 基礎 1. 寫一個輸入框代碼&#xff0c;類型為密碼&#xff1b; 2. 寫一個輸入框代碼&#xff0c;類型為密碼&#xff1b; 3. 寫一個輸入框代碼&#xff0c;類型為密碼&#xff0c;名稱為"password"&#xff1b; 4. 寫一個輸入框代碼&#xff0c;類型為密碼&#…

ES快速開發,ElasticsearchRestTemplate基本使用以及ELK快速部署

最近博主有一些elasticsearch的工作&#xff0c;所以更新的慢了些&#xff0c;現在就教大家快速入門&#xff0c;并對一些基本的查詢、更新需求做一下示例&#xff0c;廢話不多說開始&#xff1a; 1. ES快速上手 es下載&#xff1a;[https://elasticsearch.cn/download/]()這…

Spring Boot集成Activity7實現簡單的審批流

由于客戶對于系統里的一些新增數據&#xff0c;例如照片墻、照片等&#xff0c;想實現上級逐級審批通過才可見的效果&#xff0c;于是引入了Acitivity7工作流技術來實現&#xff0c;本文是對實現過程的介紹講解&#xff0c;由于我是中途交接前同事的這塊需求&#xff0c;所以具…

uniapp開發釘釘小程序流程

下載開發工具 1、小程序開發工具 登錄釘釘開發平臺&#xff0c;根據自己的需求下載合適的版本&#xff0c;我這里下載的是Windows &#xff08;64位&#xff09;版本 小程序開發工具 - 釘釘開放平臺 2、HBuilder X HBuilderX-高效極客技巧 新建項目及相關配置 新建項目 …

Llama - Prompting

本文翻譯整理自&#xff1a;Prompting https://llama.meta.com/docs/how-to-guides/prompting/ 文章目錄 制作有效的提示明確說明風格化格式化限制 提示使用 Zero- and Few-Shot 學習Zero-Shot PromptingFew-Shot Prompting 基于角色的提示思維鏈技術Self-Consistency檢索-增強…

單臂路由組網實驗,單臂路由的定義、適用情況、作用

一、定義 單臂路由是指通過在路由器的一個接口上配置許多子接口,從而實現原來相互隔離的不同VLAN之間的互通。 子接口:把路由器上的實際的物理接口劃分為多個邏輯上的接口,這些被劃分的邏輯接口就是子接口。 二、適用情況 用在沒有三層交換機,卻要實現不同VLAN之間的互…

Github07-16 Python開源項目日報 Top10

根據Github Trendings的統計,今日(2024-07-16統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Python項目10C++項目1AutoGPT: 人工智能革命的先鋒 創建周期:486 天開發語言:Python協議類型:MIT LicenseStar數量:164105 個Fork數量:435…

axios 下載大文件時,展示下載進度的組件封裝——js技能提升

之前面試的時候&#xff0c;有遇到一個問題&#xff1a;就是下載大文件的時候&#xff0c;如何得知下載進度&#xff0c;當時的回復是沒有處理過。。。 現在想到了。axios中本身就有一個下載進度的方法&#xff0c;可以直接拿來使用。 下面記錄一下處理步驟&#xff1a; 參考…