欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++数据的抽象与封装:类与对象(1)

程序员文章站 2022-04-14 10:18:35
题目内容:设计一个person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。//根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函...
题目内容:设计一个person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。//根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数register()。
//1设计person类(20分)
//题目内容:
//设计一个person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。
//根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数register()、showme()来访问这些属性,在register()函数中对数据成员进行初始化。person1通过cin来得到信息,person2通过register("zhang3",
//19, 'm') 来得到信息。
//
//输入格式 :
//person1的信息
//
//输出格式:
//person1和person2的信息
//
//输入样例:
//li4 18 f
//
//输出样例:
//li4 18 f
//zhang3 19 m

#include
#include "string.h"
using namespace std;

class person
{
private:
	char name[5];
	int age;
	char sex;
public:
	void register(char* _name, int _age, char _sex);
	void showme();
};

void person::register(char* _name, int _age, char _sex)
{
	strcpy(name, _name);
	age = _age;
	sex = _sex;
}

void person::showme()
{
	cout << name << " " << age << " " << sex << endl;
}
int main()
{
	person person1, person2;
	person2.register("zhang3", 19, 'm');
	char name[5];
	int age;
	char sex;
	cin >> name >> age >> sex;
	person1.register(name, age, sex);
	person1.showme();
	person2.showme();
	system("pause");
	return 0;
}

//2设计dog类(20分)
//题目内容:
//设计一个dog类,包含name、age、sex和weight等属性以及对这些属性操作的方法。实现并测试这个类。
//根据类的封装性要求,把name、age、sex和weight声明为私有的数据成员,编写公有成员函数setdata()对数据进行初始化,getname()、getage()、getsex()和getweight()获取相应属性。初始化数据由用户输入。
//
//输入格式 :
//dog类对象的初始化数据
//
//输出格式:
//根据dog类对象的初始化数据输出一句话,请严格按照格式输出,句末有点号。
//
//输入样例:
//ahuang 3 m 2.4
//
//输出样例:
//it is my dog.
//its name is ahuang.
//it is 3 years old.
//it is male.
//it is 2.4 kg.
#include 
#include "string.h"
using namespace std;
class dog
{
public:
	dog();
	~dog();
	void setdata(char* name, int age,char sex,float weight);
	void getname();
	void getage();
	void getsex();
	void getweight();
private:
	char name[20];
	int age;
	char sex;
	float weight;
};

dog::dog()
{
}

dog::~dog()
{
}

void dog::setdata(char* _name, int _age, char _sex, float _weight)
{
	strcpy(name, _name);
	age = _age;
	sex = _sex;
	weight = _weight;
}

void dog::getage()
{
	cout << "it is " << age << " years old" <<"." <> _name >> _age >> _sex >> _weight;
	dog.setdata( _name, _age,  _sex, _weight);
	cout << "it is my dog." << endl;
	dog.getname();
	dog.getage();
	dog.getsex();
	dog.getweight();
	system("pause");
	return 0;
}

//3设计并测试trapezium类(20分)
//题目内容:
//设计并测试一个名为trapezium的梯形类,其属性为梯形的四个顶点的坐标。该梯形上边和下边均和x轴平行。
//根据类的封装性要求,在类的声明中用8个私有的整型变量表示4个点的坐标值,声明成员函数initial(int, int, int, int, int, int, int, int)初始化数据成员,函数getposition(int&, int&, int&, int&, int&, int&, int&, int&)读取坐标值,函数area()计算面积。
//
//输入格式 :
//梯形四个顶点的坐标,
//
//输出格式:
//梯形的面积,依次为左上(x1, y1)、右上(x2, y2)、左下(x3, y3)和右下(x4, y4)角的顶点。
//
//输入样例:
//3 2 5 2 1 - 4 7 - 4
//
//输出样例:
//24
#include 
using namespace std;
class trapezium
{
public:
	trapezium();
	~trapezium();
	void initial(int, int, int, int, int, int, int, int);
	void getposition(int&, int&, int&, int&, int&, int&, int&, int&);
	void area();
private:
	int xul, yul, xur, yur, xdl, ydl, xdr, ydr;
};

void trapezium::initial(int _xul, int _yul, int _xur, int _yur, int _xdl, int _ydl, int _xdr, int _ydr)
{
	xul = _xul;
	yul = _yul;
	xur = _xur;
	yur = _yur;
	xdl = _xdl;
	ydl = _ydl;
	xdr = _xdr;
	ydr = _ydr;
}

void trapezium::getposition(int& a, int& b, int& c , int& d , int& e , int& f , int& g , int& h)
{
	cout << a << " " << b << " " << c << " " << d << " " << e << " " << f << " " << g << " " << h << endl;
}

