#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. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

    MFC中ASSERT作为断言语句,括号内内容为TRUE,继续执行:为FALSE终止执行.之后取得当前窗口的系统菜单,在这个菜单中添加字符串资源IDS_ABOUTBOX和菜单资源IDM_ABOUTBOX ...

  2. go 表单

    package main import ( "fmt" "io" "net/http" ) const form = `<html&g ...

  3. BZOJ 4835: 遗忘之树

    传送门 首先设 $f[x]$ 表示点分树上 $x$ 的子树内的方案数 发现对于 $x$ 的每个儿子 $v$ ,$x$ 似乎可以向 $v$ 子树内的每个节点连边,因为不管怎么连重心都不会变 显然是错的, ...

  4. jenkins 设置中文显示

    这里使用的方法是安装中文语言包,安装的插件名称是:Localization: Chinese (Simplified) 1.在插件管理,搜索 Localization: Chinese (Simpli ...

  5. vue.js中,如何把text按html格式化显示

    先说方法:v-html = "你的字符串" <el-table-column type="expand" label="详情" hea ...

  6. centos 配置rsync+inotify数据实时同步2

    一.Rsync服务简介 1. 什么是Rsync 它是一个远程数据同步工具,它在同步文件的同时,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“rsync算法”来使本地和远程两个主机 ...

  7. webpack抽取CSS文件与CSSTreeShaking

    webpack抽取CSS文件 CSSTreeShaking 一.webpack抽取CSS文件 抽取CSS文件的插件:mini-css-extract-plugin npm install --save ...

  8. JavaScript笔记(4)

    3.JavaScript事件 定义 1.事件是JavaScript事先定义好的 2.JavaScript中事件大多都是以"on--"开头的 3.事件由三要素组成:事件源.事件名.事 ...

  9. JS 中的跨域请求

    跨域请求并不仅仅只是 Ajax 的跨域请求,而是对于一个页面来说,只要它请求了其他域名的资源了,那么这个过程就属于跨域请求了. 比如,一个带有其他域名的 src 的 <img> 标签,以及 ...

  10. Cesium中的样条插值

    Cesium中的样条插值 在cesium里,提供了三种样条插值方法,LinearSpline,CatmullRomSpline,HermiteSpline.在具体的实例上,可以使用样条插值法利用已知的 ...