通訊錄終極版

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

#define len_linklist 0
#define maxsize 11
#define yes 1 
 
typedef struct node  
{
    char name[maxsize];
	char tel_number[maxsize];
	
	struct node *next;
}lnode,*linklist;

int Init_linklist(linklist l)//初始化單鏈表; 
{
	l = (linklist)malloc(sizeof(lnode));
	if(!l)
	{
		return 0;
	}
	l->next = NULL;
	return 1;
}

int Empty_linklist(linklist l)//檢查是否創建成功 
{
	if(l)
	{
		return 1;
	}
	return 0;
}

int Clear_linklist(linklist l)//銷燬鏈表 
{
	linklist p;
	linklist q;
	p = l->next;
	while(p != NULL)
	{
	    q = p->next;
		free(p);
		p = q;	
	}
	l->next = NULL;
	return 1;
} 

void Assignment_linklist(linklist *l)//給單鏈表賦值 ;
{
	 int i;
	 char n[maxsize];
	 char m[maxsize];
	 int year; 
	 linklist p;
	 linklist r;
	 *l = (linklist)malloc(sizeof(lnode));
	 r = *l;
	 
	 for(i = 0; i < len_linklist; i++)
	 {
	     p = (linklist)malloc(sizeof(lnode));
		 	
		 strcpy(p->name,gets(m));
		 strcpy(p->tel_number,gets(n));
		
		 r->next = p;
		 r = p;	
	 }
	 r->next = NULL;
} 

int Travle_linklist(linklist l)//遍歷輸出鏈表數據 
{
	linklist p = l->next;
	
	while(p!=NULL)
	{
		printf("姓名:%s          號碼:%s\n",p->name,p->tel_number);
	
		p = p->next;
	}
	printf("\n");
	return 1;
}


void Insert_linklist(linklist l,char *insert_name,char *insert_tel)//插入數據 
{
	
	linklist p;
	linklist s;
	p = l;
    
	s = (linklist)malloc(sizeof(lnode));
    
    strcpy(s->name,insert_name);
    strcpy(s->tel_number,insert_tel);
	s->next=NULL;
    while(p->next!=NULL)
	{   
		p=p->next;
	}  
	
	p->next= s;
	
}

int  Delete_linklist(linklist l,char *delete_name)//指定位置刪除 
{
	linklist p;
	linklist s;
	
	p = l;
	
	while(p!=NULL)
	{
	
		if(strcmp(p->next->name,delete_name)==0)
		{
		    s =p->next;
	        p->next = s->next;	
	        return 0;
		}
		p = p->next;
	
	}

	free(s);

	return 1;
} 

int Find_tel(linklist l,char *find_name)
{
	linklist p;
	p = l->next;
	while(p != NULL)
	{
		if(strcmp(p->name,find_name) == 0)
		{
			printf("%s",p->tel_number); 
		    return 0;
		}
		else
		{
			p = p->next; 
		}
	}
		return 1;
} 

int Update_tel(linklist l,char *update_name,char *update_tel)
{   
    int number;
	linklist p;
	p = l->next;
	while(p != NULL)
	{
		if(strcmp(p->name,update_name) == 0)
		{
			printf("是否將%s改爲%s?\n",p->tel_number,update_tel); 
		    scanf("%d",&number); 
			if(number!=0)
			{
			    printf("已將%s改爲%s\n",p->tel_number,update_tel);			 
			    strcpy(p->tel_number,update_tel);
			}
		    return 0;
		}
		else
		{
			p = p->next; 
		}
	}
		return 1;
} 

void My_insert_linkman(linklist l)
{
	char *insert_name;
	char *insert_tel;
    char n[maxsize];
	char m[maxsize];
	
	printf("輸入姓名:");
	scanf("%s",m);
	
	printf("輸入號碼:");
	scanf("%s",n);
	
	insert_name=m;
	insert_tel=n;
    Insert_linklist(l,insert_name,insert_tel);//添加聯繫人; 
    //Travle_linklist(l);
} 

void My_delete_linkman(linklist l)
{
	char *delete_name;
    char *delete_n[maxsize];
    scanf("%s",delete_n); 
    delete_name=delete_n; 
    Delete_linklist(l,delete_name);//刪除聯繫人; 
    //Travle_linklist(l);
}

void My_find_linkman(linklist l)
{
	char *find_name;
    char *find_n[maxsize];
    
    scanf("%s",find_n);
    find_name=find_n;
	printf("查找的號碼:");

    Find_tel(l,find_name);//刪除聯繫人;
	printf("\n");
} 

void My_update_linkman(linklist l)
{
	char *update_name;
    char *update_n[maxsize];
    char *update_tel;
    char *update_t[maxsize];
    
    scanf("%s",update_n);
    scanf("%s",update_t);
    
    update_name=update_n;
    update_tel=update_t;
	printf("更改號碼:");

    Update_tel(l,update_name,update_tel);//更改聯繫人方式;

} 

print ()
{
	printf("**********菜單:0--4**********\n");
	printf("***********0: 退出***********\n");
	printf("********1:添加聯繫人********\n");
	printf("********2:刪除聯繫人********\n");
	printf("********3:查找聯繫人********\n");
	printf("********4:修改聯繫人********\n");
	printf("********5:顯示聯繫人********\n");
} 

int main()
{
	linklist l; 

	Init_linklist(l); 
	Assignment_linklist(&l);
	int bottom;
	int y_n=1;
	
//	printf("開始的通訊錄\n");


    print();
    while(y_n)
    {
		printf("選擇功能:\n");
    	scanf("%d",&bottom); 
	    switch(bottom) 
        {
	    case 1: printf("**添加聯繫人**:\n"); 
		        My_insert_linkman(l);
		        printf("\n");
	            break;
    
        case 2: printf("**刪除聯繫人**:\n");
		        printf("刪除  ");  
		        My_delete_linkman(l);
		        printf("\n");
	            break;

        case 3: printf("**查找聯繫人**:"); 
		        My_find_linkman(l);
		        printf("\n");
                break;  
				       
        case 4: printf("修改聯繫人方式\n");
                My_update_linkman(l);
                printf("\n");
                break;
        
        case 5: printf("*************通訊錄************\n"); 
		        Travle_linklist(l);
		        printf("\n");
                break;
                                                      
        case 0:  y_n = 0;
		         break;         
        }
       
    }
	return 0;

} 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章