2、C语言实现通讯录

main函数入口:

//test.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "address.h"

//显示界面
void Interface_Display()
{
    printf("**********通讯录**********\n");
    printf("****1.添加联系人信息******\n");
    printf("****2.删除指定联系人信息**\n");
    printf("****3.查找指定联系人信息**\n");
    printf("****4.修改指定联系人信息**\n");
    printf("****5.显示所有联系人信息**\n");
    printf("****6.清空所有联系人******\n");
    printf("****7.按名字排序所有联系人\n");
    printf("****8.退出通讯录**********\n");
    printf("\n");
    printf("请输入要操作的序号:\n");
}

int main()
{
    Con pcon;
    int choice=1;
    Init(&pcon);
    while (choice)
    {
        Interface_Display();

        printf("请选择操作序号:>");
        scanf("%d", &choice);
        switch (choice)
        {
        case 1:
            Insert(&pcon);        //插入
            system("cls");         //清屏
            break;
        case 2:
            Delete(&pcon);   //删除
            system("cls");
            break;
        case 3:
            Search(&pcon);   //查找
            break;
        case 4:
            Change(&pcon);    //修改
            system("cls");
            break;
        case 5:
            Show(&pcon);     //打印
            break;
        case 6:
            Clear(&pcon);
            break;   //清除
        case 7:
            Sort(&pcon);  // 以姓名排序
            break;
        case 8:
            exit(0);    //退出
        default:
            printf("输入有误请重新输入!\n"); break;

        }
        printf("\n");

    }
    return 0;
}
//address.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_SIZE  1000

typedef struct pCON
{
    char name[20];   //姓名
    char sex[2];      //性别
    char age[3];         //年龄
    char tele[15];    //电话
    char address[25] ;   //地址
}pCon;

typedef struct CONTACT
{
     struct pCON data[MAX_SIZE];    //存储最大容量
     int  size;           //当前存储容量
}Con; 

void Init(Con* pcon);  //初始化
void Insert(Con* pcon);  //插入
void Delete(Con* pcon);  //删除
void Search(Con* pcon);  //查找
void Change(Con* pcon);   //更改
void Show(Con* pcon);  //打印
void Clear(Con* pcon);   //清除
void Sort(Con* pcon); //以姓名排序
//address.c
#include"address.h"
void Init(Con* pcon)  //初始化
{
    if (pcon == NULL)
    {
        printf("非法输入!\n");
        return;
    }
    pcon->size = 0;
}

int find(Con *pcon, char *name)   //根据姓名查找位置
{
    int i = 0;
    for (i = 0; i < pcon->size; i++)
    {
        if (strcmp(name, pcon->data[i].name)==0)
        {
            return i;
        }
    }
    return -1;
}

void Insert(Con *pcon)   //插入
{
    if (pcon->size == MAX_SIZE)
    {
        printf("通讯录已经满了!\n");
        return;
    }
    printf("请输入名字:");
    scanf("%s", (pcon->data[pcon->size]).name);
    printf("请输入性别:");
    scanf("%s", (pcon->data[pcon->size]).sex);
    printf("请输入年龄:");
    scanf("%s", (pcon->data[pcon->size]).age);
    printf("请输入电话:");
    scanf("%s", (pcon->data[pcon->size]).tele);
    printf("请输入地址:");
    scanf("%s", (pcon->data[pcon->size]).address);
    pcon->size++;
}

void Delete(Con *pcon)   //删除
{
    char name[20];
    int ret = 0;
    printf("请输入要删除人的名字:");
    scanf("%s", name);
    ret = find(pcon, name);
    if (ret!=-1)
    {
        int i = 0;
        for (i = ret; i <  pcon->size-1; i++)
            {
                pcon->data[ret] = pcon->data[ret + 1];
            }
            pcon->size--;
            printf("已删除该联系人\n");
    }
    else
    {
        printf("此人不存在,删除失败!\n");
    }
}

void Search(Con *pcon)    //查找信息
{
    char name[20];
    int ret = 0;
    printf("请输入联系人姓名\n");
    scanf("%s", name);
    ret = find(pcon, name);
    if (ret!=-1)
    {
        printf("姓名:%s  性别: %s  年龄 :%s  电话:%s  地址: %s \n",
                pcon->data[ret].name, pcon->data[ret].sex,
                pcon->data[ret].age, pcon->data[ret].tele,
                pcon->data[ret].address );
    }
    else
    {
        printf("没有找到\n");
    }

}

void Change(Con* pcon)    //修改
{
    char name[20];
    int ret = 0;
    printf("请输入联系人姓名:\n");
    scanf("%s", name);
    ret = find(pcon, name);
    if (ret!=-1)
    {
        printf("请输入修改后名字:");
        scanf("%s", (pcon->data[ret]).name);
        printf("请输入修改后性别:");
        scanf("%s", (pcon->data[ret]).sex);
        printf("请输入修改后年龄:");
        scanf("%s", (pcon->data[ret]).age);
        printf("请输入修改后电话:");
        scanf("%s", (pcon->data[ret]).tele);
        printf("请输入修改后地址:");
        scanf("%s", (pcon->data[ret]).address);
        printf("已经修改\n");
    }
}

