Projeto padaria

Esse foi meu segundo projeto do Jovem Programador módulo 2.

Esse projeto na verdade é uma evolução natural do projeto da oficina, pois me baseei bastante no projeto da oficina para desenvolver este projeto com inúmeras melhorias e também para que ele ficasse com um nível mais avançado do que o primeiro (projeto da oficina).

Principais evoluções em relação ao projeto da oficina:

O projeto consiste basicamente em:

É utilizado o banco de dados Sqlite3.

Regra de negócio do projeto

O usuário deve ser cadastrado apenas pelo ROOT ou por algum usuário com permissões de ROOT, este por sua vez poderá, no momento do cadastro, ou a qualquer momento, setar as permissões dos demais usuários, incluindo dar a eles permissão de ROOT, as permissões possíveis são:

Assim como no projeto da oficina, existe um superusuário que através dele poderá ser setado ao primeiro usuário cadastrado a permissão de ROOT e após isso esse primeiro usuário já pode setar as permissões aos demais usuários.

Ao entrar no sistema o usuário deve receber uma mensagem de boas vindas informando suas permissões. De acordo com suas permissões será as opções que ele deve ter disponível na tela.

Caso seja apenas consulta ele terá acesso a parte das estatísticas e a todo restante do sistema apenas como consulta, não podendo fazer alterações, iclusões ou qualquer outra ação que não seja consulta.

Se a permissão for criar, vai poder cadastrar produtos e clientes, e também emitir notas, além de poder ter acesso as estatísticas, porém não poderá alterar dados existentes, pois para isso é necessário a permissão de editar, com exceção de notas que ainda estejam com status pendente.

Se a permissão for editar, ele poderá apenas editar os registros e se for criar e editar vai poder criar e editar, mas não poderá desligar registros, pois para isso é necessário a permissão de excluir.

Se a permissão for excluir, então ele poderá também desligar registros, e se for criar, editar e excluir ele poderá fazer o CRUD completo, apenas não poderá setar permissões aos usuários, ou cadastrar funcionários, pois para isso é necessário a permissão de ROOT.

Caso o usuário tenha permissão de ROOT ele poderá setar as permissões para ele mesmo e os demais usuários, portanto se ele tiver a permissão de ROOT ele consegue fazer o que quiser no sistema.

Quanto aos registros de venda (notas fiscais)

Para emitir o registro de venda, o usuário seleciona o funcionário que efetuou a venda e o cliente que fez a compra, e em seguida ele é direcionado para a tela onde vai adicionar os itens vendidos. Após adicionar todos os itens ele tem a opção de fechar a tela de emissão de notas, e com isso a nota ficaria com status de pendente, pois ela não foi emitida de fato.

Enquanto ela estiver pendente é considerado que a venda não se realizou ainda, e portanto o usuário pode entrar nela novamente, incluindo ou excluindo produtos, alterando dados da nota, após o usuário concluir ele deve emitir a nota, e com isso a nota passará pro status de emitida, e passará a constar como registro para as estatísticas, e a partir disso não será mais possível fazer nenhuma alteração na nota, a não ser o seu cancelamento (se o usuário tiver essa permissão).

Ao cancelar a nota fiscal o seu status passa para cancelada, seu valor é zerado e ela automaticamente não é mais considerada nas estatísticas.

Quanto as estatísticas

Esse, na minha opinião é o principal diferencial do sistema em relação ao sistema da oficina. Ao entrar na seção das estatísticas o usuário deverá informar o período o qual ele deseja consultar, ao informar o intervalo de datas ele terá as seguintes opções de consulta:

Opções de consulta de registros

Outro diferencial em relação ao projeto da oficina, é a quantidade de opções de consultas de vendas.

Opções de consultas de vendas:

  • Todas as notas
  • Todas as notas emitidas
  • Todas as notas pendentes
  • Todas as notas canceladas
  • Notas por data da venda
    • Todas as notas por data de venda
    • Notas emitidas por data de venda
    • Notas pendentes por data de venda
    • Notas canceladas por data de venda
  • Notas por cliente
    • Todas as notas por cliente
    • Notas emitidas por cliente
    • Notas pendentes por cliente
    • Notas canceladas por cliente
  • Notas por funcionário
    • Todas as notas por funcionário
    • Notas emitidas por funcionário
    • Notas pendentes por funcionário
    • Notas canceladas por funcionário

