c++实例之通讯录管理系统之清空联系人功能(七)
#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++实例之通讯录管理系统之清空联系人功能(七)的更多相关文章
- C++通讯录管理系统(添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人,退出通讯录)
1 /** 2 * ProjectNmae:通讯录管理系统 3 * 功能: 4 * 添加联系人:向通讯录添加新人 5 * 显示联系人:显示通讯录中的所有联系人信息 6 * 删除联系人:按照姓名进行删除 ...
- C++入门-控制台版的通讯录管理系统
通讯录管理系统 1.系统需求 通讯录是一个可以记录亲人.好友信息的工具. 本教程主要利用C++来实现一个通讯录管理系统 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别 ...
- iOS学习之Object-C语言简单的通讯录管理系统
用这几天学的OC的知识,写了一个实现简单功能的通讯录管理系统,在这里分享给大家: 通讯录管理系统 * 需求: 1.定义联系人类Contact.实例变量:姓名(拼音,首字母大写).性别.电话号码.住址 ...
- c++实现通讯录管理系统(控制台版)
c++实现通讯录管理系统(控制台版) 此项目适合c++初学者,针对c++基础知识,涉及到变量.结构体定义使用.数组定义使用.指针定义使用等. 运行之后的结果如下: 代码: #include <i ...
- c++—通讯录管理系统
一.运用所学的结构体.地址指针等基础知识,完成通讯录管理系统 二.系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #inclu ...
- c++通讯录管理系统
代码拷贝 #include<iostream> #include<string> #include<stdlib.h> #define MAX 1000 using ...
- C++课程设计 通讯录管理系统 原码及解析
设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...
- 通讯录管理系统(C++)
前言 本程序采用VS2019开发实现 博主尽可能完善并健壮了程序功能,如有不理想之处,请加以指正,博主会在第一时间修改完善.原创不易,望"推荐","关注",&q ...
- c语言实现通讯录管理系统(c课程设计)
工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...
随机推荐
- C++中如何调用DLL文件
一.动态链接库简介 动态库链接库英文位DLL,是Dynamic Link Library的缩写形式,DLL不是可执行文件.动态链接提供了一种方法,使进程可以调用不属于其可执行文件代码的函数.函数可执行 ...
- linux下安装anconda3
Liunx下安装anconda3其实特变简单,只需这几步骤 1. 首先要到网上下载一个ancoda3的安装包.然后在上传到linux上面即可 3. 是不是特别简单呢?哈哈
- MySQL存储引擎InnoDB大量数据下的问题
MySQL如果只有MyISAM一个引擎的话,那你们黑真的也有道理,但问题是InnoDB现在已经是MySQL默认的引擎,而且这个引擎综合能力很强,能用好这个引擎其实就已经能解决大多数需要数据库的业务逻辑 ...
- lua与c的交互(运用)
(1)lua程序 (2)C++程序(头文件) extern "C" { #include "lua.h" #include "lual ...
- Python爬虫实战小项目
爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据 import requests from fake_useragent import UserAgent ua = UserAge ...
- sftp上传文件(Renci.SshNet)和代理上传
引用Renci.SshNet这个 封装的sftp类 public class SFTPHelper { #region 字段或属性 private SftpClient sftp; /// <s ...
- C#进阶之泛型(Generic)
1.泛型 泛型是framwork2.0推出的新语法,具有延迟声明的特点:把参数类型的声明推迟到调用的时候.泛型不是一个语法糖,是框架升级提供的功能.需要编辑器和JIT(just-in-time com ...
- Shell脚本case语句
case语句格式 case 变量 in PAT1) 执行语句 ;; PAT2) 执行语句 ;; *) 默认执行语句 ;; esac 使用示例: 编写一个shell脚本,通过提示用户输入信息,输出cpu ...
- beego注解路由的格式
原文: https://blog.csdn.net/weixin_33743880/article/details/88016192 beego注解路由的注释,我们可以把我们的注释分为以下类别: @T ...
- jquery 取指定class下的input checkbox选中的值
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...