通讯录管理系统c++学习过程中的一次“晋级赛”,通讯录很大的考验了学生对于c++语法的理解和认识,在指针,实参形参,值传递地址传递和结构体方面的要求较高,对于初学者来说通讯录管理系统是个考验基础能力较好的小程序。
通讯录包括7个功能分别是
菜单功能*
添加联系人*
显示联系人*
删除联系人*
查找联系人*
修改联系人*
清空联系人*
退出通讯录*
//
// main.cpp
// 通讯录
//
// Created by 龚玉尚 on 2021/3/24.
//
#include <iostream>
using namespace std;
#include<string>
#define max 1000
struct Person
{
//姓名
string name;
//性别 1、男 2、女
int sex;
//年龄
int age;
//电话
string phone;
//住址
string address;
};
struct Addressbooks
{
//容量
struct Person personArray[max];
//现在的个数
int count;
};
//显示界面
void showMenu()
{
cout<<"*********************"<<endl;
cout<<"*****1、添加联系人*****"<<endl;
cout<<"*****2、显示联系人*****"<<endl;
cout<<"*****3、删除联系人*****"<<endl;
cout<<"*****4、查找联系人*****"<<endl;
cout<<"*****5、修改联系人*****"<<endl;
cout<<"*****6、清空联系人*****"<<endl;
cout<<"*****7、推出通讯录*****"<<endl;
cout<<"*********************"<<endl;
}
//1、添加联系人
void addperson(Addressbooks * abs)
{
//判断通讯录是否已满,如果满了就不再添加
if(abs->count==max)
{
cout<<"通讯录已满无法添加"<<endl;
return;
}
else
{
//添加具体联系人
//姓名
string name;
cout<<"请输入姓名"<<endl;
cin >> name;
abs->personArray[abs->count].name=name;
//性别
int sex;
cout<<"请输入性别"<<endl;
cout<<"1--男"<<endl;
cout<<"2--女"<<endl;
error_sex:
cin>>sex;
//判断是否正确输入
if(sex==1||sex==2)
{
abs->personArray[abs->count].sex=sex;
}
else
{
cout<<"输入错误,请重新输入"<<endl;
//输入错误,跳转输入语句
goto error_sex;
}
//年龄
int age;
cout<<"请输入年龄"<<endl;
error_age:
cin>>age;
if(age>=0&&age<200)
{
abs->personArray[abs->count].age=age;
}
else
{
cout<<"别开玩笑,正经点,重新输入吧"<<endl;
goto error_age;
}
//电话
string phone;
cout<<"请输入电话号码"<<endl;
cin>>phone;
abs->personArray[abs->count].phone=phone;
//住址
string address;
cout<<"请输入住址"<<endl;
cin>>address;
abs->personArray[abs->count].address=address;
cout<<"存入联系人成功"<<endl;
abs->count++;
}
}
//2、显示联系人
void showPerson(Addressbooks * abs)
{ //判断通讯录是否是空的
if(abs->count==0)
{
cout<<"空空如也"<<endl;
}
else
{ //循环打印每个人的信息
for(int i=0;i<abs->count;i++)
{
cout<<"姓名:"<<abs->personArray[i].name<<" ";
cout<<"姓别:"<<abs->personArray[i].sex<<" ";
cout<<"年龄:"<<abs->personArray[i].age<<" ";
cout<<"电话:"<<abs->personArray[i].phone<<" ";
cout<<"地址:"<<abs->personArray[i].address<<" ";
cout<<endl;
}
}
}
//3、删除联系人
void deletPerson(Addressbooks * abs)
{ int a=0,i;
string name;
cout<<"请输入要删除的联系人"<<endl;
cin>>name;
//遍历结构体查找
for(i=0;i<abs->count;i++)
{
if(name==abs->personArray[i].name)
{
a++;
for(int j=i;j<abs->count;j++)
{
abs->personArray[j]=abs->personArray[j+1];
}
abs->count--;
cout<<"联系人已删除"<<endl;
}
}
//没找到
if(a==0)
cout<<"查无此人"<<endl;
}
//4、查找联系人
void find(Addressbooks * abs)
{ int a=0;
string name;
cout<<"请输入想查找的联系人"<<endl;
cin>>name;
//遍历结构体查找
for(int i=0;i<abs->count;i++)
{
if(name==abs->personArray[i].name)
{
cout<<"姓名:"<<abs->personArray[i].name<<" ";
cout<<"姓别:"<<abs->personArray[i].sex<<" ";
cout<<"年龄:"<<abs->personArray[i].age<<" ";
cout<<"电话:"<<abs->personArray[i].phone<<" ";
cout<<"地址:"<<abs->personArray[i].address<<" ";
cout<<endl;
a++;
}
}
if(!a)
{
cout<<"查不到此联系人"<<endl;
}
}
//5、修改联系人
int decide(Addressbooks * abs)
{ string name;
cout<<"请选择要修改的联系人"<<endl;
cin>>name;
//遍历结构体
for(int i=0;i<=abs->count;i++)
{
if(abs->personArray[i].name==name)
{ //查到此人函数返回序号值
return i+1;
}
}
//没查到退出函数
return 0;
}
void changePerson(Addressbooks * abs)
{
int res=0,select=0,sex,age;
string name,phone,address;
res=decide(abs);
//判断是否查到要删除的联系人
if(res)
{
res-=1;
while(1)
{ cout<<"请选择你要修改的项目"<<endl;
cout<<"1--姓名"<<" "<<"2--性别"<<" "<<"3--年龄"<<" "<<"4--电话"<<" "<<"5--住址"<<" "<<"6--退出修改"<<endl;
cin>>select;
//选择想要修改的项目
switch(select)
{
case 1:
{
cin>>name;
abs->personArray[res].name=name;
cout<<"修改成功"<<endl;
}
break;
case 2:
{
cin>>sex;
abs->personArray[res].sex=sex;
cout<<"修改成功"<<endl;
}
break;
case 3:
{
cin>>age;
abs->personArray[res].age=age;
cout<<"修改成功"<<endl;
}
break;
case 4:
{
cin>>phone;
abs->personArray[res].phone=phone;
cout<<"修改成功"<<endl;
}
break;
case 5:
{
cin>>address;
abs->personArray[res].address=address;
cout<<"修改成功"<<endl;
}
break;
case 6:
return;
break;
default:
cout<<"输入错误,请重新输入"<<endl;
break;
}
}
}
else
cout<<"查无此人"<<endl;
}
//6、清空联系人
void cleanPerson(Addressbooks * abs)
{ int m=0;
cout<<"是否清空通讯录"<<endl;
cout<<"1--是 0--否"<<endl;
cin>>m;
//一次判断
if(m)
{
cout<<"再次确定是否清空通讯录"<<endl;
cout<<"1--是 0--否"<<endl;
cin>>m;
//再次确认
if(m)
{
abs->count=0;
cout<<"通讯录已清除"<<endl;
}
else
return;
}
else
return;
}
//7、退出通讯录
int main(int argc, const char * argv[]) {
//创建通讯录的结构体变量
Addressbooks abs;
abs.count=0;
int select;
showMenu();
while(1)
{
cin>>select;
switch(select)
{
case 1://添加联系人
addperson(&abs);
system("pause");
break;
case 2://显示联系人
showPerson(&abs);
break;
case 3://删除联系人
deletPerson(&abs);
break;
case 4://查找联系人
find(&abs);
break;
case 5://修改联系人
changePerson(&abs);
break;
case 6://清空联系人
cleanPerson(&abs);
break;
case 7://推出通讯录
cout<<"欢迎下次使用"<<endl;
return 0;
break;
default://重新输入
cout<<"输入错误,请重新输入"<<endl;
break;
}
}
return 0;
}