{ 'title': '校园车辆管理系统:职工车辆和外来车辆收费标准及程序实现', 'description': '本程序实现校园车辆进出管理,根据车辆类型(职工车辆或外来车辆)设置不同的收费标准,职工车辆按月收费,外来车辆按小时收费。程序使用面向对象编程思想,定义基类 CarAccess 及其子类 StaffCar 和 VisitCar,并使用虚函数实现多态性,有效管理车辆进出信息。', 'keywords': '校园车辆管理, 职工车辆, 外来车辆, 收费标准, 面向对象编程, 虚函数, 多态性', 'content': '#include using namespace std; #include <string.h>

const int CARNO_DIGIS=8; const int ACCESS_TIMES=100; // 在此处补充你的代码 void Depart( CarAccess p ,int time) { if(p!=NULL) { cout<GetCarno()<<' '<GetFee(time)<<endl; delete p; } } int main() { CarAccess cars[ACCESS_TIMES] = {NULL}; int n; cin>>n;

for(int i=0;i < n; i++)
{
	char carno[CARNO_DIGIS+1];
	cin >> carno;
	int InOut;
	cin >> InOut;
	int curtime;
	cin>>curtime;
	
	if ( InOut == 1 ) //车辆驶入
	{
		char type;
		cin >> type;
		if ( type == 'S' )
			cars[i] = new StaffCar(carno,curtime);
		else if (type == 'V')
			cars[i] = new VisitCar(carno,curtime);
		else
			i--;
	}
	else if( InOut == 2 )  //车辆驶出
	{
	   if ( i == 0 ) break;
	   bool flag = false;
	   for (int j = i-1;j >= 0; j--)
	   {
		   if ( cars[j] == NULL ) continue;
		   if ( strcmp(cars[j]->GetCarno(), carno)  == 0 )
		   {
				Depart(cars[j],curtime);
				cars[j] = NULL;
				flag = true;
				break;
		   }
	   }
	   if(!flag)
			cout << 'err' << endl;
			
	}
	else
		break;
}
cout << CarAccess::carCount <<' '<< StaffCar::carCount <<' '<< VisitCar::carCount << endl;

for (int k = 0; k < n; k++)
	if  ( cars[k] != NULL )
	{
		cars[k]->Print();
		delete cars[k];
	}
return 0;

} 输入 第一行:N,车辆进出总数(N<100) 下面N行:车牌号 驶入/驶出 当前时间 职工车辆/外来车辆 (注:S为职工车辆,V为外来车辆) 输出 每辆驶出车辆,显示信息及缴费金额。格式:车牌号 驶入时间 驶出时间 收费金额 显示校内现有车辆数。格式:车辆总数 职工车辆数 外来车辆数 显示校内现有车辆信息。 格式:车牌号 进入时间 S/V 样例输入 6 京A11111 1 7 S 京B22222 1 8 V 京E33333 1 9 S 京B22222 2 10 津A44444 1 11 V 京A11111 2 12 样例输出 京B22222 16 京A11111 0 2 1 1 京E33333 9 S 津A44444 11 V 分析

这道题目主要考察了面向对象的多态性、虚函数、继承等知识点,还有一些简单的类的构造函数、析构函数、成员变量和成员函数的访问控制等方面。

首先要定义一个车辆进出类 CarAccess,有三个数据成员:车牌号 carno、现存车辆数量 carCount 和收费情况 fee,都需要是保护类型的。由于需要统计所有车辆和不同类型车辆的数量,所以需要在构造和析构函数中修改 carCount。另外,还需要定义一个虚函数 Print() 输出车牌号和进入时间,以及一个虚函数 GetFee() 根据驶出时间计算费用。

然后,由 CarAccess 派生出两个子类 StaffCar 和 VisitCar,都需要有一个 carCount 变量记录校园内的车辆数量。StaffCar 中需要重写 Print() 函数,输出车牌号、进入时间和职工车辆 S;VisitCar 中需要重写 Print() 函数,输出车牌号、进入时间和外来车辆 V。StaffCar 中需要重写 GetFee() 函数,由于职工车辆已经缴费,所以在驶出时不再收费;VisitCar 中需要重写 GetFee() 函数,根据驶出时间计算停车费用。

最后,根据输入的信息模拟车辆进出,使用一个指针数组保存所有进入的车辆,根据车牌号在数组中查找对应车辆,然后调用 Depart() 函数模拟车辆驶出并计算费用。最后,输出车辆总数和各类型车辆数量,以及所有车辆的信息。

代码

校园车辆管理系统:职工车辆和外来车辆收费标准及程序实现

原文地址: https://www.cveoy.top/t/topic/oioY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录