import sqlite3 as db
from datetime import datetime, timedelta
#첫번째 페이지
def first_page():
print("="*30)
print('0. 회원가입')
print('1. 로그인')
print('2. 책 반납하기')
print('3. 종료')
print("=" * 30)
#회원가입
membership_list = [] # 회원목록
def membership_join():
try:
new_id = input("희망하는 아이디를 입력하세요.: ")
new_pw = input("희망하는 비밀번호를 입력하세요.: ")
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\membership.db")
c = conn.cursor()
sql = f"insert into membership values('{new_id}','{new_pw}')"
c.execute(sql)
conn.commit()
c.close()
conn.close()
except:
print("이미 등록된 아이디 입니다")
#로그인
db_login_list = []
def membership_login():
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\membership.db")
c = conn.cursor()
sql = f"select id,pw from membership "
c.execute(sql)
text = c.fetchall()
text_id=[]
text_pw=[]
for i in range(len(text)):
text_id.append(text[i][0])
text_pw.append(text[i][1])
# print(text_id)
# print(text_pw)
while True:
new_id = input("아이디를 입력하세요.: ")
new_pw = input("비밀번호를 입력하세요.: ")
db_login_list.append(new_id)
if new_id in text_id and new_pw in text_pw:
return library()
break
else:
print("아이디 혹은 비밀번호를 입력해주세요")
#도서관 선택
def library():
print("1. 장덕도서관")
print("2. 첨단도서관")
print("3. 신가도서관")
# 조회화면
def inquiry():
print("="*30)
print("1.특정 도서 검색")
print("2.특정 저자의 검색")
print("3.장바구니에 추가")
print("=" * 30)
#대여화면
def borrow():
print("=" * 30)
print("1. 장바구니 목록")
print("2. 대여하기")
print("3. 도서대여 목록")
print("=" * 30)
# 특정 도서 검색
def search_book(libraryName):
try:
nameOfBook = input("책을 검색해주세요") # 검색할 도서명
# db연동
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\book.db")
c = conn.cursor()
sql = f"select bookNum,bookName,callNumber,registrationNum from book where bookName like '%{nameOfBook}%'and libraryName ='{libraryName}'"
c.execute(sql)
text = c.fetchall()
print(text)
conn.close()
return text
except:
pass
# 특정 저자의 검색
def search_writer(libraryName):
nameOfWriter = input("저자를 검색해주세요") # 검색할 저자명
# db연동
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\book.db")
c = conn.cursor()
sql = f"select bookName,registrationNum from gj_book where writer like '%{nameOfWriter}%'and libraryName ='{libraryName}'"
c.execute(sql)
print(c.fetchall())
conn.close()
#선택한 도서 장바구니에 추가
choice_list=[] # 선택한 도서 리스트
def booklist_basket(librayName):
choice_list.append(search_book(librayName))
#대여가능정보
def check_book(libraryName):
rentBook = search_book(libraryName)
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\borrowlist.db")
c = conn.cursor()
sql = f"select bookName,bookNum,callNumber,registrationNum from borrowlist"
c.execute(sql)
text =c.fetchall()
conn.close()
# print(rentBook[0][1])
# print(text[1][0])
# print(len(text))
# for i in range(len(rentBook)):
# if rentBook[i][1] == text[i][0]:
# print("대여가 불가능합니다")
# else:
# print("대여가 가능합니다")
# 반납하기
borrow_list = []
def return_book(libraryName):
returnBook = search_book(libraryName)
borrow_list.remove(returnBook[0])
#조회대여
def inqbro():
print("1.조회")
print("2.대여")
#책대여
myBorrowList = []
def borrow_book():
print(choice_list)
bookNum = int(input("대여하고싶은 책 번호를 입력해주세요!"))
try:
for choice in choice_list:
myBorrowList.append(choice)
if bookNum == choice[0][0]:
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\borrowlist.db")
c = conn.cursor()
sql = f"Insert into borrowlist values('{choice[0][0]}','{choice[0][1]}','{choice[0][2]}','{choice[0][3]}','{db_login_list[0]}','{del_time()}')"
c.execute(sql)
conn.commit()
conn.close()
print("대여가 완료되었습니다")
except:
print("이미 대여중인 책입니다.")
#책반납
def del_borrowList():
delBook = int(input("반납하고 싶은 책의 번호를 입력해주세요! 돌아가시려면 5번을 눌러주세요"))
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\borrowlist.db")
c = conn.cursor()
sql = f"delete from borrowlist where bookNum = '{delBook}'"
c.execute(sql)
conn.commit()
conn.close()
print("책 반납이 완료되었습니다")
#책반납일
def del_time():
now = datetime.now() # 시간 전체
# 현재(대여 시점) + 5일 = 반납예정일이 되도록 설정하기
return_day = now + timedelta(days=5)
print(f"오늘은 {now.year}년 {now.month}월 {now.day}일 입니다. -->도서 반납예정일자는 {return_day.year}년 {return_day.month}월 {return_day.day}일 입니다.")
# return return_day
# 년월일
ymd = now.date()
return ymd
#대여중인 책 목록
def allBorrowList():
conn = db.connect("C:\\Users\\hoon5\\PycharmProjects\\pythonProject\\borrowlist.db")
c = conn.cursor()
sql = f"select * from borrowlist where userId = '{db_login_list[0]}'"
c.execute(sql)
text = c.fetchall()
conn.close()
print(text)
#--------------최종구현------------------
while True:
first_page()
choice_firstpage = int(input("번호를 입력해주세요!!"))
if choice_firstpage==0: # 회원가입으로 이동
membership_join()
elif choice_firstpage==1:# 로그인 페이지로 이동 --> 로그인 성공시 도서관 선택
membership_login()
while True:
#library() 도서관선택
choice_library = int(input("번호를 입력해주세요! (돌아가시려면 5번을 눌러주세요)"))# 도서관 번호
if choice_library == 1: # 장덕도서관 선택
while True:
inqbro() #조회/대여 선택
choice_inqbro = int(input("번호를 입력해주세요! (돌아가시려면 5번을 눌러주세요)"))
if choice_inqbro == 1:
while True:
inquiry()#조회목록
choice_book = int(input("번호를 입력해주세요! (돌아가실려면 5번을 눌러주세요)")) # inquiry함수중에서 선택
if choice_book == 1:
search_book('장덕도서관')
elif choice_book == 2:
search_writer('장덕도서관')
elif choice_book == 3:
booklist_basket('장덕도서관')
else:
break
elif choice_inqbro ==2:
while True:
borrow()
choice_borrow = int(input("번호를 입력해주세요! (돌아가실려면 5번을 눌러주세요)"))
if choice_borrow ==1:
print(choice_list)
elif choice_borrow ==2:
borrow_book()
elif choice_borrow ==3:
allBorrowList()
else:
break
else:
library()
break
elif choice_library == 2: # 첨단도서관 선택
while True:
inqbro() #조회/대여 선택
choice_inqbro = int(input("번호를 입력해주세요! (돌아가시려면 5번을 눌러주세요)"))
if choice_inqbro == 1:
while True:
inquiry()#조회목록
choice_book = int(input("번호를 입력해주세요! (돌아가실려면 5번을 눌러주세요)")) # inquiry함수중에서 선택
if choice_book == 1:
search_book('첨단도서관')
elif choice_book == 2:
search_writer('첨단도서관')
elif choice_book == 3:
booklist_basket('첨단도서관')
else:
break
elif choice_inqbro ==2:
while True:
borrow()
choice_borrow = int(input("번호를 입력해주세요! (돌아가실려면 5번을 눌러주세요)"))
if choice_borrow ==1:
print(choice_list)
elif choice_borrow ==2:
borrow_book()
elif choice_borrow ==3:
allBorrowList()
else:
break
else:
library()
break
elif choice_library == 3: # 신가도서관 선택
while True:
inqbro() #조회/대여 선택
choice_inqbro = int(input("번호를 입력해주세요! (돌아가시려면 5번을 눌러주세요)"))
if choice_inqbro == 1:
while True:
inquiry()#조회목록
choice_book = int(input("번호를 입력해주세요! (돌아가실려면 5번을 눌러주세요)")) # inquiry함수중에서 선택
if choice_book == 1:
search_book('신가도서관')
elif choice_book == 2:
search_writer('신가도서관')
elif choice_book == 3:
booklist_basket('신가도서관')
else:
break
elif choice_inqbro ==2:
while True:
borrow()
choice_borrow = int(input("번호를 입력해주세요! (돌아가실려면 5번을 눌러주세요)"))
if choice_borrow ==1:
print(choice_list)
elif choice_borrow ==2:
borrow_book()
elif choice_borrow ==3:
allBorrowList()
else:
break
else:
library()
break
elif choice_firstpage==2:#책 반납하기
while True:
allBorrowList()
del_borrowList()
break





