C++通讯录管理系统(结构体指针)
该程序可实现简单的通讯录管理逻辑~~~
#include<iostream>
#include<cstring>
using namespace std;
const int MAX = 1000; //通讯录最多存储1000人的信息
int n,num;
struct Persons
{
string name;
int sex;
int old;
string phoneNum;
string address;
};
struct Addressbooks
{
struct Persons personArray[MAX];
int num = 0;
};
void Init() //界面初始化
{
printf("----------------------------------------------------------\n");
printf("-----------------------通讯录管理系统---------------------\n");
printf("-----------------------1.添加联系人-----------------------\n");
printf("-----------------------2.显示联系人-----------------------\n");
printf("-----------------------3.删除联系人-----------------------\n");
printf("-----------------------4.查找联系人-----------------------\n");
printf("-----------------------5.修改联系人-----------------------\n");
printf("-----------------------6.清空联系人-----------------------\n");
printf("-----------------------0.退出通讯录-----------------------\n");
printf("----------------------------------------------------------\n");
}
void system_exit() // 用户输入0时
{
printf("欢迎下次使用!\n");
return ;
}
void add_person(Addressbooks * abs)
{
if(abs->num == MAX)
{
cout<<"通讯录已满,无法添加";
return;
}
else
{
string name;
cout<<"请输入姓名 : "<<endl;
cin>>name;
abs->personArray[abs->num].name = name;
int sex = 0;
cout<<"请输入性别 : "<<endl;
cout<<"1-----男"<<endl;
cout<<"2-----女"<<endl;
while(1)
{
cin>>sex;
if(sex == 1 || sex == 2)
{
abs->personArray[abs->num].sex = sex;
break;
}
cout<<"输入格式有误,请重新输入!"<<endl;
}
int old = 0;
cout<<"请输入年龄 : "<<endl;
while(1)
{
cin>>old;
if(old >= 0 && old <= 120)
{
abs->personArray[abs->num].old = old;
break;
}
cout<<"输入格式有误,请重新输入!"<<endl;
}
string phoneNum;
cout<<"请输入当前联系人电话 : "<<endl;
while(1)
{
cin>>phoneNum;
if(phoneNum.size() == 11)
{
abs->personArray[abs->num].phoneNum = phoneNum;
break;
}
cout<<"输入格式有误,请重新输入!"<<endl;
}
string address;
cout<<"请输入地址 : "<<endl;
cin>>address;
abs->personArray[abs->num].address = address;
abs->num++;
cout<<"添加成功!"<<endl;
system("pause");
//system("cls");
}
}
void show_person(Addressbooks * abs)
{
if(abs->num == 0)
{
cout<<"暂时没有联系人,快来添加吧!"<<endl;
system("pause");
system("cls");
}
else
{
for(int i = 0;i < abs->num;i++)
{
cout<<"姓名 : "<<abs->personArray[i].name<<"\t";
cout<<"性别 : "<<(abs->personArray[i].sex == 1? "男":"女")<<"\t";
cout<<"年龄 : "<<abs->personArray[i].old<<"\t";
cout<<"电话号码 : "<<abs->personArray[i].phoneNum<<"\t";
cout<<"家庭地址 : "<<abs->personArray[i].address<<endl;
}
system("pause");
system("cls");
}
}
int is_exist(Addressbooks * abs,string people)
{
for(int i = 0;i < abs->num;i++)
{
if(abs->personArray[i].name == people)
{
return i;
}
}
return -1;
}
void delete_person(Addressbooks * abs,int name)
{
for(int i = name;i < abs->num - 1;i++)
{
abs->personArray[i] = abs->personArray[i + 1];
}
abs->num--;
}
void find_person(Addressbooks * abs,int i)
{
cout<<"姓名 : "<<abs->personArray[i].name<<"\t";
cout<<"性别 : "<<(abs->personArray[i].sex == 1? "男":"女")<<"\t";
cout<<"年龄 : "<<abs->personArray[i].old<<"\t";
cout<<"电话号码 : "<<abs->personArray[i].phoneNum<<"\t";
cout<<"家庭地址 : "<<abs->personArray[i].address<<endl;
}
void modify_person(Addressbooks * abs,int i)
{
string name;
cout<<"请输入姓名 : "<<endl;
cin>>name;
abs->personArray[i].name = name;
int sex = 0;
cout<<"请输入性别 : "<<endl;
cout<<"1-----男"<<endl;
cout<<"2-----女"<<endl;
while(1)
{
cin>>sex;
if(sex == 1 || sex == 2)
{
abs->personArray[i].sex = sex;
break;
}
cout<<"输入格式有误,请重新输入!"<<endl;
}
int old = 0;
cout<<"请输入年龄 : "<<endl;
while(1)
{
cin>>old;
if(old >= 0 && old <= 120)
{
abs->personArray[i].old = old;
break;
}
cout<<"输入格式有误,请重新输入!"<<endl;
}
string phoneNum;
cout<<"请输入当前联系人电话 : "<<endl;
while(1)
{
cin>>phoneNum;
if(phoneNum.size() == 11)
{
abs->personArray[i].phoneNum = phoneNum;
break;
}
cout<<"输入格式有误,请重新输入!"<<endl;
}
string address;
cout<<"请输入地址 : "<<endl;
cin>>address;
abs->personArray[i].address = address;
cout<<"修改成功!"<<endl;
//system("pause");
//system("cls");
}
void clear_address(Addressbooks * abs)
{
abs->num = 0;
cout<<"通讯录已清空!"<<endl;
system("pause");
system("cls");
}
int main()
{
Addressbooks abs;
abs.num = 0;
while(1)
{
system("cls");
Init();
cin>>n;
switch(n)
{
case 0:
system_exit();
system("pause");
return 0;
break;
case 1:
add_person(&abs);
break;
case 2:
show_person(&abs);
break;
case 3:
{
cout<<"请选择你要删除的对象 : "<<endl;
string people;
cin>>people;
if(is_exist(&abs,people) != -1)
{
cout<<"删除成功!"<<endl;
int name = is_exist(&abs,people);
delete_person(&abs,name);
system("pause");
system("cls");
}
else
{
cout<<"查无此人"<<endl;
system("pause");
system("cls");
}
}
break;
case 4:
{
cout<<"请选择你要查询的对象 : "<<endl;
string people;
cin>>people;
if(is_exist(&abs,people) != -1)
{
cout<<"查询成功!"<<endl;
int name = is_exist(&abs,people);
find_person(&abs,name);
system("pause");
system("cls");
}
else
{
cout<<"查无此人"<<endl;
system("pause");
system("cls");
}
}
break;
case 5:
{
cout<<"请选择要修改人员的姓名 : "<<endl;
string people;
cin>>people;
if(is_exist(&abs,people) != -1)
{
cout<<"该人员信息如下,请输入要修改的信息 : "<<endl;
int name = is_exist(&abs,people);
find_person(&abs,name);
modify_person(&abs,name);
system("pause");
system("cls");
}
else
{
cout<<"查无此人"<<endl;
system("pause");
system("cls");
}
}
break;
case 6:
clear_address(&abs);
break;
default:
break;
}
}
}