通讯录(静态)

标签: 通讯录
9人阅读 评论(0) 收藏 举报
分类:
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>  
#include <string.h> 
#include <Windows.h>

#define People_Max 1000 // 通讯录人数上限

typedef struct Information // 联系人信息
{
    char name[10];
    char sex[5];
    int age;
    int tel[15];
    char addr[20];
}contacts;

typedef struct Address_book // 通讯录
{
    int num; // 联系人人数
    contacts count[People_Max]; // 数组里的每个元素都是一位联系人的信息
}*people;

//在通讯录里遍历到指定联系人
static int search(people p, const char *name) 
{
    for (int i = 0; i < p->num; i++)
    {
        if (strcmp(name, (p->count[i]).name) == 0)
        {
            return i;
        }
    }
    return -1;
}

//添加联系人 
void Add_Contacts(people p)
{
    if (p->num == 1000)
    {
        printf("添加失败,通讯录已满,无法录入信息!\n");
    }
    else
    {
        printf("请输入姓名:");
        scanf("%s", (p->count[p->num]).name);
        printf("请输入性别:");
        scanf("%s", (p->count[p->num]).sex);
        printf("请输入年龄:");
        scanf("%d", &(p->count[p->num]).age);
        printf("请输入电话号码:");
        scanf("%s", (p->count[p->num]).tel);
        printf("请输入地址:");
        scanf("%s", (p->count[p->num]).addr);
        printf("添加成功!\n");
        p->num++;
    }
}

//删除联系人
void Delete_Contacts(people p)
{
    if (p->num == 0)
    {
        printf("该通讯录当前为空!\n");
        return;
    }
    char name[10];
    printf("请输入要删除联系人的名字:");
    scanf("%s", name);
    int ret = search(p, name);   //查找指定信息人  
    if (ret == -1)
    {
        printf("此联系人不存在,删除失败!\n");
    }
    else
    {
        int i = 0;
        for (i = ret; i<p->num; i++)
        {
            p->count[i] = p->count[i + 1];
        }
        p->num--;
        printf("删除成功!\n");
    }
}

//修改指定联系人的信息 
void Revise_Contacts(people p)
{
    if (p->num == 0)
    {
        printf("该通讯录当前为空!\n");
        return;
    }
    char name[10];
    printf("请输入要修改联系人的名字:");
    scanf("%s", name);
    int ret = search(p, name);   //查找指定信息人
    if (ret == -1)
    {
        printf("此联系人不存在,修改失败!\n");
    }
    else
    {
        printf("请输入姓名:");
        scanf("%s", (p->count[ret]).name);
        printf("请输入性别:");
        scanf("%s", (p->count[ret]).sex);
        printf("请输入年龄:");
        scanf("%d", &(p->count[ret]).age);
        printf("请输入电话号码:");
        scanf("%s", (p->count[ret]).tel);
        printf("请输入地址:");
        scanf("%s", (p->count[ret]).addr);
        printf("修改成功!\n");
    }
}

//查找联系人 
void Find_Contacts(people p)
{
    if (p->num == 0)
    {
        printf("该通讯录当前为空!\n");
        return;
    }
    char name[10];
    printf("请输入要查找联系人的名字:");
    scanf("%s", name);
    int ret = search(p, name);   //查找指定信息人  
    if (ret == -1)
    {
        printf("此联系人不存在,查找失败!\n");
    }
    else
    {
        printf("姓名\t性别\t年龄\t电话号码\t地址\n");
        printf("%s\t%s\t%d\t%s\t%s\n", (p->count[ret]).name, (p->count[ret]).sex, (p->count[ret]).age, (p->count[ret]).tel, (p->count[ret]).addr);
    }
}

//显示所有联系人信息
void Display_Contacts(people p) 
{
    if (p->num == 0)
    {
        printf("该通讯录当前为空!\n");
        return;
    }
    int i = 0;
    printf("姓名\t性别\t年龄\t电话号码\t地址\n");
    for (i = 0; i<p->num; i++)
    {
        printf("%s\t%s\t%d\t%s\t%s\n", (p->count[i]).name, (p->count[i]).sex, (p->count[i]).age, (p->count[i]).tel, (p->count[i]).addr);
    }
}

//清空所有联系人 
void Empty_Contacts(people p) 
{
    p->num = 0;
    printf("清空成功!\n");
}

