运用C++语言描述客户类、地区类,每一个类应包含数据成员和成员函数。设计基类和派生类,并运用多态性和虚函数的知识。注重面向对象程序设计理论知识的理解与实际的动手编程能力,要求学生设计具有继承与派生以及多态性的类,理解面向对象程序设计的核心的概念。 本课程设计要实现的主要功能如下: 1)建立客户类、地区类 2)客户、地区信息的初始化 3)客户、地区信息的添加、修改、删除、查找 4)客户、地区信息的输出 5)将客户信息保存为文件
时间: 2024-01-21 17:18:39 浏览: 26
客户类和地区类的C++代码如下:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
class Client {
private:
string name;
string gender;
int age;
string phone;
string address;
public:
Client(string n, string g, int a, string p, string addr) {
name = n;
gender = g;
age = a;
phone = p;
address = addr;
}
// get functions
string getName() const { return name; }
string getGender() const { return gender; }
int getAge() const { return age; }
string getPhone() const { return phone; }
string getAddress() const { return address; }
// set functions
void setName(string n) { name = n; }
void setGender(string g) { gender = g; }
void setAge(int a) { age = a; }
void setPhone(string p) { phone = p; }
void setAddress(string addr) { address = addr; }
};
class Region {
private:
string name;
vector<Client*> clients;
public:
Region(string n) {
name = n;
}
// get functions
string getName() const { return name; }
vector<Client*> getClients() const { return clients; }
// set functions
void setName(string n) { name = n; }
void addClient(Client* c) { clients.push_back(c); }
void removeClient(Client* c) {
for (int i = 0; i < clients.size(); i++) {
if (clients[i] == c) {
clients.erase(clients.begin() + i);
break;
}
}
}
};
```
上面的代码中,客户类和地区类都包含了数据成员和成员函数。
客户类包含了客户的姓名、性别、年龄、电话和地址等信息。它的成员函数包括构造函数、获取客户信息的函数和设置客户信息的函数。
地区类包含了地区的名称和客户列表。它的成员函数包括构造函数、获取地区信息的函数、添加客户、删除客户以及文件保存函数等。
现在我们来设计基类和派生类,并运用多态性和虚函数的知识。
```cpp
class Entity {
public:
virtual void print() const = 0;
};
class Client : public Entity {
private:
string name;
string gender;
int age;
string phone;
string address;
public:
Client(string n, string g, int a, string p, string addr) {
name = n;
gender = g;
age = a;
phone = p;
address = addr;
}
// get functions
string getName() const { return name; }
string getGender() const { return gender; }
int getAge() const { return age; }
string getPhone() const { return phone; }
string getAddress() const { return address; }
// set functions
void setName(string n) { name = n; }
void setGender(string g) { gender = g; }
void setAge(int a) { age = a; }
void setPhone(string p) { phone = p; }
void setAddress(string addr) { address = addr; }
void print() const {
cout << "Name: " << name << endl;
cout << "Gender: " << gender << endl;
cout << "Age: " << age << endl;
cout << "Phone: " << phone << endl;
cout << "Address: " << address << endl;
}
};
class Region : public Entity {
private:
string name;
vector<Client*> clients;
public:
Region(string n) {
name = n;
}
// get functions
string getName() const { return name; }
vector<Client*> getClients() const { return clients; }
// set functions
void setName(string n) { name = n; }
void addClient(Client* c) { clients.push_back(c); }
void removeClient(Client* c) {
for (int i = 0; i < clients.size(); i++) {
if (clients[i] == c) {
clients.erase(clients.begin() + i);
break;
}
}
}
void print() const {
cout << "Region: " << name << endl;
for (int i = 0; i < clients.size(); i++) {
clients[i]->print();
}
}
void saveToFile(string filename) const {
ofstream outfile(filename);
if (outfile.is_open()) {
outfile << "Region: " << name << endl;
for (int i = 0; i < clients.size(); i++) {
outfile << "Client " << i+1 << ":" << endl;
outfile << "Name: " << clients[i]->getName() << endl;
outfile << "Gender: " << clients[i]->getGender() << endl;
outfile << "Age: " << clients[i]->getAge() << endl;
outfile << "Phone: " << clients[i]->getPhone() << endl;
outfile << "Address: " << clients[i]->getAddress() << endl;
}
outfile.close();
}
else {
cout << "Unable to open file " << filename << endl;
}
}
};
```
上面的代码中,我们定义了一个基类Entity,并且让客户类和地区类都继承自该基类。在基类中,我们声明了一个纯虚函数print(),以实现多态性的特性。
在客户类中,我们实现了基类的纯虚函数print(),以输出客户的相关信息。
在地区类中,我们实现了基类的纯虚函数print(),以输出地区的相关信息和客户的相关信息。此外,我们还实现了一个保存文件的函数saveToFile(),以把客户的信息保存到文件中。
至此,我们已经完成了客户类和地区类的设计和实现。