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

📄 person类.cpp

📁 person类 person类 person类 person类 person类 person类 person类 person类 person类 person类 person类
💻 CPP
字号:
#include<iostream>
#include<cstring>
using namespace std;

class wrongdate{};
class wrongid{};
//定义人员类
class Person
{
public:
	Person(){//无参构造函数
	strcpy(name,"张三");
	strcpy(gender,"男");
	strcpy(bopla,"福建省福州市铜盘路315号");
	strcpy(bodat,"1987/3/27");
	strcpy(nation,"汉");
	strcpy(id,"35018219870327135x");
	strcpy(fname,"张宝");
	strcpy(mname,"乔娇");
	strcpy(bloodtype,"ab");
	};
	void set_name(char a[11]);//输入姓名
	void judge_name();//判断姓名的合法性
	void set_gender(char a[3]);//输入性别
	void judge_gender();//判断姓名的合法性
	void set_born_place(char a[41]);//输入出生地址
	void set_born_date(char a[11]);//输入出生年月
	void judge_born_date();//判断日期的合法性
	void set_nation(char a[3]);//输入民族
	void judge_nation();//判断民族的合法性
	void set_ID_card(char a[19]);//输入身份证号码
	void judge_id();//判断身份证号码的合法性
	void set_fathername(char a[11]);//输入父亲的姓名
	void judge_father_name();//判断父亲姓名的合法性
	void set_mothername(char a[11]);//输入母亲的姓名
	void judge_mother_name();//判断母亲姓名的合法性
	void set_blood_type(char a[3]);//输入血型
	void judge_blood_type();//判断血型的合法性
	void show_information();//输出所输入的信息
private:
	char name[11],gender[3],bopla[41],bodat[11],nation[3],id[19],fname[11],mname[11],bloodtype[3];
};

//输入姓名
void Person::set_name(char a[11])
{
	strcpy(name,a);
}

//判断姓名的合法性
void Person::judge_name()
{
	char ch[2];
	int i;
	for(i=0;name[i]!='\0';i+=2)
	{
		ch[1]=name[i];
		ch[2]=name[i+1];
		if(strcmp(ch,"啊")>=0)
			;
		else
		{
			cout<<"姓名输入错误!"<<endl;
		}
	}
}

//输入性别
void Person::set_gender(char a[3])
{
	strcpy(gender,a);
}

//判断性别
void Person::judge_gender()
{
	if(strcmp(gender,"男")==0||strcmp(gender,"女")==0)
		;
	else cout<<"性别输入错误"<<endl;
}

//输入出生地址
void Person::set_born_place(char a[41])
{
	strcpy(bopla,a);
}

//输入出生年月
void Person::set_born_date(char a[11])
{
	strcpy(bodat,a);
}

//判断出生年月的合法性
void Person::judge_born_date()
{
	int i,m,k,l,n,year,month,day,md;
	//计算出年与月之间的字符所在的位数
	for(i=0;i<10;i++)
	{
		if(bodat[i]<'0'||bodat[i]>'9')
		{
			if(m==1) 
			{
				l=i;//用l记录第二个非数字字符的位置
				m+=1;
			}
			if(m==0)
			{
				k=i;
			    m+=1;//用k记录第一个非数字字符的位置
			}
		}
		if(bodat[i]=='\n'&&m==2)
		{
			n=i;
			break;//用n记录结束字符的位置
		}
	}
	if(bodat[k]!=bodat[l])
	{
		cout<<"type wrong"<<endl;
        return(0);
	}

	
	//计算输入的年
	year=(int)(a[0])-48;
	month=(int)(a[k+1])-48;
	day=(int)(a[l+1])-48;
	for(j=1;j<k;j++)
	   year=10*year+(int)(a[j])-48;
	for(j=k+2;j<l;j++)
	   month=10*month+(int)(a[j])-48;
    for(j=l+2;j<n;j++)
		day=10*day+(int)(a[j])-48;
	//判断年的合法性
	if(year==0)
		throw wrongdate();
	//判断月的合法性
	if(month<=0||month>12)
		throw wrongdate()
		//月的返回天数
    switch(month)
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:md=31;break;
	case 4:
	case 6:
	case 9:
	case 11:md=30;break;
	case 2:
		{
			if(leap_year(year))
			   md=29;
		    else 
				md=28;
		    break;
		}
	}
	//判断日的合法性
	if(day<0||day>md)
		throw wrongdate();
}

//输入民族
void Person::set_nation(char a[3])
{
	strcpy(nation,a);
}

//判断民族的合法性
void Person::judge_nation()
{
	if(strcmp(nation,"啊")>=0)
		;
	else cout<<民族输入错误"<<endl;
}

//输入身份证号码
void Person::set_ID_card(char a[19])
{
	strcpy(id,a);
}

