用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 陈祥俭

  • 10
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
******************* 实践教学 ******************* 理工大学 计算机与通信学院 2011年春季学期 C程序设计 课程设计 题 目: 专业班级: 姓 名: 学 号: 指导教师: 成 绩:__________________ 摘 要 在车辆销售管理当中,人工统计的速度慢,并且容易出现差错。本车辆销售管理系统的自动化加速了统计工作,提高管理效率。本程序主要采用对输入的相关信息进行自动分析,然后按组分将数据保存到数组,这样的结构化非常便于程序后续的统计工作。统计具体过程涉及到车辆进价售价及利润排序等问题,将于正文中详细介绍。本程序实现了所有设计要求。 关键词:文件;排序;统计;C语言 目 录 一、需求分析 1 二、总体设计 2 三、详细设计 3 3.1 详细设计思路 3 3.2 算法流程图 3 四、编码 7 五、测试 8 六、设计总结 12 参考文献 13 致谢 14 附录 15 一、需求分析 本程序将用到文件系统,list.txt文件内容作为数据源,其中单行内容代表一张纸条。程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据进行分操作并提供一个数组用于保存分信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择。 二、总体设计 图1 车辆销售管理系统功能模块图 三、详细设计 3.1 详细设计思路 1.main()主函数 设置了程序的流程,结束程序。 2.select ( ) 选择函数 选择所想运行的各个函数. 3.functionscan ( ) 输入函数输入便条的数据. 4.function1 ( ) 文件的数据输入函数多次输入数据 5. function2 ( ) 统计函数每种汽车销售量以及销售额的统计 6. functionpaixu2 ( )总额排序函数按销售额对汽车进行排序 7. function4() 总额统计函数统计每种汽车的总额 8. function5() 统计报表函数统计商品总额 9. function6() 清空文件函数 清空文件数据 3.2 算法流程图 3.2.1保存函数Save()的算法流程图如图2所示。 图2 保存函数Save()的算法流程图 3.2.2输入函数input()的算法流程图如图3所示。 图3 输入函数的算法流程图 3.2.3 输出汽车信息 图4 输出汽车信息 四、编码 原始数据有汽车编码,车名,进价,售价,销售数量。年所以定义一个全局结构体数组scrip用于保存原始数据。然后定义全局变量n保存纸条数目,定义数组s用于保存分后的信息。源代码见附录 五、测试 1输入新数据测试如图5所示 图5 输入新数据测试 2按车名查找数据测试如图6所示 图6按车名查找数据测试 3按编号查找数据测试如图7所示 图7 按编号查找数据测试 4按车辆名称删除数据测试如图8所示 图8车辆名称删除数据测试 5列出所有数据测试如图9所示 图9列出所有数据测试 6统计各产品的收益和总收益测试如图10所示 图10统计各产品的收益和总收益测试 7按车辆销售额的大小排序并输出排序后结果测试如图11所示 图11按车辆销售额的大小排序并输出排序后结果测试 六、设计总结 通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。 回顾起这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多的东西。同时不仅可以巩固了以前所学到的知识,而且学到了很多在书本上所没有学到过的知识,通过这次课程设计使我懂得了理论与实际相结合是很重要的。只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论。才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,通过同学的帮助,逐渐克服各种问题,并且从中学习到了很多的东西。通过这次编程。我发现了很多的不足。让我了解到自身的问题。让我不断的进步。 参考文献 1 C/C++程序设计,王连相等,中国科学技术出版社,2004 2 C语言程序设计,谭浩强,清华大学出版社,1999 3 C程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4 C语言实用程序荟萃,西安电子科技大学出版社,1993 5 C语言函数手册,机械工业出版社,1999

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值