본문 바로가기

PYTHON-BACK

#파이썬 도서관 출납 시스템_16일차

728x90

도선관 출납 시스템 개발

 

기본적으로 있어야되는 시스템

 

 

 

내가 한 도서관리 프로그램

import os

# 공통 메뉴 선택 함수
def selectMenu():
    os.system('cls')

    print("===========================")
    print("도서관리 프로그램 ver. 0.1.0")
    print("===========================")
    print()
    print("1: 도서정보 관리")
    print("2: 회원 정보 관리")
    print("3: 대출 기록 관리")
    print("0: 종료")
    print()
    return input("메뉴 선택: ")

# 도서 정보 관리
def manageBooksMenu():
    os.system('cls')

    print("=========도서정보 관리=========")
    print("1: 도서 추가")
    print("2: 도서 삭제")
    print("3: 도서 검색")
    print("4: 카테고리 관리")
    print("5: 출판사 관리")
    print("0: 뒤로가기")
    print()
    return input("메뉴 선택: ")

def addBook():
    print("=========도서 추가=========")

def delBook():
    print("=========도서 삭제=========")

def searchBookMenu():
    os.system('cls')

    print("=========도서 검색=========")
    print("1: 도서명 검색")
    print("2: 저자명 검색")
    print("3: 출판사 검색")
    print("4: ISBN 검색")
    print("5: 발행년도 검색")
    print("6: 카테고리 검색")
    print("0: 뒤로가기")
    print()
    return input("메뉴 선택: ")

def searchBook():
    while True:
        menu = searchBookMenu()
        if menu == "0":
            break
        elif menu == "1":
            print("=========도서명 검색=========")
        elif menu == "2":
            print("=========저자명 검색=========")
        elif menu == "3":
            print("=========출판사 검색=========")
        elif menu == "4":
            print("=========ISBN 검색=========")
        elif menu == "5":
            print("=========발행년도 검색=========")
        elif menu == "6":
            print("=========카테고리 검색=========")
        else:
            print("메뉴를 잘못 선택했습니다!")
        input("아무 키나 눌러주세요...")

def manageCategoryMenu():
    os.system('cls')

    print("=========카테고리 관리=========")
    print("1: 카테고리 추가")
    print("2: 카테고리 수정")
    print("3: 카테고리 삭제")
    print("4: 카테고리 목록")
    print("0: 뒤로가기")
    print()
    return input("메뉴 선택: ")

def addCategory():
    print("=========카테고리 추가=========")

def editCategory():
    print("=========카테고리 수정=========")

def deleteCategory():
    print("=========카테고리 삭제=========")

def listCategories():
    print("=========카테고리 목록=========")

def manageCategories():
    while True:
        submenu = manageCategoryMenu()
        if submenu == "0":
            break
        elif submenu == "1":
            addCategory()
        elif submenu == "2":
            editCategory()
        elif submenu == "3":
            deleteCategory()
        elif submenu == "4":
            listCategories()
        else:
            print("메뉴를 잘못 선택했습니다!")
        input("아무 키나 눌러주세요...")

def managePublisherMenu():
    os.system('cls')

    print("=========출판사 관리=========")
    print("1: 출판사 정보 추가")
    print("2: 출판사 정보 삭제")
    print("3: 출판사 정보 수정")
    print("4: 출판사 목록 보기")
    print("0: 뒤로가기")
    print()
    return input("메뉴 선택: ")

def addPublisher():
    print("=========출판사 정보 추가=========")

def deletePublisher():
    print("=========출판사 정보 삭제=========")

def editPublisher():
    print("=========출판사 정보 수정=========")

def listPublishers():
    print("=========출판사 목록 보기=========")

def managePublishers():
    while True:
        submenu = managePublisherMenu()
        if submenu == "0":
            break
        elif submenu == "1":
            addPublisher()
        elif submenu == "2":
            deletePublisher()
        elif submenu == "3":
            editPublisher()
        elif submenu == "4":
            listPublishers()
        else:
            print("메뉴를 잘못 선택했습니다!")
        input("아무 키나 눌러주세요...")

