首页 > 编程语言 >c++基础通讯录管理

c++基础通讯录管理

时间:2022-09-08 01:00:47浏览次数:71  
标签:sName cout Contacts 基础 c++ sArea 通讯录 iListNumber ContactsList

#include "stdio.h"
#include <string>
#include <iostream>
using namespace std;
struct Contacts {
	string sName;
	int iTelephone;
	string sArea;
	//定义基本结构体
};
struct ContactsList {
	//定义结构体数组
	int iListNumber;
	Contacts m_Contacts[100];
};

void vShowContacts(ContactsList *m_ContactsList) {

	//显示联系人
	if (m_ContactsList->iListNumber == 0) {
		cout << "暂时没有联系人" << endl;
	} else {
		for (int i = 0; i < m_ContactsList->iListNumber; i++) {
			cout << "姓名:" << m_ContactsList->m_Contacts[i].sName
			     << "  电话:" << m_ContactsList->m_Contacts[i].iTelephone
			     << "  地区:" << m_ContactsList->m_Contacts[i].sArea << endl;
		}
	}

}

void vAddContacts(Contacts v_Contacts, ContactsList *m_ContactsList) {
	//添加联系人
	cout << "请输入姓名" << endl;
	cin >> v_Contacts.sName;
	cout << "请输入电话" << endl;
	cin >> v_Contacts.iTelephone;
	cout << "请输入地区" << endl;
	cin >> v_Contacts.sArea;
	cout << "添加成功" << endl;
	m_ContactsList->iListNumber = m_ContactsList->iListNumber + 1;
	m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1] = v_Contacts;
}

bool bDelContacts(ContactsList *m_ContactsList) {
	//删除联系人
	cout << "请输入删除的人的名字" << endl;
	string sDelName;
	cin >> sDelName;
	/*
	  还可以增加更多的逻辑判断
	  1.没有联系人 怎么写逻辑
	  2.只有一个联系人, 怎么去删除 怎么去显示出来
	 */
	for (int i = 0; i < m_ContactsList->iListNumber; i++) {
		if (m_ContactsList->m_Contacts[i].sName == sDelName ) {
			//删除指针数组内元素
			//1.将后面的元素覆盖此元素,后面依次+1;数组长度-1
			//2.将最后一位元素覆盖此元素,数组长度-1
			//这里采用第二种方式
			m_ContactsList->m_Contacts[i].sName = m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1].sName;
			m_ContactsList->m_Contacts[i].iTelephone = m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1].iTelephone;
			m_ContactsList->m_Contacts[i].sArea = m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1].sArea;
			m_ContactsList->iListNumber -= 1;
			return true;
		}
	}

	return false;
}
bool bSearchContacts(ContactsList *m_ContactsList)

{
	cout << "请输入联系人的名字" << endl;
	string sSearchName;
	cin >> sSearchName;
	for (int i = 0; i < m_ContactsList->iListNumber; i++) {
		if (m_ContactsList->m_Contacts[i].sName == sSearchName) {
			cout << "检索信息->" << endl;
			cout << "姓名:" << m_ContactsList->m_Contacts[i].sName
			     << "  电话:" << m_ContactsList->m_Contacts[i].iTelephone
			     << "  地区:" << m_ContactsList->m_Contacts[i].sArea << endl;
			return true;
		}
	}
	return false;
}

bool bChangeContacts(ContactsList *m_ContactsList) {
	cout << "请输入需要修改人的名字" << endl;
	string sChangeName;
	cin >> sChangeName;
	for (int i = 0; i <= m_ContactsList->iListNumber; i++) {
		if (m_ContactsList->m_Contacts[i].sName == sChangeName) {
			cout << "名字修改为?" << endl;
			cin >> m_ContactsList->m_Contacts[i].sName;
			cout << "电话修改为?" << endl;
			cin >> m_ContactsList->m_Contacts[i].iTelephone;
			cout << "地区修改为?" << endl;
			cin >> m_ContactsList->m_Contacts[i].sArea;
			cout << "修改完成" << endl;
			return true;
		}
		//TODO
	}
	return false;
}



