要求定义一个地址类(Address):
- 包含省、市、详细地址、邮编四个私有数据成员。
- 一个构造函数,一个显示信息的成员函数。
定义一个客户类(Client):
- 包含姓名,身份证号,地址(Address 对象)三个私有数据成员。
- 一个构造函数:构造函数需校验身份证是否合法。
校验规则:
(1)身份证号码长度为18位;
(2)根据身份证号码的第7位到14位提取出日期,合法年份介于1900~2025区间,合法月份介于1~12区间,合法日介于1~31区间;
若不满足上述条件,显示非法身份证号码,退出程序。 - 一个输出客户信息的函数。
语法要求:
-
应用组合类完成。
-
将类中不涉及修改数据成员的成员函数定义为const
提示:
-
C++string类的substr函数 string substr (size_t pos = 0, size_t len = npos) const; 可以获得string的字串
pos: substr开始的第一个字符的位置; len:substr的长度;
例如:string s="012345678";s.substr(3,2)的值为"34".
-
exit(0);//退出程序
输入格式:
输入2行
第1行:客户姓名 客户身份证号
第2行:省 市 详细地址 邮政编码
输出格式:
输出客户的信息。
输入样例1:
张小天 441301201209121601
广东 惠州 惠州学院 516007
输出样例2:
****************************************************
客户姓名:张小天
身份证号码:441301201209121601
出生日期:2012年09月12日
客户地址:广东省惠州市惠州学院 邮编:516007
****************************************************
输入样例2:
李莉 4413012012091216011
广东 惠州 惠州学院 516007
输出样例2:
非法身份证号码.
输入样例3:
欧阳月 441301201209321601
广东 惠州 惠州学院 516007
输出样例3:
非法身份证号码.
=========================================================================
#include <iostream>
#include <string>
using namespace std;
class Address
{
public:
Address(string a,string b,string c,string g) : A(a), B(b), C(c), G(g) {}
void getid() const
{
cout << "客户地址:" << A << "省" << B << "市" << C << " " << "邮编:" << G << endl;
}
private:
string A, B, C;
string G;
};
class Client
{
public:
Client(string a,string b,string c,string g,string d,string e) : ID(a, b, c, g),D(d), E(e)
{
if(E.length() == 18)
{
En1 = E.substr(6, 4);
Em1 = E.substr(10, 2);
Ed1 = E.substr(12, 2);
En = stoi(E.substr(6, 4));
Em = stoi(E.substr(10, 2));
Ed = stoi(E.substr(12, 2));
if (En <= 1900 || En >= 2025 || Em < 1 || Em > 12 || Ed < 1 || Ed > 31)
{
cout << "非法身份证号码." << endl;
exit(0);
}
}
else
{
cout << "非法身份证号码." << endl;
exit(0);
}
}
void getdd() const
{
cout << "客户姓名:" << D << endl;
cout << "身份证号码:" << E << endl;
cout << "出生日期:" << En1 << "年" << Em1 << "月" << Ed1 << "日" << endl;
ID.getid();
}
private:
Address ID;
string D;
string E;
string En1,Em1,Ed1;
int En, Em, Ed;
};
int main()
{
string A,B,C,D,E,G;
cin>>D>>E>>A>>B>>C>>G;
Client T(A,B,C,G,D,E);
cout<<"****************************************************"<<endl;
T.getdd();
cout<<"****************************************************"<<endl;
}