Пример #1
0
#!C:\\Python26\\python.exe
#-*- coding: ISO-8859-1 -*-
print "Content-type: text/html; ISO-8859-1"
import template
import colunaLateral
import colunaMeio
template.cabecalho()
template.bodyInicio()
colunaMeio.meio()
template.bodyFinal()
Пример #2
0
def main():

    while True:

        template.limpar_tela()
        template.cabecalho("Cadastro Master Blaster Mega do Detran Barril")

        template.menu_tabela(
            "Criar Banco de Dados",
            "Cadastrar",
            "Atualizar Cadastro",
            "Mostrar Cadastro",
            "Deletar Cadastro",
            "Sair",
        )

        while True:
            try:
                resp = int(input("Selecione uma opção:\n"))

                if resp not in range(1, 7):
                    print("Você digitou uma opção inválida. Tente novamente!")
                    continue

                else:
                    break

            except:
                print("Você digitou uma opção inválida. Tente novamente!")
                continue

        if resp == 1:
            template.limpar_tela()
            criar_tabelas()
            sleep(1)

        elif resp == 2:
            while True:
                template.limpar_tela()
                cadastrar_no_banco()
                resp = input("Você gostaria de realizar outro "
                             "cadastro? [S/N]\n").lower().strip()[0]

                if resp in "sn" and resp != "" and resp != " ":
                    continue

                else:
                    break

        elif resp == 3:
            template.limpar_tela()
            update()

        elif resp == 4:
            template.limpar_tela()
            apresentar_banco()

        elif resp == 5:
            while True:
                template.limpar_tela()
                deletar_no_banco()
                resp = input("Você gostaria de deletar outro "
                             "cadastro? [S/N]\n").lower().strip()[0]

                if resp in "sn" and resp != "" and resp != " ":
                    continue

                else:
                    break

        elif resp == 6:
            print("\nObrigado por usar nossos serviços!")
            break

        else:
            print("\nOps, algo deu errado. Tente novamente!")
            sleep(1)
