前言
最近在学习C++,跟着黑马程序员实现了一个通讯管理系统
一、功能
通过0~6个按键数字实现以下功能:
- 添加联系人
- 显示联系人
- 删除联系人
- 查找联系人
- 修改联系人
- 清空联系人
- 退出系统
二、实现步骤
- 设计联系人结构体(姓名,年龄,性别,联系电话,家庭住址);
- 设计通讯录结构体(联系人,联系人所在位置)
- 封装功能函数:
添加:需要判断通讯录列表是否已满;
显示: 需要判断查找的联系人的位置,以及是否在通讯录中;
删除:同样需要判断删除的联系人是否在通讯录中,和在通讯录中的位置,删除后,后面的通讯录信息需要前移;
查找:
修改:
清空:将通讯录长度设置为0;
**退出:**system(“pause”);
三、代码
/*
通讯管理系统
功能:
1、添加联系人;
2、显示联系人;
3、删除联系人;
4、查找联系人;
5、修改联系人;
6、清空联系人
7、退出;
*/
#include"iostream"
#include"string"
#define MaxSize 1000
#define true 1
using namespace std;
//define connect struct
struct Connect
{
string C_Name;
int C_sex;
int C_age;
string C_Phone;
string C_add;
};
struct ConnectPorson
{
struct Connect Arr[MaxSize];
int size=0;
};
//显示菜单
void ShowMuen();
void AddConnect(ConnectPorson *arr);
void ShowConnect(ConnectPorson* arr);
void DelConnect(ConnectPorson* arr);
void FindConnect(ConnectPorson* arr);
int isExist(ConnectPorson* arr, string name);
void ModifyConnect(ConnectPorson* arr);
void ClearConnect(ConnectPorson* arr);
int main(void)
{
ConnectPorson arr;
while (true)
{
ShowMuen();
int select;
cin >>select;
switch (select)
{
case 1:
AddConnect(&arr);
break;
//添加联系人
case 2:
ShowConnect(&arr);
显示联系人
break;
case 3:
DelConnect(&arr);//delect a connect
break;
case 4:
//search a connect
FindConnect(&arr);
break;
case 5:
ModifyConnect(&arr);
break;
//modify a connect
case 6:
//clear all connects
ClearConnect(&arr);
break;
case 0:
cout << "欢迎下次使用!";
system("pause");
return 0;
//exit
}
}
return 0;
}
void ShowMuen()
{
cout << "1、添加联系人" << endl;
cout << "2、显示联系人" << endl;
cout << "3、删除联系人" << endl;
cout << "4、查找联系人" << endl;
cout << "5、修改联系人" << endl;
cout << "6、清空联系人" << endl;
cout << "0、退出通讯录" << endl;
}
//添加联系人:姓名,性别,年龄,联系电话,家庭住址
void AddConnect(ConnectPorson* arr)
{
if (arr->size==MaxSize)
{
cout<< "通讯录已满,无法添加"<< endl;
return;
}
else
{
cout << "请输入姓名:";
cin >> arr->Arr[arr->size].C_Name;
cout << "请输入性别(1-男,2-女):";
while (true)
{
cin >> arr->Arr[arr->size].C_sex;
if (arr->Arr[arr->size].C_sex == 1 || arr->Arr[arr->size].C_sex == 2)
{
break;
}
cout << "输入无效请重新输入:"<<endl;
}
cout << "请输入年龄(0~180):";
while (true)
{
cin >> arr->Arr[arr->size].C_age;
if (arr->Arr[arr->size].C_age>0 && arr->Arr[arr->size].C_age < 150)
{
break;
}
cout << "输入无效请重新输入" << endl;
}
cout << "请输入电话:";
cin >> arr->Arr[arr->size].C_Phone;
cout << "请输入家庭住址:";
cin >> arr->Arr[arr->size].C_add;
arr->size++;
cout << "信息录入成功!\n";
}
}
void ShowConnect(ConnectPorson* arr)
{
if (arr->size == 0)
{
cout << "当前记录为空" << endl;
return;
}
else
{
for (int i=0;i<arr->size;i++)
{
cout << "姓名:";
cout<< arr->Arr[i].C_Name << endl;
cout << "性别:" << (arr->Arr[i].C_sex==1?"男":"女") << "\n";
cout << "年龄:" << arr->Arr[i].C_age << "\n";
cout << "联系电话:"<< arr->Arr[i].C_Phone <<"\n";
cout<<"家庭住址:"<< arr->Arr[i].C_add <<"\n";
}
}
}
//检测联系人是否存在,存在返回位置,不存在返回-1
int isExist(ConnectPorson* arr,string name)
{
for (int i = 0; i < arr->size; i++)
{
if (arr->Arr[arr->size].C_Name == name)
return i;
}
return -1;
}
//删除指定的联系人
void DelConnect(ConnectPorson* arr)
{
string name;
cout << "请输入需要删除联系人的名称:\n";
cin >> name;
int m = 0;
m=isExist(arr, name);
if (m == -1)
{
cout << "此人不在通讯录中,删除失败!" << endl;
system("pause");
system("clk");
}
else
{
for (int i = m; i < arr->size-1; i--)
{
arr->Arr[m] = arr->Arr[m + 1];
}
arr->size = arr->size - 1;
cout << "删除成功!" << endl;
system("pause");
system("clk");
}
}
void FindConnect(ConnectPorson* arr)
{
string FName;
cout << "请输入搜索联系人的姓名:";
cin >> FName;
int m = 0;
m = isExist(arr, FName);
if (m == -1)
{
cout << "此人不在通讯录中" << endl;
system("pause");
system("clk");
}
else
{
cout << "姓名:" << arr->Arr[ m].C_Name << "\t";
cout << "性别:" << (arr->Arr[m].C_sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << arr->Arr[m].C_age << "\t";
cout << "联系电话:" << arr->Arr[m].C_Phone << "\t";
cout << "家庭住址:" << arr->Arr[m].C_add << "\n";
}
}
//修改联系人信息
void ModifyConnect(ConnectPorson* arr)
{
string FName;
cout << "请输入联系人的姓名:";
cin >> FName;
int m = 0;
m = isExist(arr, FName);
if (m == -1)
{
cout << "此人不在通讯录中" << endl;
system("pause");
system("clk");
}
else
{
cout << "姓名:" ;
cin >> arr->Arr[m].C_Name;
cout << "性别:" << "\ n";
cin >> arr->Arr[m].C_sex;
cout << "年龄:" << "\n";
cin >> arr->Arr[m].C_age;
cout << "联系电话:" << "\n";
cin >> arr->Arr[m].C_Phone;
cout << "家庭住址:" << "\n";
cin >> arr->Arr[m].C_add;
system("pause");
system("clk");
}
}
//清除联系人
void ClearConnect(ConnectPorson* arr)
{
arr->size = 0;
cout << "清除成功!"<<"\n";
system("pause");
system("clk");
}
总结
这是一个简单的通讯管理系统,但是其实有很多地方都不太到位。
比如在实际通讯录中可以只设置联系人姓名,其它信息不必要补充,在这个通讯录中不行。