c语言通讯录项目

来源:互联网 发布:网络犯罪举报中心 编辑:程序博客网 时间:2024/05/21 06:46

通讯录说明文档(一)
语言:c语言

格式: 编号 姓 名 住址 电话 住宅电话
201701 * xxxx 183****5668 33****77

要求:使用结构体形式对数据存储

功能:使用链表实现增加(在增加人员的过程中有一个自动排序功能,比如按姓名排序)、删除、修改、查找(比如:工号查找、电话查找)的功能;
(1)添加用户信息(号码长度 号码是否重复)
(2)列出好友信息(按姓名排序)
(3)查找好友信息(按姓名查找)
(4)删除好友
(5)退出(保存在文件中)

注意事项:在增、删、改、查过程中,如果姓名相同怎么进行选择操作。

头文件1.h

#ifndef a#define a#define SUCCESS 10000#define FAILURE 10001//typedef char Elemtype;struct node{    char id[20];    char name[20];    char address[20];    char phone[20];    char homephone[20];    struct node *next;};typedef struct node Node;typedef Node *LinkList;int ListInit(LinkList *L);int ListInsert(LinkList *L);int ListTraverse(LinkList L);#endif

主函数

#include <stdio.h>#include "1.h"#include <stdlib.h>#include <string.h>int main(){    int i,j,ret;    LinkList L,p;    ListInit(&L);    ListInit(&p);    FILE *fp;    fp=fopen("infor.txt","r");    L=p;    while(fp!=NULL)    {        while(1)        {            LinkList n=(LinkList)malloc(sizeof(Node));            ret=fread(n,sizeof(Node),1,fp);            if(ret == 0)            {                break;            }            n->next=p->next;            p->next=n;        }        break;    }    while(1)    {        printf("\n\n\n");        printf("             *********************\n"               "             ****1.Insert  *******\n"               "             ****2.Show    *******\n"               "             ****3.Search  *******\n"               "             ****4.Delete  *******\n"               "             ****5.Change  *******\n"               "             ****6.Quit    *******\n"               "             *********************\n");        printf("\n\n\n");           printf("please input you choice:\n");            scanf("%d",&i);            switch(i)            {                case 1:ListInsert(&L);                       break;                case 2:ListTraverse(L);                       break;                case 3:ListSearch(L);                       break;                case 4:ListDel(L);                       break;                case 5:ListChange(&L);                       break;                case 6:                        fp=fopen("infor.txt","w");                        LinkList n=(LinkList)malloc(sizeof(Node));                        while(L->next != NULL)                        {                            n=L->next;                            fwrite(n,sizeof(Node),1,fp);                            L=L->next;                        }                       :wqclose(fp);                       exit(1);                       break;                default:                       printf("Unkown Input!Please Input Again:\n");                       scanf("%d",&i);                       break;            }    }    return 0;}

接口函数

