C++结构体案例--通讯录系统

运用学到的C++结构体知识创建一个通讯录系统,有7大功能:

  • 添加联系人:向通讯录中添加联系人姓名、电话、性别、年龄、家庭住址,最多可添加1000人。
  • 显示联系人:显示通讯录中所有联系人信息
  • 删除联系人:按照姓名进行删除指定联系人
  • 查找联系人:按照姓名查找指定联系人
  • 修改联系人:按照姓名重新修改指定联系人
  • 清空联系人:清空通讯录中所有信息
  • 退出通讯录:退出当前使用的通讯录

1、显示菜单栏

功能:显示用户可以执行的操作,实现菜单功能。

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

效果:

2、退出通讯录

功能:退出通讯录系统

思路:根据用户的选择,执行不同的操作,可以用switch分支结构。

int main()
{
	int select = 0;//输入你的选择项
	while(true)
	{
		
		showMenu();
		cin >> select;
		switch (select)
		{
		case 0://退出通讯录
			cout << "欢迎下次使用" << endl;
			return 0;
			system("pause");
			break;
		default:
			break;
		}
	}
	
	return 0;
}

效果:

3、添加联系人

功能:向通讯录中添加新的联系人及其其他相关信息。

  1. 创建联系人结构体
  2. 创建通讯录
  3. 添加联系人函数
  4. 测试功能

3.1 创建联系人结构体

struct  contact
{
	string name;//姓名
	string gender;//性别
	int age;//年纪
	string phone_number;//联系电话
	string address;//地址
};

3.2 创建通讯录

# define MAX 1000
struct contact_book {
	struct contact array[MAX];//通讯录的最大容量
	int m_size;//通讯录目前有多少联系人
};

3.3 添加联系人函数

功能:添加新的联系人

需要判断一下通讯录容量是否达到上限。

void addPreson(struct contact_book *a)
{
	string name, gender, phone_number, address;
	int age;
	if (a->m_size == MAX) {
		cout << "通讯录已满,无法添加" << endl;
		return;
	}
	else
	{
		int index = a->m_size;
		string name, addre, phone_number, gender;
		int age;
		cout << "姓名:";
		cin >> name;
		a->array[index].name=name;
		cout << "性别:";
		cin >> gender;
		while (gender != "男" && gender != "女")
		{
			cout << "性别输入有误,请重新输入"<<endl;
			cin >> gender;
		}
		a->array[index].gender = gender;
		cout << "年龄:";
		cin >> age;
		a->array[index].age=age;
		cout << "联系电话:";
		cin >> phone_number;
		a->array[index].phone_number=phone_number;
		cout << "住址:";
		cin >> addre;
		a->array[index].address=addre;
		a->m_size++;
		cout << "添加成功!";
		system("cls");
	}
	
}

3.4 测试功能

在主程序中加入”添加联系人“代码,测试功能。

int main()
{
	int select = 0;//输入你的选择项
	contact_book arr;//结构体数组定义
	arr.m_size = 0;
	while(true)
	{
		
		showMenu();
		cin >> select;
		switch (select)
		{
		case 1:// 添加联系人
			addPreson(&arr);
			break;
		case 0://退出通讯录
			cout << "欢迎下次使用" << endl;
			return 0;
			system("pause");
			break;
		default:
			break;
		}
	}
	
	return 0;
}

效果:

 4、显示联系人

功能: 显示通讯录中所有的联系人及其信息。

4.1 显示联系人函数

void showPerson(contact_book* a)
{
	if (a->m_size == 0)
	{
		cout << "当前记录为空" << endl;
		return;
	}
	else
	{
		for (int i = 0; i < a->m_size; i++)
		{
			cout << "姓名:" << a->array[i].name <<"\t" << "性别:" << a->array[i].gender << "\t"
				<< "年龄:" << a->array[i].age<<"\t" << "联系电话:" << a->array[i].phone_number<<"\t"
				<< "住址:" << a->array[i].address << endl;
		}
		
	}
	system("pause");
	system("cls");
}

4.2 主程序中调用

int main()
{
	int select = 0;//输入你的选择项
	contact_book arr;//结构体数组定义
	arr.m_size = 0;
	while(true)
	{
		
		showMenu();
		cin >> select;
		switch (select)
		{
		case 0://退出通讯录
			cout << "欢迎下次使用" << endl;
			return 0;
			system("pause");
			break;
		case 1:// 添加联系人
			addPreson(&arr);
			break;
		case 2://显示联系人
			showPerson(&arr);
			break;
		default:
			break;
		}
	}
	
	return 0;
}

效果:

 5 删除联系人

功能:删除指定姓名的联系人

思路:

  1. 判断联系人是否存在
  2. 存在的话删除

5.1 判断联系人是否存在

int  chechperson(string name,contact_book* a)
{
	if (a->m_size == 0)
		return -1;
	else
	{
		for (int i = 0; i < a->m_size; i++)
		{
			if (name == a->array[i].name)
				return i;
		}
		return -1;
	}
}

5.2 删除联系人函数

void deletePerson(contact_book* a)
{
	string name;
	cout << "请输入你想删除的联系人" << endl;
	cin >> name;
	int index = chechperson(name, a);
	if (index == -1)
		cout << "用户不存在"<<endl;
	else
	{
		for (int i = index; i < a->m_size; i++)
		{
			a->array[index] = a->array[index + 1];
		}
		a->m_size--;
	}
}

5.3 主程序中调用

int main()
{
	int select = 0;//输入你的选择项
	contact_book arr;//结构体数组定义
	arr.m_size = 0;
	while(true)
	{
		
		showMenu();
		cin >> select;
		switch (select)
		{
		case 0://退出通讯录
			cout << "欢迎下次使用" << endl;
			return 0;
			system("pause");
			break;
		case 1:// 添加联系人
			addPreson(&arr);
			break;
		case 2://显示联系人
			showPerson(&arr);
			break;
		case 3://删除联系人
			deletePerson(&arr);
			break;
		default:
			break;
		}
	}
	
	return 0;
}

效果:

 6 查找联系人

功能:查找指定姓名的联系人信息。

void  findPerson(contact_book* a)
{
	string name;
	cout << "请输入要查找的联系人:";
	cin >> name;
	int i = chechperson(name, a);
	if (i != -1)
	{
	
		cout << "姓名:" << a->array[i].name << "\t" << "性别:" << a->array[i].gender << "\t"
				<< "年龄:" << a->array[i].age << "\t" << "联系电话:" << a->array[i].phone_number << "\t"
				<< "住址:" << a->array[i].address << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}
	system("pause");
	system("cls");
}

 效果:

7 修改联系人

功能:修改指定姓名联系人的信息

void correctPersor(contact_book* a)
{
	//先找到有没有这个人
	cout << "请输入想修改的联系人:";
	string name;
	cin >> name;
	int i = chechperson(name, a);
	if (i!=-1)
	{
		
	
		cout << "姓名:" << a->array[i].name << "\t" << "性别:" << a->array[i].gender << "\t"
				<< "年龄:" << a->array[i].age << "\t" << "联系电话:" << a->array[i].phone_number << "\t"
				<< "住址:" << a->array[i].address << endl;
			string gender;
			cout << "姓名:";
			cin >> a->array[i].name;
			cout << "性别:";
			cin >> gender;
			while (gender != "男" && gender != "女")
			{
				cout << "性别输入有误,请重新输入" << endl;
				cin >> gender;
			}
			a->array[i].gender = gender;
			cout << "年龄:";
			cin >> a->array[i].age;
			cout << "联系电话:";
			cin >> a->array[i].phone_number;
			cout << "住址:";
			cin >> a->array[i].address;
			cout << "修改成功!";
		}
	else
		cout << "查找不到此联系人" << endl;
	system("pause");
	system("cls");
}

