C 언어 구현 주소록

10236 단어 C 언어통신 록
본 논문 의 사례 는 여러분 에 게 C 언어 실현 주소록 의 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
실 현 된 기능 은 다음 과 같다.
1.주소록 초기 화;
2.주소록 에 항목 추가;
3.주소록 에 지 정 된 항목 삭제 하기;
4.지 정 된 규칙 에 따라 주소록 의 특정 항목 찾기;
5.주소록 의 모든 정 보 를 인쇄 한다.
6.주소록 의 지정 항목 수정;
7.주소록 파기;
8.주소록 내용 을 파일 에 저장 하기;
9.파일 의 내용 을 메모리 로 불 러 옵 니 다.
**Addr_Book.h**

#pragma once
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NAME_SIZE 200 
#define PHONE_SIZE 200 
#define ADDR_SIZE 200

typedef struct PersonInfo {
  char name[NAME_SIZE];
  char phone[PHONE_SIZE];
  char addr[ADDR_SIZE];
} PersonInfo;

#define FILE_PATH "./data.txt"

enum {
  DISPLAY = 1,
  ADD = 2,
  ERASE = 3,
  FIND = 4,
  MODIFY = 5,
  EXIT = 0
};

typedef struct AddrBook {
  PersonInfo* data;//  
  size_t size; //     
  size_t capacity; //     
} AddrBook;


/**
* @brief       
*
* @param addr_book
*/
void AddrBookInit(AddrBook* addr_book);

/**
* @brief         
*
* @param addr_book
*/
void AddrBookAdd(AddrBook* addr_book);

/**
* @brief            
*
* @param addr_book
*/
void AddrBookErase(AddrBook* addr_book);

/**
* @brief                
*
* @param addr_book
*/
void AddrBookFind(AddrBook* addr_book);

/**
* @brief            
*
* @param addr_book
*/
void AddrBookDisplay(AddrBook* addr_book);

/**
* @brief           
*
* @param addr_book
*/
void AddrBookModify(AddrBook* addr_book);

/**
* @brief      
*
* @param addr_book
*/
void AddrBookDestroy(AddrBook* addr_book);

/**
* @brief            
*
* @param addr_book
*/
void AddrBookSave(AddrBook* addr_book);

/**
* @brief             .
*
* @param addr_book
*/
void AddrBookLoad(AddrBook* addr_book);
**Addr_Book.c**

#define _CRT_SECURE_NO_WARNINGS 1

#include "Addr_Book.h"

