用C语言实现简单通讯录

完成一个通讯录,实现以下这几个功能:

1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人

具体实现 如下:

头文件:

contact.h:

#ifndef ___CONTACT_H__
#define __CONTACT_H__
#include <stdio.h>
#include <string.h>
typedef struct  PeoInfo
{
    char name[20];
    char sex[10];
    int age;
    char address[30];
    char tel[10];
}PeoInfo;
typedef struct Contact
{
    PeoInfo data[1000];
    int count;
}Contact;
void menu();
void add_con(Contact* pcon);
void del_con(Contact* pcon);
int cmp(Contact* pcon,char name[]);
void find_con(Contact* pcon);
void empty_con(Contact* pcon);
void sort_con(Contact* pcon);
void mod_con(Contact* pcon);
void show_con(Contact* pcon);
#endif //__CONTACT_H__
contact.c:
主要实现过程:
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//1.    添加联系人信息
//2.    删除指定联系人信息
//3.    查找指定联系人信息
//4.    修改指定联系人信息
//5.    显示所有联系人信息
//6.    清空所有联系人
//7.    以名字排序所有联系人
void menu()
{
    printf("***********************************\n");
    printf("**********1:添加   2:删除**********\n");
    printf("**********3:查找   4:修改**********\n");
    printf("**********5:显示   6:清空**********\n");
    printf("**********7:排序   0:退出**********\n");
    printf("***********************************\n");
}
int cmp(Contact *pcon,char name[])
{
    int i = 0;
    for(i=0;i<pcon->count;i++)
    {
        if(strcmp(pcon->data[i].name,name)==0)
        {
            return i;
        }
    }
    return -1;
}
void add_con(Contact *pcon)
{
    if(pcon->count>1000)
    {
        printf("空间已满\n");
    }
    else
    {
        printf("请输入姓名>");
        scanf("%s",pcon->data[pcon->count].name);
        printf("请输入性别>");
        scanf("%s",pcon->data[pcon->count].sex);
        printf("请输入年龄>");
        scanf("%d",&pcon->data[pcon->count].age);
        printf("请输入地址>");
        scanf("%s",pcon->data[pcon->count].address);
        printf("请输入电话>");
        scanf("%s",pcon->data[pcon->count].tel);
    }
    pcon->count++;
}
void del_con(Contact* pcon)
{
    int ret = 0;
    int input  = 0;
    int i = 0;
    char name[20];
    printf("请输入你要删除的人的姓名>");
    scanf("%s",name);
    ret = cmp(pcon,name);
    if(ret == -1)
    {
        printf("查无此人\n");
        return;
    }
    else
    {
        printf("****确定是否删除?*****\n");
        printf("****1:删除  2:取消****\n");
        scanf("%d",&input);
        if(input==2)
        {
            printf("取消成功\n");
            return;
        }
        else
        {
            for(i=ret;i<pcon->count-1-1;i++)
            {
                pcon->data[i] = pcon->data[i+1];
            }
            printf("删除完毕\n");
            return;
        }
    }
}
void find_con(Contact* pcon)
{
    int ret = 0;
    char name[20];
    printf("请输入要查找那个人的名字>");
    scanf("%s",name);
    ret = cmp(pcon,name);
    if(ret == -1)
    {
        printf("查无此人\n");
        return;
    }
    else
    {
        printf("姓名:%s\n",pcon->data[ret].name);
        printf("性别:%s\n",pcon->data[ret].sex);
        printf("年龄:%d\n",pcon->data[ret].age);
        printf("地址:%s\n",pcon->data[ret].address);
        printf("电话:%s\n",pcon->data[ret].tel);
    }
}
void mod_con(Contact* pcon)
{
    int ret = 0;
    char name[20];
    printf("请输入要修改的人的名字>");
    scanf("%s",name);
    ret = cmp(pcon,name);
    if(ret == -1)
    {
        printf("查无此人\n");
        return;
    }
    else
    {
        printf("修改的名字>");
        scanf("%s",pcon->data[ret].name);
        printf("修改的性别>");
        scanf("%s",pcon->data[ret].sex);
        printf("修改的年龄>");
        scanf("%d",&pcon->data[ret].age);
        printf("修改的地址>");
        scanf("%s",pcon->data[ret].address);
        printf("修改的电话>");
        scanf("%s",pcon->data[ret].tel);
    }
    printf("修改完毕\n");
}
void show_con(Contact* pcon)
{
    int i = 0;
    if(pcon->count == 0)
    {
        printf("没有成员\n");
        return;
    }
    for(i=0;i<pcon->count;i++)
    {
        printf("姓名:%s\n",pcon->data[i].name);
        printf("性别:%s\n",pcon->data[i].sex);
        printf("年龄:%d\n",pcon->data[i].age);
        printf("地址:%s\n",pcon->data[i].address);
        printf("电话:%s\n",pcon->data[i].tel);
    }
}
void empty_con(Contact* pcon)
{
    int input = 0;
    printf("***** 确定要清空 ?*****\n");
    printf("*****1:清空  2:取消****\n");
    printf("请选择>");
    scanf("%d",&input);
    if(input == 2)
    {
        printf("取消成功\n");
        return;
    }
    if(input)
    pcon->count = 0;
}
void sort_con(Contact* pcon)
{
    int i = 0;
    int j = 0;
    for(i=0;i<pcon->count-1;i++)
    {
        for(j=0;j<pcon->count-1-i;j++)
        {
            if(strcmp(pcon->data[j].name,pcon->data[j+1].name)>0)
            {
                PeoInfo temp;
                temp = pcon->data[j];
                pcon->data[j] = pcon->data[j+1];
                pcon->data[j+1] = temp;
            }
        }
    }
    printf("排序完成\n");
}
test.c:
#define  _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
enum OP
{
    EXIT,
    ADD,
    DEL,
    FIND,
    MOD,
    SHOW,
    EMPTY,
    SORT
};
int main()
{
    Contact con;
    int input = 0;
    con.count = 0;
    do 
    {
        menu();
        printf("请选择>");
        scanf("%d",&input);
        switch(input)
        {
        case ADD:
            add_con(&con);
            break;
        case DEL:
            del_con(&con);
            break;
        case FIND:
            find_con(&con);
            break;
        case MOD:
            mod_con(&con);
            break;
        case SHOW:
            show_con(&con);
            break;
        case EMPTY:
            empty_con(&con);
            break;
        case SORT:
            sort_con(&con);
            break;
        case EXIT:
            break;
        default:
            printf("选择错误\n");
        }
    } while (input);
    return 0;
}

输入信息:
这里写图片描述

排序:
这里写图片描述

然后打印:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值