⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 person.h

📁 C++参考书
💻 H
字号:

#ifndef PERSON_H
#define PERSON_H

#include <iostream>
#include <string>
#include "date.h"
#include "ssn.h"
using namespace std ;

class Person
{
	public:
		enum Sex { UNKNOWN, MALE, FEMALE } ;
		enum MaritalStatus { SINGLE, MARRIED, DIVORCED, WIDOWED } ;
		
		Person( const string& nm = "" ) : name( nm ), sex( UNKNOWN ), mstatus( SINGLE ) { } 
		virtual ~Person( void ) { }

		void setName( const string& nm )
		{ name = nm ; }

		void setAddress( const string& addr )
		{ address = addr ; }

		void setPhone( const string& phon )
		{ phone = phon ; }

		void setSSN( const SSN sn )
		{ ssn = sn ; }

		void setDob( const Date& dtb )
		{ dob =dtb ; }

		void setSex( Sex sx )
		{ sex = sx ; }

		void setMaritalStatus( MaritalStatus st )
		{ mstatus = st ; }

		const string& getName( void ) const
		{ return name ; }

		const string& getAddress( void ) const
		{ return address ; }

		const string& getPhone( void ) const
		{ return phone ; }

		SSN getSSN( void ) const
		{ return ssn ; }

		const Date& getDob( void ) const
		{ return dob ; }

		Sex getSex( void ) const
		{ return sex ; }

		MaritalStatus getMaritalStatus( void ) const
		{ return mstatus ; }

		virtual void formattedDisplay( ostream& os ) = NULL ;
		
	protected:
		string name ;
		string address ;
		string phone ;
		SSN ssn ;
		Date dob ;
		Sex sex ;
		MaritalStatus mstatus ;
} ;

void Person::formattedDisplay( ostream& os )
{
	os << "Name:          " << name    << endl ;
	os << "Address:       " << address << endl ;
	os << "Phone:         " << phone   << endl ;
	os << "SSN:           " << ssn     << endl ;
	os << "Date of birth: " << dob     << endl ;
	os << "Sex:           " ;

	switch ( sex ) {
		case Person::MALE:
			os << "male" << endl ;
			break ;
		case Person::FEMALE:
			os << "female" << endl ;
			break ;
		default:
			os << "unknown" << endl ;
	}

	os << "Marital status:" ;

	switch ( getMaritalStatus() ) {
		case Person::SINGLE:
			os << "single" << endl ;
			break ;
		case Person::MARRIED:
			os << "married" << endl ;
			break ;
		case Person::DIVORCED:
			os << "divorced" << endl ;
			break ;
		case Person::WIDOWED:
			os << "widowed" << endl ;
		default:
			os << "unknown" << endl ;
			break ;
	}
}

ostream& operator << ( ostream &os, const Person &person )
{
	os
		<< person.getName() << endl
		<< person.getAddress() << endl
		<< person.getPhone() << endl
		<< person.getSSN() << endl
		<< person.getDob() << endl
		<< person.getSex() << endl
		<< person.getMaritalStatus() << endl ;

	return os ;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -