(C语言小项目)通讯录的实现

简介: (C语言小项目)通讯录的实现


目录

前言

实现功能

test.c

Contanct.h

Contanct.c

实现效果


前言

我们用三个文件C语言文件来实现通讯录,分别为 Contanct.h   Contanct.c    test.c

test.c: 实现通讯录的逻辑。

Contanct.c:分装多个函数,是通讯录的主要实现方法。

Contanct.h:放对结构体,自定义函数的声明

实现功能

1.存放1000个好友信息 名字 电话 性别 住址 年龄

2.增加好友信息

3.删除指定名字的好友信息

4.查找好友信息

5.修改好友信息

6.打印好友信息

test.c

#include"contanct.h"
void menu()
{
  printf("*********************************************\n");
  printf("***********1.add             2.del **********\n");
  printf("***********3.search          4.modify *******\n");
  printf("***********5.show            0.exit *********\n");
  printf("*********************************************\n");
  printf("*********************************************\n");
}
int main()
{
  int input;
  //创建通讯录
    struct Contanct con;
  //初始化通讯录
  InitContact(&con);
  do 
  {
    menu();
    printf("请选择:>");
    scanf("%d", &input);
    switch (input)
    {
    case ADD:
        AddContact(&con);
      break;
    case DEL:
        DelContact(&con);
      break;
    case SEARCH:
      SEARCHContanct(&con);
      break;
    case MODIFY:
      MODIFYContanct(&con);
      break;
    case SHOW:
      ShowContanct(&con);
      break;
    case EXIT:
      printf("退出通讯录\n");
      return 0;
    default:
      printf("选择错误!\n");
    }
  } while (1);
}

Contanct.h

#define _CRT_SECURE_NO_WARNINGS 1
#define MAX 1000
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct PeoInfo
{
  char name[MAX_NAME];
  int age;
  char sex[MAX_SEX];
  char tele[MAX_TELE];
  char addr[MAX_ADDR];
};
enum Option
{
  EXIT,
  ADD,
  DEL,
  SEARCH,
  MODIFY,
  SHOW,
};
//通讯录类型
struct Contanct
{
  struct PeoInfo date[MAX];//存放一个信息
  int size;//记录当前已有元素个数
};
//初始化通讯录的函数
void InitContact(struct Contanct* ps);
//增加一个信息到通讯录
void AddContact(struct Contanct* ps);
//打印通讯录的信息
void ShowContanct(const struct Contanct* ps);
//删除指定的联系人
void DelContact(struct Contanct* ps);
//查找指定的联系人
void SEARCHContanct(struct Contanct* ps);
//修改指定联系人
void MODIFYContanct(struct Contanct* ps);

Contanct.c

#include"contanct.h"
//通过名字查找它在数组中对应下标的函数
int Findby_name(struct Contanct *ps,char name[MAX_NAME])
{
  int i;
  for (i = 0; i < ps->size; i++)
  {
    if (0 == strcmp(ps->date[i].name, name))
      return i;//找到了
  }
  return -1;//找不到
}
//初始化通讯录的函数
void InitContact(struct Contanct* ps)
{
  memset(ps->date, 0, sizeof(ps->date));
  ps->size = 0;//设置通讯录最初只有0个元素
}
void AddContact(struct Contanct* ps)
{
  system("cls");
  if (ps->size == MAX)
  {
    printf("通讯录已满,无法增加");
  }
  else
  {
    printf("请输入修改后名字:");
    scanf("%s",ps->date[ps->size].name);
    printf("请输入修改后年龄:");
    scanf("%d",&(ps->date[ps->size].age));
    printf("请输入修改后性别:");
    scanf("%s", ps->date[ps->size].sex);
    printf("请输入修改后电话:");
    scanf("%s", ps->date[ps->size].tele);
    printf("请输入修改后地址:");
    scanf("%s", ps->date[ps->size].addr);
    ps->size++;
    system("cls");
    printf("添加成功!\n");
  }
}
//打印通讯录的信息
void ShowContanct(const struct Contanct* ps)
{
  system("cls");
  if (ps->size == 0)
  {
    printf("通讯录为空\n");
  }
  else
  {
    printf("%-20s\t%4s\t%-5s\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");
    int i = 0;
    for (i = 0; i < ps->size; i++)
    {
      printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",
        ps->date[i].name,
        ps->date[i].age,
        ps->date[i].sex,
        ps->date[i].tele,
        ps->date[i].addr);
    }
  }
}
//删除指定的联系人
void DelContact(struct Contanct* ps)
{
  system("cls");
  char name[MAX_NAME];
  printf("请输入要删除人的名字:");
  scanf("%s", name);
  int pos = Findby_name(ps, name);
  if (pos == -1)
    printf("要删除的人不存在\n");
  else
  {
    int j = 0;
    for (j = pos; j < ps->size - 1; j++)
    {
      ps->date[j] = ps->date[j + 1];
    }
    ps->size--;
    printf("删除成功!\n");
  }
}
//查找指定的联系人
void SEARCHContanct(struct Contanct* ps)
{
  system("cls");
  char name[MAX_NAME];
  printf("请输入查找人的名字:");
  scanf("%s", name);
  int pos =Findby_name(ps, name);
  if (pos == -1)
  {
    printf("要查找的人不存在\n");
  }
  else
    printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",
      ps->date[pos].name,
      ps->date[pos].age,
      ps->date[pos].sex,
      ps->date[pos].tele,
      ps->date[pos].addr);
}
//修改指定联系人
void MODIFYContanct(struct Contanct* ps)
{
  system("cls");
  char name[MAX_NAME];
  printf("请输入要修改联系人的名字\n");
  scanf("%s", name);
  int pos = Findby_name(ps, name);
  if (pos == -1)
  {
    printf("要修改的联系人不存在\n");
  }
  else
  {
    printf("请输入名字:");
    scanf("%s", ps->date[pos].name);
    printf("请输入年龄:");
    scanf("%d", &(ps->date[pos].age));
    printf("请输入性别:");
    scanf("%s", ps->date[pos].sex);
    printf("请输入电话:");
    scanf("%s", ps->date[pos].tele);
    printf("请输入地址:");
    scanf("%s", ps->date[pos].addr);
    ps->size++;
    printf("修改完成!\n");
  }
}

实现效果

初始界面:

添加成员:选择1

打印联系人信息:选择5

删除联系人:选择2

再将联系人打印出来:

查找联系人:

修改联系人:


相关文章
|
1月前
|
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语言项目实战】使用单链表实现通讯录