Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE ANHANGUERA Faculdade Anhanguera de São Bernardo Curso: Tecnologia em Análise e Desenvolvimento de Sistemas. ERIC SITWEEL SEARLES – RA 6032501055 Desafio Profissional. Tutores EAD: Joice Siqueira Lima 1º SEMESTRE/2018 SÃO BERNARDO DO CAMPO – SP 2018 RESUMO Este trabalho destina-se a conclusão das matérias estudadas no semestre I do curso de Análise e Desenvolvimento de Sistemas da Faculdade Anhanguera, sua finalidade é desenvolver e colocar em prática os conhecimentos adquiridos ao longo do semestre. Para atender as necessidades de demanda dos equipamentos da empresa utilizados em obras, foi necessário criar um controle de utilização dos mesmos, este controle mostrará de forma clara, quais equipamentos estão disponíveis para uso, e em qual local estão armazenados, mostrará também, quais equipamentos estão sendo utilizados, em qual obra encontra-se o equipamento, qual a previsão de uso, e quem é o responsável pela alocação do equipamento, possibilitando assim, um melhor planejamento para a utilização dos mesmos sem causar prejuízos na realização dos serviços. SUMÁRIO 1 INTRODUÇÃO......................................................................................................... 2 DESENVOLVIMENTO............................................................................................. 2.1 Objetivos do Projeto............................................................................................... 2.2 Descrição do projeto.............................................................................................. 2.3 Organização do Projeto.......................................................................................... 3 METODOLOGIA DO PROJETO............................................................................... 3.1 Requisitos do projeto............................................................................................. 3.2 Modelagem de negócio........................................................................................... 4 Requisitos Funcionais e Não-funcionais do Sistema.......................................... 4.1 São requisitos funcionais do sistema................................................................... 4.2 São requisitos não-funcionais do sistema............................................................ 5 DIAGRAMAS............................................................................................................ 5.1 Diagrama de caso de uso....................................................................................... 5.2 Diagrama de classes............................................................................................... 5.3 Diagrama Entidade Relacionamento..................................................................... 6 BANCO DE DADOS PARA O SOFTWARE............................................................. 6.1 Tabelas do Banco de Dados................................................................................... 6.2 Script SQL ............................................................................................................... 7 PROGRAMANDO EM C........................................................................................... 7.1 Cadastro Funcionários........................................................................................... 7.2 Listar Funcionários................................................................................................. 7.3 Excluir funcionário................................................................................................. 7.4 Cadastro Equipamento........................................................................................... 8 ESTUDO PARA OTIMIZAÇÃO DE ROTAS........................................................... 8.1 Tabela Verdade...................................................................................................... 9 CONCLUSÃO.......................................................................................................... 10 REFERÊNCIAS........................................................................................................ 1 – INTRODUÇÃO Com a expansão da CONSTRUTORA CONSTRUINDO SEMPRE, fez-se necessário criar um projeto para controle de alocação de equipamentos utilizados pela construtora, em suas obras, possibilitando com isto, uma melhor utilização dos recursos disponíveis, para a melhor utilização e controle de equipamentos nas obras realizadas pela CONSTRUTORA CONSTRUINDO SEMPRE. 2 - DESENVOLVIMENTO 2.1 - Objetivos do Projeto Este projeto tem por objetivo desenvolver rotinas para a alocação dos equipamentos, organizando a utilização e as informações sobre a localização, a disponibilidade para uso e a previsão do tempo de uso, caso o mesmo não esteja disponível. Também deixará disponível as informações sobre qual funcionário está responsável pelo equipamento em uso, facilitando a troca de informações sobre o estado do equipamento. Com isto esperamos facilitar o controle e também disponibilizar dados para a construtora avaliar a necessidade de aquisição ou não de novos equipamentos, de acordo com a necessidade. 2.2 - Descrição do projeto A proposta do sistema é cadastrar todos os equipamentos, montar um mapa da localização e cronograma de todas as obras onde os equipamentos serão utilizados, e o nome do funcionário responsável, desta forma, o funcionário que precisar do equipamento, fará a solicitação ao estoque e saberá quando o equipamento estará disponível para uso, podendo assim programar no seu cronograma, o período para a utilização do equipamento, este controle possibilitará à construtora ver a real demanda de cada equipamento e com isto saber se é necessário a aquisição ou não, de novos equipamentos, e evitar possíveis problemas com perdas ou extravios de equipamentos. 2.3 - Organização do Projeto A realização do projeto justifica-se pelo crescimento da CONSTRUTORA CONSTRUINDO SEMPRE e a dificuldade gerada para o controle de alocação de equipamentos nas obras. Visto que, como minha modalidade de estudos é E.A.D, ficarei responsável por todas as etapas de desenvolvimento do projeto. 3 - METODOLOGIA DO PROJ ETO Para desenvolver uma solução eficiente para o processo de alocação de equipamentos em obras foi necessário analisar os recursos utilizados no processo, realizar o levantamento de sistemas, pessoal e tecnologias envolvidos. Foram elaborados diagramas para delimitar as funções de cada usuário, bem como as ações necessárias em cada momento. 3.1 – Requisitos do projeto Análise de requisitos O sistema será web, para que possa ser acessado de qualquer local onde for necessário. É necessário que o sistema realize as seguintes funções: • Cadastrar usuários: Cadastrar usuários em uma base de dados com diferentes permissões de acesso para utilizarem o sistema • Validar Cadastro: Verificar na base de dados se o usuário já possui cadastro no sistema, caso possua, emitir mensagem de alerta • Fazer login no sistema: Permitir ao usuário fazer login no sistema após estar cadastrado • Validar acesso ao sistema: Validar o acesso do usuário através de login e senha. • Cadastrar Equipamentos: Cadastraros equipamentos da construtora disponibilizados para alocação em suas obras • Cadastrar Estoque: Manter controle de equipamentos disponíveis ou não em estoque com datas de entrada e saída, e nome do responsável pela solicitação e devolução do equipamento. • Cadastrar Obra: Cadastrar as obras que estão em execução e as que serão iniciadas com datas de início e enceramento. • Cadastrar Movimentação de locação: Cadastrar a entrada e saída de equipamentos com as informações da localização do mesmo e previsão de tempo de uso. 3.2 - Modelagem de negócio Processo Serviços Envolvidos Cadastrar usuário Na tela de acesso para cadastro preencher os dados solicitados Departamento Pessoal Fazer login no sistema Na tela de Login preencher os dados nome de usuário e senha para acessar o sistema Funcionário Cadastrar Equipamento Após preencher os campos do formulário de cadastro de equipamento. clicar no botão “gravar” para armazenar o registro Diretoria de Obras (Planejamento) Cadastrar Estoque Após preencher os campos do formulário de entrada e saída de equipamento clicar no botão “gravar” para armazenar o registro Funcionário (estoque) Cadastrar Obra Após preencher os campos do formulário de cadastro de obra, clicar no botão “gravar” para gravar o registro dos dados da obra Diretoria de Obras (Planejamento) Cadastrar Movimentação de Alocação Após verificar a necessidade de utilização do equipamento, o funcionário responsável solicita a alocação a diretoria de obras Diretoria de Obras (Execução) 4 - Requisitos Funcionais e Não-funcionais do Sistema 4.1 - São requisitos funcionais do sistema • Cadastrar usuários • Validar Cadastro • Fazer login no sistema • Validar acesso ao sistema • Cadastrar equipamento • Controle de estoque • Criar pedido de alocação • Finalizar pedido de alocação • Inserir, alterar, excluir dados de usuários cadastrados no sistema • Inserir, alterar, excluir dados de equipamentos cadastradas no sistema 4.2 - São requisitos não-funcionais do sistema • A base de dados deve ser protegida e o acesso apenas restrito ao gerenciamento de T.I. • Apenas usuários cadastrados pelo departamento pessoal terão acesso ao sistema • Apenas a Diretoria de Obras poderá cadastrar dados das obras da Construtora no sistema • Apenas usuários da Diretoria de Obras (Execução) poderão solicitar alocação de equipamento para obra. • O sistema será acessado via web. 5 – DIAGRAMAS 5.1 – Diagrama de caso de uso 5.2 - Diagrama de classes 5.3 - Diagrama Entidade Relacionamento 6 - BANCO DE DADOS PARA O SOFTWARE Após estudo realizado sobre qual o melhor banco de dados a ser utilizado para o sistema, optamos pela utilização do MySql O MySQL se tornou o mais popular banco de dados open source do mundo porque possui consistência, alta performance, confiabilidade e é fácil de usar. Atualmente é usado em mais de 6 milhões de instalações em todos os continentes (inclusive na Antártica), que vão desde instalações em grandes corporações a específicas aplicações embarcadas. O servidor de banco de dados MySQL fornece o melhor em escalabilidade, ostentando a capacidade para lidar com aplicações profundamente enraizadas com uma pegada de apenas 1MB de executar maciços data warehouses segurando terabytes de informação. A flexibilidade da plataforma é uma característica forte do MySQL com todos os sabores de Linux, UNIX e Windows que está sendo suportado. E, a natureza de código aberto do MySQL permite a personalização completa para adicionar requisitos exclusivos para o servidor de banco de dados. MySQL oferece um dos mais poderosos motores de banco de dados transacionais no mercado. As características incluem ACID completo (atômica consistente isolado duráveis) suporte a transações, bloqueio de nível de linha ilimitada, capacidade de transação distribuída, e suporte a transações multi-versão onde os leitores não bloqueiam escritores e vice-versa. integridade de dados completo também é assegurada através da integridade imposta por servidor referencial, os níveis de isolamento de transação especializados e detecção de impasse instante. Usando o MySQL para novos projetos de desenvolvimento, as empresas estão percebendo economias de. Conseguido através da utilização das arquiteturas de servidores de banco de dados e scale-out do MySQL que utilizam hardware commodity de baixo custo, as empresas estão descobrindo que eles podem alcançar níveis surpreendentes de escalabilidade e desempenho, tudo a um custo que é muito menos do que os oferecidos pela proprietária e fornecedores de software de scale-up. Além disso, a confiabilidade e fácil manutenção do MySQL significa que os administradores de banco de dados não percam tempo solucionando problemas de desempenho ou tempo de inatividade. O MySQL funciona em mais de 20 plataformas, incluindo Linux, Windows, HP-UX, AIX, Netware, dando ao sistema, flexibilidade e controle. A MySQL oferece uma gama completa de produtos certificados, testados e homologados pela própria MySQL AB, além de treinamento consultoria e suporte para fazer o seu projeto bem-sucedido. Linguagens de acesso ao MySQL * C, C++, Java * PHP, Python, Perl * Ruby * .NET, Oracle Forms, Microsoft ASP * Delphi, Kylix * LISP, Lasso, Pike, TCL, Guile, Rexx, Dylan. 6.1 - Tabelas do Banco de Dados 6.2 – Script SQL CREATE TABLE IF NOT EXISTS 'funcionarios' ( 'idfuncionario' int(11) NOT NULL AUTO_INCREMENT, 'matricula' int(11) NOT NULL DEFAULT '0', 'cpf' int(11) NOT NULL DEFAULT '', 'usuarios_idusuario' int(11) NOT NULL, 'funcao' varchar(45) NOT NULL DEFAULT '0', PRIMARY KEY ('idfuncionario'), FOREIGN KEY ('usuarios_idusuario'), ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; INSERT INTO ‘funcionários’ (‘matricula’, ‘cpf’, ‘usuários_idusuario’,’ funcao’) VALUES (‘numero da matricula do funcionario’, ‘cpf do funcionario’, ‘idusario da tabela usarios’, ‘função do funcionáro’) ; 7 - PROGRAMANDO EM C 7.1 - Cadastro Funcionários #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> typedef struct DadosFuncionarios{ int matricula; int cpf[11]; char funcao[30]; } formulario; int repetiMenu(){ fflush(stdin); int tecla; printf("\n\n\t\t ##############################\n"); printf("\t tecle Space e depois Enter para fazer uma nova consulta\n"); printf("\t\t\tOu tecle Enter duas vezes para sair...\n"); tecla = getchar(); if(tecla == 32){ system("cls"); return 1; } } void desenharTitulo(){ printf(" %c---------------------------------------------------------------------------- %c\n",254,254); printf(" | ");printf("\t\t\t CADASTRO DE FUNCIONÁRIO");printf("\t\t\t |\n"); printf(" %c---------------------------------------------------------------------------- %c\n",254,254); printf("\n\n"); } void chamaMenu(){ int opcaoMenu; char tecla; float soma = 0; int i = 0; do{ printf(" %c---------------------------------------------------------------------------- %c\n",254,254); printf(" | "); printf("\t\t\t CADASTRO DE FUNCIONÁRIO");printf("\t\t\t |\n"); printf(" %c----------------------------------------------------------------------------%c\n",254,254); printf("\t\t %c----------%c\t\t\t\t ",254,254); printf("\t\t\t | MENU ");printf("|\t\t\t\t \n"); printf("\t\t %c-----------------------------------%c \n",254,254); printf("\t\t | <1> Novo cadastro |\n"); printf("\t\t |-----------------------------------|\n"); printf("\t\t | <2> Excluir cadastros |\n"); printf("\t\t |-----------------------------------|\n"); printf("\t\t | <3> Listar |\n"); printf("\t\t |-----------------------------------|\n"); printf("\t\t | <5> Sair |\n"); printf("\t\t %c-----------------------------------%c\n",254,254); printf("\t\t\tOPÇÃO: "); scanf("%d",&opcaoMenu); fflush(stdin); switch (opcaoMenu){ case 1: system("cls"); incluir(); break; case 2: system("cls"); excluir(); break; case 3: system("cls"); listar(); break; case 4: printf("\t\t bye"); remove(TMPDATA_ORDE); exit(0); break; default : system("cls"); break; } }while(opcaoMenu > 6 && printf("\t\t\t\tOpção invalida\n\n\n")); } int achaMatricula(int *matricula){ formulario Dados; FILE *pf; pf = fopen(DATA_FILENAME,"r"); rewind(pf); if(pf == NULL){ printf("\t\t Erro ao abrir arquivo\n"); } //percorrer todo o arquivo procurando se já existe a matricula. while(fread(&Dados,sizeof(Dados),1,pf) != 0){ if(*matricula == Dados.matricula){ return 1; } } fclose(pf); //fecha arquivo } //função para validar a matricula int validaMatricula(int *matricula){ formulario Dados; FILE *pf; int total = 0; pf = fopen(DATA_FILENAME,"r"); rewind(pf); if(pf == NULL){ printf("\t\t Erro ao abrir arquivo\n"); } //percorrer todo o arquivo procurando se já existe a matricula. while(fread(&Dados,sizeof(Dados),1,pf) != 0){ if(*matricula == Dados.matricula){ printf("\t\t A matricula já cadastrada. Digite uma nova matricula\n"); return 1; } } fclose(pf); //fecha arquivo } int percorre(){ formulario Dados; FILE *pf; int total = 0; pf = fopen(DATA_FILENAME,"r"); rewind(pf); while(fread(&Dados,sizeof(Dados),1,pf) != 0){ total++; } return total; } int incluir(){ formulario Dados; FILE *pf; int total = 0; pf = fopen(DATA_FILENAME,"a+"); desenharTitulo(); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\t\t | ");printf("\t\t INCLUIR");printf("\t\t |\n"); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\n"); printf("\t\t |--------------------------------------|\n"); do{ printf("\t\t |MATRÍCULA : "); scanf("%d",&Dados.matricula); }while(validaMatricula(&Dados.matricula) == 1); fflush(stdin); printf("\t\t |funcao : "); gets(Dados.funcao); fflush(stdin); printf("\t\t |cpf : "); scanf("%f",&Dados.cpf); fflush(stdin); printf("\t\t |--------------------------------------|\n\n"); if(pf == NULL){ printf("\t\t Erro ao criar arquivo\n"); } //escreve no arquivo fwrite(&Dados,sizeof(Dados),1,pf); //verifica se o arquivo foi fechado com sucesso if(fclose(pf) == 0){ printf("\t\t Funcionario cadastrado com sucesso\n"); }else{ printf("\t\t Problemas ao salvar o arquivo\n"); } printf("\t\t Funcionarios cadastrados : %d",percorre()); if(repetiMenu() == 1){ chamaMenu(); } } 7.2 - Listar Funcionários int listar(){ fflush(stdin); FILE *pf; formulario Dados; int registro = 0; float soma = 0; pf = fopen(DATA_FILENAME,"r"); rewind(pf); if(pf == NULL){ printf("\t\t Erro ao abrir arquivo\n"); } desenharTitulo(); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\t\t | ");printf("\t\t LISTAR");printf("\t\t |\n"); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\n"); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\t\t | ");printf("MATRICULA \t FUNCAO CPF");printf("\t |\n"); printf("\t\t %c--------------------------------------%c\n",254,254); while(fread(&Dados, sizeof(Dados), 1, pf) != 0){ printf("\t\t %d %s %.2f\n",Dados.matricula,Dados.funcao,Dados.cpf); printf("\t\t ----------------------------------------\n"); registro++; soma += Dados.cpf; } printf("\n\t\t Total de resgistros : %d Total de cpf : %.2f\n",registro,cpf); fclose(pf); if(repetiMenu() == 1){ chamaMenu(); } } void excluirValida(){ formulario Dados; FILE *pf; pf= fopen(DATA_FILENAME,"w+"); if(pf==NULL){ printf("\n\tArquivo Funcionario.txt não pode ser aberto.\n"); } FILE *temporario; temporario = fopen(TMPDATA_FILENAME,"a+"); if(temporario == NULL){ printf("\nArquivo Funcionario.txt não pode ser aberto.\n"); } while(fread(&Dados,sizeof(Dados),1,temporario)!=0){ fwrite(&Dados,sizeof(Dados),1,pf); } fclose(pf); fclose(temporario); } 7.3 - Excluir funcionário int excluir(){ FILE *pf; FILE *temporario; pf = fopen(DATA_FILENAME,"a+"); temporario = fopen(TMPDATA_FILENAME,"a+"); formulario Dados; int matricula; rewind(pf); if(pf == NULL){ printf("\t\t Erro ao abrir arquivo\n"); } desenharTitulo(); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\t\t | ");printf("\t\t EXCLUIR");printf("\t\t |\n"); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\n"); printf("\t\t |--------------------------------------|\n"); printf("\t\t |MATRÍCULA : "); scanf("%d",&matricula); if(achaMatricula(&matricula) == 0){ printf("\n\t\t\t Matricula não encontrada\n"); if(repetiMenu() == 1){ chamaMenu(); } } //fread tem retorno 0 quando chega ao final do arquivo while(fread(&Dados,sizeof(Dados),1,pf) != 0){ if(Dados.matricula != matricula){ fwrite(&Dados,sizeof(Dados),1,temporario); } } //fecha os arquivos fclose(pf); fclose(temporario); //remove o arquivo original e renomeia o arquivo temporario excluirValida(); remove(TMPDATA_FILENAME); printf("\n\t\t\t Excluido com sucesso\n"); //chama menu. if(repetiMenu() == 1){ chamaMenu(); } } if(repetiMenu() == 1){ chamaMenu(); } } int main(){ setlocale(LC_ALL,""); chamaMenu(); } 7.4 - Cadastro Equipamento #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> typedef struct DadosEqupamento{ char numSerie;[30] char nome[30]; char descricao[100]; } formulario; int repetiMenu(){ fflush(stdin); int tecla; printf("\n\n\t\t ##############################\n"); printf("\t tecle Space e depois Enter para fazer uma nova consulta\n"); printf("\t\t\tOu tecle Enter duas vezes para sair...\n"); tecla = getchar(); if(tecla == 32){system("cls"); return 1; } } void desenharTitulo(){ printf(" %c---------------------------------------------------------------------------- %c\n",254,254); printf(" | ");printf("\t\t\t CADASTRO DE EQUIPAMENTO");printf("\t\t\t |\n"); printf(" %c---------------------------------------------------------------------------- %c\n",254,254); printf("\n\n"); } void chamaMenu(){ int opcaoMenu; char tecla; float soma = 0; int i = 0; do{ printf(" %c---------------------------------------------------------------------------- %c\n",254,254); printf(" | "); printf("\t\t\t CADASTRO DE EQUIPAMENTO");printf("\t\t\t |\n"); printf(" %c---------------------------------------------------------------------------- %c\n",254,254); printf("\t\t %c----------%c\t\t\t\t ",254,254); printf("\t\t\t | MENU ");printf("|\t\t\t\t \n"); printf("\t\t %c-----------------------------------%c \n",254,254); printf("\t\t | <1> Novo cadastro |\n"); printf("\t\t |-----------------------------------|\n"); printf("\t\t | <2> Excluir cadastros |\n"); printf("\t\t |-----------------------------------|\n"); printf("\t\t | <3> Listar |\n"); printf("\t\t |-----------------------------------|\n"); printf("\t\t | <5> Sair |\n"); printf("\t\t %c-----------------------------------%c\n",254,254); printf("\t\t\tOPÇÃO: "); scanf("%d",&opcaoMenu); fflush(stdin); switch (opcaoMenu){ case 1: system("cls"); incluir(); break; case 2: system("cls"); excluir(); break; case 3: system("cls"); listar(); break; case 4: printf("\t\t bye"); remove(TMPDATA_ORDE); exit(0); break; default : system("cls"); break; } }while(opcaoMenu > 6 && printf("\t\t\t\tOpção invalida\n\n\n")); } int achaMatricula(int *matricula){ formulario Dados; FILE *pf; pf = fopen(DATA_FILENAME,"r"); rewind(pf); if(pf == NULL){ printf("\t\t Erro ao abrir arquivo\n"); } //percorrer todo o arquivo procurando se já existe a matricula. while(fread(&Dados,sizeof(Dados),1,pf) != 0){ if(*numSerie == Dados.numSerie){ return 1; } } fclose(pf); //fecha arquivo } //função para validar a matricula int validaEquipamento(char *numSerie){ formulario Dados; FILE *pf; int total = 0; pf = fopen(DATA_FILENAME,"r"); rewind(pf); if(pf == NULL){ printf("\t\t Erro ao abrir arquivo\n"); } //percorrer todo o arquivo procurando se já existe o numero de serie. while(fread(&Dados,sizeof(Dados),1,pf) != 0){ if(*matricula == Dados.numSerie){ printf("\t\t O Equpamento já está cadastrad. Tente cadstrar outo equipamento\n"); return 1; } } fclose(pf); //fecha arquivo } int percorre(){ formulario Dados; FILE *pf; int total = 0; pf = fopen(DATA_FILENAME,"r"); rewind(pf); while(fread(&Dados,sizeof(Dados),1,pf) != 0){ total++; } return total; } int incluir(){ formulario Dados; FILE *pf; int total = 0; pf = fopen(DATA_FILENAME,"a+"); desenharTitulo(); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\t\t | ");printf("\t\t INCLUIR");printf("\t\t |\n"); printf("\t\t %c--------------------------------------%c\n",254,254); printf("\n"); printf("\t\t |--------------------------------------|\n"); do{ printf("\t\t |NUMERO DE SERIE : "); scanf("%d",&Dados.numSerie); }while(validaSerial(&Dados.numSerie) == 1); fflush(stdin); printf("\t\t |funcao : "); gets(Dados.funcao); fflush(stdin); printf("\t\t |cpf : "); scanf("%f",&Dados.cpf); fflush(stdin); printf("\t\t |--------------------------------------|\n\n"); if(pf == NULL){ printf("\t\t Erro ao criar arquivo\n"); } //escreve no arquivo fwrite(&Dados,sizeof(Dados),1,pf); //verifica se o arquivo foi fechado com sucesso if(fclose(pf) == 0){ printf("\t\t Equipamento cadastrado com sucesso\n"); }else{ printf("\t\t Problemas ao salvar o arquivo\n"); } printf("\t\t Equipamento cadastrados: %d",percorre()); if(repetiMenu() == 1){ chamaMenu(); } } 8 - ESTUDO PARA OTIMIZAÇÃO DE ROTAS Sabendo que o motorista tem que passar por 4 cidades, podemos determinar o número de rotas possíveis realizando o cálculo: n! /4! (n-4)! tal que n = número de cidades, o resultado desta expressão informa a quantidade de rotas possíveis que o veículo poderá percorrer para chegar ao seu destino, totalizando 24 rotas possíveis, como demonstrado 4! = 4. 3. 2. 1 = 24. Supondo as rotas fictícias dadas, se o veículo que estará realizando a entrega passar pela cidade A e não passar pela cidade B então conseguirá chegar à cidade C mais rápido, chegamos a seguinte sequência proposicional: (a^ ~b) - > c 8.1 - Tabela Verdade: a b c ~b (a ^ ~ b) c (a ^ ~ b) c V V V F F V V V V F F F F V V F V V V V V V F F V V F F F V V F F V V F V F F F F V F F V V V V V F F f v V F V 9 - CONCLUSÃO Após concluir o projeto, ficou evidente a necessidade de um controle mais rigoroso do uso dos equipamentos da empresa, visto que todos os equipamentos tem um grande fluxo de uso e dão suporte a realização de várias obras em diferentes locais, sendo assim são manipulados por muitos funcionários, a falta deste controle ocasiona o extravio e até a perda de alguns equipamentos. Com a implantação do sistema, ficou mais fácil saber onde se encontram os equipamentos e quem é o responsável pelo mesmo, conseguindo com estas informações uma melhor programação para o uso destes recursos. Podemos concluir portanto, que o desenvolvimento de um software para a gestão de equipamentos foi fundamental no auxílio d plano de expansã da empresa. 10 - REFERÊNCIAS Principais razões para usar mysql Disponível em: http://www.hti.com.br/principais-razoes-para-usar-mysql Acessado em 15/0/2018 Por que usar mysql Disponível em: https://www.oficinadanet.com.br/artigo/484/por_que_usar_mysql Acessado em 15/0/2018 PEEIRA, FÁBIO - Programação em C ; Editora Érica, 2003, 6ª Edição. Relacionamento entre classes e dependências Disponível em: http://www.ateomomento.com.br/orientacao-a-objetosuml-relacionamento-entre- classes-dependencia/ Acesso em 15 de maio de 2018 LAUDON, K. C., LAUDON, J. P., Sistemas de Informação Gerencias: Administrando a empresa digital. 5. ed. São Paulo. Prentice-Hall, 2004. O`BRIEN, J. A. Sistema de informação e as decisões gerenciais na era da internet. São Paulo. Tradução da 9ª ed. Editora Saraiva, São Paulo, 2001. TORQUATO, P.R.G.; SILVA, G. P. Tecnologia e estratégia: uma abordagem analítica e prática. Revista de Administração, São Paulo: v. 35, n.1, p.72-85, jan./mar. 2000
Compartilhar