def manageBooks():
    while True:
        submenu = manageBooksMenu()
        if submenu == "0":
            break
        elif submenu == "1":
            addBook()
        elif submenu == "2":
            delBook()
        elif submenu == "3":
            searchBook()
        elif submenu == "4":
            manageCategories()
        elif submenu == "5":
            managePublishers()
        else:
            print("메뉴를 잘못 선택했습니다!")
        input("아무 키나 눌러주세요...")

# 회원 정보 관리
def manageMembersMenu():
    os.system('cls')

    print("=========회원 정보 관리=========")
    print("1: 회원 정보 추가")
    print("2: 회원 정보 수정")
    print("3: 회원 정보 삭제")
    print("4: 회원 대출 현황")
    print("0: 뒤로가기")
    print()
    return input("메뉴 선택: ")

def addMember():
    print("=========회원 정보 추가=========")

def editMember():
    print("=========회원 정보 수정=========")

def deleteMember():
    print("=========회원 정보 삭제=========")

def viewMemberBorrowing():
    print("=========회원 대출 현황=========")

def manageMembers():
    while True:
        submenu = manageMembersMenu()
        if submenu == "0":
            break
        elif submenu == "1":
            addMember()
        elif submenu == "2":
            editMember()
        elif submenu == "3":
            deleteMember()
        elif submenu == "4":
            viewMemberBorrowing()
        else:
            print("메뉴를 잘못 선택했습니다!")
        input("아무 키나 눌러주세요...")

# 대출 기록 관리
def manageBorrowRecordsMenu():
    os.system('cls')

    print("=========대출 기록 관리=========")
    print("1: 대출 기록 저장")
    print("2: 반납 기록 저장")
    print("3: 과거 대출/반납 기록 조회")
    print("0: 뒤로가기")
    print()
    return input("메뉴 선택: ")

def saveBorrowRecord():
    print("=========대출 기록 저장=========")

def saveReturnRecord():
    print("=========반납 기록 저장=========")

def viewPastRecords():
    print("=========과거 대출/반납 기록 조회=========")

def manageBorrowRecords():
    while True:
        submenu = manageBorrowRecordsMenu()
        if submenu == "0":
            break
        elif submenu == "1":
            saveBorrowRecord()
        elif submenu == "2":
            saveReturnRecord()
        elif submenu == "3":
            viewPastRecords()
        else:
            print("메뉴를 잘못 선택했습니다!")
        input("아무 키나 눌러주세요...")

# 메인 메뉴
def main():
    while True:
        menu = selectMenu()

        if menu == "0":
            break
        elif menu == "1":
            manageBooks()
        elif menu == "2":
            manageMembers()
        elif menu == "3":
            manageBorrowRecords()
        else:
            print("메뉴를 잘못 선택했습니다!")
            input("아무 키나 눌러주세요...")

    print("프로그램을 종료합니다.")

if __name__ == '__main__':
    main()

 

 

클래스 없이 작업 ( 당일 학습 내용)

'''
도서 관리 프로그램 (리스트 사용, 클래스 사용X, 메뉴만 구현)

- 도서 관리 프로그램은 콘솔 응용 프로그램이다.
- 응용에서는 사용자와 상호작용을 담당한다.
- 응용은 사용자에게 메뉴를 보여주고 선택한 메뉴를 수행하는 것을 반복한다.
- 메뉴에는 장르 추가, 도서 추가,도서 삭제, 도서 검색, 전체 도서 보기, 프로그램 종료가 있다.
- 장르 추가를 선택하면 추가할 장르 명을 입력받아 추가한다.
- 도서 추가를 선택하면 장르를 선택하고 도서 정보를 입력받아 추가한다.
- 도서는 ISBN(주요키), 도서명, 저자, 출판사, 가격 정보를 사용자로부터 입력받는다.
- 도서 삭제 기능에서는 도서의 ISBN을 사용자로부터 입력받아 삭제한다.
- 도서 검색 기능에서는 도서의 ISBN을 사용자로부터 입력받아 검색한다.
- 전체 보기에서는 전체 도서 정보를 출력한다.

'''

 

