c++通讯录控制台小程序
2023-09-14 09:14:34 时间
#include <iostream>
#include <string>
using namespace std;
#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;
}
// 联系人结构体
struct Person
{
string m_Name;
int m_sex;
int m_age;
string m_Phone;
string m_Addr;
};
// 通讯录的结构体
struct Addressbooks
{
// 能存多少个人
struct Person personArray[Max];
// 当前个数
int m_Size;
};
// 添加联系人
void addPerson(Addressbooks *abs)
{
// 判断通讯录满了吗
if (abs->m_Size==Max)
{
cout<<"通讯录满了"<<endl;
return;
}
else
{
// 添加具体联系人
// 姓名
cout<<"请输入姓名"<<endl;
string name;
cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
// 性别
int sex=0;
while (true)
{
cout<<"请输入性别"<<endl;
cout<<"1-------男"<<endl;
cout<<"2-------女"<<endl;
cin>>sex;
if (sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_sex=sex;
break;
}
else
{
cout<<"输入错误重新输入"<<endl;
}
}
// 年龄
int age=0;
cout<<"请输入年龄"<<endl;
cin>>age;
abs->personArray[abs->m_Size].m_age=age;
// 电话
string phone;
cout<<"请输入电话"<<endl;
cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
// 住址
string addr;
cout<<"请输入地址"<<endl;
cin>>addr;
abs->personArray[abs->m_Size].m_Addr=addr;
abs->m_Size++;
cout<<"添加成功了"<<endl;
system("pause");
system("cls");
}
}
// 显示联系人
void showPerson(Addressbooks *abs)
{
// 判断通讯录是否为0
if (abs->m_Size==0)
{
cout<<"当前记录为空"<<endl;
}
else
{
for (int i = 0; i <abs->m_Size; i++)
{
cout<<"姓名"<<abs->personArray[i].m_Name<<endl;
cout<<"年龄"<<abs->personArray[i].m_age<<endl;
cout<<"性别"<<abs->personArray[i].m_sex<<endl;
cout<<"电话"<<abs->personArray[i].m_Phone<<endl;
cout<<"地址"<<abs->personArray[i].m_Addr<<endl;
}
}
system("pause");
system("cls");
}
// 是不是存在
int isExist(Addressbooks *abs,string name)
{
// 检测是不是存在
for (int i = 0; i <abs->m_Size; i++)
{
if (abs->personArray[i].m_Name==name)
{
return i ;
}
}
return -1;
}
// 删除联系人
void deletePerson(Addressbooks *abs)
{
cout<<"请输入要删除的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if (ret!=-1)
{
// 前移删除数据
for (int i=ret;i<abs->m_Size;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_Size--;
cout<<"删除成功"<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
// 查找联系人
void findPerson(Addressbooks *abs)
{
//
string name;
cout<<"请输入要查的联系人"<<endl;
cin>>name;
int ret=isExist(abs,name);
if (ret!=-1)
{
cout<<"姓名 "<<abs->personArray[ret].m_Name<<endl;
cout<<"年龄 "<<abs->personArray[ret].m_age<<endl;
cout<<"性别 "<<abs->personArray[ret].m_sex<<endl;
cout<<"电话 "<<abs->personArray[ret].m_Phone<<endl;
cout<<"地址 "<<abs->personArray[ret].m_Addr<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
// 修改指定联系人信息
void modifyPerson(Addressbooks *abs)
{
string name;
cout<<"请输入修改的联系人"<<endl;
cin>>name;
int ret=isExist(abs,name);
if (ret!=-1)
{
// 添加具体联系人
// 姓名
cout<<"请输入姓名"<<endl;
string name;
cin>>name;
abs->personArray[ret].m_Name=name;
// 性别
int sex=0;
while (true)
{
cout<<"请输入性别"<<endl;
cout<<"1-------男"<<endl;
cout<<"2-------女"<<endl;
cin>>sex;
if (sex==1||sex==2)
{
abs->personArray[ret].m_sex=sex;
break;
}
else
{
cout<<"输入错误重新输入"<<endl;
}
}
// 年龄
int age=0;
cout<<"请输入年龄"<<endl;
cin>>age;
abs->personArray[ret].m_age=age;
// 电话
string phone;
cout<<"请输入电话"<<endl;
cin>>phone;
abs->personArray[ret].m_Phone=phone;
// 住址
string addr;
cout<<"请输入地址"<<endl;
cin>>addr;
abs->personArray[ret].m_Addr=addr;
cout<<"修改成功了"<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
// 清空
void cleanPerson(Addressbooks *abs)
{
abs->m_Size=0;
cout<<"清空成功"<<endl;
system("pause");
system("cls");
}
int main()
{
// 创建结构体
Addressbooks abs;
abs.m_Size=0;
while (true)
{
int select =0;
//显示菜单
showMenu();
cin>>select;
// cout<<select<<endl;
switch(select)
{
case 1:
/* 添加联系人*/
addPerson(&abs);
break;
case 2:
/* 显示联系人 */
showPerson(&abs);
break;
case 3:
/* 删除联系人 */
deletePerson(&abs);
break;
case 4:
/* 查找联系人 */
findPerson(&abs);
break;
case 5:
/* 修改联系人 */
modifyPerson(&abs);
break;
case 6:
/* 清空联系人 */
cleanPerson(&abs);
break;
case 0:
/* 退出 */
cout<<"欢迎下次使用"<<endl;
system("pause") ;
return 0;
break;
default:
break;
}
}
system("pause") ;
return 0;
}
相关文章
- C++学习——CString,char * ,string的相互转换
- EasyC++01,从C++示例程序说起
- 差分数组C++「建议收藏」
- c++关机程序
- c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法「建议收藏」
- c++中cstring头文件_C语言中头文件的来源
- C++ vector初始化_vector初始化大小
- C++结构体和类的区别_c++有结构体吗
- C++字符串加密_c++字符串连接函数
- C++基础入门丨7. 指针——一文搞懂指针
- c++的链表-C++实现简单链表
- C/C++ 打开外部程序
- C++基础——C++面向对象之数据封装、数据抽象与接口基础总结
- 【C++】类和对象 (上篇)
- C/C++/Java 程序计时功能函数详解编程语言
- C++命名空间详解编程语言
- C++ nth_element(STL nth_element)排序算法详解
- C++命名空间在多文件编程中的具体用法
- 在什么情况下,Java比C++慢很多?
- 使用C和MySQL创建强大的程序函数(c++ mysql 函数)
- C++获取zip文件列表方法
- 深入C++中API的问题详解
- Android模拟器(JAVA)与C++socket通讯分享
- 探讨:C++中函数返回引用的注意事项
- C++中函数的默认参数详细解析
- C++内核对象封装单实例启动程序的类
- C++基于对话框的程序的框架实例
- VC++实现通过API来查看程序错误信息的方法
- 深入理解C++中public、protected及private用法
- C++编译器无法捕捉到的8种错误实例分析