通讯录咸鱼版

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

#define SIZE  100
#define NONE  "\e[0m"
#define RED   "\e[0;31m"
#define GREEN  "\e[0;32m"
#define YELLOW  "\e[1;33m"
int person=0;
int number=1;
struct student
{
    char name[20];
    int age;
    char sex[10];
};
typedef struct student STU;
void welcome()
{
    system("clear");
    printf(GREEN"\n\n\n***************************************\n");
    printf("欢迎来到...............................\n");
    printf("***************************************\n"NONE);
    sleep(3);
}

void menu()
{
    system("clear");
    printf(RED"\n\n\n******************************************\n");
    printf("1、添加信息                    2、查看信息\n");
    printf("3、查找信息                    4、删除信息\n");
    printf("5、修改信息                    6、退出\n");
    printf("******************************************\n"NONE);
}

void AddInfo (STU *s[])
{   
    printf("please input :\n");
    while(1)
    {
        s[person]=(STU*)malloc(sizeof(STU));
        if(NULL==s[person])
        {
            printf("malloc failure!\n");
        }
        scanf("%s",s[person]->name);
        if(!strcmp(s[person]->name,"bye"))
        {
            break;
        }
        scanf("%d",&s[person]->age);
        scanf("%s",s[person]->sex);
        person++;

        if(person==SIZE)
        {
            printf("数据库已满\n");
        }
    }
}

void Showall(STU *stu[])
{
    int i,j;
    STU *tmp;
    for(i=0;i<person-1;i++)
    {
        for(j=0;j<person-i-1;j++)
        {
           if(strcmp(stu[j+1]->name,stu[j]->name)>0)
           {
               tmp=stu[j+1];
               stu[j+1]=stu[j];
               stu[j]=tmp;
           }
        }
    }

    for(i=0;i<person;i++)
    {   
        printf("%d、%s %d %s\n",number+i,stu[i]->name,stu[i]->age,stu[i]->sex);
    }
    sleep(1);
}

void findinfo(STU *stu[])
{
    int i;
    char str[20]={0};
    printf("please input name :\n");
    scanf("%s",str);
    for(i=0;i<person;i++)
    {
       if( strcmp(stu[i]->name,str)==0)
       {
           printf("%s %d %s",stu[i]->name,stu[i]->age,stu[i]->sex);
           sleep(3);
           break;
       }
       if(i+1==person)
       {
           printf("无此人\n");
           sleep(3);
       }
    }
}

    void delinfo(STU *stu[])
    {
        printf("输入要删除人名:\n");
        char str[20]={0};
        int i,j;
        scanf("%s",str);
        for(i=0;i<person;i++)
        {
            if(strcmp(stu[i]->name,str)==0)
            {   
                
                for(j=i;j<person-1;j++)
                {
                    stu[j]=stu[j+1];
                }
                person--;
            }
            break;
        }
    }

void changeinfo(STU *stu[])
{
    printf("请输入修改人的姓名:\n");
    int i,j;
    char s[10]={0};
    char str[20]={0},ptr[20]={0};
    scanf("%s",str);
    for(i=0;i<person;i++)
    {
        if(strcmp(stu[i]->name,str)==0)
        {
            printf("请输入修改数据:\n");
            scanf("%s %d %s",ptr,&j,s);
            strcpy(stu[i]->name,ptr);
            stu[i]->age=j;
            strcpy(stu[i]->sex,s);
            break;
        }
    }

}


int main()
{
    struct student *stu[SIZE]={0};
    int choice;

    welcome();
    while(1)
    {
        menu();
        scanf("%d",&choice);

        switch (choice)
        {
            case 1:
                AddInfo(stu);
                break;
            case 2:
                Showall(stu);
                break;
            case 3:
                findinfo(stu);
                break;
            case 4:
                delinfo(stu);
                break;
            case 5:
                changeinfo(stu);
                break;
            case 6:
                exit(0);
                break;
        }
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值