C++实现通讯录管理系统

通讯录管理系统C++类对象实现 通讯录管理系统C++ #include #include #include #include using namespace std; #define MAXPEOPLE 100 static int scount=0; class telephone { char name[20]; //姓名 char number... 阅读详情

需求分析:

  1. 添加联系人
  2. 显示所有联系人
  3. 删除联系人
  4. 查找联系人
  5. 修改联系人
  6. 清空联系人
  7. 退出通讯录

 代码:

头文件:

fuc.h

#pragma once
#include<iostream>
#include<string>
using namespace std;


struct Contacts {
	string name;
	string number;
	string QQ;
	string stress;
	short int len = 0;
};

void showMnue();					//显示菜单
void addContacts(Contacts* p);		//添加联系人
void showContacts(Contacts* p);		//显示联系人
void deleteContacts(Contacts* p);	//删除联系人
void findContacts(Contacts* p);		//查找联系人
void alterContacts(Contacts* p);	//修改联系人
void clearContacts(Contacts* p);	//清空联系人

 源文件:

fuc.cpp

#include"fuc.h"


//显示菜单
void showMnue()
{
	string str1 = "*****";
	string str2 = "***************************";
	cout << str2 << endl;
	cout << str1 + "  1、添加联系人  " + str1 << endl;
	cout << str1 + "  2、显示联系人  " + str1 << endl;
	cout << str1 + "  3、删除联系人  " + str1 << endl;
	cout << str1 + "  4、查找联系人  " + str1 << endl;
	cout << str1 + "  5、修改联系人  " + str1 << endl;
	cout << str1 + "  6、清空联系人  " + str1 << endl;
	cout << str1 + "  0、退出通讯录  " + str1 << endl;
	cout << str2 << endl;
}


//添加联系人
void addContacts(Contacts* p) {
	system("cls");
	if (p->len == 9) {
		cout << "通讯录已存满,无法继续添加。";
	}
	else {
		cout << "姓名:";
		cin >> p[p->len].name;
		cout << "联系电话:";
		cin >> p[p->len].number;
		cout << "QQ:";
		cin >> p[p->len].QQ;
		cout << "住址:";
		cin >> p[p->len].stress;
		(p->len)++;
	}
	system("pause");
	system("cls");
	showMnue();
}

//显示联系人
void showContacts(Contacts* p) {
	system("cls");
	if (p->len == 0) {
		system("cls");
		cout << "通讯录为空,请添加联系人。" << endl;
	}
	else{
		cout << "序号\t姓名\t\t\t电话\t\t\tQQ\t\t\t住址" << endl;
		for (int i = 0; i < p->len; i++) {
			cout << i + 1 << "\t" + p[i].name+"\t\t\t"+p[i].number+"\t\t\t"+p[i].QQ+"\t\t\t"+p[i].stress << endl;
		}
	}
	system("pause");
	system("cls");
	showMnue();
}

//删除联系人
void deleteContacts(Contacts* p) {
	system("cls");
	if (p->len == 0) {
		system("cls");
		cout << "删除失败,通讯录为空,请添加联系人。" << endl;
	}
	else {
		cout << "序号\t姓名\t\t\t电话\t\t\tQQ\t\t\t住址" << endl;
		for (int i = 0; i < p->len; i++) {
			cout << i+1 << "\t" + p[i].name + "\t\t\t" + p[i].number + "\t\t\t" + p[i].QQ + "\t\t\t" + p[i].stress << endl;
		}
		cout << "请输入要删除联系人的序号:";
		int del;
		cin >> del; 
		while(true){
			if (del > 0 && del < (p->len) + 1) {
				p[del - 1].name = p[(p->len) - 1].name;
				p[del - 1].number = p[(p->len) - 1].number;
				p[del - 1].QQ = p[(p->len) - 1].QQ;
				p[del - 1].stress = p[(p->len) - 1].stress;
				(p->len)--;
				system("cls");
				cout << "删除成功!" << endl;
				break;
			}
			else {
				cout << "删除失败,请重新输入:";
				cin >> del;
			}
		}
		
	}
	system("pause");
	system("cls");
	showMnue();
}

