最多存储1000人

#include<iostream>
using namespace std;
//添加联系人(姓名,性别,年龄)
//显示联系人
//删除联系人:按照姓名删
//查找联系人:按照名字查
//修改联系人:按照名字修改
//清空联系人:清空全部
//退出通讯录:退出
struct people {string name;string sex;int age;
};
void add(people arr[],int i) {cout<<"请输入姓名:" << endl;cin >> arr[i].name;cout << "请输入性别:" << endl;cin >> arr[i].sex;cout << "请输入年龄:" << endl;cin >> arr[i].age;
}
void show(people arr[],  int i) {for (int j = 0; j < i; j++) {cout<<"姓名:" << arr[j].name << "\t性别:" << arr[j].sex << "\t年龄:" << arr[j].age << endl;}
}
int flag=-1;
void delet(people arr[], int * i) {cout<<"输入删除人的姓名:" << endl;string name;cin >> name;for (int j = 0; j < *i; j++) {if (name == arr[j].name) {flag = 1;for (int m = j; m < *i-1; m++) {arr[m] = arr[m + 1];}*i=*i-1;cout << "删除成功!!!" << endl;break;}}if (flag == -1) {cout << "查无此人!" << endl;}flag = -1;
}void find(people arr[], int i) {cout<<"输入要查找的姓名:" << endl;string tmp;cin >> tmp;for (int j = 0; j < i; j++) {if (tmp == arr[j].name) {cout << "姓名:" << arr[j].name << "\t性别:" << arr[j].sex << "\t年龄:" << arr[j].age << endl;cout << "查找成功!!!" << endl;flag = 1;break;}}if (flag == -1) {cout << "查无此人!" << endl;}flag = -1;
}
void update(people arr[], int i) {cout << "输入要修改的人的姓名:" << endl;string tmp;cin >> tmp;for (int j = 0; j < i; j++) {if (tmp == arr[j].name) {cout << "姓名:" << arr[j].name << "\t性别:" << arr[j].sex << "\t年龄:" << arr[j].age << endl;cout<< "姓名:" <<endl;string name;cin >> name;arr[j].name = name;cout << "性别:" << endl;string sex;cin >> sex;arr[j].sex = sex;cout << "年龄:" << endl;int age;cin >> age;arr[j].age = age;cout<<"修改成功!" << endl;cout << "姓名:" << arr[j].name << "\t性别:" << arr[j].sex << "\t年龄:" << arr[j].age << endl;flag = 1;break;}}if (flag == -1) {cout << "查无此人!" << endl;}flag = -1;
}
void trun(people arr[], int * i) {*i = 0;cout<<"清空成功" << endl;
}
int main() {people arr[1000];//最多存储1000人int i=0;while (true) {cout << "1《添加联系人》" << endl;cout << "2《显示联系人》" << endl;cout << "3《删除联系人》" << endl;cout << "4《查找联系人》" << endl;cout << "5《修改联系人》" << endl;cout << "6《清空联系人》" << endl;cout << "7《退出通讯录》" << endl;cout << "您要做的操作是:" << endl;int choise;cin>>choise;switch (choise){case 1:cout << "1《添加联系人》" << endl;add(arr,i);cout << "添加成功!!!" << endl;i++;system("pause");//按任意键继续system("cls");//清屏break;case 2:cout << "2《显示联系人》" << endl;show(arr,i);cout << "显示成功!!!" << endl;system("pause");system("cls");break;case 3:cout << "3《删除联系人》" << endl;delet(arr, &i);system("pause");system("cls");break;case 4:cout << "4《查找联系人》" << endl;find(arr, i);system("pause");system("cls");break;case 5:cout << "5《修改联系人》" << endl;update(arr, i);system("pause");system("cls");break;case 6:cout << "6《清空联系人》" << endl;trun(arr, &i);system("pause");system("cls");break;case 7:cout<< "7《退出通讯录》" << endl;cout<<"退出成功!!!" << endl;return false;default:cout << "输入错误!!!" << endl;system("pause");system("cls");break;}}system("pause");return 0;}

c++通讯录管理系统(函数,指针,结构体)相关推荐

  1. c语言中结构体类型定义的函数指针,结构体中定义函数指针

    结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...

  2. C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例

    C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...

  3. 【C 语言】结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )

    文章目录 一.结构体作为函数参数 二.结构体指针作为函数参数 三.完整代码示例 一.结构体作为函数参数 结构体变量 作为函数形参 , 在函数中 , 只能访问 该函数形参 , 无法修改 结构体内存 的值 ...

  4. C语言经典例71-编写函数输出结构体数据

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 编写input()和output()函数输入,输出5个学生的数据记录. 2 分析 定义结构体,声明结构体数组,再编写函数传入结构体数组指针到 ...

  5. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

  6. 通过宏函数计算结构体成员偏移量

      编译器在为结构体成员分配内存时,由于存在内存对齐机制,各个成员所占空间可能不是连续的,因而不能简单的通过成员类型所占的字长来推断其它成员或结构体对象的地址.   获得结构体成员偏移量的方法可以参照 ...

  7. 更易上手的C语言入门级芝士 (3) 常见关键字+define+指针+结构体(超详细)

       目录 1.常见关键字 1.auto,break 2.switch,case,default,break 3.char,int等类型关键字 4.const 5.continue 6.extern ...

  8. C++函数(三)------函数与结构体

    ------------------------函数与结构体--------------------------------- 1.结构体复习 关于结构体,我以前有对结构体做过基础的讲解. 我们可以使 ...

  9. 【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习

    Go从0到入门6-Go完结篇 前言 Q1:函数-数字的阶乘 Q2:函数-绝对值 Q3:函数-加减乘除 Q4:结构体-学生信息1 Q5:结构体-学生信息2 Q6:接口-动物和老虎 Q7:错误-网络延迟 ...

  10. 使用qsort函数实现结构体

    #include<stdo.h> #include<stdlib.h> //库里面的qsort()函数 //解释: //void qsort(void* base, //bas ...