def apresentar_banco(entrada="tudo", att_pessoa=False, att_veiculo=False):
    """
    Essa função é responsável por mostrar os dados escolhidos, o usuário 
    pode escolher mostrar uma pessoa que ainda não está vinculada a um 
    veículo, um veículo que ainda não está vinculado a uma pessoa ou uma
    pessoa com veículo.    
    """

    conn = sqlite3.connect('Cadastro_Geral.db')
    cursor = conn.cursor()

    if entrada == "pessoas_sem_veiculo":
        cursor.execute("""
            SELECT id, nome FROM Cadastro_pessoa
            Where veiculo_id = 0
            """)

        tabela_nomes = cursor.fetchall()

        for linha in tabela_nomes:
            print(f"\nID:{linha[0]}\nNome:{linha[1]}\n")

        conn.close()

    if entrada == "Veiculos_sem_pessoas":
        cursor.execute("""
            SELECT id, nome, placa FROM Cadastro_veiculo;
            """)
        lista_veiculos = cursor.fetchall()

        cursor.execute("""
                SELECT veiculo_id FROM Cadastro_pessoa
                Where veiculo_id != 0
                """)

        lista_pessoas_com_veiculos = cursor.fetchall()

        for carro in lista_veiculos:
            if not carro[0] in lista_pessoas_com_veiculos:
                print(f"\nID: {carro[0]}\n"
                      f"Veículo: {carro[1]}\n"
                      f"Placa: {carro[2]}\n\n")

        conn.close()

    if entrada == "tudo":
        resp = 0
        if att_pessoa == False and att_veiculo == False:
            template.cabecalho("Tabela de Cadastros")
            template.texto_menu("[1] Pessoa")
            template.texto_menu("[2] Veículo")
            template.texto_menu("[3] Pessoas veículo")
            # template.texto_menu("[4] Pessoas sem veículo")

            template.rodape()

            while True:
                try:
                    resp = int(input("Selecione uma opção:\n"))

                    if resp not in range(1, 4):
                        print(
                            "Você digitou uma opção inválida. Tente novamente!"
                        )
                        continue

                    else:
                        break

                except:
                    print("Você digitou uma opção inválida. Tente novamente!")
                    continue

        if resp == 1 or att_pessoa == True:
            while True:
                todos_ids = []
                cursor.execute("""
                        SELECT id, nome FROM Cadastro_pessoa;
                        """)

                tabela_nomes = cursor.fetchall()

                for linha in tabela_nomes:
                    print(f"\nID: {linha[0]}\nNome: {linha[1]}")
                    todos_ids.append(linha[0])

                try:
                    while True:
                        resp_id = int(
                            input("\nSelecione o ID para ver o cadastro "
                                  "completo.\nAperte ENTER para continuar.\n"))

                        if resp_id not in todos_ids:
                            print("ID não cadastrado! Tente novamente.")
                            continue
                        else:
                            break

                except:
                    return None

                else:
                    lista = cursor.execute(
                        """PRAGMA table_info(Cadastro_pessoa)""")
                    opcoes = []
                    for opcao in lista:
                        opcoes.append(opcao[1].replace("_", " ").title())
                    opcoes = tuple(opcoes)

                    cursor.execute(f"""
                    SELECT * FROM Cadastro_pessoa
                    WHERE id = {resp_id}
                    """)

                    matriz = [opcoes]

                    matriz.append(cursor.fetchone())

                    for indice in range(len(opcoes)):
                        primeira_coluna = True
                        for linha in matriz:
                            if primeira_coluna:
                                print(f"{linha[indice]:>17}", end=" " * 3)
                                primeira_coluna = False

                            else:
                                print(f"{linha[indice]:<20}", end=" ")

                        print()

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

        if resp == 2 or att_veiculo == True:
            while True:

                todos_ids = []

                cursor.execute("""
                    SELECT id, nome, placa FROM Cadastro_veiculo;
                    """)

                tabela_nomes = cursor.fetchall()

                for linha in tabela_nomes:
                    print(
                        f"\nID: {linha[0]}\nNome: {linha[1]}\nPlaca: {linha[2]}"
                    )

                    todos_ids.append(linha[0])

                try:
                    while True:
                        resp_id = int(
                            input("\nSelecione o ID para ver o cadastro "
                                  "completo.\nAperte ENTER para continuar.\n"))

                        if resp_id not in todos_ids:
                            print("ID não cadastrado! Tente novamente.")
                            continue
                        else:
                            break

                except:
                    return None

                else:
                    lista = cursor.execute(
                        """PRAGMA table_info(Cadastro_veiculo)""")
                    opcoes = []
                    for opcao in lista:
                        opcoes.append(opcao[1].replace("_", " ").title())
                    opcoes = tuple(opcoes)

                    cursor.execute(f"""
                    SELECT * FROM Cadastro_veiculo
                    WHERE id = {resp_id}
                    """)

                    matriz = [opcoes]
                    matriz.append(cursor.fetchone())
                    for indice in range(len(opcoes)):
                        primeira_coluna = True
                        for linha in matriz:
                            if primeira_coluna:
                                print(f"{linha[indice]:>17}", end=" " * 3)
                                primeira_coluna = False

                            else:
                                print(f"{linha[indice]:<20}", end=" ")

                        print()

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

        if resp == 3:

            cursor.execute("""
                SELECT Cadastro_pessoa.id, Cadastro_pessoa.nome, Cadastro_veiculo.nome,
                Cadastro_veiculo.placa
                FROM Cadastro_pessoa INNER JOIN Cadastro_veiculo
                ON Cadastro_pessoa.veiculo_id = Cadastro_veiculo.id
                """)

            for linha in cursor.fetchall():
                print(f"\nID: {linha[0]}\nProprietário: {linha[1]}\n"
                      f"Veículo: {linha[2]}\nPlaca: {linha[3]}\n\n")

            resp = int(
                input("\nSelecione o ID para ver o cadastro completo."
                      "\nDigite 0 para sair:\n"))

            if resp == 0:
                return None

            else:
                lista = cursor.execute(
                    """PRAGMA table_info(Cadastro_pessoa)""")

                opcoes1 = []
                for opcao1 in lista:
                    opcoes1.append(opcao1[1])
                opcoes1 = tuple(opcoes1)

                lista2 = cursor.execute(
                    """PRAGMA table_info(Cadastro_veiculo)""")

                opcoes2 = []
                for opcao2 in lista2:
                    opcoes2.append(opcao2[1])
                opcoes2 = tuple(opcoes2)

                cursor.execute(f"""
                    SELECT * FROM Cadastro_pessoa
                    WHERE id = {resp}
                    """)

                matriz = [opcoes1]

                matriz.append(cursor.fetchone())
                matriz.append(opcoes2)

                cursor.execute(f"""
                    SELECT * FROM Cadastro_veiculo
                    WHERE id = {resp}
                    """)

                matriz.append(cursor.fetchone())
                print()
                for indice in range(len(opcoes1)):
                    primeira_coluna = True
                    terceira_coluna = False
                    for linha in matriz:
                        if primeira_coluna:
                            print(f"{linha[indice]:>17}:", end=" " * 2)
                            primeira_coluna = False

                        elif not terceira_coluna and not primeira_coluna:
                            print(f"{linha[indice]:<20}", end=" |")
                            terceira_coluna = True

                        elif terceira_coluna:
                            print(f"{linha[indice]:>17}:", end=" " * 2)
                            terceira_coluna = False

                    print()

                input("\nPressione Enter para continuar.\n")
