C++实现通讯录管理系统设计
通讯录管理系统是一个简单的应用程序,它允许用户存储和管理联系人的信息。该应用程序以简单的控制台界面为用户提供了添加、删除、修改和搜索联系人的功能。
设计思路
设计一个通讯录管理系统,我们需要考虑以下三个关键点:
-
数据结构:我们需要选择合适的数据结构来存储联系人的信息,并提供相应的操作,例如添加、删除和搜索。
-
用户界面:我们需要为用户提供一个易于使用的界面,用户可以使用一组简单的命令来执行预定义的操作。
-
操作实现:我们需要实现一些函数来管理通讯录中的联系人信息,包括添加、删除、修改和搜索功能。这些功能需要访问和修改通讯录的数据结构。
数据结构设计
在本案例中,我们选择vector作为存储通讯录联系人信息的数据结构。vector是C++ STL库中的标准容器,可以实现动态数组。
vector可用于存储所有类型元素,因此我们可以创建一个Contact结构体,该结构体包含联系人姓名、电话号码和电子邮件地址等信息。
struct Contact {
string Name;
string PhoneNumber;
string Email;
};
我们将创建一个全局vector变量contacts,该变量将保存所有联系人的信息。
vector<Contact> contacts;
用户界面设计
我们将用户界面实现为一个控制台应用程序,它将接受用户输入,并通过调用通讯录管理函数来执行操作。 所有与用户的交互都是通过控制台界面实现的。
我们为用户提供以下命令:
- add: 添加一个联系人到通讯录。
- delete: 删除一个联系人从通讯录。
- search: 通过联系人姓名搜索通讯录。
- update: 更新现有联系人的信息。
- list: 列出所有联系人在通讯录。
函数实现
下面是通讯录管理函数的完整代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Contact {
string Name;
string PhoneNumber;
string Email;
};
vector<Contact> contacts;
void addContact() {
Contact contact;
cout << endl << "Enter contact name: ";
getline(cin, contact.Name);
cout << "Enter phone number: ";
getline(cin, contact.PhoneNumber);
cout << "Enter email: ";
getline(cin, contact.Email);
contacts.push_back(contact);
cout << endl << "Contact added!" << endl << endl;
}
void deleteContact() {
int index;
cout << endl << "Enter index of contact to delete: ";
cin >> index;
cin.ignore();
if (index >= 0 && index < contacts.size()) {
contacts.erase(contacts.begin() + index);
cout << endl << "Contact deleted!" << endl << endl;
} else {
cout << endl << "Invalid index!" << endl << endl;
}
}
void searchContact() {
string name;
cout << endl << "Enter contact name to search for: ";
getline(cin, name);
bool found = false;
for (int i = 0; i < contacts.size(); i++) {
if (contacts[i].Name == name) {
cout << endl << "Contact found:" << endl;
cout << "Name: " << contacts[i].Name << endl;
cout << "Phone: " << contacts[i].PhoneNumber << endl;
cout << "Email: " << contacts[i].Email << endl << endl;
found = true;
break;
}
}
if (!found) {
cout << endl << "Contact not found!" << endl << endl;
}
}
void updateContact() {
int index;
cout << endl << "Enter index of contact to update: ";
cin >> index;
cin.ignore();
if (index >= 0 && index < contacts.size()) {
Contact& contact = contacts[index];
cout << endl << "Enter new contact name (or press enter to keep current name): ";
string name;
getline(cin, name);
if (!name.empty()) {
contact.Name = name;
}
cout << "Enter new phone number (or press enter to keep current phone number): ";
string phoneNumber;
getline(cin, phoneNumber);
if (!phoneNumber.empty()) {
contact.PhoneNumber = phoneNumber;
}
cout << "Enter new email (or press enter to keep current email): ";
string email;
getline(cin, email);
if (!email.empty()) {
contact.Email = email;
}
cout << endl << "Contact updated!" << endl << endl;
} else {
cout << endl << "Invalid index!" << endl << endl;
}
}
void listContacts() {
if (contacts.empty()) {
cout << endl << "Your address book is empty!" << endl << endl;
} else {
cout << endl << "Your address book contains the following contacts:" << endl << endl;
for (int i = 0; i < contacts.size(); i++) {
cout << "Index: " << i << endl;
cout << "Name: " << contacts[i].Name << endl;
cout << "Phone: " << contacts[i].PhoneNumber << endl;
cout << "Email: " << contacts[i].Email << endl << endl;
}
}
}
void printMenu() {
cout << "****Address Book****" << endl << endl;
cout << "1. Add Contact" << endl;
cout << "2. Delete Contact" << endl;
cout << "3. Search Contacts" << endl;
cout << "4. Update Contact" << endl;
cout << "5. List All Contacts" << endl;
cout << "6. Quit" << endl << endl;
cout << "Please select an option: ";
}
int main() {
int choice;
do {
printMenu();
cin >> choice;
cin.ignore();
switch (choice) {
case 1:
addContact();
break;
case 2:
deleteContact();
break;
case 3:
searchContact();
break;
case 4:
updateContact();
break;
case 5:
listContacts();
break;
case 6:
cout << endl << "Goodbye!" << endl << endl;
break;
default:
cout << endl << "Invalid choice!" << endl << endl;
break;
}
} while (choice != 6);
return 0;
}
示例说明
示例1
在输入数字4后(选中“更新联系人”功能),系统会提示用户输入需要更新的联系人的下标。下标也称为索引,是标识vector容器中元素的数字。下标从零开始计数,因此如果用户输入0,则表示需要更新第一个联系人。如果用户输入2,则表示需要更新第三个联系人。
用户输入数字2,系统会显示以下消息:
Enter index of contact to update:
假设用户输入数字1作为下标值。系统会显示以下消息:
Enter new contact name (or press enter to keep current name):
用户可以根据需要更新联系人的姓名、电话号码和电子邮件地址。如果用户想保持任一字段不变,则可以按Enter键。在本例中,假设用户想更改电子邮件地址,因此他输入以下内容:
Enter new contact name (or press enter to keep current name):
Enter new phone number (or press enter to keep current phone number):
Enter new email (or press enter to keep current email): someoneelse@example.com
完成后系统会显示以下消息:
Contact updated!
现在用户可以选择其他选项,或者退出系统。
示例2
用户可以通过下标删除联系人。在输入数字2后(选中“删除联系人”功能),系统会提示用户输入需要删除的联系人的下标。
用户输入数字0,系统会显示以下消息:
Enter index of contact to delete:
该操作将删除第一个联系人。系统会显示以下消息:
Contact deleted!
在该联系人被从容器中删除后,用户可以选择其他选项,或者退出系统。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现通讯录管理系统设计 - Python技术站