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

📄 3rg5jh6.txt

📁 通讯录啊 通讯录啊 通讯录啊
💻 TXT
字号:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
	char num[5];
	char name[9];
	char sex[3];
	char phone[13];
	char addr[31];
}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) 性别 电话(11) 地址(31)\n");
    printf("******************************\n");
	p=(ListNode *)malloc(sizeof(ListNode));
	scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
	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.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
	  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 0:
		 printf("\t 再 见!\n");
		 return;
	}
}
}
int menu_select()
{
	int sn;
	printf(" 通讯录管理系统\n");
	printf("=====================\n");
	printf(" 1.通讯录链表的建立\n");
	printf(" 2.通讯者结点的插入\n");
	printf(" 3.通讯者结点的查询\n");
	printf(" 4.通讯录链表的删除\n");
	printf(" 5.通讯录链表的输出\n");
	printf(" 0.退出管理系统\n");
	printf("======================\n");
	printf(" 请选择0--5:");
	for(; ;)
	{
		scanf("%d",&sn);
		if(sn<0 || sn>5)
			printf("\n\t输入错误,重选0-5: ");
		else
			break;
	}
	return sn;
}
LinkList CreateList(void)
{
	LinkList head=(ListNode *)malloc(sizeof(ListNode));
ListNode *p,*rear;
int flag=0;
rear=head;
while(flag==0)
{
	p=(ListNode *)malloc(sizeof(ListNode));
	printf("编号(4) 姓名(8) 性别 电话(11) 地址(31)\n");

  printf("-----------------------------\n");
  scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
  rear->next=p;
  rear=p;
  printf("结束建表吗?(1/0):");
  scanf("%d",&flag);
}
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.num,p->data.num)<0)
	{
		p1=p2;
		p2=p2->next;
	}
	p1->next=p;
	p->next=p2;
}
ListNode * ListFind(LinkList head)
{
	ListNode *p;
	char num[5];
	char name[9];
	int xz;
	printf("=================\n");
	printf("1.按编号查询 \n");
	printf("2.按姓名查询\n");
	printf("=================\n");
	printf(" 请选择:");
	p=head->next;
	scanf("%d",&xz);
	if(xz==1){
		printf("请输入要查找者的编号: ");
		scanf("%s",num);
		while(p && strcmp(p->data.num,num)<0)
			p=p->next;
		if(p==NULL|| strcmp(p->data.num,num)>0)
			p=NULL;
	}
	else
		if(xz==2){
			printf("请输入要查找者的姓名:");
			scanf("%s",name);
			while(p && strcmp(p->data.name,name)!=0)
				p=p->next;
		}
		return p;
	}
	void DelNode(LinkList head)
	{
		char jx;
		ListNode *p,*q;
		p=ListFind(head);
		if(p==NULL){
			printf("没有查到要删除的通讯者!\n");
			return;
		}
		printf("真的要删除该结点吗?(y/n): ");
		scanf("%c",&jx);
		if(jx=='y' || jx=='Y'){
			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.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
         printf("-----------------------------\n");
		 p=p->next;
	 }
	}

⌨️ 快捷键说明

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