【c++】预热,通讯录

这是一个大作业的预热和练手,找了一个黑马上的通讯录系统

代码如下

#include<bits/stdc++.h>
using namespace std;
//结构体区域
#define MAX 1000
//1.联系人结构体
struct person{
	string name;
	int sex;
	int age;
	string number;
	string address;
}; 
//2.通讯录结构体
struct txl{
	struct person personarr[MAX];
	int size;//通讯录中的人数;
}; 
//函数区域 

//开始菜单
void menu() {
	cout<<"*****欢迎使用小高通讯录*****\n";
	cout<<"********∞功能如下∞*********\n";
	cout<<"********1.添加联系人********\n";
	cout<<"********2.显示联系人********\n";
	cout<<"********3.查找联系人********\n";
	cout<<"********4.删除联系人********\n";
	cout<<"********5.修改联系人********\n";
	cout<<"********6.清空联系人********\n";
	cout<<"********0.退出通讯录********\n";
	cout<<"******666.隐藏笑话功能******\n";
}
//添加联系人函数
void addperson(txl *abs){
	if(abs->size==MAX){
		cout<<"通讯录人数已满,无法添加更多联系人\n";
		return;
	}
	else
	cout<<"请输入联系人的姓名:";
	string name;
	cin>>name;
	abs->personarr[abs->size].name=name;
	cout<<"请输入联系人性别(tip:1.为男性,2.为女性):";
	int sex;
	cin>>sex;
	abs->personarr[abs->size].sex=sex;
	cout<<"请输入联系人的年龄:";
	int age;
	cin>>age;
	abs->personarr[abs->size].age=age;
	cout<<"请输入联系人的电话号码:";
	string number;
	cin>>number;
	abs->personarr[abs->size].number=number;
	cout<<"请输入联系人的地址:";
	string address;
	cin>>address;
	abs->personarr[abs->size].address=address;
	cout<<"添加完成\n";
	abs->size++;
} 
//显示联系人函数 
void showperson(txl *abs){
	int count=1;
	if(abs->size==0){
		cout<<"通讯录中还没有联系人请先添加联系人\n";
		return ;
	}
	else
	for(int i=0;i<abs->size;i++){
		cout<<count<<"."; 
		cout<<"姓名:  "<<abs->personarr[i].name<<"\n";
		if(abs->personarr[i].sex==1)
		cout<<"  性别:  男\n";
		else
		cout<<"  性别:  女\n";
		cout<<"  年龄:  "<<abs->personarr[i].age<<"\n";
		cout<<"  电话号码:"<<abs->personarr[i].number<<"\n";
		cout<<"  地址:  "<<abs->personarr[i].address<<"\n";
		count++;
	}
}
//删除联系人函数
//检测联系人是否存在
int detect(txl* abs,string name){
	for(int i=0;i<abs->size;i++){
		if(abs->personarr[i].name==name)
		return i;
	} 
	return -1;
} 
//删除函数
void deleteperson(txl *abs){
	string name;
	cout<<"输入您要删除的联系人的姓名:";
	cin>>name;
	int flag;
	flag=detect(abs,name);
	    if(flag==-1){
			cout<<"通讯录中没有这个联系人,请检查后重试\n";
		}
		else{
			for(int j=flag;j<abs->size;j++){
			abs->personarr[j]=abs->personarr[j+1];
			}cout<<"删除成功\n";
			abs->size--;
		}
}
//查找联系人函数
void findperson(txl *abs){
	string name;
	cout<<"请输入你要查找的联系人:";
	cin>>name;
	int flag=detect(abs,name);
	if(flag==-1)cout<<"抱歉,通讯录没有此人,请检查重试\n";
	else{
		cout<<"姓名:"<<abs->personarr[flag].name<<"\n";
		if(abs->personarr[flag].sex==1)
		cout<<"  性别:  男\n";
		else
		cout<<"  性别:  女\n";
		cout<<"  年龄:  "<<abs->personarr[flag].age<<"\n";
		cout<<"  电话号码:"<<abs->personarr[flag].number<<"\n";
		cout<<"  地址:  "<<abs->personarr[flag].address<<"\n";
	}
} 
//修改联系人函数
void changeperson(txl *abs){
	string name;
	cout<<"输入你要修改的联系人的姓名:";
	cin>>name;
	int flag=detect(abs,name);
	if(flag==-1)cout<<"通讯录中没有这个联系人,请检查姓名后重试\n";
	else{
		int what;
		cout<<"输入想修改哪项信息:(1.姓名2.性别3.年龄4.电话号码5.地址6.不修改)";
		cin>>what;
		switch(what){
			case 1 : {
				string name1;
				cout<<"输入修改后的姓名:";
				cin>>name1;
				abs->personarr[flag].name=name1;
			}break;
			case 2 : {
				int sex1;
				cout<<"输入修改后的性别(1.男2.女):";
				cin>>sex1;
				abs->personarr[flag].sex=sex1; 
			}break;
			case 3 : {
				int age1;
				cout<<"输入修改后的年龄:";
				cin>>age1;
				abs->personarr[flag].age=age1;
			}break;
			case 4 : {
				string number1;
				cout<<"输入修改后的电话号码:";
				cin>>number1;
				abs->personarr[flag].number=number1;	
			}break;
			case 5 : {
				string address1;
				cout<<"输入修改后的地址:";
				cin>>address1;
				abs->personarr[flag].address=address1;	
			}break;
			case 6 : break;
		} 
	} 
} 
//清空联系人函数
void cleanperson(txl *abs){
	abs->size=0;
} 
//主函数运行区域 

int main(){
	int choice;
	txl abs;
	abs.size=0;//初始化人数 
	while(1){
		menu();
		cin>>choice;
	switch(choice){
		case 1 ://添加 
		    addperson(&abs);//用地址才能改变实参 
			system("pause");system("cls");
			break;
		case 2 ://显示
		    showperson(&abs);
		    system("pause");system("cls");
		    break;
	    case 3 ://查找
	        findperson(&abs);
	        system("pause");system("cls");
		    break;
		case 4 ://删除
		    deleteperson(&abs);
		    system("pause");system("cls");
		    break;
		case 5 ://修改
		    changeperson(&abs);
		    system("pause");system("cls");
		    break;
		case 6 ://清空
		    cleanperson(&abs);
		    cout<<"清空完成NB";
		    system("pause");system("cls");
			break;
		case 0 :system("cls") ;cout<<"欢迎再次使用 Thank you";return 0;break; 
		
		case 666 : {
			int num=0;
			cout<<"输入你要的笑话编号共三个:";
			cin>>num;
			switch(num){
				case 1 : cout<<"不好的东西,我自己屏蔽(记得重新输入666)\n";system("pause");system("cls");break;
				case 2 : cout<<"不好的东西,我自己屏蔽(记得重新输入666)\n";system("pause");system("cls");break;
				default: cout<<"不好的东西,我自己屏蔽\n";system("pause");system("cls");break; 
			}
		}break;
	}
	}
	
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值