初识c语言day12(通讯录系统)

本文探讨了如何使用C语言中的字符串操作函数实现通讯录系统,包括添加、删除、修改联系人信息,以及模糊搜索功能。通过`intatoi`、`strstr`等函数处理数据输入和查找,展示了实际应用中的数据转换和文本处理技巧。

字符串相关操作函数:

    int atoi(const char *nptr);

    功能: 字符串转int类型

    long atol(const char *nptr);

    功能: 字符串转long类型

    long long atoll(const char *nptr);

    功能: 字符串转long long类型

    double atof(const char *nptr);

    功能: 字符串转double类型

    char *strstr(const char *haystack,const char *needle);

    功能: 在haystack中查找是否存在子串needle

    返回值: needle在haystack中首次出现的位置,如果找不到则返回NULL

    int sprintf(char *str,const char *format,……);

    功能: 把各种类型的数据输出给字符串str

    返回值: 转换后字符个数

    int sscanf(const char *str,const char *format,……);

    功能: 从str中解析读取数据到变量中

    返回值:成功解析出来的变量个数

    void *memcpy(void *dest,const void *src,size_t n);

    功能: 从src位置拷贝n个字节到dest的位置

    返回值:链式调用

    int memcmp(const void *s1,const void *s2,size_t n);

    功能: 比较两块内存的值,按照字节比较,一旦比较出结果后面不再比较

        返回值: s1 == s2   0

                s1 < s2   负数

                s1 > s2   正数


 

小项目:通讯录系统

    要求:存储联系人信息:

        姓名、性别、电话    

        最大存储量50人

    功能要求:

        1、增加联系人

        2、按名字删除联系人

        3、按名字修改联系人信息

        4、查找联系人(按照电话或者姓名查找,支持模糊查找)

        5、显示所有联系人信息

        6、退出系统

//  头文件,变量声明,函数声明

#include <stdio.h>
#include <stdlib.h>
#include <getch.h>
#include <string.h>


char Name[50][20]={};
char Tel[50][12]={};
char Gender[50][4]={};



void display_menu(void);
void add_contacts(void);
void delete_contacts(void);
void modify_contacts(void);
void lookup_contacts(void);
void display_contacts(void);

//主函数

int main(int argc,const char* argv[])
{
    for(;;)
    {
        system("clear"); //清屏
        display_menu();  
        switch(getch())  //获取键值
        {
            case 49:
                add_contacts();
                break;
            case 50:
                delete_contacts();
                break;
            case 51:
                modify_contacts();
                break;
            case 52:
                lookup_contacts();
                break;
            case 53:
                display_contacts();
                break;
            case 54:
                return 0;
        }
    }
}

//打印菜单

void display_menu(void)
{
    printf("*********************************\n");
    printf("* 根据按钮提示选择!            *\n");
    printf("* 按键1:增加联系人!           *\n");
    printf("* 按键2:删除联系人!           *\n");
    printf("* 按键3:修改联系人信息!       *\n");
    printf("* 按键4:查找联系人!           *\n");
    printf("* 按键5:显示所有联系人信息!   *\n");
    printf("* 按键6:退出系统!             *\n");
    printf("*********************************\n");
}

//添加联系人函数

void add_contacts(void)
{
    int i=0;
    printf("请输入联系人的信息(姓名 性别 电话):");
    for(i=0;i<50;i++)
    {
        if('\0' == *Name[i])
        {
            scanf("%s",Name[i]);
            scanf("%s",Gender[i]);
            scanf("%s",Tel[i]);
            break;
        }
    }
    if(50 == i)
    {
        printf("联系人已满!");
    }
}

//删除联系人函数

void delete_contacts(void)
{
    char name[20]={};
    printf("请输入要删除的联系人姓名:");
    scanf("%s",name);
    for(int i=0;i<50;i++)
    {
        if(*Name[i] == name[0])
        {
            *Name[i] = 0;
            break;
        }
    }
}

//修改联系人函数

void modify_contacts(void)
{
    char name[20]={};
    printf("请输入要修改的联系人姓名:");
    scanf("%s",name);
    for(int i=0;i<50;i++)
    {
        if(*Name[i] == name[0])
        {
            printf("请输入修改后联系人的信息(姓名 性别 电话):");
            scanf("%s",Name[i]);
            scanf("%s",Gender[i]);
            scanf("%s",Tel[i]);
            break;
        }
    }
}

//查找联系人函数

void lookup_contacts(void)
{
    char arr[20]={};
    printf("请输入要查找的关键字:");
    scanf("%s",arr);
    for(int i=0;i<50;i++)
    {
        if(NULL != strstr(Name[i],arr) || NULL != strstr(Tel[i],arr))
        {
            printf("%s %s %s\n",Name[i],Gender[i],Tel[i]);
        }
    }
    printf("-------------------\n");
    printf("任意键返回菜单!");
    getch();
    getch();
}

//显示所有联系人函数

void display_contacts(void)
{
    for(int i=0;i<50;i++)
    {
        if('\0' == *Name[i])
        {
            continue;
        }
        printf("%s\t%s %s\n",Name[i],Gender[i],Tel[i]);
    }
    printf("------------------------\n");
    printf("任意键返回菜单!");
    getch();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值