萌新首发,C/C++(通讯录管理系统)希望大家多多关注、点赞

前言

一、通讯录管理系统的开发

1、开发该系统的前期准备

(1)菜单格式

(2)联系人结构体的创建

( 3)通讯录结构体的创建

(4)实现main的基本功能

2、通讯录中各个功能的实现

(1)退出功能

(2)添加联系人

(3)显示联系人

(4)删除联系人

(5)查找联系人

(6)修改联系人

(7)清空联系人

二、完整代码

总结

前言
`通讯录管理系统的开发过程:
为了巩固和运用大一上学期对C/C++编程语言的学习,我选择通讯录管理系统作为大学第一个开发项目。
本项目会用C++语言实现通讯录管理系统,该系统可以储存若干联系人的信息包括:姓名、性别、年龄、联系电话、家庭住址。
该系统的功能包括:
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
这篇文章会一步步实现这些功能。

提示:以下是本篇文章正文内容。

一、通讯录管理系统的开发
1、开发该系统的前期准备
(1)菜单格式
开发一个通讯录系统,我们首先要做的就是系统的菜单界面,并引导用户学会去使用该系统,菜单还应该便于用户操作。
菜单代码如下:

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;
}

具体效果如下:

1
这里把菜单封装成一个函数,方便我们下面的操作,这样我们的菜单就做好了。

(2)联系人结构体的创建
这一步我们要把通讯录中联系人的信息功能给实现
代码如下(示例):

//联系人结构体
struct Person
{
    
    
	//姓名
	string m_Name; 
	//性别  1为男性 2为女性 
	int m_Sex;
	//年龄
	int m_Age; 
	//电话
	string m_Phone;
	//住址
	string m_Addr;
}; 

此处要将联系人的各项信息存储在该结构体中。
( 3)通讯录结构体的创建
这一步和上一步操作基本一致,我们利用结构体来创建通讯录。
在创建结构体之前我们先定义一个常量MAX,方便以后更改通讯录存储人数。

#define MAX 1000

代码如下(示例):

//通讯录结构体
struct Addressbooks
{
    
    
	//通讯录中保存的联系人数组
	struct Person personArray[MAX];
	//通讯录中当前记录联系人个数
	int m_Size; 
};

(4)实现main的基本功能
在main函数中我们要实现菜单及其选项功能,因此我选用switch语句。
代码如下(示例):

switch (select)  //select 为用户选择的功能 
        {
    
    
            case 1:  //添加联系人
                break;
            case 2:  //显示联系人
                break;
            case 3:  //删除联系人
                break;
            case 4:  //查找联系人
                break;
            case 5:  //修改联系人
                break;
            case 6:  //清空联系人
                break;
            case 0:  //退出通讯录
               
                break;     
        }

这个就是我们项目的主体。

为了方便用户使用菜单,我们让用户每次正确操作完成后再次显示菜单界面
代码如下(示例):

int main()
{
    
    
	//创建通讯录结构体变量
	Addressbooks abs; 
	//初始化通讯录当前的人个数
	abs.m_Size =0;
	
    int select=0;//创建用户选择输入的变量 
    while (true)
    {
    
    
    	//菜单调用 
        showMenu();
        
        cin>>select;
		switch (select)  //select 为用户选择的功能 
        {
    
    
            case 1:  //添加联系人
                break;
            case 2:  //显示联系人
                break;
            case 3:  //删除联系人
                break;
            case 4:  //查找联系人
                break;
            case 5:  //修改联系人
                break;
            case 6:  //清空联系人
                break;
            case 0:  //退出通讯录
                 
                break;     
        }
    }
    
    system("pause");
    return 0;
}

2、通讯录中各个功能的实现
(1)退出功能
退出功能比较简单,我们把它实现。
我们的目的是当用户输入0的时候退出程序。

在case 0的下面加return 0;就可以实现。

代码如下(示例):

case 0:  //退出通讯录
                cout<<"欢迎下次使用"<<endl;
                system("pause");    
                return 0;
                break;

(2)添加联系人
实现添加联系人功能,联系人功能上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)。

这个功能是之后其它功能的基础。

实现这个功能我们要用到之前创建的联系人结构体和通讯录结构体,并利用指针来修改结构体中的数据。
①、首先判断通讯录是否有地方
②、输入各项数据
③、判断各项数据是否符合实际情况
代码如下(示例):

//添加联系人
void addPerson(Addressbooks *abs)
{
    
    
	//判断通讯录是否有地方
	if(abs->m_Size==MAX)
	{
    
    
		cout<<"通讯录已满,无法添加!"<<endl;
		return ;
	}
	else
	{
    
    
		//姓名 
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personArray[abs->m_Size].m_Name=name;
		//性别
		cout<<"请输入性别:"<<endl;
		cout<<"1---男"<<endl;
		cout<<"2---女"<<endl;
		int sex=0;
		while(true)
		{
    
    
			cin>>sex;
			if(sex==1||sex==2)
			{
    
    
				abs->personArray[abs->m_Size].m_Sex=sex;
				break;
			}
			cout<<"输入有误,请重新输入"<<endl; 
	    }
	    //年龄
		cout<<"请输入年龄:"<<endl;
		int age=0;
		while(true)
		{
    
    
			cin>>age;
			if(age>=0||age<=150)
			{
    
    
				abs->personArray[abs->m_Size].m_Age=age; 
				break;
			}
			cout<<"输入有误,请重新输入"<<endl; 
		}
		//电话
		cout<<"请输入联系电话: "<<endl;
		string phone;
		cin>>phone;
		abs->personArray[abs->m_Size].m_Phone=phone;
		//住址
		cout<<"请输入家庭住址: "<<endl;
		string address;
		cin>>address;
		abs->personArray[abs->m_Size].m_Addr=address;
		//更新通讯录人数 
		abs->m_Size++;
		
		cout<<"添加成功!"<<endl; 
		system("pause");
		system("cls");  //实现清屏功能
	}
}

如果操作过多,终端中的显示内容太繁琐,这时我们使用system(“cls”)来清屏。

(3)显示联系人
这个功能是将通讯录中所有联系人的信息打印在终端上。
我们存储联系人性别时用的是1和2,在这里要进行一步转化
①、首先要判断此时通讯录中是否有联系人
②、将联系人的信息打印
代码如下(示例):

//显示联系人
void showPerson(Addressbooks *abs)
{
    
    
	//判断通讯录中人数是否为0
	if(abs->m_Size==0) 
	{
    
    
		cout<<"当前记录为空"<<endl; 
	}
	else
	{
    
    
		for(int i=0;i<abs->m_Size;i++)
		{
    
    
			cout<<"姓名:"<<abs->personArray[i].m_Name<<"\t";
			cout<<"性别:"<<(abs->personArray[i].m_Sex==1?"男":"女")<<"\t";
			cout<<"年龄:"<<abs->personArray[i].m_Age<<"\t";
			cout<<"联系电话:"<<abs->personArray[i].m_Phone<<"\t";
			cout<<"家庭地址:"<<abs->personArray[i].m_Addr<<endl;
		}
	}
	system("pause");
	system("cls");
}

样例如下:本文中出现的姓名,如有雷同,纯属虚构。

2
(4)删除联系人
这个功能我们用两个函数去实现
第一个函数
代码如下(示例):

int isExist(Addressbooks * abs,string name)

利用这个函数查找用户要删除的联系人是否存在,如果存在返回该联系人在通讯录结构体内的下标,如果不存在则返回-1。

//查找联系人
int isExist(Addressbooks * abs,string name)
{
    
    
	for(int i=0;i<abs->m_Size;i++)
	{
    
    
		if(abs->personArray[i].m_Name==name)
		{
    
    
			return i;
		}
	}
	return -1;
}

第二个函数是我们要实现的删除函数

//删除联系人
void deletePerson(Addressbooks *abs)
{
    
    
	cout<<"请输入您要删除的联系人"<<endl;
	
	string name;
	cin >>name;
	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");
}

这里有个细节,当成功删除一个联系人时,通讯录中的人数要减一
样例如下
3
(5)查找联系人
这个功能与显示联系人有点相似,不同的是这里只显示用户查找的联系人的信息
代码如下(示例):

//查找联系人
void findPerson(Addressbooks * abs)
{
    
    
	cout<<"请输入您要查找的联系人"<<endl;
	string name;
	cin>>name;
	
	int ret=isExist(abs,name);
	if(ret!=-1)
	{
    
    
		cout<<"姓名:"<<abs->personArray[ret].m_Name<<"\t";
		cout<<"性别:"<<(abs->personArray[ret].m_Sex==1?"男":"女")<<"\t";
		cout<<"年龄:"<<abs->personArray[ret].m_Age<<"\t";
		cout<<"联系电话:"<<abs->personArray[ret].m_Phone<<"\t";
		cout<<"家庭地址:"<<abs->personArray[ret].m_Addr<<endl;
	}
	else
	{
    
    
		cout<<"查无此人"<<endl;
	 } 
	 system("pause");
	 system("cls");
		
} 

(6)修改联系人
实现这个功能需要先使用查找函数,找到相应联系人在通讯录中的下标,然后通过指针对该联系人的信息进行修改
代码如下(示例):

//修改联系人
void modifyPerson(Addressbooks *abs)
{
    
    
	cout<<"请输入您要修改的联系人"<<endl;
	string name;
	cin>> name;
	int ret=isExist(abs,name);
	if(ret!=-1)
	{
    
    
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personArray[ret].m_Name=name;
		
		cout<<"请输入性别:"<<endl;
		cout<<"1---男"<<endl;
		cout<<"2---女"<<endl;
		int sex=0;
		while(true)
		{
    
    
			cin >>sex;
			if(sex==1||sex==2)
			{
    
    
				abs->personArray[ret].m_Sex=sex;
				break;
			}
			cout<<"输入错误,请重新输入!"<<endl;
		}
		
		cout<<"请输入年龄:"<<endl;
		int age=0;
		cin >>age;
		abs->personArray[ret].m_Age=age;
		
		cout<<"请输入联系电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personArray[ret].m_Phone=phone;
		
		cout<<"请输入一个家庭住址:"<<endl;
		string address;
		cin>>address;
		abs->personArray[ret].m_Addr=address;
		
		cout<<"修改成功!";
		 
	}
	else
	{
    
    
		cout<<"查无此人"<<endl;
	}
	system("pause");
	system("cls");
	
} 

7)清空联系人

实现该功能非常简单,我们只需将通讯录中保存的人数修改为0,即可实现该功能。

代码如下(示例):

//清空联系人
void cleanPerson(Addressbooks *abs)
{
    
    
	abs->m_Size=0;
	cout<<"通讯录已清空"<<endl;
	system("pause");
	system("cls");
} 

二、完整代码

#include <iostream>
#include <string> 
#define MAX 1000
using namespace std;
//联系人结构体
struct Person
{
    
    
	//姓名
	string m_Name; 
	//性别  1为男性 2为女性 
	int m_Sex;
	//年龄
	int m_Age; 
	//电话
	string m_Phone;
	//住址
	string m_Addr;
}; 
//通讯录结构体
struct Addressbooks
{
    
    
	//通讯录中保存的联系人数组
	struct Person personArray[MAX];
	//通讯录中当前记录联系人个数
	int m_Size; 
};
//添加联系人 
void addPerson(Addressbooks *abs); 
//显示所有联系人 
void showPerson(Addressbooks * abs);

//检查联系人是否存在
int isExist(Addressbooks * abs,string name); 

//删除指定联系人
void deletePerson(Addressbooks *abs);

//查找联系人
void findPerson(Addressbooks * abs);

//修改联系人
void modifyPerson(Addressbooks *abs);

//清空联系人
void cleanPerson(Addressbooks *abs);

//菜单 
void showMenu(); 

int main()
{
    
    
	//创建通讯录结构体变量
	Addressbooks abs; 
	//初始化通讯录当前的人个数
	abs.m_Size =0;
	
    int select=0;//创建用户选择输入的变量 
    while (true)
    {
    
    
    	//菜单调用 
        showMenu();
        
        cin>>select;
        
        switch (select)
        {
    
    
            case 1:  //添加联系人
            	addPerson(&abs);//利用指针修改实参 
                break;
            case 2:  //显示联系人
                showPerson(&abs);
                break;
            case 3:  //删除联系人
            deletePerson(&abs);
            
                break;
            
            case 4:  //查找联系人
            findPerson(&abs);
                break;
            case 5:  //修改联系人
            modifyPerson(&abs);
                break;
            case 6:  //清空联系人
            cleanPerson(&abs);
                break;
            case 0:  //退出通讯录
                cout<<"欢迎下次使用"<<endl;
                system("pause");    
                return 0;
                break;
            
        }
	}
    
    system("pause");
    return 0;
}

//菜单
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;
}

//添加联系人
void addPerson(Addressbooks *abs)
{
    
    
	//判断通讯录是否有地方
	if(abs->m_Size==MAX)
	{
    
    
		cout<<"通讯录已满,无法添加!"<<endl;
		return ;
	}
	else
	{
    
    
		//姓名 
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personArray[abs->m_Size].m_Name=name;
		//性别
		cout<<"请输入性别:"<<endl;
		cout<<"1---男"<<endl;
		cout<<"2---女"<<endl;
		int sex=0;
		while(true)
		{
    
    
			cin>>sex;
			if(sex==1||sex==2)
			{
    
    
				abs->personArray[abs->m_Size].m_Sex=sex;
				break;
			}
			cout<<"输入有误,请重新输入"<<endl; 
	    }
	    //年龄
		cout<<"请输入年龄:"<<endl;
		int age=0;
		while(true)
		{
    
    
			cin>>age;
			if(age>=0||age<=150)
			{
    
    
				abs->personArray[abs->m_Size].m_Age=age; 
				break;
			}
			cout<<"输入有误,请重新输入"<<endl; 
		}
		//电话
		cout<<"请输入联系电话: "<<endl;
		string phone;
		cin>>phone;
		abs->personArray[abs->m_Size].m_Phone=phone;
		//住址
		cout<<"请输入家庭住址: "<<endl;
		string address;
		cin>>address;
		abs->personArray[abs->m_Size].m_Addr=address;
		//更新通讯录人数 
		abs->m_Size++;
		
		cout<<"添加成功!"<<endl; 
		system("pause");
		system("cls");
	}
}

//显示联系人
void showPerson(Addressbooks *abs)
{
    
    
	//判断通讯录中人数是否为0
	if(abs->m_Size==0) 
	{
    
    
		cout<<"当前记录为空"<<endl; 
	}
	else
	{
    
    
		for(int i=0;i<abs->m_Size;i++)
		{
    
    
			cout<<"姓名:"<<abs->personArray[i].m_Name<<"\t";
			cout<<"性别:"<<(abs->personArray[i].m_Sex==1?"男":"女")<<"\t";
			cout<<"年龄:"<<abs->personArray[i].m_Age<<"\t";
			cout<<"联系电话:"<<abs->personArray[i].m_Phone<<"\t";
			cout<<"家庭地址:"<<abs->personArray[i].m_Addr<<endl;
		}
	}
	system("pause");
	system("cls");
}

//查找函数
int isExist(Addressbooks * abs,string name)
{
    
    
	for(int i=0;i<abs->m_Size;i++)
	{
    
    
		if(abs->personArray[i].m_Name==name)
		{
    
    
			return i;
		}
	}
	return -1;
}

//删除联系人
void deletePerson(Addressbooks *abs)
{
    
    
	cout<<"请输入您要删除的联系人"<<endl;
	
	string name;
	cin >>name;
	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");
}

 //查找联系人
void findPerson(Addressbooks * abs)
{
    
    
	cout<<"请输入您要查找的联系人"<<endl;
	string name;
	cin>>name;
	
	int ret=isExist(abs,name);
	if(ret!=-1)
	{
    
    
		cout<<"姓名:"<<abs->personArray[ret].m_Name<<"\t";
		cout<<"性别:"<<(abs->personArray[ret].m_Sex==1?"男":"女")<<"\t";
		cout<<"年龄:"<<abs->personArray[ret].m_Age<<"\t";
		cout<<"联系电话:"<<abs->personArray[ret].m_Phone<<"\t";
		cout<<"家庭地址:"<<abs->personArray[ret].m_Addr<<endl;
	}
	else
	{
    
    
		cout<<"查无此人"<<endl;
	 } 
	 system("pause");
	 system("cls");
		
} 

//修改联系人
void modifyPerson(Addressbooks *abs)
{
    
    
	cout<<"请输入您要修改的联系人"<<endl;
	string name;
	cin>> name;
	int ret=isExist(abs,name);
	if(ret!=-1)
	{
    
    
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personArray[ret].m_Name=name;
		
		cout<<"请输入性别:"<<endl;
		cout<<"1---男"<<endl;
		cout<<"2---女"<<endl;
		int sex=0;
		while(true)
		{
    
    
			cin >>sex;
			if(sex==1||sex==2)
			{
    
    
				abs->personArray[ret].m_Sex=sex;
				break;
			}
			cout<<"输入错误,请重新输入!"<<endl;
		}
		
		cout<<"请输入年龄:"<<endl;
		int age=0;
		cin >>age;
		abs->personArray[ret].m_Age=age;
		
		cout<<"请输入联系电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personArray[ret].m_Phone=phone;
		
		cout<<"请输入一个家庭住址:"<<endl;
		string address;
		cin>>address;
		abs->personArray[ret].m_Addr=address;
		
		cout<<"修改成功!";
		 
	}
	else
	{
    
    
		cout<<"查无此人"<<endl;
	}
	system("pause");
	system("cls");
	
} 

//清空联系人
void cleanPerson(Addressbooks *abs)
{
    
    
	abs->m_Size=0;
	cout<<"通讯录已清空"<<endl;
	system("pause");
	system("cls");
}

总结
这是我第一次写博客,如果有不合适的地方或者有问题请大家在评论区指出。希望大家能给个关注,点个赞。

猜你喜欢

转载自blog.csdn.net/z2004cx/article/details/128213911