用c语言实现的简单通讯录

需求
制作一个电子通讯录,通过该通讯录能存入好友ID 号、姓名(英文)、手机号码、家庭住址、公司电话。
模块
主界面:主要显示软件功能。
A)添加好友信息。
B)列表好友信息。(包含排序功能)
C)搜索好友
D)删除好友
添加好友:
用户输入 INSERT 命令后,让用户输入好友信息。添加成功或失败都需要提示用户
列表好友:
用户输入 DISPLAY 命令后,好友信息升序排列。
搜索好友:
用户输入 SEARCH 命令后,让用户输入将要搜索好友姓名查询。如果未搜索到请友好提示。如果搜索到,显示出该好友信息。
删除好友:
用户输入 DELETE 命令后,让用户输入将要删除好友姓名删除,如果存在同名的多个好友,则列表出,所有同名的好友信息,让用户通过输入 ID 号删除。提示用户删除成功。
用c语言实现简单通讯录的一些常用功能
1.添加好友
2.列出好友(排序)
3.搜索好友
4.删除好友

#ifndef __INFORMATION_H__
#define __INFORMATION_H__

#define FALSE -1
#define TRUE  0
#define N   20

typedef struct _Adress
{
    int ID;                 //好友ID
    char Name[N];           //姓名(英文)
    char Phone_Num[N] ;     //手机号
    char Home_Address[N];   //家庭住址
    char Company_Tell[N];   //公司电话
    struct _Adress *next;   
}NODE;

typedef NODE * PNode;


//菜单界面
void Menu();

//创建一个链表
PNode create_list();

//添加好友信息( 尾插法插入好友信息)
int Add_Friend(PNode h);

//列出好友(升序排列)
int Friend_Information(PNode h);

//通过输入好友姓名搜索并显示该好友的信息
int Search_Friend(PNode h ,char *name);

//删除好友
int Delete_Friend(PNode h ,char *name);



#endif
#include "information.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

PNode create_list()
{
PNode list = (NODE *)malloc(sizeof(NODE)/sizeof(char));
if(list == NULL)
return NULL;

list->next = NULL;

return list;    

}

void Menu()
{
system(“clear”);
printf(“\t**********************************************\n”);
printf(“\t~ 欢迎使用通讯 ~\n”);
printf(“\t~ ~\n”);
printf(“\t~ 1>>>>>添加好友 ~\n”);
printf(“\t~ 2>>>>>列出好友 ~\n”);
printf(“\t~ 3>>>>>搜索好友 ~\n”);
printf(“\t~ 4>>>>>删除好友 ~\n”);
printf(“\t~ 5>>>>>退出 ~\n”);
printf(“\t~ ~\n”);
printf(“\t~ ~\n”);
printf(“\t**********************************************\n”);
printf(“\t~ ~\n”);
printf(“\t~ ~\n”);
printf(“\t提示:请输入对应数字选择相应功能 \n”);
}

//尾插法插入好友信息
int Add_Friend(PNode h)
{
if(h == NULL)
return FALSE;

PNode p = (PNode)malloc(sizeof(NODE)/sizeof(char));
if(p == NULL)
    return FALSE;
p->next = NULL;

system("clear");
printf("\t*********添加好友信息*********\n");

printf("\t您的好友的ID:");
scanf("%d",&p->ID);
printf("\n");

printf("\t您的好友的姓名:");
scanf("%s",p->Name);
printf("\n");

printf("\t您的好友的手机号:");
scanf("%s",p->Phone_Num);
printf("\n");

printf("\t您的好友的家庭住址:");
scanf("%s",p->Home_Address);
printf("\n");

printf("\t您的好友的公司电话:");
scanf("%s",p->Company_Tell);
printf("\n");

PNode tmp = h;
while(tmp->next)
{
    tmp = tmp->next;
}
tmp->next = p;

return TRUE;

}

//列出好友
int Friend_Information(PNode h)
{
int count = 0;
int tmp;
int i,j;

PNode p = h->next;
printf("***************好友信息****************\n");

if(p == NULL)
{
    printf("没有好友。\n");
}

while(p)
{
    count++;
    p = p->next;
}

p = h->next;
for(i = 0; i < count - 1; i++)
{
    for(j = 0; j < count - i - 1; j++)
    {
        if(p->ID > p->next->ID)
        {
             tmp = p->ID;
            p->ID = p->next->ID;
            p->next->ID = tmp;              
        }
        p = p->next;
    }
    p = h->next;
}

p = h->next;
while(p)
{
    printf("****************************************\n");
    printf("ID:%d\n 姓名:%s\n 手机号:%s\n 家庭住址:%s\n 公司电话:%s\n",p->ID,p->Name,p->Phone_Num,p->Home_Address,p->Company_Tell);
    printf("****************************************\n");
    p = p->next;
}

printf("\n");
return TRUE;

}

//搜索好友
int Search_Friend(PNode h,char *name)
{

PNode p = h;
PNode q = NULL;
int  flag = 0;

if((p != NULL)&&(p->next != NULL))
{
    while(p->next)
    {
        q = p->next;
        if((strcmp(q->Name,name) == 0)&&(q != NULL))
        {
            flag = 1;
            printf("****************************************\n");
            printf("该好友信息:\n ID:%d\n 姓名:%s\n 手机号:%s\n 家庭住址:%s\n 公司电话:%s\n",q->ID,q->Name,q->Phone_Num,q->Home_Address,q->Company_Tell);
            printf("****************************************\n");
        }
        p = p->next;
    }

}
if(flag != 1)
{
    printf("没有该好友的信息\n");
}
return TRUE;

}
//删除好友
int Delete_Friend(PNode h, char *name)
{
int count = 0;
PNode p = h;
PNode q = NULL;

printf("***************删除好友****************\n");
while(p->next)     //遍历所有结点
{
    q = p->next;
    if(strcmp(q->Name, name) == 0)
    {    
        count++;
    }
    p = p->next;
}
printf("一共有%d个相同名字的信息 \n",count);
p = h;
if(count > 1)
{
    Search_Friend(h, name);
    //p = h;
    int num;
    printf("请输入你要删除的ID :  ");
    scanf("%d",&num);

    while((p != NULL)&&(p->next != NULL))
    {
        q = p->next;
        if(q->ID == num)
        {
            p->next = q->next;
            free(q);
            printf("删除成功\n");
        }
        p = p->next;
    }
}

if(count == 1)
{
    while((p != NULL)&&(p->next != NULL))
    {
        q = p->next;
        if(strcmp(q->Name, name) == 0)
        {
            p->next = q->next;
            free(q);
            printf("删除成功\n");
        }
        p = p->next;
    }
}

if(count == 0)
{
    printf("删除失败,没有该好友的信息\n");
}
return TRUE;

}


#include<stdio.h>
#include"information.h"

int main()
{
int num;
int num1;
char name[N];
PNode head = create_list();
int j;
while(1)
{
Menu();
scanf(“%d”,&num);

   switch(num)
   {
        case 1:              //添加好友
        {       
            Add_Friend(head);
            printf("\n");
        //for(j = 0;j < 3; j++)
        //{
        //  sleep(1);
        //  printf(".");
        //  fflush(stdout);     
        //}
            printf("添加成功\n");
            printf("返回主界面请输入 1 :");
            scanf("%d",&num1);
            if(num1 == 1)
            {
                break;
            }
            else
            {
                printf("输入有误,请重新输入。\n");
                scanf("%d",&num1);
                break;
            }
            break;              
        }
        case 2:                      //列出好友
        {
            system("clear");
            Friend_Information(head); 

            printf("返回主界面请输入 1:");
            scanf("%d",&num1);
            if(num1 == 1)
            {
                break;
            }
            else
            {
                printf("输入有误,请重新输入。\n");
                scanf("%d",&num1);
                break;
            }
            num = 0;
            break;          
        }
        case 3:                       //查询好友
        {
            system("clear");
            printf("请输入你要查询好友的姓名:");
            scanf("%s",name);
            Search_Friend(head, name);

            printf("返回主界面请输入 1:");
            scanf("%d",&num1);
            if(num1 == 1)
            {
                break;
            }
            else
            {
                printf("输入有误,请重新输入。\n");
                scanf("%d",&num1);
                break;
            }
            num = 0;
            break;  
        }
        case 4:                           //删除好友
        {
            system("clear");
            printf("请输入你要删除好友的姓名:");
            scanf("%s",name);
            Delete_Friend(head, name);

            printf("返回主界面请输入 1:");
            scanf("%d",&num1);
            if(num1 == 1)
            {
                break;
            }
            else
            {
                printf("输入有误,请重新输入。\n");
                scanf("%d",&num1);
                break;
            }
            num = 0;
            break;  
        }
        case 5:                        //退出
        {
            system ("clear");
            return TRUE;
        }
        default:
        {
            system("clear");
            printf("输入有误!\n");
            printf("返回主界面请输入 1:");
            scanf("%d",&num1);
            if(num1 == 1)
            {
                break;
            }
            else
            {
                printf("输入有误,请重新输入。\n");
                scanf("%d",&num1);
                break;
            }
            num = 0;
            break;
        }
   }


}

}
“`

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值