对编写的通信录进行总结,有问题的地方还希望不吝赐教
主模块 main.c
#include "addressbook.h"
Person *g_inf[MAX]={0};
int g_Count=0;
int main()
{
Welcome();//欢迎界面
int choice1;
int choice2;
while(1)
{
menu();
scanf("%d",&choice1);
switch(choice1)//进入选择界面
{
case 1:
AddInf();//增加用户信息
sleep(2);//延时显示2秒
break;
case 2:
LookPerson();//查看用户信息并且按照姓名首字母使用冒泡排序
sleep(4);//延时显示4秒
break;
case 3:
FindPerson();//查找用户信息包括通过姓名和ID进行查找
sleep(3);//延时显示秒
break;
case 4:
DelPerson();//删除用户信息
sleep(2);//延时显示2秒
break;
case 5:
ChangePerson();//修改用户信息
sleep(2);//延时显示2秒
break;
case 6:
exit(0);退出系统
break;
default:
break;
}
}
return 0;
}
头文件 addressbook.h
#ifndef _addressbook_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define MAX 1024
typedef struct addressbook{
char id[20];
char name[32];
int age[20];
char tel[32];
}Person;
void Welcome();
void menu();
int AddInf();
void LookPerson();
void FindPerson();
int FindPersonName();
int FindPersonId();
void DelPerson();
void ChangePerson();
#define _addressbook_H_
#endif
功能模块 addressbook.c
#include "addressbook.h"
extern Person*g_inf[MAX];
extern int g_Count;
void Welcome()
{
system("clear");
printf("----------------------------------------------------------------\n\n");
printf("\t\t欢迎使用本通讯录\n\n");
printf("----------------------------------------------------------------\n\n");
}
void menu()
{
system("clear");
printf("----------------------------------------------------------------\n\n");
printf("\t\t1. 添加用户信息 2. 显示用户信息\n\n");
printf("\t\t3. 查找用户信息 4. 删除用户信息\n\n");
printf("\t\t5. 修改用户信息 6. 退出系统\n\n");
printf("----------------------------------------------------------------\n\n");
}
//添加信息
int AddInf()
{
g_inf[g_Count]=(Person *)malloc(sizeof(Person)*1);
if(NULL == g_inf)
{
printf("申请失败!\n");
exit(1);
}
int flag=1;
while(flag)
{
printf ("请输入ID,姓名,年龄,电话:\n");
scanf("%s%s%d%s",g_inf[g_Count]->id,g_inf[g_Count]->name,&g_inf[g_Count]->age,g_inf[g_Count]->tel);
if(strlen(g_inf[g_Count]->tel )!=11)
{
printf("电话号码格式错误,重新输入\n");
flag=1;
continue;
}
int i;
for(i=0;i<g_Count;i++)
{
if(strcmp(g_inf[i]->tel,g_inf[g_Count]->tel) == 0)
{
printf("输入的电话号码重复,请重新输入\n");
break;
}
}
g_Count++;
free(g_inf[g_Count]);
break;
}
return 0;
}
//显示用户(冒泡排序)
void LookPerson()
{
if(g_Count== 0)
{
printf("空通讯录!\n");
return;
}
for(int m=0;m<g_Count;m++)
{
for(int j=0;j<g_Count-1-m;j++)
{
int ret=strcmp(g_inf[j]->name,g_inf[j+1]->name);
if( ret> 0)
{
Person *tmp;
tmp = g_inf[j];
g_inf[j] =g_inf[j+1];
g_inf[j+1]=tmp;
}
}
}
for(int n=0;n<g_Count;n++)
{
printf("--------------------------------------------------------------------\n");
printf("\t\t第%d位联系人 \n",n+1);
printf("ID: %s 姓名:%s 年龄:%d 电话: %s \n",g_inf[n]->id,g_inf[n]->name, g_inf[n]->age,g_inf[n]->tel);
printf("--------------------------------------------------------------------\n");
}
}
//查找用户
void FindPerson()
{
printf("请选择搜索方式:1.姓名搜索 2.id搜索\n");
int a;
scanf("%d\n",&a);
switch (a)
{
case 1:
printf("请输入姓名\n");
FindPersonName();
break;
case 2:
printf("请输入id\n");
FindPersonId();
break;
default:
break;
}
return;
}
//按姓名查找用户
int FindPersonName()
{
char name[32] = {0};
int count = 0;
scanf("%s", name);
for (int i = 0; i < g_Count; i++)
{
if (strcmp(name, g_inf[i]->name) == 0)
{
printf("查找成功:\n");
printf("id:%d 姓名:%s 年龄:%s 电话:%s\n",
g_inf[i]->id,
g_inf[i]->name,
g_inf[i]->age,
g_inf[i]->tel);
count++;
}
}
if (count == 0)
{
printf("此用户不存在!\n");
}
}
//按id查找用户
int FindPersonId()
{
int id[32] = {0};
int count = 0;
scanf("%s", &id);
for (int i = 0; i < g_Count; i++)
{
if (strcmp(g_inf[i]->id,id) == 0)
{
printf("查找成功:\n");
printf("id:%d 姓名:%s 年龄:%d 电话:%s\n",
g_inf[i]->id,
g_inf[i]->name,
g_inf[i]->age,
g_inf[i]->tel);
count++;
}
}
if (count == 0)
{
printf("此用户不存在!\n");
}
}
//删除用户
void DelPerson()
{
int i;
char ch[20];
printf("请输入要删除的人的姓名:\n");
scanf("%s", ch);
for(i = 0; i <g_Count; i++)
{
if(strcmp(g_inf[i]->name,ch)==0)
{
int j;
for(int j=i;j<g_Count;j++)
{
printf("%s", g_inf[i]->name);
g_inf[j] = g_inf[j+1];
}
g_Count--;
}
}
printf("删除用户信息成功!\n");
}
//修改用户
void ChangePerson()
{
int n = 0;
char name[32];
printf("请输入要修改人的姓名:\n");
scanf("%s", name);
for (n = 0;n<g_Count; n++)
if (strcmp(name,g_inf[n]->name ) == 0)
{
printf("请输入修改的: ID, 姓名, 年龄, 电话\n\n");
scanf("%s%s%d%s",g_inf[n]->id,g_inf[n]->name, &g_inf[n]->age,g_inf[n]->tel);
break;
}
}