[카페 menu DB연동]
import cx_Oracle as cx
from datetime import datetime,timedelta
class Menu:
def __init__(self):
pass
def add(self):
conn = cx.connect("ora_user", "human123", "localhost/orcl") # DB연동
cur = conn.cursor()
name = input('메뉴명을 입력하세요 ['':종료]')
while name != '':
price = int(input('가격을 입력하세요'))
cur.execute(f"insert into menu values ('{name}','{price}',snoseq.nextval)")
name = input('메뉴명을 입력하세요 ['':종료]')
conn.commit()
cur.close()
conn.close()
def delete(self):
conn = cx.connect("ora_user", "human123", "localhost/orcl") # DB연동
cur = conn.cursor()
n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
while n != 0:
cur.execute(f'delete from menu where s_no={n}')
n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
conn.commit()
cur.close()
conn.close()
def update(self):
conn = cx.connect("ora_user", "human123", "localhost/orcl") # DB연동
cur = conn.cursor()
n = int(input("메뉴수정할 번호를 입력하세요 ['0':종료]"))
while n!=0:
new_name = input('메뉴명을 입력하세요 ['':종료]')
if new_name == '':
break
new_price = int(input('가격을 입력하세요'))
cur.execute(f"update menu set name='{new_name}',price={new_price} where s_no={n}")
n = int(input("메뉴수정할 번호를 입력하세요 ['0':종료]"))
conn.commit()
cur.close()
conn.close()
def display(self):
conn = cx.connect("ora_user", "human123", "localhost/orcl") # DB연동
cur = conn.cursor()
cur.execute("select * from menu order by s_no")
for rec in cur:
print('%2d %-12s %5d'%(rec[2],rec[0],rec[1]))
cur.close()
conn.close()
: menu DB에 연동하고 curd 가능하게 만들었다.
[order 부분]
class Order(Menu):
def __init__(self):
self.lOrder=[]
self.mobile = ''
def append(self):
#menu display
self.display()
# 메뉴번호, 수량 -> 총액표시
num=input('주문할 메뉴번호를 입력하시오 ["":종료]')
while num!="":
qty = input('주문할 수량을 입력하시오 ["":종료]')
if qty=="":
break
conn = cx.connect("ora_user", "human123", "localhost/orcl") # DB연동
cur = conn.cursor()
cur.execute(f"select * from menu where s_no={num}")
rec=cur.fetchone()
menu_item={'name':rec[0],'price':rec[1]}
cur.close()
conn.close()
self.lOrder.append({'name': menu_item['name'],
'qty': qty,
'price': menu_item['price']* int(qty)})
self.display()
num=input('주문할 메뉴번호를 입력하시오 ["":종료]')
if self.lOrder:
self.mobile = input('핸드폰 번호를 입력하세요 ["":종료]')
def delete(self):
while True:
n = input('주문 취소할 메뉴를 선택하세요 ["":종료]: ')
if n == "":
break
try:
n = int(n)
if n <= 0 or n > len(self.lOrder):
print("잘못된 입력입니다. 다시 입력하세요.")
else:
del self.lOrder[n - 1]
print("주문이 취소되었습니다.")
break
except ValueError:
print("잘못된 입력입니다. 다시 입력하세요.")
print("=" * 60)
def show(self):
total = 0
print(" 주문서")
print('='*60)
i=1
for order in self.lOrder:
print('%2d %-12s %2d %6d %11s' % (i,order['name'], int(order['qty']), int(order['price']), self.mobile))
total += int(order['price'])
i+=1
print('주문 총액:%7d' % (total))
print('=' * 60)
: menu DB를 연동하여 주문할 메뉴번호를 입력하여 입력받은 번호의 내용을 다 가져온다.
[Sales 부분]
class Sales:
def __init__(self):
self.lSales=[] #name,qty,price
def display(self):
total=0
conn = cx.connect("ora_user", "human123", "localhost/orcl") # DB연동
cur = conn.cursor()
cur.execute('select * from selling order by sell_time')
print('=' * 60)
for row in cur:
print('%-12s %2d %6d %11s %s'%(row[2],row[3],row[4],row[1],row[0]))
total+=row[4]
cur.close()
conn.close()
print('총 매출액 : %d'%(total))
print('=' * 60)
def add(self,oOrder):
conn = cx.connect("ora_user", "human123", "localhost/orcl") # DB연동
cur = conn.cursor()
now=datetime.now()
date=now.strftime('%Y-%m-%d %H:%M:%S')
for order in oOrder.lOrder:
cur.execute(f"insert into selling values('{date}','{oOrder.mobile}', '{order['name']}', {int(order['qty'])}, {int(order['price'])})")
order['mobile']=oOrder.mobile
self.lSales.append(order)
conn.commit()
cur.close()
conn.close()
: selling DB에 연동하여 add : 날짜, 모바일, 이름, 수량, 가격 입력받은 정보를 가져와서 넣어준다.
display부분은 selling table의 넣어던 값을 다 가져온다.
[작업 선택하는 부분]
gSales = Sales()
gOrder = Order() #Menu gMenu = new Menu()
work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, '':프로그램종료]")
while work!="":
if work=='m':
#menu list display
gOrder.display()
#메뉴작업 입력 (a:추가,d:삭제,u:수정,l:display , '':메뉴작업종료)
menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
while menuwork!='':
if menuwork=='a':
gOrder.add()
menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
elif menuwork=='d':
gOrder.delete()
menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
elif menuwork=='u':
gOrder.update()
menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
elif menuwork=='l':
gOrder.display()
menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
else:
print('잘못입력하셨습니다. 다시 선택해 주세요')
menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
#lMenu의 내용을 menu.txt.에 저장
#gOrder.save()
print('메뉴작업을 종료하였습니다.')
work = input("작업을 선택하세요 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
elif work=='o':
gOrder.lOrder=[]
orderwork = input("주문작업을 선택하세요 [a:주문추가, l:주문내역, '':메뉴작업종료]")
while orderwork !='':
if orderwork=='a':
gOrder.append()
elif orderwork=='l':
gOrder.show()
orderwork = input("주문작업을 선택하세요 [a:주문추가, l:주문내역, '':메뉴작업종료]")
gSales.add(gOrder)
print('주문작업을 종료하였습니다')
work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
elif work=='s':
gSales.display()
work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
else:
print('잘못입력하셨습니다. 다시 선택해 주세요')
work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
print("프로그램종료")
[결과]
![]() |
메뉴관리를 들어가서 메뉴추가하는 모습 |
![]() |
모든 메뉴가 나온다. |
![]() |
메뉴 수정하는 모습 |
![]() |
메뉴가 삭제된 모습 여기서 메뉴 수정된 모습도 같이 확인 할 수 있다 |
![]() |
주문관리 들어가서 주문 추가하는 모습 주문이 다 끝나고 난 뒤에 핸드폰 번호를 입력한다. |
![]() |
l을 눌러 주문 내역을 확인 할 수 있다. |
![]() |
d를 눌러 주문 취소할 주문번호를 눌러준다. 확인해보면 잘 지워진걸 확인 할 수 있다. |
![]() |
s를 눌러 매출관리를 할 수 있다. 이름, 수량, 가격, 모바일번호, 시간을 확인 할 수 있다. 총 매출액까지도 나온다. |
2023.04.27 (0) | 2023.04.27 |
---|---|
2024.04.26 (0) | 2023.04.26 |
2023.04.25 (0) | 2023.04.25 |
2024.04.25 (1) | 2023.04.25 |
2023.04.24 (1) | 2023.04.24 |