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

프로그래밍 언어 활용 part 2 - 도서관리 시스템

고구마달랭이 2021. 8. 8. 22:21

 

 

도서관리 시스템

학습내용 학습목표
▪ 프로그램 설계
▪ 코드 분석
▪ 목표로 하는 시스템에서 요구되는 자료구조를 설계할 수 있다.
▪ 사용 가능한 라이브러리 함수를 개발에 적용할 수 있다.

프로그램 설계

 

1. 프로그램 개요

도서관리 프로그램이란?

☞ 도서명과 저자 등의 정보를 저장하고 저장된 도서 목록 젂체를 출력하거나 찾고자 하는 도서를 제목과 저자 정보로 검색하여 결과를 출력하는 프로그램을 개발

 

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

☞ 도서명 / 가격 / 저자 / 판매수량

 

 

2. 기능 정의

항 목 내 용
메뉴 도서 입력, 도서 출력, 도서 검색, 종료
기능 도서 입력, 출력, 제목 검색, 저자 검색
요구사항 ▪ 메뉴방식으로 작업 선택
▪ 종료 메뉴 추가
▪ 책 제목 최대 50글자까지 입력 가능
▪ 저자명 최대 20글자까지 입력 가능
▪ 검색 : 제목 검색, 저자 검색
▪ 최대 100권 관리 기능

 

 

3. 자료구조 정의

 


 

코드 분석

1. 선언부

#include <stdio.h>
#include <string.h>

typedef struct book{

	char bookTitle[50];
	char bookAuthor[20];
    int bookPrice;
	int bookSale;

}BOOK;
int inBook(BOOK* , int);
void outBook(BOOK* , int);
void searchBook(BOOK* , int);

 

 

2. main()함수

int main()
{
int sel, totalBCnt=0;
BOOK myBook[100];
while(1){
puts("\n원하는 메뉴를 선택하세요");
puts("1. 도서 입력");
puts("2. 도서 출력");
puts("3. 도서 검색");
puts("0. 종료 ");
scanf("%d", &sel);
fflush(stdin);
switch(sel){
			case 1 : totalBCnt = inBook(myBook, totalBCnt); break;
			case 2 : outBook(myBook,totalBCnt); break;
			case 3 : searchBook(myBook,totalBCnt); break;
			case 0 : return 0;
			default : puts("0~3 사이의 메뉴번호를 선택하세요");
			}
  		 } return 0;
}

 

3. 입력함수

int inBook(BOOK* mb, int cnt)
{
	printf("\n책제목 : ");
	gets(mb[cnt].bookTitle);
    
	printf("저자 : ");
	gets(mb[cnt].bookAuthor);
    
	printf("가격 : ");
	scanf("%d",&mb[cnt].bookPrice);
    
	printf("재고수량 : ");
	scanf("%d",&mb[cnt].bookSale);
    
	return ++cnt;
}

 

4. 출력함수

void outBook(BOOK* mb, int cnt)
{
		int i;
		for(i=0;i<cnt;i++)
		{
				printf("\n-----------------------------------");
				printf("\n제목 : %s \n",mb[i].bookTitle);
				printf("저자 : %s \n",mb[i].bookAuthor);
				printf("가격 : %d \n",mb[i].bookPrice);
				printf("수량 : %d \n",mb[i].bookSale);
		}
}

 

4. 검색함수

void searchBook(BOOK* mb, int cnt)
{

   char sTitle[50];
   int i, search;
   
   puts("\n원하는 메뉴를 선택하세요");
   puts("1. 제목 검색 ");
   puts("2. 저자 검색 ");
   scanf("%d", &search);
   
   fflush(stdin);
   switch(search){
     case 1 : printf("\n검색할 제목을 입력하세요: ");
     gets(sTitle);
     for(i=0;i<cnt;i++)
     {
 if (!strcmp(mb[i].bookTitle,sTitle))
     break;
 }
 if(i<cnt)
 {
	 printf("\n-----------------------------------");
	 printf("\n제목 : %s \n",mb[i].bookTitle);
	 printf("저자 : %s \n",mb[i].bookAuthor);
	 printf("가격 : %d \n",mb[i].bookPrice);
	 printf("수량 : %d \n",mb[i].bookSale);
 }

else
 {
 	printf("\n-----------------------------------");
	 printf("\n일치하는 책이 없습니다. \n");
 }
 break;

 

 


 

 

학습정리

 

1. 프로그램 설계

▪ 프로그램 개발 시 처리할 자료에 대한 자료구조 정의는 매우 중요함

▪ 프로그램의 기능 수행을 위한 요구분석을 주의 깊게 수행 해야 함

 

2. 코드 분석

▪ 라이브러리 함수 사용 시, 함수의 반환 값 매개변수 등을 정확히 확인 후 사용

▪ 라이브러리 함수는 해당 헤더 파일을 선언 후 사용

▪ strcmp()함수는 문자열을 비교하고 다른 경우는 true를 반환