c语言小项目--通讯录

简介: c语言小项目--通讯录

 (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

今天我们试着用c语言实现简单通讯录的制作,功能大致如下:

//1.存放好友信息

//2.增加好友信息

//3.删除好友信息

//4.查找好友信息

//5.修改好友信息

了解相应功能后我们试着构建一个菜单:

void menu()//菜单
{
    printf("*************************************\n");
    printf("******1.add            2.del  *******\n");
    printf("******3.search         4.modify  ****\n");
    printf("******5.show           0.exit      **\n");
    printf("*************************************\n");
}

接下来就是创建通讯录了,先定义用户相关信息,并枚举相关变量

enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 };
struct people 
{
    char name[MAX_NAME];
    int age;
    char sex[MAX_SEX];
    char tele[MAX_TELE];
    char addr[MAX_ADDR];
}; 

接着定义通讯录的类型

struct Contact
{
    struct people data[MAX]; //存放用户信息
    int size;                            //记录当前已经有的用户数量
};

然后初始化通讯录,默认所有信息为0

void InitContact(struct Contact* ps)
{
    memset(ps->data, 0, sizeof(ps->data));
    ps->size = 0;
}

通讯录初始化后,就要开始完善它的功能的

//增加好友信息
void addContact(struct Contact* ps)
{
    if (ps->size == MAX)
    {
        printf("通讯录已满\n");
    }
    else
    {
        printf("请输入名字:");
        scanf("%s", ps->data[ps->size].name);
        printf("请输入年龄:");
        scanf("%d", &(ps->data[ps->size].age));
        printf("请输入性别:");
        scanf("%s", ps->data[ps->size].sex);
        printf("请输入电话:");
        scanf("%s", ps->data[ps->size].tele);
        printf("请输入地址:");
        scanf("%s", ps->data[ps->size].addr);
        ps->size++;
        printf("添加成功\n");
    }
}
//显示好友信息
void ShowContact(struct Contact* ps)
{
    if (ps->size == 0)
    {
        printf("通讯录为空\n");
    }
    else
    {
        printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年龄","性别","电话","地址");
        for (int i = 0; i < ps->size; i++)
        {
            printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
                ps->data[i].name,
                ps->data[i].age,
                ps->data[i].sex,
                ps->data[i].tele,
                ps->data[i].addr );
        }
    }
}
//删除好友信息
void DelContact(struct Contact* ps)
{
    char name[MAX_NAME];
    printf("请输入要删除人的名字:");
    scanf("%s", name);
    int i = 0;
    //1.查找要删除的人在什么位置
    for (int i = 0; i < ps->size; i++)
    {
        if (strcmp(ps->data[i].name, name) == 0)
        {
            break;
        }
    }
    //2.删除
    if (i == ps->size)
    {
        printf("要删除的人不存在\n");
    }
    else
    {
        int j = 0;
        for (j = i; j < ps->size-1; j++)
        {
            ps->data[j] = ps->data[j + 1];
        }
        ps->size--;
        printf("删除成功\n");
    }
}
//查找指定的人
void SearchContact(struct Contact* ps)
{
    char name[MAX_NAME];
    printf("请输入查找人的名字");
    scanf("%s", name);
    int i = 0;
    //1.查找的人在什么位置
    for (int i = 0; i < ps->size; i++)
    {
        if (strcmp(ps->data[i].name, name) == 0)
        {
            break;
        }
    }
    if (i == ps->size)
    {
        printf("查找的人不存在\n");
    }
    else
    {
        printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年龄", "性别", "电话", "地址");
        printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
            ps->data[i].name,
            ps->data[i].age,
            ps->data[i].sex,
            ps->data[i].tele,
            ps->data[i].addr);
    }
};
//修改好友信息
void ModifyContact(struct Contact* ps)
{
    char name[MAX_NAME];
    printf("请输入修改人的名字");
    scanf("%s", name);
    int i = 0;
    //1.修改的人在什么位置
    for (int i = 0; i < ps->size; i++)
    {
        if (strcmp(ps->data[i].name, name) == 0)
        {
            break;
        }
    }
    if (i == ps->size)
    {
        printf("修改的人不存在\n");
    }
    else
    {
        printf("请输入名字:");
        scanf("%s", ps->data[i].name);
        printf("请输入年龄:");
        scanf("%d", &(ps->data[i].age));
        printf("请输入性别:");
        scanf("%s", ps->data[i].sex);
        printf("请输入电话:");
        scanf("%s", ps->data[i].tele);
        printf("请输入地址:");
        scanf("%s", ps->data[i].addr);
        printf("修改成功\n");
    }
}

最后就是将其全部存入主函数中

int main()
{
    int input = 0;
    struct Contact con;//con就是通讯录
    InitContact(&con);
    do
    {
        menu();
        printf("请选择:");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            addContact(&con);
            break;
        case 2:
            DelContact(&con);
            break;
        case 3:
            SearchContact(&con);
            break;
        case 4:
            ModifyContact(&con);
            break;
        case 5:
            ShowContact(&con);
            break;
        case 0:
            printf("退出通讯录\n");
            break;
        default:
            printf("选择错误\n");
            break;
        }
    } while (input);
    return 0;
} 

