[Python] Estou montando um programa simples de loja para mim, só que não esta dando certo...

Discussão em 'Python' iniciado por Stack, Março 23, 2025.

  1. Stack

    Stack Membro Participativo

    import tkinter as tk from tkinter import messagebox from datetime import datetime

    Informações do criador


    CRIADOR = "Desenvolvido por Marcelo Rezende Júnior"

    Dicionário de usuários e senhas


    usuarios = { "JulianaCast": "jujucast", # Alterado para o administrador "funcionario": "func123" }

    Variável global para armazenar o tipo de usuário logado


    usuario_logado = None

    Lista para armazenar vendas


    relatorio_vendas = []

    class Produto: def init(self, codigo, nome, preco, quantidade): self.codigo = codigo self.nome = nome self.preco = preco self.quantidade = quantidade

    def entrada_estoque(self, qtd):
    self.quantidade += qtd
    return f"{datetime.now().strftime('%d/%m/%Y %H:%M:%S')} - {qtd} unidades de {self.nome} adicionadas ao estoque."

    def saida_estoque(self, qtd):
    if qtd > self.quantidade:
    return "Estoque insuficiente!"
    else:
    self.quantidade -= qtd
    venda = f"{datetime.now().strftime('%d/%m/%Y %H:%M:%S')} - {qtd}x {self.nome} vendidos por R$ {self.preco * qtd:.2f}"
    relatorio_vendas.append(venda)
    return venda

    def __str__(self):
    return f"{self.codigo} - {self.nome} | Preço: R$ {self.preco:.2f} | Estoque: {self.quantidade} unidades"

    Dicionário de estoque


    estoque = {}

    Função de Login


    def login(): global usuario_logado usuario = entry_usuario.get() senha = entry_senha.get()

    if usuario in usuarios and usuarios[usuario] == senha:
    usuario_logado = usuario
    messagebox.showinfo("Login", "Login realizado com sucesso!")
    login_window.destroy()
    iniciar_sistema()
    else:
    messagebox.showerror("Erro", "Usuário ou senha incorretos!")

    Função para adicionar produto ao estoque


    def adicionar_produto(): if usuario_logado != "JulianaCast": messagebox.showerror("Permissão negada", "Apenas o administrador pode adicionar produtos!") return

    codigo = entry_codigo.get()
    nome = entry_nome.get()
    preco = float(entry_preco.get())
    quantidade = int(entry_quantidade.get())

    estoque[codigo] = Produto(codigo, nome, preco, quantidade)
    messagebox.showinfo("Sucesso", f"{datetime.now().strftime('%d/%m/%Y %H:%M:%S')} - Produto adicionado com sucesso!")
    atualizar_estoque()

    Função para registrar a entrada de produtos no estoque


    def registrar_entrada(): if usuario_logado != "JulianaCast": messagebox.showerror("Permissão negada", "Apenas o administrador pode registrar entradas!") return

    codigo = entry_codigo.get()
    if codigo in estoque:
    qtd = int(entry_quantidade.get())
    mensagem = estoque[codigo].entrada_estoque(qtd)
    messagebox.showinfo("Entrada no Estoque", mensagem)
    atualizar_estoque()
    else:
    messagebox.showerror("Erro", "Produto não encontrado!")

    Função para registrar a saída de produtos (venda)


    def registrar_saida(): codigo = entry_codigo.get() if codigo in estoque: qtd = int(entry_quantidade.get()) mensagem = estoque[codigo].saida_estoque(qtd) messagebox.showinfo("Saída do Estoque", mensagem) atualizar_estoque() else: messagebox.showerror("Erro", "Produto não encontrado!")

    Função para gerar o relatório de vendas


    def gerar_relatorio(): if not relatorio_vendas: messagebox.showinfo("Relatório de Vendas", "Nenhuma venda registrada hoje.") else: relatorio_texto = "\n".join(relatorio_vendas) messagebox.showinfo("Relatório de Vendas", relatorio_texto)

    Função para atualizar a lista de produtos no estoque


    def atualizar_estoque(): text_estoque.delete(1.0, tk.END) for produto in estoque.values(): text_estoque.insert(tk.END, str(produto) + "\n")

    Função para iniciar o sistema após o login


    def iniciar_sistema(): global entry_codigo, entry_nome, entry_preco, entry_quantidade, text_estoque

    root = tk.Tk()
    root.title("Sistema de Caixa e Estoque")
    root.geometry("500x600")

    tk.Label(root, text="Sistema de Caixa e Estoque", font=("Arial", 16, "bold")).pack()

    tk.Label(root, text="Código do Produto:").pack()
    entry_codigo = tk.Entry(root)
    entry_codigo.pack()

    tk.Label(root, text="Nome do Produto:").pack()
    entry_nome = tk.Entry(root)
    entry_nome.pack()

    tk.Label(root, text="Preço do Produto:").pack()
    entry_preco = tk.Entry(root)
    entry_preco.pack()

    tk.Label(root, text="Quantidade:").pack()
    entry_quantidade = tk.Entry(root)
    entry_quantidade.pack()

    tk.Button(root, text="Adicionar Produto", command=adicionar_produto).pack()
    tk.Button(root, text="Registrar Entrada", command=registrar_entrada).pack()
    tk.Button(root, text="Registrar Saída", command=registrar_saida).pack()
    tk.Button(root, text="Gerar Relatório de Vendas", command=gerar_relatorio).pack()

    tk.Label(root, text="Estoque Atual:").pack()
    text_estoque = tk.Text(root, height=10, width=50)
    text_estoque.pack()

    root.mainloop()

    Janela de login


    login_window = tk.Tk() login_window.title("Login - Sistema de Caixa") login_window.geometry("300x200")

    tk.Label(login_window, text="Usuário:").pack() entry_usuario = tk.Entry(login_window) entry_usuario.pack()

    tk.Label(login_window, text="Senha:").pack() entry_senha = tk.Entry(login_window, show="*") entry_senha.pack()

    tk.Button(login_window, text="Entrar", command=login).pack()

    login_window.mainloop()

    Continue reading...

Compartilhe esta Página