c++(大作业)//增删查改通讯录可以直接复制运行

本文介绍了一个简单的C++程序,实现了一个基本的通讯录功能,包括添加、显示、删除、修改和查找联系人。代码展示了如何定义结构体和使用菜单驱动用户交互。
摘要由CSDN通过智能技术生成

//因为时间不够用所以简易的实现了一下,不过可以直接上机运行,可以应付老师检查。但结构清晰你可以自己修改完善。非常适合救急的同学。

#include<iostream>
#include<string>
using namespace std;
void menu();
#define MAX 1000
//联系人结构体
struct person
{
	string name;

	int sex;//1男2女

	int age;

	string phone;

	string addr;
};
//通讯录结构体
struct tellbook
{
	struct person arr[MAX];

	int szie;
};
	

void  menu()
{
	cout << "************通讯录***********" << endl;
	cout << "*****\t1:添加联系人\t*****\n";
	cout << "*****\t2:显示联系人\t*****\n";
	cout << "*****\t3:删除联系人\t*****\n";
	cout << "*****\t4:查找联系人\t*****\n";
	cout << "*****\t5:修改联系人\t*****\n";
	cout << "*****\t6:清空联系人\t*****\n";
	cout << "*****\t0:退出通讯录\t*****\n";
	
	}
void  menu2()
{
	cout << "***********修改选项***********" << endl;
	cout << "*****\t1:修改姓名\t*****\n";
	cout << "*****\t2:修改年龄\t*****\n";
	cout << "*****\t3:修改性别\t*****\n";
	cout << "*****\t4:修改号码\t*****\n";
	cout << "*****\t5:修改住址\t*****\n";
	cout << "*****\t0:修改已完成\t*****\n";

}
   //添加联系人