Resumo geral do projeto

Em resumo, podemos ver que esse sistema já foi uma evolução em relação ao sistema da oficina, pois já possui uma complexidade considerável e grandes evoluções. Neste projeto consegui explorar bastante a linguagem SQL para fazer as consultas e as estatísticas do banco de dados, mas o que achei um pouco mais complexo de desenvolver é a lógica das vendas.

Também esse sistema foi super importante para exercitar a lógica de permissão, do que os usuários podem ou não podem fazer, dependendo de suas permissões, e também a lógica dos registros de vendas e dos dados para formação das estatísticas.

Quem quiser ver como ficou basta baixar esse projeto, e instalar as dependências (basicamente pyqt5) e o Python na versão 3.x

Para poder cadastrar um usuário e setar suas permissões deve utilizar inicialmente o superusuário ROOT e a senha manager.

Para executar o sistema utilize o arquivo padaria.py, que vai abrir a tela de login, onde você poderá logar com o superusuário ROOT, cadastrar um usuário, setar suas permissões e em seguida logar novamente com o usuário que você cadastrou e testar para ver como ficou esse meu segundo projeto do Jovem Programador Senac módulo 2.

Projeto oficina

Este foi o primeiro projeto com interface gráfica que desenvolvi com os conhecimentos adquiridos no programa Jovem Programador Senac módulo 2.

O projeto consiste basicamente em:

É utilizado o banco de dados Sqlite3.

Regra de negócio deste projeto

O usuário pode se cadastrar livremente, porém com o simples cadastro do usuário ele apenas terá permissão para consultas, para ter mais permissões elas deverão ser concedidas a ele pelo ROOT.

As permissões possíveis são:

Existe um superusuário que através dele poderá ser setado ao primeiro usuário cadastrado a permissão de ROOT e após isso esse primeiro usuário já pode setar as permissões aos demais usuários conforme a necessidade e nível de cada usuário.

No cadastro de clientes existe uma verificação para saber se o CPF é válido, para efeito de testes também foi colocado um botão de gerar CPF que gera CPFs aleatórios válidos para facilitar os testes e os cadastros de clientes, lembrando que esse sistema é apenas um exercício didático e não tem nenhuma funcionalidade prática, apenas serve como uma forma de praticar o CRUD.

Ao entrar no sistema o usuário deve receber uma mensagem de boas vindas informando suas permissões. De acordo com suas permissões será as opções que ele deve ter disponível na tela.

Caso seja apenas consulta ele verá as opções de buscar clientes e manutenção de clientes, sendo que não conseguirá fazer nenhuma alteração, apenas verificar os dados.

Se a permissão for criar, vai aparecer também a opção de cadastrar clientes e cadastrar veículos, e ele conseguirá fazer cadastros, porém não poderá alterar dados existentes, pois para isso é necessário a permissão de editar.

Se a permissão for editar, ele poderá apenas editar os registros e se for criar e editar vai poder criar e editar, mas não poderá excluir registros, pois para isso é necessário a permissão de excluir.

Se a permissão for excluir, então ele poderá também excluir registros, e se for criar, editar e excluir ele poderá fazer o CRUD completo, apenas não poderá setar permissões aos usuários, pois para isso é necessário a permissão de ROOT.

Caso o usuário tenha permissão de ROOT ele poderá setar as permissões para ele mesmo e os demais usuários, portanto se ele tiver a permissão de ROOT ele consegue fazer o que quiser no sistema.

Quanto a lógica na exclusão dos registros

Caso tente excluir algum cliente que possui veículos cadastrados, o sistema deve informar uma mensagem de erro avisando que esse cliente não pode ser excluído pois possui veículos cadastrados para ele e que é necessário primeiro excluir o registro desses veículos para depois poder excluir o cliente, caso o cliente não tenha nenhum registro de veículo cadastrado ele pode ser excluído sem problemas.

Resumo do projeto oficina

Em resumo, esse simples exemplo de exercício serviu para praticar a construção de um programa com interface gráfica utilizando o PyQt5 e o Qt design e também um exercício para praticar o uso do banco de dados relacional Sqlite3, pois era necessário haver uma relação entre os clientes e seus veículos.

