728x90
반응형

주제 : 회원전용 도서관리 프로그램 작성하기

<요구 사항>
📍최초 메뉴
       : 회원 번호는 문자열 무엇이든 상관없이 등록
       : 서비스 종료시 프로그램 자체 종료
 [서비스 이용을 위한 회원 인증]
  1. 회원번호 등록
  2. 회원 인증
  3. 서비스 종료

📍회원 인증이 된 경우 메뉴
       : 도서 정보 - 도서번호, 도서제목, 재고권수
       : 도서 상태 확인 - 특정 도서에 대한 정보 조회(도서번호, 도서제목, 현재권수/전체권수)
 [도서 서비스 메뉴]
  1. 도서 입고
  2. 도서 대출
  3. 도서 반납
  4. 도서 상태 확인
  5. 도서 전체 목록 확인
  6. 도서 서비스 종료(회원 인증 메뉴로 갑니다.)

 

 

내가 만든 코드

1. class LibraryKiosk 생성

class LibraryKiosk :
    def __init__(self) :
        self.books = {}

    def add_book(self, book_id, title, quantity) :
        if book_id in self.books : 
            self.books[book_id]["quantity"] += quantity
            self.books[book_id]["register_quantity"] += quantity
        else :
            self.books[book_id] = {"title" : title, "quantity" : quantity, "register_quantity" : quantity}
        print(f"도서번호 : {book_id} / 제목 : {title} / 입고수량 : {quantity} 입고성공😍")

    def borrow_book(self, book_id):
        if (book_id in self.books) and (self.books[book_id]['quantity']) > 0 :
            self.books[book_id]['quantity'] -= 1
            print("대출이 완료되었습니다.")
            print(f"도서번호 : {book_id} / 제목 : {self.books[book_id]['title']} / 남은재고수량 : {self.books[book_id]['quantity']}")
        else:
            print("도서가 존재하지 않거나, 대출할 재고가 없습니다.")

    def return_book(self, book_id) :
        if book_id in self.books and (self.books[book_id]["register_quantity"] - self.books[book_id]["quantity"]) > 0 :
            self.books[book_id]["quantity"] += 1
            print(f"도서번호 : {book_id} / 제목 : {self.books[book_id]['title']} / 남은재고수량 : {self.books[book_id]['quantity']}")
        else:
            print("해당 도서가 존재하지 않습니다.")

    def check_book(self, book_id) :
        if book_id in self.books :
            (print(f"도서번호 : {book_id} / 제목 : {self.books[book_id]['title']} / 현재수량 : {self.books[book_id]['quantity']} / 전체수량 : {self.books[book_id]['register_quantity']}"))
        else:
            print("해당 도서가 존재하지 않습니다.")

    def list_book(self):
        for i in self.books.keys():
            print(f"{self.books[i]['title']}")

 

2. bookKiosk 함수 생성

def bookKiosk(register_num, customer) :
    if register_num in customer :
            kiosk = LibraryKiosk()
            while True :
                choice = input("""
                               <도서 서비스 메뉴>
                               1. 도서 입고
                               2. 도서 대출
                               3. 도서 반납
                               4. 도서 상태 확인
                               5. 도서 전체 목록 확인
                               6. 도서 서비스 종료(회원 인증 메뉴로 돌아갑니다)
                               원하는 번호(1~6)를 선택하세요.
                               """)
                
                if choice == "1" :
                    print("도서 입고")
                    book_id = input("도서 번호를 입력해 주세요 : ")
                    title = input("도서 제목를 입력해 주세요 : ")
                    quantity = int(input("입고할 권수를 입력해 주세요 : "))
                    kiosk.add_book(book_id, title, quantity)
                    
                elif choice == "2" :
                     print("도서 대출")
                     book_id = input("대출할 도서번호를 입력해주세요 : ")
                     kiosk.borrow_book(book_id)
                    
                elif choice == "3" :
                     print("도서 반납")
                     book_id = input("반납할 도서번호를 입력해주세요 : ")
                     kiosk.return_book(book_id)
                    
                elif choice == "4" :
                     print("도서 상태 확인")
                     book_id = input("확인할 도서번호를 입력해주세요 : ")
                     kiosk.check_book(book_id)
        
                elif choice == "5" :
                     print("도서 전체 목록 확인")
                     kiosk.list_book()
                
                elif choice == "6" :
                    print("도서 서비스 종료(회원 인증 메뉴로 돌아갑니다.)")
                    break
                else :
                    print("다시 선택해주세요")
    else :
        print("등록되지 않은 회원입니다.")

 

3. main 함수 생성