//     
void AddrBookDisplay(AddrBook* addr_book){ 
  if (addr_book == NULL){
    return;
  }
  printf("
==================== =========================
"); printf("| | | |
"); printf("|----------------|---------------|----------------|
"); size_t i = 0; for (; i < addr_book->size; ++i){ printf("| %s | %s | %s |
", addr_book->data[i].name, addr_book->data[i].phone, addr_book->data[i].addr); printf("|----------------|---------------|----------------|
"); } } // void AddrBookInit(AddrBook* addr_book){ if (addr_book == NULL){ return ; } addr_book->size = 0; addr_book->capacity = 1; addr_book->data = (PersonInfo*)malloc(sizeof(PersonInfo)*addr_book->capacity); } // void AddrBookRelloc(AddrBook* addr_book){ if (addr_book == NULL){ return; } addr_book->capacity = addr_book->capacity * 2 + 1;// , PersonInfo* new_data = (PersonInfo*)malloc(sizeof(PersonInfo)*addr_book->capacity);// size_t i = 0; for (; i < addr_book->size; ++i){ new_data[i] = addr_book->data[i];// } free(addr_book->data);// addr_book->data = new_data; } // void AddrBookAdd(AddrBook* addr_book){ if (addr_book == NULL){ return; } if (addr_book->size >= addr_book->capacity){ // AddrBookRelloc(addr_book); } size_t cur = addr_book->size; ++addr_book->size; printf("
"); printf(" :"); scanf("%s", addr_book->data[cur].name); printf(" :"); scanf("%s", addr_book->data[cur].phone); printf(" :"); scanf("%s", addr_book->data[cur].addr); printf(" !
"); } // void AddrBookErase(AddrBook* addr_book){ if (addr_book == NULL){ return; } char delete_name[200] = {0}; printf(" :"); scanf("%s", &delete_name); size_t i = 0; for (; i <addr_book->size;++i){ if (strcmp(addr_book->data[i].name, delete_name)){ free(addr_book->data); addr_book->size--; printf(" !"); } else{ printf(" , !"); } } } // void AddrBookSave(AddrBook* addr_book){ FILE* fp = fopen(FILE_PATH, "w"); if (fp == NULL){ printf(" !
"); return; } size_t i = 0; for (; i < addr_book->size; ++i){ fprintf(fp, "| %s | %s | %s |
", addr_book->data[i].name, addr_book->data[i].phone, addr_book->data[i].addr); } fclose(fp); } // void AddrBookFind(AddrBook* addr_book){ if (addr_book == NULL){ return; } char delete_name[200] = { 0 }; printf(" :"); scanf("%s", &delete_name); size_t i = 0; for (; i <addr_book->size; ++i){ if (strcmp(addr_book->data[i].name, delete_name)){ printf(" , : :%s, :%s, :%s
", addr_book->data[i].name, addr_book->data[i].phone, addr_book->data[i].addr); } else{ printf(" !
"); } } } // void AddrBookModify(AddrBook* addr_book){ if (addr_book == NULL){ return; } char name[200] = { 0 }; printf(" :"); scanf("%s", &name); size_t i = 0; for (; i < addr_book->size; ++i) { if (strcmp(addr_book->data[i].name, name) == 0) { printf(" %lu :
", i + 1); printf(" :
:%s , :%s , :%s
", addr_book->data[i].name, addr_book->data[i].phone, addr_book->data[i].addr); } } size_t num = 0; printf(" :"); scanf("%lu", &num); char name2[200]; char phone[200]; char addr[200]; printf(" :"); scanf("%s", name2); strcpy(addr_book->data[num - 1].name, name2); printf(" :"); scanf("%s", phone); strcpy(addr_book->data[num - 1].phone, phone); printf(" :"); scanf("%s", addr); strcpy(addr_book->data[num - 1].addr, addr); printf(" !
"); return; } // void AddrBookDestroy(AddrBook* addr_book){ if (addr_book == NULL) { printf("addr_book is null
"); return; } else { addr_book->size = 0; addr_book->capacity = 0; free(addr_book->data); printf(" !
"); } } // void AddrBookLoad(AddrBook* addr_book){ if (addr_book = NULL){ printf(" !
"); return; } FILE* fp = fopen(FILE_PATH,"r"); if (fp = NULL){ printf(" !
"); return; } while (!feof(fp)){ if (addr_book->size >= addr_book->capacity){ AddrBookRelloc(addr_book); } size_t cur = addr_book->size; fscanf(fp, "%s%s%s
", addr_book->data[i].name, addr_book->data[i].phone, addr_book->data[i].addr); addr_book->size++; } fclose(fp); } //=============== // //=============== void menu(){ AddrBook addr_book; AddrBookInit(&addr_book); AddrBookLoad(&addr_book); while (1){ printf("============1. =============
"); printf("============2. =============
"); printf("============3. =============
"); printf("============4. =============
"); printf("============5. =============
"); printf("============6. =============
"); printf("============0. =============
"); int choice = 0; printf(" :"); scanf("%d", &choice); switch (choice){ case DISPLAY: AddrBookDisplay(&addr_book); break; case ADD: AddrBookAdd(&addr_book); AddrBookSave(&addr_book); break; case ERASE: AddrBookErase(&addr_book); break; case FIND: AddrBookFind(&addr_book); break; case MODIFY: AddrBookModify(&addr_book); AddrBookSave(&addr_book); break; case DESTROY: AddrBookDestroy(&addr_book); break; case EXIT: printf(" !
"); break; default: printf(" :"); break; } } } int main(){ menu(); return 0; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기