2C语言实现通讯录

Posted kai-liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2C语言实现通讯录相关的知识,希望对你有一定的参考价值。

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;
            }
        }
    }
}

 

以上是关于2C语言实现通讯录的主要内容,如果未能解决你的问题,请参考以下文章

驱动程序实现i2c通讯-39

I2c通讯介绍及代码演示

golang代码片段(摘抄)

两个51单片机如何通过i2c通讯?

求助STM32 I2C主机与一个从机通讯成功 与多个从机通讯失败

STM32 i2c通讯失败复位方法