0


C语言实现简易通讯录


前言

在c语言的学习中,我们学习了结构体。结构体,是C语言学习过程中重要的部分,常用于实现对数据库的管理。学完结构体后,相信大家对结构体有了一定的了解,下面就用C语言实现简易的通讯录吧!


一、通讯录的总体思路

模块化编程

此次的通讯录我用了3大模块实现,分别是"test.c","contact.c",以及"contact.h"。

1."tcst.c"

      包括简易菜单以及主函数的实现思路,整体是这样:

        (1).简易菜单
//打印菜单
void menu()
{
    printf("****************************\n");
    printf("*****0.Exit the program*****\n");
    printf("*****1. Add   a contact*****\n");
    printf("*****2. Del   a contact*****\n");
    printf("*****3.Modife a contact*****\n");
    printf("*****4.printf a contact*****\n");
    printf("****************************\n");

}
    (2).主函数   
int main()
{
    int input = 0;//输入数组
    contact con;  //创建对象
    ContactInit(&con);
    do 
    {
        menu();               //打印菜单
        scanf("%d", &input);  //输入选项
        switch (input)        //选择功能
        {
        case ADD:             //增加一位联系人
            Add(&con); break;
        case DEL:             //删除一位联系人
            Del(&con); break;
        case MODIFE:          //修改联系人
            Modife(&con); break;
        case EXIT:            //退出程序 
            printf("退出程序");
            return 0;
        case PRINT:           //打印联系人
            print(&con); break;
        default:
            printf("输入错误,请重新输入!\n"); break;
        }
    } while (input);
    return 0;
}

2."contact.h"

创建结构体,通讯录中每个人都有不一样的数据类型,信息种类多样,使用结构体来存放联系人的信息。创建枚举类型,在主函数便以代码的理解。整体是这样:

(1).枚举

//枚举,方便代码阅读
enum option
{
    EXIT,
    ADD,
    DEL,
    MODIFE,
    PRINT,
};

(2).创建结构体

//创建结构体
typedef struct PeoInfo
{
    char nane[NAME_MAX];     //名字
    char sex[SEX_MAX];       //性别
    int age;                 //年龄
    char tele[TELE_MAX];     //电话号码
    char addr[ADDR_MAX];     //地址
}People;

//将1000个联系人的信息存入contact
typedef struct contact
{
    People data[MAX];  //存1000人的信息
    int sz;             //记录通讯录中保存的信息个数
}contact;

(3).声明函数

//初始化函数
void ContactInit(contact* p);

//增加一位联系人
void Add(contact* ps);

//删除一位联系人
void Del(contact* ps);

//打印联系人
void print(contact* ps);

3."contact.c"

各个功能的实现,包含通讯录菜单需要的功能。整体是这样:


具体实现我用注释标明了哈~~

void Add(contact* ps)
{
    assert(ps);
    if (ps->sz == MAX)
    {
        printf("存储已满");
        return;
    }
    printf("请输入名字:");
    scanf("%s",(ps->data)[ps->sz].nane);
    printf("请输入性别:");
    scanf("%s",(ps->data)[ps->sz].sex);
    printf("请输入年龄:");
    scanf("%d", &(ps->data)[ps->sz].age);
    printf("请输入电话:");
    scanf("%s", &(ps->data)[ps->sz].tele);
    printf("请输入地址:");
    scanf("%s",(ps->data)[ps->sz].addr);
    ps->sz++;
    printf("添加成功!\n");
}

2.删除一位联系人

//删除一位联系人
void Del(contact* ps)
{
    assert(ps);
    char arr[20];
    printf("请输入要删除的联系人的名字:");
    scanf("%s", arr);
    int tmp = Fine_contact(ps,arr);
    if (tmp == -1)
    {
        printf("没有找到,返回\n");
        return;
    }
    int i = 0;
    for (i = tmp; i < ps->sz; i++)
    {
        ps->data[i] = ps->data[i + 1];
    }
    ps->sz--;
    printf("删除成功!\n");
}

3.修改联系人

//修改联系人
void Modife(contact* ps)
{
    assert(ps);
    int arr[20] = { 0 };
    printf("请输入需要修改的联系人:\n");
    scanf("%s", arr);
    int tmp = Fine_contact(ps,arr);
    if (tmp == -1)
    {
        printf("没有找到联系人!\n");
        return;
    }
    printf("请输入名字:");
    scanf("%s", (ps->data)[tmp].nane);
    printf("请输入性别:");
    scanf("%s", (ps->data)[tmp].sex);
    printf("请输入年龄:");
    scanf("%d", &(ps->data)[tmp].age);
    printf("请输入电话:");
    scanf("%s", &(ps->data)[ps->sz].tele);
    printf("请输入地址:");
    scanf("%s", (ps->data)[tmp].addr);
    printf("修改成功!\n");
}

4.在屏幕上打印联系人


//打印联系人
void print(contact* ps)
{
    printf("%-12s %-5s %-5s %-12s %-12s \n","姓名","性别","年龄","电话号码","地址");
    for (int i = 0; i < ps->sz; i++)
    {
        printf("%-12s %-5s %-5d %-12s %-12s\n", (ps->data)[i].nane, (ps->data)[i].sex, (ps->data)[i].age,( ps->data)[i].tele,(ps->data)[i].addr );
    }
}

5.寻找联系人

//寻找联系人
int Fine_contact(contact* ps,char* arr)
{
    assert(ps);
    int i = 0;
    for (i = 0; i < ps->sz; i++)
    {
        if (0==strcmp(arr,(ps->data)[i].nane))
        {
            return i;
        }
    }
    return -1;
}

6.通讯录初始化

//初始化函数
void ContactInit(contact* p)
{
    p->sz = 0;
    memset(p->data, 0, sizeof(p->data));
}

总结

标签: c语言

本文转载自: https://blog.csdn.net/zyt520919/article/details/124356910
版权归原作者 天雨~流芳 所有, 如有侵权,请联系我们删除。

“C语言实现简易通讯录”的评论:

还没有评论