栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 通讯录系统(不储存为文件)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 通讯录系统(不储存为文件)

 偷偷拿来记录一下萌新的cs路——day15 历时15天,边上课边写作业边敲代码,至此终于补完大一程序设计进度= =呜呜呜 呜呜呜 呜哇哇哇哇哇

用C++模拟一个通讯录,能且仅能存储1000个人的信息;

每个人的信息包括:姓名、电话、性别(提示输入正确性别)、住址、年龄(提示输入正确年龄);

功能包括:

  1. 添加联系人
  2. 显示联系人
  3. 删除联系人
  4. 查找联系人
  5. 修改联系人
  6. 清空联系人

目录

 choices.h

 choices.cpp

 main.cpp

运行结果示例 


 choices.h
#include
using namespace std;

void showMenu();
struct person;
struct addressbooks;
void addPerson(addressbooks* abs); //注意顺序!
void showPerson(addressbooks* abs);
int scanPerson(addressbooks* abs, string name);
void deletePerson(addressbooks* abs);
void findPerson(addressbooks* abs);
void modifyPerson(addressbooks* abs);
void clearPerson(addressbooks* abs);
void quitMenu();

 choices.cpp
#include"choices.h"
#define max 1000

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;
	cout << endl;
	cout << "       * *    " << endl;
	cout << "        |     " << endl;
	cout << "       / \    " << endl;
	cout << "***************" << endl;
}

struct person { //人员结构体
	string name;
	short sex; //1男2女
	short age;
	string phoneNumber;
	string address;
};

struct addressbooks { //通讯录结构体
	struct person personArr[max];
	int num; //当前通讯录人数
};

void addPerson(addressbooks* abs) {
	if (abs->num == max) { //判断人数
		cout << "人数已满,添加失败" << endl;
		return;
	}
	else {
		string name;
		cout << "请输入姓名:" << endl;
		cin >> name;
		abs->personArr[abs->num].name = name;

		short sex;
		cout << "请输入性别(男1女2):" << endl;
		while (1) {
			cin >> sex;
			if (sex == 1 || sex == 2) { //防输错装置
				abs->personArr[abs->num].sex = sex;
				break;
			}
			cout << "请输入1或2:" << endl;
		}
		
		short age;
		cout << "请输入年龄:" << endl;
		while (1) {
			cin >> age;
			if (age >= 0 && age <= 150) {
				abs->personArr[abs->num].age = age;
				break;
			}
			cout << "请输入正确年龄:" << endl;
		}

		string phoneNumber;
		cout << "请输入电话:" << endl;
		cin >> phoneNumber;
		abs->personArr[abs->num].phoneNumber = phoneNumber;

		string address;
		cout << "请输入地址:" << endl;
		cin >> address;
		abs->personArr[abs->num].address = address;

		abs->num++;

		cout << "添加联系人成功 ^-^ 按任意键返回菜单" << endl;
		system("pause"); //按任意键继续
		system("cls"); //清屏
	}
}

void showPerson(addressbooks* abs) {
	if (abs->num == 0) {
		cout << "记录为空,请添加联系人" << endl;
	}
	else {
		for (int i = 0; i < abs->num; i++) {
			cout << endl;
			cout << "姓名:" << abs->personArr[i].name << "t";
			
			cout << "性别:" << (abs->personArr[i].sex == 1 ? "男" : "女") << "t"; //三目运算符输出男女
			cout << "年龄:" << abs->personArr[i].age << "t";
			cout << "电话:" << abs->personArr[i].phoneNumber << "t";
			cout << "地址:" << abs->personArr[i].address << "t";
			cout << endl;
		}
	}
	cout << "已显示所有联系人 ^-^ 按任意键返回菜单" << endl;
	system("pause"); //按任意键继续
	system("cls"); //清屏
}

int scanPerson(addressbooks* abs, string name) { //遍历人名,比对是否一致
	for (int i = 0; i < abs->num; i++) {
		if (abs->personArr[i].name == name) {
			return i; //找到,返回人名
		}
	}
	return -1; //未找到,返回-1
}

