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; }
阅读全文