简单泊车管理系统-c++实现

来源:互联网 发布:mac下载office办公软件 编辑:程序博客网 时间:2024/05/01 20:31

泊车系统

该系统要求对一个文件中所存储的汽车数据进行各种常规操作,如:查找、计费、显示等功能。目的是熟练掌握文件、数组的各种操作,以及一些算法思想的应用,实现一个简单的泊车管理系统。

#include <iostream>#include <string>#include <algorithm>#include <cstdlib>#include <ctime>#include <stdlib.h>using namespace std;struct Location       //车位信息{public:int num = -1;      //车位编号     char ID[10] ="0";     //车牌号码char carClass = -1;       //车辆类型int startTime = -1;     //入库时间int carState = -1;       //泊车状态(空或已泊车)int carInfo = -1;          //车位状态(正常使用,维修)};class Manager      //管理人员{public://Manager();Location carport[100];     //共100个车位int carportLength = sizeof(carport) / sizeof(Location);  //车位数量int price = 50;       //每小时费用//初始化停车位信息void Init(){for (int i = 0;i < carportLength;i++){carport[i].num = i + 1;        //编号//carport[i].IDcarport[i].startTime = -1;   //时间默认-1carport[i].carState = 0;    //0表示空,1表示泊车carport[i].carInfo = 0;     //0表示正常使用,1表示正在维修}}//停车登记      停车位为第一个为空的位置,自动查询给出车牌号,车位满给出提示void Add(){cout << "停车登记" << endl;string idAdd;   //停车牌号char carClass;  //车辆类型int startTime = -1;int num = -1;//遍历车位  找到第一个空车位for (int i = 0;i < carportLength;i++){if (carport[i].carState == 0 && carport[i].carInfo == 0)    //判断是否是空车位并且正常使用状态{num = i;break;}else{num = -1;}}if (num == -1)    //车位已满{cout << "车位已满" << endl;system("pause");system("cls");}else{cout << "请输入车牌号(9位),输入-1取消登记" << endl;cin >> idAdd;if (idAdd == "-1"){return;}strcpy(carport[num].ID, idAdd.c_str());    //string 导入char数组cout << "请输入车辆类型(a,b,c)" << endl;cin >> carClass;carport[num].carClass = carClass;//车辆入库时间carport[num].startTime = time(NULL);//标记为已经停车carport[num].carState = 1;                  cout << "车辆停泊在" << num + 1 << "号车位" << endl;system("pause");system("cls");}}//取车登记(按车牌/车位查找)  根据车辆停泊时间自动计算费用并显示void Reduce(){cout << "取车登记" << endl;int funReduce = -1; string idReduce;      //取车车牌int numReduce;         //取车车位int timeReduce;          //取车时间char tempReduce[10];      //临时数组cout << "请输入: [1]:按车牌登记 [2]:按车位号登记 [3]:返回主菜单" << endl;cin >> funReduce;switch (funReduce){case 1:cout << "请输入车牌号码:" << endl;cin >> idReduce;strcpy(tempReduce, idReduce.c_str());for (int i = 0;i < carportLength;i++){if (carport[i].ID == tempReduce)  //找到指定车牌{timeReduce = time(NULL);//共计时间int lastTime = timeReduce - carport[i].startTime;   //计算停车时间//计算费用int totalPrice = (lastTime / 60) / 60 * price;cout << "停车时间: " << lastTime << endl;cout << "停车费用: " << totalPrice << "\n" << "当前费率: " << price << endl;memset(carport[i].ID, 0, sizeof(carport[i].ID));         //数组置零carport[i].carState = 0;system("pause");system("cls");}}break;case 2:cout << "请输入车位号码:" << endl;cin >> numReduce;for (int i = 0;i < carportLength;i++){if (carport[i].num == numReduce && carport[i].carState == 1)  //找到指定车位且车位有车{timeReduce = time(NULL);//共计时间int lastTime = timeReduce - carport[i].startTime;   //计算停车时间//计算费用int totalPrice = (lastTime / 60) / 60 * price;cout << "停车时间: " << lastTime << endl;cout << "停车费用: " << totalPrice << "\n" << "当前费率: " << price << endl;memset(carport[i].ID, 0, sizeof(carport[i].ID));         //数组置零carport[i].carState = 0;       system("pause");system("cls");}}break;case 3:break;default:break;}}    //查找 根据车牌、车位号void Search(){int fun = -1;int num = -1;string id;cout << "查询功能" << endl;cout << "请输入:[1]:按车牌查找,[2]:按车位号查找,[3]:返回主菜单" << endl;cin >> fun;switch (fun){case 1:cout << "请输入车牌(9位数字)" << endl;cin >> id;char temp[11];strcpy(temp, id.c_str());for (int i = 0;i < carportLength;i++){if (carport[i].ID == temp)     //找到车牌{cout << "已找到" << "\n" << "车位号: " << carport[i].num << "\t车类型: " << carport[i].carClass << endl;system("pause");system("cls");break;}else{cout << "没有找到指定车牌" << endl;//Search();}}break;case 2:cout << "请输入车位(1-100)" << endl;cin >> num;for (int i = 0;i < carportLength;i++){if (carport[i].num == num)     //找到车位{cout << "已找到" << "\n" << "车位状态: " << carport[i].carState << "\t车位信息: " << carport[i].carInfo << endl;if (carport[i].carState == 1)     //车位有车{cout << "车牌号: " << carport[i].ID << "\t车类型: " << carport[i].carClass << endl;system("pause");system("cls");break;}}else{cout << "请输入正确车位" << endl;//Search();}}break;case 3:break;default:cout << "Error Input" << endl;Search();break;}}    //修改车位信息(状态:正常使用,维修)void ChangeInfo(){int num;int info = -1;          //要修改的状态cout << "请输入指定车位号(1-100)" << endl;cin >> num;if (num>=1 && num<=100){for (int i = 0;i < carportLength;i++){if (carport[i].num == num){cout << num << "号车位当前状态: " << carport[i].carInfo << endl;cout << "请输入要修改的状态: [0]:正常使用,[1]:正在维修" << endl;cin >> info;carport[i].carInfo = info;    //修改状态cout << "修改成功\t" <<num<<"号车位状态为"<<info<< endl;system("pause");system("cls");}}}else{cout << "输入错误" << endl;ChangeInfo();}}//改变每小时收费比率void ChangePrice(){int targetPrice = -1;cout << "当前费率: " << price << "\n"<<"请输入要修改的费率: "<<endl;cin >> targetPrice;if (targetPrice != -1){price = targetPrice;cout << "修改成功!\n" << "当前费率: " << price << endl;system("pause");system("cls");}}void ShowState(){for (int i = 0;i < carportLength;i++){cout << "车位号码:"<<carport[i].num<<"\t车牌:"<< carport[i].ID << "\t入库时间:" << carport[i].startTime << "\t泊车状态:" << carport[i].carState << "\t车位信息:" << carport[i].carInfo <<endl;}system("pause");system("cls");}          };class UserSystem{public:string id;string password;string idAdmin;string passwordAdmin;//登录void login(){id = "abc";password = "123";string idInput;string passwordInput;int count = 0;       //输入次数cout << "**********欢迎使用泊车管理系统**********" << endl;cout << "\t\t请登录系统\t\t" << endl;while (count == 0){cout << "请输入用户名:" << endl;cin >> idInput;cout << "请输入密码:" << endl;cin >> passwordInput;if (idInput == id && passwordInput == password)    //用户名密码输入正确{cout << "\t\t登录成功\t\t" << endl;system("pause");system("cls");       //清屏int funUse;Manager manager;UserSystem user;cout << "**********欢迎进入泊车管理系统**********" << endl;manager.Init();while (1){cout << "菜单\t\t" << endl;cout << "1.停车登记\t2.取车登记\t3.查询车辆信息\t4.修改车位状态\t5.改变费率\t6.显示所有车位信息" << endl;cin >> funUse;switch (funUse){case 1:  //停车登记manager.Add();break;case 2:  //取车登记manager.Reduce();break;case 3:  //查询车辆信息manager.Search();break;case 4:  //修改车位状态manager.ChangeInfo();break;case 5:  //改变费率manager.ChangePrice();break;case 6:  //显示所有车位信息manager.ShowState();break;default:cout << "输入错误,请重新输入" << endl;system("pause");break;}}}else{system("cls");cout << "账号名或密码错误,请重新输入" << endl;}}}};int main(){   Manager manager;UserSystem user;//manager.Init();user.login();return 0;}


原创粉丝点击