티스토리 뷰

주소록 관리 시스템
# 프로그램 설계
1. 프로그램 개요
주소록 관리를 위하여 파일에 보관되며 검색 ∙ 수정 ∙ 삭제가 가능한 시스템 구현
프로그램 구현 시 처리 대상 자료
- 이름
- 나이
- 생년월일
- 젂화번호
- 주소
2. 기능 정의프로그램 구현 시 처리 대상 자료
- 이름
- 나이
- 생년월일
- 젂화번호
- 주소
1) 메뉴

2) 기능
3. 자료구조 정의
주소록 출력
주소록 검색
주소록 입력
나이 자동계산
3) 요구사항
주소록 검색
주소록 입력
나이 자동계산
메뉴 방식으로 작업 선택
보안을 위하여 이진 파일로 데이터 저장
출생연도 입력 시 나이 계산 자동으로 입력
이름순 젂체 출력
이름 검색 후 출력, 수정, 삭제
보안을 위하여 이진 파일로 데이터 저장
출생연도 입력 시 나이 계산 자동으로 입력
이름순 젂체 출력
이름 검색 후 출력, 수정, 삭제
structphone {
char name[20];
char phone[14];
intbirth;
intage;
char addr[50];
};
char name[20];
char phone[14];
intbirth;
intage;
char addr[50];
};
# 코드 분석
1. 입력 검증
3. 파일 쓰기
6. 데이터 삭제
데이터를 입력하지 않고 넘어가는 경우를 검사
2. 나이 계산
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;
}
int calAge(int birth){
time_t timer;
struct tm *t;
timer = time(NULL);
t = localtime(&timer);
return t->tm_year + 1900- birth;
}
이전 데이터 파일 쓰기
4. 파일 읽기
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);
}
}
이진 데이터 파일 읽기
5. 데이터 수정
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* modifyPhone(PHONE* mp, inti)
{
char yn;
intsel;
printf(‚\n-----------------------------------);
printf(‚\n1. 이 름: %s \n‛,mp[i].name);
printf(‚2. 젂화번호: %s \n‛,mp[i].phone);
printf(‚3. 주 소: %s \n‛,mp[i].addr);
printf(‚4. 출생연도: %d \n‛,mp[i].birth);
printf(‚나 이: %d \n‛,mp[i].age);
printf(‚\n-----------------------------------‛);
printf(‚\n수정할데이터를선택하세요: ‛);
scanf(‚%d‛,&sel);
switch(sel){
case 1 :
while(1){
fflush(stdin);
printf(‚\n이름: ‛);
gets(mp[i].name);
if ( strlen(mp[i].name) > 0) break;
printf(‚\n이름을입력하세요‛);
}
break;
}
}
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.10 |
---|---|
변환·랜덤 라이브러리 (0) | 2021.08.10 |
시간 관련 라이브러리 (0) | 2021.08.09 |
도서관리 시스템 고도화(파일 처리) (0) | 2021.08.08 |
파일 입출력 라이브러리(응용) (0) | 2021.08.08 |