OOP驾考预约(单继承)

2023-07-30 09:54:08 浏览数 (2)

题目描述

某驾校对学车的学员做出以下设计:

(1)定义CPerson类,包含数据成员:姓名,联系电话。由CPerson作为基类派生出学员类。

(2)学员类表示普通学员,他们可以在场地A练车,一天最多获得一个学时(即使练习时长超过一小时也只能按一个学时计算)

学员类新增一个数据成员Atime,长度为12的整数数组,表示连续12天,在A场地每天练习的时长,时长单位按分钟计算

学员类新增一个成员函数void check(),检查学员是否达到预约科目二考试资格的标准,并输出相应提示信息。

预约资格是:在每12天的周期内,总学时达到10小时可以预约。练习每一小时计一学时,不足一小时计0

(3)学员类派生出VIP学员类,他们可以在场地B练车,一天最多获得两个学时(即使练习时长超过两小时也只能按两个学时计算)。

VIP学员同样可以在A场地练车。AB场地练车获得学时可以叠加,即VIP学员一天最多获得3个学时。

VIP学员类新增一个数据成员Btime,长度为12的整数数组,表示连续12天中,在B场地每天练习的时长,时长单位按分钟计算

VIP学员类重载函数void check(),功能也是检查预约资格,只是学时计算要包含A和B场地。

输入

测试样例有t学员

每个学员的第一行先输入学员信息:类型(普通学员用F表示,VIP学员用V表示),姓名,电话。

如果是普通学员,接着只包含一行数据,第二行输入A场地的12天来每天的练习时长(共12个整数,单位为分钟)

如果是VIP学员,接着包含两行数据,第二行输入A场地的12天练习时长,第三行输入B场地的12天练习时长,每行都是12个整数。

输出

输出t行

调用check函数,输出一个每个学员是否能否预约科目二,并输出相关提示信息

输入样例1

3 F Wendy 13209871920 30 30 40 60 60 40 60 70 100 80 30 40 V Sarah 15081098293 170 80 0 50 60 90 110 0 40 60 30 100 0 0 90 0 0 0 0 130 0 0 0 66 V 张三 15030120983 80 0 0 30 20 0 40 0 30 150 0 0 0 10 10 0 0 10 0 20 0 0 150 160

输出样例1

Wendy未达到学时要求不能预约!电话13209871920 Sarah达到学时要求可以预约!电话15081098293 张三未达到学时要求不能预约!电话15030120983  

思路分析

注意输入的时长按分钟计。

AC代码 

代码语言:javascript复制
#include"iostream"
#include"string"
using namespace std;
class CPerson
{
	protected:
		string name,phone;
	public:
		void datain()
		{
			cin>>name>>phone;
		}
};
class NPerson:public CPerson
{
	protected:
		int Atime[12];
	public:
		void check()
		{
			float sum=0;
			int i;
			for(i=0;i<12;i  )
			{
				cin>>Atime[i];
				if(Atime[i]>60)
				Atime[i]=60;
				sum =Atime[i]/60;
			}
			if(sum>=10)
			cout<<name<<"达到学时要求可以预约!电话"<<phone<<endl;
			else
			cout<<name<<"未达到学时要求不能预约!电话"<<phone<<endl;
		}
};
class VIP:public NPerson
{
	protected:
		int Btime[12];
	public:
		void check()
		{
			float sum=0;
			int i;
			for(i=0;i<12;i  )
			{
				cin>>Atime[i];
				if(Atime[i]>60)
				Atime[i]=60;
				sum =Atime[i]/60;
			}
			for(i=0;i<12;i  )
			{
				cin>>Btime[i];
				if(Btime[i]>120)
				Btime[i]=120;
				sum =Btime[i]/60;
			}			
			if(sum>=10)
			cout<<name<<"达到学时要求可以预约!电话"<<phone<<endl;
			else
			cout<<name<<"未达到学时要求不能预约!电话"<<phone<<endl;			
		}
};
int main()
{
	int num;
	char kind;
	cin>>num;
	while(num--)
	{
		cin>>kind;
		if(kind=='F')
		{
			NPerson f;
			f.datain();
			f.check();
		}
		else
		{
			VIP v;
			v.datain();
			v.check();
		}
	}
}

0 人点赞