C和C++通讯录管理系统项目的设计与开发(上)

简介: C和C++通讯录管理系统项目的设计与开发

基于C语言和C++语言混合编程的通讯录管理系统项目的设计与开发


一、通讯录管理系统功能介绍


通讯录是我们记录好友、亲人、朋友的重要的一个信息管理工具。本项目是基于C语言和C++语言混合编程来设计一个通讯录管理系统。该系统的主要功能如下几个要点所示:

1、添加联系人:可以向通讯录中添加新人信息包括:姓名、性别、年龄、联系电话、家庭住址。添加的人数记录最多为1000人。

2、显示联系人:显示通讯录中所有的联系人信息。

3、查找联系人:按照姓名进行删除指定的联系人信息。

4、修改联系人:按照姓名进行查看指定的联系人信息。

5、删除联系人:按照姓名进行重新修改指定的联系人信息。

6、清空联系人:清空通讯录中所有的联系人信息。

7、退出通讯录:退出当前使用的通讯录管理系统。


二、开发通讯录管理系统的工具以及创建项目的过程

2.1、本项目使用Visual Studio 2019作为开发工具。

2.2、项目创建的过程


打开VS2019,选择语言为C++,所属平台为Windows,项目类型为控制台项目,并选择空项目,如下图所示

bd6194d4f03b47a482dacb8172140a36.png


然后输入项目的名称和选择项目的路径如下图所示

1e23e1955e59429b8702772989cc54d2.png

创建好项目后,向项目中添加头文件和源文件如下所示

599c4fc7e9fc44f0adf2c56fbaac89dd.png


然后编写相关的代码如下

Main.h头文件代码

#ifndef MAIN_H
#define MAIN_H
#include <iostream>
#include <cstdlib>
using namespace std;
#endif


Main.cpp源文件代码

#include "Main.h"
int main()
{
  system("color 3E");
  system("pause");
  return 0;
}


AddressBook.h头文件代码

#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H
#endif


AddressBook.cpp源文件代码

#include "AddressBook.h"


现在项目就创建好了。


通讯录管理系统的设计与开发的步骤


一、设计通讯录菜单功能


在Main.h头文件中声明一个void addressBookMenu();函数,用于通讯录菜单功能的显示,然后再Main.cpp源文件中定义这个函数的功能,如下所示


// 通讯录系统的功能菜单
void addressBookMenu()
{
  cout << "欢迎来到通讯录管理系统" << endl;
  cout << "1  添加联系人" << endl;
  cout << "2  显示联系人" << endl;
  cout << "3  查找联系人" << endl;
  cout << "4  修改联系人" << endl;
  cout << "5  删除联系人" << endl;
  cout << "6  清空联系人" << endl;
  cout << "0  退出系统" << endl;
  cout << "请输入相关的数字,进行功能的选择:";
}


然后再主函数中调用addressBookMenu()函数,调试结果如下


8793efc8d01a45b69d3c494ac01641c3.png


到这里通讯录菜单功能实现了。


二、设计通讯录退出功能


在AddressBook.h头文件中声明void quitSystem();函数,然后再AddressBook.cpp中定义函数的功能,其代码如下


// 退出通讯录管理系统
void quitSystem()
{
  cout << "欢迎使用通讯录管理系统!!" << endl;
  cout << "欢迎在一次使用!!!" << endl;
}


然后在main函数中添加如下的代码

// 开辟内存
  pAddressBooks addrBook = new addressBooks;
  addrBook->size = 0;
  int select = 0;
  while (1)
  {
    addressBookMenu();        // 调用显示菜单
    cin >> select;
    switch (select)         // 功能选择
    {
    case 1:
      // 添加联系人
      break;
    case 2:
      // 显示联系人
      break;
    case 3:
      // 查找联系人
      break;
    case 4:
      // 修改联系人
      break;
    case 5:
      // 删除联系人
      break;
    case 6:
      // 清空联系人
      break;
    case 0:             // 退出系统
      quitSystem();
      system("pause");
      return 0;
      break;
    default:
      break;
    }
  }


当用户输入数字0时,就会退出通讯录管理系统,其调试结果如下所示


e8ea3ddeeb69459e9bd8684b428c6164.png


现在实现了通讯录退出功能


三、设计添加联系人功能


在AddressBook.h头文件中声明一个添加联系人信息的函数void addPerson(pAddressBooks addrBook);并在AddressBook.cpp源文件中定义相关的功能。其代码如下所示

定义一个Penson类,在Penson中定义联系人相关的成员变量如下所示

// 添加联系人信息
void addPerson(pAddressBooks addrBook)
{
  if (addrBook->size == MAX)
  {
    cout << "通讯录已满!!!" << endl;
    return;
  }
  else
  {
    string name;
    cout << "输入姓名: ";
    cin >> name;
    addrBook->personArray[addrBook->size].name = name;
    string sex;
    cout << "输入性别: ";
    cin >> sex;
    addrBook->personArray[addrBook->size].sex = sex;
    int age;
    cout << "输入年龄: ";
    cin >> age;
    addrBook->personArray[addrBook->size].age = age;
    string phone;
    cout << "输入联系电话: ";
    cin >> phone;
    addrBook->personArray[addrBook->size].phone = phone;
    string address;
    cout << "输入地址: ";
    cin >> address;
    addrBook->personArray[addrBook->size].address = address;
    addrBook->size++;
    cout << "添加联系人成功!!!" << endl;
    system("pause");
    system("cls");
  }
}


在main函数中,在case 1:语句后面调用添加联系人信息的addPerson函数,如下所示

case 1:
  addPerson(addrBook);    // 添加联系人
  break;


然后调试结果如下所示

177c09838afd4300a39857d64bb17884.png


如上图的调试结果显示,已经完成了添加联系人功能的设计。


四、设计显示联系人功能


在AddressBook.h头文件中声明一个显示联系人信息的函数void showPerson(pAddressBooks addrBook);并在AddressBook.cpp源文件中定义相关的功能。其代码如下所示


// 显示联系人信息
void showPerson(pAddressBooks addrBook)
{
  if (addrBook->size == 0)
  {
    cout << "当前记录是空!!!" << endl;
  }
  else
  {
    for (int i = 0; i < addrBook->size; i++)
    {
      cout << "姓名: " << addrBook->personArray[i].name << endl;
      cout << "性别: " << addrBook->personArray[i].sex << endl;
      cout << "年龄: " << addrBook->personArray[i].age << endl;
      cout << "电话: " << addrBook->personArray[i].phone << endl;
      cout << "住址: " << addrBook->personArray[i].address << endl << endl;
    }
  }
  system("pause");
  system("cls");
}

在main函数中,在case 2:语句后面调用显示联系人信息的showPerson函数,如下所示

case 2:
  showPerson(addrBook);   // 显示联系人
  break;



然后调试结果如下所示

1、先添加联系人信息


fb179252206b4c08a995f1268a288777.png


2、在选择显示联系人信息


652e235608964f4cb89b7e9d207c9de5.png


如上图,系统可以正确显示我们刚刚输入的联系人信息,已经完成了显示联系人功能的设计

相关文章
|
11天前
|
IDE 开发工具 C语言
C++一分钟之-嵌入式编程与裸机开发
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解C++在嵌入式编程与裸机开发中的应用,提高开发效率和代码质量。
31 13
WK
|
2月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
124 1
|
3月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
790 3
|
3月前
|
Rust 资源调度 安全
为什么使用 Rust over C++ 进行 IoT 解决方案开发
为什么使用 Rust over C++ 进行 IoT 解决方案开发
114 7
WK
|
2月前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
78 0
WK
|
2月前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
133 0
|
4月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
64 3
|
4月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
3月前
|
NoSQL API Redis
如何使用 C++ 开发 Redis 模块
如何使用 C++ 开发 Redis 模块
|
4月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
181 1