AddressBook.h
#pragma once
#include<iostream>
using namespace std;
void menu();
class AddressBook
{
friend istream& operator>>(istream& cin, AddressBook* one);
friend ostream& operator<<(ostream& cout, AddressBook* one);
friend void addPerson(AddressBook* one);
friend void findPerson(AddressBook* one[],int n);
friend void showAddressBook(AddressBook* one[], int n);
private://姓名,地址,电话号码,生日等信息
string name;
string address;
string phone;
char* date = new char;
public:
AddressBook(string n, string a, string p, char* d);
AddressBook();
~AddressBook();
};
istream& operator>>(istream& cin, AddressBook* one);
ostream& operator<<(ostream& cout, AddressBook* one);
void addPerson(AddressBook* one);
void findPerson(AddressBook* one[], int n);
void showAddressBook(AddressBook* one[], int n);
此处char* date需要等于new char才可直接用cin输入date。至于为什么我也不知道,欢迎大佬留言解答^_^
AddressBook.cpp
#include<iostream>
#include"AddressBook.h"
using namespace std;
void menu()
{
cout << "*******1.添加联系人*******" << endl;
cout << "*******2.查找联系人*******" << endl;
cout << "*******3.显示地址簿*******" << endl;
cout << "************退出**********" << endl;
}
istream& operator>>(istream& cin, AddressBook* one)
{
cin >> one->name >> one->address >> one->phone;
cin >> one->date;
return cin;
}
ostream& operator<<(ostream& cout, AddressBook* one)
{
cout << "姓名: " << one->name << " 地址: " << one->address << " 电话号码: "
<< one->phone << " 生日: "<< one->date << endl;
return cout;
}
AddressBook::AddressBook(string n, string a, string p, char* d)
{
name = n; address = a; phone = p; date = d;
}
AddressBook::AddressBook() {}
AddressBook::~AddressBook() { cout << "析构函数调用函数调用" << endl; }
void addPerson(AddressBook* one)
{
cout << "请输入联系人姓名: "; cin >> one->name;
cout << "请输入联系人地址: "; cin >> one->address;
cout << "请输入联系人电话: "; cin >> one->phone;
cout << "请输入联系人生日: "; cin >> one->date;
cout << "添加成功!请输入操作代码: ";
}
void findPerson(AddressBook* one[],int n)
{
cout << "请输入要查找的联系人姓名: ";
string tempname; cin >> tempname;
for (int i = 0; i < n; i++)
{
if (tempname == one[i]->name)
cout << one[i];
}
cout << "查找完成!请输入操作代码: ";
}
void showAddressBook(AddressBook* one[], int n)
{
for (int i = 0; i < n; i++)
cout << one[i];
cout << "显示完毕!请输入操作代码: ";
}
main.cpp
#include<iostream>
#include"AddressBook.h"
using namespace std;
int main()
{
const int MAX = 100;
AddressBook* arr[MAX];
menu();
int n = 0;
while (n<MAX)
{
int ch; cin >> ch;
switch (ch)
{
case 1://添加联系人
{
AddressBook* one = new AddressBook;
cout << "请依次输入联系人的\n姓名 地址 电话号码 生日(每个以空格隔开)\n";
cin >> one;
arr[n] = one;
n++;
cout << "添加成功!请输入操作代码: ";
}break;
case 2:findPerson(arr, n);//查找联系人
break;
case 3:showAddressBook(arr, n);//显示地址簿
break;
default: return 0;
}
}
}