//按名字顺序排序所有人 
void Sort_Contacts(people p) 
{
    if (p->num == 0)
    {
        printf("该通讯录当前为空!\n");
        return;
    }
    int i = 0;
    int j = 0;
    for (i = 0; i<p->num - 1; i++)   //冒泡实现联系人的排序  
    {
        for (j = 0; j<p->num - i - 1; j++)
        {
            if (strcmp(p->count[j].name, (p->count[j + 1]).name)>0)
            {
                contacts tmp = p->count[j];
                p->count[j] = p->count[j + 1];
                p->count[j + 1] = tmp;
            }
        }
    }
    printf("排序成功!\n");
}

//菜单
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()
{
    struct Address_book p;
    p.num = 0;
    int op = 0;
    do
    {
        menu();
        printf("请选择:");
        scanf("%d", &op);
        switch (op)
        {
        case 0:
            break;
        case 1:
            Add_Contacts(&p);
            break;
        case 2:
            Delete_Contacts(&p);
            break;
        case 3:
            Find_Contacts(&p);
            break;
        case 4:
            Revise_Contacts(&p);
            break;
        case 5:
            Display_Contacts(&p);
            break;
        case 6:
            Empty_Contacts(&p);
            break;
        case 7:
            Sort_Contacts(&p);
            break;
        default:
            printf("输入有误,请重新选择:\n");
            break;
        }
    } while (op);
    system("pause");
    return 0;
}
查看评论

通讯录-静态实现

头文件:     “Contact.h” #include #include #include enum po { EXIT, ADD, DELE, SER, MODIFY, DISPL...
  • qq_33951180
  • qq_33951180
  • 2016-05-14 16:31:03
  • 498

有趣的通讯录—<静态版>

在这里我们要解决的问题是采用顺序表的形式制作一个通讯录。对于顺序表就是一种静态的模式,后续会有动态模式,以及文件操作模式,敬请期待!!!后续我会更新其他方式的操作。 在这里,我们需要三个文件,con...
  • qq_26768741
  • qq_26768741
  • 2016-05-14 09:45:41
  • 723

静态通讯录、动态通讯录

通讯录(静态);一个能够实现增加、查找、修改、删除、按姓名排序、打印所有联系人 清空所有联系人这些功能的通讯录联系人:姓名、年龄、性别、地址、电话1.头文件:#pragma once #includ...
  • FangXiaXin
  • FangXiaXin
  • 2017-05-16 23:40:42
  • 237

静态通讯录

这个通讯录存粹用到C的知识就可以,主要就是一个联系人信息结构体,再就是一个结构体数组,对结构体数组反复操作 进行增、删、查、改、排序(由于是初学者还不能对中文名进行排序)、清空写等功能。在这里我们可...
  • qq_34312386
  • qq_34312386
  • 2016-08-05 03:08:14
  • 205

通讯录.静态

contact.h#ifndef __CONTACT_H__//防止头文件的重复引用 #define __CONTACT_H__ #include #define MAX 1000 #define ...
  • lx8211667846947
  • lx8211667846947
  • 2017-07-22 19:53:55
  • 68

H5页面防微信通讯录按字母搜索定位

H5防微信通讯录 按字母搜索定位
  • wangbo54979
  • wangbo54979
  • 2017-02-22 15:02:20
  • 932

通讯录的静态实现

实现一个通讯录: 通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改...
  • qq_29503203
  • qq_29503203
  • 2016-05-21 09:01:21
  • 540

实现一个静态通讯录

       前几篇博客讲了一些自定义类型,今天我们就来实现一个通讯录:       通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址。       提供方法:  ...
  • yummy_alice
  • yummy_alice
  • 2018-03-01 15:38:30
  • 6

静态通讯录的实现

利用现学的C语言知识,从而编写一个简单的静态通讯录 通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址 这个通讯录的主要功能有: 1.增加联系人信息 2.删除...
  • aaronlanni
  • aaronlanni
  • 2017-07-16 15:06:22
  • 99

简单静态通讯录的实现

头文件部分: Contact.h #define _CRT_SECURE_NO_WARNINGS #ifndef __CONTACT_H__ #define __CONTACT_H__ #inc...
  • flowing_wind
  • flowing_wind
  • 2017-07-17 23:45:54
  • 62
    个人资料
    持之以恒
    等级:
    访问量: 652
    积分: 222
    排名: 90万+
    文章分类
    文章存档