效果:

 8 清空联系人

功能:把所有的联系人清空

思路:把通讯录数组的容量置为0

void clearPerson(contact_book* a)
{
	a->m_size = 0;
	cout << "清除成功";
	system("cls");
}

效果:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#define _CRT_SECURE_NO_WARNINGS 1 #ifndef __CONTACT_H_ #define __CONTACT_H_ #include<stdio.h> #include<stdlib.h> #include<string.h> #define PEO_MAX 30 #define STUID_MAX 10 #define NAME_MAX 20 #define SEX_MAX 10 #define TEL_MAX 15 typedef struct People { char id[STUID_MAX]; char name[NAME_MAX]; char sex[SEX_MAX]; char tel[TEL_MAX]; }*peo; typedef struct Contact { int count; struct People people[PEO_MAX]; }*pCon; void add_peo(pCon pcon); //添加联系人信息 void show_peo(pCon pcon); //显示指定联系人信息 void find_peo(pCon pcon); //查找联系人信息 void modify_peo(pCon pcon); //修改指定联系人信息 void clear_peo(pCon pcon); //清空联系人信息 void show_menu(); //菜单显示 #endif int search(pCon pcon, char *name) { int i = 0; for (i=0; i < pcon->count; i++) { if (strcmp(name, pcon->people[i].name) == 0) return i; } return -1; } void add_peo(pCon pcon) //添加联系人 { if (pcon->count == PEO_MAX) { printf("The contact has fullen."); return; } printf("please input studentID: "); scanf("%s",(pcon->people[pcon->count]).id); printf("please input name: "); scanf("%s", (pcon->people[pcon->count]).name); printf("please input sex : "); scanf("%s", (pcon->people[pcon->count]).sex); printf("please input tel: "); scanf("%s", (pcon->people[pcon->count]).tel); pcon->count++; } void show_peo(pCon pcon)//显示联系人 { int i = 0; for (; i < pcon->count; i++) { printf("studentID name sex tel \n"); printf("%s\t%s\t%s\t%s\n", pcon->people[i].id, pcon->people[i].name, pcon->people[i].sex, pcon->people[i].tel); } } void find_peo(pCon pcon) //查找联系人信息 { int i; char name[NAME_MAX]; printf("please input the people you want to find:"); scanf("%s", name); i = search(pcon, name); if (i == -1) printf("The people doesn't exsit.\n"); else printf("%s\t%s\t%s\t%s\n", pcon->people[i].id, pcon->people[i].name, pcon->people[i].sex, pcon->people[i].tel); } void modify_peo(pCon pcon) //修改指定联系人信息 { int i; char name[NAME_MAX]; printf("please input the people you want to modify:"); scanf("%s", name); i = search(pcon, name); if (i == -1) printf("The people doesn't exsit.\n"); else printf("please input studentID: "); scanf("%s", (pcon->people[i]).id); printf("please input name: "); scanf("%s", (pcon->people[i]).name); printf("please input sex : "); scanf("%s", (pcon->people[i]).sex); printf("please input tel: "); scanf("%s", (pcon->people[i]).tel); } void clear_peo(pCon pcon) //清空联系人 { pcon->count = 0; } void show_menu() //菜单显示 { printf("==========通讯录==========\n"); printf(" \n"); printf("*******[1]显示通讯录******\n"); printf("*******[2]查 询******\n"); printf("*******[3]修 改******\n"); printf("*******[4]结 束******\n"); } int main() { struct Contact my_contact; int input = 1; my_contact.count = 0; while (input) { show_menu(); printf("please input:"); scanf("%d", &input;); switch (input) { case 1: add_peo(&my;_contact); break; case 2: show_peo(&my;_contact); break; case 3: find_peo(&my;_contact); break; case 4: modify_peo(&my;_contact); break; case 5: clear_peo(&my;_contact); break; default: break; } } return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值