#ifndef _TONGXUNLU_H__
#define _TONGXUNLU_H__
#define MAX_NAME 20
#define MAX_PHONE 11
#define MAX_PEO 1000
typedef struct PeoInfo
{
char name[MAX_NAME];
int age;
char phone[MAX_PHONE];
}PeoInfo;
typedef struct Contact
{
PeoInfo date[MAX_PEO];
int count;
}Contact,*pContact;
enum
{
EXIT,
ADD,
DELETE,
SELECT,
MODIFY,
SHOW,
EMPT,
SORT
};
void menu();
void InitContact(pContact pc);
void AddPeoInfo(pContact pc);
void DelPeoInfo(pContact pc);
void ShowPeoInfo(pContact pc);
void SelPeoInfo(pContact pc);
void MfyPeoInfo(pContact pc);
void EmtPeoInfo(pContact pc);
void SorPeoInfo(pContact pc);
#endif
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include"tongxunlu.h"
void menu()
{
printf("---------------------------------------------\n");
printf("------------ 1.ADD 2.DELETE ------------\n");
printf("------------ 3.SELECT 4.MODIFY ------------\n");
printf("------------ 5.SHOW 6.EMPT ------------\n");
printf("------------ 7.SORT 0.EXIT ------------\n");
printf("---------------------------------------------\n");
}
void InitContact(pContact pc)
{
assert(pc);
pc->count = 0;
memset(pc->date, 0, sizeof(pc->date));
}
int Find(pContact pc, char *pname)
{
int i = 0;
for (i = 0; i <= pc->count; i++)
{
if (strcmp(pc->date[i].name, pname) == 0)
{
return i;
}
}
return -1;
}
void AddPeoInfo(pContact pc)
{
assert(pc);
if (pc->count >= MAX_PEO)
{
printf("通讯录已满\n");
return;
}
printf("请输入你要添加联系人的姓名:");
scanf("%s", &pc->date[pc->count].name);
printf("请输入你要添加联系人的年龄:");
scanf("%d", &pc->date[pc->count].age);
printf("请输入你要添加联系人的电话号码:");
scanf("%s", &pc->date[pc->count].phone);
printf("添加成功\n");
pc->count++;
}
void DelPeoInfo(pContact pc)
{
char name[MAX_NAME];
int ret = 0;
printf("请输入要删除联系人的姓名:");
scanf("%s", &name);
ret = Find(pc, name);
if (ret != -1)
{
pc->date[ret] = pc->date[pc->count];
pc->count--;
printf("删除成功\n");
}
else {
printf("查无此人\n");
}
}
void SelPeoInfo(pContact pc)
{
char name[MAX_NAME];
int ret = 0;
printf("请输入要查找联系人的姓名:");
scanf("%s", &name);
ret = Find(pc, name);
if (ret != -1)
{
printf("%-15s %-10d %-10s\n", pc->date[ret].name,
pc->date[ret].age, pc->date[ret].phone);
}
else {
printf("查无此人\n");
}
}
void MfyPeoInfo(pContact pc)
{
char name[MAX_NAME];
int ret = 0;
printf("请输入要修改联系人的姓名:");
scanf("%s", &name);
ret = Find(pc, name);
if (ret != -1)
{
printf("%-15s %-10d %-10s\n", pc->date[ret].name,
pc->date[ret].age, pc->date[ret].phone);
int i = 0;
do
{
printf("输入你要修改的选项:\n");
scanf("%d", &i);
switch (i)
{
case 1:
printf("请输入修改后的名字:");
scanf("%s", pc->date[ret].name);
break;
case 2:
printf("请输入修改后的年龄:");
scanf("%d", pc->date[ret].age);
break;
case 3:
printf("请输入修改后的手机号:");
scanf("%s", pc->date[ret].phone);
break;
case 0:
break;
default:
printf("输入错误,请重新输入:");
break;
}
} while (i);
}
else {
printf("查无此人\n");
}
}
void ShowPeoInfo(pContact pc)
{
int i = 0;
printf("-------------------------------------\n");
printf("name age phone\n");
for (i = 0; i < pc->count; i++)
{
printf("%-15s %-10d %-10s\n", pc->date[i].name,
pc->date[i].age, pc->date[i].phone);
}
printf("-------------------------------------\n");
}
void EmtPeoInfo(pContact pc)
{
pc->count = 0;
}
void SorPeoInfo(pContact pc)
{
int i = 0;
int j = 0;
for(i = 0; i < pc->count; i++)
for (j = i + 1; j <= pc->count; j++)
{
if (strcmp(pc->date[i].name, pc->date[j].name) < 0)
{
PeoInfo tmp;
tmp = pc->date[i];
pc->date[i] = pc->date[j];
pc->date[j] = tmp;
}
}
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"tongxunlu.h"
int main()
{
Contact my_con;
int input = 0;
InitContact(&my_con);
do {
menu();
printf("请选择:");
scanf("%d", &input);
switch (input) {
case EXIT:
printf("退出成功\n");
break;
case ADD:
AddPeoInfo(&my_con);
break;
case DELETE:
DelPeoInfo(&my_con);
break;
case SELECT:
SelPeoInfo(&my_con);
break;
case MODIFY:
MfyPeoInfo(&my_con);
break;
case SHOW:
ShowPeoInfo(&my_con);
break;
case EMPT:
EmtPeoInfo(&my_con);
break;
case SORT:
SorPeoInfo(&my_con);
break;
default:
printf("瞎搞,重新输入\n");
break;
}
} while (input);
system("pause");
return 0;
}