void Show(Con * pcon)   //显示
{
    if (pcon->size == 0)
    {
        printf("通讯录为空!\n");
    }
    int i = 0;
    for (i = 0; i <  pcon->size; i++)
    {
        printf("姓名:%s  性别: %s  年龄 :%s  电话:%s  地址: %s \n",
            pcon->data[i].name, pcon->data[i].sex,
            pcon->data[i].age, pcon->data[i].tele,
            pcon->data[i].address
            );
    }
}

void Clear(Con *pcon)    //清除
{
    pcon->size = 0;
}

void Sort(Con *pcon)   //以名字排序
{
    int i = 0;
    int j = 0;
    for (i = 0; i < pcon->size-1; i++)
    {
        for (j = 0; j < pcon->size - i - 1; j++)
        {
            if (strcmp(pcon->data[j].name, pcon->data[j + 1].name)>0)
            {
                pCon tmp;
                tmp = pcon->data[j];
                pcon->data[j] = pcon->data[j + 1];
                pcon->data[j + 1] = tmp;
            }
        }
    }
}

原文地址:https://www.cnblogs.com/kai-liu/p/10849989.html

时间: 2024-10-17 14:19:04

2、C语言实现通讯录的相关文章

【C语言】通讯录代码(一个文件下实现)

//[C语言]通讯录(一个文件实现) #include <stdio.h> #include <string.h> #define NAME_MAX 20 #define SEX_MAX 5 #define TEL_MAX 11 #define ADDR_MAX 20 #define PERSON_MAX 1000 typedef struct person { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char tel[TE

C语言编写—通讯录(小项目)

C语言的练习-通讯录,该通讯录主要实现最大存储1000个人信息,对通讯录中的个人信息能够进行增.删.查.改等基本功能,通过用c语言编写,能够极大程度上锻炼编程能力.程序主要使用数组的知识,创建1000大小的静态数组,在极端情况下,通讯录中元素较少,对空间的使用率较低,使得空间浪费.该程序能够再次进行改进,可以通过动态开辟数组,减少空间的浪费,也可以通过链表来实现. --下面程序主要是利用静态数组的方式,该程序有待改进. #define _CRT_SECURE_NO_WARNINGS 1 #inc

C语言-《通讯录》

黑白的通讯录 ---------------------- --1-- 需求分析 1.1 需求 1.2 原型展示 1.3 功能分析 --2-- 代码实现 2.1 外部声明.变量.宏 2.2 模块实现 ---------------------- [写在开头:] 『在不用UI界面操作的时候,用一个命令行版的通讯录也是很有个性的...』 --1-- 需求分析 1.1 需求 实现简单计算器的计算功能,用命令行的方式选择具体的操作 1.2 原型展示 欢迎界面: 1)添加联系人: 2)删除联系人: 3)修

【C语言疯狂讲义】(十六)C语言简易通讯录(未优化版)

<通讯录>开发用到得知识点 常量.变量的使用 全局变量 分支语句 函数 宏 循环语句 scanf和printf 数据 结构体 文件 指针* <通讯录>中解决的经典问题 数组元素如何删除(不使用链表) 开发调试环境:Mac os x10.10 + xcode6.1 通讯录主界面: 添加联系人界面 删除联系人界面 修改联系人界面 搜索联系人 #include <stdio.h> #include <string.h> /****** 宏定义 *******/ #

(C语言)通讯录

问题描述: 实现一个通讯录: 通讯录可以用来存储个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址.实现增,删,查,找,清空这几个功能. 程序分析: (1)基本思路:学完了结构体,我们必须通过不断地应用才能真正的掌握.这个通讯录是以两个结构体作为框架搭建的一个小型工程.如下所示: typedef struct Peo { char name[NAME_LEN]; int age; char sex[SEX_LEN]; char tele[TELE_LEN]; char addr[ADD

C语言实现通讯录

<span style="font-size:18px;">#include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> #include<conio.h> #define LEN sizeof(struct ab) #define ZIP 7 #define PHONE 7 #define MAX 100 struct ab

【C语言】通讯录制作

//此部分为该通讯录头部(head.h) #ifndef _CONTACT__ #define _CONTACT__ #define NAME_MAX 20 #define SEX_MAX 5 #define TEL_MAX 11 #define ADDR_MAX 20 #define PERSON_MAX 1000 #include <stdio.h> #include <string.h> typedef struct person { char name[NAME_MAX];

【C语言】通讯录实现。

实现一个通讯录: 通讯录用来存放1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: (1)添加联系人信息 (2)删除指定联系人信息 (3)查找指定联系人的信息 (4)修改指定联系人信息 (5)显示所有联系人信息 (6)清空所有联系人 实现方法: #include <stdio.h> #include <string.h> #define MAX 1000 #define NAME_LEN 10 #define SEX_LEN 5 #define PHO

(一〇一)集成静态库RHAddressBook实现OC访问通讯录

使用官方的AddressBook框架仅能使用C语言访问通讯录,十分不便,这里介绍集成第三方框架RHAddressBook的方法,该框架可以通过OC访问和操作通讯录. 该框架是一个静态库,集成比较复杂. 首先下载该框架:RHAddressBook,下面有关于集成的一些介绍,下面简单的介绍一下集成的过程. ①首先把静态库工程直接拖入自己的工程: ②选中自己的工程,工程配置中选择Build Phases,按照下图导入两个文件,点击左侧的加号添加即可. ③选择Build Settings,搜索Heade