void trapezium::area()
{
	float s;
	s = (xur - xul + xdr - xdl)*(yur - ydr) / 2;
	cout << s << endl;
}
trapezium::trapezium()
{
}

trapezium::~trapezium()
{
}

int main()
{
	int _xul, _yul, _xur, _yur, _xdl, _ydl, _xdr, _ydr;
	cin >> _xul>> _yul>> _xur>>_yur>>_xdl>> _ydl>> _xdr>> _ydr;
	trapezium t1;
	t1.initial(_xul, _yul, _xur, _yur, _xdl, _ydl, _xdr, _ydr);
	t1.area();
	system("pause");
	return 0;
}

//设计mytime类(20分)
//题目内容:
//设计一个mytime类,成员函数settime()设置时间,print_12()以12(0 - 11)小时制显示时间(am上午,pm下午),print_24()以24(0 - 23)小时制显示时间。
//
//输入格式 :
//所需设置时间的时、分、秒
//
//输出格式:
//按照12小时制和24小时制依次显示时间, 注意时间格式中的冒号是英文冒号, 时分秒都是两位,am, pm前有一个空格,晚上12 : 00是00 : 00 : 00 am,中午十二点是00 : 00 : 00 pm。
//
//输入样例:
//13 23 34
//
//输出样例:
//01:23 : 34 pm
//13 : 23 : 34
#include 
using namespace  std;

class mytime
{
public:
	mytime();
	~mytime();
	void settime(int _h,int _m,int _s);
	void print12();
	void print24();
private:
	int h, m, s;
};

void mytime::settime(int _h, int _m, int _s)
{
	h = _h; m = _m; s = _s;
}

void mytime::print12()
{
	int h_temp;
	(h - 12) > 0 ? h_temp = h - 12 : h_temp = h;
	if (h_temp<10)
	{
		cout << '0';
	}
	cout << h_temp << ':';
	if (m<10)
	{
		cout << '0';
	}
	cout << m << ':';
	if (s<10)
	{
		cout << '0';
	}
	cout << s << ' ';
	if ((h - 12>0) || ((h==12)&&((m!=0)||(s!=0))))
	{
		cout << "pm" << endl;
	}
	else  
	{
		cout << "am" << endl;
	}
}

void mytime::print24()
{
	if (h < 10)
	{
		cout << '0';
	}
	cout << h << ':';
	if (m < 10)
	{
		cout << '0';
	}
	cout << m << ':';
	if (s < 10)
	{
		cout << '0';
	}
	cout << s;
	cout << endl;
}

mytime::mytime()
{
}

mytime::~mytime()
{
}

int main()
{
	mytime time1;
	int _h, _m, _s;
	cin >> _h >> _m >> _s;
	time1.settime(_h, _m, _s);
	time1.print12();
	time1.print24();
	system("pause");
	return 0;

}

//5设计weekday类(20分)
//题目内容:
//设计一个weekday类,成员函数setday()设置星期几,incday()前进一天,nowday()打印当前是星期几。
//
//输入格式 :
//用户输入一个数字,0表示星期日,1表示星期一,类推,6表示星期六,用该数字初始化weekday类
//
//输出格式:
//使用中文打印出从当日起连续3天是星期几(不够三天时,循环)
//
//输入样例:
//0
//
//输出样例:
//星期日
//星期一
//星期二
#include 
using namespace std;
class weekday
{

public:
	weekday();
	~weekday();
	void setday(int _today);
	void incday();
	void nowday();
private:
	int today;
};

void weekday::nowday()
{
	switch (today)
	{
	case 0:
	{
			  cout << "星期日" << endl;
			  break;
	}
	case 1:
	{
			  cout << "星期一" << endl;
			  break;
	}
	case 2:
	{
			  cout << "星期二" << endl;
			  break;
	}
	case 3:
	{
			  cout << "星期三" << endl;
			  break;
	}
	case 4:
	{
			  cout << "星期四" << endl;
			  break;
	}
	case 5:
	{
			  cout << "星期五" << endl;
			  break;
	}
	case 6:
	{
			  cout << "星期六" << endl;
			  break;
	}
	default:
		break;
	}
}
void weekday::setday(int _today)
{
	today = _today;
}
void weekday::incday()
{
	today = (today + 1) % 7;
}

weekday::weekday()
{
}

weekday::~weekday()
{
}


int main()
{
	int _today;
	weekday data1;
	cin >> _today;
	data1.setday(_today);
	data1.nowday();
	data1.incday();
	data1.nowday();
	data1.incday();
	data1.nowday();
	system("pause");
	return 0;
}