⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvbvc.cpp

📁 该通讯录包括6个模块:建立、插入、查询、删除、显示、保存
💻 CPP
字号:
#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
typedef struct{ 
char name[6]; 
char street[10]; 
char city[20]; 
char eip[13]; 
char state[30]; 
}datatype; 
typedef struct node{ 
datatype data; 
struct node * next; 
}listnode; 
typedef listnode * linklist; 
linklist head; 
listnode *p; 
int menu_select( ); 
linklist createlist(void); 
void insertnode(linklist head,listnode *p); 
listnode *listfind(linklist head); 
void delnode(linklist head); 
void printlist(linklist head); 

/*主函数*/
void main() 
{ 
for( ; ; ){ 
switch(menu_select() ) 
{ 
case 1: 
printf(" ***********************************************\n"); 
printf(" ************** 通讯录链表的建立 ***************\n"); 
printf(" ***********************************************\n"); 
head=createlist(); 
break; 
case 2: 
printf(" ***********************************************\n"); 
printf(" ************** 通讯录信息添加 *****************\n"); 
printf(" ***********************************************\n"); 
printf(" ** 姓名(4) 街道(8) 城市(20) 邮编(11) 国家(30)**\n"); 
printf(" ***********************************************\n"); 
p=(listnode *)malloc(sizeof(listnode)); 
scanf("%s%s%s%s%s",p->data.name,p->data.street,p->data.city,p->data.eip,p->data.state); 
insertnode(head,p); 
break; 
case 3: 
printf(" ******************************\n"); 
printf(" ******* 通讯录信息查询 *******\n"); 
printf(" ******************************\n"); 
p=listfind(head); 
if(p!=NULL){ 
printf("**姓名 街道 城市  邮编  国家**\n"); 
printf(" -----------------------------\n"); 
printf("%s,%s,%s,%s,%s\n",p->data.name,p->data.street,p->data.city,p->data.eip,p->data.state); 
printf("------------------------------\n"); 
} 
else 
printf("没有你要找的人 ! \n"); 
break; 
case 4: 

printf(" ***********************************\n"); 
printf(" **********通讯信息的删除***********\n"); 
printf(" ***********************************\n"); 
delnode(head); 
break; 
case 5: 
printf(" ***********************************\n"); 
printf(" **********通讯录链表的显示*********\n"); 
printf(" ***********************************\n"); 
printlist(head); 
break;
case 6:
printf("************************************\n");
printf("*********通讯录链表的保存***********\n");
printf("************************************\n\n\n"); 
printf("***通讯录保存成功****************\n");
break;
 
case 0: 
printf("\t 谢谢您的使用! \n"); 
return; 
} 
} 
} 
/*菜单界面*/
int menu_select() 
{ 
int sn; 

printf(" \n"); 
printf(" 通讯录管理系统 \n"); 

printf(" ======================\n"); 
printf(" 1.通讯录链表的输入\n"); 
printf(" 2.通讯录链表的插入\n"); 
printf(" 3.通讯录链表的查询\n"); 
printf(" 4.通讯录链表的删除\n"); 
printf(" 5.通讯录链表的显示\n");
printf(" 6.通讯录链表的保存\n"); 
printf(" 0.退出通讯录管理系统\n"); 
printf(" ======================\n"); 
printf( " 请选择操作0-6 \n\n"); 
for(; ;) 
{ 
scanf("%d",&sn); 
if(sn<0||sn>6) 
printf("\t输入错误\n"); 
else 
break; 
} 
return sn; 
} 
/*建立函数*/

linklist createlist(void) 
{ 
linklist head=(listnode *)malloc(sizeof(listnode)); 
listnode *p,*rear; 
int flag=1; 
rear=head; 
while(flag==1) 
{ 
p=(listnode *)malloc(sizeof(listnode)); 
printf(" 姓名(4)   街道(8)   城市(20)   邮编(11)  国家(31) \n"); 
printf("------------------------------------------------\n"); 

scanf("%s%s%s%s%s",p->data.name,p->data.street,p->data.city,p->data.eip,p->data.state); 
rear->next=p; 
rear=p; 
printf(" 继续建表吗? (1.是/0.不):"); 
scanf("%d",&flag); 

} 
if(flag==1) 
printf("创建成功!\n"); 
rear->next=NULL; 
return head; 
} 

/*插入函数*/
void insertnode(linklist head,listnode *p) 
{ 
listnode *p1,*p2; 
p1=head; 
p2=p1->next; 
while(p2!=NULL && strcmp(p2->data.name,p->data.name)<0) 
{ 
p1=p2; 
p2=p2->next; 
} 
p1->next=p; 
p->next=p2; 
printf("插入成功!\n"); 
} 

/*查询函数*/
listnode * listfind(linklist head) 
{ 
listnode * p; 

char name[10]; 

printf("--------------------\n"); 

printf(" .姓名查询\n"); 
printf("--------------------\n"); 

p=head->next; 


printf("请输入要查询者的姓名: "); 
scanf("%s",name); 
while(p && strcmp(p->data.name,name)!=0) 
p=p->next; 

return p; 
} 



/*删除函数*/
void delnode(linklist head) 
{ 
int jx; 
listnode *p,*q; 
p=listfind(head); 
if(p==NULL){ 
printf("没有要删除的通讯者!:\n"); 
return; 
} 
printf ("真的要删除该结点吗?(1.是/0.不):"); 
scanf("%d",&jx); 
if (jx==1){ 
q=head; 
while(q!=NULL && q->next!=p) 
q=q->next; 
q->next=p->next; 
free(p); 
printf("通讯者已被删除!\n"); 
} 
}

/*显示函数*/
void printlist(linklist head) 
{ 
listnode * p; 
p=head->next; 
printf(" 姓名    街道     城市    邮编    国家\n"); 
printf(" -------------------------------\n"); 
while(p!=NULL) 
{ 
printf(" %s, %s, %s, %s, %s\n",p->data.name,p->data.street,p->data.city,p->data.eip,p->data.state); 
printf(" -------------------------------\n"); 
p=p->next; 
} 
}

/*保存函数*/
 void save( node *head)
{
    
    node *p;
    int n,i;
    
    
    if(p!=head)
    {
        while (p!=head)
        {
            p=p->next;
            n++;
        }
        printf("%d",n);     /*写入节点个数;*/
        printf("\r\n");     /*写入回车符;*/
        p=head->next;
        for(i=0;i<n;i++)
        {
           printf("%s %8s %8s %8s %8s",p->data.name,p->data.street,p->data.city,p->data.eip,p->data.state);
            printf("\r\n");
            p=p->next;
        }               /*向文件中写入节点数据;*/
        }
    else
        printf("Please make sure the data is not NULL!!");
    
    printf("存盘成功!!!\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -