设计基类Person和其派生类用户类User
- 设计一个基类Person,三个私有成员变量包括Name(姓名),Age(年龄)等成员变量,构造函数包括缺省构造函数和二参数构造函数,缺省构造函数下将Name设为“XXX”,Age设为18,二参数构造函数按照实际的值对成员变量初始化,show_person()函数用来显示Name(姓名),Age(年龄)的内容。
- 设计一个用户类User,由Person基类公有继承而来,新增的成员变量包括Address(用户地址),MobilePhone(手机号码),ID(身份证号码),使用5参数构造函数进行成员变量初始化,在构造函数内对手机号码和身份证号码进行位数检查,手机号码有效位数为11位,身份证号码有效位数为18位。若不满足上述条件,显示非法手机号码或非法身份证号码,退出程序;其他成员函数包括有:
- PhoneOperator()(求出并显示手机通信运营商),手机通信运营商计算规则按照手机号码的前三位判定:139和138号段为移动公司,130和131号段为联通公司,189和188号段设为电信公司,其他号段显示为暂时未知。
- show_user()(显示用户的全部信息,包括姓名、年龄、地址、手机号码、身份证号码、手机通信运营商信息)
- 在主函数中,声明2-3个用户类对象,针对不同手
机运营商情况进行测试#include<iostream> using namespace std; class Person { protected: string Name; int Age; public: Person() { Name = "XXX"; Age = 18; } Person(string name, int age) { this->Age = age; this->Name = name; } void show_person() { cout << "Name:" << this->Name << endl; cout << "Age:" << this->Age << endl; } }; /*设计一个用户类User,由Person基类公有继承而来,新增的成员变量包括Address(用户地址), MobilePhone(手机号码),ID(身份证号码),使用5参数构造函数进行成员变量初始化, 在构造函数内对手机号码和身份证号码进行位数检查,手机号码有效位数为11位,身份证号码有效位数为18位。 若不满足上述条件,显示非法手机号码或非法身份证号码,退出程序;其他成员函数包括有: a)PhoneOperator()(求出并显示手机通信运营商),手机通信运营商计算规则按照手机号码的前三位判定: 139和138号段为移动公司,130和131号段为联通公司,189和188号段设为电信公司,其他号段显示为暂时未知。 b)show_user()(显示用户的全部信息,包括姓名、年龄、地址、手机号码、身份证号码、手机通信运营商信息)*/ class User:public Person { protected: string Address; string MobilePhone; string ID; int flag; public: User(string name,int age,string Address,string MobilePhone,string ID) :Person(name,age) { this->flag = 1; this->Address = Address; this->ID = ID; this->MobilePhone = MobilePhone; int len1 = ID.length(); int len2 = MobilePhone.length(); if (len1 != 18 || len2 != 11) { this->flag = 0; cout << "输出错误,已经退出程序" << endl; } } string PhoneOperator() { string str1 = "139"; string str2 = "138"; string str3 = "130"; string str4 = "131"; string str5 = "189"; string str6 = "188"; string str = "000";//记得初始化要不会崩辣 for (int i = 0; i < 3; i++) { str[i] = MobilePhone[i]; } if (flag) { if (str == str1 || str == str2) return "电信运营"; else if (str == str1 || str == str2) return "联通运营"; else if (str == str1 || str == str2) return "移动运营"; else return "未知运营商"; } else return "\0"; } void show_user() { if (flag) { cout << "Name:" << this->Name << endl; cout << "Age:" << this->Age << endl; cout << "MobilePhone:" << this->MobilePhone << endl; cout << "ID:" << this->ID << endl; cout << "Address:" << this->Address << endl; cout << "运营商:" << this->PhoneOperator() << endl; } else cout << "非法输入,已为您退出程序,请重新输入!!!" << endl; } }; int main() {//string name,int age,string Address,string MobilePhone,string ID User user1("tom", 18, "惠州学院", "12345678910", "44058212220619453X"); user1.show_user(); User user2("tom", 18, "惠州学院", "1234567910", "44058212220619453X"); user2.show_person(); User user3("tom", 18, "惠州学院", "12345678910", "4405821222061945X"); user3.show_person(); system("pause"); }