C++实现通讯录管理(内含模糊查找)

通讯录管理系统
学习目标:
对C++的基础进行复习,为后续深入学习打好基础

案例描述:
通讯录是一个可以记录亲人、好友信息的工具。

本教程主要利用C++来实现一个通讯录管理系统

系统中需要实现的功能如下:

添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
显示联系人:显示通讯录中所有联系人信息
删除联系人:按照姓名进行删除指定联系人
查找联系人:按照姓名查看指定联系人信息
修改联系人:按照姓名重新修改指定联系人
清空联系人:清空通讯录中所有信息
退出通讯录:退出当前使用的通讯录

#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>
using namespace std;
#define MAXPEOPLE 100
static int scount=0;
class telephone
{
public:
    char xuhao[20];char name[20];char xingb[20];char nianl[20];char dianhua[20];char zhuzhi[20];

    telephone()
    {};
void instial(char xh[20],char nm[20],char xb[2],char nl[20],char dh[20],char zz[20])
{
strcpy_s(xuhao,xh);strcpy_s(name,nm);
strcpy_s(xingb,xb);strcpy_s(nianl,nl);
strcpy_s(dianhua,dh);strcpy_s(zhuzhi,zz);

};
void setxuhao(char xh[20])
{strcpy_s(xuhao,xh);
}
void setname(char nm[20])
{
strcpy_s(name,nm);
}
void setxingb(char xb[20])
{
strcpy_s(xingb,xb);
}
void setnianl(char nl[20])
{
strcpy_s(nianl,nl);
}
void setdianhua(char dh[20])
{
strcpy_s(dianhua,dh);
}
void setzhuzhi(char zz[20])
{
strcpy_s(zhuzhi,zz);
}
char * getxuhao()
{return xuhao;};
char * getname()
{return name;};
char * getxingb()
{return xingb;};
char * getnianl()
{return nianl;};
char * getdianhua()
{return dianhua;};
char * getzhuzhi()
{return zhuzhi;};
};
class manage{
    telephone tel[MAXPEOPLE];
public:
    void luru();
    void shanchu();
    void xiugai();
    void chaxun();
    void liulan();
};
void manage::luru()//录入联系人
{
char xuhao[20],name[20],xingb[20],nianl[20],dianhua[20],zhuzhi[20];int a;
cout<<"请输入要添加的联系人的数量:";
cin>>a;
for(int i=0;i<a;i++)
{cout<<"请输入序号:"<<endl;
cin>>xuhao;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入性别:"<<endl;
cin>>xingb;
cout<<"请输入年龄:"<<endl;
cin>>nianl;
cout<<"请输入电话:"<<endl;
cin>>dianhua;
cout<<"请输入住址:"<<endl;
cin>>zhuzhi;
tel[scount].instial(xuhao,name,xingb,nianl,dianhua,zhuzhi);
scount++;}
cout<<"添加成功"<<endl;
system("pause");
system("cls");//清屏
}
void manage::shanchu()//删除联系人
{
int index=0;
cout<<"请输入要删除的序号"<<endl;
cin>>index;
for(int i=index-1;i<index;i++)

{tel[i]=tel[i+1];}
scount=scount-1;
cout<<"删除成功"<<endl;
system("pause");
//system("cls");//清屏
}
void manage::xiugai()//修改联系人
{
char name[20];
int index=0;
char xuhao[20],xingb[20],nianl[20],dianhua[20],zhuzhi[20];
int q=-1;
cout<<"请输入要修改的联系人姓名:"<<endl;
cin>>name;
for(int i=0;i<scount;i++)
{
    if(strcmp(name,tel[i].getname())==0)
    {
    cout<<"将序号修改为:"<<endl;
    cin>>xuhao;
    tel[index].setxuhao(xuhao);
        cout<<"将姓名修改为:"<<endl;
    cin>>name;
    tel[index].setname(name);
    cout<<"将性别修改为:"<<endl;
    cin>>xingb;
    tel[index].setxingb(xingb);
        cout<<"将年龄修改为:"<<endl;
    cin>>nianl;
    tel[index].setnianl(nianl);
        cout<<"将电话修改为:"<<endl;
    cin>>dianhua;
    tel[index].setdianhua(dianhua);
        cout<<"将住址修改为:"<<endl;
    cin>>zhuzhi;
    tel[index].setzhuzhi(zhuzhi);
    cout<<"修改成功"<<endl;
    break;
    }
    else
    {cout<<"联系人不存在"<<endl;}
}
system("pause");
//system("cls");//清屏
}
int xz()
{
    int a=0;
    cout<<"1、按姓名查询"<<endl;
    cout<<"2、按序号查询"<<endl;
    cout<<"3、模糊查找"<<endl;
    cout<<"请选择一种查询方式"<<endl;
    cin>>a;
    return a;
}
void manage::chaxun()//查询联系人
{
int a=xz();
if(a==1)
{
char name1[20];
char name2[20];
cout<<"请输入要查询的人的姓名"<<endl;
cin>>name1;int i,j,k=0;
for(int i=0;i<scount;i++)
{
    strcpy_s(name2,tel[i].getname());
    if(strcmp(name1,name2)==0)
    {
    j=i;k++;
    }
    if(k==1)
    {
    cout<<"序号"<<tel[i].getxuhao()<<"\t";
    cout<<"姓名"<<tel[i].getname()<<"\t";
    cout<<"性别"<<tel[i].getxingb()<<"\t";
    cout<<"年龄"<<tel[i].getnianl()<<"\t";
    cout<<"电话"<<tel[i].getdianhua()<<"\t";
    cout<<"住址"<<tel[i].getzhuzhi()<<endl;
    break;
    }    
    
}
if(k==0)
    cout<<"查无此人"<<endl;

}
if(a==2)
{
char xuhao1[20];
char xuhao2[20];
cout<<"请输入要查询的序号:"<<endl;
cin>>xuhao1;
int i,j,k=0;
for(int i=0;i<scount;i++)
{
    strcpy_s(xuhao2,tel[i].getxuhao());
    if(strcmp(xuhao1,xuhao2)==0)
    {
    j=i;k++;
    }
    if(k==1)
{   cout<<"序号"<<tel[i].getxuhao()<<"\t";
    cout<<"姓名"<<tel[i].getname()<<"\t";
    cout<<"性别"<<tel[i].getxingb()<<"\t";
    cout<<"年龄"<<tel[i].getnianl()<<"\t";
    cout<<"电话"<<tel[i].getdianhua()<<"\t";
    cout<<"住址"<<tel[i].getzhuzhi()<<endl;
    break;
    }
}
if(k==0)
    cout<<"查无此人"<<endl;
    
}

//模糊查找
if(a==3)    
{char a[20];
cout<<"请输入要查找的关键字:"<<endl;
cin>>a;cout<<endl;
int i,j,k=0;
for(i=0;i<scount;i++)
{//strcpy_s(a,tel[i].getname());
//    if(strstr(a,tel[i].getname)!=NULL)
{
j=i;k++;
}

}
if(k==1)
{
cout<<"序号"<<tel[i].getxuhao()<<"\t";
    cout<<"姓名"<<tel[i].getname()<<"\t";
    cout<<"性别"<<tel[i].getxingb()<<"\t";
    cout<<"年龄"<<tel[i].getnianl()<<"\t";
    cout<<"电话"<<tel[i].getdianhua()<<"\t";
    cout<<"住址"<<tel[i].getzhuzhi()<<endl;
    

}
else{
cout<<"模糊字查找失败!请输入其他关键字!"<<endl;
}

}

system("pause");
//system("cls");//清屏
}
void manage::liulan()
{
for(int i=0;i<scount;i++)
{   cout<<"序号:"<<tel[i].getxuhao()<<"\t";
    cout<<"姓名:"<<tel[i].getname()<<"\t";
    cout<<"性别:"<<tel[i].getxingb()<<"\t";
    cout<<"年龄:"<<tel[i].getnianl()<<"\t";
    cout<<"电话:"<<tel[i].getdianhua()<<"\t";
    cout<<"住址:"<<tel[i].getzhuzhi()<<endl;
}
system("pause");
//system("cls");//清屏
}
void memu()//菜单
{
cout<<"-----------------------------------"<<endl;
cout<<"|*****欢迎使用电话号码管理软件****|"<<endl;
cout<<"|*******  1.添加联系人  **********|"<<endl;
cout<<"|*******  2.删除联系人  **********|"<<endl;
cout<<"|*******  3.修改联系人  **********|"<<endl;
cout<<"|*******  4.查询联系人  **********|"<<endl;
cout<<"|*******  5.浏览通讯录  **********|"<<endl;
cout<<"|*******  6.退出通讯录  **********|"<<endl;
cout<<"-----------------------------------"<<endl;
}
int main()
{
    manage manager;
while(1)
{
int choice;
memu();
cout<<"请输入您的选择:"<<endl;
cin>>choice;
switch(choice)
{
case 1:
    manager.luru();
    break;
case 2:
    manager.shanchu();
    break;
case 3:
    manager.xiugai();
    break;
case 4:
    manager.chaxun();
    break;
case 5:
    manager.liulan();
    break;
case 6:
    cout<<"欢迎下次使用"<<endl;
    system("pause");
    return 0;
    break;
}  }
return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值