【通讯录系统】:实现一个通讯录(可添加、删除、修改、查找、显示、清空、排序)

原创 2016年05月30日 17:15:59
#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NAME_MAX 10
#define SEX_MAX 3
#define AGE_MAX 100
#define TEL_MAX 15
#define ADDR_MAX 20
#define PEOPLE_MAX 1000


typedef struct LINK
{
    char name[NAME_MAX];
    char sex[SEX_MAX];
    int age;
    char tel[TEL_MAX];
    char addr[ADDR_MAX];
}linkman;

typedef struct PEOPLE
{
    int num;
    linkman count[1000];
}*people;


int search(people cou, char *name)
{
    int i = 0;
    for (; i < cou->num; i++)
    {
        if (strcmp(name, (cou->count[i]).name) == 0)
            return i;
    }
    return -1;
}

void add_linkman(people cou)//添加联系人
{
    if (cou->num == 1000)
    {
        printf("该通讯录已满,无法录入信息!\n");
    }
    printf("please input name>:\n");
    scanf("%s", (cou->count[cou->num]).name);
    printf("please input the sex>:\n");
    scanf("%s", (cou->count[cou->num]).sex);
    printf("please input the age>:\n");
    scanf("%d", &(cou->count[cou->num]).age);
    printf("please input the telephone>:\n");
    scanf("%s", (cou->count[cou->num]).tel);
    printf("please input the address>:\n");
    scanf("%s", (cou->count[cou->num]).addr);
    cou->num++;
}

void delete_linkman(people cou)//删除联系人
{
    char name[NAME_MAX];
    int i = 0;
    if (cou->num == 0)
    {
        printf("该通讯录已空,无法删除信息!\n");
        return;
    }
    printf("请输入要删除人的名字>:");
    scanf("%s", &name);
    printf("\n");
    int ret = search(cou, name);
    if (ret == -1)
    {
        printf("此人不存在,删除失败!\n");
    }
    else
    {
        for (i = ret; i < cou->num; i++)
        {
            cou->count[i] = cou->count[i + 1];
        }
        cou->num--;
    }
}

void find_linkman(people cou)//查找联系人
{
    char name[NAME_MAX];
    int i = 0;
    printf("请输入要查找人的名字>:");
    scanf("%s", name);
    if (cou->num == 0)
    {
        printf("当前为空表,查找失败!\n");
        return;
    }
    int ret = search(cou, name);
    if (ret != -1)
    {
        printf("%s\t%s\t%d\t%s\t%s\n",
            (cou->count[ret]).name,
            (cou->count[ret]).sex,
            (cou->count[ret]).age,
            (cou->count[ret]).tel,
            (cou->count[ret]).addr);
    }
    else
    {
        printf("此联系人不存在,查找失败!\n");
    }
}

void change_linkman(people cou)//修改指定人信息
{
    char name[NAME_MAX];
    int i = 0;
    printf("请输入要修改人的名字>:");
    scanf("%s", name);
    if (cou->num == 0)
    {
        printf("当前为空表,查找失败!\n");
        return;
    }
    int ret = search(cou, name);
    if (ret != -1)
    {
        printf("please input name again>:\n");
        scanf("%s", (cou->count[ret]).name);
        printf("please input the sex>:\n");
        scanf("%s", (cou->count[ret]).sex);
        printf("please input the age>:\n");
        scanf("%d", &(cou->count[ret]).age);
        printf("please input the telephone>:\n");
        scanf("%s", (cou->count[ret]).tel);
        printf("please input the address>:\n");
        scanf("%s", (cou->count[ret]).addr);
    }
}

void display_linkman(people cou)//显示所有联系人
{
    int i = 0;
    if (cou->num == 0)
    {
        printf("当前为空表,显示失败!\n");
        return;
    }
    for (i = 0; i < cou->num; i++)
    {
        printf("%s\t%s\t%d\t%s\t%s",
            (cou->count[i]).name,
            (cou->count[i]).sex,
            (cou->count[i]).age,
            (cou->count[i]).tel,
            (cou->count[i]).addr);
        printf("\n");
    }
}

