#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. Ubuntu 下几种软件安装的方法小结

    1.tar.gz软件包的安装 1)解压tar.gz包 .tar.gz -C /home/Desktop # 将软件包名.tar.gz解压到指定的目录下 2)进入解压后的文件目录下      执行“./ ...

  2. POJ2367(拓扑排序裸题

    #include<iostream> #include<vector> #include<queue> using namespace std; typedef l ...

  3. [开源] LaravelPlus - 基于 Laravel 魔改,为方便实际业务使用 - 开发中

    目的 为了减少重复 CURD 和新项目的配置麻烦等问题,(就是为了骗星星:LaravelPlus )如: 现有的 infyomlabs/laravel-generator CODE 生成工具虽然好用, ...

  4. 怎样使 html 文本文字不能被选中?

    -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none;

  5. js 动态添加Table tr,选中与不选中checkbox行数NO的变化

    首次加载进入页面,如图: 注:Table是在js中拼接字符串循环动态添加的(拼接字符串,详见之前随笔) 点击Line2 checkbox后,效果如图: 实现的效果就是: 点击checkbox — 显示 ...

  6. CSS 使用calc()获取当前可视屏幕高度

    来自:https://blog.csdn.net/qq_32063079/article/details/89766442 先了解一下CSS3的相对长度单位(参考详细教程) : 相对长度单位指定了一个 ...

  7. java开发环境构建

    一. 基本工具安装 1. 配置终端命令别名 vim ~/.bash_profile *********************************************** # for colo ...

  8. MySql学习笔记【二、库相关操作】

    命令规范 关键字.函数名称大写 数据库.表名.字段名小写 语句须以分号结尾 切换使用数据库 USE database_name 如:USE test 查看数据库列表 SHOW {DATABASES|S ...

  9. Pythonic定义

    Pythonic定义 Python最常用的编码风格还是PEP8,详见:http://jython.cn/dev/peps/pep-0008/ Pythonic确实很难定义,先简单引用下<Pyth ...

  10. MyEclipse基本配置及优化【MyEclipse_10.7】

    MyEclipse基本配置 MyEclipse所有的配置都是基于工作空间的,当换了个工作空间,之前的所有配置信息就失效了.(建议每次换工作空间之前就配置好基本信息) 1.修改工作空间编码为UTF-8 ...