//判断省份证号码的合法性
void Person::judge_id()
{
	int gend,i;
	for(i=0;i<4;i++)
	{
	if(bodat[i]==id[6+i])
		;
	else throw wrongid();
	}
	for(i=5;i<7;i++)
	{
		if(bodat[i]==id[5+i])
			;
		else throw wrongid();
	}
	for(i=8;i<10;i++)
	{
		if(bodat[i]==id[4+i])
			;
		else throw wrongid();
	}
	gender=(int)(id[16])-48;
	if(gend%2==1&&strcmp(gender,"男")==0)
		;
	if(gend%2==0&&strcmp(gender,"女")==0)
		;
	else throw wrongid();
}

//输入父亲姓名
void Person::set_fathername(char a[11])
{
	strcpy(fname,a);
}

//判断父亲姓名的合法性
void Person::judge_father_name()
{
	char ch[2];
	int i;
	for(i=0;fname[i]!='\0';i+=2)
	{
		ch[1]=fname[i];
		ch[2]=fname[i+1];
		if(strcmp(ch,"啊")>=0)
			;
		else
		{
			cout<<"父亲姓名输入错误!"<<endl;
		}
	}
}

//输入母亲姓名
void Person::set_mothername(char a[11])
{
	strcpy(mname,a);
}

//判断母亲姓名的合法性
void Person::judge_name()
{
	char ch[2];
	int i;
	for(i=0;mname[i]!='\0';i+=2)
	{
		ch[1]=mname[i];
		ch[2]=mname[i+1];
		if(strcmp(ch,"啊")>=0)
			;
		else
		{
			cout<<"母亲姓名输入错误!"<<endl;
		}
	}
}

//输入血型
void Person::set_blood_type(char a[3])
{
	strcpy(bloodtype,a);
}

//判断血型的合法性
void Person::judge_blood_type()
{
	if(strcmp(bloodtype,"a")==0||strcmp(bloodtype,"b")==0||strcmp(bloodtype,"o")==0||strcmp(bloodtype,"ab")==0)
		;
	if(strcmp(bloodtype,"A")==0||strcmp(bloodtype,"B")==0||strcmp(bloodtype,"O")==0||strcmp(bloodtype,"AB")==0)
		;
	else 
	{
		cout<<"血型输入错误"<<endl;
	}
}

//输出信息
void Person::show_information()
{
	cout<<"姓名:"<<name<<endl;
	cout<<endl;
	cout<<"性别:"<<gender<<endl;
	cout<<endl;
	cout<<"出生地址:"<<bopla<<endl;
	cout<<endl;
	cout<<"出生年月:"<<bodat<<endl;
	cout<<endl;
	cout<<"民族:"<<nation<<endl;
	cout<<endl;
	cout<<"身份证号码:"<<id<<endl;
	cout<<endl;
	cout<<"父亲姓名:"<<fname<<endl;
	cout<<endl;
	cout<<"母亲姓名:"<<mname<<endl;
	cout<<endl;
	cout<<"血型:"<<bloodtype<<endl;
}

int main()
{
	char aname[11],agender[3],abopla[41],abodat[11],anation[3],aid[19],afname[11],amname[11],ablood[3];
	Person p1;

	cout<<"输入你的个人信息,例如:"<<endl;
	p1.show_information();

	cout<<"输入姓名:"<<endl;
	cin>>aname;
	p1.set_name(aname);
	pi.judge_name();

	cout<<"输入性别:"<<endl;
	cin>>agender;
	p1.set_gender(agender);
	p1.judge_gender();

	cout<<"输入出生地址:"<<endl;
	cin>>abopla;
	p1.set_born_place(abopla);

	cout<<"输入出生日期:"<<endl;
	cin>>abodat;
	p1.set_born_date(abodat);
	try
	{
		p1.judge_born_date();
	}
	catch(wrongdate)
	{
		cout<<"输入的出生年月错误!"<<endl;
		exit(1);
	}

	cout<<"输入民族:"<<endl;
	cin>>anation;
	p1.set_nation(anation);
	p1.judge_nation();

	cout<<"输入身份证号码:"<<endl;
	cin>>aid;
	p1.set_ID_card(aid);
	try
	{
		p1.judge_id();
	}
	catch(wrongid)
	{
		cout<<"输入的身份证件与先前的信息不符"<<endl;
		exit(1);
	}

	cout<<"输入父亲姓名:"<<endl;
	cin>>afname;
	p1.set_fathername(afname);
	p1.judge_father_name();

	cout<<"输入母亲姓名:"<<endl;
	cin>>amname;
	p1.set_mothername(amname);
	p1.judge_mother_name();

	cout<<"输入血型:"<<endl;
	cin>>ablood;
	p1.set_blood_type(ablood);
	p1.judge_blood_type();

	p1.show_information();
	return(0);
}









⌨️ 快捷键说明

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