def cadastrar_no_banco():
    """
    Essa função é responsável pelo cadastro no banco de dados, o usuário 
    pode escolher cadastrar uma pessoa ou um veículo.
    """

    template.cabecalho("Cadastro")
    template.menu_tabela("Pessoa", "Veículo")

    while True:
        try:
            resp = int(input("Selecione uma opção:\n"))

            if resp not in range(1, 3):
                print("Você digitou uma opção inválida. Tente novamente!")
                continue

            else:
                break

        except:
            print("Você digitou uma opção inválida. Tente novamente!")
            continue

    conn = sqlite3.connect("Cadastro_Geral.db")
    cursor = conn.cursor()

    if resp == 1:

        nome = input("Nome:\n")
        data_nascimento = input("Data de nascimento:\n")
        cpf = input("CPF:\n")
        endereco = input("Endereço:\n")
        salario = float(input("Salário:\n"))
        profissao = input("Profissão:\n")
        telefone = input("Telefone:\n")
        nome_responsavel = input("Nome do Responsável:\n")
        sexo = input("Sexo:\n")
        naturalidade = input("Naturalidade:\n")
        nacionalidade = input("Nacionalidade:\n")

        pessoa = Pessoa(nome, data_nascimento, cpf, endereco, salario,
                        profissao, telefone, nome_responsavel, sexo,
                        naturalidade, nacionalidade)

        cadastro_pessoa = (pessoa.nome, pessoa.data_nascimento, pessoa.cpf,
                           pessoa.endereco, pessoa.salario, pessoa.profissao,
                           pessoa.telefone, pessoa.nome_responsavel,
                           pessoa.sexo, pessoa.naturalidade,
                           pessoa.nacionalidade, 0)

        try:
            cursor.execute(
                """
                INSERT INTO Cadastro_pessoa(nome, data_nascimento, cpf, endereco,
                salario, profissao, telefone, nome_responsavel, sexo,
                naturalidade, nacionalidade, veiculo_id)
                VALUES(?,?,?,?,?,?,?,?,?,?,?,?) 
                """, cadastro_pessoa)

        except Exception as ex:
            conn.rollback()
            msg = "An exception of type {0} occurred. Arguments:\n{1!r}"
            message = msg.format(type(ex).__name__, ex.args)
            print(message)

        conn.commit()

    if resp == 2:

        marca = input("Marca:\n")
        nome = input("Nome do carro:\n")
        modelo = input("Modelo:\n")
        placa = input("Placa:\n")
        proprietario = input("Proprietário:\n")
        cor = input("Cor:\n")
        km_rodado = input("Kilometros rodados:\n")
        qte_passageiros = input("Quantidade de lugares:\n")
        motor = input("Motor:\n")
        combustivel = input("Combustível:\n")
        meio_locomocao = input("Meio de locomoção:\n")
        valor = input("Valor:\n")

        carro = Veiculo(marca, nome, modelo, placa, proprietario, cor,
                        km_rodado, qte_passageiros, motor, combustivel,
                        meio_locomocao, valor)

        cadastro_veiculo = (carro.marca, carro.nome, carro.modelo, carro.placa,
                            carro.proprietario, carro.cor, carro.km_rodado,
                            carro.qte_passageiros, carro.motor,
                            carro.combustivel, carro.meio_locomocao,
                            carro.valor)

        try:
            cursor.execute(
                """
                INSERT INTO Cadastro_veiculo(marca, nome, modelo, placa,
                proprietario, cor, km_rodado, qte_passageiros, motor,
                combustivel, meio_locomocao, valor)
                VALUES(?,?,?,?,?,?,?,?,?,?,?,?) 
                """, cadastro_veiculo)

            conn.commit()

            print("Cadastro efetuado com sucesso!")

        except Exception as ex:
            conn.rollback()
            msg = "An exception of type {0} occurred. Arguments:\n{1!r}"
            message = msg.format(type(ex).__name__, ex.args)
            print(message)

    # cursor.execute("""
    #     SELECT * FROM Cadastro_pessoa INNER JOIN Cadastro_veiculo ON Cadastro_pessoa.veiculo_id = Cadastro_veiculo.id
    #     """)

    # print(cursor.fetchall())

    conn.close()