最新文章

  1. hung-yi lee_p5-7_Gradient Descent(梯度下降)
  2. typedef、setw()
  3. python之生成随机密码
  4. MySQL: load data infile 需要注意的点
  5. PHP stripos strpos,strpos()和stripos()函数的区别
  6. 如何通俗的理解KKT条件
  7. thinkphp框架起步认识
  8. [Hands On ML] 8. 降维
  9. 湖南工业大学在线计算机作业答案,湖南工业大学《计算机组成原理》试题集,共7份,有部分答案...
  10. 【蓝桥杯嵌入式】【STM32】7_RTC之实时时间显示和硬件闹钟设置
  11. 自动拷贝远程服务器文件夹,怎么从远程服务器上拷贝文件夹
  12. 远程桌面管理工具源码
  13. Ubuntu安装微软Onedrive教程
  14. 如何删除word中的长横线(由三个减号---自动生成)
  15. 开放 API 接口安全设计思路
  16. [论文阅读] 颜色迁移-梯度保护颜色迁移
  17. 1079 密码(二进制常识)
  18. 想请问各位大佬一个关于生产者消费者的多进程问题
  19. aws ec2 linux 密码,AWS EC2实例Ubuntu系统设置root用户密码并使用root/ubuntu用户登录
  20. html5画布绘制微信logo,HTML5新特性之用SVG绘制微信logo

热门文章

  1. 机器人无限火力无限e符文_2021LOL无限火力机器人天赋符文、出装推荐-无限火力机器人玩法介绍-色彩电竞...
  2. python独立样本t检验 图_SPSS实操两个独立样本均数比较的t检验
  3. echarts 3d
  4. Zabbix启动失败,提示Zabbix-agent.servic never wrote its PID file,failing
  5. Failing package is: mysql-community-client-5.7.38-1.el7.x86_64 GPG Keys are configured as: file://
  6. mysql数据库默认密码在哪看_怎么查看mysql数据库的登录名和密码
  7. 当“长期主义”遇上“流量生意”,轻松筹与水滴筹谁更胜一筹?
  8. 谷歌浏览器Chrome通过命令截图整个网页,screen,通过插件生成gif图片,以及通过插件进行录屏
  9. 未睹棺椁先哭君——谷歌墓志铭
  10. EasyExcel 动态表头 + 数据单元格合并