이번 프로젝트를 수행하면서 얻은 소득은
데이터베이스와 파이썬과의 연동을 진행하며 각각 요소의 역할 및 개발 환경에 대해 이해 해볼 수 있었다는 점이다.
파이썬 언어를 기반으로 Sql 쿼리문을 반영하며 개별적인 함수를 만들어보고, 각각의 함수로 구현한 기능들을 반복문과 조건문을 활용해 실행시켜 봄으로써
함수와 반복문 및 조건문에 대해 좀 더 익숙해지고, 프로그램 제작 구조에 대해 경험할 수 있었다.
이에 더해, 각 기능들을 연결해가며 느낀 점은 프로젝트 기획 단계에서부터 설계 및 구조 구축간 충분한 고민을 통해 세밀하고 발생가능한 오류 요소들을 제거해나가는 것이 선행되어야 함을 절실히 깨달을 수 있었다.
'Python' 카테고리의 다른 글
| Python - DB(SQLite)에 있는 데이터와 비교 # 로그인 기능 만들기 v2 (0) | 2023.02.23 |
|---|---|
| Python - DB(SQLite)에 있는 데이터와 비교 # 로그인 기능 만들기 (0) | 2023.02.22 |
| Python을 이용한 DB(SQLite)에 데이터 추가하기 # 회원가입 (0) | 2023.02.22 |