编写通讯录管理程序c++

定义一个friend类,包括姓名、性别、年龄、电话、邮箱、QQ、单位等属性和对这些属性的操作函数,再定义通讯录类,实现通讯录列表、查询、修改、添加、删除、保存、退出等功能

#define _CRT_SECURE_NO_WARNINGS

//引入contact.h头文件
#include"contact.h"

//初始化通讯录
void InitContact(Console* pc)
{
    assert(pc);
    memset(pc->date, 0, sizeof(pc->date));
    pc->sz = 0;
}

//增加信息
void AddContact(Console* pc)
{
    assert(pc);
    if (pc->sz == Per_Max)
    {
        printf("通讯录人员已满!\n");
        return;
    }
    printf("请输入姓名:>");
    scanf("%s", pc->date[pc->sz].name);
    printf("请输入年龄:>");
    scanf("%d", &(pc->date[pc->sz].age));
    printf("请输入性别:>");
    scanf("%s", pc->date[pc->sz].sex);
    printf("请输入地址:>");
    scanf("%s", pc->date[pc->sz].addr);
    printf("请输入电话:>");
    scanf("%d", &(pc->date[pc->sz].tele));

    pc->sz++;
}


//删除信息
void DeleContact(Console* pc)
{
    assert(pc);
    char key[Name_Max] = {0};
    int i = 0;
    int pos = 0;
    if (pc->sz == 0)
    {
        printf("通讯录里面还没有记录!\n");
        return;
    }
    printf("请输入此人的姓名:>");
    scanf("%s", &key);
    for (i = 0; i < pc->sz; i++)
    {
        if (strcmp(pc->date[i].name, key) == 0)
        {
            pos = i;
            break;
        }
    }

    for (i = pos; i < pc->sz-1; i++)
    {
        pc->date[i] = pc->date[i+1];
    }
    pc->sz--;
    printf("删除成功!\n");
}

//查找信息
void SearchContact(Console* pc)
{
    assert(pc);
    char key[Name_Max];
    int i = 0;
    int ret = -1;
    printf("请输入查找人的姓名:>");
    scanf("%s", key);
    for (i = 0; i < pc->sz; i++)
    {
        if (strcmp(pc->date[i].name,key) == 0)
        {
            ret = 1;
            break;
        }
    }
    if (ret==-1)
    {
        printf("没有此人!");
    }
    else
    {
        printf("%-10s%-10s%-10s%-10s%-10s\n",
            "姓名", "年龄",
            "性别", "地址", "电话");
        printf("%-10s%-10d%-10s%-10s%-10d\n",
            pc->date[i].name,
            pc->date[i].age,
            pc->date[i].sex,
            pc->date[i].addr,
            pc->date[i].tele
            );
    }
}

//修改信息
void ModifyContact(Console* pc)
{
    assert(pc);
    char key[Name_Max];
    int i = 0;
    int ret = -1;
    printf("请输入你要修改的人姓名:>");
    scanf("%s", key);
    for (i = 0; i < pc->sz; i++)
    {
        if (strcmp(pc->date[i].name, key) == 0)
        {
            ret = 1;
            break;
        }
    }
    if (ret == -1)
    {
        printf("没有此人!\n");
    }
    else
    {
        printf("此人的信息为:\n");
        printf("%-10s%-10d%-10s%-10s%-10d\n",
            pc->date[i].name,
            pc->date[i].age,
            pc->date[i].sex,
            pc->date[i].addr,
            pc->date[i].tele
        );
    }
    printf("请输入姓名:>");
    scanf("%s", pc->date[i].name);
    printf("请输入年龄:>");
    scanf("%d", &(pc->date[i].age));
    printf("请输入性别:>");
    scanf("%s", pc->date[i].sex);
    printf("请输入地址:>");
    scanf("%s", pc->date[i].addr);
    printf("请输入电话:>");
    scanf("%d", &(pc->date[i].tele));
    printf("修改成功!\n");
}

//显示信息
void ShowContact(Console* pc)
{
    assert(pc);
    int i = 0;
    printf("%-10s%-10s%-10s%-10s%-10s\n",
        "姓名", "年龄",
        "性别", "地址", "电话");
    for (i = 0; i < pc->sz; i++)
    {
        printf("%-10s%-10d%-10s%-10s%-10d\n",
            pc->date[i].name,
            pc->date[i].age,
            pc->date[i].sex,
            pc->date[i].addr,
            pc->date[i].tele
        );
    }
}
 +49 test_3_4/test_3_4/contact.h 0100644 
#define _CRT_SECURE_NO_WARNINGS

//Person结构体内的参数设置
#define Per_Max 100
#define Name_Max 20
#define Sex_Max 5
#define Addr_Max 20

//各个函数用到的头文件
#include<stdio.h>
#include<string.h>
#include<assert.h>

//定义Person结构体
typedef struct Person
{
    char name[Name_Max];
    int age;
    char sex[Sex_Max];
    char addr[Addr_Max];
    int tele;
}Person;

//控制Person结构体
typedef struct Console
{
    Person date[Per_Max];
    int sz;
}Console;

//初始化通讯录
void InitContact(Console* pc);

//增加信息
void AddContact(Console* pc);

//删除信息
void DeleContact(Console* pc);

//查找信息
void SearchContact(Console* pc);

//修改信息
void ModifyContact(Console* pc);

//显示信息
void ShowContact(Console* pc);

 +55 test_3_4/test_3_4/test.c 0100644 
#define _CRT_SECURE_NO_WARNINGS

//引入contact.h头文件
#include"contact.h"

//菜单
void men()
{
    printf("+--------------+--------------+\n");
    printf("|  1.增加信息  |  2.删除信息  |\n");
    printf("+--------------+--------------+\n");
    printf("|  3.查找信息  |  4.修改信息  |\n");
    printf("+--------------+--------------+\n");
    printf("|  5.显示信息  |  0.退出程序  |\n");
    printf("+--------------+--------------+\n");
}

//主函数
int main()
{
    int input = 0;
    Console con;
    InitContact(&con);
    do
    {
      men();
      printf("请输入你的选项:>");
      scanf("%d", &input);
      switch (input)
      {
      case 0:
          printf("你已退出程序!");
          break;
      case 1:
          AddContact(&con);
          break;
      case 2:
          DeleContact(&con);
          break;
      case 3:
          SearchContact(&con);
          break;
      case 4:
          ModifyContact(&con);
          break;
      case 5:
          ShowContact(&con);
          break;
      default:
          printf("请选择正确的选项!");
          break;
      }
    } while (input);
    return 0;
}

分为了三个文件,两个.c文件一个.h文件,字段你可以自行添加和修改。功能的实现差不多!