C++ 通讯录设计(四)

1、删除联系人
功能描述:按照姓名进行删除指定联系人
删除联系人实现步骤:
●封装检测联系人是否存在
●封装删除联系人函数
●测试删除联系人功能
1.1封装检测联系人是否存在
设计思路:
删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有要删除的联系人
因此我们可以把检测联系人是否存在封装成一个函数中, 如果存在,返回联系人在通讯录中的位置,不存在返回-1

//检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
//参数1 通讯录参数2 对比姓名
int isExist(Addressbooks * abs, string name) {for (int i = 0; i < abs ->m_Size; i++){//找到了if (abs->personArray[i].m_Name == name){return i;}}//没有找到返回-1return -1;
}
int main() {//创建通讯录结构体变量Addressbooks abs;//初始化通讯录中当前人员个数abs.m_Size = 0;int select = 0;//创建用户选择输入菜单的变量while (true){showMenu();cin >> select;switch (select){case 1:            //1、添加联系人addPerson(&abs);  //利用地址传递可以修饰形参break;case 2:            //2、显示联系人showPerson(&abs);break;case 3:            //3、删除联系人{cout << "请输入删除联系人姓名 : " << endl;string name;cin >> name;if (isExist(&abs, name) == -1){cout << " 查无此人" << endl;}else{cout << "找到此人" << endl;}}break;case 4:            //4、查找联系人break;case 5:            //5、修改联系人break;case 6:            //6、清空联系人break;case 0:            //0、退出通讯录cout << "欢迎下次使用" << endl;system("pause");return 0;break;default:break;}}system("pause");}

测试

1.2封装删除联系人函数
根据用户输入的联系人判断该通讯录中是否有此人
查找到进行删除,并提示删除成功
查不到提示查无此人。

//3、删除指定联系人
void deletePerson(Addressbooks * abs){cout << " 请输入您要删除的联系人" << endl;string name;cin >> name;//ret == -1未查到 .//ret != -1查到 了int ret = isExist(abs,name);if (ret != -1) {// 查找到人,要进行删除操作for (int i = ret; i < abs->m_Size; i++) {//数据前移abs->personArray[i] = abs->personArray[i + 1];}abs->m_Size--; //更新通讯录中的人员数cout << "删除成功" <<endl;}else {cout << "未找到此人" << endl;}system("pause");system("cls");}
int main() {//创建通讯录结构体变量Addressbooks abs;//初始化通讯录中当前人员个数abs.m_Size = 0;int select = 0;//创建用户选择输入菜单的变量while (true){showMenu();cin >> select;switch (select){case 1:            //1、添加联系人addPerson(&abs);  //利用地址传递可以修饰形参break;case 2:            //2、显示联系人showPerson(&abs);break;case 3:            //3、删除联系人/**{cout << "请输入删除联系人姓名 : " << endl;string name;cin >> name;if (isExist(&abs, name) == -1){cout << " 查无此人" << endl;}else{		cout << "找到此人" << endl;}}*/deletePerson(&abs);break;case 4:            //4、查找联系人break;case 5:            //5、修改联系人break;case 6:            //6、清空联系人break;case 0:            //0、退出通讯录cout << "欢迎下次使用" << endl;system("pause");return 0;break;default:break;}}system("pause");}

现在添加了一名联系人

删除成功:

是不是真的删除成功(当前记录为空):

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 通讯录设计(五)

1、查找联系人 功能描述:按照姓名查看指定联系人信恿 查找联系人实现步骤 ●封装查找联系人函数 ●测试查找指定联系人 1.1封装查找联系人函数 实现思路:判断用户指定的联系人是否存在&#xff0c;如果存在显示信息&#xff0c;不存在则提示查无此人。 查找联系人代码: //4、查…

C++ 通讯录设计(六)

1、修改联系人 功能描述:按照姓名重新修改指定联系人 修改联系人实现步骤 ●封装修改联系人函数 ●测试修改联系人功能 1.1封装修改联系人函数 实现思路:查找用户输入的联系人&#xff0c;如果查找成功进行修改操作&#xff0c;查找失败提示查无此人 修改联系人代码: //5、修…

C++ 通讯录设计(七)

1、清空联系人 功能描述:清空通讯录中所有信息 清空联系人实现步骤 ●封装清空联系人函数 ●测试清空联系人 1.1封装清空联系人函数 实现思路:将通讯录所有联系人信息清除掉&#xff0c;只要将通讯录记录的联系人数量置为0,做逻辑清空即可。 清空联系人代码: //6、清空所有联…

C++ 程序运行前内存分区模型

C核心编程 本阶段主要针对C面向对象编程技术做详细讲解,探讨C中的核心和精髓。 1、内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 ●代码区:存放函数体的二进制代码,由操作系统进行管理的 ●全局区:存放全局变量和静态变量以及常量 ●栈区:|由编译器自动分…

C++ 程序运行后的内存模型

程序运行后 栈区: 由编译器自动分配释放,存放函数的参数值,局部变量等 注意事项:不要返回局部变量的地址&#xff0c;栈区开辟的数据由编译器自动释放 #include<iostream> #include<string> using namespace std;int* func() {int a 10; //局部变量放在栈区&am…

C++ 函数的引用传递

#include<iostream> #include<string> using namespace std;//1、值传递 void mySwap01(int a, int b) {int temp a;a b;b temp;cout << "mySwap01 a" << a << endl;cout << "mySwap01 b" << b << end…

C++ 常量引用

#include<iostream> #include<string> using namespace std;int main() {//常量引用//使用场景:用来修饰形参&#xff0c;防止误操作//int a 10;//加上const之后编译器将代码修改int temp 10; const int & ref temp; const int & ref 10;//引用必须引一…

C++ 函数重载碰到默认的参数

#include<iostream> #include<string> using namespace std;//引用作为重载的条件 void func(int &a) { //非常量引用cout << " this is func" << endl; }void func(const int &a) { // 常量引用 const int &a 10; 合…

C++ 对象的初始化和清理

4.2对象的初始化和清理 ●生活中我们买的电子产品都基本会有出厂设置,在某-天我们不用时候也会删除一些自己信息数据保证安全 ●C中的面向对象来源于生活&#xff0c;每个对象也都会有初始设置以及对象销毁前的清理数据的设置。 4.2.1构造函数和析构函数 对象的初始化和清理也是…

C++ 深拷贝与浅拷贝

#include<iostream> using namespace std; #include<string>class Person {public:Person() {cout << "Person的无参构造函数调用" << endl;};Person(int age) {m_Age age;cout << "Person的有参构造函数调用" << en…

转载]Cyclone II JTAG ASP 配置下载程序

原文&#xff1a;http://blog.sina.com.cn/s/blog_4739958a0100irp7.html 首先&#xff0c;还是那句话&#xff0c;电脑上写好程序.pof文件直接通过JTAG写到FPGA SRAM里&#xff0c;掉电丢失。 只有把.pof写到串行配置器件上&#xff0c;板子上电后串行配置器件EPCS4将程序自动…

C++ 类和对象成员特性

//当类中成员是其他类对象时&#xff0c;我们称该成员为对象成员 //构造的顺序是:先调用对象成员的构造&#xff0c;再调用本类构造 //析构顺序与构造相反 #include <iostream> using namespace std; #include <string>class Phone{public:Phone(string name){m_P…

C++ 静态成员

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员 静态成员分为: ●静态成员变量 。所有对象共享同一份数据 。在编译阶段分配内存 。类内声明&#xff0c;类外初始化 ●静态成员函数I 。所有对象共享同一个函数 。静态成员函数只能访问静态成员变量 #include…

C++ 静态成员函数

#include <iostream> using namespace std; #include <string>class Person{public://静态成员函数特点://1程序共享一个函数//2静态成员函数只能访问静态成员变量static void func(){cout << "func调用" << endl;m_A 100;//m. _B 100; //…

C++ 文件写操作

#include <fstream> #include<iostream> using namespace std;void test01(){ofstream ofs;ofs.open("test.txt",ios :: out);ofs << "姓名:张三"<< endl;ofs << "性别:男"<< endl;ofs << "年龄…

winform 分页控件分享(二)

大数量分页&#xff0c;使用存储过程。 这个存储过程是网络上考的&#xff0c;呵呵。我把它给贴出来&#xff0c;希望原作者别砸我砖头。。。。。 ALTER PROCEDURE SP_Pagination/**//****************************************************************** 千万数量级分页存…

C++ 二进制文件写操作

#include<iostream> using namespace std; #include<fstream>class Person { public:char m_Name[64]; //姓名int m_Age; //年龄};void test01(){//1、包含头文件//2.创建流对象ofstream ofs("person.txt",ios::out | ios::binary);//3、打开文件//ofs.o…

C++ 二进制文件读操作

读二进制文件 二进制方式读文件主要利用流对象调用成员函数read 函数原型:[ istream& read(char *buffer,int len); 参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数 示例: #include <fstream> #include <string> #include<iostream>…

C++ 使用模板Template

template --声明创建模板I typename -- 表面其后面的符号是一种数据类型&#xff0c;可以用class代替 T --- 通用的数据类型&#xff0c;名称可以替换&#xff0c;通常为大写字母 使用模板之前&#xff1a; #include<iostream> using namespace std; #include<strin…