1.前言
这个管理系统只是为了新手在熟悉了一些c++基本操作后如:循环,结构体。可以完全着手做的一个小系统,用于巩固知识点。
2.需求分析
- [1] 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人。
- [2] 显示联系人:显示通讯录中所有联系人信息
- [3] 删除联系人:按照姓名进行删除指定联系人
- [4] 查找联系人:按照姓名查看指定联系人信息
- [5] 修改联系人:按照姓名重新修改指定联系人
- [6] 清空联系人:清空通讯录中所有信息
- [7] 退出通讯录:退出当前使用的通讯录
3.创建项目
3.1第一步:创建一个新项目
3.2第二步:空项目(真是手把手教了兄弟们~)
3.3第三步:设置通讯录名称为通讯录管理系统
3.4第四步:在源文件里创建一个.cpp文件,名称为通讯录管理系统
至此,项目创建完成。
4.菜单功能
功能描述:用户选择功能的界面。 如图:
using namespace std;
//1.显示菜单界面
void showMenu()
{
cout << " 帅 " << endl;
cout << " ** " << endl;
cout << " **** " << endl;
cout << " ****** " << endl;
cout << " ******** " << endl;
cout << " ********** " << endl;
cout << " ************ " << endl;
cout << " *1.添加联系人* " << endl;
cout << " **2.显示联系人** " << endl;
cout << " ***3.删除联系人*** " << endl;
cout << " ****4.查找联系人**** " << endl;
cout << " *****5.修改联系人***** " << endl;
cout << " ******6.清空通讯录****** " << endl;
cout << "*******7.退出通讯录******* " << endl;
}
int main()
{
showMenu();//菜单调用
system("pause");
return 0;
}
5.退出功能
功能描述:退出通讯录系统 思路:根据用户不同的选择,进入不同的功能,可以选择switch分支结构,将整个架构进行搭建,当用户选择0的时候,执行退出,选择其他先不做操作,也不退出程序。
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 7:
//7.退出通讯录
break;
}
使用这种结构来进行用户功能的选择。而对于退出功能,只需要break来进行退出即可。此时代码为:
using namespace std;
void showMenu();
int main()
{
showMenu();//调用菜单
int select ;
while (true)
{
cout << "请正确输入想选择服务的号码:" << endl;
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 7:
//7.退出通讯录
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
}
}
system("pause");
return 0;
}
void showMenu()//1.显示菜单界面
{
cout << " 帅 " << endl;
cout << " ** " << endl;
cout << " **** " << endl;
cout << " ****** " << endl;
cout << " ******** " << endl;
cout << " ********** " << endl;
cout << " ************ " << endl;
cout << " *1.添加联系人* " << endl;
cout << " **2.显示联系人** " << endl;
cout << " ***3.删除联系人*** " << endl;
cout << " ****4.查找联系人**** " << endl;
cout << " *****5.修改联系人***** " << endl;
cout << " ******6.清空通讯录****** " << endl;
cout << "*******7.退出通讯录******* " << endl;
}
6.添加联系人
功能描述:实现添加联系人功能,联系人上线为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址) 添加联系人步骤:
1.设计联系人结构体。
2.设计通讯录结构体。
3.main函数中创建通讯录。
4.封装添加联系人函数。
5.测试添加联系人功能。
6.1设计联系人结构体
联系人信息包括:姓名、性别、年龄、联系电话、家庭住址。
struct People//联系人结构体
{
string pname;//联系人姓名
string psex;//联系人性别,1为男,0为女
int page;//联系人年龄
int pnumber;//联系人电话号码
string paddress;//联系人住址
};
6.2设计通讯录结构体
struct peoplebook//通讯录结构体
{
struct People parray[max];//通讯录中保存的联系人的数组
int psize;//通讯录中的人员个数
};
6.3定义添加功能
void addPeople(peoplebook* abs)
{
//判断通讯录是否满了,满了就不再添加
if (abs->psize == max)
{
cout << "通讯录已满!!!,无法添加" << endl;
return;
}
else
{
//添加联系人
//姓名
string name;
cout << "请输入姓名: " << endl;
cin >> name;
abs->parray[abs->psize].pname = name;
//性别
int sex;
string male;
cout << "请输入联系人性别1为男,0为女: " << endl;
while (true)
{
cin >> sex;
if (sex == 0||sex==1)
{
if (sex == 0)
{
male = "女";
abs->parray[abs->psize].psex = male;
break;
}
else
{
male = "男";
abs->parray[abs->psize].psex = male;
break;
}
}
cout << "输入错误,请重新输入:" << endl;
}
//年龄
int age;
cout << "请输入联系人年龄: " << endl;
cin >> age;
abs->parray[abs->psize].page = age;
//电话
int number;
cout << "请输入联系人电话号码: " << endl;
cin >> number;
abs->parray[abs->psize].pnumber = number;
//住址
string address;
cout << "请输入联系人住址: " << endl;
cin >> address;
abs->parray[abs->psize].paddress = address;
abs->psize++;
cout << "添加成功!" << endl;
system("pause");
system("cls");//清屏操作
}
}
7.显示联系人
功能描述:显示通讯录中已有的联系人信息
显示联系人实现步骤:
1.封装显示联系人函数
2.测试显示联系人功能
7.1封装显示联系人函数
void showpeople(peoplebook *abs)//显示联系人
{
if (abs->psize == 0)//如果通讯录为0则输出空
{
cout << "通讯录空!" << endl;
}
else//不为空则全部输出
{
for (int i = 0; i < abs->psize; i++)
{
cout << "姓名:" << abs->parray[i].pname <<"\t"
<< "性别:" << abs->parray[i].psex << "\t"
<< "年龄:" << abs->parray[i].page << "\t"
<< "电话号码:" << abs->parray[i].pnumber << "\t"
<< "住址:" << abs->parray[i].paddress << endl;
}
system("pause");//按任意键继续
system("cls");//清屏
}
}
然后在switch中调用一下就可以了。
8.删除联系人
功能描述:按照姓名进行删除指定联系人
删除联系人实现步骤:
1.封装检测联系人是否存在
2.封装删除联系人函数
3.测试删除联系人功能
8.1封装检测联系人是否存在,并实现删除功能
设计思路: 删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在就删除,不存在就提示用户没有要删除的联系人。因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,并删除。
void deletepeople(peoplebook* abs)
{
cout << "请输入要删除联系人的姓名:" << endl;
string name;
cin >> name;
for (int i = 0; i <= abs->psize; i++)
{
if (abs->parray[i].pname == name)
{
cout << "在通讯录中,开始删除" << endl;
for (i; i < abs->psize; i++)//数据前移进行删除
{
abs->parray[i] = abs->parray[i + 1];
}
abs->psize--;//更新通讯录中人数
cout << "删除成功!!!" << endl;
break;
}
else
{
cout << "不在通讯录中" << endl;
break;
}
}
system("pause");//任意键继续
system("cls");//清屏
}
9.查找联系人
功能描述:按照姓名查看指定联系人信息 查找联系人实现步骤 1.封装查找联系人函数 2.测试查找指定联系人
9.1封装查找联系人函数
实现思路:判断用户指定的联系人是否存在,存在就输出信息,不存在就不存在。
{
cout << "请输入您要查找的联系人:" << endl;
string name;
cin >> name;
//判断是否存在通讯录中
for (int i = 0; i <= abs->psize; i++)
{
if (abs->parray[i].pname == name)
{
cout << "姓名:" << abs->parray[i].pname << "\t"
<< "性别:" << abs->parray[i].psex << "\t"
<< "年龄:" << abs->parray[i].page << "\t"
<< "电话号码:" << abs->parray[i].pnumber << "\t"
<< "住址:" << abs->parray[i].paddress << endl;
break;
}
else
{
cout << "不在通讯录中" << endl;
break;
}
}
system("pause");//任意键继续
system("cls");//清屏
}
10.修改联系人
功能描述:按照姓名重新修改指定联系人
修改联系人步骤:
1.封装修改联系人函数
2.测试修改联系人功能
10.1封装修改联系人函数
思路:查找用户输入的联系人,如果查找成功进行修改操作,查找失败提示就失败
void changepeople(peoplebook* abs)
{
cout << "请输入您要修改联系人的姓名:" << endl;
string name;
cin >> name;
for (int i = 0; i < abs->psize; i++)
{
if (abs->parray[i].pname == name)
{
cout << "请您对"<<name<<"进行修改!" << endl;
//修改姓名
cout << "姓名:" << endl;
cin >> name;
abs->parray[i].pname = name;
//修改性别
string sex;
cout << "性别:请输入男或者女" << endl;
cin >> sex;
abs->parray[i].psex = sex;
//修改年龄
int age;
cout << "年龄:" << endl;
cin >> age;
abs->parray[i].page = age;
//修改电话号码
long long number;
cout << "电话号码:" << endl;
cin >> number;
abs->parray[i].pnumber = number;
//修改住址
string address;
cout << "住址:" << endl;
cin >> address;
abs->parray[i].paddress = address;
cout << "修改完成!" << endl;
break;
}
else
{
cout << "查无此人!" << endl;
}
}
system("pause");
system("cls");
}
11.清空联系人
功能描述:清空通讯录中所有的信息
清空联系人实现步骤:
1.封装清空联系人函数
2.测试清空联系人
11.1封装清空联系人函数
实现思路:将通讯录所有联系人信息清除掉,只要将通讯录记录的联系人数量置为0,做逻辑清空即可。
void cleanpeople(peoplebook* abs)
{
abs->psize = 0;
cout << "通讯录已清空!" << endl;
system("pause");//按任意键继续
system("cls");//清屏
}
12.总结
完整代码:
#include<iostream>
using namespace std;
#define max 1000
void showMenu();//菜单界面
struct People//联系人结构体
{
string pname;//联系人姓名
string psex;//联系人性别,1为男,0为女
int page;//联系人年龄
long long pnumber;//联系人电话号码
string paddress;//联系人住址
};
struct peoplebook//通讯录结构体
{
struct People parray[max];//通讯录中保存的联系人的数组
int psize;//通讯录中的人员个数
};
//添加联系人
void addPeople(peoplebook* abs)
{
//判断通讯录是否满了,满了就不再添加
if (abs->psize == max)
{
cout << "通讯录已满!!!,无法添加" << endl;
return;
}
else
{
//添加联系人
//姓名
string name;
cout << "请输入姓名: " << endl;
cin >> name;
abs->parray[abs->psize].pname = name;
//性别
int sex;
string male;
cout << "请输入联系人性别1为男,0为女: " << endl;
while (true)
{
cin >> sex;
if (sex == 0||sex==1)
{
if (sex == 0)
{
male = "女";
abs->parray[abs->psize].psex = male;
break;
}
else
{
male = "男";
abs->parray[abs->psize].psex = male;
break;
}
}
cout << "输入错误,请重新输入:" << endl;
}
//年龄
int age;
cout << "请输入联系人年龄: " << endl;
cin >> age;
abs->parray[abs->psize].page = age;
//电话
long long number;
cout << "请输入联系人电话号码: " << endl;
cin >> number;
abs->parray[abs->psize].pnumber = number;
//住址
string address;
cout << "请输入联系人住址: " << endl;
cin >> address;
abs->parray[abs->psize].paddress = address;
abs->psize++;
cout << "添加成功!" << endl;
system("pause");
system("cls");//清屏操作
}
}
//显示联系人
void showpeople(peoplebook *abs)
{
if (abs->psize == 0)//如果通讯录为0则输出空
{
cout << "通讯录空!" << endl;
}
else//不为空则全部输出
{
for (int i = 0; i < abs->psize; i++)
{
cout << "姓名:" << abs->parray[i].pname <<"\t"
<< "性别:" << abs->parray[i].psex << "\t"
<< "年龄:" << abs->parray[i].page << "\t"
<< "电话号码:" << abs->parray[i].pnumber << "\t"
<< "住址:" << abs->parray[i].paddress << endl;
}
}
system("pause");//按任意键继续
system("cls");//清屏
}
//删除联系人
void deletepeople(peoplebook* abs)
{
cout << "请输入要删除联系人的姓名:" << endl;
string name;
cin >> name;
for (int i = 0; i <= abs->psize; i++)
{
if (abs->parray[i].pname == name)
{
cout << "在通讯录中,开始删除" << endl;
for (i; i < abs->psize; i++)//数据前移进行删除
{
abs->parray[i] = abs->parray[i + 1];
}
abs->psize--;//更新通讯录中人数
cout << "删除成功!!!" << endl;
break;
}
else
{
cout << "不在通讯录中" << endl;
break;
}
}
system("pause");//任意键继续
system("cls");//清屏
}
//查找联系人
void findpeople(peoplebook* abs)
{
cout << "请输入您要查找的联系人:" << endl;
string name;
cin >> name;
//判断是否存在通讯录中
for (int i = 0; i <= abs->psize; i++)
{
if (abs->parray[i].pname == name)
{
cout << "姓名:" << abs->parray[i].pname << "\t"
<< "性别:" << abs->parray[i].psex << "\t"
<< "年龄:" << abs->parray[i].page << "\t"
<< "电话号码:" << abs->parray[i].pnumber << "\t"
<< "住址:" << abs->parray[i].paddress << endl;
break;
}
else
{
cout << "不在通讯录中" << endl;
break;
}
}
system("pause");//任意键继续
system("cls");//清屏
}
//修改联系人
void changepeople(peoplebook* abs)
{
cout << "请输入您要修改联系人的姓名:" << endl;
string name;
cin >> name;
for (int i = 0; i < abs->psize; i++)
{
if (abs->parray[i].pname == name)
{
cout << "请您对"<<name<<"进行修改!" << endl;
//修改姓名
cout << "姓名:" << endl;
cin >> name;
abs->parray[i].pname = name;
//修改性别
string sex;
cout << "性别:请输入男或者女" << endl;
cin >> sex;
abs->parray[i].psex = sex;
//修改年龄
int age;
cout << "年龄:" << endl;
cin >> age;
abs->parray[i].page = age;
//修改电话号码
long long number;
cout << "电话号码:" << endl;
cin >> number;
abs->parray[i].pnumber = number;
//修改住址
string address;
cout << "住址:" << endl;
cin >> address;
abs->parray[i].paddress = address;
cout << "修改完成!" << endl;
break;
}
else
{
cout << "查无此人!" << endl;
}
}
system("pause");
system("cls");
}
//清空联系人
void cleanpeople(peoplebook* abs)
{
abs->psize = 0;
cout << "通讯录已清空!" << endl;
system("pause");//按任意键继续
system("cls");//清屏
}
int main()
{
peoplebook abs;//创建通讯录变量
abs.psize = 0;//初始化人数为0
cout << "请输入想选择服务的号码:" << endl;
while (true)
{
showMenu();
int select;
cin >> select;
switch (select)
{
case 1:
//1.添加联系人
addPeople(&abs);//利用地址传递来改变实参
break;
case 2:
showpeople(&abs);
//2.显示联系人
break;
case 3:
//3.删除联系人
deletepeople(&abs);
break;
case 4:
//4.查找联系人
findpeople(&abs);
break;
case 5:
//5.修改联系人
changepeople(&abs);
break;
case 6:
//6.清空通讯录
cleanpeople(&abs);
break;
case 7:
//7.退出通讯录
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}
void showMenu()//1.显示菜单界面
{
cout << " 帅 " << endl;
cout << " ** " << endl;
cout << " **** " << endl;
cout << " ****** " << endl;
cout << " ******** " << endl;
cout << " ********** " << endl;
cout << " ************ " << endl;
cout << " *1.添加联系人* " << endl;
cout << " **2.显示联系人** " << endl;
cout << " ***3.删除联系人*** " << endl;
cout << " ****4.查找联系人**** " << endl;
cout << " *****5.修改联系人***** " << endl;
cout << " ******6.清空通讯录****** " << endl;
cout << "*******7.退出通讯录******* " << endl;
}
其实这只是一个入门的小案例,后续会继续学习更多的案例给大家。