简易通讯录实现-----------数组篇

先分析思路——无思路必看!
  • 定义PeoInfo 结构体,里面存储的是人的信息,比如姓名,性别,年龄等,之后需要将其定义为数组,因为要存储多个信息。
  • 定义整型变量sz,用来记录存储的人信息的个数,因为需要知道到底储存了多少个人的信息。
  • 为了方便操作,将上面两个变量进行封装(因为进行操作的同时,可能需要改变sz的值(比如增加,删除),如果不封装,每次传参需要传两个),将它们封装到一个新的结构体Contact中,Contact的成员分为:

    1. PeoInfo类型的数组data
    2. int类型的变量sz

    数组data用来存储信息,sz用来记录个数。

  • 定义完成之后,在函数中创建Contact结构体变量(假设创建的变量为contact),等需要操作时,只需要将contact的地址传入函数中,就可以对它的值进行修改。

  • 而对于通讯录的增删查改等操作,其实操作的是contact结构体的成员,也就是数组data。所以整体的操作思路可以想象成对数组的操作。

    • 增加信息: 如果数组没有满,给数组下标为sz的成员赋值,赋值成功后sz++,如果满,提示已满并返回。
    • 删除信息:在数组中查找Name值与输入值相同的人,如果找到,将后面的人的信息依次向前挪动一位,成功后sz--。如果未找到,提示未找到,并返回。
    • 查找信息:在数组中查找Name值与输入值相同的人,如果找到,输出信息。如果未找到,提示未找到,并返回。
    • 修改信息:在数组中查找Name值与输入值相同的人,如果找到,进行修改。如果未找到,提示未找到,并返回。
    • 输出信息:输出所有有效信息,个数为sz
    • 排序 :按照首字母由小到大排序(strcmp实现)。
    • 清空 :数组初始化,sz赋值为0。
    • 退出 :退出程序。

    查找信息可以根据不同的变量查找,即根据Sex,Age等,只需要添加不同的操作即可,此处为按Name查找,其他函数也是按照Name查找。数组的大小是固定的,预编译定义的大小为1000。增加信息和删除信息,除了将人的信息存储进数组以外,还需要改变sz的值。

通过上面的分析,就可以用下面的定义(从代码中摘取出的部分,只用来表示上面思路的具体实现)来实现结构体的创建:

#define NAME_MAX 20         //姓名字符串最大值
#define SEX_MAX 5           //性别字符串最大值  
#define TELE_MAX 12         //电话字符串最大值
#define ADDR_MAX 25         //地址字符串最大值
#define CAPACITY_MAX 1000   //初始化时空间默认值

typedef struct PeoInfo            //联系人信息
{
    char name[NAME_MAX];
    char sex[SEX_MAX];
    int age;
    char tele[TELE_MAX];
    char addr[ADDR_MAX];
}PeoInfo;

typedef struct Contact           //通讯录信息
{
    PeoInfo data[CAPACITY_MAX];
    int sz;
}Contact, *pContact;

函数部分就是正常的增删查改、排序、输出、清空。只需要想清楚操作的是data数组,而数组中有效信息的个数为sz即可,下面附上函数部分在头文件中的声明:

void Choose_menu();    //打印选择菜单
void Initialize_Contact(pContact pcon);     //初始化通讯录
void Choose();      //选择功能
void Add_Peoinfo(pContact pcon);       //添加人信息
void Delete_Peoinfo(pContact pcon);   //删除人信息
void Search_Peoinfo(const pContact pcon);    //查找人的信息 
void Modify_Peoinfo(pContact pcon);    //修改人的信息 
void Show_Peoinfo(const pContact pcon);    //输出人的信息 
void Sort_Peoinfo(pContact pcon);    //排序人的信息 
void Empty_Contact(pContact pcon);     //清空通讯录
void Destroy_Contact(pContact pc
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值