#define _CRT_SECURE_NO_WARNINGS
#define MAX 100
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
enum MyEnum
{
OUT,
Incre,
Delete,
Lookup,
Modify,
Print,
Sort,
};
void meun()
{
printf("\n");
printf("******************************\n");
printf("*****1.Incre 2.Delete*****\n");
printf("*****3.Lookup 4.Modify*****\n");
printf("*****5.Print 0.OUT *****\n");
printf("******************************\n");
}
struct ProInon
{
char name[20];//姓名
int age; //年龄
char sex[10]; //性别
char Phone[12];//电话号码
};
struct comact //包含通讯录最大容量和记录通讯录当前个数
{
struct ProInon data[MAX];
int sizo;
};
void Initialization(struct comact* ps)
{
memset(ps->data, 0, sizeof(ps->data));
ps->sizo = 0;
}
void Increrec(struct comact* ps)
{
if (ps->sizo > MAX)
{
printf("您的通讯录已满\n");
}
else
{
printf("请输入姓名\n");
scanf("%s", ps->data[ps->sizo].name);
printf("请输入年龄\n");
scanf("%d", &(ps->data[ps->sizo].age));
printf("请输入性别\n");
scanf("%s", ps->data[ps->sizo].sex);
printf("请输入电话号码\n");
scanf("%s", ps->data[ps->sizo].Phone);
rewind(stdin);
ps->sizo++;
printf("添加成功\n");
}
}
void Printrec(const struct comact* ps)
{
if (ps->sizo==0)
{
printf("对不起,您的通讯录为空\n");
}
else
{
printf("%-10s\t%-10s\t%-5s\t%-12s\t\n","名字","年龄","性别","电话号码");
for (int i = 0; i < ps->sizo; i++)
{
printf("%-10s\t%-10d\t%-5s\t%-12s\t\n",
ps->data[i].name,
ps->data[i].age,
ps->data[i].sex,
ps->data[i].Phone);
}
}
}
int Find_name(struct comact* ps,char name[20])
{
int i = 0;
for (i = 0; i < ps->sizo; i++)
{
if (0 == strcmp(ps->data[i].name, name))
{
return i;
}
}
return -1;
}
void Deleterec(struct comact* ps)
{
char name[20] ;
printf("请输入您要删除联系人的名字:》");
scanf("%s",name);
//查找名字信息
int ret = Find_name(ps, name);
if (ret == -1)
{
printf("您要删除的信息不存在\n");
}
else
{
//删除信息
int j = 0;
for ( j = ret; j < ps->sizo; j++)
{
ps->data[j] = ps->data[j + 1];
}
ps->sizo--;
printf("删除成功\n");
}
}
void Lookuprec(struct comact* ps)
{
char name[20];
printf("请输入您要查找的名字:》");
scanf("%s", name);
//查找名字信息
int ret = Find_name(ps, name);
if (ret == -1)
{
printf("您要查找的联系人不存在\n");
}
else
{
//打印信息
printf("%-10s\t%-10s\t%-5s\t%-12s\t\n", "名字", "年龄", "性别", "电话号码");
printf("%-10s\t%-10d\t%-5s\t%-12s\t\n",
ps->data[ret].name,
ps->data[ret].age,
ps->data[ret].sex,
ps->data[ret].Phone);
}
}
void Modifyrec(struct comact* ps)
{
char name[20];
printf("请输入您要修改联系人的姓名:》");
scanf("%s", name);
//查找联系人
int ret = Find_name(ps, name);
if (ret == -1)
{
printf("您要修改的联系人不存在\n");
}
else
{
//修改联系人
printf("请输入姓名\n");
scanf("%s", ps->data[ret].name);
printf("请输入年龄\n");
scanf("%d", &(ps->data[ret].age));
printf("请输入性别\n");
scanf("%s", ps->data[ret].sex);
printf("请输入电话号码\n");
scanf("%s", ps->data[ret].Phone);
printf("修改成功\n");
}
}
int main()
{
int input = 0;
int sizo = 0;//记录通讯录的个数信息
//创建通讯录
struct comact con;
//初始化通讯录
Initialization(&con);
do
{//打印菜单
meun();
printf("请输入您的选择:》");
scanf("%d", &input);
//进行判断
switch (input)
{
case Incre: //增加联系人
Increrec(&con);
break;
case Delete: //删除联系人
Deleterec(&con);
break;
case Lookup: //查找联系人
Lookuprec(&con);
break;
case Modify: //修改联系人
Modifyrec(&con);
break;
case Print: //打印联系人
Printrec(&con);
case OUT: //退出
printf("退出通讯录");
break;
default:
printf("输入有误,请重新输入\n");
break;
}
} while (input);
return 0;
}