21xrx.com
2024-11-22 07:23:05 Friday
登录
文章检索 我的文章 写文章
使用C++开发通讯录程序
2023-07-04 09:17:12 深夜i     --     --
C++ 开发 通讯录程序

通讯录程序是一种十分方便实用的实用工具,可以帮助我们保存和管理亲友、同事及其他人的联系方式。为了更好地满足人们的需求,这里介绍使用C++语言开发通讯录程序。

首先,在开发通讯录程序之前,需要确定其基本功能。一般来说,通讯录程序应具备如下功能:

1. 添加联系人:可以添加一个新的联系人,其包括姓名、电话、地址等基本信息。

2. 显示联系人:可以根据姓名或电话等关键字查询联系人信息并进行显示。

3. 修改联系人:可以按照需求修改联系人的基本信息。

4. 删除联系人:可以删除已存在的联系人。

5. 退出程序:可以通过选择退出程序来结束程序的运行。

接下来,就可以开始编写代码了。这里以Visual Studio 2019为开发工具,在Windows平台下开发通讯录程序。

首先创建一个C++的空项目,可以命名为Address Book。在该项目中,首先需要定义联系人类及其成员变量和函数。这里定义的联系人类包含姓名、电话、地址三个成员变量,及获取姓名、获取电话、获取地址三个成员函数。代码如下所示:


#include <string>

class Person

{

private:

  std::string m_name; // 姓名

  std::string m_phone; // 电话

  std::string m_address; // 地址

public:

  Person(){}

  Person(std::string name, std::string phone, std::string address) : m_name(name), m_phone(phone), m_address(address) {}

  ~Person(){}

  std::string getName() const

  

    return m_name;

  

  std::string getPhone() const

  

    return m_phone;

  

  std::string getAddress() const

  

    return m_address;

  

};

接着,定义通讯录类及其成员变量和函数。这里定义的通讯录类包括联系人数组和联系人数量两个成员变量,及添加联系人、显示联系人、查找联系人、修改联系人、删除联系人、清空联系人、判断联系人是否存在等功能函数。代码如下所示:


#include <vector>

#include "Person.h"

class AddressBook

{

private:

  std::vector<Person> m_personList; // 联系人数组

  int m_personNum; // 联系人数量

public:

  AddressBook();

  ~AddressBook();

  bool addPerson(); // 添加联系人

  void showPerson(); // 显示联系人

  int findPerson(std::string name); // 查找联系人

  bool modifyPerson(); // 修改联系人

  bool deletePerson(); // 删除联系人

  bool clearPerson(); // 清空联系人

  bool isExist(std::string name); // 判断联系人是否存在

};

在AddressBook.h头文件中,定义以上函数的声明,方便在AddressBook.cpp实现。

具体实现细节,详见以下代码:

AddressBook.cpp


#include <iostream>

#include <algorithm>

#include "AddressBook.h"

using namespace std;

AddressBook::AddressBook()

  m_personNum = 0;

AddressBook::~AddressBook()

bool AddressBook::addPerson() // 添加联系人

{

  string name;

  cout << "请输入姓名: ";

  cin >> name;

  if (isExist(name))

  

    cout << name << "已存在!" << endl;

    return false;

  

  string phone;

  cout << "请输入电话号码: ";

  cin >> phone;

  string address;

  cout << "请输入家庭住址: ";

  cin >> address;

  Person person(name, phone, address);

  m_personList.push_back(person);

  m_personNum++;

  cout << "添加联系人成功!" << endl;

  return true;

}

void AddressBook::showPerson() // 显示联系人

{

  if (m_personList.empty())

  

    cout << "通讯录为空!" << endl;

    return;

  

  cout.width(8);

  cout << left << "姓名";

  cout.width(15);

  cout << left << "电话号码";

  cout.width(15);

  cout << left << "家庭住址" << endl;

  for (auto& person : m_personList)

  {

    cout.width(8);

    cout << left << person.getName();

    cout.width(15);

    cout << left << person.getPhone();

    cout.width(15);

    cout << left << person.getAddress() << endl;

  }

}

