<최초 메뉴>
: 회원 번호는 문자열 무엇이든 상관없이 등록
: 서비스 종료 시 프로그램 자체 종료
[서비스 이용을 위한 회원 인증]
1. 회원번호 등록
2. 회원 인증
3. 서비스 종료
<회원 인증이 된 경우 메뉴>
: 도서 정보 : 도서번호, 도서제목, 재고권수
: 도서 상태 확인 : 특정 도서에 대한 정보 조회(도서번호, 도서제목, 현재권수/전체권수)
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로 갑니다.)
저번에 한 코드를 더 발전시켜보았다.
1. 유저정보 등록 함수 : user_register()
- user_id 값 입력
- users 리스트 생성 후 값 넣기(append)
2. 유저인증 함수 : user_check()
- 입력한 회원번호가 users리스트에 있는지 확인
3. 메인과 비슷하게 while True문을 써서 도서 서비스 메뉴를 입력 받는 함수 : user_auth (회원인증시에만 뜨도록!!!)
4. 특정 도서에 대한 정보 조회(도서번호, 도서제목, 현재권수/전체권수)에서 전체권수 추가
- add_book함수에 'totalquantity':quantity 정보 추가하기
5. 도서 대출이 quantity > 0 일 때만 대출가능하도록 설정
6. 도서 반납 시 계속 대출 재고와 상관없이 계속 반납되는 오류 해결!
- (전체 재고) - (현재 재고) 가 0보다 큰 값을 가질 때만 반납할 수 있도록 수정!
(0보다 크다는 것은 대출한 사람이 있다는 뜻!)
class LibraryKiosk:
def __init__(self):
self.books = {}
def user_register(self):
print("회원번호 등록 화면입니다.")
while True:
user_id = input("회원번호를 입력하세요.")
if user_id in users:
print("이미 존재한 회원번호입니다.")
else:
users.append(user_id)
print("등록이 완료되었습니다.")
print(users)
break
return users
def user_check(self):
print("회원 인증하기 화면입니다.")
check_num = input("자신의 회원번호를 입력하세요.")
if check_num in users:
print("회원인증이 완료되었습니다.")
user_auth()
else:
print("해당 회원번호가 존재하지 않습니다.")
def user_auth():
while True:
user_menu = input('''
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
''')
if user_menu == '1':
print("도서입고 화면입니다.")
book_id = input('도서 번호를 입력해 주세요 : ')
title = input('도서 제목을 입력해 주세요 : ')
quantity = int(input('입고할 권수를 입력해 주세요 : '))
kiosk.add_book(book_id, title, quantity)
elif user_menu == '2':
print("도서 대출 화면입니다.")
book_id = input("대출할 도서번호를 입력해주세요 : ")
kiosk.borrow_book(book_id)
elif user_menu == '3':
print("도서 반납 화면입니다.")
book_id = input("반납할 도서번호를 입력해주세요 : ")
kiosk.return_book(book_id)
elif user_menu == '4':
print("도서 상태확인 화면입니다.")
book_id = input("도서상태를 확인할 도서번호를 입력해주세요 : ")
kiosk.check_book(book_id)
elif user_menu == '5':
print("도서 전체목록확인 화면입니다.")
kiosk.list_book()
elif user_menu == '6':
print("도서 서비스종료(회원 인증 메뉴로)")
break
else :
print('잘못입력하셨습니다. 다시 입력해주세요.')
def add_book(self, book_id, title, quantity):
if book_id in self.books:
self.books[book_id]['quantity'] += quantity
self.books[book_id]['totalquantity'] += quantity
else:
self.books[book_id] = {'title':title, 'quantity':quantity, 'totalquantity':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:
if (self.books[book_id]['totalquantity']-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("반납할 책이 존재하지 않습니다.")
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]['totalquantity']}")
else:
print("해당 도서가 존재하지 않습니다.")
def list_book(self):
for i in self.books.keys():
print(f"도서번호:{i}, 도서제목:{self.books[i]['title']}, 현재수량:{self.books[i]['quantity']}/전체수량:{self.books[i]['totalquantity']}")
def main():
kiosk = LibraryKiosk()
while True:
print_menu = input('''
[서비스 이용을 위한 회원 인증]
1. 회원번호 등록
2. 회원 인증
3. 서비스 종료
원하시는 서비스 번호를 입력하세요.
''')
if print_menu == '1':
user_register()
elif print_menu == '2':
user_check()
elif print_menu == '3':
print("서비스 종료")
break
else :
print('잘못입력하셨습니다. 다시 입력해주세요.')
if __name__ == "__main__" :
main()
결과
[서비스 이용을 위한 회원 인증]
1. 회원번호 등록
2. 회원 인증
3. 서비스 종료
원하시는 서비스 번호를 입력하세요.
1
회원번호 등록 화면입니다.
회원번호를 입력하세요. 000
등록이 완료되었습니다.
['123', '58', '578', '888', '2', '1', '3', '8', '999', '258', '5', '000']
[서비스 이용을 위한 회원 인증]
1. 회원번호 등록
2. 회원 인증
3. 서비스 종료
원하시는 서비스 번호를 입력하세요.
2
회원 인증하기 화면입니다.
자신의 회원번호를 입력하세요. 000
회원인증이 완료되었습니다.
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
1
도서입고 화면입니다.
도서 번호를 입력해 주세요 : 1
도서 제목을 입력해 주세요 : 파이썬
입고할 권수를 입력해 주세요 : 5
도서번호 : 1 /제목 : 파이썬 / 입고수량 : 5 입고 성공!!
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
2
도서 대출 화면입니다.
대출할 도서번호를 입력해주세요 : 1
대출이 완료되었습니다.
도서번호:1 / 도서제목:파이썬 / 재고수량:4
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
3
도서 반납 화면입니다.
반납할 도서번호를 입력해주세요 : 1
반납이 완료되었습니다.
도서번호:1 / 도서제목:파이썬 / 재고수량:5
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
4
도서 상태확인 화면입니다.
도서상태를 확인할 도서번호를 입력해주세요 : 1
도서번호:1, 도서제목:파이썬, 현재수량:5/전체수량:5
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
1
도서입고 화면입니다.
도서 번호를 입력해 주세요 : 2
도서 제목을 입력해 주세요 : 기초문법
입고할 권수를 입력해 주세요 : 4
도서번호 : 2 /제목 : 기초문법 / 입고수량 : 4 입고 성공!!
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
5
도서 전체목록확인 화면입니다.
도서번호:1, 도서제목:파이썬, 현재수량:5/전체수량:5
도서번호:2, 도서제목:기초문법, 현재수량:4/전체수량:4
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
2
도서 대출 화면입니다.
대출할 도서번호를 입력해주세요 : 2
대출이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:3
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
2
도서 대출 화면입니다.
대출할 도서번호를 입력해주세요 : 2
대출이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:2
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
2
도서 대출 화면입니다.
대출할 도서번호를 입력해주세요 : 2
대출이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:1
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
2
도서 대출 화면입니다.
대출할 도서번호를 입력해주세요 : 2
대출이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:0
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
2
도서 대출 화면입니다.
대출할 도서번호를 입력해주세요 : 2
도서가 존재하지 않거나, 대출할 재고가 없습니다.
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
3
도서 반납 화면입니다.
반납할 도서번호를 입력해주세요 : 2
반납이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:1
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
3
도서 반납 화면입니다.
반납할 도서번호를 입력해주세요 : 2
반납이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:2
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
3
도서 반납 화면입니다.
반납할 도서번호를 입력해주세요 : 2
반납이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:3
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
3
도서 반납 화면입니다.
반납할 도서번호를 입력해주세요 : 2
반납이 완료되었습니다.
도서번호:2 / 도서제목:기초문법 / 재고수량:4
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
3
도서 반납 화면입니다.
반납할 도서번호를 입력해주세요 : 2
반납할 책이 존재하지 않습니다.
[도서 서비스 메뉴]
1. 도서 입고
2. 도서 대출
3. 도서 반납
4. 도서 상태 확인
5. 도서 전체 목록 확인
6. 도서 서비스 종료(회원 인증 메뉴로)
원하시는 서비스 번호를 입력하세요.
6
도서 서비스종료(회원 인증 메뉴로)
[서비스 이용을 위한 회원 인증]
1. 회원번호 등록
2. 회원 인증
3. 서비스 종료
원하시는 서비스 번호를 입력하세요.
3
서비스 종료
전체 수량 모두 대출하면 더이상 대출 못하도록 설정
대출한 수 만큼 모두 반납하면 더이상 반납 못하도록 설정
728x90
'Back-End > Python' 카테고리의 다른 글
[프로그래머스] 코딩테스트 Lv.1 추억점수 (3) | 2023.11.24 |
---|---|
[프로그래머스] 코딩테스트 Lv.1 덧칠하기 (5) | 2023.11.23 |
[Python] 파이썬 알고리즘 - 이터레이터(Iterator), readLine(), nextLine() (5) | 2023.11.16 |
[Python] 파이썬 알고리즘 - 제너레이터(Generator) (1) | 2023.11.16 |
[Python] 파이썬의 기초 - 매개변수, 기본값(default) (2) | 2023.11.14 |