用c++设计一个小型通讯录管理程序,实现通讯录文件的新建、保存、以及通讯录的增、删、改、查功能。要求系统用户界面良好,功能完善,性能稳定
时间: 2023-07-10 18:04:20 浏览: 43
好的,这是一个比较复杂的项目,需要分步骤完成,我会尽量详细地给出代码和解释。首先,我们需要定义通讯录的数据结构,以便于进行增、删、改、查操作。我们可以用一个结构体来表示一个联系人,然后用一个vector来存储所有联系人的信息。
```c++
struct Person {
string name;
string phone;
string email;
};
vector<Person> contacts;
```
接下来,我们需要实现新建、保存和读取通讯录文件的功能。新建通讯录文件就是创建一个空的联系人列表,保存通讯录文件就是将联系人列表写入到文件中,读取通讯录文件就是从文件中读取联系人列表。我们可以用fstream库来实现文件操作。
```c++
void createNewFile() {
contacts.clear();
}
void saveToFile(string filename) {
fstream file(filename, ios::out);
for (auto person : contacts) {
file << person.name << "," << person.phone << "," << person.email << endl;
}
file.close();
}
void readFromFile(string filename) {
fstream file(filename, ios::in);
string line;
while (getline(file, line)) {
stringstream ss(line);
string name, phone, email;
getline(ss, name, ',');
getline(ss, phone, ',');
getline(ss, email, ',');
contacts.push_back({name, phone, email});
}
file.close();
}
```
接下来,我们需要实现增、删、改、查联系人的功能。这些功能都比较简单,只需要遍历联系人列表,然后根据用户的输入进行相应的操作即可。
```c++
void addPerson() {
string name, phone, email;
cout << "Enter name: ";
cin >> name;
cout << "Enter phone number: ";
cin >> phone;
cout << "Enter email address: ";
cin >> email;
contacts.push_back({name, phone, email});
}
void deletePerson() {
string name;
cout << "Enter name: ";
cin >> name;
for (auto it = contacts.begin(); it != contacts.end(); ++it) {
if (it->name == name) {
contacts.erase(it);
break;
}
}
}
void modifyPerson() {
string name;
cout << "Enter name: ";
cin >> name;
for (auto& person : contacts) {
if (person.name == name) {
cout << "Enter new phone number: ";
cin >> person.phone;
cout << "Enter new email address: ";
cin >> person.email;
break;
}
}
}
void searchPerson() {
string name;
cout << "Enter name: ";
cin >> name;
for (auto person : contacts) {
if (person.name == name) {
cout << "Name: " << person.name << endl;
cout << "Phone number: " << person.phone << endl;
cout << "Email address: " << person.email << endl;
break;
}
}
}
```
最后,我们需要实现用户界面,让用户可以通过菜单来选择不同的功能。我们可以用一个无限循环来实现这个界面,然后根据用户的输入调用相应的函数。
```c++
int main() {
while (true) {
cout << "1. New file" << endl;
cout << "2. Open file" << endl;
cout << "3. Save file" << endl;
cout << "4. Add person" << endl;
cout << "5. Delete person" << endl;
cout << "6. Modify person" << endl;
cout << "7. Search person" << endl;
cout << "8. Quit" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
createNewFile();
break;
case 2:
{
string filename;
cout << "Enter filename: ";
cin >> filename;
readFromFile(filename);
}
break;
case 3:
{
string filename;
cout << "Enter filename: ";
cin >> filename;
saveToFile(filename);
}
break;
case 4:
addPerson();
break;
case 5:
deletePerson();
break;
case 6:
modifyPerson();
break;
case 7:
searchPerson();
break;
case 8:
return 0;
default:
cout << "Invalid choice" << endl;
}
}
}
```
这样,我们就完成了一个简单的通讯录管理程序。完整代码如下: