【简单项目实战】用C++实现通讯录管理系统 | [普通实现]

简介: 用C++实现通讯录管理系统

功能介绍


用C++设计一个程序,能够提供以下功能:


1.录入联系人的基本信息。包括姓名、性别、年龄、电话号和地址。


2.展示所有已录入联系人的基本信息。以姓名、性别、年龄、电话号和地址的方式按列表展示。


3.删除指定的联系人。通过姓名查询并删除。


4.查找指定的联系人。通过姓名查找。


5.修改联系人信息。可对其进行单一修改,也可以进行多修改。


6.清空联系人。


7.退出通讯录管理系统。


●案例


1.录入5个联系人的信息:


       ①张三 男 19 18945761432 山西省大同市


       ②李四 男 23 19045435721 吉林省沈阳市


       ③王五 女 21 16423763429 湖南省长沙市


       ④赵六 女 32 17781435240 河南省洛阳市


       ⑤孙七 男 29 18247190826 内蒙古包头市


2.展示该五个联系人的信息。


3.修改联系人信息,对王五的地址进行单一修改,修改为云南省昆明市。(若进行其他修改,按照提示指引修改即可)


4.查找指定联系人王五,查看其修改的信息是否同步。


5.因为张三的信息存在错误,我们用多修改的方式对其信息进行修改。(张三 男 34 18247189868 陕西省西安市)


6.由于孙七的信息录入错误,我们需要将他的信息全部删除。


7.查看此时所有的联系人信息。


8.清空所有联系人并且查看。


9.退出通讯录管理系统。


●代码展示

#include <iostream>
#include <string>
#define maxsize 100 //通讯录人数
using namespace std;
struct person {
  string name;  //姓名
  string sex;  //性别
  int age;  //年龄
  string number;   //电话号
  string address;  //地址
};
typedef struct{
  struct person data[maxsize];
  int size;
}addressbook;
void addperson(addressbook* ab)
{
  cout << "————————————————————" << endl;
  if (ab->size == maxsize) {
  cout << "<<通讯录已满>>" << endl;
  }
  else {
  cout << "请输入姓名:" ;
  string name;cin >> name;
  ab->data[ab->size].name = name;
  cout << "请输入性别:" ;
  cout << "男——1" <<" " << "女——2" <<":";
  int sex;cin >> sex;
  if (sex == 1) { ab->data[ab->size].sex = "男"; }
  else if (sex == 2) { ab->data[ab->size].sex = "女"; }
  cout << "请输入年龄:" ;
  int age;cin >> age;
  ab->data[ab->size].age = age;
  cout << "请输入电话:" ;
  string number;cin >> number;
  ab->data[ab->size].number = number;
  cout << "请输入家庭地址:" ;
  string address;cin >> address;
  ab->data[ab->size].address = address;
  ab->size++;
  }
  cout << "————————————————————" << endl;
  cout << "<<添加成功>>" << endl;
  system("pause");
  system("cls");
}
void showperson(addressbook* ab)
{
  if (ab->size == 0) {
  cout << "<<当前数据为空>>" << endl;
  }
  else {
  for (int i = 0; i < ab->size; i++)
  {
    cout << "———————————————————————————————————" << endl;
    cout <<"| " << "姓名:" << ab->data[i].name << " "
    << "性别:" << ab->data[i].sex<<" "
    << "年龄:" << ab->data[i].age<<" "
    << "电话:" << ab->data[i].number<<" "
    << "地址:" << ab->data[i].address << " |" << endl;
  }
  cout << "———————————————————————————————————" << endl;
  }
  system("pause");
  system("cls");
}int isexist(addressbook* ab, string name)
{
  for (int k = 0; k < ab->size; k++)
  {
  if (ab->data[k].name == name)
    return k;
  }
  return -1;
}
void deleteperson(addressbook* ab)
{
  cout << "————————————————————" << endl;
  cout << "请输入您要删除的联系人:";
  string name;cin >> name;
  if (isexist(ab, name) == -1) {
  cout << "<<没有查找到此人>>" << endl;
  }
  else {
  cout << "<<找到此人>>" << endl;
  int ret = isexist(ab, name);
  for (int l = ret; l < ab->size; l++)
  {
    ab->data[l].name = ab->data[l + 1].name;
    ab->data[l].sex = ab->data[l + 1].sex;
    ab->data[l].age = ab->data[l + 1].age;
    ab->data[l].number = ab->data[l + 1].number;
    ab->data[l].address = ab->data[l + 1].address;
  }
  ab->size--;
  cout << "<<已删除此人信息>>" << endl;
  }
  cout << "————————————————————" << endl;
  system("pause");
  system("cls");
}
void searchperson(addressbook* ab)
{
  cout << "请输入您要查找的联系人:";
  string name;cin >> name;
  if (isexist(ab, name) == -1) {
  cout << "<<没有查找到此人>>" << endl;
  }
  else {
  int ret = isexist(ab, name);
    cout << "———————————————————————————————————" << endl;
    cout <<"| " << "姓名:" << ab->data[ret].name << " "
    << "性别:" << ab->data[ret].sex<<" "
    << "年龄:" << ab->data[ret].age<<" "
    << "电话:" << ab->data[ret].number<<" "
    << "地址:" << ab->data[ret].address <<" |" << endl;
  cout << "———————————————————————————————————" << endl;
  }
  system("pause");
  system("cls");
}
void singlealterperson(int ret,addressbook* ab)
{
  string name;
  string sex;
  int age;
  string number;
  string address;
  cout << "————————————————————" << endl;
  cout << "姓名-1" << "性别-2" << "年龄-3" << "电话-4" << "地址-5" << ":";
  int select; cin >> select;
  switch (select)
  {
  case 1:
  cout << "请输入要修改的姓名:";
  cin >> name;  ab->data[ret].name = name;
  break;
  case 2:
  cout << "请输入要修改的性别:";
  cin >> sex;  ab->data[ret].sex = sex;
  break;
  case 3:
  cout << "请输入要修改的年龄:";
  cin >> age;  ab->data[ret].age = age;
  break;
  case 4:
  cout << "请输入要修改的号码:";
  cin >> number;  ab->data[ret].number = number;
  break;
  case 5:
  cout << "请输入要修改的地址:";
  cin >> address; ab->data[ret].address = address;
  break;
  }
  cout << "————————————————————" << endl;
}
void mostalterperson(int ret,addressbook* ab)
{
  string name;
  string sex;
  int age;
  string number;
  string address;
  cout << "————————————————————" << endl;
  cout << "请输入姓名:";
  cin >> name;  ab->data[ret].name = name;
  cout << "请输入性别:";
  cin >> sex;  ab->data[ret].sex = sex;
  cout << "请输入年龄:";
  cin >> age;  ab->data[ret].age = age;
  cout << "请输入电话:";
  cin >> number;  ab->data[ret].number = number;
  cout << "请输入地址:";
  cin >> address; ab->data[ret].address = address;
  cout << "————————————————————" << endl;
}
void alterperson(addressbook* ab)
{
  cout << "请输入您要修改的联系人:";
  string name;cin >> name;
  if (isexist(ab, name) == -1){
  cout << "<<此人不存在>>" << endl;
  }
  else {
  cout << "<<此人存在>>" << endl;
  int ret = isexist(ab,name);
  cout << "单一修改-0" << "多数修改-1" << ":";
  int n; cin >> n;
  if (n == 0) {
    singlealterperson(ret,ab);
  }
  else {
    mostalterperson(ret,ab);
  }
    cout << "<<信息修改成功>>" << endl;
  }
  system("pause");
  system("cls");
}
void emptyperson(addressbook* ab)
{
  ab->size = 0;
  cout << "<<通讯录已清空>>" << endl;
  system("pause");
  system("cls");
}
void showmenu()
{
  cout << "***********************" << endl;
  cout << "*****1:添加联系人******" << endl;
  cout << "*****2:显示联系人******" << endl;
  cout << "*****3:删除联系人******" << endl;
  cout << "*****4:查找联系人******" << endl;
  cout << "*****5:修改联系人******" << endl;
  cout << "*****6:清空联系人******" << endl;
  cout << "*****7:退出通讯录******" << endl;
  cout << "***********************" << endl;
}
int text()
{
  addressbook AB;
  AB.size = 0;
  while (1)
  {
  showmenu();
  int n; cin >> n;
  switch (n)
  {
  case 1:
    addperson(&AB);
    break;
  case 2:
    showperson(&AB);
    break;
  case 3:
    deleteperson(&AB);
    break;
  case 4:
    searchperson(&AB);
    break;
  case 5:
    alterperson(&AB);
    break;
  case 6:
    emptyperson(&AB);
    break;
  case 7:
    cout << "<<退出通讯录>>" << endl;
    return 0;
    break;
  }
  }
}
int main()
{
  text();
}

