设计一个通讯录管理系统,要求实现通讯录的新建,保存,以及通讯录的增,删,改,查功能,以文件来储存,使用C++流类库中的ifstream和ofstream类实现文件操作
时间: 2023-08-22 07:10:05 浏览: 53
好的,我可以为您设计一个通讯录管理系统,满足您的要求。
首先,我们需要定义一个联系人类 Contact,包含联系人的姓名、电话、地址等信息。代码如下:
```cpp
class Contact {
public:
string name;
string phone;
string address;
};
```
接下来,我们需要定义一个通讯录类 ContactList,包含通讯录的名称、联系人列表等信息,并且实现通讯录的增、删、改、查等功能。代码如下:
```cpp
class ContactList {
public:
string name;
vector<Contact> contacts;
// 新建通讯录
void create(string name);
// 保存通讯录
void save();
// 添加联系人
void add(Contact contact);
// 删除联系人
void remove(int index);
// 修改联系人
void modify(int index, Contact contact);
// 查找联系人
vector<int> search(string keyword);
};
```
其中,create() 方法用于新建一个通讯录,save() 方法用于保存通讯录到文件中,add() 方法用于添加一个联系人,remove() 方法用于删除一个联系人,modify() 方法用于修改一个联系人,search() 方法用于根据关键字查找联系人,并返回匹配的联系人在联系人列表中的下标。
接下来,我们需要实现以上方法。代码如下:
```cpp
// 新建通讯录
void ContactList::create(string name) {
this->name = name;
contacts.clear();
}
// 保存通讯录
void ContactList::save() {
ofstream fout(name + ".txt");
if (fout.is_open()) {
fout << name << endl;
for (int i = 0; i < contacts.size(); i++) {
fout << contacts[i].name << " " << contacts[i].phone << " " << contacts[i].address << endl;
}
fout.close();
}
}
// 添加联系人
void ContactList::add(Contact contact) {
contacts.push_back(contact);
}
// 删除联系人
void ContactList::remove(int index) {
contacts.erase(contacts.begin() + index);
}
// 修改联系人
void ContactList::modify(int index, Contact contact) {
contacts[index] = contact;
}
// 查找联系人
vector<int> ContactList::search(string keyword) {
vector<int> result;
for (int i = 0; i < contacts.size(); i++) {
if (contacts[i].name.find(keyword) != string::npos || contacts[i].phone.find(keyword) != string::npos || contacts[i].address.find(keyword) != string::npos) {
result.push_back(i);
}
}
return result;
}
```
以上代码中,save() 方法使用 ofstream 类打开文件并写入通讯录名称和联系人列表,add() 方法使用 vector 的 push_back() 方法添加一个联系人,remove() 方法使用 vector 的 erase() 方法删除一个联系人,modify() 方法直接替换指定下标的联系人,search() 方法使用 string 的 find() 方法查找匹配的联系人并返回下标列表。
最后,我们可以通过调用以上方法实现通讯录管理系统的功能。例如,我们可以这样使用:
```cpp
int main() {
ContactList contactList;
// 新建通讯录
contactList.create("My Contacts");
// 添加联系人
Contact contact1;
contact1.name = "Tom";
contact1.phone = "123456789";
contact1.address = "Beijing, China";
contactList.add(contact1);
// 删除联系人
contactList.remove(0);
// 修改联系人
Contact contact2;
contact2.name = "Jerry";
contact2.phone = "987654321";
contact2.address = "Shanghai, China";
contactList.modify(0, contact2);
// 查找联系人
vector<int> result = contactList.search("Jerry");
for (int i = 0; i < result.size(); i++) {
Contact contact = contactList.contacts[result[i]];
cout << contact.name << " " << contact.phone << " " << contact.address << endl;
}
// 保存通讯录
contactList.save();
return 0;
}
```
以上代码中,我们新建一个通讯录,添加一个联系人,删除一个联系人,修改一个联系人,查找关键字为 "Jerry" 的联系人并输出,最后保存通讯录到文件中。
这就是一个简单的通讯录管理系统的设计和实现。