c语言_通讯录(初级版)

这是一个简单的通讯录(实现方案是初级版,并且只能在程序运行期间存在(没有写入文件))(以后还会写一个用动态内存分配+实现文件存储的版本)

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<Windows.h>
#pragma warning(disable:4996)

struct address
{
    char name[20];
    char sex[10];
    int age;
    char phonen[15];
    char site[40];

}people[1000];

int main()
{   
    int i = 0;//用于计数
    char m[20] = { 0 };
    int option = 0;
    printf("###      这是一个通 讯 录^-^    ###\n");

    while (1)
    {
        printf("###-----------------------------###\n");
        printf("###      1.>查找指定联系人      ###\n");
        printf("###-----------------------------###\n");
        printf("###      2.>修改指定联系人      ###\n");
        printf("###-----------------------------###\n");
        printf("###      3.>删除指定联系人      ###\n");
        printf("###-----------------------------###\n");
        printf("###      4.>添加指定联系人      ###\n");
        printf("###-----------------------------###\n");
        printf("###      5.>显示所有联系人      ###\n");
        printf("###-----------------------------###\n");
        printf("###      6.>删除所有联系人      ###\n");
        printf("###-----------------------------###\n");
        printf("###      7.>排序所有联系人      ###\n");
        printf("###-----------------------------###\n");
        printf("###      8.>退出通讯录          ###\n"); 
        printf("###-----------------------------###\n");
        printf("\n请选择要进行的操作:>");
        scanf("%d", &option);
        fflush(stdin);
        switch (option)
        {
        case 1:

            printf("\n\n\t输入要查找的姓名:>");
            gets(m);//因为gets函数可以接收空格而scanf函数不可以

        /*
        **这里使用了一个简单的遍历的算法,也可以封
        **装一个函数,用更高效的查找算法实现
        */
            for (; i < 1000; i++)
            {
                if (strcmp(people[i].name, m) == 0)
                {
                    printf("\n\t姓名:%s\n\t性别:%s\n\t年龄:%d\n\t电话:%s\n\t住址:%s\n", people[i].name,\
                    people[i].sex, people[i].age, people[i].phonen, people[i].site);
                    break;
                }
            }
            if (1000==i)
                printf("\t没有找到该联系人!\n");
            break;
    case 2:
        /*
        **这里实现的是一个基本方案,目前一次只能修改一项内容,并且要重新开始
        **才可以修改另一项或者多项内容。以后会再次改进这里的功能!
        */
        printf("\n\n\t请输入要修改的联系人姓名:>");
        gets(m);
        for (i=0;i < 1000;i++)
        {
            if (strcmp(people[i].name, m) == 0)
            {
                int n = 0;
                printf("请选择要修改的信息:\n\t1.name\n\t2.sex\n\t3.age\n\t4.phone number\n\t5.site\n\t");
                scanf("%d", &n);
                fflush(stdin);
                switch (n)
                {
                case 1:
                    printf("请输入修改后的内容:");
                    char arr[20];
                    gets(arr);
                    strcpy(people[i].name, arr);
                    printf("修改成功!\n");
                    break;
                case 2:
                    printf("\n\t请输入修改后的内容:");
                    gets(arr);
                    strcpy(people[i].sex, arr);
                    printf("修改成功!\n");
                    break;
                case 3:
                    printf("\n\t请输入修改后的内容:");
                    scanf("%d", &people[i].age);
                    fflush(stdin);
                    printf("修改成功!\n");
                    break;
                case 4:
                    printf("\n\t请输入修改后的内容:");
                    gets(arr);
                    strcpy(people[i].phonen, arr);
                    printf("修改成功!\n");
                    break;
                case 5:
                    printf("\n\t请输入修改后的内容:");
                    gets(arr);
                    strcpy(people[i].site, arr);
                    printf("修改成功!\n");
                    break;
                }
                break;
            }
        }
        if (1000==i)
            printf("\t该联系人不存在!\n");
        break;
    case 3:
        printf("\n\n\t请输入要删除的联系人姓名:>");
        gets(m);
        for (i=0; i < 1000; i++)
        {
            if (strcmp(people[i].name, m) == 0)
            {
                strcpy(people[i].name, "\0");
                strcpy(people[i].sex, "\0");
                people[i].age = 0;
                strcpy(people[i].site, "\0");
                strcpy(people[i].phonen, "\0");
                printf("删除成功!\n");
                break;
            }
        }
        if (1000 == i)
            printf("\t该联系人不存在!\n");
        break;
    case 4:

        for (i=0;i < 1000; i++)
        {
            char num[20] = { 0 };
            if (strcmp(people[i].name,num)==0)
            {
                printf("\n\n\t请输入要添加联系人的姓名:>");
                 char arr[20] = { 0 };
                 gets(arr);
                 strcpy(people[i].name, arr);       
                printf("\t请输入要添加联系人的性别:>");
                 gets(arr);
                 strcpy(people[i].sex, arr);
                printf("\t请输入要添加联系人的年龄:>");
                 scanf("%d", &people[i].age);
                 fflush(stdin);
                printf("\t请输入要添加联系人的电话号码:>");
                 gets(arr);
                 strcpy(people[i].phonen, arr);
                printf("\t请输入要添加联系人的住址:>");
                 gets(arr);
                 strcpy(people[i].site, arr);
                printf("\t添加成功!\n");
                break;
            }   
        }
        if (1000 == i)
            printf("添加失败,通讯录已满!\n");
        break;
    case 5:
        for (i = 0;i < 1000; i++)
        {
            if (strcmp(people[i].name, m) != 0)
            {
                printf("\n\t姓名:%s\n\t性别:%s\n\t年龄:%d\n\t电话:%s\n\t住址:%s\n", people[i].name, \
                people[i].sex, people[i].age, people[i].phonen, people[i].site);
            }
        }
        break;
    case 6:
        for (i = 0; i < 1000; i++)
        {
            if (strcmp(people[i].name, m) != 0)
            {
                strcpy(people[i].name, "\0");
                strcpy(people[i].sex, "\0");
                people[i].age = 0;
                strcpy(people[i].site, "\0");
                strcpy(people[i].phonen, "\0");
            }
        }
        if (1000 == i)
            printf("删除成功!\n");
        break;
    case 7: 
        //这块用qsort()给非空姓名数组排序即可
        break;
    case 8:
        return 0;
        break;
    default:
        printf("输入错误!重新选择!");
        break;
    }
}

system("pause");
return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值