首页 > 编程语言 >C++基础入门通讯录管理系统

C++基础入门通讯录管理系统

时间:2022-11-01 17:07:23浏览次数:36  
标签:index return cout 管理系统 addressbooks C++ 通讯录 personArray size


记录代码

#pragma once
#include<iostream>
#include<string>
#define Size 100
#define OK 1
#define Error -1
using namespace std;
// 结构体,通讯录人
struct Person
{
// 名字
string m_Name;
// 性别 1男 2 女
int m_Sex;
// 年龄
int m_Age;
// 电话
string m_Phone;
// 地址
string m_Addr;
};
// 通讯录
struct AddressBooks
{
struct Person personArray[Size];
// 通讯录个数
int m_size;
};
// 显示界面
void showMenu() {

cout << "*******************************************" << endl;
cout << "************** 1.0 添加联系人 *************" << endl;
cout << "************** 2.0 显示联系人 *************" << endl;
cout << "************** 3.0 删除联系人 *************" << endl;
cout << "************** 4.0 查找联系人 *************" << endl;
cout << "************** 5.0 修改联系人 *************" << endl;
cout << "************** 6.0 清空联系人 *************" << endl;
cout << "************** 0.0 退出通讯录 *************" << endl;
cout << "*******************************************" << endl;
}
// 添加联系人
void addPerson(AddressBooks* addressBooks) {
// 判断通讯录慢了没
if (addressBooks->m_size == Size) {
cout << "通讯录已满,无法添加!" << endl;
return;
}
else {
// 名字
// 性别 1 男 2 女
// 年龄
// 电话
// 地址
string name;
cout << "请输入姓名:" << endl;
cin >> name;
addressBooks->personArray[addressBooks->m_size].m_Name = name;
int sex;
cout << "请输入性别(数字) 1: 男 2: 女:" << endl;
cin >> sex;
addressBooks->personArray[addressBooks->m_size].m_Sex = sex;
int age;
cout << "请输入年龄:" << endl;
cin >> age;
addressBooks->personArray[addressBooks->m_size].m_Age = age;
string phone;
cout << "请输入电话:" << endl;
cin >> phone;
addressBooks->personArray[addressBooks->m_size].m_Phone = phone;
string address;
cout << "请输入地址:" << endl;
cin >> address;
addressBooks->personArray[addressBooks->m_size].m_Addr = address;
cout << "添加成功!" << endl;
addressBooks->m_size++;
}
}
// 显示联系人
void showPerson(AddressBooks addressbooks) {
if (addressbooks.m_size == 0) {
cout << "通讯录为空!" << endl;
return;
}
else {
cout << "查询成功,记录如下:" << endl;
for (size_t i = 0; i < addressbooks.m_size; i++)
{
string sex = addressbooks.personArray[i].m_Sex == 1 ? "男" : "女";
cout << "\t姓名:" << addressbooks.personArray[i].m_Name
<< "\t性别:" << sex
<< "\t年龄:" << addressbooks.personArray[i].m_Age
<< "\t电话" << addressbooks.personArray[i].m_Phone
<< "\t地址" << addressbooks.personArray[i].m_Addr << endl;
}
return;
}
}
// 名字是否存在,返回下标
size_t nameIsExistBooks(const AddressBooks *addressbooks, string name) {
size_t temp;
if (addressbooks->m_size == 0) {
cout << "通讯录为空" << endl;
return -1;
}
else
{
for (size_t i = 0; i < addressbooks->m_size; i++)
{
if (addressbooks->personArray[i].m_Name == name) {
temp = i;
// 返回下标索引
return temp;
}
}
return -1;
}
}
// 电话是否存在 返回下标
size_t phoneIsExistBooks(AddressBooks *addressbooks, string phone) {
size_t temp;
if (addressbooks->m_size == 0) {
cout << "通讯录为空" << endl;
return -1;
}
else
{
for (size_t i = 0; i < addressbooks->m_size; i++)
{
if (addressbooks->personArray[i].m_Name == phone) {
temp = i;
// 返回下标索引
return temp;
}
}
return -1;
}
}
// 是否为空
bool isNullBooks(AddressBooks *addressbooks) {
return addressbooks->m_size == 0;
}
int deletePerson(AddressBooks *addressbooks)
{
string name, phone;
int select;
int end = addressbooks->m_size;
cout << "请输入选项:按照名字删除(1),按照电话删除(2):" << endl;
cin>>select;
if (select == 1) {
// 名字删除
cout << "请输入名字:" << endl;
cin >> name;
size_t index = nameIsExistBooks(addressbooks, name);
if (index < 0)
{
cout << "查无此人!" << endl;
return Error;
}
else
{
for (size_t i = index; i<end; i++)
{
addressbooks->personArray[i] = addressbooks->personArray[i + 1];
addressbooks->m_size--;
cout << "删除成功!" << endl;
return OK;
}
}
}
else if (select == 2) {
// 电话删除
cout << "请输入电话:" << endl;
cin >> name;
size_t index = nameIsExistBooks(addressbooks, phone);
if (index < 0)
{
cout << "查无此人!" << endl;
return Error;
}
else
{
for (size_t i = index; i < end; i++)
{
addressbooks->personArray[i] = addressbooks->personArray[i + 1];
addressbooks->m_size--;
cout << "删除成功!" << endl;
return OK;
}
}
}
else {
// 其他选项
cout << "操作失误!删除失败!" << endl;
return Error;
}
return OK;
}
void findPerson(const AddressBooks *addressbooks){
cout << "请输入你需要寻找的联系人:" << endl;
string name;
cin >> name;
size_t index = nameIsExistBooks(addressbooks, name);
if (index < 0) {
cout << "通讯录无此人,告辞了你呐!" << endl;
}
else
{
string sex = addressbooks->personArray[index].m_Sex == 1 ? "男" : "女";
cout << "\t姓名:" << addressbooks->personArray[index].m_Name
<< "\t性别:" << sex
<< "\t年龄:" << addressbooks->personArray[index].m_Age
<< "\t电话" << addressbooks->personArray[index].m_Phone
<< "\t地址" << addressbooks->personArray[index].m_Addr << endl;
}
}
void modifyPerson(AddressBooks* addressbooks) {
cout << "请输入当前你需要修改的联系人姓名:" << endl;
string name;
cin >> name;
size_t index = nameIsExistBooks(addressbooks, name);
if (index < 0) {
cout << "通讯录无此人,告辞了你呐!" << endl;
}
else
{
string name1;
cout << "请输入姓名:" << endl;
cin >> name1;
addressbooks->personArray[index].m_Name = name1;
int sex;
cout << "请输入性别(数字) 1: 男 2: 女:" << endl;
cin >> sex;
addressbooks->personArray[index].m_Sex = sex;
int age;
cout << "请输入年龄:" << endl;
cin >> age;
addressbooks->personArray[index].m_Age = age;
string phone;
cout << "请输入电话:" << endl;
cin >> phone;
addressbooks->personArray[index].m_Phone = phone;
string address;
cout << "请输入地址:" << endl;
cin >> address;
addressbooks->personArray[index].m_Addr = address;
cout << "修改成功!" << endl;
return;
}
}
size_t clearPerson(AddressBooks* addressbooks) {
if (addressbooks == NULL) {
cout << "通讯录出现异常" << endl;
return Error;
}
else
{
addressbooks->m_size = 0;
cout << "修改成功";
return OK;
}

}
#include "mobilePerson.h"
using namespace std;
int main()
{
int select = 0;
AddressBooks abc;
// 初始化
abc.m_size = 0;

while (true) {
showMenu();
cout << "请输入你的选项:";
cin >> select;
switch (select)
{
case 1:
//添加
addPerson(&abc);
break;
case 2:
//显示
showPerson(abc);
break;
case 3:
// 删除
deletePerson(&abc);
break;
case 4:
// 查找
findPerson(&abc);
break;
case 5:
// 修改
modifyPerson(&abc);
break;
case 6:
// 清空
clearPerson(&abc);
break;
case 0:
// 退出通讯录
cout << "欢迎使用,再见" << endl;
exit(0);
break;
default:
break;
}
system("pause");
// system("cls");

}
return 0;
}

