Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Me ajudem

13 views
Skip to first unread message

Sergio Abreu

unread,
Jan 28, 2025, 9:49:10 AMJan 28
to Python Brasil
criei esse codigo mas nao to conseguindo conectar o banco de dados alguem arruma?

import os

# Dados iniciais
clientes = []
produtos = []
estoque = {}
vendas = []

# Funções

def limpar_tela():
    os.system('cls' if os.name == 'nt' else 'clear')

def cadastrar_cliente():
    nome = input("Digite o nome do cliente: ")
    clientes.append(nome)
    print(f"Cliente '{nome}' cadastrado com sucesso!")

def incluir_produto():
    produto = input("Digite o nome do produto: ")
    quantidade = int(input(f"Digite a quantidade de '{produto}': "))
    preco = float(input(f"Digite o preço unitário de '{produto}': "))

    produtos.append(produto)
    estoque[produto] = {'quantidade': quantidade, 'preco': preco}
    print(f"Produto '{produto}' incluído com sucesso!")

def controlar_vendas():
    if not clientes:
        print("Nenhum cliente cadastrado! Cadastre um cliente antes de realizar vendas.")
        return

    if not produtos:
        print("Nenhum produto cadastrado! Cadastre produtos antes de realizar vendas.")
        return

    cliente = input("Digite o nome do cliente que está comprando: ")
    if cliente not in clientes:
        print(f"Cliente '{cliente}' não encontrado.")
        return

    produto = input("Digite o nome do produto que está sendo comprado: ")
    if produto not in estoque:
        print(f"Produto '{produto}' não encontrado no estoque.")
        return

    quantidade = int(input(f"Digite a quantidade de '{produto}' que está sendo comprada: "))
    if quantidade > estoque[produto]['quantidade']:
        print(f"Estoque insuficiente! Temos apenas {estoque[produto]['quantidade']} unidades de '{produto}'.")
        return

    total = quantidade * estoque[produto]['preco']
    vendas.append({'cliente': cliente, 'produto': produto, 'quantidade': quantidade, 'total': total})
    estoque[produto]['quantidade'] -= quantidade

    print(f"Venda realizada com sucesso! Total: R${total:.2f}")

def ver_estoque():
    if not estoque:
        print("Estoque vazio!")
        return

    print("\nEstoque atual:")
    for produto, dados in estoque.items():
        print(f"- {produto}: {dados['quantidade']} unidades disponíveis, R${dados['preco']:.2f} cada.")

# Menu principal
def menu():
    while True:
        print("\n===== Sistema de Gestão =====")
        print("1. Cadastrar cliente")
        print("2. Incluir produto")
        print("3. Controlar vendas")
        print("4. Ver estoque")
        print("5. Sair")
       
        opcao = input("Escolha uma opção: ")

        if opcao == '1':
            cadastrar_cliente()
        elif opcao == '2':
            incluir_produto()
        elif opcao == '3':
            controlar_vendas()
        elif opcao == '4':
            ver_estoque()
        elif opcao == '5':
            print("Saindo do sistema... Até logo!")
            break
        else:
            print("Opção inválida! Tente novamente.")

        input("\nPressione Enter para continuar...")
        limpar_tela()

# Executar o programa
if __name__ == "__main__":
    menu()

import sqlite3

class Loja:
    def __init__(self):
        # Conectar ou criar banco de dados
        self.conn = sqlite3.connect('loja.db')
        self.cursor = self.conn.cursor()
        self.criar_tabelas()

    def criar_tabelas(self):
        # Criando as tabelas no banco de dados
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS clientes (
                id_cliente INTEGER PRIMARY KEY AUTOINCREMENT,
                nome TEXT,
                email TEXT
            )
        ''')

        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS produtos (
                id_produto TEXT PRIMARY KEY,
                nome TEXT,
                preco REAL,
                quantidade INTEGER
            )
        ''')

        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS vendas (
                id_venda INTEGER PRIMARY KEY AUTOINCREMENT,
                id_produto TEXT,
                quantidade INTEGER,
                valor REAL,
                FOREIGN KEY(id_produto) REFERENCES produtos(id_produto)
            )
        ''')

    def cadastrar_cliente(self, nome, email):
        self.cursor.execute('''
            INSERT INTO clientes (nome, email) VALUES (?, ?)
        ''', (nome, email))
        self.conn.commit()
        return "Cliente cadastrado com sucesso!"

    def incluir_produto(self, id_produto, nome, preco, quantidade):
        self.cursor.execute('''
            INSERT INTO produtos (id_produto, nome, preco, quantidade) VALUES (?, ?, ?, ?)
        ''', (id_produto, nome, preco, quantidade))
        self.conn.commit()
        return "Produto incluído com sucesso!"

    def registrar_venda(self, id_produto, quantidade_vendida):
        # Verificando se o produto existe no banco de dados
        self.cursor.execute('''
            SELECT * FROM produtos WHERE id_produto = ?
        ''', (id_produto,))
        produto = self.cursor.fetchone()

        if not produto:
            return "Produto não encontrado!"

        # Verificando se o estoque é suficiente
        if produto[3] < quantidade_vendida:
            return "Estoque insuficiente!"

        # Atualizando a quantidade do produto
        nova_quantidade = produto[3] - quantidade_vendida
        self.cursor.execute('''
            UPDATE produtos SET quantidade = ? WHERE id_produto = ?
        ''', (nova_quantidade, id_produto))

        # Registrando a venda
        valor_venda = quantidade_vendida * produto[2]
        self.cursor.execute('''
            INSERT INTO vendas (id_produto, quantidade, valor) VALUES (?, ?, ?)
        ''', (id_produto, quantidade_vendida, valor_venda))
        self.conn.commit()

        return "Venda registrada com sucesso!"

    def ver_estoque(self):
        self.cursor.execute('''
            SELECT * FROM produtos
        ''')
        produtos = self.cursor.fetchall()

        if produtos:
            estoque = []
            for produto in produtos:
                estoque.append(f"ID: {produto[0]}, Nome: {produto[1]}, Preço: R${produto[2]:.2f}, Quantidade: {produto[3]}")
            return "\n".join(estoque)
        else:
            return "Estoque vazio."

# Exemplo de uso
if __name__ == "__main__":
    loja = Loja()

    print(loja.cadastrar_cliente("João Silva", "jo...@email.com"))
    print(loja.incluir_produto("001", "Notebook", 3500.00, 10))
    print(loja.incluir_produto("002", "Mouse", 50.00, 100))

    print("\n--- Estoque Atual ---")
    print(loja.ver_estoque())

    print("\n--- Realizando Venda ---")
    print(loja.registrar_venda("001", 2))

    print("\n--- Estoque Atualizado ---")
    print(loja.ver_estoque())



Andre Fonseca

unread,
Jan 28, 2025, 1:59:02 PMJan 28
to python...@googlegroups.com
Sergio,

Para te ajudar melhor e de forma mais eficiente: 

Qual é o erro que acontece quando voce roda o seu script? 

Tenta fazer as  coisas por partes.  Quebrar o codigo em pequenas parte. Numa parte faz só a parte de conectar e criar as tabelas e veja se funciona. E depois vai avançando. Essa é a melhor forma de voce implementar e com isso detectar os erros. 




--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/python-brasil/179d087c-fdb7-4352-ab45-092a4f19342en%40googlegroups.com.


--
----------------------
Andre Fonseca
http://andrefonseca.net

Alceu Rodrigues de Freitas Junior

unread,
Jan 28, 2025, 5:17:24 PMJan 28
to python...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages