开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情
前言
此篇在b站黑马程序员c++的课程学习中所创作,为第一阶段总结,即通讯录管理系统的建立
所用知识点皆为c++基础部分
基本框架:
- 联系人信息结构体 struct person{};
- 通讯录信息结构体 struct book{};
- 查找联系人是否存在 int isexit(book* abs, string NAME)
- 添加联系人 void addperson(book *abs);
- 显示联系人 void putperson(book* abs);
- 删除联系人 void delperson(book* abs);
- 查找联系人 void findperson(book* abs);
- 修改联系人 void changeperson(book* abs);
- 清空通讯录 void emptyperson(book* abs);
- 主函数 void main();
实现功能
1、删除联系人
后面数据覆盖前面数据,实现删除通讯录的效果
abs->per[i] = abs->per[i + 1];
2、每次运行完项目时清屏,防止页面过于杂乱
system("pause");
system("cls"); //清屏
3、查找联系人是否存在,存在输出在通讯录数组中的位置,不存在则返回-1,方便快速确定数据位置,以实现删除,查找,修改等功能
int isexit(book* abs, string NAME) //查找是否存在,存在返回下标,不存在返回-1
{
for (int i = 0; i < abs->size; i++) {
if (NAME == abs->per[i].name) {
return i; //找到后返回位置
}
}
return -1; //未找到
}
4、为了使程序运行时能改变实参变量,全程需要使用指针传递实参
代码奉上
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
struct person //联系人信息
{
string name;
string sex;
int age=0;
string phone;
string stress;
};
struct book //通讯录信息
{
struct person per[MAX]; //通讯录容量
int size=0; //目前有多少人
};
int isexit(book* abs, string NAME) //查找是否存在,存在返回下标,不存在返回-1
{
for (int i = 0; i < abs->size; i++) {
if (NAME == abs->per[i].name) {
return i; //找到后返回位置
}
}
return -1; //未找到
}
void addperson(book *abs) //1、添加联系人
{
if (abs->size == MAX) {
cout << "通讯录已满" << endl;
return;
}
else {
cout << "请输入您要添加的姓名:" << endl;
cin >> abs->per[abs->size].name;
cout << "请输入您要添加的性别:" << endl;
cin >> abs->per[abs->size].sex;
cout << "请输入您要添加的年龄:" << endl;
cin >> abs->per[abs->size].age;
cout << "请输入您要添加的电话号码:" << endl;
cin >> abs->per[abs->size].phone;
cout << "请输入您要添加的家庭住址:" << endl;
cin >> abs->per[abs->size].stress;
cout << "添加成功" << endl;
abs->size++;
system("pause");
system("cls"); //清屏
}
}
void putperson(book* abs) //2、显示联系人
{
if (abs->size == 0)
{
cout << "当前记录为空" << endl;
}
else {
for (int i = 0; i < abs->size; i++) {
cout << "姓名:" << abs->per[i].name << "\t";
cout << "性别:" << abs->per[i].sex << "\t";
cout << "年龄:" << abs->per[i].age << "\t";
cout << "电话号码:" << abs->per[i].phone << "\t";
cout << "家庭住址:" << abs->per[i].stress << endl;
}
}
system("pause");
system("cls"); //清屏
}
void delperson(book* abs) //3、删除联系人
{
cout << "请输入删除对象的姓名:" << endl;
string NAME;
cin >> NAME;
int n = isexit(abs, NAME);
if (n != -1) {
for (int i = n; i < abs->size; i++) {
abs->per[i] = abs->per[i + 1]; //后一条数据覆盖前一条
}
abs->size--;
cout << "删除成功" << endl;
}
else
cout << "查无此人" << endl;
system("pause");
system("cls");
}
void findperson(book* abs) //4、查找联系人
{
cout << "请输入您要查找的姓名:" << endl;
string NAME;
cin >> NAME;
int n = isexit(abs, NAME);
if (n != -1) {
cout << abs->per[n].name << "\t";
cout << abs->per[n].sex << "\t";
cout << abs->per[n].age << "\t";
cout << abs->per[n].phone << "\t";
cout << abs->per[n].stress << endl;
}
else {
cout << "查无此人" << endl;
}
system("pause");
system("cls");
}
void changeperson(book* abs) //5、修改联系人
{
cout << "请输入修改对象的姓名:" << endl;
string NAME;
cin >> NAME;
int n = isexit(abs, NAME);
if (n != -1) {
cout << "请输入您要修改的姓名:" << endl;
cin >> abs->per[n].name;
cout << "请输入您要修改的性别:" << endl;
cin >> abs->per[n].sex;
cout << "请输入您要修改的年龄:" << endl;
cin >> abs->per[n].age;
cout << "请输入您要修改的电话号码:" << endl;
cin >> abs->per[n].phone;
cout << "请输入您要修改的家庭住址:" << endl;
cin >> abs->per[n].stress;
cout << "修改成功" << endl;
}
else {
cout << "查无此人" << endl;
}
system("pause");
system("cls");
}
void emptyperson(book* abs) //6、清空联系人
{
cout << "是否确认清空通讯录" << endl;
cout << "是 否" << endl;
string ddd;
cin >> ddd;
if (ddd == "是")
{
abs->size = 0;
}
cout << "清空成功" << endl;
system("pause");
system("cls");
}
void menu()
{
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;
}
int main()
{
struct book abs;
abs.size = 0;
while (100) {
menu();
int select;
cin >> select;
switch (select)
{
case 1:
addperson(&abs);
break;
case 2:
putperson(&abs);
break;
case 3:
delperson(&abs);
break;
case 4:
findperson(&abs);
break;
case 5:
changeperson(&abs);
break;
case 6:
emptyperson(&abs);
break;
case 0: {
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
}
default:
break;
}
}
system("pause");
return 0;
}