前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OOP驾考预约(单继承)

OOP驾考预约(单继承)

作者头像
叶茂林
发布2023-07-30 09:54:08
1180
发布2023-07-30 09:54:08
举报

题目描述

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

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

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

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

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

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

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

VIP学员同样可以在A场地练车。A\B场地练车获得学时可以叠加,即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();
		}
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路分析
  • AC代码 
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档