本期我们利用C++实现简易通讯录
一、基本功能
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
0、退出通讯录
二、成品展示
以上为通讯录各功能的详细展示,时长90s,想看的猿友可以看完。
话不多说,直接上代码。
三、注意事项:该代码能在vs2017完美运行
注意:为了代码的可观与其维护性,我们将代码分成三块书写
1、test.cpp用于测试函数功能
2、contact.h用于声明函数和结构体
3、contact.cpp用于函数实现
tip:大家一定要添加两个源文件以及一个头文件哦
如图:
四、上源码
1、contact.h
#pragma once
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000 //用宏定义定义最大容量,利于后期的维护,可一改全改
//创建联系人结构体
struct Contacts
{
string name;
int sex;//1男2女
int age;
string phone;
string address;
};
//创建通讯录结构体
struct AddressBook
{
struct Contacts People[MAX]; //最多存MAX人
int size; //记录当前人数
};
//1、添加联系人
void Addpeople(struct AddressBook* list);
//2、显示联系人
void Showpeople(struct AddressBook* list);
//找一个人是否在,在的话返回下标
int IsExit(struct AddressBook* list, string name);
//3、删除联系人
void Deletepeople(struct AddressBook* list);
//4、查找联系人
void Findpeople(struct AddressBook* list);
//5、修改联系人
void Modifypeople(struct AddressBook* list);
//6、清空联系人
void Emptypeople(struct AddressBook* list);
2、test.cpp
#include"contact.h"
//基本框架
//菜单框架
//test.cpp用于测试
//contact.h用于声明
//contact.cpp用于函数实现
//1、添加联系人
//2、显示联系人
//3、删除联系人
//4、查找联系人
//5、修改联系人
//6、清空联系人
//0、退出通讯录
//显示菜单
void menu()
{
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;
}
int main()
{
struct AddressBook list;//创建一个通讯录
list.size = 0; //初始化通讯录为0;
int select = 0;
do
{
menu();//显示菜单
cin >> select;
switch (select)
{
case 1://1、添加联系人
Addpeople(&list);
break;
case 2://2、显示联系人
Showpeople(&list);
break;
case 3://3、删除联系人
Deletepeople(&list);
break;
case 4://4、查找联系人
Findpeople(&list);
break;
case 5://5、修改联系人
Modifypeople(&list);
break;
case 6://6、清空联系人
Emptypeople(&list);
break;
case 0:
cout << "按任意键退出,欢迎下次使用" << endl;
break;
default:
cout << "输入错误,请重新输入" << endl;
break;
}
} while (select);
system("pause");
return 0;
}
3、contact.cpp
#include"contact.h"
//1、添加联系人
void Addpeople(struct AddressBook* list)
{
//先判断通讯录是否已满
if (list->size == MAX)
{
cout << "通讯录已满,无法添加" << endl;
return;
}
else
{
//添加联系人
string name;
int sex;//1男2女
int age;
string phone;
string address;
cout << "请输入姓名" << endl;
cin >> name;
list->People[list->size].name = name;
cout << "请输入性别" << endl;
cout << "1---男 2---女" << endl;
while (1)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
list->People[list->size].sex = sex;
break;
}
else
{
cout << "请按提示出入1或2" << endl;
}
}
cout << "请输入年龄" << endl;
cin >> age;
list->People[list->size].age = age;
cout << "请输入手机号" << endl;
cin >> phone;
list->People[list->size].phone = phone;
cout << "请输入地址" << endl;
cin >> address;
list->People[list->size].address = address;
}
list->size++;
cout << "添加成功" << endl;
system("pause");
system("cls");
}
//2、显示联系人
void Showpeople(struct AddressBook* list)
{
//先判断联系人是否为空
if (list->size == 0)
{
cout << "通讯录为空" << endl;
}
else
{
//显示联系人,遍历联系人数组即可
for (int i = 0; i < list->size; i++)
{
cout << "姓名:" << list->People[i].name <<" "
<< "性别:" << (list->People[i].sex==1?"男":"女") << " "
<< "年龄:" << list->People[i].age << " "
<< "电话:" << list->People[i].phone << " "
<< "地址:" << list->People[i].address << endl;
}
}
system("pause");
system("cls");
}
//找一个人是否在,在的话返回下标
int IsExit(struct AddressBook* list, string name)
{
for (int i = 0; i < list->size; i++)
{
if (list->People[i].name == name)
{
return i;
}
}
return -1;
}
//3、删除联系人
void Deletepeople(struct AddressBook* list)
{
string name;
cout << "请输入要删除联系人的姓名:" << endl;
cin >> name;
int pos = IsExit(list, name);
if (pos!=-1)
{
for (int i = pos; i < list->size - 1; i++)
{
list->People[i] = list->People[i + 1];
}
list->size--;
cout << "删除成功!" << endl;
}
else
{
cout << "搜索结果为空!" << endl;
}
system("pause");
system("cls");
}
//4、查找联系人
void Findpeople(struct AddressBook* list)
{
string name;
cout << "请输入要查找联系人的姓名:" << endl;
cin >> name;
int pos = IsExit(list, name);
if (pos != -1)
{
//找到此人,显示其信息
cout << "姓名:" << list->People[pos].name << " "
<< "性别:" << (list->People[pos].sex == 1 ? "男" : "女") << " "
<< "年龄:" << list->People[pos].age << " "
<< "电话:" << list->People[pos].phone << " "
<< "地址:" << list->People[pos].address << endl;
}
else
{
cout << "查找结果为空!" << endl;
}
system("pause");
system("cls");
}
//5、修改联系人
void Modifypeople(struct AddressBook* list)
{
string name1;
cout << "请输入要修改联系人的姓名:" << endl;
cin >> name1;
int pos = IsExit(list, name1);
if (pos != -1)
{
//找到此人,修改其信息
string name;
int sex;//1男2女
int age;
string phone;
string address;
cout << "请输入姓名" << endl;
cin >> name;
list->People[pos].name = name;
cout << "请输入性别" << endl;
cout << "1、男 2、女" << endl;
while (1)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
list->People[pos].sex = sex;
break;
}
else
{
cout << "请按提示出入1或2" << endl;
}
}
cout << "请输入年龄" << endl;
cin >> age;
list->People[pos].age = age;
cout << "请输入手机号" << endl;
cin >> phone;
list->People[pos].phone = phone;
cout << "请输入地址" << endl;
cin >> address;
list->People[pos].address = address;
cout << "修改成功!" << endl;
}
else
{
cout << "搜索结果为空!" << endl;
}
system("pause");
system("cls");
}
//6、清空联系人
void Emptypeople(struct AddressBook* list)
{
cout << "确认清空吗?" << endl;
int ret = 0;
cout << "1、确认清空 2、考虑考虑" << endl;
cin >> ret;
if (list->size == 0)
{
cout << "通讯录已空,无需清空!" << endl;
}
else
{
if (ret == 1)
{
list->size = 0;
cout << "通讯录已清空!" << endl;
}
}
system("pause");
system("cls");
}
本期通讯录代码分享就到这啦,欢迎各位看官留下你们宝贵的意见!
下期出QT实战项目——翻金币。