ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (29)Python_카페 주문 관리 프로그램
    Python 2023. 3. 27. 15:23
    728x90
    • 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()

    댓글

Designed by Tistory.