//查找联系人
void findContacts(Contacts* p) {
	system("cls");
	cout << "请输入要查找联系人的姓名:";
	string name;
	int jug = 0;
	cin >> name;
	for (int i = 0; i < p->len; i++) {
		if (p[i].name == name) {
			jug++;
			if (jug == 1) {
				cout << "序号\t姓名\t\t\t电话\t\t\tQQ\t\t\t住址" << endl;
			}
			cout<< jug << "\t" + p[i].name + "\t\t\t" + p[i].number + "\t\t\t" + p[i].QQ + "\t\t\t" + p[i].stress << endl;
		}
	}
	if (jug == 0) {
		cout << "没有找到此人。" << endl;
	}
	system("pause");
	system("cls");
	showMnue();
}

//修改联系人
void alterContacts(Contacts* p) {
	system("cls");
	if (p->len == 0) {
		system("cls");
		cout << "通讯录为空,请添加联系人。" << endl;
	}
	else {
		cout << "序号\t姓名\t\t\t电话\t\t\tQQ\t\t\t住址" << endl;
		for (int i = 0; i < p->len; i++) {
			cout << i + 1 << "\t" + p[i].name + "\t\t\t" + p[i].number + "\t\t\t" + p[i].QQ + "\t\t\t" + p[i].stress << endl;
		}
	}
	cout << "请选择要修改联系人的序号:";
	int c;

	while (1) {
		cin >> c;
		if (c >= 1 && c <= p->len)
		{
			system("pause");
			system("cls");
			cout << "姓名:";
			cin >> p[c - 1].name;
			cout << "联系电话:";
			cin >> p[c - 1].number;
			cout << "QQ:";
			cin >> p[c - 1].QQ;
			cout << "住址:";
			cin >> p[c - 1].stress;
			system("pause");
			system("cls");
			cout << "修改完成" << endl;
			system("pause");
			break;
		}
		else {
			cout << "输入有误,请重新输入:";
		}
	}
	system("cls");
	showMnue();
}

//清空联系人
void clearContacts(Contacts* p) {
	system("cls");
	if (p->len == 0) {
		cout << "通讯录为空,无需清空" << endl;
	}
	else {
		p->len = 0;
		cout << "清除成功!" << endl;
		
	}
	system("pause");
	system("cls");
	showMnue();
}

main.cpp

#include<iostream>
using namespace std;
#include"fuc.h"
#include <stdlib.h>

int main()
{
	Contacts Con[10];
	int c;
	bool judge = true;
	showMnue();
	while (judge) {
		cin >> c;
		switch (c)
		{
		case 1:
			addContacts(Con);
			break;
		case 2:
			showContacts(Con);
			break;
		case 3:
			deleteContacts(Con);
			break;
		case 4:
			findContacts(Con);
			break;
		case 5:
			alterContacts(Con);
			break;
		case 6:
			clearContacts(Con);
			break;
		case 0:
			system("cls");
			cout << "退出成功,欢迎下次使用。" << endl;
			judge = false;
			break;
		default:
			cout << "请重新输入:";
			break;
		}
			
	}
	system("pause");
	return 0;
}

不足以及可优化之处:

1.再创建一个通讯录结构体,这个结构题存放联系人结构体和人数计数器,这样就不需要在联系人结构体的对象中,每个数组元素都记录当前通讯录人数了。这样会使用更少的内存空间。为了节省内存空间,也可以使用数组的动态申请内存空间,需要添加联系人时,申请 一块更大的新的数组内存,将已有的数组元素(联系人信息)拷贝到新的内存空间中,删除时也可以使用此方法。但是当数据过于庞大时,这个方法过于繁琐,所以可以使用链表来存储数据。

2.增加一个查找联系人函数,用来查找通讯录里的信息并且返回标记,删除、修改函数中先调用查找函数再进行后面的操作,这样会减小代码量。

