通讯录的实现(文件版)

首先是text.cpp

#include"contact.h"
enum func
{
    Exit,
    Add,
    Del,
    Search

};
void mune()
{
    printf("******0.exit  *********\n");
    printf("******1.add   *********\n");
    printf("******2.del   *********\n");
    printf("******3.search*********\n");
    printf("*****************************************************\n");
    printf("*****************************************************\n");
    printf("*****************************************************\n");


}
int main()
{
    
    int input = 0;
    struct contact mm;
    struct contact* pfs = &mm;
    pfs->ps=(struct Information*)malloc(3*sizeof(Information));
    pfs->size = 0;
    pfs->capacity = 3*sizeof(Information);
    
    
    Read(pfs);
    


    
    do 
    {
        mune();
        scanf("%d", &input);
        switch(input)
        {
        case Exit:
            
            break;
        case Add:
            AddContact(pfs);
            break;
        case Del:
            DelContact(pfs);
            break;
        case Search:
            SearchContact(pfs);
            break;

        }
    } while (input);
    printf("退出成功,使用愉快");
    Preserve(pfs);
    return 0;
}

然后是contact.cpp

#include"contact.h"
void CheckCapacity(struct contact* pfs);
void Read(struct contact* pfs)
{
    struct Information tem = { 0 };
    FILE* pf = fopen("text.dat", "rb");
    if (pf == NULL)
        return;
    while (fread(&tem, sizeof(Information), 1, pf))
    {
        CheckCapacity(pfs);
        pfs->ps[pfs->size] = tem;
    }
    fclose(pf);
    pf = NULL;
}
void CheckCapacity(struct contact* pfs)
{
    struct Information * str=NULL;
    if (pfs->size == pfs->capacity)
    {
        str = (struct Information*)realloc(pfs->ps, pfs->capacity + 3 * sizeof(Information));
        pfs->capacity += 3 * sizeof(Information);
    }
    if (str != NULL)
            pfs->ps = str;
}
void AddContact(struct contact* pfs)
{

    CheckCapacity(pfs);
    printf("请输入要添加的人的姓名");
    scanf("%s", ((pfs->ps)+(pfs->size))->name);
    while (getchar() != '\n');
    printf("请输入要添加的人的电话号码");
    scanf("%s", ((pfs->ps)  + (pfs->size))->number);
    while ((getchar()) != '\n');
    printf("请输入要添加的人的住址");
    scanf("%s", ((pfs->ps)  + (pfs->size))->address);
    while ((getchar()) != '\n');
    printf("请输入要添加的人的性别");
    scanf("%s", ((pfs->ps)  + (pfs->size))->sex);
    while ( getchar() != '\n');
    (pfs->size)++;



}
void DelContact(struct contact* pfs) 
{
    char ne[20] = {0};
    int count = 0;
    char c;
    printf("请输入要删除的人的姓名");
    scanf("%s", ne);
    while ((c = getchar()) != '\n');
    while (!(strcmp(ne, ((pfs->ps) + 1 + count)->name)))
    {
        count++;
    }
    *((pfs->ps) + 1 + count)->name = *((pfs->ps) + 1 + pfs->size)->name;
    *((pfs->ps) + 1 + count)->number = *((pfs->ps) + 1 + pfs->size)->number;
    *((pfs->ps) + 1 + count)->sex = *((pfs->ps) + 1 + pfs->size)->sex;
    *((pfs->ps) + 1 + count)->address = *((pfs->ps) + 1 + pfs->size)->address;



}
void SearchContact(struct contact* pfs)
{
    char ne[20] = { 0 };
    int count = 0;
    char c;
    printf("请输入要查看的人的姓名");
    scanf("%s", ne);
    while ((c = getchar()) != '\n');
    while ((strcmp(ne, ((pfs->ps) + count)->name)))
    {
        count++;
    }
    printf("%s\n", ((pfs->ps) + count)->name);
    printf("%s\n", ((pfs->ps)  + count)->number);
    printf("%s\n", ((pfs->ps)  + count)->address);
    printf("%s\n", ((pfs->ps)  + count)->sex);
}
void Preserve(struct contact* pfs)
{
    int i;
    FILE* pf = fopen("text.dat", "wb");
    for(i=0;i<pfs->size;i++)
    fwrite(pfs->ps, sizeof(Information), 1, pf);
    fclose(pf);
    pf = NULL;
}

最后头文件contact.h

#define _CRT_SECURE_NO_WARNINGS
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Information
{
    char name[20];
    char number[20];
    char address[20];
    char sex[2];

};
struct contact
{
    int size;
    int capacity;
    struct Information *ps;
    

};
void AddContact(struct contact* pfs);
void DelContact(struct contact* pfs);
void SearchContact(struct contact* pfs);
void Preserve(struct contact* pfs);
void Read(struct contact* ps);
void CheckCapacity(struct contact* ps);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值