import os
# import time # 아래 아무 키나 눌러주세요 대체해서 사용

def selectMenu():
    os.system('cls')  # Windows에서는 'cls', macOS/Linux에서는 'clear'

    print("===========================")
    print("도서관 출납 관리 프로그램 ver. 0.1.0")
    print("===========================")
    print()
    print("1: 카테고리 추가")
    print("2: 도서 추가")
    print("3: 도서 삭제")
    print("4: 도서 검색")
    print("5: 전체 보기")
    print("0: 종료")
    print()
    return input("메뉴 선택: ")

def viewCategoryList(lsCategory):
    print("[등록된 카테고리: {}개]".format(len(lsCategory)))
    for i, category in enumerate(lsCategory):
        print("{}: {}".format(i + 1, category), end="    ")
    print()

def addCategory(lsCategory):
    print("=========카테고리 추가=========")
    viewCategoryList(lsCategory)

    category_name = input("카테고리 명: ")
    lsCategory.append(category_name)

def addBook(lsCategory, lsBook):
    print("=========도서 추가=========")
    viewCategoryList(lsCategory)
    category_code = input("\n카테고리 번호: ")
    category_code = int(category_code) - 1

    if category_code < 0 or category_code > len(lsCategory) - 1: # len하면 하나 큰 값이 넘어감으로 -1 해줌
        print("잘못 선택하셨습니다.")
        return
   
    isbn = input("ISBN: ")
    title = input("도서명: ")
    author = input("저자: ")
    publisher = input("출판사: ")
    price = input("가격: ")

    book = [category_code, isbn, title, author, publisher, price]
    lsBook.append(book)



def delBook(lsCategory, lsBook):
    print("=========도서 삭제=========")
    isbn = input("삭제할 도서의 ISBN: ")
    found_isbn = findISBN(lsBook, isbn)

    if found_isbn == -1: # 못찾을 경우 -1
        print("존재하지 않는 ISBN입니다.")
        return
   
    book = lsBook.pop(found_isbn)
    print("삭제된 도서: [{}] {} - {} ({}, ISBN:{}) {}원".format(lsCategory[book[0]], book[2], book[3], book[4], book[1], book[5]))
   
def findISBN(lsBook, isbn):
    for i in range(0, len(lsBook)):
        book = lsBook[i]

        if book[1] == isbn:
            return i
       
    return -1

def searchBook(lsCategory, lsBook):
    print("=========도서 검색=========")
    isbn = input("r검색할 도서의 ISBN: ")
    found_isbn = findISBN(lsBook, isbn)
    book = lsBook[found_isbn]
    print("[{}] {} - {} ({}, ISBN:{}) {}원".format(lsCategory[book[0]], book[2], book[3], book[4], book[1], book[5]))


def viewBookList(lsCategory, lsBook):
    print("=========전체 보기=========")
    print("[등록된 도서: {}개]".format(len(lsBook)))
    for i, book in enumerate(lsBook):
        print("{}. [{}] {} - {} ({}, ISBN:{}) {}원".format(i + 1, lsCategory[book[0]], book[2], book[3], book[4], book[1], book[5]))
   
def main():
    lsCategory = list()
    lsBook = list()

    while True:
        menu = selectMenu()

        if menu == "0":
            break
        elif menu == "1":
            addCategory(lsCategory)
        elif menu == "2":
            addBook(lsCategory, lsBook)
        elif menu == "3":
            delBook(lsCategory, lsBook)
        elif menu == "4":
            searchBook(lsCategory, lsBook)
        elif menu == "5":
            viewBookList(lsCategory, lsBook)
        else:
            print("메뉴를 잘못 선택했습니다!")

        input("아무 키나 눌러주세요...")
        # time.sleep(2) # 2초후 돌아감

    print("프로그램을 종료합니다. ")

if __name__ == '__main__':
    main()
728x90