通讯录系统(C++)
头文件
addressbook.h
#ifndef ADDRESSBOOK_H_INCLUDED
#define ADDRESSBOOK_H_INCLUDED
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <cstdlib>
using namespace std;
class AddressBook
{
public:
    AddressBook();//默认构造函数
    char inter_face();//首页
    void add_person();//添加联系人
    void del_person();//删除联系人
    void show_all();//显示所有联系人
    void Clear();// 清空数据
    void alter();//修改信息
    void select();//查询联系人
    void save_new();//保存新增加的联系人
    int Search(AddressBook*AB,string n);//查姓名或电话号码为n通讯录
    string name;//姓名
    string number;//电话号码
    string sort;//类别
    string email;//
    int num;//通讯录人数
};
#endif // ADDRESSBOOK_H_INCLUDED
主函数
main.cpp
#include "addressbook.h"
using namespace std;
enum power{Clear='0',ADD = '1', DEL = '2', SHOW = '3', Alter = '4', Select = '5', END = '6'};
int main()
{
    char choose;
    AddressBook abj;
    while (choose = abj.inter_face())
    {
        switch (choose)
        {
            case Clear:
            abj.Clear();////清空通讯录数据
            break;
        case ADD:
            abj.add_person();////添加联系人
            break;
        case DEL:
            abj.del_person();////删除联系人
            break;
        case SHOW:
            abj.show_all();////显示所有联系人
            break;
        case Alter:
            abj.alter();////修改信息
            break;
        case Select:
            abj.select();////查询联系人
            break;
        case END:
            cout <<endl <<"谢谢使用!!!!!" <<endl <<endl;
            exit(0);
            break;
        default:
            break;
        }
    }
    return 0;
}
函数
Addressbook.cpp
system的头文件
#include "addressbook.h"
AddressBook::AddressBook()
{
    name = "\0";
    number = "\0";
    sort = "\0";
    email = "\0";
}
// 清空数据
void AddressBook::Clear() //清空数据
  {
    del_person();
    cout<<endl<<"成功清空通讯录数据!"<<endl<<endl;
}
//首页
char AddressBook::inter_face()
{
    system("cls");
    cout <<endl;
    cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl
        <<"\t\t※                                                ※" <<endl
        <<"\t\t※                通    迅    录                ※" <<endl
        <<"\t\t※                                                ※" <<endl
        <<"\t\t※                    0.清空数据                  ※" <<endl
        <<"\t\t※                                                ※" <<endl
        <<"\t\t※      1. 添加新联系人.      4. 修改信息.        ※" <<endl
        <<"\t\t※                                                ※" <<endl
        <<"\t\t※      2. 删除联系人.        5. 查询联系人.      ※" <<endl
        <<"\t\t※                                                ※" <<endl
        <<"\t\t※      3. 显示所有联系人.    6. 关闭通迅录.      ※" <<endl
        <<"\t\t※                                                ※" <<endl
        <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl <<endl
        <<"\t\t\t选择 :" ;
    char choose;
    cin >>choose;
    fflush(stdin);
    return choose;
}
//添加联系人
void AddressBook::add_person()
{
    const int MAXNUM=100;//通讯录人数允许的最大值
    AddressBook*AB;
    bool flag=true;//数据是否被修改过的标志
    ifstream inData("",ios::in);
    AddressBook abj;
    cout<<"----姓名或电话号码为字符串,输入“\0”终止录入----"<<endl;
    while(1)
    {
        if(num==(MAXNUM-1))
        {
            cout<<"通讯录人数已达到最大值!"<<endl;
            return;
        }
        cout <<endl <<"根据下面提示输入新联系人信息" <<endl <<endl
    <<"姓名 :" ;
    if(!(cin>>abj.name))//输入的不是字符串,重新提示输入
    {
        cout<<"姓名应为字符串!"<<endl;
        cin.clear();//清除状态标志
        cin.sync();//清空输入缓冲区
        continue;
    }
    if(Search(AB,abj.name)>0)//查此姓名是否已存在
    {
        cout<<"此姓名已存在!"<<endl;
        continue;
    }
    if(abj.name=="\0")//输入"\0"结束输入
    {
        cout<<"录入结束。"<<endl;
        return;
    }
    cin.sync();//清空输入缓冲区
    cout<<"电话 :";
      if(!(cin>>abj.number))//输入的不是字符串,重新提示输入
    {
        cout<<"姓名应为字符串!"<<endl;
        cin.clear();//清除状态标志
        cin.sync();//清空输入缓冲区
        continue;
    }
    if(Search(AB,abj.number)>0)//查此姓名是否已存在
    {
        cout<<"此姓名已存在!"<<endl;
        continue;
    }
    cin.sync();//清空输入缓冲区
    cout<<"类别 :";
    getline(cin,abj.sort);//读取一行
    if(abj.sort=="")//如读取的为空串,则设sort为null
    abj.sort="null";
    cin.sync();//清空输入缓冲区
    cout<<" :";
    getline(ail);//读取一行