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 를 이용하여 처리할 수 있다.