【C++初学】C++实现通讯录管理系统:从零开始的详细教程 通过以上步骤,我们成功实现了一个功能完整的通讯录管理系统。这个项目不仅涵盖了C++的基本语法,如结构体、函数封装、循环和条件判断,还涉及到了简单的文件操作和用户交互。希望这篇博客能帮助你更好地理解和掌握C++编程,同时也希望你能通过这个项目提升自己的编程能力。 阅读详情

相关推荐

c++通讯录管理系统(超简单带注释)

c++通讯录管理系统(超简单带注释) 新手易入门

通讯录管理系统(C++)

定义通讯录类,属性有:编号、姓名、性别、通讯地址、邮箱地址、电话等信息和相关的对属性做操作的行为。主要完成对通讯录的简单管理,包括添加、查询、显示、编辑、删除、保存、读取。

qq_51178589的博客 4535

PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标

前言 原理简介 输入参数准备 1 objectPoints特征点世界坐标 2 imagePoints特征点在摄像头下的像素点坐标 3cameraMatrixdistCoeffs内参矩阵和畸变矩阵 相机世界坐标的求解 1求世界坐标中的点在相机坐标系下的坐标 2求相机在世界坐标中的坐标 3效果求解相机在世界坐标系下的坐标点 4求解代码1.前言  很多时候,当我们利用单目相机获取图像时,往往只能获取图像中

cocoaqin的博客 5万+

C++通讯录管理系统

简易通讯管理系统,是C++基础知识的综合

ccjj2266887733的博客 5350

【电子电力】IEEE33节点系统参数及拓扑图visio

IEEE33节点系统是一种广泛用于电力系统分析和研究的标准配电网络。该系统具有典型的辐射结构,适用于负载流分析、分布式发电优化及电力系统的可靠性评估。本报告主要基于IEEE33节点系统的拓扑图,讨论其在电子电力系统中的应用。通过MATLAB仿真分析了节点的电压分布、功率损耗等关键参数,并验证了系统的稳定性和有效性。

2401_84610415的博客 1万+

nRF52840 低功耗蓝牙开发指南:从硬件架构到物联网应用实战

本文深入解析nRF52840低功耗蓝牙芯片的硬件架构与开发实践,涵盖从开发环境搭建到BLE协议栈开发的详细指南。通过实战案例分享低功耗优化技巧,帮助开发者高效实现物联网应用,特别适合智能家居和工业场景。

d3e4f的博客 419

通讯录管理系统 C++

通讯录管理系统是一个比较实用的小型管理系统。随着生活节奏的加快,人们追求丰富便捷的电子产品体验,因此也提高对便捷方式的喜爱。当今社会下人们的交际范围越来越广泛,通讯录系统的出现,给人们的生活带来了极大便利和帮助,帮助人们处理繁琐复杂的工作,可以帮人们高效的处理和存储信息。...............

weixin_52929798的博客 2万+

基于 Simulink 的**单相全桥 LLC 谐振双向 DC-DC 变换器(带软开关特性)**实战教程

原边(Primary):全桥逆变电路(4个 MOSFET/IGBT),将直流斩波为高频方波。变压器:提供电气隔离和电压变比。副边(Secondary):全波或全桥整流电路(同步整流或二极管)。

xiaoheshang_123的博客 54

【C++】通讯录管理系统

/-封装函数显示该界面 如 void showMenu() //-在main函数中调用封装好的函数 # include <iostream> using namespace std;//-菜单界面 void showMenu() {cout << "***** 1、添加联系人 *****" << endl;cout << "***** 2、显示联系人 *****" << endl;cout << "***** 3、删除联系人 *****" << endl;

m0_48808835的博客 2849

【Unity工具篇】| Unity项目中如何使用LuBan插件,详细集成步骤

前面写了一篇文章用于介绍LuBan的下载及快速使用方法:【Unity实战篇】| 实用插件LuBan,快速上手使用 本篇文章就来介绍一下将LuBan集成到自己的Unity项目的方法。 看完本篇文章之后,就可以直接把LuBan插件放到自己项目中进行配表和使用。

努力前行,总会成为自己心中的那道光 2万+

基于FFT+BP神经网络/决策树的轴承故障诊断

