c++学习之通讯录系统

c++学习之通讯录系统

      • 简介
      • 通讯录系统

简介

        感觉自己c++学习的并不系统,在网上跟着视频又学习了一遍,跟着老师写了一个非常基础的通讯录系统,适合初学c++的同学学习。同时向初学者推荐一下这份非常适合的c++学习视频。
视频网址:https://www.bilibili.com/video/av44183309/

通讯录系统

        无界面,全程在命令行操作。包含6个基础功能,都是符合基础逻辑的,没有太难理解的地方。

#include 
using namespace std;
#include 

#define MAX 1000 //通讯录可保存的最大人数 

//联系人结构体 
struct Person
{
	string name;//姓名 
	int sex;//0:男 1:女 
	int age;//年龄 
	string phone;//电话号码 
	string addr;//地址 
};

//通讯录结构体
struct AddressBooks
{
	Person personArray[MAX];
	int size;
}; 

//显示功能菜单 
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; 
}

//添加联系人
void addPerson(AddressBooks * book){
	//判断通讯录是否已满 
	if(book->size == MAX){
		cout <<"通讯录已满"<<endl;
		return; 
	}
	else{
		//输入姓名 
		string name;
		cout <<"请输入姓名:"<<endl;
		cin >>name;
		book->personArray[book->size].name = name;
		//输入性别 
		cout <<"请输入性别:"<<endl;
		cout <<"---0:男"<<endl;
		cout <<"---1:女"<<endl;
		int sex;
		while(true){
			cin>>sex;
			if(sex == 0 || sex == 1){
				book->personArray[book->size].sex = sex;
				break;
			}
			else{
				cout <<"输入错误,请重新输入!!!"<<endl; 
			}
		} 
		//输入年龄
		cout <<"请输入年龄:"<<endl;
		int age;
		while(true){
			cin >>age;
			if(age >= 0){
				book->personArray[book->size].age = age;
				break;
			}
			else{
				cout <<"输入错误,请重新输入!!!" <<endl;
			}
		}
		//输入电话号码
		cout <<"请输入电话号码:"<<endl; 
		string phoneNum;
		while(true){
			cin >>phoneNum;
			if(phoneNum.length() == 13){
				book->personArray[book->size].phone = phoneNum; 
				break;
			}
			else{
				cout <<"输入错误,请重新输入!!!"<<endl; 
			}
		}
		//输入地址
		cout <<"请输入地址:"<<endl;
		string address;
		cin >>address;
		book->personArray[book->size].addr = address;
		
		cout <<"添加成功!!!"<<endl;
		//人数加一 
		book->size++; 
	}
	system("pause");
	system("cls");
	return; 
} 

//显示联系人
void showPerson(AddressBooks book)
{
	//通讯录中还没有添加联系人 
	if(book.size == 0){
		cout <<"当前通讯录为空"<<endl; 
	}
	else{
		string sex;
		for(int i=0; i<book.size; i++){
			sex = (book.personArray[i].sex == 0) ? "男" : "女"; 
			cout <<book.personArray[i].name<<"\t"<<sex<<"\t"<<
				book.personArray[i].age<<"\t"<<book.personArray[i].phone
				<<"\t"<<book.personArray[i].addr<<endl;
		}
	}
	system("pause");
	system("cls");
	return;
} 

//检测联系人是否存在,返回数组中的位置 
int isExist(AddressBooks * book, string name)
{
	for(int i=0; i<book->size; i++){
		if(book->personArray[i].name == name){
			return i;
		}
	}
	return -1;
} 
//删除联系人
void deletePerson(AddressBooks * book)
{
	cout <<"请输入删除联系人姓名:"<<endl;
	string name;
	cin >>name;
	
	int num = isExist(book, name);
	if(num != -1){
		//删除此联系人
		for(int i=num; i<book->size; i++){
			book->personArray[i] = book->personArray[i+1];
		} 
		book->size--;
		cout <<"删除成功。"<<endl; 
	}		
	else{
		cout <<"通讯录中没有此人。"<<endl; 
	}		
	system("pause");
	system("cls");
	return;
} 

