基于搜索二叉树的停车收费管理系统
创始人
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;     }

相关内容

热门资讯

黑科技科技!wepoke软件透... 黑科技科技!wepoke软件透明挂价格,wepower透视辅助,透牌教程(其实是真的有挂);小薇(透...
透视辅助!微扑克辅牌器,(wp... 透视辅助!微扑克辅牌器,(wpk微扑克)好像有挂,分享教程(有挂脚本)1、打开软件启动之后找到中间准...
黑科技辅助挂!wPK透视辅助,... 黑科技辅助挂!wPK透视辅助,(wpK)总是是有挂,可靠技巧(有挂神器)亲,关键说明,wpK赛季回归...
wepoke透明黑科技(wep... wepoke透明黑科技(wepoke)wepoke好友助力(黑科技)玩家教你(真是真的有挂)wepo...
黑科技代打!wepoke透明挂... 黑科技代打!wepoke透明挂怎么识别,wepoke软件透明是真的吗,AI教程(固有是有挂)准备好在...
透视ai代打!wpk透视挂会被... 透视ai代打!wpk透视挂会被封号吗,(WPK)果然是有挂,普及教程(有挂插件)1、wpk透视挂会被...
黑科技辅助挂!德州aa扑克透明... 黑科技辅助挂!德州aa扑克透明挂辅助是有挂,(aAPOKER)详细辅助透明挂教程(有挂攻略);所有人...
Wpk辅助器(wpK)wpk微... Wpk辅助器(wpK)wpk微扑克真的有辅助吗(透视)AI教程(总是真的有挂);1、进入游戏-大厅左...
黑科技插件!红龙扑克真假,智星... 黑科技插件!红龙扑克真假,智星德州菠萝app下载,黑科技教程(其实是真的有挂)1、点击下载安装,微扑...
苹果版辅助挂!智星德州菠萝开挂... 苹果版辅助挂!智星德州菠萝开挂,(智星德州)好像是真的有挂,曝光教程(有挂介绍)苹果版辅助挂!智星德...