c++基础通讯录管理

#include "stdio.h"
#include <string>
#include <iostream>
using namespace std;
struct Contacts {
	string sName;
	int iTelephone;
	string sArea;
	//定义基本结构体
};
struct ContactsList {
	//定义结构体数组
	int iListNumber;
	Contacts m_Contacts[100];
};

void vShowContacts(ContactsList *m_ContactsList) {

	//显示联系人
	if (m_ContactsList->iListNumber == 0) {
		cout << "暂时没有联系人" << endl;
	} else {
		for (int i = 0; i < m_ContactsList->iListNumber; i++) {
			cout << "姓名:" << m_ContactsList->m_Contacts[i].sName
			     << "  电话:" << m_ContactsList->m_Contacts[i].iTelephone
			     << "  地区:" << m_ContactsList->m_Contacts[i].sArea << endl;
		}
	}

}

void vAddContacts(Contacts v_Contacts, ContactsList *m_ContactsList) {
	//添加联系人
	cout << "请输入姓名" << endl;
	cin >> v_Contacts.sName;
	cout << "请输入电话" << endl;
	cin >> v_Contacts.iTelephone;
	cout << "请输入地区" << endl;
	cin >> v_Contacts.sArea;
	cout << "添加成功" << endl;
	m_ContactsList->iListNumber = m_ContactsList->iListNumber + 1;
	m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1] = v_Contacts;
}

bool bDelContacts(ContactsList *m_ContactsList) {
	//删除联系人
	cout << "请输入删除的人的名字" << endl;
	string sDelName;
	cin >> sDelName;
	/*
	  还可以增加更多的逻辑判断
	  1.没有联系人 怎么写逻辑
	  2.只有一个联系人, 怎么去删除 怎么去显示出来
	 */
	for (int i = 0; i < m_ContactsList->iListNumber; i++) {
		if (m_ContactsList->m_Contacts[i].sName == sDelName ) {
			//删除指针数组内元素
			//1.将后面的元素覆盖此元素,后面依次+1;数组长度-1
			//2.将最后一位元素覆盖此元素,数组长度-1
			//这里采用第二种方式
			m_ContactsList->m_Contacts[i].sName = m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1].sName;
			m_ContactsList->m_Contacts[i].iTelephone = m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1].iTelephone;
			m_ContactsList->m_Contacts[i].sArea = m_ContactsList->m_Contacts[m_ContactsList->iListNumber - 1].sArea;
			m_ContactsList->iListNumber -= 1;
			return true;
		}
	}

	return false;
}
bool bSearchContacts(ContactsList *m_ContactsList)

{
	cout << "请输入联系人的名字" << endl;
	string sSearchName;
	cin >> sSearchName;
	for (int i = 0; i < m_ContactsList->iListNumber; i++) {
		if (m_ContactsList->m_Contacts[i].sName == sSearchName) {
			cout << "检索信息->" << endl;
			cout << "姓名:" << m_ContactsList->m_Contacts[i].sName
			     << "  电话:" << m_ContactsList->m_Contacts[i].iTelephone
			     << "  地区:" << m_ContactsList->m_Contacts[i].sArea << endl;
			return true;
		}
	}
	return false;
}

bool bChangeContacts(ContactsList *m_ContactsList) {
	cout << "请输入需要修改人的名字" << endl;
	string sChangeName;
	cin >> sChangeName;
	for (int i = 0; i <= m_ContactsList->iListNumber; i++) {
		if (m_ContactsList->m_Contacts[i].sName == sChangeName) {
			cout << "名字修改为?" << endl;
			cin >> m_ContactsList->m_Contacts[i].sName;
			cout << "电话修改为?" << endl;
			cin >> m_ContactsList->m_Contacts[i].iTelephone;
			cout << "地区修改为?" << endl;
			cin >> m_ContactsList->m_Contacts[i].sArea;
			cout << "修改完成" << endl;
			return true;
		}
		//TODO
	}
	return false;
}



int main() {
	ContactsList g_ContactsList;
	ContactsList Next_ContactsList;
	g_ContactsList.iListNumber = 0; //联系人置0;
	Contacts m_Contacts;
	cout << "******************************" << endl;
	cout << "*********1.显示联系人*********" << endl;
	cout << "*********2.添加联系人*********" << endl;
	cout << "*********3.删除联系人*********" << endl;
	cout << "*********4.查找联系人*********" << endl;
	cout << "*********5.修改联系人*********" << endl;
	cout << "*********6.清空联系人*********" << endl;
	cout << "************0.退出************" << endl;
	while (true) {
		int iInput = 1;
		cin >> iInput;
		switch (iInput) {
			case 1:
				vShowContacts(&g_ContactsList);
				break;
			case 2:
				vAddContacts(m_Contacts, &g_ContactsList);
				break;
			case 3:
				bool a;
				a = bDelContacts(&g_ContactsList);
				if (a == true) {
					cout << "删除成功" << endl;
				} else {
					cout << "删除失败" << endl;
				}
				break;
			case 4:
				bool b;
				b = bSearchContacts(&g_ContactsList);
				if (b == true) {
				} else {
					cout << "没有这个联系人" << endl;
				}
				break;
			case 5:
				bool c;
				c = bChangeContacts(&g_ContactsList);
				if (c == true) {
					//TODO
				} else {
					cout << "修改失败" << endl;
				}
				break;
			case 6:
				g_ContactsList = Next_ContactsList;
				//可以加一个是否确定的逻辑判断
				cout << "成功" << endl;
				break;
			case 0:
				exit(1);
				break;
			default :
				cout << "检索不到命令" << endl;
				break;
		}
	}
	system("pause");
	return 0;
}

  

posted @ 2022-09-08 00:50  LightK  阅读(31)  评论(0)    收藏  举报