티스토리 뷰
주소록 관리 시스템
프로그램 설계 : 개요
주소록 관리를 위하여 파일에 보관되며 검색,수적, 삭제가 가능한 시스템 구현
* 프로그램 구현 시 처리 대상 자료 : 이름 , 생년월일, 주소, 나이 , 전화번호
* 유효성 검사를 위하여 다양한 라이브러리 함수를 사용할 수 있음
* 프로그램의 기능 수행을 위한 요구분석을 주의 깊게 수행해야 함
* 현재 시간 등을 반홖하는 함수로 time 함수를 이용할 수 있음
* 이진파일의 입출력은 fread, fwrite를 이용한다 있음
* 프로그램의 기능 수행을 위한 요구분석을 주의 깊게 수행해야 함
* 현재 시간 등을 반홖하는 함수로 time 함수를 이용할 수 있음
* 이진파일의 입출력은 fread, fwrite를 이용한다 있음
- 메뉴 방식으로 작업 선택
- 보안을 위하여 이진 파일로 데이터 저장
- 출생연도 입력 시 나이 계산 자동으로 입력
- 이름순 전체 출력
- 이름 검색 후 출력, 수정, 삭제
시간 변환
* 주소록 입력
* 주소록 출력
* 주소록 검색
* 나이 자동계산
* 주소록 출력
* 주소록 검색
* 나이 자동계산
- asctime : 시간구조체를 문자로 변환
- ctime : 시간변수를 문자로 변환
- gmtime : UTC 시간으로 변환
- localtime : 지역 시간으로 변환
- strftime : 날짜와 시간으로 이루어진 문자열을 strct tm으로 변환
자료 구조 정의
struct phone {
char name[20];
char phone[14];
int birth;
int age;
char addr[50];
};
입력 검증
데이터를 입력하지 않고 넘어가는 경우를 검사
while(1){
fflush(stdin);
printf("\n이름 : ");
gets(mp[cnt].name);
if ( strlen(mp[cnt].name) > 0 )
break;
printf("\n이름을 입력하세요 ");
}
숫자 입력인지 확인
while(1){
fflush(stdin);
printf(“출생연도 : ”);
scanf(“%d”,&mp[cnt].birth);
if ( mp[cnt].birth > 0 )
break;
}
코드 분석
* 검색 문자의 위치를 찾을 수 있는 함수: strchr
* 문자열의 길이를 반홖하는 함수 : strlen
* 현재 시간 정보를 얻을 수 있는 함수 : time
* 이진 파일의 읽기와 쓰기에 이용하는 함수 : fread, fwrite
* 문자열의 길이를 반홖하는 함수 : strlen
* 현재 시간 정보를 얻을 수 있는 함수 : time
* 이진 파일의 읽기와 쓰기에 이용하는 함수 : fread, fwrite

나이계산
int calAge(int birth){
time_t timer;
struct tm *t;
timer = time(NULL);
t = localtime(&timer);
return t->tm_year + 1900- birth;
}
>
이전 데이터 파일 쓰기
void savePhones(PHONE* mp, int cnt)
{ FILE * fp;
int i;
fp = fopen ("myPhones.bin" , "wb+");
if (fp == NULL) perror ("Error opening file");
else {
fwrite(&cnt, sizeof(int), 1, fp);
fwrite(mp, sizeof(PHONE), cnt, fp);
fclose (fp); }
}
이전 데이터 파일 읽기
PHONE* readPhones(PHONE* mp, int* cn)
{
FILE * fp;
int i,cnt;
cnt = *cn;
fp = fopen ("myPhones.bin" , "rb+");
if (fp == NULL) perror ("Error opening file");
else {
fread(&cnt, sizeof(int),1,fp);
mp = (PHONE*)realloc(mp,sizeof(PHONE)*(cnt+1));
fread(mp, sizeof(PHONE), cnt, fp);
fclose (fp);
}
*cn = cnt;
return mp;
}
데이터 삭제
PHONE* deletePhone(PHONE* mp, int dn, int* cn) {
int i,cnt;
cnt = *cn;
for(i=dn;i<cnt-1;i++)
mp[i] = mp[i=1];
*cn = cnt-1;
return mp;
}
'JAVA기반 스마트웹 개발2021 > 프로그래밍 언어활용' 카테고리의 다른 글
게임 프로젝트 (0) | 2021.08.08 |
---|---|
변화·랜덤 라이브러리 (0) | 2021.08.08 |
시간 관련 라이브러리 (0) | 2021.08.08 |
도서관리 시스템 고도화(파일 처리) (0) | 2021.08.08 |
파일 입출력 라이브러리(응용) (0) | 2021.08.08 |
댓글
© 2018 webstoryboy