(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;
}