0
点赞
收藏
分享

微信扫一扫

通讯录管理系统整理

钵仔糕的波波仔 2022-01-13 阅读 163
c++

1、设计通讯录功能:添加、显示、查找、删除、修改、清空联系人和退出通讯录。

2、封装菜单显示函数;

3、利用while加switch实现菜单操作并实现退出通讯录功能;

#include<iostream>
using namespace std;
#include<string>
#define MAX 1000//宏定义可存入最大人数
void showmenu()//显示主菜单
{
	cout << "***************************" << endl;
	cout << "*****  1,添加联系人  *****" << endl;
	cout << "*****  2,显示联系人  *****" << endl;
	cout << "*****  3,删除联系人  *****" << endl;
	cout << "*****  4,修改联系人  *****" << endl;
	cout << "*****  5,查找联系人  *****" << endl;
	cout << "*****  6,清空联系人  *****" << endl;
	cout << "*****  0,退出通讯录  *****" << endl;
	cout << "***************************" << endl;
}

struct person//定义联系人结构体
{
	string name;
	int sex;
	int age;
	string phoneNum;
	string address;
};

struct addressnote//定义通讯录结构体
{
	int m_size;
	person arr[MAX];//#define又称宏定义,标识符为所定义的宏名,简称宏。
    //#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。

};

void addperson(addressnote *a)//添加联系人函数
{
	if (a->m_size >= 1000)
	{
		cout << "已满" << endl;
	}
	else 
    {
		string name;
		cout << "请输入联系人姓名" << endl;
		cin >> name;
		a->arr[a->m_size].name = name;
		cout << "请选择联系人性别" << endl << "男-1   女-2" << endl;
		int sex=0;
		while (true) 
        {
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				a->arr[a->m_size].sex= sex;
				break;
			}
			cout << "输入有误,请重新输入" << endl;
		}
		cout << "请输入联系人年龄" << endl;
		cin >> a->arr[a->m_size].age ;
		cout << "请输入联系人联系电话" << endl;
		cin >> a->arr[a->m_size].phoneNum;
		cout << "请输入联系人家庭住址" << endl;
		cin >> a->arr[a->m_size].address;
		a->m_size++;	
		cout << "添加成功" << endl;
		system("pause");
		system("cls");
	}
}

void show(addressnote *a)//显示联系人函数
{
	if (a->m_size > 0) {
		for (int i = 0; i < a->m_size; i++)
		{
			cout << "姓名: " << a->arr[i].name <<"\t";
			cout << "性别: " << (a->arr[i].sex ==1?"男":"女")<< "\t";
			cout << "年龄: " << a->arr[i].age<< "\t";
			cout << "电话: " << a->arr[i].phoneNum << "\t";
			cout << "住址: " << a->arr[i].address << endl;
		}
	}
	else {
		cout << "未保存联系人" << endl;
	}
	system("pause");
	system("cls");
}

int exist(addressnote* a, string name)//判断是否存在联系人
{
	for (int i = 0; i < a->m_size; i++)
	{
		if (a->arr[i].name == name)
		{
			return i;
		}
	}
	return -1;
}



void delet(addressnote* a)//删除联系人
{
	cout << "输入要删除的联系人" << endl;
	string Pname;
	cin >> Pname;
	int ret = exist(a, Pname);
	if (ret > -1)
	{
		for (int i = ret; i < a->m_size; i++)
		{
			a->arr[i] = a->arr[i + 1];
		}
		a->m_size--;
		cout << "联系人已删除" << endl;
		system("pause");
		system("cls");
	}
	else
	{
		cout << "查无此人" << endl;
		system("pause");
		system("cls");
	}
}

void modifyPerson(addressnote *a)//修改联系人函数
{
	string  name;
	cout << "输入要修改的联系人" << endl;
	cin >> name;
	int ret = exist(a, name);
	if (ret==-1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "修改姓名: ";
		cin >> a->arr[ret].name;
		cout << "修改性别: ";
		int sex = 0;
		while (true) {
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				a->arr[a->m_size].sex = sex;
				break;
			}
			cout << "输入有误,请重新输入" << endl;
		}
		cout << "修改年龄: ";
		cin >> a->arr[ret].age;
		cout << "修改电话: ";
		cin >> a->arr[ret].phoneNum;
		cout << "修改住址: ";
		cin >> a->arr[ret].address;
	}
	system("pause");
	system("cls");
}

void findPerson(addressnote* a)//查找联系人函数
{
	string  name;
	cout << "输入要查找的联系人" << endl;
	cin >> name;
	int ret = exist(a, name);
	if (ret==-1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "姓名: " <<a->arr[ret].name << "\t";
		cout << "性别: "<<(a->arr[ret].sex==1?"男":"女") << "\t";
		cout << "年龄: " <<a->arr[ret].age << "\t";
		cout << "电话: " <<a->arr[ret].phoneNum << "\t";
		cout << "住址: " <<a->arr[ret].address << "\t";
	}
	system("pause");
	system("cls");
}

void clearPerson(addressnote *a)//清空通讯录函数
{
	a->m_size = 0;
	system("pause");
	system("cls");
}

int main() 
{

	int select;
	addressnote ads;
	ads.m_size = 0;//初始化人数
	while (true)
	{
		showmenu();
		cin >> select;
		switch (select)
		{
		case 1: addperson(&ads);
			break;
		case 2: show(&ads);
			break;
		case 3: delet(&ads);
			break;
		case 4: modifyPerson(&ads);
			break;
		case 5: findPerson(&ads);
			break;
		case 6: clearPerson(&ads);
			break;
		case 0:
			system("pause");
			return 0;
			break;
		default:system("cls");
			break;
		}
	}
}
举报

相关推荐

0 条评论