C语言:编写一个通讯录

#define  _CRT_SECURE_NO_WARNINGS

#define MAX 100
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

enum MyEnum
{
    OUT,
    Incre,
    Delete,
    Lookup,
    Modify,
    Print,
    Sort,
};

void meun()
{
    printf("\n");
    printf("******************************\n");
    printf("*****1.Incre     2.Delete*****\n");
    printf("*****3.Lookup    4.Modify*****\n");
    printf("*****5.Print     0.OUT   *****\n");
    printf("******************************\n");
}
struct ProInon
{
    char name[20];//姓名
    int age;      //年龄
    char sex[10]; //性别
    char Phone[12];//电话号码
};

struct comact  //包含通讯录最大容量和记录通讯录当前个数
{
    struct ProInon data[MAX];
    int sizo;
};


void Initialization(struct comact* ps)
{
    memset(ps->data, 0, sizeof(ps->data));
    ps->sizo = 0;
}


void Increrec(struct comact* ps)
{
    if (ps->sizo > MAX)
    {
        printf("您的通讯录已满\n");
    }
    else
    {
        printf("请输入姓名\n");
        scanf("%s", ps->data[ps->sizo].name);
        printf("请输入年龄\n");
        scanf("%d", &(ps->data[ps->sizo].age));
        printf("请输入性别\n");
        scanf("%s", ps->data[ps->sizo].sex);
        printf("请输入电话号码\n");
        scanf("%s", ps->data[ps->sizo].Phone);
        rewind(stdin);

        ps->sizo++;
        printf("添加成功\n");
        
    }

}

void Printrec(const struct comact* ps)
{
    if (ps->sizo==0)
    {
        printf("对不起,您的通讯录为空\n");

    }
    else
    {
        printf("%-10s\t%-10s\t%-5s\t%-12s\t\n","名字","年龄","性别","电话号码");
        for (int i = 0; i < ps->sizo; i++)
        {
            printf("%-10s\t%-10d\t%-5s\t%-12s\t\n", 
                ps->data[i].name,
                ps->data[i].age,
                ps->data[i].sex,
                ps->data[i].Phone);
        }
    }

扫描二维码关注公众号,回复: 16702478 查看本文章

}


int Find_name(struct comact* ps,char name[20])
{
    int i = 0;

    for (i = 0; i < ps->sizo; i++)
    {
        if (0 == strcmp(ps->data[i].name, name))
        {
            return i;
        }
    }
    return -1;
}


void Deleterec(struct comact* ps)
{
    char name[20] ;
    
    printf("请输入您要删除联系人的名字:》");
    scanf("%s",name);
    //查找名字信息
    int ret = Find_name(ps, name);
    if (ret == -1)
    {
        printf("您要删除的信息不存在\n");
    }
    else
    {
        //删除信息
        int j = 0;
        for ( j = ret; j < ps->sizo; j++)
        {
            ps->data[j] = ps->data[j + 1];
        }
        ps->sizo--;
        printf("删除成功\n");
    }

}


void Lookuprec(struct comact* ps)
{
    char name[20];
    printf("请输入您要查找的名字:》");
    scanf("%s", name);
    //查找名字信息
    int ret = Find_name(ps, name);
    
    if (ret == -1)
    {
        printf("您要查找的联系人不存在\n");
    }
    else
    {
        //打印信息
        printf("%-10s\t%-10s\t%-5s\t%-12s\t\n", "名字", "年龄", "性别", "电话号码");
        printf("%-10s\t%-10d\t%-5s\t%-12s\t\n",
            ps->data[ret].name,
            ps->data[ret].age,
            ps->data[ret].sex,
            ps->data[ret].Phone);
        
    }


}


void Modifyrec(struct comact* ps)
{
    char name[20];
    printf("请输入您要修改联系人的姓名:》");
    scanf("%s", name);

    //查找联系人
    int ret = Find_name(ps, name);
    if (ret == -1)
    {
        printf("您要修改的联系人不存在\n");
    }
    else
    {
        //修改联系人
        printf("请输入姓名\n");
        scanf("%s", ps->data[ret].name);
        printf("请输入年龄\n");
        scanf("%d", &(ps->data[ret].age));
        printf("请输入性别\n");
        scanf("%s", ps->data[ret].sex);
        printf("请输入电话号码\n");
        scanf("%s", ps->data[ret].Phone);


        printf("修改成功\n");
    }

}


int main()
{
    int input = 0;
    int sizo = 0;//记录通讯录的个数信息
    //创建通讯录
    struct comact con;
    //初始化通讯录
    Initialization(&con);
    do
    {//打印菜单
        meun();
        printf("请输入您的选择:》");
        scanf("%d", &input);
        
        //进行判断
        switch (input)
        {
        case Incre:     //增加联系人

            Increrec(&con);
            break;

        case Delete:     //删除联系人

            Deleterec(&con);
            break;

        case Lookup:     //查找联系人

            Lookuprec(&con);
            break;

        case Modify:     //修改联系人

            Modifyrec(&con);
            break;

        case Print:     //打印联系人

            Printrec(&con);

        case OUT:     //退出
            printf("退出通讯录");
            break;
        default: 
            printf("输入有误,请重新输入\n");
            break;
        }

    } while (input);
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_52300845/article/details/123608568