(29)Python_카페 주문 관리 프로그램
- create database test 를 mysql에서 만들어주고 해야한다.
- DB 접속을 test로 하기 때문
- 관리자 모드는 manager table에 등록된 정보로 로그인을 해야 관리자 모드를 접속할 수 있다.
- 프로그램 종료는 관리자 모드의 영업 종료를 누르면 종료가 된다.
class Coffee:
def __init__(self, coffee, price=0, stock=0):
self.coffee = coffee
self.price = price
self.stock = stock
def setCoffee(self, coffee):
self.coffee = coffee
def getCoffee(self):
return self.coffee
def setPrice(self, price):
self.price = price
def getPrice(self):
return self.price
def setStock(self, stock):
self.stock = stock
def getStock(self):
return self.stock
import MySQLdb
class CoffeesDao:
def __init__(self):
self.db = None
def connect(self):
self.db = MySQLdb.connect('localhost', 'root', '1234', 'test')
def disconnect(self):
self.db.close()
def insert(self, coffee):
self.connect()
cur = self.db.cursor()
sql = "insert into bana (b_coffee, b_price, b_stock) values (%s, %s, %s)"
data = (coffee.getCoffee(), coffee.getPrice(), coffee.getStock())
cur.execute(sql, data)
self.db.commit()
self.disconnect()
def selectAll(self):
self.connect()
cur = self.db.cursor()
sql = 'select b_coffee, b_price, b_stock from bana'
cur.execute(sql)
row = cur.fetchall()
self.disconnect()
return row
def search(self, coffee):
self.connect()
cur = self.db.cursor(MySQLdb.cursors.DictCursor)
sql = 'select b_coffee, b_price, b_stock from bana where b_coffee=%s'
data = (coffee,)
cur.execute(sql, data)
row = cur.fetchone()
self.disconnect()
return row
def update(self, word):
self.connect()
cur = self.db.cursor()
sql = 'update bana set b_price=%s, b_stock=%s where b_coffee=%s'
data = (word.getPrice(), word.getStock(), word.getCoffee())
result = cur.execute(sql, data)
self.db.commit()
if result > 0:
print('수정되었습니다')
else:
print('해당 커피가 없습니다')
self.disconnect()
def delete(self, coffee):
self.connect()
cur = self.db.cursor()
sql = 'delete from bana where b_coffee=%s'
data = (coffee,)
result = cur.execute(sql, data)
self.db.commit()
if result > 0:
print('삭제되었습니다')
else:
print('해당 단어가 없습니다')
self.disconnect()
def sales(self):
self.connect()
cur = self.db.cursor()
sql = 'select b_coffee, b_price*b_sales from bana'
cur.execute(sql)
row = cur.fetchall()
self.disconnect()
return row
def orderCount(self,coffee):
self.connect()
cur = self.db.cursor()
sql = 'select b_coffee, b_stock from bana where b_coffee=%s'
data = (coffee,)
cur.execute(sql, data)
row = cur.fetchone()
if row[1] == 0:
print('커피 재고가 없습니다')
else:
sql = 'update bana set b_sales=b_sales+1, b_stock=b_stock-1 where b_coffee=%s'
data = (coffee,)
cur.execute(sql, data)
print('커피주문이 완료되었습니다.','커피를 받아가세요')
self.db.commit()
self.disconnect()
def loginManager(self,managerId, mamagerpw):
self.connect()
cur = self.db.cursor()
sql = 'select m_userid, m_userpw from manager'
cur.execute(sql)
row = cur.fetchall()
self.disconnect()
return row
def insertManager(self, userid, userpw):
self.connect()
cur = self.db.cursor()
sql = "insert into manager (m_userid, m_userpw) values (%s, %s)"
data = (userid, userpw)
cur.execute(sql, data)
self.db.commit()
self.disconnect()
def delManager(self, userid):
self.connect()
cur = self.db.cursor()
sql = 'delete from manager where m_userid=%s'
data = (userid,)
result = cur.execute(sql, data)
self.db.commit()
if result > 0:
print('삭제되었습니다')
else:
print('해당 매니저가 없습니다')
self.disconnect()
class banaService:
def __init__(self):
self.dao = CoffeesDao()
def insertMenu(self):
coffee = input('커피명을 입력하세요')
price = input('커피 가격을 입력하세요')
stock = input('재고량 입력하세요')
coffee = Coffee(coffee, price, stock)
self.dao.insert(coffee)
def printAll(self):
datas = self.dao.selectAll()
for i in datas:
print(f'커피: {i[0]}, 가격{i[1]}, 재고{i[2]}')
def selectCoffee(self):
coffee = input('검색할 커피를 입력하세요')
word = self.dao.search(coffee)
if word:
print(f"커피:{word['b_coffee']}, 가격:{word['b_price']}, 재고:{word['b_stock']}")
else:
print('찾는 커피가 없습니다')
def editCoffee(self):
coffee = input('수정할 커피를 입력하세요')
word = self.dao.search(coffee)
if word == None:
print('수정할 커피를 찾지 못했습니다')
else:
price = input('새로운 가격을 입력하세요')
stock = input('새로운 재고량을 입력하세요')
word = Coffee(coffee, price, stock)
self.dao.update(word)
def delCoffee(self):
coffee = input('삭제할 단어를 입력하세요')
self.dao.delete(coffee)
def salesCoffee(self):
datas = self.dao.sales()
coffeeSum = 0
if datas == None:
print('매출이 없습니다.')
else:
for i in datas:
print(f'커피: {i[0]}, 매출액{i[1]}')
coffeeSum = coffeeSum + i[1]
print(f'총 매출액{coffeeSum}')
def customerPrint(self):
datas = self.dao.selectAll()
for i in datas:
print(f'커피: {i[0]}, 가격{i[1]}')
def order(self):
coffee = input('주문하실 커피를 입력해주세요')
word = self.dao.search(coffee)
if word:
print(f"커피:{word['b_coffee']}, 가격:{word['b_price']} 주문하시겠습니까?")
select = int(input('1. 주문완료 2.취소'))
if select == 1:
self.dao.orderCount(coffee)
elif select == 2:
return
else:
print('찾는 커피가 없습니다')
def managerMode(self):
mangerId = input('아이디를 입력해주세요: ')
mangerpw = input('비밀번호를 입력해주세요: ')
datas = self.dao.loginManager(mangerId,mangerpw)
for i in datas:
if i[0] == mangerId and i[1] == mangerpw:
return True
def managerSign(self):
userId = input('이름을 입력하세요')
userpw = input('비밀번호를 입력하세요')
self.dao.insertManager(userId, userpw)
print('등록완료')
def managerDel(self):
manager = input('삭제할 매니저를 입력하세요')
self.dao.delManager(manager)
import MySQLdb
import time
class Menu:
def __init__(self):
self.service = banaService()
try:
db = MySQLdb.connect('localhost', 'root', '1234', 'test')
cur = db.cursor()
sql = "create table bana(b_idx int not null auto_increment primary key,b_coffee varchar(20) not null,b_price int,b_stock int,b_sales int default 0)"
cur.execute(sql)
sql = "create table manager(m_idx int not null auto_increment primary key,m_userid varchar(20) not null,m_userpw varchar(20) not null)"
cur.execute(sql)
sql = "insert into manager (m_userid, m_userpw) values ('master','1111')"
cur.execute(sql)
db.commit()
db.close()
except:
pass
def run(self):
while True:
try:
mode = int(input('1.관리자 2.고객'))
if mode == 1:
login = self.service.managerMode()
if login == True:
while True:
menu = int(input('1. 메뉴관리 2.매출확인 3.매니저관리 4.메인으로 5.영업종료'))
if menu == 1:
menuoption = int(input('1.메뉴등록 2.메뉴출력 3.메뉴검색 4.메뉴수정 5.메뉴삭제'))
if menuoption == 1:
self.service.insertMenu()
elif menuoption == 2:
self.service.printAll()
elif menuoption == 3:
self.service.selectCoffee()
elif menuoption == 4:
self.service.editCoffee()
elif menuoption == 5:
self.service.delCoffee()
elif menu == 2:
self.service.salesCoffee()
elif menu == 3:
menuoption = int(input('1.매니저등록 2.매니저삭제'))
if menuoption == 1:
self.service.managerSign()
elif menuoption == 2:
self.service.managerDel()
elif menu == 4:
break
elif menu == 5:
return
else:
print('아이디 비밀번호를 확인해주세요')
elif mode == 2:
menu = int(input('1.주문하기 2.메뉴보기 3.종료하기'))
if menu == 1:
self.service.order()
elif menu == 2:
self.service.customerPrint()
elif menu == 3:
continue
elif mode == 3:
break
else:
print('다시 입력하세요')
except Exception as e:
print('다시 입력하세요')
start = Menu()
start.run()