初学者用C++实现一个通讯录

这是我学习C++基本知识的第一个任务,完成一个通讯录代码实现,记录自己的一小步

代码如下: 

//任务要求:1、添加联系人
//          2、显示联系人
//          3、删除联系人
//          4、查找联系人
//          5、修改联系人
//          6、清空联系人
//          0、退出系统
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
//11-封装函数显示该界面 如void showMenu()
//11-在main函数中调用封装好的函数
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;
}
//22退出系统功能,用switch,最后面行
 

//33--添加联系人

//步骤:
//1、设计联系人结构体
//2、设计通讯录结构体
//3、main函数中创建通讯录
//4、封装添加联系人函数
//5、测试添加联系人功能
//(1姓名  2性别  3年龄  4联系电话  5家庭住址)
//33-联系人结构体
struct person {
	string personname;//姓名
	int psex;//性别
	int page;//年龄
	string personnumber;//联系电话
	string personaddress;//家庭住址
};
//33-通讯录结构体
struct numberbook {
	struct person array[MAX];
	int booknumbers;
};
void addperson(numberbook * abs) {
	if (abs->booknumbers == MAX) {
		cout << "通讯录已满,无法添加" << endl;
	}
	else {
		//添加具体联系人	
		//姓名
		string name;
		cout << "请输入姓名: " << endl;
		cin >> name;
		abs->array[abs->booknumbers].personname = name;
		//性别
		cout << "请输入性别" << endl;
		cout << "1  ---  男" << endl;
		cout << "2  ---  女" << endl;
		int sex=0;
		while (true) {
			cin >> sex;
			if (sex == 1 || sex == 2) {
				abs->array[abs->booknumbers].psex = sex;
				break;//如果输入的1或2可以退出循环,因为输入的是正确值
			}
			cout<<"输入有误,请重新输入" << endl;//如果是其他数字请重新输入
		}
		//年龄
		int age=0;
		cout << "请输入年龄" << endl;
		cin >> age;
		abs->array[abs->booknumbers].page = age;
		//联系电话
		cout<<"请输入联系电话: " << endl;
		string phonenumber;
		cin >> phonenumber;
		abs->array[abs->booknumbers].personnumber = phonenumber;
		//家庭住址
		string addressment;
		cout << "请输入家庭地址: " << endl;
		cin >> addressment;
		abs->array[abs->booknumbers].personaddress = addressment;
		abs->booknumbers++;
		cout << "添加成功!" << endl;
	}
	system("pause");//按任意键退出
	system("cls");//清屏
}
//44--2显示联系人
//显示联系人,步骤:
//1、封装显示联系人函数
//2、测试显示联系人功能
//如果当前通讯录人数没有人员,就提示记录为空;人数大于0,显示通讯录信息
void showbookmessage(numberbook*abs) {
	if (abs->booknumbers==0) {
		cout << "通讯录无人员信息!" << endl;
	}
	else {
		for (int i = 0; i < abs->booknumbers; i++) {
			cout << "                                                    " << endl;
			cout << "第" << i + 1 << "位联系人的信息如下:" << endl;
			cout << "姓名:" <<abs->array[i].personname<< endl;
			cout << "性别:" <<(abs->array[i].psex == 1 ? "男" : "女") << endl;
			cout << "年龄:" <<abs->array[i].page << "岁" << endl;
			cout << "联系电话:" <<abs->array[i].personnumber<< endl;
			cout << "家庭住址:" <<abs->array[i].personaddress << endl;
			cout << "____________________________________________________" << endl;
		}
	}
	system("pause");
	system("cls");
}
//55--3删除联系人
// 步骤:
//1、封装检测联系人是否存在---如果存在返回联系人在通讯录的位置,不存在返回-1
//2、封装删除联系人函数
int EXIST(numberbook*abs,string name) {
	for (int i = 0; i <= abs->booknumbers; i++) {
		//找到用户名字
		if (abs->array[i].personname == name) {
			return i;
		}
	}
	return -1;//没有找到,返回-1
}
/// <summary>
/// //
/// </summary>
/// <param name="abs"></param>
void deleteperson(numberbook*abs){
	cout<<"请输入你要删除的联系人的名字:" << endl;
	string name;
	cin >> name;
	int reactions = EXIST(abs, name);
	if(reactions !=-1){
		for (int j=reactions; j < abs->booknumbers; j++) {
			abs->array[j] = abs->array[j+1];
		}
		abs->booknumbers--;
		cout<<"删除成功!" << endl;
	}
	else
	{
		cout<<"查无此人..." << endl;
	}
	system("pause");
	system("cls");
}
//ok
//66--4查找联系人
void findperson(numberbook*abs) {
	cout << "请输入你要查询的联系人的名字:" << endl;
	string name;
	cin >> name;
	int rea= EXIST(abs, name);
	if (rea != -1) {
		cout << "_______________________________________________________________" << endl;
		cout << "为你查询到的信息如下:"<<endl;
		cout << "姓名:"<<abs->array[rea].personname <<endl;
		cout << "性别:"<<abs->array[rea].psex <<endl;
		cout << "年龄:"<<abs->array[rea].page <<endl;
		cout << "联系电话:"<<abs->array[rea].personaddress <<endl;
		cout << "家庭住址:"<<abs->array[rea].personnumber <<endl;
		cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<< endl;
	}
	else
	{
		cout << "查无此人..." << endl;
	}
	system("pause");
	system("cls");
}
//77--5修改联系人
void conlact(numberbook*abs){
	cout << "请输入你要修改的联系人的名字:" << endl;
	string name;
	cin >> name;
	int reacti = EXIST(abs, name);
	if (reacti != -1) {
		cout << "查询到该联系人信息,请修改:" << endl;
		cout << "_________________________________________" << endl;
		//录入新名字
		cout<<"请输入新的名字信息:" << endl;
		string newname;
		cin >> newname;
		abs->array[reacti].personname = newname;
		//录入新性别信息
		cout << "请输入新的性别信息:" << endl;
		int newsex;
		while (true) {
			cin >> newsex;
			if (newsex == 1 || newsex == 2) {
				abs->array[reacti].psex = newsex;
				break;//如果输入的1或2可以退出循环,因为输入的是正确值
			}
			cout << "输入有误,请重新输入" << endl;//如果是其他数字请重新输入
		}
		//录入新年龄
		cout << "请输入新的年龄信息:" << endl;
		int newage;
		cin >> newage;
		abs->array[reacti].page = newage;
		//录入新电话号码
		cout << "请输入新的联系电话信息:" << endl;
		string newnumber;
		cin >> newnumber;
		abs->array[reacti].personnumber = newnumber;
		//录入新地址
		cout << "请输入新的家庭住址信息:" << endl;
		string newaddress;
		cin >> newaddress;
		abs->array[reacti].personaddress = newaddress;
		cout << "修改完成" << endl;
	}
	else
	{
		cout << "查无此人,无法进行修改" << endl;
	}
	system("pause");
	system("cls");
}
//88--6清空联系人
//封装清空联系人函数
void cleaningperson(numberbook*abs) {
	//abs->booknumbers = 0;
	for (int i = 0; i < abs->booknumbers; i++) {
		for (int j = 0; j < abs->booknumbers; j++) {
			abs->array[j].personname = abs->array[j + 1].personname;
			abs->array[j].psex = abs->array[j + 1].psex;
			abs->array[j].page = abs->array[j + 1].page;
			abs->array[j].personnumber = abs->array[j + 1].personnumber;
			abs->array[j].personaddress = abs->array[j + 1].personaddress;
		}
	}
	cout << "该通讯录已清空!" << endl;
	system("pause");
	system("cls");
}
int main() {
	//33-创建通讯录结构体变量
	struct numberbook abs;
	//33-初始化通讯录中当前人员个数
	abs.booknumbers = 0;
	//22创建用户选择变量
	int select = 0;
	//循环体使得功能循环使用
	while (true)
	{
		//11菜单的调用
		showMenu();
		cin >> select;
		switch (select)
		{
		case 1:addperson(&abs);       break;//22-1  1、添加联系人(利用地址传递,可以修改实参)
		case 2:showbookmessage(&abs); break;//22-2、显示联系人
		case 3:deleteperson(&abs);    break;//22-3、删除联系人
		case 4:findperson(&abs);      break;//22-4、查找联系人
		case 5:conlact(&abs);         break;//22-5、修改联系人	
		case 6:cleaningperson(&abs);  break;//22-6、清空联系人
		case 0:{cout << "欢迎下次使用" << endl;
			    system("pause");
			    return 0;                  //22-0、退出通讯录
		}
		default:
			break;
		}
	}
	system("pause");
	return 0;
}


 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值