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를 반환