def deletar_no_banco():
    """
    Essa função é responsável por deletar uma pessoa ou veículo no banco de 
    dados.
    """
    template.cabecalho("Deletar Cadastro")
    template.menu_tabela("Pessoa", "Veículo")

    while True:
        try:
            resp = int(input("Selecione uma opção:\n"))

            if resp not in range(1, 3):
                print("Você digitou uma opção inválida. Tente novamente!")
                continue

            else:
                break

        except:
            print("Você digitou uma opção inválida. Tente novamente!")
            continue

    conn = sqlite3.connect('Cadastro_Geral.db')
    cursor = conn.cursor()

    if resp == 1:
        apresentar_banco("tudo", att_pessoa=True)

        cursor.execute("""
                       SELECT id FROM Cadastro_Pessoa;
                       """)

        todos_ids = cursor.fetchall()

        todos_ids = [x for tupla in todos_ids for x in tupla]

        while True:
            try:
                id_cliente = int(
                    input("Qual id de pessoa você gostaria de deletar?"))

                if id_cliente not in todos_ids:
                    print("ID não cadastrado! Tente novamente.")
                    continue
                else:
                    break

            except:
                print("Você digitou algo errado! Tente novamente.")
                continue

        try:
            # excluindo um registro da tabela
            cursor.execute(
                """
            DELETE FROM Cadastro_pessoa
            WHERE id = ?
            """, (id_cliente, ))

            conn.commit()

            print('Registro excluido com sucesso.')

        except Exception as ex:
            conn.rollback()
            msg = "An exception of type {0} occurred. Arguments:\n{1!r}"
            message = msg.format(type(ex).__name__, ex.args)
            print(message)

    if resp == 2:
        apresentar_banco("tudo", att_veiculo=True)

        cursor.execute("""
                SELECT id FROM Cadastro_Veiculo;
                """)

        todos_ids = cursor.fetchall()

        todos_ids = [x for tupla in todos_ids for x in tupla]

        while True:
            try:
                id_cliente = int(
                    input("Qual id de pessoa você gostaria de deletar?"))

                if id_cliente not in todos_ids:
                    print("ID não cadastrado! Tente novamente.")
                    continue
                else:
                    break

            except:
                print("Você digitou algo errado! Tente novamente.")
                continue

        try:

            # excluindo     um registro da tabela
            cursor.execute(
                """
            DELETE FROM Cadastro_veiculo
            WHERE id = ?
            """, (id_cliente, ))

            conn.commit()

            print('Registros excluidos com sucesso.')

        except Exception as ex:
            conn.rollback()
            msg = "An exception of type {0} occurred. Arguments:\n{1!r}"
            message = msg.format(type(ex).__name__, ex.args)
            print(message)

        conn.close()