通讯录管理系统(多个构造函数情况下要创建对象数组存储,char*类型变量的输入)

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;
		}
	}
}

おすすめ

転載: blog.csdn.net/qq_62468874/article/details/121892409