Também esse sistema foi importante para exercitar a lógica de permissão, do que os usuários podem ou não podem fazer, dependendo de suas permissões.

Quem quiser ver como ficou basta baixar esse projeto, e instalar as dependências (basicamente pyqt5) e o Python na versão 3.x

Para poder setar as permissões deve utilizar inicialmente o superusuário ROOT e a senha manager.

Para executar o sistema utilize o arquivo main.py, que vai abrir a tela de login, onde você poderá se cadastrar e logo em seguida logar novamente com o superusuário ROOT para lhe dar as permissões que você quiser.

Medalha de Bronze OBMEP 2021

Após ganhar minha primeira medalha de bronze na OBMEP 2018 eu tive a oportunidade de participar do PIC (programa de iniciação científica da OBMEP) onde, por um ano inteiro pude me dedicar a aprender muito sobre matemática, através desse programa.

Foram 12 meses de estudos de forma online, aos sábados e pra isso ganhávamos uma bolsa de R$ 100,00 por mês como incentivo para estudarmos.

Em 2019 minha escola acabou se atrapalhando e não fez inscrição para participar da OBMEP de 2019, e em 2020 não houve a olimpíada por causa da pandemia, porém, como em 2019, quando participei do PIC tive ótimas notas e um ótimo aproveitamento, fui convidado para participar por mais um ano em 2021 do PIC.

Em 2021 minha escola fez inscrição para a OBMEP, e tive a oportunidade de participar de novo, dessa vez mais preparado, pois adquiri vários conhecimentos novos durante o PIC.

Esses conhecimentos foram muito importantes, pois essa participação foi no nível 3, onde as questões são as mais complexas, pois é o nível máximo da olimpíada de matemática.

Essa foi minha última participação na OBMEP, pois também estava encerrando o ensino médio, para minha alegria, após bastante esforço consegui novamente outra medalha de bronze, mas dessa vez no nível 3 que é o mais avançado, foi uma grande conquista para mim.

No dia 07/06/2022 fui a cerimônia de premiação que ocorreu na UFSC para receber minha medalha.

Jovem Programador Senac módulo 3

Após o encerramento do módulo 2 do curso Jovem Programador, fui aprovado para participar do módulo 3, onde estudei sobre programação Web.

Esta etapa do curso teve duração de 240 horas e foi do dia 21/02/2022 até 08/06/2022, e neste curso aprendemos o seguinte:

No geral, assim como no módulo 2, foi uma excelente experiência pra mim, e pude aprofundar ainda mais os meus conhecimentos, inclusive, durante essa etapa do curso, desenvolvi alguns projetos, utilizando Python e o framework Django, entre eles:

Certificado de conclusão do curso
Carga horária do curso

Faculdade de Engenharia de software

Logo após encerrar o ensino médio e o curso Jovem Programador do Senac, iniciei a faculdade de Engenharia de software na Anhanguera Pitágoras Ampli.

Iniciei no mês de Junho de 2022, e a previsão inicial de formatura era para Maio de 2025.

Abaixo, você pode conferir a matriz curricular do curso:

Segue abaixo a matriz curricular do curso:

Matrícula da faculdade.

Durante o curso, me deparei com diversos conteúdos, tanto teóricos como práticos, e no dia 31/05/2025, concluí mais essa etapa da minha vida, oficialmente me formando em Engenharia de Software.

Só posso dizer que tenho muito orgulho dessa conquista, e agradeço a Ampli por essa oportunidade.

Minha formação no ensino médio

Sou natural de Novo Hamburgo/RS, porém quando eu tinha 5 anos minha família veio morar em Santa Catarina, mais precisamente na Praia da Pinheira onde moro até hoje.

Com exceção dos primeiros anos (creche, maternal) que foram em escolas particulares, sempre estudei em escola pública, meu ensino médio foi todo feito na escola E.E.B. Padre Vicente Ferreira Cordeiro na Praia da Pinheira, uma escola estadual onde cursei todo o ensino fundamental, desde o primeiro ano das séries iniciais até o terceiro ano do ensino médio.

Como podem ver no meu histórico escolar abaixo sempre tive boas notas, principalmente nas áreas das exatas que é o que eu mais gosto.

