linuxC通讯录

/*****************************************************
copyright (C), Nanjing University of Tecnology
File name:list.c
Author: Zhangchao  Version:0.1    Date: 2016-12-13 16:28
Description:
Funcion List: 
*****************************************************/


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


struct list
{
    char name[30];
    char sex[30];
    char birth[30];
    char phone[30];
    char job[30];
    char email[30];
    struct list *next;
};




typedef struct list List;
typedef struct list *Link;


void creat_new_node(Link *new_node);
void creat_link(Link *head)                         //创建链表
{
    creat_new_node(head);
    (*head)->next = NULL;
}


void creat_new_node(Link *new_node)           //创建结点
{
    *new_node = (Link)malloc(sizeof(List));            //分配空间
    if(*new_node == NULL)
    {
        printf("malloc error\n");
        exit(-1);
    }
    
}


void creat_new_node(Link *new_node);
void add_new_node(Link *head)                       //添加联系人功能
{
    Link new_node;                                 //创建新结点插入
    creat_new_node(head);
    printf("请输入姓名:");
    scanf("%s",(new_node)->name);
    printf("请输入性别:");
    scanf("%s",(new_node)->sex);
    printf("请输入生日:");
    scanf("%s",(new_node)->birth);
    printf("请输入电话:");
    scanf("%s",(new_node)->phone);
    printf("请输入职业:");
    scanf("%s",(new_node)->job);
    printf("请输入邮箱:");
    scanf("%s",(new_node)->email);
    printf("添加完成\n");
    insert_node(head,new_node);
    
}




insert_node(Link head,Link new_node)     //前插
{
   (new_node)->next = head->next;
   head->next = new_node;
}


void menu_select()                                 //菜单显示
{
    printf("**************欢迎使用通讯录**************\n");
    printf("************请选择要使用的功能************\n");
    printf("            1.添加联系人                      \n");
    printf("            2.查找联系人                      \n");
    printf("            3.删除联系人                      \n");
    printf("            4.显示通讯录                      \n");
    printf("            5.清空通讯录                      \n");
    printf("            6.退出通讯录                      \n");
    printf("******************************************\n");
    printf("******************************************\n");
}


void switch_func(Link *head)                  //功能选择
{
    int num;
    scanf("%d",&num);
    switch(num)
    {
       case 1:add_new_node(head);break;
       case 2:find_node(head);break;
       case 3:delete_node(head);break;
    //   case 4:display_link(head);break;
   //    case 5:release_link(head);break;
   //    case 6:exit_link();break;
       default:printf("功能不存在,请重新输入对应编号!");break;
    }
}


find_node(Link head)                     //查找联系人功能
{
    char name[30];
    Link p = head->next;
    printf("请输入您要查找的联系人姓名:");
    scanf("%s",name);
    if(p->next == NULL)
    {
        printf("通讯录是空的");
        return;
    }
    else
    {
        while(strcmp(p->name,name) != 0 && p->next != NULL)
        {
            p=p->next;
        }
        if(p->next == NULL)
        {
            if(strcmp(p->name,name) !=0)
            {
                printf("查无此人");
            }
            else
            {
               printf("%s\n",p->name);
               printf("%s\n",p->sex);
               printf("%s\n",p->birth);
               printf("%s\n",p->phone);
               printf("%s\n",p->job);
               printf("%s\n",p->email);
            }
        }
        else
        {
            
               printf("%s\n",p->name);
               printf("%s\n",p->sex);
               printf("%s\n",p->birth);
               printf("%s\n",p->phone);
               printf("%s\n",p->job);
               printf("%s\n",p->email);
            
         }
    }
}


delete_node(Link head)                               //删除联系人
{
    char name[30];
    Link p1,p2;
    p1 = head->next;
    p2 = head;
    printf("请输入要删除的联系人姓名:");
    scanf("%s",name);
    if(head->next == NULL)
    {
        printf("通讯录为空");
        return;
    }
    while(strcmp(p1->name,name) != 0 && p1->next !=NULL)
    {
       p2 = p1;
       p1 = p1->next;
    }
    p2->next = p1->next;
    free(p1);
}




int main(int argc, char **argv)                //主函数
{
    Link head = NULL;
    Link new_node = NULL;
    creat_link(&head);
    while(1)
    {
        menu_select();
        switch_func(&head);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值