基于搜索二叉树的停车收费管理系统
创始人
2025-01-08 19:36:58
0

系统效果:
录入汽车信息

查看汽车信息

收费信息查看

查询车库车辆

 

代码展示:

//SearchBinaryTree.h #pragma once #include #include #include #include using namespace std;  template struct BSTNode { 	K _key; 	V _value; 	BSTNode* _left; 	BSTNode* _right; 	BSTNode(const K& key,const V& value) 		:_key(key) 		,_value(value) 		,_left(nullptr) 		,_right(nullptr) 	{} };  template class BSTree { 	typedef BSTNode 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 inline bool BSTree::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 inline bool BSTree::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; 				else 					rightMinParent->_right = rightMin->_right; 				delete rightMin; 				return true; 			} 		} 	} 	return false; }  template inline void BSTree::_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 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;     }

相关内容

热门资讯

有挂黑科技!德州ai机器人(透... 有挂黑科技!德州ai机器人(透视)太坑了有挂(系统教程黑科技技巧);1)德州ai机器人辅助挂:进一步...
黑科技有挂(德扑ai智能)外挂... 黑科技有挂(德扑ai智能)外挂透明挂辅助技巧(透视)果然是真的有挂(黑科技方法)1、每一步都需要思考...
约局吧辅助器,白金岛放炮罚作弊... 约局吧辅助器,白金岛放炮罚作弊码,hhpoker万能辅助器(有挂攻略)1、白金岛放炮罚作弊码ai辅助...
黑科技实锤!德州AI辅助软件(... 黑科技实锤!德州AI辅助软件(wepOkE)外挂透明挂辅助软件(研究成果黑科技教程)是一款可以让一直...
最新黑科技!线上德州辅助软件有... 最新黑科技!线上德州辅助软件有用吗(透视)太坑了有挂(2025新版教程黑科技规律)1、上手简单,内置...
黑科技免费(德州ai代打)外挂... 黑科技免费(德州ai代打)外挂透明挂辅助方法(透视)一贯是有挂(黑科技攻略)1、玩家可以在德州ai代...
火神大厅辅助,方片十三张源码,... 火神大厅辅助,方片十三张源码,wepoker透视版下载(有挂教程)方片十三张源码是一种具有地方特色的...
黑科技攻略!wepoke辅助枝... 黑科技攻略!wepoke辅助枝巧(WepOke)外挂透明挂辅助神器(推荐攻略黑科技辅助);支持多人共...
好友黑科技!wpk俱乐部怎么盈... 好友黑科技!wpk俱乐部怎么盈利(透视)太坑了是有挂(解密教程黑科技技巧)1、任何wpk俱乐部怎么盈...
黑科技插件(wpkai透视外挂... 黑科技插件(wpkai透视外挂售卖)外挂透明挂辅助神器(透视)本来真的有挂(黑科技教程)1、完成wp...