Doputer

전화번호부 프로젝트📱

by #김도현

프로젝트 명 : 전화번호부 프로그램

 

개발 기간 : 2017.05.16 ~ 06.14

 

소개 :  전화번호부를 관리할 수 있는 프로그램을 만들었습니다. 메뉴 선택을 통해 연락처 등록, 전체 보기, 삭제, 년/월/일로 검색, 이름 순/생일 순 정렬, 이름으로 검색 후 정보 변경, 데이터 불러오기, 데이터 저장하기, 종료 등의 기능을 수행 할 수 있습니다.

 

내용 : 기본적으로 데이터는 이름, 전화번호, 생일을 멤버로 갖는 구조체 배열에 저장했습니다. 그리고 구조체와 구조체 멤버들은 동적 메모리 할당을 통해서 메모리는 효율적으로 이용했습니다. 데이터를 등록할 때는 이름을 기준으로 삽입될 위치를 찾은 후, 나머지 자료를 이동시키는 방법으로 정렬과 동시에 등록시켰습니다. 데이터를 전체 보기할 때는 인덱스 0부터 저장 되어있는 구조체 배열의 인덱스까지 반복문을 통해 출력했습니다. 데이터를 삭제할 때는 삭제할 위치의 메모리를 해제한 후, 다음 주소에 있는 구조체 배열의 멤버들을 당겨오는 방식으로 구현했습니다. 검색 기능은 년/월/일을 사용자가 선택해서 볼 수 있도록 했습니다. 데이터를 사용자가 이름 순과 생일 순의 정렬은 선택하게 한 뒤, 버블 정렬을 이용했습니다. 데이터를 이름 순으로 검색 후 전화번호와 생일을 변경할 수 있도록 구현했습니다. 데이터를 불러올 때는 “PHONE_BOOK.txt” 파일을 열어서 한 줄 씩 읽어오도록 했습니다. 데이터를 파일로 저장할 때는 “PHONE_BOOK.txt” 파일에 이름, 전화번호, 생일이 한 줄 씩 저장되도록 했습니다. 끝으로 여러 기능들을 분할 컴파일 할 수 있도록 분리 했고, 선언에 관한 헤더 파일은 따로 만들어서 이용했습니다.

 

개발 내용 : 개인 프로젝트이다 보니까 혼자서 모두 구현했습니다. 다만 학교에서 내 준 과제에 나와있는 가이드라인 외에 여러가지를 추가로 구현했습니다. 우선 월별 검색을 년, 월, 일 검색으로 바꿔서 검색 기능을 강화했습니다. 그리고 데이터를 이름 순과 생일 순으로 선택해서 정렬할 수 있는 기능을 추가했습니다. 그리고 데이터를 이름 검색을 통해 수정할 수 있는 기능도 구현했습니다. 마지막으로 데이터 저장과 종료가 동시에 이루어졌었는데 프로그램 실행 중간 중간에 저장할 수 있도록 저장 기능과 종료 기능을 분리했습니다.

 

프로젝트 어려움/해결방안 : 동적 메모리 할당한 연락처 메모리를 삭제 기능을 통해 구현하는 부분에서 어려움을 겪었습니다. 포인터와 동적 메모리 할당에 대한 이해도가 낮다고 생각하여 다시 공부를 해서 포인터와 동적 메모리 할당의 관계를 그림을 그려보면서 파악했습니다. 어떤 방법으로 메모리가 할당되고 이용되는지에 대해 공부하고 나니까 어려웠던 부분을 쉽게 해결할 수 있었습니다.

 

소스 코드 :  https://github.com/doputer/PhonebookProgram

 

 

 

'프로젝트' 카테고리의 다른 글

WYSIWYG 에디터 draft.js의 기록👀  (4) 2021.09.03
Color Picker 프로젝트🎨  (0) 2021.01.22
Snake 게임🐍  (0) 2020.11.10
가위바위보 게임 프로젝트✊  (0) 2017.06.22

블로그의 정보

Doputer

#김도현

활동하기