用C++纯命令行实现停车场管理系统

停车场管理系统需求:

一个小型停车场,总共有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();

    }

}



Created by 陈祥俭

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值