def main() :
    customer = []
    while True : 
        choice = input("""
                        <서비스 이용을 위한 회원 인증>
                        1. 회원번호 등록
                        2. 회원 인증
                        3. 종료
                        원하는 번호(1~3)를 선택하세요
                        """)
    
        if choice == "1" :
            print("회원번호 등록")
            user_num = input("등록할 회원번호를 입력해주세요: ")
            
            customer.append(user_num)
               
        elif choice == "2" :
            print("회원 인증")
            register_num = input("등록하신 회원번호를 입력해주세요 : ")
            bookKiosk(register_num, customer)
                                                                                              
        elif choice == "3" :
            print("종료")
            break
            
        else :
            print("다시 선택해주세요")

if __name__ == "__main__":
    main()

 

4. 결과

 <서비스 이용을 위한 회원 인증>
                        1. 회원번호 등록
                        2. 회원 인증
                        3. 종료
                        원하는 번호(1~3)를 선택하세요
                         1
회원번호 등록
등록할 회원번호를 입력해주세요:  001

                        <서비스 이용을 위한 회원 인증>
                        1. 회원번호 등록
                        2. 회원 인증
                        3. 종료
                        원하는 번호(1~3)를 선택하세요
                         2
회원 인증
등록하신 회원번호를 입력해주세요 :  001

                               <도서 서비스 메뉴>
                               1. 도서 입고
                               2. 도서 대출
                               3. 도서 반납
                               4. 도서 상태 확인
                               5. 도서 전체 목록 확인
                               6. 도서 서비스 종료(회원 인증 메뉴로 돌아갑니다)
                               원하는 번호(1~6)를 선택하세요.
                                1
도서 입고
도서 번호를 입력해 주세요 :  001
도서 제목를 입력해 주세요 :  파이썬
입고할 권수를 입력해 주세요 :  5
도서번호 : 001 / 제목 : 파이썬 / 입고수량 : 5 입고성공😍

                               <도서 서비스 메뉴>
                               1. 도서 입고
                               2. 도서 대출
                               3. 도서 반납
                               4. 도서 상태 확인
                               5. 도서 전체 목록 확인
                               6. 도서 서비스 종료(회원 인증 메뉴로 돌아갑니다)
                               원하는 번호(1~6)를 선택하세요.
                                2
도서 대출
대출할 도서번호를 입력해주세요 :  001
대출이 완료되었습니다.
도서번호 : 001 / 제목 : 파이썬 / 남은재고수량 : 4

                               <도서 서비스 메뉴>
                               1. 도서 입고
                               2. 도서 대출
                               3. 도서 반납
                               4. 도서 상태 확인
                               5. 도서 전체 목록 확인
                               6. 도서 서비스 종료(회원 인증 메뉴로 돌아갑니다)
                               원하는 번호(1~6)를 선택하세요.
                                3
도서 반납
반납할 도서번호를 입력해주세요 :  001
도서번호 : 001 / 제목 : 파이썬 / 남은재고수량 : 5

                               <도서 서비스 메뉴>
                               1. 도서 입고
                               2. 도서 대출
                               3. 도서 반납
                               4. 도서 상태 확인
                               5. 도서 전체 목록 확인
                               6. 도서 서비스 종료(회원 인증 메뉴로 돌아갑니다)
                               원하는 번호(1~6)를 선택하세요.
                                4
도서 상태 확인
확인할 도서번호를 입력해주세요 :  001
도서번호 : 001 / 제목 : 파이썬 / 현재수량 : 5 / 전체수량 : 5

                               <도서 서비스 메뉴>
                               1. 도서 입고
                               2. 도서 대출
                               3. 도서 반납
                               4. 도서 상태 확인
                               5. 도서 전체 목록 확인
                               6. 도서 서비스 종료(회원 인증 메뉴로 돌아갑니다)
                               원하는 번호(1~6)를 선택하세요.
                                5
도서 전체 목록 확인
파이썬

                               <도서 서비스 메뉴>
                               1. 도서 입고
                               2. 도서 대출
                               3. 도서 반납
                               4. 도서 상태 확인
                               5. 도서 전체 목록 확인
                               6. 도서 서비스 종료(회원 인증 메뉴로 돌아갑니다)
                               원하는 번호(1~6)를 선택하세요.
                                6
도서 서비스 종료(회원 인증 메뉴로 돌아갑니다.)

                        <서비스 이용을 위한 회원 인증>
                        1. 회원번호 등록
                        2. 회원 인증
                        3. 종료
                        원하는 번호(1~3)를 선택하세요
                         3
종료

 

728x90
반응형

+ Recent posts