Você está aqui: PHP ::: Sistemas Completos com Código Fonte ::: Controle de Estoque |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesQuantidade de visualizações: 20826 vezes |
Como escrever um Controle de Estoque em PHP e MySQL do zero? Promoção Relâmpago: Este código fonte está disponível gratuitamente para os apoiadores do site. Chama no WhatsApp +55 (062) 98553-6711 para mais detalhes Sim, é isso mesmo. Você já imaginou o trabalho que dá criar um sistema de Controle de Estoque do zero? Você já pensou na quantidade de horas de trabalho que isso envolve? Não seria bom já ter boa parte do sistema já desenvolvido e você implementar apenas mais algumas poucas funcionalidades? A resposta está no código fonte que desenvolvemos para você nessa seção. Comece analisando a imagem a seguir: Nesta tela inicial podemos ver que o sistema é composto de cadastro de usuários, de categorias de produtos, um cadastro de fornecedores e um cadastro de produtos. Tanto o cadastro de produtos quanto o cadastro de fornecedores permitem inserir imagens, incluindo o recorte de imagens, para deixar todas as imagens com o mesmo tamanho e mesma resolução. Isso é importante, pois permite que qualquer usuário com conhecimento básico de informática consiga escolher uma imagem no computador, fazer o upload, recortar e salvar no diretório de imagens do programa. Na tela inicial podemos ver também a quantidade de produtos e itens cadastrados no estoque, a quantidade de produtos com estoque zero e estoque mínimo, assim como o investimento feito no estoque, o retorno e a margem de lucro. O sistema é responsivo? Sim, por ter sido escrito em Bootstrap, todas as páginas do sistema são responsíveis, ou seja, se adaptam à tela do computador e também do celular. Veja: Neste código fonte nós usamos o Bootstrap 5, mas você conseguirá, com pouca ou nenhuma modificação, rodá-lo nas versões anteriores. No entanto, como estamos o tempo todo melhorando este código para nossos clientes, é bem provável que teremos versões compatíveis com as novas versões do Bootstrap. Ah, e não se preocupe, todo o código Bootstrap, jQuery, Choise.js, Datatable, e outros scripts necessários estão devidamente colocados nos diretórios do sistema, não havendo a necessidade de baixar nada, nem mesmo usar CDNs. As telas do sistema obedecem um padrão de design? Sim, o design das telas é bem consistente, exibindo uma combinação de cores muito agradáveis aos olhos. Veja: Aqui nós o temos o Cadastro de Usuários do Sistema. Como se pode ver, é possível adicionar uma foto para cada usuário, com a opção de recortar a imagem antes de efetuar o download da mesma. Além disso, os usuários possuem níveis de acesso. O usuário admin possui os maiores privilégios. Os demais usuários podem ter permissões para cadastrar, alterar, excluir, ou somente cadastrar, ou somente visualizar, etc. O sistema mantém um registro de log para cada ação efetuada. Dessa forma, o admin saberá, com apenas um clique, quem cadastrou, alterou ou excluiu dados do sistema. Como o sistema controla a entrada e saída de produtos no estoque? Veja a seguinte imagem: Aqui nós temos o cadastro dos produtos, assim como suas fotos, as quais o usuário poderá recortar antes de fazer o upload. Note que a entrada no estoque solicita um fornecedor e a lista de produtos que farão parte da entrada. Assim que a entrada no estoque é confirmada, o valor de compra de cada produto é atualizado, assim como seu estoque. Na saída de estoque o sistema verifica se há estoque suficiente para as retiradas. O sistema é fácil de instalar? Sim, junto com o código fonte nós adicionamos instruções detalhadas de como criar a base de dados e as tabelas do MySQL. Em seguida você só precisa ajustar o servidor, usuário e senha do banco de dados no arquivo config.php, definir o caminho para os uploads das fotos dos usuários, fornecedores e produtos e executar o index.php. E o melhor de tudo: como apenas alguns "copiar-colar" você adiciona mais funcionalidades ao sistema, tornando-o ainda mais útil. Como posso obter este código fonte? Para adquirir este código fonte, me chama no WhatsApp +55 (062) 9 8553-6711 ou no e-mail osmar@arquivodecodigos.com.br. Se necessário podemos combinar e faço a instalação na sua máquina ou no seu domínio. Podemos também combinar as alterações ou a adição de novas funcionalidades. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto PHP do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. Para quem deseja ver o sistema funcionando antes de fazer o download, colocamos uma demonstração no link abaixo (Usuário "admin" e senha "admin"): Clique aqui para visualizar a demonstração (Live Demo) desse sistema |
Link para compartilhar na Internet ou com seus amigos: |
Delphi ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o seno de um número ou ângulo em Delphi usando a função Sin()Quantidade de visualizações: 12508 vezes |
Em geral, quando falamos de seno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função seno disponível nas linguagens de programação para calcular o seno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função seno. Veja a seguinte imagem: Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o seno é a razão entre o cateto oposto (oposto ao ângulo theta) e a hipotenusa, ou seja, o cateto oposto dividido pela hipotenusa. Veja a fórmula: \[\text{Seno} = \frac{\text{Cateto oposto}}{\text{Hipotenusa}} \] Então, se dividirmos 20 por 36.056 (na figura eu arredondei) nós teremos 0.5547, que é a razão entre o cateto oposto e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.5547. O resultado será 0.9828 (em radianos). Convertendo 0.9828 radianos para graus, nós obtemos 56.31º, que é exatamente o ângulo em graus entre o cateto oposto e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é seno na trigonometria, vamos entender mais sobre a função Sin() da linguagem Delphi. Esta função, incorporada por padrão à linguagem, recebe um valor numérico (Extended) e retorna um valor Extended, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('Seno de 0 = ' + FloatToStr(Sin(0))); Memo1.Lines.Add('Seno de 1 = ' + FloatToStr(Sin(1))); Memo1.Lines.Add('Seno de 2 = ' + FloatToStr(Sin(2))); end; Ao executar este código Delphi nós teremos o seguinte resultado: Seno de 0 = 0 Seno de 1 = 0,841470984807897 Seno de 2 = 0,909297426825682 Note que calculamos os senos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função seno mostrada abaixo: |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
|
Vetores e Matrizes - Exercícios Resolvidos de Java - Ex. 15 - Declarar, construir e inicializar dois vetores de int e criar um terceiro vetor com os valores dos elementos sendo a soma dos elementos dos dois vetores anterioresQuantidade de visualizações: 9060 vezes |
|
Pergunta/Tarefa: Considere os seguintes vetores: // declara, constrói e inicializa dois vetores de 5 inteiros cada int a[] = {5, 2, 9, 5, 7}; int b[] = {2, 6, 10, 3, 3}; Valores na matriz a: 5 2 9 5 7 Valores na matriz b: 2 6 10 3 3 Valores na matriz c: 7 8 19 8 10 Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; public class Estudos { public static void main(String[] args) { // declara, constrói e inicializa dois vetores de 5 inteiros cada int a[] = {5, 2, 9, 5, 7}; int b[] = {2, 6, 10, 3, 3}; int c[] = new int[5]; // vamos preencher o terceiro vetor com a soma dos dois anteriores for(int i = 0; i < c.length; i++){ c[i] = a[i] + b[i]; } // vamos mostar o resultado System.out.print("Valores no vetor a: "); for(int i = 0; i < a.length; i++){ System.out.print(a[i] + " "); } System.out.print("\nValores no vetor b: "); for(int i = 0; i < b.length; i++){ System.out.print(b[i] + " "); } System.out.print("\nValores no vetor c: "); for(int i = 0; i < c.length; i++){ System.out.print(c[i] + " "); } System.out.println(); } } |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função concat() que reproduz a funcionalidade da função strcat() da linguagem CQuantidade de visualizações: 11308 vezes |
O C (C99, ANSI C) contém uma função strcat(), no header string.h, que permite concatenar duas strings. Para fins de estudo, segue abaixo o código completo para uma função concat(), que recebe duas strings, anexa a segunda à primeira e retorna um ponteiro para uma string contendo ambas:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // uma função concat char *concat(char *destino, const char *origem) { // um ponteiro para a string de destino char *original = destino; // vai para o final da string de destino while(*original) original++; // anexa a string de origem while(*original++ = *origem++) ; // retorna o resultado return destino; } Veja como usar no trecho de código abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // uma função concat char *concat(char *destino, const char *origem) { // um ponteiro para a string de destino char *original = destino; // vai para o final da string de destino while(*original) original++; // anexa a string de origem while(*original++ = *origem++) ; // retorna o resultado return destino; } int main(int argc, char *argv[]) { char frase1[100] = "Gosto"; char frase2[20] = " muito de C e Java."; char *resultado = concat(frase1, frase2); // exibe o resultado printf("%s", resultado); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Gosto muito de C e Java. |
Java ::: Dicas & Truques ::: Mouse e Teclado |
Java Swing para iniciantes - Como detectar eventos do teclado em uma janela JFrame do Java SwingQuantidade de visualizações: 13018 vezes |
Eventos do teclado podem ser detectados em uma janela JFrame do Java Swing por meio da interface KeyListener. Neste exemplo temos uma JFrame que estende essa interface e fornece implementação para o seu método keyPressed(). Temos também um controle JTextArea desabilitado, o qual usamos para exibir a letra e o código da tecla pressionada. Veja o resultado na imagem abaixo: E aqui está o código Java Swing completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Estudos extends JFrame implements KeyListener{ private JTextArea textArea; public Estudos(){ super("Eventos do Mouse e Teclado"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); textArea = new JTextArea(100, 150); textArea.setEnabled(false); textArea.setDisabledTextColor(Color.BLACK); c.add(textArea); addKeyListener(this); setSize(350, 250); setVisible(true); } public void keyPressed(KeyEvent e){ textArea.setText( String.format("Tecla: %s - Código Unicode: %d", e.getKeyText(e.getKeyCode()), e.getKeyCode())); } public void keyReleased(KeyEvent e){ // sem implementação } public void keyTyped(KeyEvent e){ // sem implementação } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Delphi ::: Dicas & Truques ::: Recursão (Recursividade) |
Como usar recursividade em Delphi - Como usar recursão ou funções recursivas em DelphiQuantidade de visualizações: 14929 vezes |
Recursão ou recursividade é a habilidade que uma procedure ou function (função) possui de chamar a si própria uma vez, várias, indefinidamente ou até que a solução do problema a ser resolvido seja encontrada. Assim, podemos definir uma função recursiva (aqui uma procedure recursiva) em Delphi da seguinte forma (atenção: não execute este código):---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // uma procedure recursiva procedure Recursiva; begin // chama a si própria Recursiva; end; // vamos chamar a procedure pela primeira vez // a partir do Click de um botão procedure TForm1.Button1Click(Sender: TObject); begin Recursiva; end; O fato de eu pedir para que você não execute o código é que, uma vez clicado o botão, a procedure Recursiva será chamada e continuará chamando a si mesma até que a pilha do sistema estoure, ou seja, como funções recursivas são implementadas usando a pilha do sistema operacional e não na área de memória destinada a cada aplicativo o resultado será um travamento do programa, e, caso não estejamos com sorte, um travamento do sistema operacional. Sabedor do risco, clique no botão para ver o resultado você mesmo. O que devemos saber a respeito das funções recursivas é que estas precisam saber o ponto de parada, de forma a evitar chamadas infinitas. Como exemplo, veja uma procedure recursiva que conta de 0 até 10. Note como cada chamada verifica se já é hora de interromper a cadeia: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // uma procedure recursiva que conta de 0 até 10 procedure Contar(valor: Integer); begin // vamos exibir o valor atual ShowMessage(IntToStr(valor)); // é hora de parar? if valor = 10 then ShowMessage('Terminei') else begin // chama a si própria (note que aumentamos o valor atual em 1) Inc(valor); Contar(valor); end; end; // vamos chamar a procedure pela primeira vez // a partir do Click de um botão procedure TForm1.Button1Click(Sender: TObject); begin // chama a função recursiva fornecendo o valor inicial Contar(0); end; Execute este código e veja o resultado. Observe que a cada chamada recursiva nós incrementamos a variável de controle. Ela é a responsável por evitar que chamadas infinitas sejam feitas. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |