通讯录管理系统

来源:互联网 发布:linux 进程管理 编辑:程序博客网 时间:2024/05/20 21:22
#include "stdio.h"#include "string.h"#include "stdlib.h"typedef struct DATE{        char name[20];        char address[40];        char email_num[20];        char telephone_num[20];        struct DATE* pNext;    } Date,*Pdate;void space(void);void init_printf(void);int main(void){    int get;    Pdate phead;    int flag=0;    Pdate init_list(void);    void show_booklist(Pdate );    void append_people(Pdate );    void delete_for_name(Pdate );    void delete_for_num(Pdate );    void delete_people(Pdate );    void found_for_name(Pdate );    printf("\t\t\t\t欢迎来到XXX通讯录\n");    init_printf();     while(scanf("%d",&get)==1){        if(get!=5&&flag==0){            if(get==6){                printf("拜拜!\n");exit(-2);            }else{                printf("你输入的序号貌似哪里不对的样子~~~\n");                printf("请重新输入:\n");            }        }        else{            flag=1;            switch(get){                case 1:show_booklist(phead);break;                case 2:append_people(phead);break;                case 3:delete_people(phead);break;                case 4:found_for_name(phead);break;                case 5:phead=init_list();break;                }        }    };    return 0;}Pdate init_list(void){                      //初始化整个工作薄    Pdate pTail;    int i,len;    Pdate phead=(Pdate)malloc(sizeof(Date));    if(phead==NULL){        printf("\t额,这是一个不应该出现的错误,你换台电脑吧~~~~\n");        exit(-1);    }    pTail=phead;    pTail->pNext=NULL;    printf("正在初始化整个电话薄\n");    printf("请输入你要创建的电话薄最大存储容量(PS:最多存放多少人的信息):\n");    scanf("%d",&len);    space();    if(len>100){        printf("您的野心也忒大了点吧~~~写个小点的数吧~~~\n");    }    else if(len<0){        printf("亲!!!您见过有负数数量的人类吗??我怀疑您是喵星球来的~~~\n");    }    else{         printf("你将会创建一个存放有%d个人的电话薄\n",len);         for(i=0;i<len;i++){            Pdate pNew=(Pdate)malloc(sizeof(Date));            if(pNew==NULL){                printf("额,这是一个不应该出现的错误,你换台电脑吧~~~~\n");                exit(-1);                }                printf("这是第%d个联系人",i+1);            printf("请输入联系人的名字:");            scanf("%s",pNew->name);            space();            printf("请输入联系人的地址:");            scanf("%s",pNew->address);            space();            printf("请输入联系人的邮箱:");            scanf("%s",pNew->email_num);            space();            printf("请输入联系人的电话号码:");            scanf("%s",pNew->telephone_num);            space();            pNew->pNext=pTail->pNext;            pTail->pNext=pNew;            pTail=pNew;         }         printf("通讯录初始化完毕!\n");         init_printf();    }    return phead;}void show_booklist(Pdate phead){                        //显示通讯录姓名    Pdate p=phead->pNext;    if(p==NULL){        printf("//////////////////////////////\n");        printf("没有任何记录.\n");        printf("//////////////////////////////\n");    }else{        printf("//////////////////////////////\n");        printf("\t姓名 \t地址 \t\t邮箱 \t\t电话\n");        while(p!=NULL){            printf("%10s\t%15s\t%15s\t%15s\n",p->name,p->address,p->email_num,p->telephone_num);            p=p->pNext;        }        printf("//////////////////////////////\n");    }    init_printf();}void append_people(Pdate phead){                        //向后追加一个    Pdate pNew=(Pdate)malloc(sizeof(Date));    Pdate pTemp=phead;    int i=0;    while(pTemp->pNext!=NULL){        i++;        pTemp=pTemp->pNext;    }    if(pNew==NULL){            printf("额,这是一个不应该出现的错误,你换台电脑吧~~~~\n");            exit(-1);            }        printf("这是第%d个联系人\n",i+1);        printf("请输入新建联系人的名字:");        scanf("%s",pNew->name);        space();        printf("请输入新建联系人的地址:");        scanf("%s",pNew->address);        space();        printf("请输入新建联系人的邮箱:");        scanf("%s",pNew->email_num);        space();        printf("请输入新建联系人的电话号码:");        scanf("%s",pNew->telephone_num);        space();        pTemp->pNext=pNew;        pNew->pNext=NULL;        init_printf();    }void delete_people(Pdate phead){                        //删除一个    int i;    void delete_for_name(Pdate phead);    void delete_for_num(Pdate phead);    printf("你可以通过两种方式来删除联系人信息\n");    printf("1.通过联系人姓名 \t2.通过联系人电话号码\n");    printf("请输入你选择的方式:");    scanf("%d",&i);    switch(i){        case 1:delete_for_name(phead);break;        case 2:delete_for_num(phead);break;    }    init_printf();}void delete_for_name(Pdate phead){                  //按姓名删除    Pdate pbefore=phead->pNext,pTemp=phead->pNext;    Pdate pafter;    char name[20];    if(phead->pNext==NULL){        printf("数据为空,不能执行删除命令!\n");    }else{        printf("请输入你要删除的姓名:");        scanf("%s",name);        while(pTemp!=NULL&&strcmp(pTemp->name,name)!=0){            pTemp=pTemp->pNext;        }        if(pTemp==NULL){            printf("你要删除的人不存在!\n");        }else{            pafter=pTemp->pNext;            if(pTemp==phead->pNext){                phead->pNext=pafter;            }else{                while(pbefore->pNext!=pTemp){                    pbefore=pbefore->pNext;                }                pbefore->pNext=pafter;            }            free(pTemp);        }    }}void delete_for_num(Pdate phead){                  //按姓名删除    Pdate pbefore=phead->pNext,pTemp=phead->pNext;    Pdate pafter;    char name[20];    if(phead->pNext==NULL){        printf("数据为空,不能执行删除命令!\n");    }else{        printf("请输入你要删除的号码:");        scanf("%s",name);        while(pTemp!=NULL&&strcmp(pTemp->telephone_num,name)!=0){            pTemp=pTemp->pNext;        }        if(pTemp==NULL){            printf("你要删除的人不存在!\n");        }else{            pafter=pTemp->pNext;            if(pTemp==phead->pNext){                phead->pNext=pafter;            }else{                while(pbefore->pNext!=pTemp){                    pbefore=pbefore->pNext;                }                pbefore->pNext=pafter;            }            free(pTemp);        }    }}void space(void){                       //去除输入之后的回车    while(getchar()!='\n')        {            continue;        }}void init_printf(void){                 //显示主目录    printf("请选择你需要的操作\n");    printf("1.查看通讯录中的信息\t\t\t2.新建联系人并添加\n");    printf("3.删除指定联系人\t\t\t4.查询指定联系人\n");    printf("5.初始化整个通讯录\t\t\t6.离开我~~~\n");    printf("你必须首先初始化整个通讯录,否则通讯录不能正常工作\n");}void found_for_name(Pdate phead){    char name[20];    Pdate temp=phead->pNext;    printf("请输入查找的姓名:");    scanf("%s",name);    while(temp!=NULL&&strcmp(temp->name,name)!=0){        temp=temp->pNext;    }    if(temp==NULL){        printf("////////////////////////////////////\n");        printf("木有这条记录\n");    }    else{        printf("\t姓名 \t地址 \t\t邮箱 \t\t电话\n");        printf("%10s\t%15s\t%15s\t%15s\n",temp->name,temp->address,temp->email_num,temp->telephone_num);    }    init_printf();}

0 0