int main() {
	ContactsList g_ContactsList;
	ContactsList Next_ContactsList;
	g_ContactsList.iListNumber = 0; //联系人置0;
	Contacts m_Contacts;
	cout << "******************************" << endl;
	cout << "*********1.显示联系人*********" << endl;
	cout << "*********2.添加联系人*********" << endl;
	cout << "*********3.删除联系人*********" << endl;
	cout << "*********4.查找联系人*********" << endl;
	cout << "*********5.修改联系人*********" << endl;
	cout << "*********6.清空联系人*********" << endl;
	cout << "************0.退出************" << endl;
	while (true) {
		int iInput = 1;
		cin >> iInput;
		switch (iInput) {
			case 1:
				vShowContacts(&g_ContactsList);
				break;
			case 2:
				vAddContacts(m_Contacts, &g_ContactsList);
				break;
			case 3:
				bool a;
				a = bDelContacts(&g_ContactsList);
				if (a == true) {
					cout << "删除成功" << endl;
				} else {
					cout << "删除失败" << endl;
				}
				break;
			case 4:
				bool b;
				b = bSearchContacts(&g_ContactsList);
				if (b == true) {
				} else {
					cout << "没有这个联系人" << endl;
				}
				break;
			case 5:
				bool c;
				c = bChangeContacts(&g_ContactsList);
				if (c == true) {
					//TODO
				} else {
					cout << "修改失败" << endl;
				}
				break;
			case 6:
				g_ContactsList = Next_ContactsList;
				//可以加一个是否确定的逻辑判断
				cout << "成功" << endl;
				break;
			case 0:
				exit(1);
				break;
			default :
				cout << "检索不到命令" << endl;
				break;
		}
	}
	system("pause");
	return 0;
}

  

标签:sName,cout,Contacts,基础,c++,sArea,通讯录,iListNumber,ContactsList
From: https://www.cnblogs.com/LightK/p/16667853.html

相关文章

  • C++ 静态断言 static_assert
    目录从运行时断言谈起静态断言static_assert(C++11)单参数静态断言(C++17)static_assert使用场景参考资料C++11引入了静态断言static_assert,可以在编译期进行断言。从......
  • SQL语句基础一
    相关概念数据库:database,可以理解为一个文件夹,里面存放各种资源。表:table,行:row列:column索引:index视图:view存储过程:procedure存储函数:function触发器......
  • MySQL的基础
    MySQL的基础函数字符串函数数值函数日期函数流程函数字符串函数函数功能CONCAT(S1,S2...Sn)将字符串拼接起来LOWER(str)将字符串str转换成小写U......
  • 学习笔记-涛讲F#(基础 II)
    目录处理一堆数组织代码(命名空间、模块)使用联合重命名类型类必须显式转换成接口对象表达式递归函数CPS解决堆栈溢出扩展一个类型静态解析的类型参数ref变量的实现原理及应......
  • C++ 关于构造函数和this调用的思考
    文中一系列思考和内容引发自以下问题:我需要在一个类的构造函数中调用另一个对象的构造函数,并使用this初始化其中的一个引用成员。主要遇到的问题:1.构造函数的初始化列表......
  • AC C++ 1.6函数
    1、C++中,int返回值的函数可以写return,不会报错,但是返回值会是一个随机值2、函数定义与函数声明,声明不需要写函数体,形参名也可以没,只有一个形参类型就行。声明和定义前后顺......
  • 张量分解(一)基础知识
    ......
  • 基础测试
    一、软件测试核心技术1、操作系统及Web基础软件测试基础的基本概念,软件缺陷的定义,计算机的层次和软件的分类,常用DOS命令,互联网概述,网络体系及网络协议,B/S结构,C/S结构,虚拟......
  • C++中构造函数的超详细讲解
    转:https://blog.csdn.net/guishangppy/article/details/125876729C++在C语言的基础上增加了类和对象的概念,官方对类和对象的解释是:对象是类的实例化,类是对象的抽象,其实这......
  • 使用c++ librados库操作ceph pool
    centos需要安装依赖:yuminstalllibrados2代码如下://代码中使用到的部分参数://cluster_name(默认为ceph)//user_name(默认为client.admin)//con......