基于FFT+BP神经网络/决策树的轴承故障诊断

天天酷科研的博客 132

【C/C++基础实战】:用C++实现通讯录管理系统——含完整源码

因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,不存在返回-1。设计时候可以在通讯录结构体中,维护一个容量为1000的存放联系人的数组,并记录当前通讯录中联系人数量。删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有要删除的联系人。根据用户输入的联系人判断该通讯录中是否有此人,查找到进行删除,并提示删除成功,查不到提示查无此人。思路:判断如果当前通讯录中没有人员,就提示记录为空,人数大于0,显示通讯录中信息。

书山有路勤为径,学海无涯苦作舟。 3889

2026最新版OpenClaw安装:Windows WSL2从零到跑通

Windows WSL2安装OpenClaw指南 本文详细介绍了在Windows系统上通过WSL2部署OpenClaw AI助理的完整流程。WSL2结合了Windows易用性和Linux高性能,特别适合Windows用户、开发者、学生和技术爱好者。文章涵盖硬件要求(推荐i5/16GB/SSD)、系统准备(Windows 10/11+WSL2)、环境部署(Python/Node.js/Redis)和OpenClaw配置(克隆/编译/初始化)等关键步骤。通过WSL2,用户可在保留Windows操作习惯的同

一键难忘的博客 2345

利用C++实现通讯录管理系统

功能描述:实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,不存在返回-1。删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有要删除的联系人。思路:添加联系人前先判断通讯录是否已满,如果满了就不再添加,未满情况将新联系人信息逐个加入到通讯录。思路:判断如果当前通讯录中没有人员,就提示记录为空,人数大于0,显示通讯录中信息。

qq_61290020的博客 1514

模拟一个基站和一个移动台之间的信号传播

同样使用时间序列和上述参数计算出反射径信号的信号强度。根据时间序列和上述参数,计算出直射径信号的信号强度。该信号被视为一个简单的正弦波信号,其频率是2Hz。:时间序列,从0.1秒开始,每隔0.0001秒采样一次,直到12秒。:设置坐标轴范围,横轴范围为0到12秒,纵轴范围为-0.5到0.5。:移动台移动的速度。:移动台距离基站的初始距离。:基站到反射墙的距离。假设基站到反射墙的距离为15米。:绘制直射径信号、反射径信号和合成信号的波形图。:添加标签,标注每条曲线对应的含义。表示反射径信号的颜色为绿色,

Fanjufei的博客 292

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[C++] 通讯录管理系统 详细实现方法

通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统。

Alex的博客 1308

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

通讯录管理系统开发 C++实现

成品完整代码教你制作自己的通讯录,以后就可以用自己写的通讯录存储自己的联系人了!

Alkaid#3529的博客 2186

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

c++vscode多文件实现通讯录管理系统

系统需求通讯录是一个可以记录亲人、好友信息的工具。添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人信息修改联系人:按照姓名重新修改指定联系人清空联系人:清空通讯录中所有信息退出通讯录:退出当前使用的通讯录添加读取文件保存进独立文件功能,记录,使下次运行时保存原先的联系人多文件协同运行,包括头文件.h和文件.cpp。

fast_gowin的博客 1440

如何使用 C++ 实现通讯录管理系统

首先,我们需要定义一个联系人管理类Contact,负责管理联系人信息(如姓名、性别、电话号码)及相关操作功能(如增加、删除、查找联系人等)。我们在文件中声明类,并在文件中实现它的具体逻辑。通过本文,你学习了如何使用 C++ 实现一个基本的通讯录管理系统。我们定义了一个Contact类用于管理联系人信息,并通过主菜单系统实现了对通讯录的增删查改功能。这是一个很好的练习项目,可以帮助你熟悉 C++ 类的设计和基本的 I/O 操作。

qq_50394172的博客 1879
上一篇: 结构体、函数、分文件、冒泡排序综合——按照年龄大小输出英雄属性
下一篇: C++中将堆区的地址释放以后,原本指向该内存的地址指向了哪里
IamVeryLucky
博客等级 码龄7年 46粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值