停车场管理系统需求:
一个小型停车场,总共有20个停车位,编写一个停车场的管理系统。运行界面如下:
——–欢迎使用停车场管理系统——–
请选择你需要的操作:
0:关闭系统;
1:新车辆进入;
2:车辆离开;
3:剩余车位数;
4:显示所有停放信息;
—————————————————-
在选择第一项时,提示用户输入车牌号,车的颜色,品牌,车的种类(大型车,小型车),进入停车场的时间;
在选择第二项时,自动计算出使用停车位的时间,按照车的不同种类给出停车费,大型车一小时10元,小型车一小时5元。
实现思路:
1.车辆信息可以用一个car类表示:
class car
{
private:
stringm_nID;//车牌号
string m_strColor;//颜色
string m_strBrands;//品牌
int m_nType;//0代表大型车,1代表小型车
int m_nstart;//进入停车场时间,可以用time函数获取当前时间,要包含time.h头文件
}
2.用一个指针数组代表停车场:
const int nParkingCnt=20;
car *g_ParkingSpaceArray[nParkingCnt];
每停入一辆车时用new创建一个对象,把对象的指针放到数组中。
3.车辆离开计算费用时,首先通过车牌号从数组中找出对应车辆,然后使用函数指针计算不同类型车辆的费用。
4.对应用户的输入选择,设计4个函数,在主函数中调用。
添加车辆
删除车辆
显示剩余车位个数
显示车场内的所有车辆信息
代码实现:
1.首先实现类Car,封装相关属性,提供公有方法来访问:
class Car { private: string m_strID;//车牌号 string m_strColor;//颜色 string m_strBrands;//品牌 int m_nType;//0代表大型车,1代表小型车 int m_nstart;//进入停车场时间 public: Car(string id , string color , string brand ,int type) { m_strID = id; m_strColor = color; m_strBrands = brand; m_nType = type; time_t t; t = time(NULL); m_nstart = t; }
string getId() { return m_strID; }
string getC() { return m_strColor; }
string getB() { return m_strBrands; }
int getT() { return m_nType; }
int getS() { return m_nstart; } }; |
2.停车场里有20个车位,所以需要一个指针数组,记录哪些车位有车辆,哪些没有车辆。
const int nParkingCnt=20; Car *g_ParkingSpaceArray[nParkingCnt]; |
3.实现4个函数用于对应需求的四个功能。
/*1.新车辆进入时,登记车辆相关信息*/ void addCar(string id , string color ,string brand ,int type) { int i,parkId,j = 0; bool bb = true; for( i = 0 ;i < nParkingCnt ; i++ ) { if ( g_ParkingSpaceArray[i] == NULL) { cout<<i<<” 车位 “; bb = false; j++; if( j !=0 && j%6 ==0 ) { cout<<endl; } } } if( bb ) { cout<<“沒有空閑車位,無法停車!”<<endl; } else { cout<<“空閑”<<endl; cout<<“選擇要停靠的的車位”<<endl; cin>>parkId; g_ParkingSpaceArray[parkId] = new Car(id,color,brand ,type); cout<<“登记成功,欢迎进入!”<<endl;
} } /*2.车辆离开停车场时,通过车牌号找到车辆,并根据停车时间显示收费信息*/ void removeCar( string id ) { int j,money = 0,min = 0; bool find = false; for( j = 0 ; j < nParkingCnt ; j++ ) { if( g_ParkingSpaceArray[j] != NULL &&g_ParkingSpaceArray[j]->getId() == id ) { find = true; time_t now; now = time(NULL); if( g_ParkingSpaceArray[j]->getT() == 0 ) { min = 10; }else { min = 5; } money = ( now – g_ParkingSpaceArray[j]->getS())/60*min; cout<<“请缴费 :”<<money<<“元”<<endl; delete g_ParkingSpaceArray[j]; g_ParkingSpaceArray[j] = NULL; break; } } if( !find ) { cout<<“车牌号输入错误,没有这辆车!”<<endl; } } /*3.显示还有多少空余车位*/ void countCar() { int i,j = 0; for( i = 0 ; i < nParkingCnt ; i++ ) { if( g_ParkingSpaceArray[i] == NULL ) { j++; } } cout<<“剩余”<<j<<“个车位!”<<endl; }
/*4.显示当前所有停放车辆的基本信息*/ void display() { int i; bool jud = true; cout<<“停放車輛的信息:”<<endl; for( i = 0 ; i < nParkingCnt ; i++ ) { if( g_ParkingSpaceArray[i] != NULL ) { cout<<“车牌号:”<<g_ParkingSpaceArray[i]->getId(); cout<<” 颜色:”<<g_ParkingSpaceArray[i]->getC(); cout<<” 品牌:”<<g_ParkingSpaceArray[i]->getB(); cout<<” 车辆类型:”<<g_ParkingSpaceArray[i]->getT(); cout<<” 车位号:”<<i<<endl; jud = false; } } if( jud ) { cout<<“沒有車停放!”<<endl; } } |
/*主功能函数,用于提示用户选择功能操作*/ void init() { int judge; string id; string color; string brand; int type; void (*fn)() = NULL; cout<<“——–欢迎使用停车场管理系统——–“<<endl; cout<<“请选择你需要的操作:”<<endl; cout<<“0:关闭系统;”<<endl; cout<<“1:新车辆进入;”<<endl; cout<<“2:车辆离开;”<<endl; cout<<“3:剩余车位数;”<<endl; cout<<“4:显示所有停放信息;”<<endl; cout<<“————————————-“<<endl; cin>>judge; if( judge == 3 ) { fn = countCar; }else if( judge == 4 ) { fn = display; } switch( judge ) { case 0:b = false; cout<<“——————————————-“<<endl; break; case 1:cout<<“输入车牌号:”<<endl; cin>>id; cout<<“车辆颜色:”<<endl; cin>>color; cout<<“车辆品牌:”<<endl; cin>>brand; cout<<“车辆类型( 0:大型车 1:小型车):”<<endl; cin>>type; addCar(id,color,brand,type); cout<<“——————————————-“<<endl; break; case 2:cout<<“输入车牌号:”<<endl; cin>>id; removeCar(id); cout<<“——————————————-“<<endl; break; case 3: case 4:fn(); cout<<“——————————————-“<<endl; break; default:cout<<“——————————————-“<<endl; break; } } int main() { intk; for( k =0 ; k < 20 ; k++) { g_ParkingSpaceArray[k] = NULL; } while( b ) { init(); } } |