티스토리 뷰
도서관리 시스템 고도화(파일 처리)
# 프로그램 설계
1. 고도화 내용
도서 데이터를 텍스트 파일로 저장하여 관리
유효성 검사기능 추가
프로그램 구현 시 처리 대상 자료
- 도서명
- 저자
- 가격
- 판매 수량
- 코드
2. 기능 정의유효성 검사기능 추가
프로그램 구현 시 처리 대상 자료
- 도서명
- 저자
- 가격
- 판매 수량
- 코드
1)메뉴
2)기능
struct book {
char bookTitle[50];
char bookAuthor[20];
int bookPrice;
int bookSale;
char bookCode[9];
};
3. 스트림
- 도서 입력
- 도서 출력
- 제목 검색
- 저자 검색(검색 기능키 워드 검색)
- 출판연도별 목록
- 출력 베스트셀러 출력
- 데이터 파일로 입출력
3)고도화 내용
- 텍스트 파일에 데이터 저장
- 유효성 검사 추가
4)고도화 방법
struct book {
char bookTitle[50];
char bookAuthor[20];
int bookPrice;
int bookSale;
char bookCode[9];
};
# 코드 분석
1. 파일에 저장
2. 파일에서 읽기
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);
}
}
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;
}
BOOK* inBook(BOOK* , int*);
void outBook(BOOK* , int);
void searchBook(BOOK* , int);
BOOK* readBooks(BOOK*, int*);
void saveBooks(BOOK* , int);
intmain()
{
intsel, totalBCnt=0;
BOOK *myBook;
myBook= (BOOK *)calloc(2,sizeof(BOOK));
myBook= readBooks(myBook,&totalBCnt);
while(1){
puts(“\n\n원하는메뉴를선택하세요”);
……………………………………………………………………………
switch(sel){
case 1 : myBook= inBook(myBook, &totalBCnt);
break;
case 2 : outBook(myBook, totalBCnt); break;
case 3 : searchBook(myBook, totalBCnt); break;
case 0 : saveBooks(myBook,totalBCnt); return 0;
default : puts(“0~3 사이의메뉴번호를선택하세요”);
}
}
return 0;
}
if (!strcspn(mb[cnt].bookCode, “0123456789-”) &&
(strstr(mb[cnt].bookCode, “-”) - mb[cnt].bookCode)==4 &&
strlen(mb[cnt].bookCode)==8)
while(1){
fflush(stdin);
printf(“책제목 : ”);
gets(mb[cnt].bookTitle);
if ( strlen(mb[cnt].bookTitle) > 0 ) break;
printf(“\n책제목을 입력하세요 ”);
}
while(1){
fflush(stdin);
printf(“저자 : ”);
gets(mb[cnt].bookAuthor);
if ( strlen(mb[cnt].bookAuthor) > 0 ) break;
printf(“\n저자를 입력하세요 ”);
}
'JAVA기반스마트웹개발2021 > 프로그래밍언어 활용' 카테고리의 다른 글
주소록 관리 시스템 (0) | 2021.08.09 |
---|---|
시간 관련 라이브러리 (0) | 2021.08.09 |
파일 입출력 라이브러리(응용) (0) | 2021.08.08 |
파일 입출력 라이브러리(기초) (0) | 2021.08.08 |
도서관리 시스템 고도화(동적메모리) (0) | 2021.08.08 |