C++基础(实现通讯录管理系统)


项目需求

在这里插入图片描述

头文件 function.h

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

#define  MAX 1000
struct person {//联系人

	//姓名
	string p_name;
	//性别
	int p_sex;
	// 年龄
	int p_age;
	//电话
	string p_tell;
	//住址
	string p_address;


};

typedef struct addressBook {
	struct person p[MAX];
	int p_num;
}AddressBook;


//要实现的方法
void quit(int *flag);//退出功能

void addPerson(AddressBook* Book);//添加联系人功能

void showPerson(AddressBook Book);//显示联系人功能

void deletePerson(AddressBook* Book, int p_num);//删除联系人功能

void findPerson(AddressBook Book, int p_num);//查找联系人功能

void modifyPerson(AddressBook* Book, int p_num);//修改联系人功能

void emptyPerson(AddressBook* Book);//清空通讯录功能
注意:不要在头文件中定义全局变量,系统会报一个重复定义的错
直接传参也能实现功能

主函数 menu.cpp

#include"function.h"
using namespace std;
int flag = 1;//定义一个全局变量

void showmenu() {
	cout << "*****  1.添加联系人  *****" << endl;
	cout << "*****  2.显示联系人  *****" << endl;
	cout << "*****  3.删除联系人  *****" << endl;
	cout << "*****  4.查找联系人  *****" << endl;
	cout << "*****  5.修改联系人  *****" << endl;
	cout << "*****  6.清空联系人  *****" << endl;
	cout << "*****  0.退出通讯录  *****" << endl;
}

int isExit(AddressBook  *Book, string name) {//判断用户是否存在
	for (int i = 0; i < Book->p_num; i++) {
		if (Book->p[i].p_name==name) {
			return i;
		}
	}
	return -1;
}
int main() {
	int n;
	//定义通讯录结构体
	AddressBook Book;
	Book.p_num = 0;

	string name;//用于检测是否有此人
	while (flag){
		printf_s("**************************\n");
		showmenu();
		printf_s("**************************\n");
		cout << endl;
		cout << "请选择您的需求:";
		cin >> n;

		switch (n)
		{
		case 0://退出通讯录
			 quit(&flag);
			break;
		case 1://添加联系人
			addPerson(&Book);
			break;
		case 2://显示联系人
			showPerson(Book);
			break;
		case 3://删除联系人
			cout << "请输入您想要删除人的姓名:";
			cin >> name;
			if (isExit(&Book, name) == -1) {
				cout << "查无此人" << endl;
			}
			else {
				deletePerson(&Book, isExit(&Book, name));
			}
			break;
		case 4://查找联系人 
			cout << "请输入您想查找人的姓名:";
			cin >> name;
			if (isExit(&Book, name) == -1) {
				cout << "查无此人" << endl;
			}
			else {
				findPerson(Book, isExit(&Book, name));
			}
			break;
		case 5://修改联系人
			cout << "请输入您想要修改的人姓名:";
			cin >> name;
			if (isExit(&Book, name) == -1) {
				cout << "查无此人"<<endl;
			}
			else {
				modifyPerson(&Book, isExit(&Book, name));
			}
			break;
		case 6://清空联系人
			emptyPerson(&Book);
			break;
		default:
			cout << "对不起,该功能尚未开通!请重新输入" << endl;
			system("pause");
			system("cls");
			break;
		}

	}
	return 0;
}

退出功能:quit.cpp

#include"function.h"

void quit(int *flag) {
	*flag = 0;
	cout << "Goodbye!" << endl;
}

添加联系人功能:add.cpp

#include"function.h"

void addPerson(AddressBook* Book) {
	//判断存储联系人空间是否已满
	if (Book->p_num == MAX+1) {
		cout << "存储空间已满,不能进行存储!" << endl;
		return;//返回空
	}
	else {
		cout << "请输入姓名:";
		cin >> Book->p[Book->p_num].p_name;
		cout << endl;

		cout << "请输入性别:" << endl;
		cout << "1--男" << endl;
		cout << "2--女" << endl;
		int sex;
		while (true) {
			cin >> sex;
			if (sex == 1 || sex == 2) {
				Book->p[Book->p_num].p_sex = sex;
				break;
			}
			else {
				cout << "输入错误,请重新输入:";
			}
		}
		cout << endl;

		cout << "请输入年龄:";
		int age;
		while (true) {
			cin >> age;
			if (age >= 10 && age <= 120) {
				Book->p[Book->p_num].p_age = age;
				break;
			}
			else {
				cout << "输入错误,请重新输入:";
			}
		}
		cout << endl;

		cout << "请输入电话:";
		string tell;
		while (true) {
			cin >> tell;
			if (tell.length() == 11) {
				Book->p[Book->p_num].p_tell = tell;
				break;
			}
			else {
				cout << "输入错误,请重新输入:";
			}
		}
		cout << endl;

		cout << "请输入住址:";
		cin >> Book->p[Book->p_num].p_address;
		cout << endl;

		//联系人增加一个
		Book->p_num++;

		//清屏
		system("pause");
		system("cls");//清屏函数
	}
}