总体代码就是这样,如果大家发现bug或者有更好的方法 ,欢迎大家一起来讨论呀,一起加油

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//1.存放好友信息
//2.增加好友信息
//3.删除好友信息
//4.查找好友信息
//5.修改好友信息
enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 };
void menu()//菜单
{
  printf("*************************************\n");
  printf("******1.add            2.del  *******\n");
  printf("******3.search         4.modify  ****\n");
  printf("******5.show           0.exit      **\n");
  printf("*************************************\n");
}
//创建通讯录
struct people 
{
  char name[MAX_NAME];
  int age;
  char sex[MAX_SEX];
  char tele[MAX_TELE];
  char addr[MAX_ADDR];
};
//通讯录类型
struct Contact
{
  struct people data[MAX];//存放用户信息
  int size;//记录当前已经有的用户数量
};
//初始化通讯录
void InitContact(struct Contact* ps)
{
  memset(ps->data, 0, sizeof(ps->data));
  ps->size = 0;
}
//增加好友信息
void addContact(struct Contact* ps)
{
  if (ps->size == MAX)
  {
    printf("通讯录已满\n");
  }
  else
  {
    printf("请输入名字:");
    scanf("%s", ps->data[ps->size].name);
    printf("请输入年龄:");
    scanf("%d", &(ps->data[ps->size].age));
    printf("请输入性别:");
    scanf("%s", ps->data[ps->size].sex);
    printf("请输入电话:");
    scanf("%s", ps->data[ps->size].tele);
    printf("请输入地址:");
    scanf("%s", ps->data[ps->size].addr);
    ps->size++;
    printf("添加成功\n");
  }
}
//显示好友信息
void ShowContact(struct Contact* ps)
{
  if (ps->size == 0)
  {
    printf("通讯录为空\n");
  }
  else
  {
    printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年龄","性别","电话","地址");
    for (int i = 0; i < ps->size; i++)
    {
      printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
        ps->data[i].name,
        ps->data[i].age,
        ps->data[i].sex,
        ps->data[i].tele,
        ps->data[i].addr );
    }
  }
}
//删除好友信息
void DelContact(struct Contact* ps)
{
  char name[MAX_NAME];
  printf("请输入要删除人的名字:");
  scanf("%s", name);
  int i = 0;
  //1.查找要删除的人在什么位置
  for (int i = 0; i < ps->size; i++)
  {
    if (strcmp(ps->data[i].name, name) == 0)
    {
      break;
    }
  }
  //2.删除
  if (i == ps->size)
  {
    printf("要删除的人不存在\n");
  }
  else
  {
    int j = 0;
    for (j = i; j < ps->size-1; j++)
    {
      ps->data[j] = ps->data[j + 1];
    }
    ps->size--;
    printf("删除成功\n");
  }
}
//查找指定的人
void SearchContact(struct Contact* ps)
{
  char name[MAX_NAME];
  printf("请输入查找人的名字");
  scanf("%s", name);
  int i = 0;
  //1.查找的人在什么位置
  for (int i = 0; i < ps->size; i++)
  {
    if (strcmp(ps->data[i].name, name) == 0)
    {
      break;
    }
  }
  if (i == ps->size)
  {
    printf("查找的人不存在\n");
  }
  else
  {
    printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年龄", "性别", "电话", "地址");
    printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
      ps->data[i].name,
      ps->data[i].age,
      ps->data[i].sex,
      ps->data[i].tele,
      ps->data[i].addr);
  }
};
//修改好友信息
void ModifyContact(struct Contact* ps)
{
  char name[MAX_NAME];
  printf("请输入修改人的名字");
  scanf("%s", name);
  int i = 0;
  //1.修改的人在什么位置
  for (int i = 0; i < ps->size; i++)
  {
    if (strcmp(ps->data[i].name, name) == 0)
    {
      break;
    }
  }
  if (i == ps->size)
  {
    printf("修改的人不存在\n");
  }
  else
  {
    printf("请输入名字:");
    scanf("%s", ps->data[i].name);
    printf("请输入年龄:");
    scanf("%d", &(ps->data[i].age));
    printf("请输入性别:");
    scanf("%s", ps->data[i].sex);
    printf("请输入电话:");
    scanf("%s", ps->data[i].tele);
    printf("请输入地址:");
    scanf("%s", ps->data[i].addr);
    printf("修改成功\n");
  }
}
int main()
{
  int input = 0;
  struct Contact con;//con就是通讯录
  InitContact(&con);
  do
  {
    menu();
    printf("请选择:");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      addContact(&con);
      break;
    case 2:
      DelContact(&con);
      break;
    case 3:
      SearchContact(&con);
      break;
    case 4:
      ModifyContact(&con);
      break;
    case 5:
      ShowContact(&con);
      break;
    case 0:
      printf("退出通讯录\n");
      break;
    default:
      printf("选择错误\n");
      break;
    }
  } while (input);
  return 0;
}


相关文章
|
28天前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
32 1
|
2月前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
32 2
|
2月前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
4月前
|
存储 搜索推荐 算法
【C语言】C语言—通讯录管理系统(源码)【独一无二】
【C语言】C语言—通讯录管理系统(源码)【独一无二】
|
4月前
|
存储 数据可视化 C语言
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
|
6月前
|
C语言
C语言实战项目——学生试卷分数统计
C语言实战项目——学生试卷分数统计
|
6月前
|
机器学习/深度学习 搜索推荐 程序员
C语言实现个人通讯录(功能优化)-2
C语言实现个人通讯录(功能优化)
C语言实现个人通讯录(功能优化)-2
|
6月前
|
存储 C语言 索引
C语言实现个人通讯录(功能优化)-1
C语言实现个人通讯录(功能优化)
C语言实现个人通讯录(功能优化)-1
|
6月前
|
C语言
C语言学习记录——通讯录(静态内存)
C语言学习记录——通讯录(静态内存)
33 2
|
6月前
|
存储 人机交互 C语言
【C语言项目实战】使用单链表实现通讯录
【C语言项目实战】使用单链表实现通讯录