头文件
#pragma once
#include<iostream>
using namespace std;
#define MAX 20
#include<stdlib.h>
#include<string>
typedef struct p//每个人的详情
{
char name[20];
int age;
}p;
typedef struct d
{
p pp[MAX];//创建 20人
int i;//所含有的人数
}d;
//选择页面
void xuanze()
{
cout << "╔══════════════════════╗" << endl;
cout << "║════ 通讯录 ════║" << endl;
cout << "║═══ ═══║" << endl;
cout << "║═══ 1.新建 2.输出 ═══║" << endl;
cout << "║═══ 3.删除 4.寻找 ═══║" << endl;
cout << "║═══ 5.修改 6.清除 ═══║" << endl;
cout << "║═══ 0.退出 ═══║" << endl;
cout << "║═══ ═══║" << endl;
cout << "╚══════════════════════╝" << endl;
}
//1.添加
void input(d *abs)
{
if (abs->i > MAX)
{
cout << "输入已满" << endl;
return;
}
cout << "请输入姓名,年龄" << endl;
cin >> abs->pp[abs->i].name >> abs->pp[abs->i].age;
cout << endl << "输入成功" << endl;
(abs->i++);//下一个人
}
//2.输出
void output(d* abs)
{
if (abs->i == 0)
{
cout << "当前没有数据\n";
}
for (int j = 0; j < abs->i; j++)
{
cout << "姓名为:" << abs->pp[j].name << "\t年龄为:" << abs->pp[j].age << endl;
}
}
//3.删除联系人
void dele(d* abs)
{
if (abs->i == 0)
{
cout << "当前没有数据\n";
return;
}
cout << "请输入要删除人的姓名\n";
char name[20];
cin >> name;
for (int i = 0;i < abs->i;i++)
{
if (!(strcmp(name, abs->pp[i].name)))
{
for (int j = i; j < abs->i;j++)
{
abs->pp[i] = abs->pp[i+1];
}
cout << "删除成功\n";
while (i == abs->i)
{
abs->pp[i] = { 0 };
}
(abs->i)--;
}
else
{
cout << "没有该人员\n" << endl;
}
}
}
//4,寻找
void find(d* abs)
{
cout << "请输入要查找的人名";
char name[20];
cin >> name;
for (int k = 0; k < abs->i; k++)
{
if (!(strcmp(name, abs->pp[k].name)))//找到为1
{
cout << "姓名为" << abs->pp[k].name << " 年龄为" << abs->pp[k].age;
}
else
cout <<"查无此人";
}
}
//5,修改
void change(d* abs)
{
cout << "请输入要修改的人名";
char name[20];
cin >> name;
for (int k = 0; k < abs->i; k++)
{
if (!(strcmp(name, abs->pp[k].name)))//找到为1
{
cout << "姓名为" << abs->pp[k].name << " 年龄为" << abs->pp[k].age << endl;
cout << "请输入更改的姓名,年龄" << endl;
cin >> abs->pp[k].name >> abs->pp[k].age;
}
else
{
cout << "查无此人是否添加? 1/0" << endl;
int z = 0;
cin >> z;
switch (z)
{
case 1:
input(abs);
break;
default:
break;
}
}
}
}
//6.清除
void clean(d* abs)
{
cout << "是否清空? 1/0" << endl;
int a = 0;
cin >> a;
if (a == 1)
{
abs->i = 0;
cout << "清空成功\n" << endl;
}
else
cout<<"未被清空"<<endl;
}
函数体
#include<iostream>
using namespace std;
#pragma once
#include"ac.h"
//主函数
int main()
{
//创建与初始化
d data;
data.i = 0;
//选择界面
int a = 0;
do{
xuanze();
cin >> a;
switch (a)
{
case 1://创建
input(&data);
break;
case 2:
output(&data);
break;
case 3:
dele(&data);
break;
case 4:
find(&data);
break;
case 5:
change(&data);
break;
case 6:
clean(&data);
break;
default:
cout << "重新选择" << endl;
break;
}
cout << endl << endl;
} while (a);
return 0;
}