void addperson(tellbook* p)
{
	//判断是否已满
	if (p->szie == MAX)
	{
		cout << "次通讯录人数已满请创建一个新的通讯录" << endl;
		return;

	}
	else
	{
		cout << "输入姓名" << endl;
		cin >> p->arr[p->szie].name;
		while (1)
		{
			cout << "选择性别***1—男&&2—女" << endl;
			int sex;
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->arr[p->szie].sex = sex;
				break;
			}
			else
			{
				cout << "请输入合法的数据" << endl;
			}
		}
		

		cout << "输入年龄" << endl;
		cin >> p->arr[p->szie].age;
		cout << "输入联系电话" << endl;
		cin >> p->arr[p->szie].phone;
		cout << "输入地址" << endl;
		cin >> p->arr[p->szie].addr;
		cout << "添加成功" << endl;
		p->szie++;
		system("pause");
		system("cls");
	}
	
}
//显示联系人
void showperson(tellbook* p)
{
	cout << "姓名\t" << "性别\t" << "年龄\t" << "电话号码\t" << "家庭住址" << endl;
	cout << "\t*************************\t" << endl;
	for (int i = 0; i < p->szie; i++)
	{
		cout << p->arr[i].name << "\t";
		if (p->arr[i].sex == 1)
		{
			cout << "男\t";
		}
		else
		{
			cout << "女\t";
		}
		cout << p->arr[i].age << "\t" << p->arr[i].phone << "\t" << p->arr[i].addr << endl;
	}
	system("pause");
	system("cls");
}
//以姓名为主键的关键查询函数
int searchperson(tellbook* p)
{
	cout << "请输入姓名" << endl;
	string temp;
	cin >> temp;
	for (int i = 0; i < p->szie; i++)
	{
		if (p->arr[i].name == temp) 
		{
			return i;
		}
	}
	//未查询到联系人
	return -1;
}
//删除联系人
void deleteperson(tellbook* p)
{
	int i=searchperson(p);
	if (i == -1)
	{
		cout << "通讯录中没有此联系人" << endl;
		return;
		system("pause");
		system("cls");
	}
	cout << "姓名\t" << "性别\t" << "年龄\t" << "电话号码\t" << "家庭住址" << endl;
	cout << "\t*************************\t" << endl;
	cout << p->arr[i].name << "\t";
	if (p->arr[i].sex == 1)
	{
		cout << "男\t";
	}
	else
	{
		cout << "女\t";
	}
	cout << p->arr[i].age << "\t" << p->arr[i].phone << "\t" << p->arr[i].addr << endl;

	cout << "***1—确认删除此联系人信息&***2—取消操作" << endl;
	cout << "请选择" << endl;  
	int temp = 0;
	cin >> temp;
	while (1)
	{
		if (temp == 1)
		{
			//后面的联系人直接覆盖并且arr的size--则操作成功
			for (int j=i;j<p->szie;j++)
			{
				p->arr[j] = p->arr[j + 1];
			}
			p->szie--;
			cout << "删除成功" << endl;
			break;
		}
		else if(temp==2)
		{

			cout << "已取消" << endl;
			return;
			system("pause");
			system("cls");
		}
		else
		{
			cout << "请输入合法的数据" << endl;
		}

	}
	
	system("pause");
	system("cls");

}
//查找联系人
void search(tellbook* p)
{
	//引入查询函数
	int i = searchperson(p);
	if (i == -1)
	{
		cout << "通讯录中没有此联系人" << endl;
		return;
		system("pause");
	}
	cout << "姓名\t" << "性别\t" << "年龄\t" << "电话号码\t" << "家庭住址" << endl;
	cout << "\t*************************\t" << endl;
	cout << p->arr[i].name << "\t";
	if (p->arr[i].sex == 1)
	{
		cout << "男\t";
	}
	else
	{
		cout << "女\t";
	}
	cout << p->arr[i].age << "\t" << p->arr[i].phone << "\t" << p->arr[i].addr << endl;

	system("pause");
	system("cls");
}
//修改联系人
void alterperson(tellbook* p)
{
	//修改首先是要查询故直接映入查询函数
	int i = searchperson(p);
	if (i == -1)
	{
		cout << "通讯录中没有此联系人" << endl;
		return;
		system("pause");
		system("cls");
	}
	cout << "姓名\t" << "性别\t" << "年龄\t" << "电话号码\t" << "家庭住址" << endl;
	cout << "\t*************************\t" << endl;
	cout << p->arr[i].name << "\t";
	if (p->arr[i].sex == 1)
	{
		cout << "男\t";
	}
	else
	{
		cout << "女\t";
	}
	cout << p->arr[i].age << "\t" << p->arr[i].phone << "\t" << p->arr[i].addr << endl;

	cout << "***1—确认修改此联系人信息&***2—取消操作" << endl;
	cout << "请选择" << endl;
	int temp = 0;
	cin >> temp;
	while (1)
	{
		if (temp == 1)
		{
			//根据返回的位置i直接修改
		
			int select = -1;
			while (1)
			{
				menu2();//显示修改选项
				cout << "选择操作" << endl;
				cin >> select;
				switch (select)
				{
				case 0: return ;
				case 1:
					cout << "请修改姓名" << endl;
					cin >> p->arr[i].name;
					break;
				case 2:
					cout << "请修改年龄" << endl;
					cin >> p->arr[i].age;
					break;
				case 3:
					cout << "请修改性别" << endl;
					cin >> p->arr[i].sex;
					break;
				case 4: 
					cout << "请修改号码" << endl;
					cin >> p->arr[i].phone;
					break;
				case 5:
					cout << "请修改住址" << endl;
					cin >> p->arr[i].addr;
					break;
				default:
					cout << "输入合法数据" << endl;
				}
			}
			system("pause");
			return ;

			break;
		}
		else if (temp == 2)
		{

			cout << "已取消" << endl;
			return;
			system("pause");
			system("cls");
		}
		else
		{
			cout << "请输入合法的数据" << endl;
		}

	}

	system("pause");
	system("cls");

}
//清空联系人
//直接将size==0即可
int empty(tellbook* p)
{
	cout << "***1—确认清空通讯录&***2—取消操作" << endl;
	cout << "请选择" << endl;
	int temp = 0;
	cin >> temp;
	while (1)
	{
		if (temp == 1)
		{
			cout << "请再次确认是否清空通讯录" << endl;
			cout << "取消请按2***继续轻按任意键" << endl;
			int temp1 = 0;
			cin >> temp1;
			if (temp1 == 2)
			{
				cout << "已取消" << endl;
				return -1;
				system("pause");
				system("cls");
			}
			int temp3 = p->szie;
			p->szie = 0;
			return temp3;//设计这个的目的是后续可以轻松增加意见恢复功能。
			cout << "已清空" << endl;
			system("pause");
			system("cls");
			break;
		}
		else if (temp == 2)
		{

			cout << "已取消" << endl;
			return -1;
			system("pause");
			system("cls");
		}
		else
		{
			cout << "请输入合法的数据" << endl;
		}

	}
}

int main()
{
	 //创建第一个通讯录
	 tellbook u1; u1.szie = 0;//初始化为zero
	 
	 int select = -1;
	 while (1)
	 {
		 menu();
		 cout << "选择操作" << endl;
		 cin >> select;
		 switch (select)
		 {
		 case 0:
			 cout << "欢迎下次使用" << endl;
			 return true;
		 case 1:addperson(&u1);
			 break;
		 case 2:showperson(&u1);
			 break;
		 case 3:deleteperson(&u1);
			 break;
		 case 4: search(&u1);
			 break;
		 case 5:alterperson(&u1);
			 break;
		 case 6:empty(&u1);
			 break;
		 default:
			 cout << "输入合法数据" << endl;
		 }
	 }

	system("pause");
	return 0;

}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值