void deletePerson(addressbooks* abs) {
	string name;
	cout << "请输入联系人姓名" << endl;
	cin >> name; //先判断联系人是否存在
	int result = scanPerson(abs, name);
	if (result != -1) {
		for (int i = result; i < abs->num; i++) {
			abs->personArr[i] = abs->personArr[i + 1]; //数据前移
		}
		abs->num--; //更新通讯录人数
		cout << "删除成功 ^-^ 按任意键返回菜单" << endl;
	}
	else {
		cout << "查无此人 ^-^ 按任意键返回菜单" << endl;
	}
	system("pause"); //按任意键继续
	system("cls"); //清屏
}

void findPerson(addressbooks* abs) {
	string name;
	cout << "请输入联系人姓名" << endl;
	cin >> name;
	int result = scanPerson(abs, name);
	if (result != -1) {
		cout << endl;
		cout << "姓名:" << abs->personArr[result].name << "t";
		cout << "性别:" << (abs->personArr[result].sex == 1 ? "男" : "女") << "t"; //三目运算符判断男女
		cout << "年龄:" << abs->personArr[result].age << "t";
		cout << "电话:" << abs->personArr[result].phoneNumber << "t";
		cout << "地址:" << abs->personArr[result].address << "t";
		cout << endl;
	}
	else {
		cout << "查无此人 ^-^ 按任意键返回菜单" << endl;
	}
	system("pause"); //按任意键继续
	system("cls"); //清屏
}

void modifyPerson(addressbooks* abs) {
	string name;
	cout << "请输入联系人姓名" << endl;
	cin >> name;
	int result = scanPerson(abs, name);
	if (result != -1) {
		string name;
		cout << "请输入姓名:" << endl;
		cin >> name;
		abs->personArr[result].name = name;

		short sex;
		cout << "请输入性别(男1女2):" << endl;
		while (1) {
			cin >> sex;
			if (sex == 1 || sex == 2) { //防输错装置
				abs->personArr[result].sex = sex;
				break;
			}
			cout << "请输入1或2:" << endl;
		}

		short age;
		cout << "请输入年龄:" << endl;
		while (1) {
			cin >> age;
			if (age >= 0 && age <= 150) {
				abs->personArr[result].age = age;
				break;
			}
			cout << "请输入正确年龄:" << endl;
		}

		string phoneNumber;
		cout << "请输入电话:" << endl;
		cin >> phoneNumber;
		abs->personArr[result].phoneNumber = phoneNumber;

		string address;
		cout << "请输入地址:" << endl;
		cin >> address;
		abs->personArr[result].address = address;

		cout << "修改成功 ^-^ 按任意键返回菜单" << endl;
	}
	else {
		cout << "查无此人 ^-^ 按任意键返回菜单" << endl;
	}
	system("pause"); //按任意键继续
	system("cls"); //清屏
}

void clearPerson(addressbooks* abs) {
	abs->num = 0;
	cout << "通讯录已清空 ^-^ 按任意键返回菜单" < 

 main.cpp
#include
#include
#include"choices.h"
using namespace std;
#define max 1000 //宏常量定义最大人数
//有人想白嫖??

struct person { //人员结构体
	string name;
	short sex; //1男2女
	short age;
	string phoneNumber;
	string address;
};

struct addressbooks { //通讯录结构体
	struct person personArr[max];
	int num; //当前通讯录人数
};


int main() {
	//struct addressbooks;
	addressbooks abs; //c++自上而下编译,故struct须放在main前,否则报错
	abs.num = 0;

	while (1) {
		showMenu();

		int select = 0;
		cin >> select;
		switch (select) {
		case 1: //1、添加联系人
			addPerson(&abs); //指针修饰实参
			break;
		case 2: //2、显示联系人
			showPerson(&abs);
			break;
		case 3: //3、删除联系人
			deletePerson(&abs);
			break;
		case 4:  //4、查找联系人
			findPerson(&abs);
			break;
		case 5: //5、修改联系人
			modifyPerson(&abs);
			break;
		case 6: //6、清空联系人
			clearPerson(&abs);
			break;
		case 0: //0、退出通讯录
			quitMenu();
			return 0;
			break;
		default:
			break;

		}
	}
	system("pause"); 
	return 0;
}

运行结果示例 

 

 以后学了更多知识还会回来更新的!有误之处恳请大佬们指正,提前感谢!(这次应该没有误了 ^-^)

 

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997972.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号