●结果展示


1.

2.

3.

4.

5.

6.

7.

8.

9.


目录
相关文章
|
4月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
89 0
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
55 3
|
4月前
|
Rust 安全 C++
系统编程的未来之战:Rust能否撼动C++的王座?
【8月更文挑战第31天】Rust与C++:现代系统编程的新选择。C++长期主导系统编程,但内存安全问题频发。Rust以安全性为核心,通过所有权和生命周期概念避免内存泄漏和野指针等问题。Rust在编译时确保内存安全,简化并发编程,其生态系统虽不及C++成熟,但发展迅速,为现代系统编程提供了新选择。未来有望看到更多Rust驱动的系统级应用。
69 1
|
4月前
|
存储 算法 数据可视化
【C++】C++旅游管理系统(源码+论文)【独一无二】
【C++】C++旅游管理系统(源码+论文)【独一无二】
|
4月前
|
存储 数据可视化 C++
【C++】C++-机房收费管理系统(源码+注释)【独一无二】
【C++】C++-机房收费管理系统(源码+注释)【独一无二】
|
4月前
|
数据可视化 C++
【C++】C++商店销售管理系统(源码+论文)【独一无二】
【C++】C++商店销售管理系统(源码+论文)【独一无二】
|
4月前
|
C++
【C++】C++书店管理系统(源码+论文)【独一无二】
【C++】C++书店管理系统(源码+论文)【独一无二】
|
4月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
36 0
|
4月前
|
C++
使用 QML 类型系统注册 C++ 类型
使用 QML 类型系统注册 C++ 类型
85 0
|
4月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)【独一无二】
【C++】C++-学生考试题库管理系统(源码)【独一无二】
163 0