话不多说,上代码(Dev-C++编写,其他编译器也可以运行)
#include <iostream>
#include<string>
#define MAX 100
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//设计联系人结构体
struct Person
{
string m_Name; //姓名
int m_Sex; //性别
int m_Age; //年龄
string m_Phone; // 电话
string m_Addr; //家庭住址
};
//通讯录结构体
struct Addressbooks
{
//通讯录 保存联系人数组
struct Person personAdrray[MAX];
//通讯录 当前记录联系人个数
int m_Size;
};
//显示菜单
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.添加联系人****
void addPerson(Addressbooks*abs)
{
//判断通讯录是否满
if(abs->m_Size==MAX)
{
cout<<"通讯录以满"<<endl;
return;
}
else
{
string name; //添加姓名
cout<<"请输入姓名:"<<endl;
cin>>name;
abs->personAdrray[abs->m_Size].m_Name=name;
//添加性别
cout<<"请输入性别:"<<endl;
cout<<"0-->男性"<<endl;
cout<<"1-->女性"<<endl;
cout<<"请输入性别:" <<endl ;
int sex=0;
while(1)
{
cin>>sex;//如果输入0/1退出循环否则重新输入
if(sex==0||sex==1)
{
abs->personAdrray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"输入有误,重新输入:" <<endl ;//endl
}
//添加年龄
int age=0;
cout<<"请输入年龄:"<<endl;
while(1)
{
cin>>age;//如果输入正常年龄退出循环否则重新输入
if(age>0&&age<=120)
{
abs->personAdrray[abs->m_Size].m_Age=age;
break;
}
cout<<"输入有误,重新输入:" <<endl ;//endl
}
//添加电话
string phone;
cout<<"请输入联系电话:"<<endl;
cin>>phone;
abs->personAdrray[abs->m_Size].m_Phone=phone;
//添加家庭住址
cout<<"请输入家庭住址:"<<endl;
string address;
cin>>address;
abs->personAdrray[abs->m_Size].m_Addr=address;
//更新通讯录人数
abs->m_Size++ ;
cout<<"添加成功"<<endl;
cout<<"**************************"<<endl;
system("pause");//请按任意键继续
system("cls"); //清屏功能
}
}
// 2.显示联系人****
void showPerson(Addressbooks*abs)
{
//判断通讯录人数,0显示空 不为0显示联系人信息
if(abs->m_Size==0)
{
cout<<"当前记录为空"<<endl;
}
else
{
int i;
for(i=0;i<abs->m_Size;i++)
{
cout<<"姓名:"<<abs->personAdrray[i].m_Name<<"\t";
cout<<"性别:"<<(abs->personAdrray[i].m_Sex==0 ? "男":"女")<<"\t";
cout<<"年龄:"<<abs->personAdrray[i].m_Age<<"\t";
cout<<"联系电话:"<<abs->personAdrray[i].m_Phone<<"\t";
cout<<"家庭住址:"<<abs->personAdrray[i].m_Addr<<endl;
// cout<<"*********************"<<endl; //有"\t"不用分隔线
}
}
system("pause");//请按任意键继续
system("cls"); //清屏功能
}
// 检测联系人是否存在,存在返回联系人数组位置,否则返回-1
int isExist(Addressbooks*abs,string name)
{
int i;
for(i=0;i<=abs->m_Size;i++)
{
//找到用户信息
if(abs->personAdrray[i].m_Name==name)
{
return i;
}
}
return -1; //不存在 返回-1
}
//3.删除联系人 ****
void deletePerson(Addressbooks*abs)
{
cout<<"请输入删除联系人:"<<"";
string name;
cin>> name;
//ret=-1 不存在 ret!=-1 存在
int ret=isExist(abs,name);
if(ret!=-1)
{
int i=ret; //找到用户进行删除
for(i;i<abs->m_Size;i++)
{
//删除后 后面数据向前移动
abs->personAdrray[i]=abs->personAdrray[i+1];
}
abs->m_Size--; //更新通讯录人数
cout<<"删除联系人成功"<<endl;
}
else
{
cout<<"查无此人"<<endl;
cout<<"请重新输入:"<<"";
}
system("pause");//请按任意键继续
system("cls"); //清屏功能
}
// 4.查找联系人 *****
void findPerson(Addressbooks*abs)
{
cout<<"请输入查找联系人:"<<"";
string name;
cin>>name;
//判断 查找的联系人是否存在
int ret=isExist(abs,name);
if(ret!=-1) //找到并且显示联系人
{
cout<<"姓名:"<<abs->personAdrray[ret].m_Name<<"\t";
cout<<"性别:"<<abs->personAdrray[ret].m_Sex<<"\t";
cout<<"年龄:"<<abs->personAdrray[ret].m_Age<<"\t";
cout<<"联系电话:"<<abs->personAdrray[ret].m_Phone<<"\t";
cout<<"家庭住址:"<<abs->personAdrray[ret].m_Addr<<endl;
}
else
{
cout<<"查无此人"<<endl;
cout<<"请重新输入:"<<"";
}
system("pause");//请按任意键继续
system("cls"); //清屏功能
}
//5.修改联系人 *****
void moidfyPerson(Addressbooks*abs)
{
cout<<"请输入修改的联系人:"<<"";
string name;
cin>>name;
//判断 查找的联系人是否存在
int ret=isExist(abs,name);
if(ret!=-1) //找到并且显示联系人
{
//姓名:
string name;
cout<<"请输入姓名:"<<endl;
cin>>name;
abs->personAdrray[ret].m_Name=name;
//性别:
cout<<"请输入性别:"<<endl;
cout<<"0-->男性"<<endl;
cout<<"1-->女性"<<endl;
int sex=0;
while(1)
{
cin>>sex;
if(sex==1||sex==2)
{
//输入正确,退出循环
abs->personAdrray[ret].m_Sex=sex;
break;
}
cout<<"请重新输入:"<<"";
}
//年龄:
cout<<"请输入年龄:"<< endl;
int age=0;
cin>>age;
abs->personAdrray[ret].m_Age=age;
//联系电话:
cout<<"请输入联系电话:"<<endl;
string phone;
cin>>phone;
abs->personAdrray[ret].m_Phone=phone;
//家庭住址:
cout<<"请输入家庭住址:"<<endl;
string address;
cin>>address;
abs->personAdrray[ret].m_Addr=address;
}
else
{
cout<<"查无此人"<<endl;
cout<<"请重新输入:"<<"";
}
system("pause");//请按任意键继续
system("cls"); //清屏功能
}
//6.清空联系人 *****
void cleanPerson(Addressbooks*abs)
{
cout<<"请重输入9清空通讯录"<<endl;
int rechoose;
cin>>rechoose;
if(rechoose==9)
{
abs->m_Size=0;
cout<<"通讯录已清空"<<endl;
system("pause");//请按任意键继续
system("cls"); //清屏功能
}
else
{
cout<<"请重新选择;"<<endl;
system("pause");//请按任意键继续
system("cls"); //清屏功能
}
}
int main(int argc, char** argv)
{
//创建通讯录结构体变量
Addressbooks abs;
//初始化通讯录当前人员个数为0
abs.m_Size=0;
int select=0; //创建用户选择输入变量
while(1)
{
showMenu(); //调用菜单函数 //菜单调用
cout<<"请输入您的选择:"<<"";
cin>>select;
switch(select)
{
case 1: //1.添加联系人
addPerson(&abs); //调用联系人函数 //利用地址, 修改实参
break;
case 2: //2.显示联系人
showPerson(&abs); //调用显示联系人函数 //利用地址, 修改实参
break;
case 3: //3.删除联系人
deletePerson(&abs);
/*
{
cout<<"请输入删除联系人姓名:"<<"";
string name;
cin>>name;
if(isExist(&abs,name)==-1)
{
cout<<"查无此人"<<endl;
cout<<"请重新输入:"<<"";
}
else
{
cout<<"找到此人"<<endl;
}
}*/
break;
case 4: //4.查找联系人
findPerson(&abs); //调用显查找联系人函数 //利用地址, 修改实参
break;
case 5: //5.修改联系人
moidfyPerson(&abs); //
break;
case 6: //6.清空联系人
cleanPerson(&abs); //
break;
case 0: // 0.退出通讯录 ****
cout<<"欢迎下次使用"<<endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}
测试展示
关注.点赞.收藏