通讯录实现
功能描述
添加联系人的个人信息,删除联系人,清空通讯录。
代码
#pragma once
#include<stdio.h>
#include<assert.h>
#include<string.h>
#define MAX_NUM 10
typedef struct person
{
char name[10];
char sex[4];
int age;
char tele[12];
char addr[20];
}person;
typedef struct contact
{
int size;
person person[MAX_NUM];
}contact;
void Init(contact* contact);
void add(contact* contact);
void delete(contact* contact);
void show(contact* contact);
void clear(contact* contact);
#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void Init(contact* contact)
{
assert(contact != NULL);
contact->size = 0;
memset(contact->person, 0 ,sizeof(contact->person));
}
void add(contact* contact)
{
if (contact->size == MAX_NUM)
{
printf("通讯录已满\n");
return;
}
printf("姓名:");
scanf("%s", contact->person[contact->size].name);
printf("性别:");
scanf("%s", contact->person[contact->size].sex);
printf("年龄:");
scanf("%d", &(contact->person[contact->size].age));
printf("电话:");
scanf("%s", contact->person[contact->size].tele);
printf("地址:");
scanf("%s", contact->person[contact->size].addr);
contact->size++;
printf("添加成功\n");
}
void show(contact* contact)
{
assert(contact!= NULL);
printf("%-10s %-10s %-10s %-10s %-10s\n", "姓名", "性别", "年龄", "电话", "地址");
for(int i=0;i<contact->size;i++)
{
printf("%-10s %-10s %-10d %-10s %-10s\n", contact->person[i].name, contact->person[i].sex,
contact->person[i].age, contact->person[i].tele, contact->person[i].addr);
}
}
int IsEmpty(contact* contact)
{
assert(contact != NULL);
if (contact->size == 0)
{
printf("通讯录为空\n");
return 1;
}
return 0;
}
static int Search(contact* contact)
{
assert(contact != NULL);
char name[10];
printf("请输入要删除的姓名:");
scanf("%s",name);
for (int i = 0; i < contact->size; i++)
{
if (strcmp(name, contact->person[i].name) == 0)
return i;
}
return -1;
}
void delete(contact* contact)
{
int index = Search(contact);
if (index == -1)
{
printf("此人不存在\n");
return;
}
for (int i = index; i < contact->size; i++)
{
strcpy(contact->person[i].name, contact->person[i + 1].name);
strcpy(contact->person[i].sex, contact->person[i + 1].sex);
contact->person[i].age=contact->person[i + 1].age;
strcpy(contact->person[i].tele, contact->person[i + 1].tele);
strcpy(contact->person[i].addr, contact->person[i + 1].addr);
}
contact->size--;
printf("删除成功\n");
}
void clear(contact* contact)
{
contact->size = 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
#include<ctype.h>
void menu()
{
printf("*********************\n");
printf("**1.add***2.delete***\n");
printf("**3.show**4.clear****\n");
printf("******0.exit*********\n");
}
int main()
{
int input = 0;
contact personcon;
Init(&personcon);
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出系统\n");
break;
case 1:
add(&personcon);
break;
case 2:
delete(&personcon);
break;
case 3:
show(&personcon);
break;
case 4:
clear(&personcon);
break;
default:
break;
}
} while (input);
}