下面是C++简易通讯录系统实现流程的详细攻略:
1. 设计思路
本通讯录系统主要由以下几个部分组成:
- 联系人信息类ContactPerson:
- 包含联系人姓名、性别、电话号码、住址等属性。
- 实现获取、设置各属性值的方法。
- 通讯录类Contacts:
- 包含多个联系人对象,可以进行联系人的添加、删除、修改、遍历等操作。
- 通过文件操作实现通讯录的存储和读取。
- 主函数menu:
- 提供用户菜单,实现用户和通讯录的交互。
- 主要功能包括添加联系人、显示所有联系人、删除联系人、修改联系人、查找联系人、清空所有联系人、退出程序等。
2. 代码实现
2.1 ContactPerson类
class ContactPerson {
protected:
std::string name_ = ""; // 姓名
std::string gender_ = ""; // 性别
std::string phone_ = ""; // 电话号码
std::string address_ = ""; // 住址
public:
ContactPerson() = default;
ContactPerson(const std::string& name, const std::string& gender, const std::string& phone, const std::string& address)
: name_(name), gender_(gender), phone_(phone), address_(address)
{}
// 获取联系人信息
std::string getName() const {
return name_;
}
std::string getGender() const {
return gender_;
}
std::string getPhone() const {
return phone_;
}
std::string getAddress() const {
return address_;
}
// 设置联系人信息
void setName(const std::string& name) {
name_ = name;
}
void setGender(const std::string& gender) {
gender_ = gender;
}
void setPhone(const std::string& phone) {
phone_ = phone;
}
void setAddress(const std::string& address) {
address_ = address;
}
};
2.2 Contacts类
class Contacts {
protected:
std::vector<ContactPerson> contact_list_; // 联系人列表
public:
// 添加联系人
void addContact(const ContactPerson& contact_person) {
contact_list_.push_back(contact_person);
}
// 删除联系人
void deleteContact(int index) {
if (index >= contact_list_.size()) {
return;
}
contact_list_.erase(contact_list_.begin() + index);
}
// 修改联系人
void modifyContact(int index, const ContactPerson& contact_person) {
if (index >= contact_list_.size()) {
return;
}
contact_list_[index] = contact_person;
}
// 查找联系人
int findContact(const std::string& name) {
for (int i = 0; i < contact_list_.size(); i++) {
if (contact_list_[i].getName() == name) {
return i;
}
}
return -1;
}
// 获取联系人列表
std::vector<ContactPerson> getContactList() const {
return contact_list_;
}
// 清空所有联系人
void clearAllContacts() {
contact_list_.clear();
}
// 读取通讯录
void load(const std::string& filename) {
std::ifstream fin(filename);
while (fin) {
std::string name, gender, phone, address;
fin >> name >> gender >> phone >> address;
if (name.length() > 0) {
ContactPerson cp(name, gender, phone, address);
contact_list_.push_back(cp);
}
}
fin.close();
}
// 存储通讯录
void save(const std::string& filename) {
std::ofstream fout(filename);
for (auto cp : contact_list_) {
fout << cp.getName() << " " << cp.getGender() << " " << cp.getPhone() << " " << cp.getAddress() << std::endl;
}
fout.close();
}
};
2.3 主函数menu
int main()
{
Contacts contacts;
contacts.load("contacts.txt");
while (true) {
std::cout << "***** 通讯录程序 *****" << std::endl;
std::cout << "1 添加联系人" << std::endl;
std::cout << "2 显示所有联系人" << std::endl;
std::cout << "3 删除联系人" << std::endl;
std::cout << "4 修改联系人" << std::endl;
std::cout << "5 查找联系人" << std::endl;
std::cout << "6 清空所有联系人" << std::endl;
std::cout << "0 退出程序" << std::endl;
int choice;
std::cout << "请输入您的选择:";
std::cin >> choice;
if (choice == 1) {
std::string name, gender, phone, address;
std::cout << "请输入姓名:";
std::cin >> name;
std::cout << "请输入性别:";
std::cin >> gender;
std::cout << "请输入电话:";
std::cin >> phone;
std::cout << "请输入住址:";
std::cin >> address;
ContactPerson cp(name, gender, phone, address);
contacts.addContact(cp);
std::cout << "添加联系人成功!" << std::endl;
}
else if (choice == 2) {
std::vector<ContactPerson> contact_list = contacts.getContactList();
int index = 1;
for (auto cp : contact_list) {
std::cout << "编号:" << index++ << std::endl;
std::cout << "姓名:" << cp.getName() << std::endl;
std::cout << "性别:" << cp.getGender() << std::endl;
std::cout << "电话:" << cp.getPhone() << std::endl;
std::cout << "住址:" << cp.getAddress() << std::endl << std::endl;
}
}
else if (choice == 3) {
std::cout << "请输入要删除的联系人编号:";
int index;
std::cin >> index;
contacts.deleteContact(index - 1);
std::cout << "删除联系人成功!" << std::endl;
}
else if (choice == 4) {
std::cout << "请输入要修改的联系人编号:";
int index;
std::cin >> index;
std::string name, gender, phone, address;
std::cout << "请输入姓名:";
std::cin >> name;
std::cout << "请输入性别:";
std::cin >> gender;
std::cout << "请输入电话:";
std::cin >> phone;
std::cout << "请输入住址:";
std::cin >> address;
ContactPerson cp(name, gender, phone, address);
contacts.modifyContact(index - 1, cp);
std::cout << "修改联系人成功!" << std::endl;
}
else if (choice == 5) {
std::cout << "请输入要查找的联系人姓名:";
std::string name;
std::cin >> name;
int index = contacts.findContact(name);
if (index == -1) {
std::cout << "找不到该联系人!" << std::endl;
}
else {
std::cout << "找到联系人:" << std::endl;
ContactPerson cp = contacts.getContactList()[index];
std::cout << "姓名:" << cp.getName() << std::endl;
std::cout << "性别:" << cp.getGender() << std::endl;
std::cout << "电话:" << cp.getPhone() << std::endl;
std::cout << "住址:" << cp.getAddress() << std::endl;
}
}
else if (choice == 6) {
contacts.clearAllContacts();
std::cout << "所有联系人已清空!" << std::endl;
}
else if (choice == 0) {
contacts.save("contacts.txt");
std::cout << "程序已退出!" << std::endl;
break;
}
else {
std::cout << "输入错误,请重新输入!" << std::endl;
}
}
return 0;
}
3. 示例说明
3.1 示例1
在通讯录中添加一个联系人,其中姓名为"张三",性别为"男",电话为"123456789",住址为"新华路1号"。
运行程序,在菜单中选择"1 添加联系人",按照提示输入联系人信息,输入完毕后程序会输出"添加联系人成功!"。
3.2 示例2
在通讯录中查找一个联系人,其中姓名为"王五"。
运行程序,在菜单中选择"5 查找联系人",按照提示输入联系人姓名,如果通讯录中存在该联系人,则会输出其详细信息;否则输出"找不到该联系人!"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++简易通讯录系统实现流程详解 - Python技术站