1. 程式人生 > >【通訊錄系統】:實現一個通訊錄(可新增、刪除、修改、查詢、顯示、清空、排序)

【通訊錄系統】:實現一個通訊錄(可新增、刪除、修改、查詢、顯示、清空、排序)

#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