实现简易通讯录--C语言\C++

使用c基础语法,编写一个简易的通讯录。主要捋顺编写程序的逻辑思维,练习结构体,数组,指针,枚举等等的运用。

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

#define MAX 1000 

void showMenu();
void inputInfo(struct AddressBooks* abs, int index);
void addPeople(struct AddressBooks* abs);
void showPeople(struct AddressBooks* abs);
int isExit(struct AddressBooks* abs, string iName);
void deletePeople(struct AddressBooks* abs);
void modifyPeople(struct AddressBooks* abs);
void findPeople(struct AddressBooks* abs);
void emptyPeople(struct AddressBooks* abs);

enum Function {
    
    
	EXIT, ADD, SHOW, DELETE, MODIFY, FIND, EMPTY
};

struct People {
    
    
	string name;
	string sex;
	string number;
	string address;
};
struct AddressBooks {
    
    
	struct People array[MAX];
	int num;
};

int main()
{
    
    
	//创建通讯录结构体变量
	struct AddressBooks abs;
	//初始化通讯录中当前人员的个数
	abs.num = 0;
	//功能实现
	int select = 0;
	while (true) {
    
    
		//显示菜单
		showMenu();
		//选择功能
		cout << "请选择一个功能:" << endl;
		cin >> select;
		switch (select) {
    
    
		case ADD:				//1、添加联系人
			addPeople(&abs);
			break;
		case SHOW:				//2、显示联系人
			showPeople(&abs);
			break;
		case DELETE:			//3、删除联系人
			deletePeople(&abs);
			break;
		case MODIFY:			//4、修改联系人
			modifyPeople(&abs);
			break;
		case FIND:				//5、查找联系人
			findPeople(&abs);
			break;
		case EMPTY:				//6、清空联系人
			emptyPeople(&abs);
			break;
		default:				//0、退出
			cout << "已退出" << endl;
			system("pause");
			return 0;
		}
	}
	system("pause");
}

/*******************************************************************************
*****************
* FUNCTION
*	showMenu
*DESCRIPTION
*	显示菜单栏
*PARAMETERS
*	
*RETURNS
*	void
*****************
*******************************************************************************/
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;
}

/*******************************************************************************
*****************
* FUNCTION
*	inputInfo
*DESCRIPTION
*	输入联系人信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*	int						index	联系人在通讯中的位置
*RETURNS
*	void
*****************
*******************************************************************************/
void inputInfo(struct AddressBooks* abs, int index)
{
    
    
	//姓名
	cout << "姓名  :  ";
	string iName;
	cin >> iName;
	abs->array[index].name = iName;
	//性别
	cout << "0-----女  1------男" << endl;
	cout << "性别  :  ";
	int iSex;
	cin >> iSex;
	abs->array[index].sex = (iSex == 1 ? "男" : "女");
	//电话号码
	cout << "电话号码  :  ";
	string iNumber;
	cin >> iNumber;
	abs->array[index].number = iNumber;
	//地址
	cout << "地址  :  ";
	string iAddress;
	cin >> iAddress;
	abs->array[index].address = iAddress;
}

/*******************************************************************************
*****************
* FUNCTION
*	outInfo
*DESCRIPTION
*	输出联系人信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*	int						index	联系人在通讯中的位置
*RETURNS
*	void
*****************
*******************************************************************************/
void outInfo(struct AddressBooks* abs, int index)
{
    
    
	cout << "姓名:   " << abs->array[index].name << '\t';
	cout << "性别:   " << abs->array[index].sex << '\t';
	cout << "电话号码:" << abs->array[index].number << '\t';
	cout << "地址:   " << abs->array[index].address << endl;
}

/*******************************************************************************
*****************
* FUNCTION
*	addPeople
*DESCRIPTION
*	添加联系人信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*RETURNS
*	void
*****************
*******************************************************************************/
void addPeople(struct AddressBooks* abs)
{
    
    
	if (abs->num == MAX) {
    
    
		cout << "通讯录已满" << endl;
	}
	else {
    
    
		inputInfo(abs, abs->num);
		abs->num++;
		cout << "已保存" << endl;
	}
	//任意键清屏
	system("pause");
	system("cls");
}