//查找联系人
void findPerson(AddressBooks * book)
{
	cout <<"请输入联系人姓名:"<<endl;
	string name;
	cin>>name; 
	
	int num = isExist(book, name);
	if(num != -1){
		string sex = (book->personArray[num].sex == 0)? "男" : "女"; 
		cout <<book->personArray[num].name<<"\t"<<sex<<"\t"
			<<book->personArray[num].age<<"\t"<<book->personArray[num].phone
			<<"\t"<<book->personArray[num].addr<<endl;
	} 
	else{
		cout <<"通讯录中没有此联系人"<<endl; 
	}
	system("pause");
	system("cls");
	return;
} 	

//修改联系人
void modifyPerson(AddressBooks * book){
	cout <<"请输入你所要修改的联系人姓名:"<<endl;
	string name;
	cin >>name;
	
	int num = isExist(book, name);
	
	if(num != -1){
		cout <<"修改开始..."<<endl;
		//修改姓名
		cout <<"请输入姓名:"<<endl; 
		string name;
		cin >>name;
		book->personArray[num].name = name;
		//修改性别
		cout <<"请输入性别:"<<endl;
		cout <<"---0:男"<<endl;
		cout <<"---1:女"<<endl;
		int sex;
		while(true){
			cin >>sex;
			if(sex == 0 || sex == 1){
				book->personArray[num].sex = sex;
				break;
			}
			else{
				cout <<"输入错误,请重新输入!!!"<<endl; 
			}
		} 
		//修改年龄
		cout <<"请输入年龄:"<<endl;
		int age;
		while(true){
			cin >>age;
			if(age >= 0){
				book->personArray[book->size].age = age;
				break;
			}
			else{
				cout <<"输入错误,请重新输入!!!" <<endl;
			}
		}
		//输入电话号码
		cout <<"请输入电话号码:"<<endl; 
		string phoneNum;
		while(true){
			cin >>phoneNum;
			if(phoneNum.length() == 13){
				book->personArray[num].phone = phoneNum; 
				break;
			}
			else{
				cout <<"输入错误,请重新输入!!!"<<endl; 
			}
		}
		//输入地址
		cout <<"请输入地址:"<<endl;
		string address;
		cin >>address;
		book->personArray[num].addr = address;
		
		cout <<"修改成功!!!"<<endl;
	} 
	else{
		cout <<"通讯录中没有此联系人"<<endl;
	}
	
	system("pause");
	system("cls");
	return;
} 

//清空通讯录
void clearBooks(AddressBooks * book){
	cout <<"请输入数字\"1\"确认清空通讯录"<<endl;
	int num;
	cin >>num;
	if(num == 1){
		book->size = 0;
		cout <<"通讯录已清空"<<endl;
	} 
	
	system("pause");
	system("cls");
	return;
} 
int main(){
	//创建通讯录结构体变量 并初始化当前人数 
	AddressBooks m_book;
	m_book.size = 0;
	
	int num;
	while(true){
		showMenu();
		cin >>num;
		
		switch (num)
		{
			case 1://1、添加联系人
				addPerson(&m_book);	//地址传递更改实参 
				break;
			case 2://2、显示联系人
				showPerson(m_book); //只显示不更改,可值传递;最好const地址传递 
				break;
			case 3://3、删除联系人
				deletePerson(&m_book); 
				break;
			case 4://4、查找联系人
				findPerson(&m_book);
				break;
			case 5://5、修改联系人
				modifyPerson(&m_book);
				break;
			case 6://6、清空联系人
				clearBooks(&m_book);
				break;
			case 0://0、退出通讯录
				return 0;
		}
	} 
	
	system("pause");
	return 0;
} 

运行界面
c++学习之通讯录系统_第1张图片
偷偷定个小目标,以后每天解一个ccf题,先从简单的开始,加油呀…

你可能感兴趣的:(c++学习)