用c++中的类实现班级通讯录系统,要求如下:1) 该系统主要处理通讯录的相关信息。 2) 通讯录信息主要包括:姓名、班级、手机、家庭电话、电子邮件、通讯录地址、邮编等内容。 3) 完成以下的操作:实现通讯录信息的添加、修改、删除和查询。 提示: 1)建立班级类、通讯录类 2)班级、通讯录信息的初始化 3)班级、通讯录信息的添加、修改、删除、查找 4)班级、通讯录信息的输出 5)将通讯录信息保存为文件
时间: 2023-08-31 07:40:50 浏览: 168
好的,我可以提供一个班级通讯录的C++类实现示例代码,符合你的要求。代码如下:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
class Contact {
private:
string name;
string className;
string mobilePhone;
string homePhone;
string email;
string address;
string zipCode;
public:
Contact(string _name, string _className, string _mobilePhone, string _homePhone, string _email, string _address, string _zipCode) {
name = _name;
className = _className;
mobilePhone = _mobilePhone;
homePhone = _homePhone;
email = _email;
address = _address;
zipCode = _zipCode;
}
string getName() {
return name;
}
string getClassName() {
return className;
}
string getMobilePhone() {
return mobilePhone;
}
string getHomePhone() {
return homePhone;
}
string getEmail() {
return email;
}
string getAddress() {
return address;
}
string getZipCode() {
return zipCode;
}
void setName(string _name) {
name = _name;
}
void setClassName(string _className) {
className = _className;
}
void setMobilePhone(string _mobilePhone) {
mobilePhone = _mobilePhone;
}
void setHomePhone(string _homePhone) {
homePhone = _homePhone;
}
void setEmail(string _email) {
email = _email;
}
void setAddress(string _address) {
address = _address;
}
void setZipCode(string _zipCode) {
zipCode = _zipCode;
}
};
class ClassContactList {
private:
vector<Contact*> contacts;
public:
ClassContactList() {}
void addContact(Contact* contact) {
contacts.push_back(contact);
}
void modifyContact(string name, Contact* newContact) {
for (int i = 0; i < contacts.size(); i++) {
if (contacts[i]->getName() == name) {
contacts[i] = newContact;
break;
}
}
}
void deleteContact(string name) {
for (int i = 0; i < contacts.size(); i++) {
if (contacts[i]->getName() == name) {
delete contacts[i];
contacts.erase(contacts.begin() + i);
break;
}
}
}
Contact* findContact(string name) {
for (int i = 0; i < contacts.size(); i++) {
if (contacts[i]->getName() == name) {
return contacts[i];
}
}
return NULL;
}
void listContacts() {
for (int i = 0; i < contacts.size(); i++) {
cout << "Name: " << contacts[i]->getName() << endl;
cout << "Class: " << contacts[i]->getClassName() << endl;
cout << "Mobile Phone: " << contacts[i]->getMobilePhone() << endl;
cout << "Home Phone: " << contacts[i]->getHomePhone() << endl;
cout << "Email: " << contacts[i]->getEmail() << endl;
cout << "Address: " << contacts[i]->getAddress() << endl;
cout << "Zip Code: " << contacts[i]->getZipCode() << endl;
cout << endl;
}
}
void saveToFile(string fileName) {
ofstream outFile(fileName);
for (int i = 0; i < contacts.size(); i++) {
outFile << contacts[i]->getName() << "\t" << contacts[i]->getClassName() << "\t" << contacts[i]->getMobilePhone() << "\t" << contacts[i]->getHomePhone() << "\t" << contacts[i]->getEmail() << "\t" << contacts[i]->getAddress() << "\t" << contacts[i]->getZipCode() << endl;
}
outFile.close();
}
void loadFromFile(string fileName) {
ifstream inFile(fileName);
string line;
while (getline(inFile, line)) {
string name, className, mobilePhone, homePhone, email, address, zipCode;
stringstream ss(line);
getline(ss, name, '\t');
getline(ss, className, '\t');
getline(ss, mobilePhone, '\t');
getline(ss, homePhone, '\t');
getline(ss, email, '\t');
getline(ss, address, '\t');
getline(ss, zipCode, '\t');
Contact* contact = new Contact(name, className, mobilePhone, homePhone, email, address, zipCode);
addContact(contact);
}
inFile.close();
}
};
int main() {
ClassContactList* classList = new ClassContactList();
// 从文件中加载通讯录信息
classList->loadFromFile("contacts.txt");
// 添加联系人
Contact* contact1 = new Contact("Alice", "Class A", "1234567", "7654321", "alice@example.com", "123 Main St", "12345");
classList->addContact(contact1);
// 修改联系人
Contact* newContact2 = new Contact("Bob", "Class B", "2345678", "8765432", "bob@example.com", "456 Maple Ave", "67890");
classList->modifyContact("Bob", newContact2);
// 删除联系人
classList->deleteContact("Charlie");
// 查询联系人
Contact* contact3 = classList->findContact("David");
if (contact3 != NULL) {
cout << "Name: " << contact3->getName() << endl;
cout << "Class: " << contact3->getClassName() << endl;
cout << "Mobile Phone: " << contact3->getMobilePhone() << endl;
cout << "Home Phone: " << contact3->getHomePhone() << endl;
cout << "Email: " << contact3->getEmail() << endl;
cout << "Address: " << contact3->getAddress() << endl;
cout << "Zip Code: " << contact3->getZipCode() << endl;
cout << endl;
} else {
cout << "Contact not found." << endl;
}
// 列出所有联系人
classList->listContacts();
// 将通讯录信息保存到文件
classList->saveToFile("contacts.txt");
return 0;
}
```
这个代码中,我们定义了两个类:`Contact` 和 `ClassContactList`。`Contact` 类表示一个联系人,包括姓名、班级、手机、家庭电话、电子邮件、通讯录地址和邮编;`ClassContactList` 类表示一个班级通讯录,包含多个联系人。
在 `ClassContactList` 类中,我们使用了一个向量 `contacts` 来存储联系人。我们定义了五个方法:`addContact`、`modifyContact`、`deleteContact`、`findContact` 和 `listContacts`。`addContact` 方法可以将一个联系人添加到通讯录中,`modifyContact` 方法可以修改一个联系人的信息,`deleteContact` 方法可以删除一个联系人,`findContact` 方法可以根据姓名查找一个联系人,`listContacts` 方法可以列出通讯录中所有联系人的信息。此外,我们还定义了两个方法 `saveToFile` 和 `loadFromFile`,用于将通讯录信息保存到文件和从文件中加载通讯录信息。
在 `main` 函数中,我们创建了一个班级通讯录对象,然后进行了添加、修改、删除、查询、列出所有联系人以及将通讯录信息保存到文件的操作。
希望这个示例代码可以对你有所帮助!
阅读全文