Histórico escolar do ensino médio.

Curso Desenvolvedor web Udemy

Devido a pandemia de COVID-19 que ocorreu no ano de 2020, houve a necessidade de fazer quarentena, então, como eu sou autodidata e estava com bastante tempo livre devido as aulas online, resolvi aproveitar esse tempo livre para aprender uma coisa nova, foi assim que conheci e me apaixonei pelo mundo da TI.

Com a ajuda do meu pai conheci a Udemy e adquirimos vários cursos de programação, um deles foi um curso de desenvolvimento Web que me ensinou minhas primeiras noções de lógica de programação.

Esse curso foi sem dúvida uma ótima experiência, e foi muito importante pra mim, afinal foi o primeiro curso que eu fiz, e é por causa dele que este site existe, mesmo que indiretamente, após concluir esse curso eu continuei estudando e aprimorando ainda mais os meus conhecimentos.

Certificado de conclusão do curso

Desafio da robótica 2 Projeteiros

Após a conclusão do desafio da robótica 1, fiquei bastante empolgado pelos conteúdos aprendidos, portanto resolvi tentar o desafio da robótica 2.

Neste curso tínhamos um carrinho motorizado e tínhamos que fazer com que ele se movesse, pra frente e pra trás e que também fizesse curvas, e mais importante, que ele desviasse quando houvesse algum obstáculo pelo caminho.

Outro desafio era que o carrinho saísse de dentro de um labirinto feito com fita adesiva, então tínhamos que programar para que ele andasse pelo labirinto, evitando a fita adesiva.

Depois de completarmos esse desafio, tivemos que fazer o carrinho andar em uma pista feita com fita adesiva, seguindo as linhas.

Os conceitos aprendidos nesse curso foram:

Assim como o primeiro, esse curso também foi uma ótima experiência e eu honestamente gostei mais desse do que do primeiro.

Desafio da robótica Projeteiros

No ano de 2021, eu ainda estava tendo aulas online devido a pandemia, então, como sou autodidata, resolvi dedicar o meu tempo livre para fazer outras coisas, foi então que descobri o curso Desafio da robótica Projeteiros, e resolvi tentar.

O curso teve duração de 30 horas e nele aprendi sobre arduino e alguns de seus conceitos e componentes básicos, tais como:

Apesar de ter sido um curso bem básico, posso dizer que aprendi bastante coisas e foi uma ótima experiência pra mim.

Jovem Programador Senac módulo 2

Após passar na seleção pelo módulo 1 de lógica de programação, iniciei o módulo 2 do curso.

O módulo 2 consiste basicamente em desenvolvimento de software e aplicativos desktop, utilizando a linguagem Python, o PyQT5, o QT design e o banco de dados Sqlite.

Este módulo do curso se iniciou no dia 02/08/2021 e terminou no dia 10/12/2021 com 200 horas de aulas teóricas e práticas, esse módulo 2 do curso era a princípio híbrido, com aulas online e presenciais, e devido a pandemia, o aluno que desejasse (como foi o meu caso) poderia fazer esse módulo 100% online.

Certificado de conclusão do curso.
Carga horária do curso.

Neste módulo começamos aprendendo o básico da linguagem Python utilizando linhas de comando e o terminal.

Após isso, aprendemos também a utilizar o Qt design e o PyQt5 para construção de interfaces gráficas. Aprendemos também um básico da linguagem SQL e de trabalhar com o banco de dados Sqlite3.

Com as habilidades que aprendi nesse curso, desenvolvi alguns projetos para colocar em prática o meu aprendizado, foram eles:

Finalizamos esse módulo do curso com um Hackathon 100% online que ocorreu entre os dias 11/12/2021 e 18/12/2021, foi uma intensa semana com várias oficinas e workshops e muito aprendizado, onde os mais de 400 alunos desse módulo foram divididos em grupos de 5 a 7 integrantes e tiveram a oportunidade de escolher entre 8 eixos, cada um com uma tarefa, onde apenas 14 equipes seriam classificadas para a grande final.

Com muito orgulho minha equipe conseguiu ficar entre as 14 classificadas, apesar de não chegar entre os 3 primeiros, foi uma experiência muito importante para nosso aprendizado.