void empty_linkman(people cou)//清空所有联系人
{
    cou->num = 0;
}
struct stu
{
    char name[15];
};
void name_sort(people cou)//按名字顺序排序所有人
{
    int i = 0;
    int j = 0;
    if (cou->num == 0)
    {
        printf("当前为空表,排序失败!\n");
        return;
    }
    for (i = 0; i < cou->num - 1; i++)
    {
        for (j = 0; j < cou->num - i - 1; j++)
        {
            if (strcmp(cou->count[j].name, (cou->count[j + 1]).name)>0)
            {
                linkman tmp = cou->count[j];
                cou->count[j] = cou->count[j + 1];
                cou->count[j + 1] = tmp;
            }
        }

    }
}
void menu()
{
    printf("************************************\n");
    printf("**********1.添加联系人信息**********\n");
    printf("********2.删除指定联系人信息********\n");
    printf("********3.查找指定联系人信息********\n");
    printf("********4.修改指定联系人信息********\n");
    printf("********5.显示所有联系人信息********\n");
    printf("********6.清空所有联系人************\n");
    printf("*******7.以名字排序所有联系人*******\n");
    printf("***************0 退出***************\n");
    printf("************************************\n");
}

int main()
{
    int opp = 1;
    struct PEOPLE cou;
    cou.num = 0;
    while (opp)
    {
        menu();
        printf("请选择>:");
        scanf("%d", &opp);
        switch (opp)
        {
        case 0:
            exit(EXIT_FAILURE);
            break;
        case 1:
            add_linkman(&cou);
            break;
        case 2:
            delete_linkman(&cou);
            break;
        case 3:
            find_linkman(&cou);
            break;
        case 4:
            change_linkman(&cou);
            break;
        case 5:
            display_linkman(&cou);
            break;
        case 6:
            empty_linkman(&cou);
            break;
        default:
        {
                   printf("输入有误,请重新输入>:\n");
                   break;
        }
        }
    }
    system("pause");
    return 0;
}

    如下图(部分截图):

wKioL1ZcSrCx-KNNAAB4ZBqSNqs288.png

wKioL1ZcSrKh3gKkAACGYedkY_A292.png


用C语言模拟实现一个通讯录,要求实现其添加、删除、修改、查找、显示和排序联系人信息的功能

题目:用C语言模拟实现一个通讯录,要求实现其添加、删除、修改、查找、显示和排序联系人信息的功能 解析:原代码如下: #define _CRT_SECURE_NO_WARNINGS #include...

用c语言实现 一个通讯录(实现 增加、删除、查找、修改、显示、清空功能)

源程序头文件contact.h #ifndef _CONTACT_H__ #define _CONTACT_H__ #define NAME_MAX 20 #define SEX_MAX 5 #de...
  • S0Soul
  • S0Soul
  • 2015年04月09日 12:45
  • 578

汇编实现的简单的通讯录系统,有插入,修改,删除,打印,查找功能

是这学期的作业,个人感觉还不错,分享给大家,还有很多可以改进的地方,希望大家不吝指教。...

android从零单排之手机通讯录的读取、添加、删除、查找

工作中牵扯到了对android手机通讯录的系列操作,网上查找了好多资料,大多数都介绍的是模模糊糊,终于找到了一篇靠谱的,于是摘抄下来,大家共同学习: Android联系人数据库文件(contact2...

【XML解析】(3)利用DOM解析技术在XML文档下实现一个《通讯录管理系统》

通讯录管理系统版本2请参考: http://blog.csdn.net/qq_35415600/article/details/72819217 项目实战! ①请使用XML保存数据,完成...

c语言实现通讯录,包括增加名字,删除信息,查找,修改,排序

c语言可以实现的简单程序,很好的运用了结构体,结构体数组,结构体指针,函数的实现...

EditText联想通讯录并清空数据

前言:懂得珍惜方可拥有更多。废话不多说,先上效果演示: 下面是整个工程的思路: 一、获取通讯录 首先通过内容接受者来获取通讯录相关信息 其次PhoneUtils进行数据的处理/...

Android手机通讯录的读取、添加、删除、查找

Android联系人数据库文件(contact2.db) 有研究过手机通讯录数据的童鞋肯定知道一个数据库文件:目前是contact2.db(哥的手机是Android4.04的) 在此路径下可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【通讯录系统】:实现一个通讯录(可添加、删除、修改、查找、显示、清空、排序)
举报原因:
原因补充:

(最多只允许输入30个字)