前言
功能:
1.添加联系人:新建联系人信息(包括姓名,性别,电话,年龄,家庭住址)最多记录一千人
2.显示联系人:显示通讯录中所有联系人的信息
3.删除联系人:按照姓名直接指定删除联系人
4.查找联系人:按照姓名直接查找联系人信息
5.修改联系人:按照姓名重新修改指定联系人信息
6.清空联系人:格式化通信录
7.退出通讯录:退出当前通讯录
制作
1.菜单函数
代码如下(示例):
void show()
{ //菜单页面
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;
}
2.框架搭建
用 switch分支结构完成框架搭建。
用户选择0 是不会退出程序也不会有其他操作。
代码如下(示例):
int main()
{
show();
int select = 0;
while(1){
cin>>select;
switch(select)
{
case 1: //1.添加联系人
break;
case 2: //2.显示联系人
break;
case 3: //3.删除联系人
break;
case 4: //4.查找联系人
break;
case 5: //5.修改联系人
break;
case 6: //6.清空联系人
break;
case 0: //0.退出通讯录
cout<<"***** 欢迎下次使用 *****"<<endl;
break;
}
}
system("pause");//防止闪退
return 0;
}
3.添加联系人
上限为1000,包含姓名,性别,电话,年龄,家庭住址信息;
实现步骤:
1.设计联系人结构体
2.设计通讯录结构体
3.main函数中创建通讯录
4.封装添加联系人
5.测试添加联系人功能
代码如下(示例):
//创建联系人结构体
struct person
{
string name;//名字
int sex; //性别
int age; //年龄
string phone;//电话
string add;//地址
};
//通讯录结构体
struct addressbook
{
struct person arr[max];
int size;
};
main函数创建通讯录
int main()
{
//创建通讯录变量
addressbook abs;
//初始化通讯录人数
abs.size =0;
show();
int select = 0;
while(1){
cin>>select;
switch(select)
{
case 1: //1.添加联系人
addpeson(&abs);
break;
case 2: //2.显示联系人
break;
case 3: //3.删除联系人
break;
case 4: //4.查找联系人
break;
case 5: //5.修改联系人
break;
case 6: //6.清空联系人
break;
case 0: //0.退出通讯录
cout<<"***** 欢迎下次使用 *****"<<endl;
break;
}
}
system("pause");//防止闪退
return 0;
}
封装添加联系人函数
//添加联系人的函数
void addpeson(addressbook * abs)
{
//判断通讯录是否满了,满了不加
if(abs->size == 1000){
cout<<"通讯录已满,无法添加加"<<endl;
return;
}
//未满则添加新人
else{
//添加人的姓名
string name;
cout<<"请输入姓名"<<endl;
cin>>name;
abs->arr[abs->size].name =name;
//性别
string sex;
cout<<"请输入性别"<<endl;
cin>>sex;
abs->arr[abs->size].sex =sex;
int age;
cout<<"请输入年龄"<<endl;
cin>>age;
abs->arr[abs->size].age =age;
string phone;
cout<<"请输入电话"<<endl;
cin>>phone;
abs->arr[abs->size].phone =phone;
string address;
cout<<"请输入住址"<<endl;
cin>>address;
abs->arr[abs->size].address =address;
//更新通讯录人数
abs->size++;
cout<<"添加成功"<<endl;
system("pause");
system("cls");//清屏操作
}
}
测试添加联系人
在这里插入图片描述
3.显示联系人
代码如下
void showperson(addressbook * abs)
{
//判断当前通讯录是不是空的
if(abs->size == 0){
cout<<"通讯录为空,请添加加"<<endl;
return;
}
else{
for(int i=0;i<abs->size;i++)
cout<<"姓名:"<<abs->arr[i].name<<" 性别:"<<abs->arr[i].sex<<" 年龄:"<<abs->arr[i].age<<" 电话:"<<abs->arr[i].phone<<" 住址:"<<abs->arr[i].address<<endl;
}
}
4.删除联系人
找到要删除的联系人在数组的坐标,让后面的信息把他覆盖达到删除的目的
代码如下
void deleteperson(addressbook * abs)
{
cout<<"请输入要删除的联系人"<<endl;
int j;
string name;
cin>>name;
j=isexist(abs,name);
if(j==-1)
{
cout<<"查无此人"<<endl;
}
else//查到了,数据迁移进行覆盖,实现删除操作
{
for (int i = j; i < abs->size; i++)
{
abs->arr[i] = abs->arr[i + 1];
}
abs->size--;
}
}
5.查找联系人
代码如下
//查找联系人
int isexist(addressbook * abs)
{
string name;
cin>>name;
for(int i=0;i<abs->size;i++)
{
if(abs->arr[i].name==name){
//找到用户了
return i;//返回在数组中的坐标
}
}
return -1;
}
6.修改联系人
找到要修改的联系人在数组的坐标,把信息在输入一遍达到修改的目的
//修改联系人
void modifyperson(addressbook * abs)
{
cout<<"请输入要修改的联系人"<<endl;
int j;
j=isexist(abs);
if(j==-1)
{
cout<<"查无此人"<<endl;
}
else//查到了,进行修改
{
string name;
cout<<"请输入姓名"<<endl;
cin>>name;
abs->arr[j].name =name;
//性别
string sex;
cout<<"请输入性别"<<endl;
cin>>sex;
abs->arr[j].sex =sex;
int age;
cout<<"请输入年龄"<<endl;
cin>>age;
abs->arr[j].age =age;
string phone;
cout<<"请输入电话"<<endl;
cin>>phone;
abs->arr[j].phone =phone;
string address;
cout<<"请输入住址"<<endl;
cin>>address;
abs->arr[j].address =address;
cout<<"已修改"<<endl;
}
}
6.清空通讯录
void clean(addressbook * abs)
{
abs->size=0;
}
总结
完整代码:
#include<bits/stdc++.h>
#define max 1000
using namespace std;
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;
}
//创建联系人结构体
struct person
{
string name;//名字
string sex; //性别
int age; //年龄
string phone;//电话
string address;//地址
};
//通讯录结构体
struct addressbook
{
struct person arr[max];
int size;
};
//添加联系人的函数
void addpeson(addressbook * abs)
{
//判断通讯录是否满了,满了不加
if(abs->size == 1000){
cout<<"通讯录已满,无法添加加"<<endl;
return;
}
//未满则添加新人
else{
//添加人的姓名
string name;
cout<<"请输入姓名"<<endl;
cin>>name;
abs->arr[abs->size].name =name;
//性别
string sex;
cout<<"请输入性别"<<endl;
cin>>sex;
abs->arr[abs->size].sex =sex;
int age;
cout<<"请输入年龄"<<endl;
cin>>age;
abs->arr[abs->size].age =age;
string phone;
cout<<"请输入电话"<<endl;
cin>>phone;
abs->arr[abs->size].phone =phone;
string address;
cout<<"请输入住址"<<endl;
cin>>address;
abs->arr[abs->size].address =address;
//更新通讯录人数
abs->size++;
cout<<"添加成功"<<endl;
system("pause");
}
}
//显示联系人
void showperson(addressbook * abs)//把地址给了指针,就能用->了
{
//判断当前通讯录是不是空的
if(abs->size == 0){
cout<<"通讯录为空,请添加加"<<endl;
return;
}
else{
for(int i=0;i<abs->size;i++)
cout<<"姓名:"<<abs->arr[i].name<<" 性别:"<<abs->arr[i].sex<<" 年龄:"<<abs->arr[i].age<<" 电话:"<<abs->arr[i].phone<<" 住址:"<<abs->arr[i].address<<endl;
}
}
//查找联系人
int isexist(addressbook * abs)
{
string name;
cin>>name;
for(int i=0;i<abs->size;i++)
{
if(abs->arr[i].name==name){
//找到用户了
return i;//返回在数组中的坐标
}
}
return -1;
}
//删除指定联系人
void deleteperson(addressbook * abs)
{
cout<<"请输入要删除的联系人"<<endl;
int j;
j=isexist(abs);
if(j==-1)
{
cout<<"查无此人"<<endl;
}
else//查到了,数据迁移进行覆盖,实现删除操作
{
for (int i = j; i < abs->size; i++)
{
abs->arr[i] = abs->arr[i + 1];
}
abs->size--;
cout<<"已删除"<<endl;
}
}
//修改联系人
void modifyperson(addressbook * abs)
{
cout<<"请输入要修改的联系人"<<endl;
int j;
j=isexist(abs);
if(j==-1)
{
cout<<"查无此人"<<endl;
}
else//查到了,进行修改
{
string name;
cout<<"请输入姓名"<<endl;
cin>>name;
abs->arr[j].name =name;
//性别
string sex;
cout<<"请输入性别"<<endl;
cin>>sex;
abs->arr[j].sex =sex;
int age;
cout<<"请输入年龄"<<endl;
cin>>age;
abs->arr[j].age =age;
string phone;
cout<<"请输入电话"<<endl;
cin>>phone;
abs->arr[j].phone =phone;
string address;
cout<<"请输入住址"<<endl;
cin>>address;
abs->arr[j].address =address;
cout<<"已修改"<<endl;
}
}
void clean(addressbook * abs)
{
abs->size=0;
}
int main()
{
showmenu();
//创建通讯录变量
addressbook abs;//abs是对象,不是指针哦
//初始化通讯录人数
abs.size =0;
int select = 0;
while(1){
cout<<"请输入你的选项"<<endl;
cin>>select;
cin.clear();
cin.ignore();
switch(select)
{
case 1: //1.添加联系人
{addpeson(&abs);
break;
}
case 2: //2.显示联系人
{showperson(&abs);
break;
}
case 3: //3.删除联系人
{deleteperson(&abs);
break;
}
case 4: //4.查找联系人
{
cout<<"请输入需要查找的联系人"<<endl;
int i;
i=isexist(&abs);
if(i==-1){
cout<<"查无此人"<<endl;
}
else{
cout<<"姓名:"<<abs.arr[i].name<<" 性别:"<<abs.arr[i].sex<<" 年龄:"<<abs.arr[i].age<<" 电话:"<<abs.arr[i].phone<<" 住址:"<<abs.arr[i].address<<endl;//不是指针不能用->
}
break;
}
case 5: //5.修改联系人
{
modifyperson(&abs);
break;
}
case 6: //6.清空联系人
{
clean(&abs);
break;
}
case 0: //0.退出通讯录
{cout<<"***** 欢迎下次使用 *****"<<endl;
break;
}
}
}
system("pause");//防止闪退
return 0;
}