删除联系人功能:deletePerson.cpp

#include"function.h"

void deletePerson(AddressBook* Book,int p_num) {
	for (int i = p_num; i < Book->p_num-1; i++) {
		Book->p[i] = Book->p[i + 1];
	}
	Book->p_num--;
	cout << "删除成功" << endl;
	return;
}

查找联系人功能:findPerson.cpp

#include"function.h"

void findPerson(AddressBook Book, int p_num) {
	cout << "姓名:" << Book.p[p_num].p_name << "\t";
	cout << "性别:" << (Book.p[p_num].p_sex == 1 ? "男" : "女") << "\t";
	cout << "年龄:" << Book.p[p_num].p_age << "\t";
	cout << "电话:" << Book.p[p_num].p_tell << "\t";
	cout << "住址:" << Book.p[p_num].p_address << endl;
}

修改联系人功能:modifyperson.cpp

#include"function.h"

void modifyPerson(AddressBook *Book,int p_num) {
	int f = 0;
	cout << "要修改名字吗?" << endl;
	cout << "1--Yes" << endl;
	cout << "0--No" << endl;
	cin >> f;
	if (f) {
	cout << "请输入更改姓名:";
	cin >> Book->p[p_num].p_name;
	}
	cout << endl;

	cout << "要修改性别吗?" << endl;
	cout << "1--Yes" << endl;
	cout << "0--No" << endl;
	cin >> f;
	if (f) {
		cout << "请输入更改性别:" << endl;
		cout << "1--男" << endl;
		cout << "2--女" << endl;
		int sex;
		while (true) {
			cin >> sex;
			if (sex == 1 || sex == 2) {
				Book->p[p_num].p_sex == sex;
				break;
			}
			else {
				cout << "输入错误,请重新输入:";
			}
		}
	}
	cout << endl;

	cout << "要修改年龄吗?" << endl;
	cout << "1--Yes" << endl;
	cout << "0--No" << endl;
	cin >> f;
	if (f) {
		cout << "请输入更改年龄:";
		int age;
		while (true) {
			cin >> age;
			if (age >= 10 && age <= 120) {
				Book->p[p_num].p_age = age;
				break;
			}
			else {
				cout << "输入错误,请重新输入:";
			}
		}
	}
	cout << endl;

	cout << "要修改电话吗?" << endl;
	cout << "1--Yes" << endl;
	cout << "0--No" << endl;
	cin >> f;
	if (f) {
		cout << "请输入更改电话:";
		string tell;
		while (true) {
			cin >> tell;
			if (tell.length() == 11) {
				Book->p[p_num].p_tell = tell;
				break;
			}
			else {
				cout << "输入错误,请重新输入:";
			}
		}
	}
	cout << endl;

	cout << "要修改地址吗?" << endl;
	cout << "1--Yes" << endl;
	cout << "0--No" << endl;
	cin >> f;
	if (f) {
		cout << "请输入更改后地址:";
		cin >> Book->p[p_num].p_address;
	}
	
	cout << endl;
	cout << "修改成功" << endl;
	system("pause");
	system("cls");//清屏
}

清空通讯录功能:emptyPerson.cpp

#include"function.h"

void emptyPerson(AddressBook* Book) {
	Book->p_num = 0;
	cout << "清空成功" << endl;
	system("pause");
	system("cls");
}

运行结果展示

添加联系人:
在这里插入图片描述显示联系人:
在这里插入图片描述再添加一个:
在这里插入图片描述显示:
在这里插入图片描述查找联系人:
在这里插入图片描述
删除联系人:
在这里插入图片描述

修改联系人:
跟着提示来就行
在这里插入图片描述
清空联系人:

在这里插入图片描述退出:
在这里插入图片描述

总结

这里使用的是对功能函数进行封装,相信通过这个博客,可以帮助你巩固C++的基础语法和编程思维。

还有一个有BUG的地方,就大家自己去修改了,就是出现同名的情况。
有修改了好兄弟,欢迎评论区留码。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacky~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值