#include <stdio.h>#include <stdlib.h>#include "1.h"#include <string.h>int ListInit(LinkList *L){    (*L)=(LinkList)malloc(sizeof(Node));    if((*L)==NULL)    {        exit(1);    }    (*L)->next=NULL;}int ListInsert(LinkList *L){    LinkList p=(*L);    LinkList n=(LinkList)malloc(sizeof(Node));    if(n==NULL)    {        exit(1);    }    printf("please input information(id  name  address  phone  homephone):\n");    scanf("%s %s %s %s %s",n->id,n->name,n->address,n->phone,n->homephone);    /*printf("%s\n",x.phone);    {        strcpy(n->id,x.id);        strcpy(n->name,x.name);        strcpy(n->address,x.address);        strcpy(n->phone,x.phone);        strcpy(n->homephone,x.homephone);    }*/    if(strlen(n->phone)!=11)    {        printf("the phone is false!\n");        return FAILURE;    }    if(strlen(n->homephone)!=8)    {        printf("the homephone is false!\n");        return FAILURE;    }    while(p->next!=NULL)    {        if(strcmp((p->next)->phone,n->phone)==0)        {            printf("the phone is the same!Please input again:\n");            scanf("%s",n->phone);        }        p=p->next;    }    p = *L;    if(p -> next == NULL)    {        n->next = p->next;        p->next = n;    }    else    {        while(p->next)        {            if(strcmp((p->next)->name,n->name)>=0)            {                n->next = p->next;                p->next = n;                break;            }            else            {                p=p->next;            }        }        if(NULL == p->next)        {            n->next = p->next;            p->next = n;        }    }    return SUCCESS;}int ListTraverse(LinkList L){    if(NULL==L->next)    {           printf("empty!\n");    }    LinkList p=L->next;    while(p!=NULL)    {        printf("id:%s name:%s address:%s phone:%s homephone:%s \n",p->id,p->name,p->address,p->phone,p->homephone);        p=p->next;    }        return SUCCESS;}int ListSearch(LinkList L){    LinkList p=L->next;    char x[20];    printf("Please input the name you want find:\n");    scanf("%s",x);    while(p!=NULL)    {        if(strcmp(p->name,x)==0)        {            printf("id:%s name:%s address:%s phone:%s homephone:%s \n",p->id,p->name,p->address,p->phone,p->homephone);        }        p=p->next;    }    /*if(p==NULL)    {        printf("no exist!\n");    }*/    return SUCCESS;}int ListDel(LinkList L){    LinkList p=L;    char y[20];    printf("please input the name you want delete:\n");    scanf("%s",y);    LinkList tmp;    while(p->next!=NULL)    {        if(strcmp(p->next->name,y)==0)        {            tmp=p->next;            p->next=tmp->next;            free(tmp);            printf("Delete %s success!\n",y);            break;        }        p=p->next;    }    return SUCCESS;}int ListChange(LinkList *L){    LinkList p=(*L)->next;    LinkList t=*L;    char z[20];    printf("please input the name you want change:\n");    scanf("%s",z);    while(p!=NULL)    {        LinkList n=(LinkList)malloc(sizeof(Node));        if(strcmp(p->name,z)==0)        {            printf("please input information(id  name  address  phone  homephone):\n");            scanf("%s %s %s %s %s",n->id,n->name,n->address,n->phone,n->homephone);            if(strlen(n->phone)!=11)            {                printf("the phone is false!\n");                return FAILURE;            }            if(strlen(n->homephone)!=8)            {                printf("the homephone is false!\n");                return FAILURE;            }            while(t->next!=NULL)            {                if(strcmp((t->next)->phone,n->phone)==0)                {                    printf("the phone is the same!Please input again:\n");                    scanf("%s",n->phone);                }                t=t->next;            }            strcpy(p->name , n->name);            strcpy(p->id , n->id);            strcpy(p->homephone , n->homephone);            strcpy(p->phone , n->phone);            strcpy(p->address , n->address);            free(n);            printf("change success!\n");            break;        }        else        {            p=p->next;        }    }    /*if(p==NULL)    {        printf("no exist!\n");    }*/    return SUCCESS; }
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 潮品羊驼上鞋为什么这么便宜 潮鞋图片 男童潮鞋 大码潮鞋 男装潮鞋 潮鞋馆 男式潮鞋 潮鞋有哪些牌子 回力潮鞋 潮鞋墟 潮牌鞋男 夏季潮鞋品牌 男潮鞋 潮 鞋 潮鞋品牌排行榜 潮鞋帆布鞋 潮鞋品牌有哪些 爆款潮鞋 森马潮鞋 潮鞋价格 休闲鞋男鞋潮鞋 买潮鞋哪个网站好 铆钉鞋 乐足潮鞋 鞋吧 潮鞋吧 潮鞋网 网鞋男鞋透气鞋 男士夏天潮鞋 男士韩版潮鞋 潮鞋推荐 鞋品牌大全 登山鞋女鞋 潮鞋有哪些 女松糕鞋 潮鞋搭配 时尚男鞋品牌 阿迪达斯图片 时尚鞋子 时尚运动鞋 时尚帆布鞋