系统需求
通讯录是一个可以记录亲人、好友信息的工具
语言:C++
出自:bilibili-黑马程序员
系统中需要实现的功能如下:
- 添加联系人:向通讯录中添加新人,信息包括(姓名,性别,年龄,联系电话,家庭住址)最多记录1000人
- 显示联系人:显示通讯录中所有联系人信息
- 删除联系人:按照姓名进行删除指定联系人
- 查找联系人:按照姓名查找指定联系人信息
- 修改联系人:按照姓名重新修改指定联系人
- 清空联系人:清空通讯录中所有信息
- 退出通讯录:退出当前使用的通讯录
菜单功能
功能描述:用户用来选择功能的界面
效果:
代码
void menu()
{
std::cout << "********************************" << std::endl;
std::cout << "**********1.添加联系人**********" << std::endl;
std::cout << "**********2.显示联系人**********" << std::endl;
std::cout << "**********3.删除联系人**********" << std::endl;
std::cout << "**********4.查找联系人**********" << std::endl;
std::cout << "**********5.修改联系人**********" << std::endl;
std::cout << "**********6.清空联系人**********" << std::endl;
std::cout << "**********0.退出通讯录**********" << std::endl;
std::cout << "********************************" << std::endl;
}
定义结构体
struct Person //联系人结构体
{
std::string p_name; //姓名
std::string p_sex; //性别
int p_age; //年龄
std::string p_number; //电话
std::string p_address; //地址
};
struct Books //通讯录结构体
{
Person human[MAX]; //联系人数组
int size; //联系人个数
};
添加联系人
功能描述:实现添加联系人的功能,最多可存储1000人
效果:
代码
void AddPerson(Books* p)
{
if (p->size == MAX)
{
std::cout << "通讯录已满,无法向里面添加联系人。" << std::endl;
}
else
{
std::string name;
std::cout << "请输入姓名:";
std::cin >> name;
p->human[p->size].p_name = name;
std::string sex;
while (true)
{
std::cout << "请输入性别(男/女):";
std::cin >> sex;
if (sex == "男" || sex == "女")
{
p->human[p->size].p_sex = sex;
break;
}
else
{
std::cout << "请重新输入" << std::endl;
}
}
int age;
std::cout << "请输入年龄:";
std::cin >> age;
p->human[p->size].p_age = age;
std::string number;
std::cout << "请输入电话号:";
std::cin >> number;
p->human[p->size].p_number = number;
std::string address;
std::cout << "请输入住址:";
std::cin >> address;
p->human[p->size].p_address = address;
p->size++;
system("pause");
}
}
显示联系人
功能描述:显示通讯录中已有的联系人信息
结果:
代码:
void ShowPerson(Books* p)
{
if (p->size == 0)
{
std::cout << "通讯录为空,无法显示" << std::endl;
}
else
{
for (int i = 0; i < p->size; i++)
{
std::cout << "姓名:" << p->human[i].p_name << "\t";
std::cout << "性别:" << p->human[i].p_sex << "\t";
std::cout << "年龄:" << p->human[i].p_age << "\t";
std::cout << "电话:" << p->human[i].p_number << "\t";
std::cout << "住址:" << p->human[i].p_address << "\t" << std::endl;
}
std::cout << std::endl;
}
system("pause");
}
删除联系人
功能描述:按照姓名删除指定联系人
结果:
代码
int IsExist(Books* p, std::string name)
{
for (int i = 0; i < p->size; i++)
{
if (p->human[i].p_name == name)
{
return i;
}
}
return -1;
}
void DeletPerson(Books* p)
{
std::string name;
std::cout << "请输入要删除的姓名:";
std::cin >> name;
int ret = IsExist(p, name);
if (ret == -1)
{
std::cout << "没有这个人" << std::endl;
}
else
{
for (int i = ret; i < p->size; i++)
{
p->human[i] = p->human[i + 1];
}
p->size--;
std::cout << "成功删除" << std::endl;
system("pause");
}
}
查找联系人
功能描述:按照姓名查找指定联系人的信息
结果:
代码
void FindPerson(Books* p)
{
std::string name;
std::cout << "请输入要查找的姓名:";
std::cin >> name;
int ret = IsExist(p, name);
if (ret == -1)
{
std::cout << "没有这个人" << std::endl;
}
else
{
std::cout << "姓名:" << p->human[ret].p_name << "\t";
std::cout << "性别:" << p->human[ret].p_sex << "\t";
std::cout << "年龄:" << p->human[ret].p_age << "\t";
std::cout << "电话:" << p->human[ret].p_number << "\t";
std::cout << "住址:" << p->human[ret].p_address << "\t" << std::endl;
system("pause");
}
}
修改联系人
功能描述:按照姓名修改指定联系人
结果:
代码
void ModifyPerson(Books* p)
{
std::string name1;
std::cout << "请输入要修改的姓名:";
std::cin >> name1;
int ret = IsExist(p, name1);
if (ret == -1)
{
std::cout << "没有这个人" << std::endl;
}
else
{
std::string name;
std::cout << "请输入姓名:";
std::cin >> name;
p->human[ret].p_name = name;
std::string sex;
while (true)
{
std::cout << "请输入性别(男/女):";
std::cin >> sex;
if (sex == "男" || sex == "女")
{
p->human[ret].p_sex = sex;
break;
}
else
{
std::cout << "请重新输入" << std::endl;
}
}
int age;
std::cout << "请输入年龄:";
std::cin >> age;
p->human[ret].p_age = age;
std::string number;
std::cout << "请输入电话号:";
std::cin >> number;
p->human[ret].p_number = number;
std::string address;
std::cout << "请输入住址:";
std::cin >> address;
p->human[ret].p_address = address;
std::cout << "修改成功" << std::endl;
system("pause");
}
}
清空联系人
功能描述:清空通讯录里所有的联系人,逻辑清空
结果:
代码
void CleanPerson(Books* p)
{
p->size = 0;
std::cout << "已经清空通讯录" << std::endl;
system("pause");
}
主函数
int main()
{
int select = 0; //接受用户的选择
Books personbooks;
personbooks.size = 0;
while (1)
{
menu(); //调用菜单函数
std::cout << "请选择:";
std::cin >> select;
switch (select)
{
case 1: //添加联系人
AddPerson(&personbooks);
break;
case 2: //显示联系人
ShowPerson(&personbooks);
break;
case 3: //删除联系人
DeletPerson(&personbooks);
break;
case 4: //查找联系人
FindPerson(&personbooks);
break;
case 5: //修改联系人
ModifyPerson(&personbooks);
break;
case 6: //清空联系人
CleanPerson(&personbooks);
break;
case 0: //退出通讯录
std::cout << "欢迎您再来。" << std::endl;
system("pause");
return 0;
break;
default: //用户输入有误
std::cout << "亲,您输入的选项我们没有呢。" << std::endl;
system("pause");
}
system("cls"); //清屏
}
system("pause");
return 0;
}