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

来源:互联网 发布:java 生成jar包命令 编辑:程序博客网 时间:2024/05/22 00:29
#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 1000typedef 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


0 0