/*******************************************************************************
*****************
* FUNCTION
*	showPeople
*DESCRIPTION
*	打印所有通信录信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*RETURNS
*	void
*****************
*******************************************************************************/
void showPeople(struct AddressBooks* abs) 
{
    
    
	cout << "总共有 " << abs->num << " 位联系人" << endl;
	if (abs->num) {
    
    
		for (int i = 0; i < abs->num; i++) {
    
    
			outInfo(abs, i);
		}
	}else {
    
    
		cout << "通讯录为空哦,请添加" << endl;
	}
	//任意键清屏
	system("pause");
	system("cls");
}

/*******************************************************************************
*****************
* FUNCTION
*	isExit
*DESCRIPTION
*	判断该联系人是否存在
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*	string					iName	需要查找的联系人姓名
*RETURNS
*	int						-1 or i	输出判断结果
*****************
*******************************************************************************/
int isExit(struct AddressBooks* abs, string iName) 
{
    
    
	if (abs->num) {
    
    
		for (int i = 0; i < abs->num; i++) {
    
    
			if (abs->array[i].name == iName) {
    
    
				//匹配到ret返回i,
				return i;
				break;
			}
		}
	}
	else {
    
    
		cout << "通讯录为空,请添加" << endl;
		return -1;
	}
	//匹配不到返回0
	return -1;
}

/*******************************************************************************
*****************
* FUNCTION
*	deletePeople
*DESCRIPTION
*	删除联系人信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*RETURNS
*	void
*****************
*******************************************************************************/
void deletePeople(struct AddressBooks* abs)
{
    
    
	string iName;
	cout << "请输入要删除的联系人:  ";
	cin >> iName;
	int ret = 0;
	ret = isExit(abs, iName);
	if (ret != -1) {
    
    
		for (int i = ret; i < abs->num; i++) {
    
    
			abs->array[i] = abs->array[i + 1];
		}
		abs->num--;
		cout << "该联系人已删除" << endl;
	}else {
    
    
		cout << "该联系人不存在" << endl;
	}
	//任意键清屏
	system("pause");
	system("cls");
}

/*******************************************************************************
*****************
* FUNCTION
*	modifyPeople
*DESCRIPTION
*	修改联系人信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*RETURNS
*	void
*****************
*******************************************************************************/
void modifyPeople(struct AddressBooks* abs)
{
    
    
	cout << "请输入要修改人的姓名:  ";
	string iName;
	cin >> iName;
	int ret = 0;
	ret = isExit(abs, iName);
	if (ret != -1) {
    
    
		inputInfo(abs, ret);
		cout << "该联系人已修改" << endl;
	}
	else {
    
    
		cout << "该联系人不存在" << endl;
	}
	//任意键清屏
	system("pause");
	system("cls");
}

/*******************************************************************************
*****************
* FUNCTION
*	findPeople
*DESCRIPTION
*	查找联系人信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*RETURNS
*	void
*****************
*******************************************************************************/
void findPeople(struct AddressBooks* abs)
{
    
    
	cout << "请输入要查找人的姓名:  ";
	string iName;
	cin >> iName;
	int ret = 0;
	ret = isExit(abs, iName);
	if (ret != -1) {
    
    
		outInfo(abs, ret);
	}
	else {
    
    
		cout << "该联系人不存在" << endl;
	}
	//任意键清屏
	system("pause");
	system("cls");
}

/*******************************************************************************
*****************
* FUNCTION
*	emptyPeople
*DESCRIPTION
*	清空联系人信息
*PARAMETERS
*	struct AddressBooks*	abs		通信录结构体指针
*RETURNS
*	void
*****************
*******************************************************************************/
void emptyPeople(struct AddressBooks* abs) 
{
    
    
	cout << "确认清空(y?):  ";
	string confirm;
	cin >> confirm;
	if (confirm == "y") {
    
    
		abs->num = 0;
		cout << "从此相忘于江湖" << endl;
	}else {
    
    
		cout << "留存曾经的相逢" << endl;
	}
	//任意键清屏
	system("pause");
	system("cls");
}

该问题为本人自主学习黑马程序员c++ke课程时,所写的练习题。

猜你喜欢

转载自blog.csdn.net/Fighting_gua_biu/article/details/112319161