目录
1.创建项目
创建项目步骤如下:
- 创建新项目
- 添加文件
创建项目
添加文件
填写项目名称,选择项目路径
2.菜单功能
功能描述: 用户选择功能的界面
菜单界面如下:
3.添加联系人
功能描述:
实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名,性别,年龄,联系电话,家庭住址)
添加联系人实现步骤:
- 设计联系人结构体
- 设计通讯录结构体
- main函数中创建通讯录
- 封装添加联系人函数
- 测试添加联系人功能
设计联系人结构体和设计通讯录结构体
联系人信息包括: 姓名,性别,年龄,联系电话,家庭住址
设计如下:
main函数中创建一个通讯录
添加联系人函数封装号后,在main函数中创建一个通讯录变量,这个就是我们需要一直维护的通讯录
封装添加联系人函数
添加联系人代码:
//1.添加联系人
void addPerson(Addressbooks*abs)
{
if (abs->size==MAX)
{
cout << "通讯录已满,无法添加!" << endl;
return;
}else
{
string names;
cout <<"请输入姓名:" <<endl;
cin>>names;
abs->personArray[abs->size].name=names;
cout << "请输入性别:"<<endl;
cout << "1--男 2--女"<< endl;
int sex=0;
while (true)
{
cin>>sex;
if (sex==1||sex==2)
{
abs->personArray[abs->size].age=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
cout << "请输入年龄:"<< endl;
int ages=0;
cin >> ages;
abs->personArray[abs->size].age=ages;
cout <<"请输入联系电话"<< endl;
string phones;
cin>>phones;
abs->personArray[abs->size].phone=phones;
cout<< "请输入家庭住址"<< endl;
string addresso;
cin>>addresso;
abs->personArray[abs->size].addr=addresso;
abs->size++;
cout<<"添加成功!"<<endl;
system("pause");//按任意键继续
system("cls");//清屏
}
}
测试添加联系人功能
选择界面中,如果选择了1,则代表添加联系人
在switch case语句中,case1里添加:
switch (select)
{
case 1://添加联系人
addPerson(&abs);//利用地址传递,可以修饰实参
break;
}
测试效果图:
4.显示联系人
功能描述:显示通讯录中已有的联系人信息
显示联系人步骤:
- 封装显示联系人函数
- 测试显示联系人功能
封装显示联系人函数
显示联系人代码:
//显示联系人
void showPerson(Addressbooks * abs)
{
if (abs->size==0)
{
cout<<"当前的记录为空"<<endl;
}else
{
for (int i = 0; i < abs->size; i++)
{
cout<<"姓名:"<< abs->personArray[i].name<<"\t";
cout<<"性别:"<< (abs->personArray[i].sex==1?"女":"男")<<"\t";
cout<<"年龄:"<< abs->personArray[i].age<<"\t";
cout<<"电话:"<< abs->personArray[i].phone<<"\t";
cout<<"住址:"<< abs->personArray[i].addr<<endl;
}
}
system("pause");
system("cls");
}
测试显示联系人功能
在switch case2中显示:
switch (select)
{
case 1://添加联系人
addPerson(&abs);//利用地址传递,可以修饰实参
break;
case 2://显示联系人
showPerson(&abs);
break;
}
测试效果图:
5.删除联系人
功能描述: 按照姓名进行删除指定的联系人
删除联系人实现步骤:
- 封装检测联系人是否存在
- 封装删除联系人函数
- 测试删除联系人功能
封装检测联系人是否存在
设计思路:
删除联系人前,我们需要先判断用户输入的联系人是否存在,如果在删除,不存在显示没有要删除的联系人,因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,不存在返回-1.
封装检测联系人是否存在代码:
//检测联系人是否存在
int isExist(Addressbooks * abs,string dname)
{
for (int i = 0; i < abs->size; i++)
{
//找到用户输入的姓名了
if (abs->personArray[i].name==dname)
{
return i;
}
}
return -1;
}
封装删除联系人函数代码:
//删除联系人
void deleterPerson(Addressbooks * abs)
{
cout << "请输入您要删除的联系人" <<endl;
string name;
cin >>name;
int ret=isExist(abs,name);
if (ret!=-1)
{
for (int i = 0; i < abs->size; i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->size--;
cout<< "删除成功"<<endl;
}else
{
cout << "查无此人" << endl;
}
system("pause");
system("cls");
}
测试删除联系人功能代码:
在switch语句 case3删除联系人
switch (select)
{
case 1://添加联系人
addPerson(&abs);//利用地址传递,可以修饰实参
break;
case 2:
showPerson(&abs);
break;
case 3://删除联系人
deleterPerson(&abs);
break;
}
运行结果:
6.查找联系人
功能描述: 按照姓名查看指定联系人信息
查找联系人实现步骤
- 封装查找联系人函数
- 测试查找指定联系人
封装查找联系人函数
查找联系人代码:
//查找指定联系人信息
void findPerson(Addressbooks * abs)
{
cout << "请输入您要查找的联系人" << endl;
string name1;
cin>> name1;
int ret=isExist(abs,name1);
if (ret!=-1)
{
cout<<"姓名:"<< abs->personArray[ret].name<<"\t";
cout<<"性别:"<< abs->personArray[ret].sex<<"\t";
cout<<"年龄:"<< abs->personArray[ret].age<<"\t";
cout<<"电话:"<< abs->personArray[ret].phone<<"\t";
cout<<"住址:"<< abs->personArray[ret].addr<<endl;
}else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
测试查找指定联系人
在switch 语句中,case4查找联系人
case 4:
findPerson(&abs);
break;
运行代码结果:
7.修改联系人
功能描述: 按照姓名重新修改指定联系人
修改联系人实现步骤:
- 封装修改联系人函数
- 测试修改联系人功能
封装修改联系人函数
修改联系人代码如下:
//修改联系人
void modifyPerson(Addressbooks * abs)
{
cout<<"请输入您要修改的联系人"<<endl;
string name;
cin>>name;
int ret= isExist(abs,name);
if (ret!=-1)
{
string names;
cout <<"请输入姓名:" <<endl;
cin>>names;
abs->personArray[abs->size].name=names;
cout << "请输入性别:"<<endl;
cout << "1--男 2--女"<< endl;
int sex=0;
while (true)
{
cin>>sex;
if (sex==1||sex==2)
{
abs->personArray[abs->size].age=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
cout << "请输入年龄:"<< endl;
int ages=0;
cin >> ages;
abs->personArray[abs->size].age=ages;
cout <<"请输入联系电话"<< endl;
string phones;
cin>>phones;
abs->personArray[abs->size].phone=phones;
cout<< "请输入家庭住址"<< endl;
string addresso;
cin>>addresso;
abs->personArray[abs->size].addr=addresso;
cout<<"修改成功"<<endl;
}else
{
cout<<"查无此人"<<endl;
}
system("pause");//按任意键继续
system("cls");//清屏
}
测试修改联系人功能
在switch语句中的case5:
case 5:
modifyPerson(&abs);
break;
8.清空联系人
功能描述:清空通讯录中所有信息
清空联系人实现步骤
- 封装清空联系人函数
- 测试清空联系人
封装清空联系人函数
清空联系人代码:
//清空联系人
void cleanPerson(Addressbooks * abs)
{
abs->size=0;
cout<<"通讯录清空" << endl;
system("pause");
system("cls");
}
测试清空联系人
在switch 语句中,case6清空联系人
case 5:
cleanPerson(&abs);
break;
运行代码结果:
9.退出功能
功能描述:退出通讯录系统
代码:
case 0:
cout<<"欢迎下次使用"<<endl;
system("pause");
return 0;
break;