C++通讯录管理系统的实现

功能要求

1.添加联系人(姓名,性别,年龄,电话,住址)
2.显示全部联系人
3.删除联系人
4.查找联系人
5.修改联系人
6.清空联系人
0.退出
各功能的实现都由函数封装实现

代码如下

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

struct connect {   //联系人
	string name;        //姓名
	string sex;         //性别
	int age=0;          //年龄
	string tel;		    //电话
	string home;        //住址
};

struct list {      //通讯录
	connect clist[50];  //最多存50个
	int size=0;           //当前联系人数目
};

void showMenu()   //显示菜单
{
	cout << "****************************" << endl
		<< "** 1.添加联系人           **" << endl
		<< "** 2.显示全部联系人       **" << endl
		<< "** 3.删除联系人           **" << endl
		<< "** 4.查找联系人           **" << endl
		<< "** 5.修改联系人           **" << endl
		<< "** 6.清空联系人           **" << endl
		<< "** 0.退出                 **" << endl
		<< "****************************" << endl;
	cout << "请输入你的选择:" << endl;
}

void addconnect(list *mylist)                              //添加联系人
{   
	string name;   
	cout << "请输入姓名" << endl;
	cin >> name;
	mylist->clist[mylist->size].name = name;

	string sex; 
	cout << "请输入性别" << endl;
	cin >> sex;
	mylist->clist[mylist->size].sex = sex;

	int age;         
	cout << "请输入年龄" << endl;
	cin >> age;
	mylist->clist[mylist->size].age = age;

	string tel;		
	cout << "请输入电话" << endl;
	cin >> tel;
	mylist->clist[mylist->size].tel = tel;

	string home;
	cout << "请输入地址" << endl;
	cin >> home;
	mylist->clist[mylist->size].home = home;

	mylist->size++;               //人数+1
	cout << "添加成功" << endl;
	system("pause");
	system("cls");
}

void showconnect(list *mylist)     //显示通讯录
{	
	if (mylist->size == 0)
		cout << "通讯录为空" << endl;
	else
	{
		int i;
		for (i = 0; i < mylist->size; i++)             //显示功能
		{
			cout << "姓名: " << mylist->clist[i].name << "\t";
			cout << "性别: " << mylist->clist[i].sex << "\t";
			cout << "年龄: " << mylist->clist[i].age << "\t";
			cout << "电话: " << mylist->clist[i].tel << "\t";
			cout << "住址: " << mylist->clist[i].home << endl;
		}
	}
	system("pause");
	system("cls");
}

int exist(list *mylist,string name)      //查找位置
{      
	int i;
	for (i = 0; i < mylist->size; i++)
	{
		if (mylist->clist[i].name == name)
			return i;
	}
	return -1;  //有相同的则返回相同值序号,无相同则返回-1
}

void shanchu(list *mylist)
{
	int i;
	string tempname;
	cout << "输入想要删除信息的人名" << endl;
	cin >> tempname;
	i = exist(mylist, tempname);
	if (i != -1)
	{
		for (; i < mylist->size; i++)
			mylist->clist[i] = mylist->clist[i + 1];     //后一个数据覆盖前一个
		mylist->size--;
		cout << "删除成功" << endl;
	}
	else cout << "无这个人" << endl;
	system("pause");
	system("cls");
}

void search(list* mylist)    //查找联系人
{
	int i;
	string tempname;
	cout << "输入想要查找信息的人名" << endl;
	cin >> tempname;
	i = exist(mylist, tempname);
	if (i != -1)
	{
		cout << "姓名: " << mylist->clist[i].name << endl;
		cout << "性别: " << mylist->clist[i].sex << endl;
		cout << "年龄: " << mylist->clist[i].age << endl;
		cout << "电话: " << mylist->clist[i].tel << endl;
		cout << "住址: " << mylist->clist[i].home << endl;
	}
	else cout << "无这个人" << endl;
	system("pause");
	system("cls");
}

void change(list* mylist)    //修改联系人
{
	int i;
	string tempname;
	cout << "输入想要修改信息的人名" << endl;
	cin >> tempname;
	i = exist(mylist, tempname);
	if (i != -1)
	{
		string name;
		cout << "请输入姓名" << endl;
		cin >> name;
		mylist->clist[i].name = name;

		string sex;
		cout << "请输入性别" << endl;
		cin >> sex;
		mylist->clist[i].sex = sex;

		int age;
		cout << "请输入年龄" << endl;
		cin >> age;
		mylist->clist[i].age = age;

		string tel;
		cout << "请输入电话" << endl;
		cin >> tel;
		mylist->clist[i].tel = tel;

		string home;
		cout << "请输入地址" << endl;
		cin >> home;
		mylist->clist[i].home = home;

		cout << "修改成功" << endl;
	}
	else cout << "无这个人" << endl;
	system("pause");
	system("cls");
}

void paolu(list *mylist) 
{
	mylist->size = 0;
	cout << "已清空" << endl;
	system("pause");
	system("cls");
}
int main()
{
	list mylist;            
	mylist.size = 0;        //新建通讯录,初始化人数为0
	int select = 0; 
	while (true)
	{
		showMenu();
		cin >> select;
		switch (select)
		{
		case(1):addconnect(&mylist); break;
		case(2):showconnect(&mylist); break;
		case(3):shanchu(&mylist); break;
		case(4):search(&mylist); break;
		case(5):change(&mylist); break;
		case(6):paolu(&mylist); break;
		case(0):
			cout << "欢迎下次光临" << endl;
			return 0;
		}
	}
}

更多编程题目请关注公众号:蛋蛋大朋友

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学校实验周的编程题目之一,大神都是自己编自然看不上,所以就给有需要的人看看。 下面是题目要求: 系统模拟手机通信录管理系统实现对手机中的通信录行管理。提供以下几个基本功能: (1)查看功能:选择此功能时,列下列三类选择。 A:办公类 B:个人类 C:商务类 (2)当选中某类时,显示此类所有数据中的姓名、电话号码、单键拨号号码。 (3)添加数据功能:能录入新数据,每个结点包括:姓名、电话号码、分类(可能选项有:A为办公类 B为个人类 C为商务类)、电子邮件、单键拨号号码。例如: 杨春 13589664454 商务类 chuny@126.com 0 姓名和电话号码不能同时相同,如果发生这种情况,需要提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动行条目编号;单键拨号号码可以为空,但是不能设置为相同的数字。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据行修改。 (5)删除功能:选中某个人的姓名时,可对此人的相应数据行删除,并自动调整后续条目的编号。 (6)拔号功能:当选中某个姓名时,屏幕上模拟打字机的效果依次显示此人的电话号码中的各个数字;当输入单键拨号号码时,屏幕上显示被叫用户的姓名及完整电话号码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值