做了个初始版本,没使用面向对象的内容,之后可以考虑使用一下面向对象。

  • 可以考虑一下持久化存储
  • 可以添加面向对象
  • 可以添加权限管理
  • 添加进一步的验证


标签:index,return,cout,管理系统,addressbooks,C++,通讯录,personArray,size
From: https://blog.51cto.com/u_13859040/5814480

相关文章

  • C++从入门到精通——C++面对对象
    面向对象基础#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingnamespacestd;#include<string>//设计一个类,求圆的周长constdoublePI=3.14;//class+类名//......
  • c++从入门到精通——基本入门
    C++-1.helloWorld#include<iostream>usingnamespacestd;intmain(){cout<<"helloworld!"<<endl;system("pause");returnEXIT_SUCCESS;}双冒号作用域#inclu......
  • Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置
    转载来自:Server=https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64Windows下MSYS2环境配置和MinGW-w64C++环境配置1、简介本文主要是Windows下MSYS2......
  • 校园社团活动管理系统
    1、项目需求:校园社团作为高校课外活动的重要组成部分,发展十分迅速,也受到越来越多学生的欢迎,社团规模、数量等都在日益增长,社团活动也更为多样和丰富。然而,大多数高校还没......
  • 郁金香 中级班 2.c++的基类和派生类
        生物是基类老虎是派生类派生类继承了基类的成员和成员函数同时this指针指向的是这个对象所开辟的那个地址......
  • c++ 模板 指针类型偏特化
    一步步来,先简单点.目标:我们要实现一个模板类,例化后,可以通过get_val获取到值,通过get_ptr获取到指针.具体什么意思结合例子来看看吧.例子:structA{intdata;......
  • 黑马程序员C++
    C++基础入门1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目​ VisualStudio是我们用来编写C++......
  • C++ 中的 auto的用法
    auto的原理就是根据后面的值,来自己推测前面的类型是什么。auto的作用就是为了简化变量初始化,如果这个变量有一个很长很长的初始化类型,就可以用auto代替。1.用auto声明的......
  • C++中string跨DLL失败解决途径
    1、问题描述:在一个MFC应用程序exe中,调用另一个DLL中的函数,函数中的一个形参是string类型的,每次调用都会出现乱码的情况,并且会崩溃。调用前:调用后: 2、原因分析: ......
  • C++:21---仿函数
    什么是仿函数所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。因此,这里需要明确两点:1仿函数不是函数,它是个类;2仿函数重载了()运算符,使得它的对......