#include<iostream>
using namespace std;
constexpr auto MAX = ; //联系人结构体
struct Person
{
string m_name;
int m_sex;
int m_age;
string m_phone;
string m_address; };
//通讯录结构体
struct AddressBooks
{
//联系人数组
struct Person personArray[MAX];
//记录联系人个数
int m_size;
}; //添加人员
void addPerson(AddressBooks* abs) {
//判断通讯录是否已满,已满就不再添加
if (abs->m_size == MAX) {
cout << "通讯录已满" << endl;
}
else{
string name;
int sex;
int age;
string phone;
string address;
cout << "请输入姓名:";
cin >> name;
while (true) {
cout << "请输入性别(0代表男,1代表女):";
cin >> sex;
if (sex == || sex == ) {
break;
}else{
cout << "您输入有误,请重新输入!" << endl;
}
}
cout << "请输入年龄:";
cin >> age;
cout << "请输入电话:";
cin >> phone;
cout << "请输入地址:";
cin >> address;
abs->personArray[abs->m_size].m_name = name;
abs->personArray[abs->m_size].m_sex = sex;
abs->personArray[abs->m_size].m_age = age;
abs->personArray[abs->m_size].m_phone = phone;
abs->personArray[abs->m_size].m_address = address;
abs->m_size++;
cout << "添加成功!" << endl;
//请按任意键继续
system("pause");
//清屏
system("cls");
}
}
//显示联系人
void showPerson(AddressBooks* abs) {
if (abs->m_size == ) {
cout << "当前记录为空" << endl;
}else {
for (int i = ; i < abs->m_size; i++) {
cout << "姓名:" << abs->personArray[i].m_name << "\t"
<< "性别:" << (abs->personArray[i].m_sex == ? "男" : "女") << "\t"
<< "年龄:" << abs->personArray[i].m_age << "\t"
<< "电话:" << abs->personArray[i].m_phone << "\t"
<< "地址:" << abs->personArray[i].m_address << endl;
}
}
system("pause");
system("cls");
}
//判断联系人是否存在,若存在,则返回所在下标,否则返回-1
int isExist(AddressBooks* abs,string name) {
for (int i = ; i < abs->m_size; i++)
{
if (abs->personArray[i].m_name == name) {
return i;
}
}
return -;
} //真正的删除操作
void del(AddressBooks* abs, int id) {
for (int i = id; i < abs->m_size; i++)
{
abs->personArray[i] = abs->personArray[i + ];
}
abs->m_size--;
} //查找并删除
void deletePerson(AddressBooks* abs) {
string name;
cout << "请输入要删除的名字:";
cin >> name;
int tmp;
tmp = isExist(abs, name);
if (tmp != -){
del(abs, tmp);
cout << "删除成功"<<endl;
}else{
cout << "查无此人"<<endl;
}
system("pause");
system("cls");
} //显示单个人信息
void showPerson(AddressBooks* abs,int i) {
cout << "姓名:" << abs->personArray[i].m_name << "\t"
<< "性别:" << (abs->personArray[i].m_sex == ? "男" : "女") << "\t"
<< "年龄:" << abs->personArray[i].m_age << "\t"
<< "电话:" << abs->personArray[i].m_phone << "\t"
<< "地址:" << abs->personArray[i].m_address << endl;
} //查找并返回相应信息
void findPerson(AddressBooks* abs) {
string name;
cout << "请输入要查找的名字:";
cin >> name;
int tmp;
tmp = isExist(abs, name);
if (tmp != -) {
cout << "找到该人" << endl;
showPerson(abs, tmp);
}
else {
cout << "查无此人" << endl;
}
system("pause");
system("cls");
} //清空联系人
void clearAll(AddressBooks* abs) {
abs->m_size = ;//逻辑清空
cout << "通讯录已被清空!" << endl;
}
void modifyPerson(AddressBooks* abs) {
string name;
cout << "请输入要修改的名字:";
cin >> name;
int tmp;
tmp = isExist(abs, name);
if (tmp != -) {
cout << "找到该人" << endl;
showPerson(abs, tmp);
string name;
int sex;
int age;
string phone;
string address;
cout << "请输入姓名:";
cin >> name;
while (true) {
cout << "请输入性别(0代表男,1代表女):";
cin >> sex;
if (sex == || sex == ) {
break;
}
else {
cout << "您输入有误,请重新输入!" << endl;
}
}
cout << "请输入年龄:";
cin >> age;
cout << "请输入电话:";
cin >> phone;
cout << "请输入地址:";
cin >> address;
abs->personArray[tmp].m_name = name;
abs->personArray[tmp].m_sex = sex;
abs->personArray[tmp].m_age = age;
abs->personArray[tmp].m_phone = phone;
abs->personArray[tmp].m_address = address;
cout << "修改成功!" << endl;
}
else {
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 << "***** 0.退出通讯录 *****" << endl;
cout << "************************" << endl;
} int main() {
//创建通讯录结构体变量
AddressBooks abs;
abs.m_size = ;
int select = ;
while(true){
showMenu();
cout << "请输入相应的选项:" << endl;
cin >> select;
switch (select){
case ://添加
addPerson(&abs);
break;
case ://显示
showPerson(&abs);
break;
case ://删除
deletePerson(&abs);
break;
case ://修改
modifyPerson(&abs);
break;
case ://查找
findPerson(&abs);
break;
case ://清空
clearAll(&abs);
break;
case ://退出
cout << "欢迎下次使用" << endl;
system("pause");
return ;
break;
}
}
}

c++实例之通讯录管理系统之清空联系人功能(七)的更多相关文章

  1. C++通讯录管理系统(添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人,退出通讯录)

    1 /** 2 * ProjectNmae:通讯录管理系统 3 * 功能: 4 * 添加联系人:向通讯录添加新人 5 * 显示联系人:显示通讯录中的所有联系人信息 6 * 删除联系人:按照姓名进行删除 ...

  2. C++入门-控制台版的通讯录管理系统

    通讯录管理系统 1.系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别 ...

  3. iOS学习之Object-C语言简单的通讯录管理系统

    用这几天学的OC的知识,写了一个实现简单功能的通讯录管理系统,在这里分享给大家: 通讯录管理系统 *  需求: 1.定义联系人类Contact.实例变量:姓名(拼音,首字母大写).性别.电话号码.住址 ...

  4. c++实现通讯录管理系统(控制台版)

    c++实现通讯录管理系统(控制台版) 此项目适合c++初学者,针对c++基础知识,涉及到变量.结构体定义使用.数组定义使用.指针定义使用等. 运行之后的结果如下: 代码: #include <i ...

  5. c++—通讯录管理系统

    一.运用所学的结构体.地址指针等基础知识,完成通讯录管理系统 二.系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #inclu ...

  6. c++通讯录管理系统

    代码拷贝 #include<iostream> #include<string> #include<stdlib.h> #define MAX 1000 using ...

  7. C++课程设计 通讯录管理系统 原码及解析

    设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...

  8. 通讯录管理系统(C++)

    前言 本程序采用VS2019开发实现 博主尽可能完善并健壮了程序功能,如有不理想之处,请加以指正,博主会在第一时间修改完善.原创不易,望"推荐","关注",&q ...

  9. c语言实现通讯录管理系统(c课程设计)

    工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...

随机推荐

  1. PAT B1020 月饼(25)

    题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部 ...

  2. js 中的 number 为何很怪异

    js 中的 number 为何很怪异 声明:需要读者对二进制有一定的了解 对于 JavaScript 开发者来说,或多或少都遇到过 js 在处理数字上的奇怪现象,比如: > 0.1 + 0.2 ...

  3. Spring MVC(一)Spring MVC的原理

    1.Spring MVC的目的 构建像Spring框架那样灵活和松耦合的Web应用程序. 2.Spring MVC中如何处理Request? 每当用户在Web浏览器中点击链接或者提交表单时,Reque ...

  4. 01docker基本概念

    docker基本概念 官方文档URL:https://docs.docker.com/ 1.Docker的构想是要实现"Build, Ship and Run Any App, Anywhe ...

  5. 15-Perl 格式化输出

    1.Perl 格式化输出Perl 是一个非常强大的文本数据处理语言.Perl 中可以使用 format 来定义一个模板,然后使用 write 按指定模板输出数据.Perl 格式化定义语法格式如下:fo ...

  6. 富文本二进制转换成string

    ].KindExplain); ) { explainString = explainString.Substring(, explainString.IndexOf() + , explainStr ...

  7. windows安装npm教程

    1.在使用之前,先类掌握3个东西,明白它们是用来干什么的: npm:  nodejs 下的包管理器. webpack: 它主要用途是通过CommonJS 的语法把所有浏览器端需要发布的静态资源作相应的 ...

  8. Markdown之基础语法

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式 优点: 1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排 ...

  9. spring framework体系结构及模块jar依赖关系

    本文对于Spring的JAR包使用和配置,结合网友材料以spring 4.3.6.RELEASE版本为例,介绍spring框架结构和各模块对应JAR包以及模块间JAR依赖关系. 注:不同版本JAR包依 ...

  10. JavaWeb【JSTL】

    根据JSTL标签所提供的功能,可以将其分为5个类别. 核心标签 格式化标签 SQL 标签 XML 标签 JSTL 函数 使用方式 1.下载包 地址:http://archive.apache.org/ ...