Blog/JAVA기반 스마트웹 개발2021

프로그래밍 언어 활용 part 2 - 도서관리 시스템 고도화(파일 처리)

고구마달랭이 2021. 8. 9. 22:33

도서관리 시스템 고도화(파일 처리)

학습내용 학습목표
▪ 프로그램 설계
▪ 코드 분석
▪ 정렬 관련 라이브러리 함수를 사용하여 프로그램을 구현할 수 있다.
▪ 사용 가능한 라이브러리 함수를 개발에 적용할 수 있다.

프로그램 설계

 

1. 고도화 내용

☞ 도서 데이터를 텍스트 파일로 저장하여 관리

☞ 유효성 검사기능 추가

☞ 프로그램 구현 시 처리 대상 자료 

• 도서명  • 저자  • 가격  • 판매수량  • 코드  • 베스트셀러

 

2. 기능 정의

[1] 메뉴

 

[2] 기능

☞ 도서 입력

☞ 도서 출력

☞ 제목 검색

☞ 저자검색(검색기능키워드검색)

☞ 출판연도별 목록 출력

☞ 베스트셀러 출력

 

[3] 고도화 내용

☞ 텍스트 파일에 데이터 저장

☞ 유효성 검사 추가

 

[4] 고도화 방법

 

3. 자료구조 정의

 

 


 

코드 분석


1. 파일에 저장

void saveBooks(BOOK* mb, intcnt)
{
   FILE * fp;
   inti;
   fp= fopen(“myBooks.txt” , “w+”);
   if (fp== NULL) perror(“Error opening file”);
   else {
     fprintf(fp, “%d\n”, cnt);
       for(i=0;i<cnt;i++){
         fprintf(fp,“%s %s %s %d %d\n”,mb[i].bookCode, mb[i].bookTitle, mb[i].bookAuthor, mb[i].bookPrice, mb[i].bookSale);
 		}
   fclose(fp);
   }
}

 

2. 파일에서 읽기

BOOK* readBooks(BOOK* mb, int* cn)
{
   FILE * fp;
   int i,cnt;

   fp = fopen (“myBooks.txt” , “r+”);
   if (fp == NULL) perror (“Error opening file”);
   else {
       fscanf(fp, “%d”,&cnt);
       mb = (BOOK*)realloc(mb,sizeof(BOOK)*(cnt+1));
   for(i=0;i<cnt;i++){
	 fscanf(fp, “%s %s %s %d %d”,mb[i].bookCode, mb[i].bookTitle, mb[i].bookAuthor, &mb[i].bookPrice , &mb[i].bookSale);
}
 fclose (fp);
 }
 *cn = cnt;
 return mb;
}

 

3. 선언 및 main 함수

 

4. 유효성 검사


 

 

학습정리

 

1. 프로그램 설계

▪ 프로그램 개발 시 작업 목표에 맞게 사용할 라이브러리 함수와 자료구조를 결정해야 함

유효성 검사를 위해서 다양한 함수를 적용하게 처리할 수 있다.

문자열의 길이는 strlen 함수를 이용하여 빈 입력값을 검사할 수 있다.

 

2. 코드 분석

▪ 파일 입출력을 위해서는 먼저 입출력을 위한 스트림을 생성해야한다.

▪ 파일 스트림 생성 시 fopen 함수를 이용하고 모드를 함수의 인수로 젂달해야한다.

▪ 형식화된 파일 입출력은 fscanf 와 fprintf 를 이용하여 처리할 수 있다.