int AddressBook::findPerson(std::string name) // 查找联系人

{

  for (int i = 0; i < m_personNum; i++)

  {

    if (m_personList[i].getName() == name)

    

      return i;

    

  }

  return -1;

}

bool AddressBook::modifyPerson() // 修改联系人

{

  string name;

  cout << "请输入待修改联系人的姓名: ";

  cin >> name;

  int index = findPerson(name);

  if (index == -1)

  

    cout << name << "不存在!" << endl;

    return false;

  

  string phone;

  cout << "请输入新的电话号码: ";

  cin >> phone;

  string address;

  cout << "请输入新的家庭住址: ";

  cin >> address;

  m_personList[index] = Person(name, phone, address);

  cout << "修改联系人成功!" << endl;

  return true;

}

bool AddressBook::deletePerson() // 删除联系人

{

  string name;

  cout << "请输入待删除联系人的姓名: ";

  cin >> name;

  int index = findPerson(name);

  if (index == -1)

  

    cout << name << "不存在!" << endl;

    return false;

  

  m_personList.erase(m_personList.begin() + index);

  m_personNum--;

  cout << "删除联系人成功!" << endl;

  return true;

}

bool AddressBook::clearPerson() //清空联系人

{

  if (m_personList.empty())

  

    cout << "通讯录为空!" << endl;

    return false;

  

  m_personList.clear();

  m_personNum = 0;

  cout << "清空联系人成功!" << endl;

  return true;

}

bool AddressBook::isExist(std::string name) // 判断联系人是否存在

{

  if (m_personList.empty())

  

    return false;

  

  return findPerson(name) != -1;

}

在main函数中,我们可以调用AddressBook类实现以上功能。代码如下所示:

main.cpp


#include <iostream>

#include "AddressBook.h"

using namespace std;

void printMenu()

{

  cout << "1. 添加联系人" << endl;

  cout << "2. 显示联系人" << endl;

  cout << "3. 查找联系人" << endl;

  cout << "4. 修改联系人" << endl;

  cout << "5. 删除联系人" << endl;

  cout << "6. 清空联系人" << endl;

  cout << "0. 退出程序" << endl;

  cout << "请选择功能(0-6): " << endl;

}

int main()

{

  AddressBook addressBook;

  while (true)

  {

    printMenu();

    int choice = 0;

    cin >> choice;

    switch (choice)

    {

    case 1:

      addressBook.addPerson();

      break;

    case 2:

      addressBook.showPerson();

      break;

    case 3:

    {

      string name;

      cout << "请输入待查找联系人的姓名: ";

      cin >> name;

      int index = addressBook.findPerson(name);

      if (index == -1)

      

        cout << name << "不存在!" << endl;

      

      else

      {

        cout.width(8);

        cout << left << "姓名";

        cout.width(15);

        cout << left << "电话号码";

        cout.width(15);

        cout << left << "家庭住址" << endl;

        cout.width(8);

        cout << left << addressBook.m_personList[index].getName();

        cout.width(15);

        cout << left << addressBook.m_personList[index].getPhone();

        cout.width(15);

        cout << left << addressBook.m_personList[index].getAddress() << endl;;

      }

      break;

    }

    case 4:

      addressBook.modifyPerson();

      break;

    case 5:

      addressBook.deletePerson();

      break;

    case 6:

      addressBook.clearPerson();

      break;

    case 0:

      cout << "欢迎再次使用!" << endl;

      return false;

    default:

      cout << "输入有误,请重新输入!" << endl;

      break;

    }

  }

  return 0;

}

至此我们已完成了通讯录程序的开发。当然,通讯录程序的实现方式还有很多种,本文仅提供一种简单易懂的实现方式,希望能对读者有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复