基于VisualStudio的C++通讯录管理系统(类)

本文介绍了使用类方法实现的电话簿管理程序,包括添加、显示、查询、删除和修改联系人功能。通过实例代码展示了如何创建`telephone`类和`manage`类来组织和操作电话簿数据。

1.此篇为使用类方法编写

#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;

#define MAXPEOPLE 100    //定义一百人
static int scount = 0;
class telephone
{
	char name[20];                             //姓名
	char sex[10];                              //性别
	char age[10];                              //年龄
	char number[12];                           //电话号码
	char addr[20];                             //地址

public:

	telephone() {};

	void instial(char na[20], char s[10], char a[10], char nu[20], char ad[20]) {
		strcpy_s(name, na);
		strcpy_s(sex, s);
		strcpy_s(age, a);
		strcpy_s(number, nu);
		strcpy_s(addr, ad);
	};

	void setname(char na[20]) {
		strcpy_s(name, na);
	}

	void setsex(char s[10]) {
		strcpy_s(sex, s);
	}

	void setage(char a[10]) {
		strcpy_s(age, a);
	}

	void setnumber(char nu[20]) {
		strcpy_s(number, nu);
	}
	void setaddr(char ad[20]) {
		strcpy_s(addr, ad);
	}

	char* getname()                                       //获得姓名
	{
		return name;//数组返回类型通过指针来实现
	};
	char* getsex()                                       //获得性别
	{
		return sex;//数组返回类型通过指针来实现
	};
	char* getage()                                       //获得年龄
	{
		return age;//数组返回类型通过指针来实现
	};
	char* getnumber()                                     //获得电话号码
	{
		return number;
	};
	char* getaddr() {									//获得地址

		return addr;
	};

};

class manage {

	telephone tel[MAXPEOPLE];
public:


	void input();                                         //添加
	void display();                                       //显示
	void Delete();                                        //删除
	void search();                                        //查询
	void change();                                        //修改
	//void exit();										  //退出


};

void menu()                                                     //定义菜单函数
{
	cout << "***********************************" << endl;
	cout << "***********1.添加联系人*************" << endl;
	cout << "***********2.显示联系人*************" << endl;
	cout << "***********3.删除联系人*************" << endl;
	cout << "***********4.查询联系人*************" << endl;
	cout << "***********5.修改联系人*************" << endl;
	cout << "***********6.退出本系统*************" << endl;
	cout << "***********************************" << endl;
}

void manage::input() {                    //添加1
	char name[20], sex[10],age[10], number[20], addr[20];
	cout << "输入姓名:" << endl;
	cin >> name;

	cout << "输入性别:" << endl;
	cin >> sex;

	cout << "输入年龄:" << endl;
	cin >> age;

	cout << "输入号码:" << endl;
	cin >> number;

	cout << "输入地址:" << endl;
	cin >> addr;
	tel[scount].instial(name,sex,age, number, addr);
	scount++;
	display();
}




void manage::search() {                                        //查询4
	char name1[20];
	char name2[20];
	int q = -1;
	cout << "请输入要查询人姓名:" << endl;
	cin >> name1;
	for (int i = 0; i < scount; i++)
	{
		strcpy_s(name2, tel[i].getname());
		if (strcmp(name1, name2) == 0) {
			cout << "名字:" << tel[i].getname() << setw(10) << "性别:" << tel[i].getsex() << setw(10) << "年龄:" << tel[i].getage() << setw(10) << "号码:" << tel[i].getnumber() << setw(10) << "地址:" << tel[i].getaddr() << endl;  q = 1;
		}

	}
	if (q != 1) { cout << "该用户不存在!" << endl; }

}
/*
void manage::Delete() {                                        //删除3
	int index = 0;
	cout << "请输入要删除的序号数:" << endl;
	cin >> index;                                       //输入序列号,如果号大于所存在的默认删除最后一个
	for (int i = index - 1; i < scount; i++)
	{
		tel[i] = tel[i + 1];
	}
	scount = scount - 1;
}
 */
//       按姓名进行删除
/**
void manage::Delete() {                                       //删除
	char name;
	cout << "请输入要删除的联系人姓名:" << endl;
	cin >> name;
	for (int i = 0; i < scount; i++) {
		if (tel[i].getname() == "name") {
			//int j = i;
			//tel[i] = NULL;  删除操作
			tel[i] = tel[i + 1];
			cout << "删除成功!" << endl;
			break;
		}
		else {
			cout << "没有此人!" << endl;
			//break;
			system("pause");
		}
	}			
	//system("pause");
	scount = scount - 1;
}*/

void manage::Delete() {                                        //删除
	char name1[20];
	char name2[20];
	int q = -1;
	cout << "请输入要删除的人姓名:" << endl;
	cin >> name1;
	for (int i = 0; i < scount; i++)
	{
		strcpy_s(name2, tel[i].getname());
		if (strcmp(name1, name2) == 0) {
			//执行删除操作
			tel[i] = tel[i + 1];
			q = 1;
		}
	}
	if (q != 1)
	{ cout << "该用户不存在!" << endl; }
}


void manage::change() {                                       //修改5
	char name[20],sex[10];
	int index = 0;
	char age[10],number[20], addr[20];
	int q = -1;
	cout << "请输入要修改人姓名:" << endl;
	cin >> name;
	for (int i = 0; i < scount; i++)
	{
		if (strcmp(name, tel[i].getname()) == 0) {
			index = i; q = 1;
		}
	}
	if (q != 1) {
		index = scount;
		scount++;
		cout << "联系人不存在,自动创建新用户!" << endl;
		tel[index].setname(name);
	}
	cout << "请输入性别:" << endl;
	cin >> sex;
	tel[index].setsex(sex);
	cout << "请输入年龄:" << endl;
	cin >> age;
	tel[index].setage(age);
	cout << "请输入电话:" << endl;
	cin >> number;
	tel[index].setnumber(number);
	cout << "请输入地址:" << endl;
	cin >> addr;
	tel[index].setaddr(addr);
	cout << "修改成功!" << endl;
	display();
}
void manage::display() {                                       //显示2

	for (int i = 0; i < scount; i++)
	{
		cout << i + 1 << setw(10) << "名字:" << tel[i].getname() << setw(10) << "性别:" << tel[i].getsex() << setw(10) << "年龄:" << tel[i].getage() << setw(10) << "号码:" << tel[i].getnumber() << setw(10) << "地址:" << tel[i].getaddr() << endl;

	}

}

//void manage::input() {
//	system("pause");
//}


int main()
{
	manage manager;                                        //读入选项
	while (1)
	{
		int choice;

		menu();
		cout << "请选择以下功能:";
		cin >> choice;
		switch (choice)
		{
		case 1:manager.input(); break;
		case 2:manager.display(); break;
		case 3:manager.Delete(); break;
		case 4:manager.search(); break;
		case 5:manager.change(); break;
		case 6:	system("pause");
		default:break;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值