数据结构-c语言-电话号码查询系统

(1)使用链表和数组查找表存储信息

(2)实现查找、插入、删除、修改、统计、输出等功能。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN sizeof(struct People)
struct People{
	char name[10],sex[4];    //name姓名,sex性别
	int num[12];             //电话号码
	struct People* next;
};
int m=0; 
struct People* head =NULL;
struct People* end =NULL;
void add_people(){ //录入信息
	system("cls");
	int count;
	printf("选择要添加联系人个数:\n");
	scanf("%d",&count);
	struct People *p1,*p2;
	p1=p2=(struct People*)malloc(LEN);
	int i=0;
	printf("------------------------------------\n");
    if(head==NULL){
		head = p1;
	}else{
		end->next = p1 ;
	}
	while(count>0){
		printf("请输第%d个联系人信息:\n",++i);
		printf("姓名:\n");
		scanf("%s",p1->name);
		printf("性别:\n");
		scanf("%s",p1->sex);
		printf("电话号码:\n");
		scanf("%s",&p1->num);
		count--;
		p2->next=p1;
		p2=p1;
		p1=(struct People*)malloc(LEN);
		m++;
		system("cls");
	}
	p2->next=NULL;
	end=p2;
	printf("添加成功!\n");
	system("pause");
}
void views_people(){    //查看所有信息
	system("cls");
	struct People *pt;
	if(head!=NULL){
		for(pt=head;pt!=NULL;pt=pt->next){
		printf("姓名:%s\n性别:%s\n电话号码:%s\n",pt->name,pt->sex,pt->num);
		printf("-------------------------------------------------------------\n");
		}
	}else{
		printf("系统中无数据!");
	}
	system("pause");
}
void delall_people(){    //删除所有信息
	system("cls");
	struct People *pt;
	for(pt=head;pt!=NULL;pt=pt->next){
		struct People *temp=pt;
		free(pt);
	}
	head=NULL;
	end=NULL;
	printf("删除成功!\n");
	system("pause");
}
void view_people(){    //查找信息
	system("cls");
	struct People *pt;
	printf("输入要查询的联系人名字:\n");
	char name[10];
	int flag=1;
	scanf("%s",&name);
	for(pt=head;pt!=NULL;pt=pt->next){
		if(strcmp(pt->name,name)==0){
			printf("成功找到!\n");
			printf("姓名:%s\n性别:%s\n电话号码:%s\n",pt->name,pt->sex,pt->num);
			flag=0;
			break;
		}
	}
	if(flag){
		printf("不好意思,未找到!\n");
	}
	system("pause");
}
void revise_people(){    //修改信息
	system("cls");
	struct People *pt;
	printf("输入要修改的联系人名字:\n");
	char name[10];
	int flag=1;
	scanf("%s",&name);
	for(pt=head;pt!=NULL;pt=pt->next){
		if(strcmp(name,pt->name)==0){
			printf("成功找到!\n");
			printf("姓名:%s\n性别:%s\n电话号码:%s\n",pt->name,pt->sex,pt->num);
			flag=0;
			printf("请分别进行修改:\n");
			printf("姓名:\n");
			scanf("%s",pt->name);
			printf("性别:\n");
			scanf("%s",pt->sex);
			printf("电话号码:\n");
			scanf("%s",&pt->num);
			break;
		}
	}
	if(flag){
		printf("不好意思,未找到!\n");
	}
	system("pause");
}
void del_people(){    //删除单个信息
	system("cls");
	struct People *pt,*temp;
	pt=head;
	printf("请输入要删除的联系人:");
	char name[10];
	scanf("%s",name);
	int flag=1;
	while(pt!=NULL){
		if(strcmp(name,pt->name)==0){
			if(pt==head){
                head = pt->next;
				flag = 0;
				printf("删除成功!\n");
				system("pause");
            }else{
			    temp->next=pt->next;
			    free(pt);
			    flag=0;
			    printf("删除成功!\n");
			    system("pause");
			    break;
            }
		}
		temp=pt;
		pt=pt->next;
	}
	if(flag){
		printf("不好意思,未找到!\n");
		system("pause");
	}
}
void people_num(){    //显示联系人总数
	system("cls");
	printf("系统中联系人总数为%d\n",m);
	system("pause");
}
void menu(){
	system("cls");
	printf("----------------------------------\n");
	printf("|         电话号码查询系统       |\n");
	printf("|--------------------------------|\n");
	printf("|                                |\n"); 
	printf("|---------0、查看总人数  --------|\n");
	printf("|                                |\n"); 
	printf("|---------1、录入信息    --------|\n");
	printf("|                                |\n");
	printf("|---------2、查看全部信息--------|\n");
	printf("|                                |\n");
	printf("|---------3、查询单个信息--------|\n");
	printf("|                                |\n");
	printf("|---------4、删除全部信息--------|\n");
	printf("|                                |\n");
	printf("|---------5、删除单个信息--------|\n");
	printf("|                                |\n");
	printf("|---------6、修改单个信息--------|\n");
	printf("|                                |\n");
	printf("|---------7、退出系统    --------|\n");
	printf("|                                |\n");
	printf("----------------------------------\n");
	printf("\n"); 
	int choice;
	printf("请选择操作:\n");
	loop:
	scanf("%d",&choice);
	switch(choice){
		case 0:
			people_num();
			menu();
		case 1:
			add_people();
			menu();
		case 2:
			views_people();
			menu();
		case 3:
			view_people();
			menu();
			break;
		case 4:
			delall_people();
			menu();
		case 5:
			del_people();
			menu();
		case 6:
			revise_people();
			menu();
		case 7:
			exit(1);
			break;
		default:
			printf("输入错误!请重新输入:");
			goto loop;
	}
}
int main(){
	void people_num();
	void add_people();
	void views_people();
	void delall_people();
	void view_people();
	void revise_people();
	void del_people();
	void menu();
	menu();
	return 0;
}

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值