diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d9bdb4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/codigos/ControleEstoqueC/build/ +/codigos/ControleEstoqueC/dist/ \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..2200d52 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + controleestoque_c + + + + + + + + diff --git a/Makefile b/Makefile deleted file mode 100644 index d2973fa..0000000 --- a/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: compilar - -compilar: main.o paises.o gerais.o - gcc build/paises.o build/main.o build/gerais.o -o controleestoque.bin `mysql_config --libs` - -main.o: src/main.c - gcc -c src/main.c -o build/main.o - -paises.o: src/paises.c src/diretivas_conexao.h - gcc -c src/paises.c -o build/paises.o - -gerais.o: src/gerais.c - gcc -c src/gerais.c -o build/gerais.o - -clean: - rm -rf build/*.o diff --git a/Makefile~ b/Makefile~ deleted file mode 100644 index d2973fa..0000000 --- a/Makefile~ +++ /dev/null @@ -1,16 +0,0 @@ -all: compilar - -compilar: main.o paises.o gerais.o - gcc build/paises.o build/main.o build/gerais.o -o controleestoque.bin `mysql_config --libs` - -main.o: src/main.c - gcc -c src/main.c -o build/main.o - -paises.o: src/paises.c src/diretivas_conexao.h - gcc -c src/paises.c -o build/paises.o - -gerais.o: src/gerais.c - gcc -c src/gerais.c -o build/gerais.o - -clean: - rm -rf build/*.o diff --git a/README.md b/README.md index 11198b5..d96083e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,11 @@ Ferramenta utilizada para o ensino de programação no curso de Sistemas de Info # Ferramentas utilizadas -Os projetos foram desenvolvidos utilizando apenas o *gedit*. +Os projetos foram desenvolvidos utilizando o NetBeans 8.2. + +Em ambiente Windows é necessário instalar o MinGW seguindo o manual de configuração disponvel em: + +https://netbeans.org/community/releases/80/cpp-setup-instructions.html#compilers_windows # Como compilar o projeto? diff --git a/banco_de_dados/Banco Fornecedores.sql b/banco_de_dados/Banco Fornecedores.sql new file mode 100644 index 0000000..d2b4a5d --- /dev/null +++ b/banco_de_dados/Banco Fornecedores.sql @@ -0,0 +1,10 @@ +create database controleestoque; + +use controleestoque; + +CREATE TABLE fornecedores ( + idFornecedor int NOT NULL PRIMARY KEY AUTO_INCREMENT, + nomeFornecedor varchar(100) DEFAULT NULL, + CNPJ bigint(14) DEFAULT NULL, + endFornecedor varchar(150) DEFAULT NULL + ); diff --git a/banco_de_dados/clientes.sql b/banco_de_dados/clientes.sql new file mode 100644 index 0000000..0af4394 --- /dev/null +++ b/banco_de_dados/clientes.sql @@ -0,0 +1,17 @@ +create database if not exists controleestoque; + +use controleestoque; + +create table clientes ( + id int primary key auto_increment not null, + nome varchar(200) not null, + sexo char, + data varchar(10), + endereco varchar(200), + cidade varchar(50), + cep varchar (10), + telefone varchar(15), + cpf varchar(14), + rg varchar(15), + profissao varchar(50) +); diff --git a/banco_de_dados/criacao.sql b/banco_de_dados/criacao.sql index 88b7721..0f51459 100644 --- a/banco_de_dados/criacao.sql +++ b/banco_de_dados/criacao.sql @@ -6,3 +6,45 @@ create table paises ( id int auto_increment primary key, nome varchar(100) not null ); + +create table estados ( + idEstado int auto_increment primary key, + nomeEstado varchar(100) not null, + uf varchar(2) not null, + idPais int not null, + constraint foreign key (idPais) references paises(id) +); + +create table cidades( + idCidade int not null auto_increment, + nomeCidade varchar(65) not null, + idEstado int not null, + constraint foreign key (idEstado) references estados(idEstado), + primary key (id) +); + +create table produtos ( + id int auto_increment primary key, + nome varchar(100) not null, + fornecedor varchar(100) not null, + precoCompra real not null, + precoVenda real not null, + descricao varchar(100) not null, + qtdEmEstoque int not null, + dataCadastro timestamp default current_timestamp() +); + +create table funcionarios ( + id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + nome varchar(100) NOT NULL, + sexo char, + dataNascimento varchar(10), + endereco varchar(200), + cidade varchar(50), + cep varchar (10), + telefone varchar(15), + cpf varchar(14), + rg varchar(15), + profissao varchar(50), + pisPasep varchar(12) + ); diff --git a/banco_de_dados/funcionarios.sql b/banco_de_dados/funcionarios.sql new file mode 100644 index 0000000..68eb6a9 --- /dev/null +++ b/banco_de_dados/funcionarios.sql @@ -0,0 +1,14 @@ +CREATE TABLE funcionarios ( + id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + nome varchar(100) NOT NULL, + sexo char, + dataNascimento varchar(10), + endereco varchar(200), + cidade varchar(50), + cep varchar (10), + telefone varchar(15), + cpf varchar(14), + rg varchar(15), + profissao varchar(50), + pisPasep varchar(12) + ); diff --git a/build/gerais.o b/build/gerais.o deleted file mode 100644 index 947cae9..0000000 Binary files a/build/gerais.o and /dev/null differ diff --git a/build/main.o b/build/main.o deleted file mode 100644 index 86a26a9..0000000 Binary files a/build/main.o and /dev/null differ diff --git a/build/paises.o b/build/paises.o deleted file mode 100644 index 120e835..0000000 Binary files a/build/paises.o and /dev/null differ diff --git a/codigos/ControleEstoqueC/.dep.inc b/codigos/ControleEstoqueC/.dep.inc new file mode 100644 index 0000000..38ba445 --- /dev/null +++ b/codigos/ControleEstoqueC/.dep.inc @@ -0,0 +1,5 @@ +# This code depends on make tool being used +DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES} ${TESTOBJECTFILES})) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/codigos/ControleEstoqueC/Makefile b/codigos/ControleEstoqueC/Makefile new file mode 100644 index 0000000..05de621 --- /dev/null +++ b/codigos/ControleEstoqueC/Makefile @@ -0,0 +1,128 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_PLATFORM_${CONF} platform name (current configuration) +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# build tests +build-tests: .build-tests-post + +.build-tests-pre: +# Add your pre 'build-tests' code here... + +.build-tests-post: .build-tests-impl +# Add your post 'build-tests' code here... + + +# run tests +test: .test-post + +.test-pre: build-tests +# Add your pre 'test' code here... + +.test-post: .test-impl +# Add your post 'test' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/codigos/ControleEstoqueC/cidades.c b/codigos/ControleEstoqueC/cidades.c new file mode 100644 index 0000000..d99707e --- /dev/null +++ b/codigos/ControleEstoqueC/cidades.c @@ -0,0 +1,324 @@ +#include "cidades.h" +/* + *Arquivo que contém a implementação de todo o CRUD de cidades. + * Autores: Daniel, Matheus, Patricia, Vitor + */ + +/* + * Lista todos as cidades cadastradas no banco de dados. + */ +void mostrarListagemCidades(){ + int opcao; + + do { + limparTela(); + + printf("|-----------------------------------------------------------------------------------------|\n"); + printf("| LISTAGEM DE CIDADES |\n"); + printf("|-----------------------------------------------------------------------------------------|\n"); + printf("| ID | NOME | ID ESTADO | UF |\n"); + printf("|-----------------------------------------------------------------------------------------|\n"); + + MYSQL mysql; + mysql_init(&mysql); + + if(mysql_real_connect(&mysql,SERVIDOR_BD,USUARIO_BD,SENHA_BD,NOME_BD,PORTA_BD,NULL,0)){ + if(!mysql_query(&mysql,"SELECT idCidade, nomeCidade, cidades.idEstado,estados.uf from cidades, estados where estados.idEstado = cidades.idEstado order by estados.uf,cidades.nomeCidade")){ + MYSQL_RES *resultado = mysql_store_result(&mysql); + MYSQL_ROW linha; + while((linha = mysql_fetch_row(resultado))){ + + int id = atoi(linha[0]), idEstado = atoi(linha[2]); + char *nome = linha[1]; + char *uf = linha[3]; + + printf("|%-12d|%-34s|%-14d|%-26s|\n", id, nome, idEstado,uf); + printf("|-----------------------------------------------------------------------------------------|\n"); + } + }else{ + printf("erro: %s",mysql_error(&mysql)); + } + }else{ + printf("Falha ao conectar ao banco de dados: %s",mysql_error(&mysql)); + } + + + + printf("O que deseja fazer?\n"); + printf("1) Cadastrar uma nova Cidade\n"); + printf("2) Alterar uma Cidade\n"); + printf("3) Excluir uma Cidade\n"); + printf("4) Voltar ao menu principal.\n"); + + + printf("Digite a opção desejada: "); + scanf("%d", &opcao); + getchar(); + + switch (opcao) { + case 1: + mostrarCadastroCidade(); + break; + case 2: + mostrarAlteracaoCidade(); + break; + case 3: + mostrarExclusaoCidade(); + break; + default: + printf("Opção invalida!\n"); + } + }while (opcao != 4); + + } + +/* + *Mostra a tela de cadastro da cidade + * + */ +void mostrarCadastroCidade() { + Cidade c; + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| CADASTRO DE CIDADES |\n"); + printf("|--------------------------------------------------------------------|\n"); + + printf("| NOME: "); + fgets(c.nome, sizeof(c.nome), stdin); + int tamanho = strlen(c.nome); c.nome[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + mostrarListaEstados(0); + printf("| ID ESTADO: "); + scanf("%d", &c.idEstado); + getchar(); + printf("|--------------------------------------------------------------------|\n"); + + printf("Deseja realmente criar a cidade? (S/N) "); + char resposta = getchar(); + getchar(); + + if (resposta == 'S' || resposta == 's') { + inserirCidade(c); + } + limparTela(); +} + +/* + *Insere a cidade no banco de dados. + */ +void inserirCidade(Cidade c) { + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + char sql[500]; + snprintf(sql, 500, "insert into cidades(nomeCidade, idEstado) values('%s', %d);", c.nome, c.idEstado); + + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); + + printf("Cidade cadastrada com sucesso\n"); + } else { + printf("%s\n", mysql_error(&mysql)); + } + }else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); + } +} +/* + * + */ + +void ExclusaoCidade(int codigo) { + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "delete from cidades where idCidade = %d", codigo); + + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + + printf("cidade excluída com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + +} +/* + * Lista de estados para auxiliar no cadastro de cidades + */ +void mostrarListaEstados(int segundaChamada){ + + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + printf("| LISTAGEM DE ESTADOS |\n"); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + printf("| ID | NOME | UF | ID PAÍS |\n"); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Executa o comando de consulta + if (mysql_query(&mysql, "select idEstado, nomeEstado, uf, idPais from estados order by nomeEstado") == 0) { + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + MYSQL_ROW linha; + + while ((linha = mysql_fetch_row(resultado))) { + int idEstado = atoi(linha[0]), idPais = atoi(linha[3]); + char *nomeEstado = linha[1], *uf = linha[2]; + + //Imprime + printf("| %10d | %-32s | %-22s | %40d |\n", idEstado, nomeEstado, uf, idPais); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + } + + mysql_free_result(resultado); + mysql_close(&mysql); + + if(!segundaChamada){ + printf("O estado da cidade já está cadastrado?(S/N): "); + setbuf(stdin, NULL);//Limpa o buffer do teclado. + char resposta = getchar();getchar(); + if(resposta == 'N' || resposta == 'n'){ + mostrarCadastroEstado(); + mostrarListaEstados(1); + } + } + } else { + printf("%s\n", mysql_error(&mysql)); + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + +} +void mostrarExclusaoCidade() { + int codigo; + printf("Digite o código da cidade que deseja excluir: "); + scanf("%d", &codigo); + getchar(); + + ExclusaoCidade(codigo); + getchar(); +} +void alterarCidade(Cidade c){ + + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + char sql[500]; + snprintf(sql, 500, "update cidades set nomeCidade = '%s',idEstado = %d where idCidade = %d", c.nome,c.idEstado ,c.id); + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); + + printf("Cidade alterada com sucesso\n"); + } else { + printf("%s\n", mysql_error(&mysql)); + } + } else { + printf("Falha ao conectar-se com o banco de dados: %s\n", mysql_error(&mysql)); + } + +} + +Cidade* selecionarCidade(int id){ + + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + char sql[500]; + snprintf(sql, 500, "select idCidade, nomeCidade,idEstado from cidades where idCidade = %d", id); + + if (mysql_query(&mysql, sql) == 0){ + + MYSQL_RES *resultado = mysql_store_result(&mysql); + + MYSQL_ROW linha; + int id; + int idEstado; + char *nome; + if ( (linha = mysql_fetch_row(resultado)) ){ + id = atoi(linha[0]); + idEstado = atoi(linha[2]); + + mysql_free_result(resultado); + mysql_close(&mysql); + + Cidade *c = (Cidade*) malloc(sizeof(Cidade)); + strncpy(c->nome, linha[1], 100); + c->idEstado = idEstado; + c->id = id; + + return c; + } else { + + mysql_free_result(resultado); + mysql_close(&mysql); + + return NULL; + } + } else { + printf("%s\n", mysql_error(&mysql)); + } + } else { + printf("Falha ao conectar-se com o banco de dados: %s\n", mysql_error(&mysql)); + } + getchar(); +} + +void mostrarAlteracaoCidade(){ + int id; + printf("Digite o ID da cidade que deseja alterar: "); + scanf("%d", &id); getchar(); + + Cidade *c = selecionarCidade(id); + + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| CADASTRO DE CIDADES |\n"); + printf("|--------------------------------------------------------------------|\n"); + printf("| Id: %d\n", c->id); + printf("| Nome: %s\n", c->nome); + printf("| id do Estado:%d\n",c->idEstado); + printf("|--------------------------------------------------------------------|\n"); + + printf("Digite o novo nome da cidade: "); + char nome[100]; + + int idEstado; + fgets(nome, sizeof(nome), stdin); + int tamanho = strlen(nome); nome[tamanho - 1] = '\0'; + strncpy(c->nome, nome,100); + mostrarListaEstados(0); + printf("Digite o id do estado:"); + scanf("%d",&c->idEstado); + + + + printf("|--------------------------------------------------------------------|\n"); + getchar(); + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); getchar(); + if (resposta == 'S' || resposta == 's'){ + alterarCidade(*c); + } + free(c); + getchar(); +} + diff --git a/codigos/ControleEstoqueC/cidades.h b/codigos/ControleEstoqueC/cidades.h new file mode 100644 index 0000000..4db50b9 --- /dev/null +++ b/codigos/ControleEstoqueC/cidades.h @@ -0,0 +1,35 @@ + +/* + * File: cidade.h + * Author: Daniel, Matheus, Patricia,Vitor + * + * Created on October 30, 2017, 10:13 PM + */ + +#ifndef CIDADE_H +#define CIDADE_H + +#include +#include +#include +#include +#include "estados.h" +#include "diretivas_conexao.h" +#include "gerais.h" + +typedef struct { + int id; + int idEstado; + char nome[100]; +}Cidade; + +void mostrarListagemCidades(); +void mostrarCadastroCidade(); +void mostrarAlteracaoCidade(); +void mostrarListaEstados(); +void inserirCidade(Cidade c); +void mostrarExclusaoCidade(); +void ExclusaoCidade(int codigo); +void alterarCidade(Cidade c); +Cidade* selecionarCidade(int id); +#endif /* CIDADE_H */ diff --git a/codigos/ControleEstoqueC/clientes.c b/codigos/ControleEstoqueC/clientes.c new file mode 100644 index 0000000..d5238b5 --- /dev/null +++ b/codigos/ControleEstoqueC/clientes.c @@ -0,0 +1,364 @@ +/** + * Cadastro de clientes + * + * Autores: + * Bruno Geovane + * Gilson Soares + * Juliana Gomes + * Marco Aurelio + * Ruan Miller + * + */ + +#include +#include +#include +#include "clientes.h" + +/** + * Exibe a lista de clientes já cadastrados no banco de dados + */ +void mostrarListagemClientes(){ + int opcao; + + do { + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| LISTAGEM DE CLIENTES |\n"); + printf("|--------------------------------------------------------------------|\n"); + printf("| ID | NOME | SEXO | DATA NASCIMENTO | ENDERECO | CIDADE | CEP | TELEFONE | CPF | RG | PROFISSAO |\n"); + printf("|--------------------------------------------------------------------|\n"); + + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Executa o comando de consulta + if (mysql_query(&mysql, "SELECT id, nome, sexo, data, endereco, cidade, cep, telefone, cpf, rg, profissao" + " FROM clientes ORDER BY nome") == 0){ + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ( (linha = mysql_fetch_row(resultado)) ){ + + //Obtém cada coluna na ordem + int id = atoi(linha[0]); + char *nome = linha[1]; + char *sexo = linha[2]; + char *datanasc = linha[3]; + char *endereco = linha[4]; + char *cidade = linha[5]; + char *cep = linha[6]; + char *telefone = linha[7]; + char *cpf = linha[8]; + char *rg = linha[9]; + char *profissao = linha[10]; + + //Imprime cada linha + printf("| %d | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |\n", + id, nome, sexo, datanasc, endereco, cidade, cep, telefone, cpf, rg, profissao); + } + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + printf("|--------------------------------------------------------------------|\n"); + + printf("O que deseja fazer?\n"); + printf("1) Cadastrar um novo cliente\n"); + printf("2) Alterar um cliente\n"); + printf("3) Excluir um cliente\n"); + printf("4) Voltar ao menu principal\n\n"); + + printf("Digite a opção desejada: "); + scanf("%d", &opcao); getchar(); + + switch (opcao){ + case 1: mostrarCadastroCliente(); break; + case 2: mostrarAlteracaoCliente(); break; + case 3: mostrarExclusaoCliente(); break; + } + } while (opcao != 4); +} + +/** + * Exibe a tela para cadastro de um novo cliente + */ +void mostrarCadastroCliente() { + Cliente c; + + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| CADASTRO DE CLIENTES |\n"); + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe o nome completo para cadastro: "); + fgets(c.nome, sizeof(c.nome), stdin); + int tamanho = strlen(c.nome); + c.nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe o sexo [M] ou [F]: "); + fgets(c.sexo, sizeof(c.sexo), stdin); + tamanho = strlen(c.sexo); + c.sexo[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe data de nascimento [dd/mm/aaaa]: "); + fgets(c.datanasc, sizeof(c.datanasc), stdin); + tamanho = strlen(c.datanasc); + c.datanasc[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe o endereco de residencia: "); + fgets(c.endereco, sizeof(c.endereco), stdin); + tamanho = strlen(c.endereco); + c.endereco[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe a cidade: "); + fgets(c.cidade, sizeof(c.cidade), stdin); + tamanho = strlen(c.cidade); + c.cidade[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe o CEP: "); + fgets(c.cep, sizeof(c.cep), stdin); + tamanho = strlen(c.cep); + c.cep[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe o telefone de contato [(DD)9XXXX-XXXX]: "); + fgets(c.telefone, sizeof(c.telefone), stdin); + tamanho = strlen(c.telefone); + c.telefone[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe o CPF: "); + fgets(c.cpf, sizeof(c.cpf), stdin); + tamanho = strlen(c.cpf); + c.cpf[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe o RG: "); + fgets(c.rg, sizeof(c.rg), stdin); + tamanho = strlen(c.rg); + c.rg[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("| Informe a profissao: "); + fgets(c.profissao, sizeof(c.profissao), stdin); + tamanho = strlen(c.profissao); + c.profissao[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------------|\n"); + + printf("Deseja realmente criar o cliente? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + inserirCliente(c); + } +} + +/** + * Efetua a insercao do novo cliente no banco de dados + * @param c + */ +void inserirCliente(Cliente c){ + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Cria o comando SQL para envio + char sql[2000]; + snprintf(sql, 2000, "INSERT INTO clientes(nome, sexo, data, endereco, cidade, cep, telefone, cpf, rg, profissao)" + " VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", + c.nome, c.sexo, c.datanasc, c.endereco, c.cidade, c.cep, c.telefone, c.cpf, c.rg, c.profissao); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("Cliente cadastrado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +/** + * Efetua a alteracao dos campos do cliente no banco de dados + * @param c + */ +void alterarCliente(Cliente c){ + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "UPDATE clientes SET nome = '%s' WHERE id = %d", c.nome, c.id); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("Cliente alterado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +/** + * Efetua a exclusao das informacoes do cliente do banco de dados + * @param codigo + */ +void excluirCliente(int codigo){ + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "DELETE FROM clientes WHERE id = %d", codigo); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("Cliente excluído com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +/** + * Efetua a selecao dos dados do cliente solicitado no banco de dados + * @param codigo + * @return + */ +Cliente* selecionarCliente(int codigo){ + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + char sql[500]; + snprintf(sql, 500, "SELECT id, nome FROM clientes WHERE id = %d", codigo); + + //Executa o comando de consulta + if (mysql_query(&mysql, sql) == 0){ + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + int id; + char *nome; + if ( (linha = mysql_fetch_row(resultado)) ){ + + //Obtém cada coluna na ordem + id = atoi(linha[0]); + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + Cliente cliente; + Cliente *c = &cliente; + strncpy(c->nome, linha[1], 100); + c->id = id; + + //Imprime cada linha + return c; + } else { + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + return NULL; + } + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +/** + * Exibe os dados do cliente antes de serem alterados + */ +void mostrarAlteracaoCliente(){ + int codigo; + printf("Digite o código do cliente que deseja alterar: "); + scanf("%d", &codigo); getchar(); + + Cliente *c = selecionarCliente(codigo); + + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| CADASTRO DE CLIENTES |\n"); + printf("|--------------------------------------------------------------------|\n"); + printf("| Id: %d\n", c->id); + printf("| Nome: %s\n", c->nome); + printf("|--------------------------------------------------------------------|\n"); + + printf("Digite o novo nome do cliente: "); + char nome[100]; + fgets(nome, sizeof(nome), stdin); + int tamanho = strlen(nome); nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(c->nome, nome, 100); + printf("|--------------------------------------------------------------------|\n"); + + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + alterarCliente(*c); + } + + getchar(); +} + +/** + * Exibe os dados dos clientes para selecionar qual deverá ser excluído do banco de dados + */ +void mostrarExclusaoCliente(){ + int codigo; + printf("Digite o código do cliente que deseja excluir: "); + scanf("%d", &codigo); + getchar(); + + excluirCliente(codigo); + getchar(); +} \ No newline at end of file diff --git a/codigos/ControleEstoqueC/clientes.h b/codigos/ControleEstoqueC/clientes.h new file mode 100644 index 0000000..7e1a6a1 --- /dev/null +++ b/codigos/ControleEstoqueC/clientes.h @@ -0,0 +1,57 @@ +/* + * File: clientes.h + * Author: ronneesley + * + * Created on 10 de Setembro de 2017, 21:31 + */ + +#ifndef CLIENTES_H +#define CLIENTES_H + +#include +#include +#include +#include "diretivas_conexao.h" +#include "gerais.h" + +/** + * Estrutura para representar um pais + */ +typedef struct { + int id; + char nome[100]; + char sexo[3]; + char datanasc[12]; + char endereco[200]; + char cidade[50]; + char cep[12]; + char telefone[17]; + char cpf[16]; + char rg[12]; + char profissao[50]; +} Cliente; + +/** + * Lista todos os países cadastrados no banco de dados + */ +void mostrarListagemClientes(); + +/** + * Apresenta o cadastro de países + */ +void mostrarCadastroCliente(); + +/** + * Função para inserção de um país no banco de dados + */ +void inserirCliente(Cliente c); +void excluirCliente(int codigo); +void alterarCliente(Cliente c); +Cliente* selecionarCliente(int codigo); + +void mostrarAlteracaoCliente(); +void mostrarExclusaoCliente(); +void excluirCliente(int codigo); + +#endif /* CLIENTES_H */ + diff --git a/src/diretivas_conexao.h b/codigos/ControleEstoqueC/diretivas_conexao.h similarity index 96% rename from src/diretivas_conexao.h rename to codigos/ControleEstoqueC/diretivas_conexao.h index 7bcc273..5246801 100644 --- a/src/diretivas_conexao.h +++ b/codigos/ControleEstoqueC/diretivas_conexao.h @@ -7,4 +7,4 @@ #define NOME_BD "controleestoque" #define PORTA_BD 3306 -#endif +#endif \ No newline at end of file diff --git a/codigos/ControleEstoqueC/estados.c b/codigos/ControleEstoqueC/estados.c new file mode 100644 index 0000000..f8efd92 --- /dev/null +++ b/codigos/ControleEstoqueC/estados.c @@ -0,0 +1,336 @@ +#include "estados.h" + +/** + * Lista todos os países cadastrados no banco de dados + * Autor: Alexandre, Ana Luiza, Antonio, Darvesson, Samuel + * Data: 02/10/2017 + */ + +void mostrarListagemEstados() { + int opcao; + + do { + limparTela(); + + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + printf("| LISTAGEM DE ESTADOS |\n"); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + printf("| ID | NOME | UF | ID PAÍS |\n"); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Executa o comando de consulta + if (mysql_query(&mysql, "select idEstado, nomeEstado, uf, idPais from estados order by nomeEstado") == 0) { + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + MYSQL_ROW linha; + + while ((linha = mysql_fetch_row(resultado))) { + int idEstado = atoi(linha[0]), idPais = atoi(linha[3]); + char *nomeEstado = linha[1], *uf = linha[2]; + + //Imprime + printf("| %10d | %-32s | %-22s | %40d |\n", idEstado, nomeEstado, uf, idPais); + } + + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + + printf("O que deseja fazer?\n"); + printf("1) Cadastrar um novo Estado\n"); + printf("2) Alterar um Estado\n"); + printf("3) Excluir um Estado\n"); + printf("4) Listar Países\n"); + printf("5) Voltar ao menu principal\n\n"); + + printf("Digite a opção desejada: "); + scanf("%d", &opcao); + getchar(); + + switch (opcao) { + case 1: + mostrarCadastroEstado(); + break; + case 2: + mostrarAlteracaoEstado(); + break; + case 3: + mostrarExclusaoEstado(); + break; + case 4: + mostrarListagemPaises_Cadastro(); + break; + } + } while (opcao != 5); +} + +void mostrarListagemPaises_Cadastro(){ + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| LISTAGEM DE PAÍSES |\n"); + printf("|--------------------------------------------------------------------|\n"); + printf("| ID | NOME |\n"); + printf("|--------------------------------------------------------------------|\n"); + + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Executa o comando de consulta + if (mysql_query(&mysql, "select id, nome from paises order by nome") == 0){ + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ( (linha = mysql_fetch_row(resultado)) ){ + //Obtém cada coluna na órdem + int id = atoi(linha[0]); + char *nome = linha[1]; + + //Imprime cada linha + printf("| %10d | %-53s |\n", id, nome); + } + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + printf("|--------------------------------------------------------------------|\n"); + printf("Pressione qualquer tecla para retornar ao menu \n"); + getchar(); +} + + +void mostrarCadastroEstado() { + Estado e; + + limparTela(); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + printf("| CADASTRO DE ESTADOS |\n"); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + + printf("| NOME: "); + fgets(e.nomeEstado, sizeof (e.nomeEstado), stdin); + int tamanhoNome = strlen(e.nomeEstado); + e.nomeEstado[tamanhoNome - 1] = '\0'; //Retira o \n do final da string e coloca \0 + + printf("| UF: "); + fgets(e.uf, sizeof (e.uf), stdin); + int tamanhoUf = strlen(e.uf); + e.uf[tamanhoUf ] = '\0'; //Retira o \n do final da string e coloca \0 + + printf("| ID PAÍS: "); + scanf("%d", &e.idPais); + getchar(); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + + printf("Deseja realmente criar o país? (S/N) "); + char resposta = getchar(); + getchar(); + + if (resposta == 'S' || resposta == 's') { + inserirEstado(e); + } +} + +void inserirEstado(Estado e) { + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "insert into estados(nomeEstado, uf, idPais) values('%s','%s',%d)", e.nomeEstado, e.uf, e.idPais); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + + printf("Estado cadastrado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +void alterarEstado(Estado e) { + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "update estados set nomeEstado = '%s', uf = '%s', idPais = %d where idEstado = %d", e.nomeEstado, e.uf, e.idPais, e.idEstado); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + + printf("Estado alterado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +void excluirEstado(int codigo) { + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "delete from estados where idEstado = %d", codigo); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + + printf("Estado excluído com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +Estado* selecionarEstado(int codigo) { + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + char sql[500]; + snprintf(sql, 500, "select idEstado, nomeEstado, uf, idPais from estados where idEstado = %d", codigo); + + //Executa o comando de consulta + if (mysql_query(&mysql, sql) == 0) { + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + int idEstado; + char *nomeEstado; + char *uf; + int idPais; + if ((linha = mysql_fetch_row(resultado))) { + //Obtém cada coluna na órdem + idEstado = atoi(linha[0]); + idPais = atoi(linha[3]); + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + Estado *e = (Estado *) malloc(sizeof(Estado)); // alocação dinâmica de memória + strncpy(e->nomeEstado, linha[1], 100); + strncpy(e->uf, linha[2], 3); + e->idEstado = idEstado; + e->idPais = idPais; + + //Imprime cada linha + return e; + } else { + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + return NULL; + } + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +void mostrarAlteracaoEstado() { + int codigo; + printf("Digite o código do estado que deseja alterar: "); + scanf("%d", &codigo); + getchar(); + + Estado *e = selecionarEstado(codigo); + + limparTela(); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + printf("| CADASTRO DE ESTADO |\n"); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + printf("| Id: %d\n", e->idEstado); + printf("| Nome: %s\n", e->nomeEstado); + printf("| UF: %s\n", e->uf); + printf("| idPais: %d\n", e->idPais); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + + printf("Digite o novo nome do estado: "); + char nomeEstado[100]; + fgets(nomeEstado, sizeof (nomeEstado), stdin); + int tamanhoNome = strlen(nomeEstado); + nomeEstado[tamanhoNome - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(e->nomeEstado, nomeEstado, 100); + + printf("Digite o novo uf do estado: "); + char uf[3]; + fgets(uf, sizeof (uf), stdin); + int tamanhoUf = strlen(uf); + uf[tamanhoUf] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(e->uf, uf, 3); + + printf("Digite o novo id do Pais: "); + scanf("%d", &e->idPais); + getchar(); + printf("|-------------------------------------------------------------------------------------------------------------------|\n"); + + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); + getchar(); + + if (resposta == 'S' || resposta == 's') { + alterarEstado(*e); + } + + getchar(); +} + +void mostrarExclusaoEstado() { + int codigo; + printf("Digite o código do estado que deseja excluir: "); + scanf("%d", &codigo); + getchar(); + + excluirEstado(codigo); +} diff --git a/codigos/ControleEstoqueC/estados.h b/codigos/ControleEstoqueC/estados.h new file mode 100644 index 0000000..d913991 --- /dev/null +++ b/codigos/ControleEstoqueC/estados.h @@ -0,0 +1,32 @@ +#ifndef ESTADOS_H +#define ESTADOS_H + +#include +#include +#include +#include "diretivas_conexao.h" +#include "gerais.h" + +typedef struct { + int idEstado; + char nomeEstado[100]; + char uf[3];// enquanto o limite do vetor estava como 2 o cadastro não funcionava + int idPais; +} Estado; + +void mostrarListagemEstados(); + +void mostrarListagemPaises_Cadastro(); + +void mostrarCadastroEstado(); + +void inserirEstado(Estado e); +void excluirPais(int codigo); +void alterarEstado(Estado e); +Estado* selecionarEstado(int codigo); + +void mostrarAlteracaoEstado(); +void mostrarExclusaoEstado(); +void excluirEstado(int codigo); + +#endif diff --git a/codigos/ControleEstoqueC/fornecedores.c b/codigos/ControleEstoqueC/fornecedores.c new file mode 100644 index 0000000..a6b2368 --- /dev/null +++ b/codigos/ControleEstoqueC/fornecedores.c @@ -0,0 +1,645 @@ +/** + * File: fornecedores.c + * Author: Andreia, Ana Paula, Láila e Welliton + * + * Created on 31 de Outubro de 2017, 12:17 + */ + +#include"fornecedores.h" + +//Borda Padrão dos Menus +void BordaPadrao(){ + + printf("||==============================================================================||\n"); +} + + +// Menu Principal do Cadastro de Fornecedores. +void MenuFornecedores(){ + + int opcao; + + do{ + + limparTela(); + BordaPadrao(); + printf("||\t\t\tO QUE DESEJA FAZER?\t\t\t\t ||\n"); + BordaPadrao(); + printf("\n"); + printf("1) Consultar Fornecedores\n"); + printf("2) Cadastrar Fornecedor\n"); + printf("3) Alterar Fornecedor\n"); + printf("4) Excluir Fornecedor\n"); + printf("5) Voltar ao Menu Principal\n\n"); + + printf("Digite a opção desejada: "); + scanf("%d", &opcao); getchar(); + + switch (opcao){ + case 1: ConsultarFornecedores(); break; + case 2: CadastrarFornecedor(); break; + case 3: MenuAlteracao(); break; + case 4: MenuExclusao(); break; + + } + } while (opcao != 5); + + + } + +// Sub Menu para consultar os Fornecedores +void ConsultarFornecedores(){ + + int opcao; + + do{ + limparTela(); + BordaPadrao(); + printf("||\t\t\tCONSULTAR FORNECEDORES\t\t\t\t ||\n"); + BordaPadrao(); + printf("\n"); + printf("1) Por Nome\n"); + printf("2) Por ID\n"); + printf("3) Para Voltar ao Menu Anterior"); + printf("\n"); + printf("\n"); + printf("Digite a opção desejada: "); + scanf("%d", &opcao); getchar(); + + switch (opcao){ + case 1: consultarNome(); break; + case 2: consultarId();break; + } + + }while (opcao !=3); + + +} + +// Consulta os Forncedores por ordem de Nome +void consultarNome(){ + + limparTela(); + BordaPadrao(); + printf("||\t\tCONSULTA FORNECEDORES POR ORDEM DE NOME\t\t\t ||\n"); + BordaPadrao(); + printf("||CÓDIGO | RAZÃO SOCIAL | CNPJ |ENDEREÇO ||\n"); + BordaPadrao(); + + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Executa o comando de consulta + if (mysql_query(&mysql, "select idFornecedor, nomeFornecedor, CNPJ, endFornecedor from fornecedores order by nomeFornecedor") == 0){ + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ( (linha = mysql_fetch_row(resultado)) ){ + + //Obtém cada coluna na órdem + int id = atoi(linha[0]); + char *nome = linha[1]; + ulong cnpj = atoll(linha[2]); + char *end = linha[3]; + + //Imprime cada linha + printf("|| %5d | %-25s | %-14llu |%-24s ||\n", id, nome, cnpj, end); + } + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + BordaPadrao(); + printf("\n"); + printf("Pressione para voltar ao Menu Anterior:"); + getchar(); + +} + +//Consulta os fornecedores por ordem de ID +void consultarId(){ + + limparTela(); + BordaPadrao(); + printf("||\t\tCONSULTA FORNECEDORES POR ORDEM DE ID\t\t\t ||\n"); + BordaPadrao(); + printf("||CÓDIGO | RAZÃO SOCIAL | CNPJ |ENDEREÇO ||\n"); + BordaPadrao(); + + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Executa o comando de consulta + if (mysql_query(&mysql, "select idFornecedor, nomeFornecedor, CNPJ, endFornecedor from fornecedores order by idFornecedor") == 0){ + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ( (linha = mysql_fetch_row(resultado)) ){ + + //Obtém cada coluna na órdem + int id = atoi(linha[0]); + char *nome = linha[1]; + ulong cnpj = atoll(linha[2]); + char *end = linha[3]; + + //Imprime cada linha + printf("|| %5d | %-25s | %-14llu |%-24s ||\n", id, nome, cnpj, end); + } + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + BordaPadrao(); + printf("\n"); + printf("Pressione para voltar ao Menu Anterior:"); + getchar(); + + +} + +// Função para cadastrar os Fornecedores +void CadastrarFornecedor() { + + Fornecedores f; + + limparTela(); + BordaPadrao(); + printf("| CADASTRO DE FORNECEDORES |\n"); + BordaPadrao(); + + printf("NOME DO FORNECEDOR: "); + fgets(f.nomeFornecedor, sizeof(f.nomeFornecedor), stdin); + int tamanho = strlen(f.nomeFornecedor); f.nomeFornecedor[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + + printf("\n"); + printf("CNPJ DO FORNECEDOR: "); + scanf("%llu", &f.CNPJ); + getchar(); + printf("\n"); + + printf("ENDEREÇO DO FORNECEDOR: "); + fgets(f.endereco, sizeof(f.endereco), stdin); + int tamanhoend = strlen(f.endereco); f.endereco[tamanhoend - 1] = '\0'; //Retira o \n do final da string e coloca \0 + + + BordaPadrao(); + + printf("Deseja realmente cadastrar o fornecedor? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + inserirFornecedores(f); + } + } + + +// Função para inserir um Fornecedor no Banco de Dados +void inserirFornecedores(Fornecedores f){ + + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "insert into fornecedores(nomeFornecedor, CNPJ, endFornecedor) values('%s', '%llu', '%s')", f.nomeFornecedor, f.CNPJ, f.endereco); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("\n"); + printf("----- Fornecedor cadastrado com sucesso -----\n\n"); //Exibe mensagem de sucesso + printf("Pressione a tecla para continuar"); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + + } + getchar(); +} + + +// Mostra Sub Menu da opção de Ateração +void MenuAlteracao(){ + + int opcao; + + do{ + limparTela(); + BordaPadrao(); + printf("||\t\t\tMENU ALTERAÇÃO\t\t\t\t\t ||\n"); + BordaPadrao(); + printf("\n"); + printf("1) Consultar Fornecedores\n"); + printf("2) Alterar Fornecedor\n"); + printf("3) Para Voltar ao Menu Anterior"); + printf("\n\n"); + printf("Digite a opção desejada: "); + scanf("%d", &opcao); getchar(); + + switch (opcao){ + case 1: ConsultarPadrao(); break; + case 2: MostrarAlteracaoFornecedores();break; + } + + }while (opcao !=3); + +} + +// Função para Alterar um Fornecedor +void MostrarAlteracaoFornecedores(){ + + int codigo; + limparTela(); + BordaPadrao(); + printf("||\t\t\tALTERARAÇÃO DE FORNECEDORES\t\t\t ||\n"); + BordaPadrao(); + printf("\n"); + printf("Digite o código do Fornecedor que deseja alterar: "); + scanf("%d", &codigo); getchar(); + + // Consulta Apenas o Código que foi selecionado do Fornecedor + Fornecedores *f = SelecionarFornecedores(codigo); + + limparTela(); + BordaPadrao(); + printf("||\t\t\tALTERARAÇÃO DE FORNECEDORES\t\t\t ||\n"); + BordaPadrao(); + printf("|| Id: %d\n", f->id); + printf("|| Nome: %s\n", f->nomeFornecedor); + printf("|| CNPJ: %llu\n", f->CNPJ); + printf("|| Endereço: %s\n", f->endereco); + BordaPadrao(); + printf("\n"); + + int codigoAlterar; + + // Escolha do campo a ser alterado no cadastro de Fornecedores + printf("Digite: 1)Para Alterar o Nome - 2)Para Alterar o CNPJ - 3)Para alterar endereço: "); + scanf("%d", &codigoAlterar);getchar(); + printf("\n"); + + // Alteração do campo Nome do Cadastro de Fornecedores + if (codigoAlterar == 1){ + printf("Digite o novo nome do fornecedor: "); + char nome[100]; + fgets(nome, sizeof(nome), stdin); + int tamanho = strlen(nome); nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->nomeFornecedor, nome, 100); + + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + AlterarNomeFornecedores(*f); + } + } + + // Alteração do campo CNPJ do Cadastro de Fornecedores + if (codigoAlterar == 2){ + printf("Digite o novo CNPJ do fornecedor: "); + scanf("%llu", &f->CNPJ); getchar(); + + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + AlterarCnpjFornecedores(*f); + } + } + // Alteração do campo endereço do cadastro de fornecedores + if (codigoAlterar == 3){ + printf("Digite o novo endereço do fornecedor: "); + char end[150]; + fgets(end, sizeof(end), stdin); + int tamanhoend = strlen(end); end[tamanhoend - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->endereco, end, 150); + + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + AlterarEndFornecedores(*f); + } + } + + // Desalocar os valores incluídos com a função malloc + free(f); + +} + + +// Mostra as informações do fornecedor a ser alterado antes de executar a alteração +Fornecedores* SelecionarFornecedores(int codigo){ + + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + char sql[500]; + snprintf(sql, 500, "select idFornecedor, nomeFornecedor, CNPJ, endFornecedor from fornecedores where idFornecedor = %d", codigo); + + //Executa o comando de consulta + if (mysql_query(&mysql, sql) == 0){ + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + + MYSQL_ROW linha; + int id; + char *nome; + ulong cnpj; + char *end; + + + if ( (linha = mysql_fetch_row(resultado)) ){ + + //Obtém cada coluna na órdem + id = atoi(linha[0]); + cnpj = atoll(linha[2]); + + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + // Alocação Dinamica de Memória. + Fornecedores *f = (Fornecedores *) malloc(sizeof(Fornecedores)); + strncpy(f->nomeFornecedor, linha[1], 100); + strncpy(f->endereco, linha[3], 150); + f->CNPJ = cnpj; + f->id = id; + + //Imprime cada linha + return f; + } else { + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + return NULL; + } + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +// Função para alterar o Nome do Fornecedor no Banco de Dados. +void AlterarNomeFornecedores(Fornecedores f){ + + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "update fornecedores set nomeFornecedor = '%s' where idFornecedor = %d", f.nomeFornecedor, f.id); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("\n"); + printf("----- Fornecedor alterado com sucesso -----\n\n"); //Exibe mensagem de sucesso + printf("Pressione a tecla para continuar"); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + getchar(); +} + +// Função para alterar o Cnpj do Fornecedor no Banco de Dados. +void AlterarCnpjFornecedores(Fornecedores f){ + + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "update fornecedores set CNPJ = %llu where idFornecedor = %d", f.CNPJ, f.id); + + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("\n"); + printf("----- Fornecedor alterado com sucesso -----\n\n"); //Exibe mensagem de sucesso + printf("Pressione a tecla para continuar"); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + getchar(); +} + +// Função para alterar o Nome do Fornecedor no Banco de Dados. +void AlterarEndFornecedores(Fornecedores f){ + + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "update fornecedores set endFornecedor = '%s' where idFornecedor = %d", f.endereco, f.id); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("\n"); + printf("----- Fornecedor alterado com sucesso -----\n\n"); //Exibe mensagem de sucesso + printf("Pressione a tecla para continuar"); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + getchar(); +} + +// Mostra Sub Menu da opção de exclusão +void MenuExclusao(){ + + int opcao; + + do{ + limparTela(); + BordaPadrao(); + printf("||\t\t\tMENU EXCLUSÃO\t\t\t\t\t ||\n"); + BordaPadrao(); + printf("\n"); + printf("1) Consultar Fornecedores\n"); + printf("2) Excluir Fornecedor\n"); + printf("3) Para Voltar ao Menu Anterior"); + printf("\n\n"); + printf("Digite a opção desejada: "); + scanf("%d", &opcao); getchar(); + + switch (opcao){ + case 1: ConsultarPadrao(); break; + case 2: ExcluirFornecedor();break; + } + + }while (opcao !=3); + +} + + // Consulta Fornecedores dentro da Função Excluir e Alterar Fornecedores +void ConsultarPadrao(){ + + limparTela(); + BordaPadrao(); + printf("||\t\tCONSULTA FORNECEDORES\t\t\t\t\t ||\n"); + BordaPadrao(); + printf("||CÓDIGO | RAZÃO SOCIAL\t\t\t\t\t\t\t ||\n"); + BordaPadrao(); + + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Executa o comando de consulta + if (mysql_query(&mysql, "select idFornecedor, nomeFornecedor from fornecedores order by idFornecedor") == 0){ + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ( (linha = mysql_fetch_row(resultado)) ){ + + //Obtém cada coluna na ordem + int id = atoi(linha[0]); + char *nome = linha[1]; + + //Imprime cada linha + printf("|| %5d | %-68s ||\n", id, nome); + } + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + BordaPadrao(); + printf("\n"); + printf("Pressione para voltar ao Menu Anterior:"); + getchar(); +} + + +// Função para Excluir os Fornecedores +void ExcluirFornecedor(){ + + int codigo; + printf("Digite o código do Fornecedor que deseja excluir: "); + scanf("%d", &codigo); + getchar(); + printf("\n"); + printf("Tem certeza que deseja Excluir o Fornecedor %d? (S/N)", codigo); + + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + + DeletarFornecedor(codigo); + + } +} + +// Função que excluir o Fornecedor do Banco de Dados +void DeletarFornecedor(int codigo){ + + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "delete from fornecedores where idFornecedor = %d", codigo); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("\n"); + printf("----- Fornecedor excluído com sucesso -----\n\n"); //Exibe mensagem de sucesso + printf("Pressione a Tecla para continuar"); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + getchar(); + + } \ No newline at end of file diff --git a/codigos/ControleEstoqueC/fornecedores.h b/codigos/ControleEstoqueC/fornecedores.h new file mode 100644 index 0000000..05d0058 --- /dev/null +++ b/codigos/ControleEstoqueC/fornecedores.h @@ -0,0 +1,79 @@ +/** + * File: fornecedores.h + * Author: Andreia, Ana Paula, Láila e Welliton + * + * Created on 31 de Outubro de 2017, 12:17 + */ + +#ifndef FORNECEDORES_H +#define FORNECEDORES_H + +#include +#include +#include +#include "diretivas_conexao.h" +#include "gerais.h" + +// Tipo Variável para receber o campo CNPJ do Banco de Dados +typedef unsigned long long int ulong; + +// Estrutura Fornecedores +typedef struct { + int id; + char nomeFornecedor[100]; + ulong CNPJ; + char endereco[150]; +} Fornecedores; + +// Menu Principal do Cadastro de Fornecedores +void MenuFornecedores(); + +// Acessa o sub Menu de consultas +void ConsultarFornecedores(); + +// Consulta os Fornecedores por ordem de nome +void consultarNome(); + +// consulta os Fornecedores por ordem de ID +void consultarId(); + +// Mostra Sub Menu da opção de exclusão de Fornecedores +void MenuExclusao(); + +// Consulta Fornecedores dentro da Função Excluir e Alterar Fornecedores +void ConsultarPadrao(); + +// Função para Excluir os Fornecedores +void ExcluirFornecedor(); + +// Função que excluir o Fornecedor do Banco de Dados +void DeletarFornecedor(int codigo); + +// Função para cadastrar os Fornecedores +void CadastrarFornecedor(); + +// Função para inserir um Fornecedor no Banco de Dados +void inserirFornecedores(Fornecedores f); + +// Mostra Sub Menu da opção de Alteração de Fornecedores +void MenuAlteracao(); + +// Função para Alterar um Fornecedor +void MostrarAlteracaoFornecedores(); + +// Função para alterar o nome do Fornecedor no Banco de Dados. +void AlterarNomeFornecedores(Fornecedores f); + +// Função para alterar o Cnpj do Fornecedor no Banco de Dados. +void AlterarCnpjFornecedores(Fornecedores f); + +// Função para alterar o Endereço do Fornecedor no Banco de Dados. +void AlterarEndFornecedores(Fornecedores f); + +// Mostra as informações do fornecedor a ser alterado antes de executar a alteração +Fornecedores* SelecionarFornecedores(int codigo); + + + +#endif /* FORNECEDORES_H */ + diff --git a/codigos/ControleEstoqueC/funcionarios.c b/codigos/ControleEstoqueC/funcionarios.c new file mode 100644 index 0000000..eee0930 --- /dev/null +++ b/codigos/ControleEstoqueC/funcionarios.c @@ -0,0 +1,478 @@ + +#include "funcionarios.h" + +//Andressa Viana +void mostrarListagemFuncionarios() { + int opcao; + + do { + limparTela(); + printf("|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n"); + printf("| LISTAGEM DE FUNCIONARIOS |\n"); + printf("|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n"); + printf("| ID |NOME | SEXO |DATA DE NASCIMENTO |ENDEREÇO |CIDADE |CEP | TELEFONE | CPF |RG | PROFISSAO | PIS/PASEP |\n"); + printf("|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n"); + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Executa o comando de consulta + + if (mysql_query(&mysql, "SELECT id, nome, sexo, dataNascimento, endereco, cidade, cep,telefone, cpf,rg,profissao, pisPasep from funcionarios") == 0) { + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ((linha = mysql_fetch_row(resultado))) { + //Obtém cada coluna na órdem + int id = atoi(linha[0]); + char *nome = linha[1]; + char *sexo = linha[2]; + char *datanascimento = linha[3]; + char *endereco = linha[4]; + char *cidade = linha[5]; + char *cep = linha[6]; + char *telefone = linha[7]; + char *cpf = linha[8]; + char *rg = linha[9]; + char *profissao = linha[10]; + char *pispasep = linha[11]; + + //atoi = converter para "string" para int + //atof = converter para 'string' para double + + //Imprime cada linha + + printf("| %d | %-10s |%-4s |%-19s|%-10s|%-7s|%-8s | %-13s | %-10s | %-10s| %-14s |%-9s|\n", + id, nome, sexo, datanascimento, endereco, cidade, cep, telefone, cpf, rg, profissao, pispasep); + + } + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + printf("|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n"); + printf("|O que deseja fazer?\n"); + printf("|1) Cadastrar um novo Funcionario\n"); + printf("|2) Alterar um Funcionario\n"); + printf("|3) Excluir um Funcionario\n"); + printf("|4) Voltar ao menu principal\n\n"); + printf("Digite a opção desejada: "); + scanf("%d", &opcao); + getchar(); + + switch (opcao) { + case 1: mostrarCadastroFuncionario(); + break; + case 2: mostrarAlteracaoFuncionario(); + break; + case 3: mostrarExclusaoFuncionario(); + break; + + } + } while (opcao != 4); +} +//Andressa Viana +void mostrarCadastroFuncionario() { + Funcionarios f; + + limparTela(); + printf("|---------------------------------------------------------------|\n"); + printf("| CADASTRO DE FUNCIONARIOS |\n"); + printf("|---------------------------------------------------------------|\n"); + + + + //fgets == Lê caracteres de fluxo e armazena-os como uma seqüência até (num-1) + //strlen == calcula o comprimento da string str, mas não incluindo o caractere nulo de término. + printf("| INFORME O NOME DO FUNCIONARIO: "); + fgets(f.nome, sizeof (f.nome), stdin); + int tamanho = strlen(f.nome); + f.nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + + + printf("| INFORME O SEXO (F/M): "); + fgets(f.sexo, sizeof (f.sexo), stdin); + tamanho = strlen(f.sexo); + f.sexo[tamanho - 1] = '\0'; + + + printf("| INFORME A DATA DE NASCIMENTO (XX/XX/XXXX): "); + fgets(f.datanascimento, sizeof (f.datanascimento), stdin); + tamanho = strlen(f.datanascimento); + f.datanascimento[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + + + printf("| INFORME O ENDEREÇO: "); + fgets(f.endereco, sizeof (f.endereco), stdin); + tamanho = strlen(f.endereco); + f.endereco[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + + + printf("| INFORME A CIDADE: "); + fgets(f.cidade, sizeof (f.cidade), stdin); + tamanho = strlen(f.cidade); + f.cidade[tamanho - 1] = '\0'; + + + printf("| INFORME O CEP XXXXX-XXX: "); + fgets(f.cep, sizeof (f.cep), stdin); + tamanho = strlen(f.cep); + f.cep[tamanho - 1] = '\0'; + + + printf("| INFORME O TELEFONE (XX) XXXXX-XXXX: "); + fgets(f.telefone, sizeof (f.telefone), stdin); + tamanho = strlen(f.telefone); + f.telefone[tamanho - 1] = '\0'; + + + printf("| INFORME O CPF : "); + fgets(f.cpf, sizeof (f.cpf), stdin); + tamanho = strlen(f.cpf); + f.cpf[tamanho - 1] = '\0'; + + + printf("| INFORME O RG XXXXXXX: "); + fgets(f.rg, sizeof (f.rg), stdin); + tamanho = strlen(f.rg); + f.rg[tamanho - 1] = '\0'; + + + + printf("| INFORME A PROFISSÃO: "); + fgets(f.profissao, sizeof (f.profissao), stdin); + tamanho = strlen(f.profissao); + f.profissao[tamanho - 1] = '\0'; + + + printf("| INFORME O PIS/PASEP: "); + fgets(f.pispasep, sizeof (f.pispasep), stdin); + tamanho = strlen(f.pispasep); + f.pispasep[tamanho - 1] = '\0'; + printf("|--------------------------------------------------------------|\n"); + + printf("Deseja realmente cadastrar esse funcionario? (S/N) "); + char resposta = getchar(); + getchar(); + + + if (resposta == 'S' || resposta == 's') { + inserirFuncionario(f); + } else { + mostrarListagemFuncionarios(); + } +} + +//Bruno Qualhato +Funcionarios* selecionarFuncionario(int codigo) { + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + char sql[2000]; + snprintf(sql, 2000, "select id, nome, sexo, dataNascimento, endereco, cidade, cep, telefone, cpf, rg, profissao, pisPasep from funcionarios where id = %d", codigo); + + //Executa o comando de consulta + if (mysql_query(&mysql, sql) == 0) { + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + + int id; + + if ((linha = mysql_fetch_row(resultado))) { + //Obtém cada coluna na órdem + id = atoi(linha[0]); + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + Funcionarios funcionarios; + Funcionarios *f = &funcionarios; + + strncpy(f->sexo, linha[2], 100); + strncpy(f->datanascimento, linha[3], 100); + strncpy(f->endereco, linha[4], 100); + strncpy(f->cidade, linha[5], 100); + strncpy(f->cep, linha[6], 100); + strncpy(f->telefone, linha[7], 100); + strncpy(f->cpf, linha[8], 100); + strncpy(f->rg, linha[9], 100); + strncpy(f->profissao, linha[10], 100); + strncpy(f->nome, linha[1], 100); + strncpy(f->pispasep, linha[11], 100); + f->id = id; + + //Imprime cada linha + + return f; + + } else { + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + return NULL; + } + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} +//Bruno Qualhato +void mostrarAlteracaoFuncionario() { + int codigo; + + printf("Digite o código do Funcionarios que deseja alterar: "); + scanf("%d", &codigo); + getchar(); + + Funcionarios *f = selecionarFuncionario(codigo); + + limparTela(); + + printf("|--------------------------------------------------------------------|\n"); + printf("| EDIÇÃO DE FUNCIONARIOS |\n"); + printf("|--------------------------------------------------------------------|\n"); + printf("| Id: %d\n", f->id); + printf("| Nome: %s\n", f->nome); + printf("| Sexo: %s\n", f->sexo); + printf("| Data de Nascimento: %s\n", f->datanascimento); + printf("| Endereço: %s\n", f->endereco); + printf("| Cidade : %s\n", f->cidade); + printf("| Cep: %s\n", f->cep); + printf("| Telefone: %s\n", f->telefone); + printf("| Cpf: %s\n", f->cpf); + printf("| rg: %s\n", f->rg); + printf("| Profissão: %s\n", f->profissao); + printf("| PisPasep: %s\n", f->pispasep); + printf("|-------------------------------------------------------------------|\n"); + + /* + *strncpy == copia até n caracteres da string apontada. + *Em um caso em que o comprimento de src seja menor que o de n + *o restante será preenchido com bytes nulos + */ + + //fgets == Lê caracteres de fluxo e armazena-os como uma seqüência até (num-1) + + //strlen == calcula o comprimento da string str, mas não incluindo o caractere nulo de término. + printf("|--------------------------------------------------------------------|\n"); + printf("| Digite o novo nome do Funcionario: "); + char nome[100]; + fgets(nome, sizeof (nome), stdin); + int tamanho = strlen(nome); + nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->nome, nome, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| Digite o novo sexo do Funcionario: "); + char sexo[100]; + fgets(sexo, sizeof (sexo), stdin); + tamanho = strlen(sexo); + sexo[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->sexo, sexo, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| Digite a nova Data de Nascimento do Funcionario: "); + char datanascimento[100]; + fgets(datanascimento, sizeof (datanascimento), stdin); + tamanho = strlen(datanascimento); + datanascimento[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->datanascimento, datanascimento, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| Digite novo Endereço do Funcionario: "); + char endereco[100]; + fgets(endereco, sizeof (endereco), stdin); + tamanho = strlen(endereco); + endereco[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->endereco, endereco, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| Digite a nova Cidade do Funcionario: "); + char cidade[100]; + fgets(cidade, sizeof (cidade), stdin); + tamanho = strlen(cidade); + cidade[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->cidade, cidade, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| Digite o novo CEP: "); + char cep[100]; + fgets(cep, sizeof (cep), stdin); + tamanho = strlen(cep); + cep[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->cep, cep, 100); + printf("|--------------------------------------------------------------------|\n"); + + + + printf("| Digite o novo Telefone: "); + char telefone[100]; + fgets(telefone, sizeof (telefone), stdin); + tamanho = strlen(telefone); + telefone[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->telefone, telefone, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| Digite o novo CPF: "); + char cpf[100]; + fgets(cpf, sizeof (cpf), stdin); + tamanho = strlen(cpf); + cpf[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->cpf, cpf, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| INFORME O RG XXXXXXX: "); + char rg[100]; + fgets(rg, sizeof (rg), stdin); + tamanho = strlen(rg); + rg[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->rg, rg, 100); + printf("|--------------------------------------------------------------------|\n"); + + + + printf("| Digite a nova Profissão do Funcionario: "); + char profissao[100]; + fgets(profissao, sizeof (profissao), stdin); + tamanho = strlen(profissao); + profissao[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->profissao, profissao, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("| Digite o novo PIS/PASEP: "); + char pis[100]; + fgets(pis, sizeof (pis), stdin); + tamanho = strlen(pis); + cpf[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(f->pispasep, pis, 100); + printf("|--------------------------------------------------------------------|\n"); + + + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); + getchar(); + + if (resposta == 'S' || resposta == 's') { + alterarFuncionario(*f); + } + + getchar(); + +} + +//Denis Vitoriano +void inserirFuncionario(Funcionarios f) { + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Cria o comando SQL para envio + char sql[2000]; + + snprintf(sql, 2000, "INSERT INTO funcionarios(nome, sexo, dataNascimento,endereco, cidade, cep,telefone, cpf, rg, profissao, pisPasep)" + " values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" + , f.nome, f.sexo, f.datanascimento, f.endereco, f.cidade, f.cep, f.telefone, f.cpf, f.rg, f.profissao, f.pispasep); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + + printf("Funcionario cadastrado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} +//Denis Vitoriano +void alterarFuncionario(Funcionarios f) { + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Cria o comando SQL para envio + char sql[2000]; + snprintf(sql, 2000, "update funcionarios set pisPasep = '%s',profissao = '%s',rg = '%s',cpf = '%s',telefone = '%s',cep = '%s',cidade = '%s',endereco = '%s',dataNascimento = '%s', sexo = '%s', nome = '%s' where id = %d", + f.pispasep, f.profissao, f.rg, f.cpf, f.telefone, f.cep, f.cidade, f.endereco, f.datanascimento, f.sexo, f.nome, f.id); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + + printf("funcionario alterado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +//Luana Queiros +void ExclusaoFuncionario(int codigo) { + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "delete from funcionarios where id = %d", codigo); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + + printf("Funcionario excluído com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + +} +//Luana Queiros +void mostrarExclusaoFuncionario() { + int codigo; + printf("Digite o código do funcionario que deseja excluir: "); + scanf("%d", &codigo); + getchar(); + + ExclusaoFuncionario(codigo); + getchar(); +} + + diff --git a/codigos/ControleEstoqueC/funcionarios.h b/codigos/ControleEstoqueC/funcionarios.h new file mode 100644 index 0000000..1e682d9 --- /dev/null +++ b/codigos/ControleEstoqueC/funcionarios.h @@ -0,0 +1,72 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/* + * File: funcionarios.h + * Author: brunoqualhato + * + * Created on 2 de Novembro de 2017, 21:11 + */ + +#ifndef FUNCIONARIOS_H +#define FUNCIONARIOS_H + +#include +#include +#include +#include "diretivas_conexao.h" +#include "gerais.h" + +typedef struct { + int id; + char nome[100]; + char sexo[3]; + char datanascimento[20]; + char endereco[200]; + char cidade[50]; + char cep[11]; + char telefone[13]; + char cpf[13]; + char rg[11]; + char profissao[100]; + char pispasep[12]; + +} Funcionarios; + + +/** + * Lista todos os funcinarios cadastrados no banco de dados + */ +void mostrarListagemFuncionarios();//OK + +/** + * Apresenta o cadastro de funcionario + */ +void mostrarCadastroFuncionario();//OK + +/** + * Função para inserção de um funcionario no banco de dados + */ +void inserirFuncionario(Funcionarios f);//OK + +/** + * Edita funcionario cadastrados no banco de dados + */ +void alterarFuncionario(Funcionarios f); + + /** + * Exclui funcionario cadastrado no banco de dados + */ +void ExclusaoFuncionario(int codigo); + +Funcionarios* selecionarFuncionario(int codigo); + +void mostrarAlteracaoFuncionario(); + +void mostrarExclusaoFuncionario(); + + +#endif /* FUNCIONARIOS_H */ \ No newline at end of file diff --git a/codigos/ControleEstoqueC/gerais.c b/codigos/ControleEstoqueC/gerais.c new file mode 100644 index 0000000..8e831d3 --- /dev/null +++ b/codigos/ControleEstoqueC/gerais.c @@ -0,0 +1,33 @@ +#include "gerais.h" +#include "paises.h" +#include "produtos.h" +#include +#include + + +/** + * Limpa a tela + * Autor: Ronneesley Moura Teles + * Data: 15/08/2017 + */ +void limparTela(){ + system("clear"); +} + +/* + Lê uma string do teclado coletando letra por letra com o getchar + e inserindo em cada posição do vetor quando não se tem um '\n' nem '\0' + e se a String não esgotou sua capacidade (tamanho-1). + ao fim insere '\0' após a última letra. + -João Neto- + */ +void leString(char s[], int tam) { + char letra; + int i; + letra = getchar(); + for (i = 0; (letra != 10 && letra != 13) && i < tam - 1; i++) { + s[i] = letra; + letra = getchar(); + } + s[i] = '\0'; +} diff --git a/src/gerais.h b/codigos/ControleEstoqueC/gerais.h similarity index 55% rename from src/gerais.h rename to codigos/ControleEstoqueC/gerais.h index ecac83b..7ea6841 100644 --- a/src/gerais.h +++ b/codigos/ControleEstoqueC/gerais.h @@ -8,4 +8,10 @@ */ void limparTela(); -#endif +/** + * Lê um vetor de caractere. + */ +void leString(char s[], int tam); + + +#endif \ No newline at end of file diff --git a/codigos/ControleEstoqueC/main.c b/codigos/ControleEstoqueC/main.c new file mode 100644 index 0000000..4ddc97c --- /dev/null +++ b/codigos/ControleEstoqueC/main.c @@ -0,0 +1,62 @@ +#include +#include "cidades.h" +#include "paises.h" +#include "estados.h" +#include "clientes.h" +#include "gerais.h" +#include "funcionarios.h" +#include "fornecedores.h" +#include "produtos.h" + +/** + * Mostra o menu principal do sistema + * Autor: Ronneesley Moura Teles + * Data: 15/08/2017 + */ +void mostrarMenuPrincipal(){ + int opcao; //Opção a ser escolhida no menu + + do { + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| SISTEMA DE CONTROLE DE ESTOQUE |\n"); + printf("|--------------------------------------------------------------------|\n"); + + printf("1) Cadastro de países\n"); + printf("2) Cadastro de estados\n"); + printf("3) Cadastro de cidades\n"); + printf("4) Cadastro de clientes\n"); + printf("5) Cadastro de produtos\n"); + printf("6) Cadastro de fornecedores\n"); + printf("7) Cadastro de representantes\n"); + printf("8) Cadastro de funcionários\n"); + printf("9) Sair\n\n"); + + printf("Digite a opção desejada: "); + scanf("%d", &opcao); getchar(); + + switch (opcao){ + case 1: mostrarListagemPaises(); break; + case 2: mostrarListagemEstados(); break; + case 3: mostrarListagemCidades(); break; + case 4: mostrarCadastroCliente(); break; + case 5: mostraMenuProdutos(); break; + case 6: MenuFornecedores(); break; + case 8: mostrarListagemFuncionarios(); break; + case 9: + printf("Até a próxima vez!\n"); + break; + default: + printf("Opção inválida!\n"); + } + } while (opcao != 9); +} + +/** + * Função principal do programa + */ +int main(){ + mostrarMenuPrincipal(); + + return 0; +} \ No newline at end of file diff --git a/codigos/ControleEstoqueC/nbproject/Makefile-Debug.mk b/codigos/ControleEstoqueC/nbproject/Makefile-Debug.mk new file mode 100644 index 0000000..c5475d1 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/Makefile-Debug.mk @@ -0,0 +1,131 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/cidades.o \ + ${OBJECTDIR}/clientes.o \ + ${OBJECTDIR}/estados.o \ + ${OBJECTDIR}/fornecedores.o \ + ${OBJECTDIR}/funcionarios.o \ + ${OBJECTDIR}/gerais.o \ + ${OBJECTDIR}/main.o \ + ${OBJECTDIR}/paises.o \ + ${OBJECTDIR}/produtos.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec ${OBJECTFILES} ${LDLIBSOPTIONS} `mysql_config --libs` + +${OBJECTDIR}/cidades.o: cidades.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/cidades.o cidades.c + +${OBJECTDIR}/clientes.o: clientes.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/clientes.o clientes.c + +${OBJECTDIR}/estados.o: estados.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/estados.o estados.c + +${OBJECTDIR}/fornecedores.o: fornecedores.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/fornecedores.o fornecedores.c + +${OBJECTDIR}/funcionarios.o: funcionarios.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/funcionarios.o funcionarios.c + +${OBJECTDIR}/gerais.o: gerais.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/gerais.o gerais.c + +${OBJECTDIR}/main.o: main.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.c + +${OBJECTDIR}/paises.o: paises.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/paises.o paises.c + +${OBJECTDIR}/produtos.o: produtos.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -g -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/produtos.o produtos.c + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/codigos/ControleEstoqueC/nbproject/Makefile-Release.mk b/codigos/ControleEstoqueC/nbproject/Makefile-Release.mk new file mode 100644 index 0000000..7e627eb --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/Makefile-Release.mk @@ -0,0 +1,131 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/cidades.o \ + ${OBJECTDIR}/clientes.o \ + ${OBJECTDIR}/estados.o \ + ${OBJECTDIR}/fornecedores.o \ + ${OBJECTDIR}/funcionarios.o \ + ${OBJECTDIR}/gerais.o \ + ${OBJECTDIR}/main.o \ + ${OBJECTDIR}/paises.o \ + ${OBJECTDIR}/produtos.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/cidades.o: cidades.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/cidades.o cidades.c + +${OBJECTDIR}/clientes.o: clientes.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/clientes.o clientes.c + +${OBJECTDIR}/estados.o: estados.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/estados.o estados.c + +${OBJECTDIR}/fornecedores.o: fornecedores.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/fornecedores.o fornecedores.c + +${OBJECTDIR}/funcionarios.o: funcionarios.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/funcionarios.o funcionarios.c + +${OBJECTDIR}/gerais.o: gerais.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/gerais.o gerais.c + +${OBJECTDIR}/main.o: main.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.c + +${OBJECTDIR}/paises.o: paises.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/paises.o paises.c + +${OBJECTDIR}/produtos.o: produtos.c + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.c) -O2 -std=c11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/produtos.o produtos.c + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/codigos/ControleEstoqueC/nbproject/Makefile-impl.mk b/codigos/ControleEstoqueC/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..9f42dd4 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/Makefile-impl.mk @@ -0,0 +1,133 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=ControleEstoqueC + +# Active Configuration +DEFAULTCONF=Debug +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=Debug Release + + +# build +.build-impl: .build-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf + + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ + done + +# all +.all-impl: .all-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ + done + +# build tests +.build-tests-impl: .build-impl .build-tests-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf + +# run tests +.test-impl: .build-tests-impl .test-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf + +# dependency checking support +.depcheck-impl: + @echo "# This code depends on make tool being used" >.dep.inc + @if [ -n "${MAKE_VERSION}" ]; then \ + echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \ + echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ + echo "include \$${DEPFILES}" >>.dep.inc; \ + echo "endif" >>.dep.inc; \ + else \ + echo ".KEEP_STATE:" >>.dep.inc; \ + echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ + fi + +# configuration validation +.validate-impl: + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + echo ""; \ + echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ + echo "See 'make help' for details."; \ + echo "Current directory: " `pwd`; \ + echo ""; \ + fi + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + exit 1; \ + fi + + +# help +.help-impl: .help-pre + @echo "This makefile supports the following configurations:" + @echo " ${ALLCONFS}" + @echo "" + @echo "and the following targets:" + @echo " build (default target)" + @echo " clean" + @echo " clobber" + @echo " all" + @echo " help" + @echo "" + @echo "Makefile Usage:" + @echo " make [CONF=] [SUB=no] build" + @echo " make [CONF=] [SUB=no] clean" + @echo " make [SUB=no] clobber" + @echo " make [SUB=no] all" + @echo " make help" + @echo "" + @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," + @echo " also clean subprojects." + @echo "Target 'clobber' will remove all built files from all configurations and," + @echo " unless 'SUB=no', also from subprojects." + @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'help' prints this message." + @echo "" + diff --git a/codigos/ControleEstoqueC/nbproject/Makefile-variables.mk b/codigos/ControleEstoqueC/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..9ee213a --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/Makefile-variables.mk @@ -0,0 +1,35 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +CND_BUILDDIR=build +CND_DISTDIR=dist +# Debug configuration +CND_PLATFORM_Debug=GNU-Linux +CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux +CND_ARTIFACT_NAME_Debug=controleestoquec +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/controleestoquec +CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package +CND_PACKAGE_NAME_Debug=controleestoquec.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/controleestoquec.tar +# Release configuration +CND_PLATFORM_Release=GNU-Linux +CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux +CND_ARTIFACT_NAME_Release=controleestoquec +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/controleestoquec +CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package +CND_PACKAGE_NAME_Release=controleestoquec.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/controleestoquec.tar +# +# include compiler specific variables +# +# dmake command +ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ + (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) +# +# gmake command +.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) +# +include nbproject/private/Makefile-variables.mk diff --git a/codigos/ControleEstoqueC/nbproject/Package-Debug.bash b/codigos/ControleEstoqueC/nbproject/Package-Debug.bash new file mode 100644 index 0000000..92daaed --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/Package-Debug.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec +OUTPUT_BASENAME=controleestoquec +PACKAGE_TOP_DIR=controleestoquec/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/controleestoquec/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/controleestoquec.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/controleestoquec.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/codigos/ControleEstoqueC/nbproject/Package-Release.bash b/codigos/ControleEstoqueC/nbproject/Package-Release.bash new file mode 100644 index 0000000..0254fcd --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/Package-Release.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/controleestoquec +OUTPUT_BASENAME=controleestoquec +PACKAGE_TOP_DIR=controleestoquec/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/controleestoquec/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/controleestoquec.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/controleestoquec.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/codigos/ControleEstoqueC/nbproject/configurations.xml b/codigos/ControleEstoqueC/nbproject/configurations.xml new file mode 100644 index 0000000..48541e2 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/configurations.xml @@ -0,0 +1,158 @@ + + + + + cidades.h + clientes.h + diretivas_conexao.h + estados.h + fornecedores.h + funcionarios.h + gerais.h + paises.h + produtos.h + + + cidades.c + clientes.c + estados.c + fornecedores.c + funcionarios.c + gerais.c + main.c + paises.c + produtos.c + + + + + + + Makefile + + + Makefile + + + + default + true + false + + + + 10 + + + `mysql_config --libs` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + true + false + + + + 5 + 10 + + + 5 + + + 5 + + + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/codigos/ControleEstoqueC/nbproject/private/Makefile-variables.mk b/codigos/ControleEstoqueC/nbproject/private/Makefile-variables.mk new file mode 100644 index 0000000..a64183e --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/private/Makefile-variables.mk @@ -0,0 +1,7 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +# Debug configuration +# Release configuration diff --git a/codigos/ControleEstoqueC/nbproject/private/c_standard_headers_indexer.c b/codigos/ControleEstoqueC/nbproject/private/c_standard_headers_indexer.c new file mode 100644 index 0000000..c2548d2 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/private/c_standard_headers_indexer.c @@ -0,0 +1,75 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/c/header + +#include // Conditionally compiled macro that compares its argument to zero +#include // Functions to determine the type contained in character data +#include // Macros reporting error conditions +#include // Limits of float types +#include // Sizes of basic types +#include // Localization utilities +#include // Common mathematics functions +#include // Nonlocal jumps +#include // Signal handling +#include // Variable arguments +#include // Common macro definitions +#include // Input/output +#include // String handling +#include // General utilities: memory management, program utilities, string conversions, random numbers +#include // Time/date utilities +#include // (since C95) Alternative operator spellings +#include // (since C95) Extended multibyte and wide character utilities +#include // (since C95) Wide character classification and mapping utilities +#ifdef _STDC_C99 +#include // (since C99) Complex number arithmetic +#include // (since C99) Floating-point environment +#include // (since C99) Format conversion of integer types +#include // (since C99) Boolean type +#include // (since C99) Fixed-width integer types +#include // (since C99) Type-generic math (macros wrapping math.h and complex.h) +#endif +#ifdef _STDC_C11 +#include // (since C11) alignas and alignof convenience macros +#include // (since C11) Atomic types +#include // (since C11) noreturn convenience macros +#include // (since C11) Thread library +#include // (since C11) UTF-16 and UTF-32 character utilities +#endif diff --git a/codigos/ControleEstoqueC/nbproject/private/configurations.xml b/codigos/ControleEstoqueC/nbproject/private/configurations.xml new file mode 100644 index 0000000..78e3906 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/private/configurations.xml @@ -0,0 +1,72 @@ + + + Makefile + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 1 + 0 + + + + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + diff --git a/codigos/ControleEstoqueC/nbproject/private/cpp_standard_headers_indexer.cpp b/codigos/ControleEstoqueC/nbproject/private/cpp_standard_headers_indexer.cpp new file mode 100644 index 0000000..04f6fa6 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/private/cpp_standard_headers_indexer.cpp @@ -0,0 +1,135 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/cpp/header + +#include // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search +#include // Functions and macro constants for signal management +#include // Macro (and function) that saves (and jumps) to an execution context +#include // Handling of variable length argument lists +#include // Runtime type information utilities +#include // std::bitset class template +#include // Function objects, designed for use with the standard algorithms +#include // Various utility components +#include // C-style time/date utilites +#include // typedefs for types such as size_t, NULL and others +#include // Low-level memory management utilities +#include // Higher level memory management utilities +#include // limits of integral types +#include // limits of float types +#include // standardized way to query properties of arithmetic types +#include // Exception handling utilities +#include // Standard exception objects +#include // Conditionally compiled macro that compares its argument to zero +#include // Macro containing the last error number +#include // functions to determine the type contained in character data +#include // functions for determining the type of wide character data +#include // various narrow character string handling functions +#include // various wide and multibyte string handling functions +#include // std::basic_string class template +#include // std::vector container +#include // std::deque container +#include // std::list container +#include // std::set and std::multiset associative containers +#include // std::map and std::multimap associative containers +#include // std::stack container adaptor +#include // std::queue and std::priority_queue container adaptors +#include // Algorithms that operate on containers +#include // Container iterators +#include // Common mathematics functions +#include // Complex number type +#include // Class for representing and manipulating arrays of values +#include // Numeric operations on values in containers +#include // forward declarations of all classes in the input/output library +#include // std::ios_base class, std::basic_ios class template and several typedefs +#include // std::basic_istream class template and several typedefs +#include // std::basic_ostream, std::basic_iostream class templates and several typedefs +#include // several standard stream objects +#include // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs +#include // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs +#include // std::strstream, std::istrstream, std::ostrstream(deprecated) +#include // Helper functions to control the format or input and output +#include // std::basic_streambuf class template +#include // C-style input-output functions +#include // Localization utilities +#include // C localization utilities +#include // empty header. The macros that appear in iso646.h in C are keywords in C++ +#if __cplusplus >= 201103L +#include // (since C++11) std::type_index +#include // (since C++11) Compile-time type information +#include // (since C++11) C++ time utilites +#include // (since C++11) std::initializer_list class template +#include // (since C++11) std::tuple class template +#include // (since C++11) Nested allocator class +#include // (since C++11) fixed-size types and limits of other types +#include // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions +#include // (since C++11) defines std::error_code, a platform-dependent error code +#include // (since C++11) C-style Unicode character conversion functions +#include // (since C++11) std::array container +#include // (since C++11) std::forward_list container +#include // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers +#include // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers +#include // (since C++11) Random number generators and distributions +#include // (since C++11) Compile-time rational arithmetic +#include // (since C++11) Floating-point environment access functions +#include // (since C++11) Unicode conversion facilities +#include // (since C++11) Classes, algorithms and iterators to support regular expression processing +#include // (since C++11) Atomic operations library +#include // (since C++11)(deprecated in C++17) simply includes the header +#include // (since C++11)(deprecated in C++17) simply includes the headers (until C++17) (since C++17) and : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11) std::thread class and supporting functions +#include // (since C++11) mutual exclusion primitives +#include // (since C++11) primitives for asynchronous computations +#include // (since C++11) thread waiting conditions +#endif +#if __cplusplus >= 201300L +#include // (since C++14) shared mutual exclusion primitives +#endif +#if __cplusplus >= 201500L +#include // (since C++17) std::any class template +#include // (since C++17) std::optional class template +#include // (since C++17) std::variant class template +#include // (since C++17) Polymorphic allocators and memory resources +#include // (since C++17) std::basic_string_view class template +#include // (since C++17) Predefined execution policies for parallel versions of the algorithms +#include // (since C++17) std::path class and supporting functions +#endif diff --git a/codigos/ControleEstoqueC/nbproject/private/launcher.properties b/codigos/ControleEstoqueC/nbproject/private/launcher.properties new file mode 100644 index 0000000..3edc2d8 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/private/launcher.properties @@ -0,0 +1,42 @@ +# Launchers File syntax: +# +# [Must-have property line] +# launcher1.runCommand= +# [Optional extra properties] +# launcher1.displayName= +# launcher1.hide= +# launcher1.buildCommand= +# launcher1.runDir= +# launcher1.runInOwnTab= +# launcher1.symbolFiles= +# launcher1.env.= +# (If this value is quoted with ` it is handled as a native command which execution result will become the value) +# [Common launcher properties] +# common.runDir= +# (This value is overwritten by a launcher specific runDir value if the latter exists) +# common.env.= +# (Environment variables from common launcher are merged with launcher specific variables) +# common.symbolFiles= +# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) +# +# In runDir, symbolFiles and env fields you can use these macroses: +# ${PROJECT_DIR} - project directory absolute path +# ${OUTPUT_PATH} - linker output path (relative to project directory path) +# ${OUTPUT_BASENAME}- linker output filename +# ${TESTDIR} - test files directory (relative to project directory path) +# ${OBJECTDIR} - object files directory (relative to project directory path) +# ${CND_DISTDIR} - distribution directory (relative to project directory path) +# ${CND_BUILDDIR} - build directory (relative to project directory path) +# ${CND_PLATFORM} - platform name +# ${CND_CONF} - configuration name +# ${CND_DLIB_EXT} - dynamic library extension +# +# All the project launchers must be listed in the file! +# +# launcher1.runCommand=... +# launcher2.runCommand=... +# ... +# common.runDir=... +# common.env.KEY=VALUE + +# launcher1.runCommand= \ No newline at end of file diff --git a/codigos/ControleEstoqueC/nbproject/private/private.xml b/codigos/ControleEstoqueC/nbproject/private/private.xml new file mode 100644 index 0000000..04b2e69 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/private/private.xml @@ -0,0 +1,18 @@ + + + + 1 + 0 + + + + + file:/home/blackowl/Documents/git/controleestoque_c/codigos/ControleEstoqueC/estados.c + file:/home/blackowl/Documents/git/controleestoque_c/codigos/ControleEstoqueC/main.c + file:/home/blackowl/Documents/git/controleestoque_c/codigos/ControleEstoqueC/cidades.h + file:/home/blackowl/Documents/git/controleestoque_c/codigos/ControleEstoqueC/funcionarios.h + file:/home/blackowl/Documents/git/controleestoque_c/codigos/ControleEstoqueC/paises.c + file:/home/blackowl/Documents/git/controleestoque_c/codigos/ControleEstoqueC/cidades.c + + + diff --git a/codigos/ControleEstoqueC/nbproject/project.xml b/codigos/ControleEstoqueC/nbproject/project.xml new file mode 100644 index 0000000..c961d86 --- /dev/null +++ b/codigos/ControleEstoqueC/nbproject/project.xml @@ -0,0 +1,28 @@ + + + org.netbeans.modules.cnd.makeproject + + + ControleEstoqueC + c + + h + UTF-8 + + + + + Debug + 1 + + + Release + 1 + + + + false + + + + diff --git a/codigos/ControleEstoqueC/paises.c b/codigos/ControleEstoqueC/paises.c new file mode 100644 index 0000000..8656124 --- /dev/null +++ b/codigos/ControleEstoqueC/paises.c @@ -0,0 +1,263 @@ +#include "paises.h" + +/** + * Lista todos os países cadastrados no banco de dados + * Autor: Ronneesley Moura Teles + * Data: 15/08/2017 + */ +void mostrarListagemPaises(){ + int opcao; + + do { + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| LISTAGEM DE PAÍSES |\n"); + printf("|--------------------------------------------------------------------|\n"); + printf("| ID | NOME |\n"); + printf("|--------------------------------------------------------------------|\n"); + + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Executa o comando de consulta + if (mysql_query(&mysql, "select id, nome from paises order by nome") == 0){ + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ( (linha = mysql_fetch_row(resultado)) ){ + //Obtém cada coluna na órdem + int id = atoi(linha[0]); + char *nome = linha[1]; + + //Imprime cada linha + printf("| %10d | %-53s |\n", id, nome); + } + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + + printf("|--------------------------------------------------------------------|\n"); + + printf("O que deseja fazer?\n"); + printf("1) Cadastrar um novo país\n"); + printf("2) Alterar um país\n"); + printf("3) Excluir um país\n"); + printf("4) Voltar ao menu principal\n\n"); + + printf("Digite a opção desejada: "); + scanf("%d", &opcao); getchar(); + + switch (opcao){ + case 1: mostrarCadastroPais(); break; + case 2: mostrarAlteracaoPais(); break; + case 3: mostrarExclusaoPais(); break; + } + } while (opcao != 4); +} + +/** + * Apresenta o cadastro de países + * Autor: Ronneesley Moura Teles + * Data: 15/08/2017 + */ +void mostrarCadastroPais() { + Pais p; + + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| CADASTRO DE PAÍSES |\n"); + printf("|--------------------------------------------------------------------|\n"); + + printf("| NOME: "); + fgets(p.nome, sizeof(p.nome), stdin); + int tamanho = strlen(p.nome); p.nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + printf("|--------------------------------------------------------------------|\n"); + + printf("Deseja realmente criar o país? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + inserirPais(p); + } +} + +/** + * Função responsável pela inserção de um país no banco de dados + * Autor: Ronneesley Moura Teles + * Data: 15/08/2017 + */ +void inserirPais(Pais p){ + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "insert into paises(nome) values('%s')", p.nome); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("País cadastrado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +void alterarPais(Pais p){ + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "update paises set nome = '%s' where id = %d", p.nome, p.id); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("País alterado com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +void excluirPais(int codigo){ + //Inicializa a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + //Cria o comando SQL para envio + char sql[500]; + snprintf(sql, 500, "delete from paises where id = %d", codigo); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0){ + mysql_close(&mysql); //Encerra a conexão + + printf("País excluído com sucesso\n"); //Exibe mensagem de sucesso + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +Pais* selecionarPais(int codigo){ + //Cria a variável de conexão com o MySQL + MYSQL mysql; + mysql_init(&mysql); + + //Efetua a conexão + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ + char sql[500]; + snprintf(sql, 500, "select id, nome from paises where id = %d", codigo); + + //Executa o comando de consulta + if (mysql_query(&mysql, sql) == 0){ + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + int id; + char *nome; + if ( (linha = mysql_fetch_row(resultado)) ){ + //Obtém cada coluna na órdem + id = atoi(linha[0]); + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + Pais pais; + Pais *p = &pais; + strncpy(p->nome, linha[1], 100); + p->id = id; + + //Imprime cada linha + return p; + } else { + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + + return NULL; + } + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } + getchar(); +} + +void mostrarAlteracaoPais(){ + int codigo; + printf("Digite o código do país que deseja alterar: "); + scanf("%d", &codigo); getchar(); + + Pais *p = selecionarPais(codigo); + + limparTela(); + printf("|--------------------------------------------------------------------|\n"); + printf("| CADASTRO DE PAÍSES |\n"); + printf("|--------------------------------------------------------------------|\n"); + printf("| Id: %d\n", p->id); + printf("| Nome: %s\n", p->nome); + printf("|--------------------------------------------------------------------|\n"); + + printf("Digite o novo nome do país: "); + char nome[100]; + fgets(nome, sizeof(nome), stdin); + int tamanho = strlen(nome); nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 + strncpy(p->nome, nome, 100); + printf("|--------------------------------------------------------------------|\n"); + + printf("Deseja realmente salvar as alterações? (S/N) "); + char resposta = getchar(); getchar(); + + if (resposta == 'S' || resposta == 's'){ + alterarPais(*p); + } + + getchar(); +} + +void mostrarExclusaoPais(){ + int codigo; + printf("Digite o código do país que deseja excluir: "); + scanf("%d", &codigo); + getchar(); + + excluirPais(codigo); + getchar(); +} \ No newline at end of file diff --git a/src/paises.h b/codigos/ControleEstoqueC/paises.h similarity index 94% rename from src/paises.h rename to codigos/ControleEstoqueC/paises.h index 34a544d..3664558 100644 --- a/src/paises.h +++ b/codigos/ControleEstoqueC/paises.h @@ -11,8 +11,8 @@ * Estrutura para representar um pais */ typedef struct { - int id; - char nome[100]; + int id; + char nome[100]; } Pais; /** @@ -37,4 +37,4 @@ void mostrarAlteracaoPais(); void mostrarExclusaoPais(); void excluirPais(int codigo); -#endif +#endif \ No newline at end of file diff --git a/codigos/ControleEstoqueC/produtos.c b/codigos/ControleEstoqueC/produtos.c new file mode 100644 index 0000000..34a38a0 --- /dev/null +++ b/codigos/ControleEstoqueC/produtos.c @@ -0,0 +1,405 @@ +#include +#include +#include "produtos.h" + +/** + * Mostra os produtos cadastrados e um MENU de opções para produtos + */ +void mostraMenuProdutos() { + + int opcao; + do { + mostraProdutos(); + + printf("\nO que deseja fazer?\n"); + printf("1) Cadastrar um novo produto\n"); + printf("2) Alterar um produto\n"); + printf("3) Excluir\n"); + printf("4) Voltar ao menu principal\n\n"); + printf("Digite a opção desejada: "); + scanf("%d", &opcao); + getchar(); + + switch (opcao) { + case 1: mostrarCadastroProduto(); + break; + case 2: mostraAlteracaoProduto(); + break; + case 3: mostraExclusaoProduto(); + break; + } + } while (opcao != 4); +} + +/** + * mostra a tela de cadastro de produtos. + */ +void mostrarCadastroProduto() { + Produto p; + + limparTela(); + mostraLinhaMenu(); + printf("| \t\t\tCADASTRO DE PRODUTO\t\t |\n"); + mostraLinhaMenu(); + + printf(" NOME: "); + leString(p.nome, 100); + + printf(" FORNECEDOR: "); + leString(p.fornecedor, 100); + + printf(" PREÇO DE COMPRA: R$ "); + scanf("%f", &p.precoCompra); + getchar(); + + printf(" PREÇO DE VENDA: R$ "); + scanf("%f", &p.precoVenda); + getchar(); + + printf(" DESCRIÇÃO: "); + leString(p.descricao, 100); + + printf(" QUANTIDADE EM ESTOQUE: "); + scanf("%d", &p.qtdEmEstoque); + getchar(); + mostraLinhaMenu(); + + printf("Deseja realmente criar o produto? (S/N) "); + char resposta = getchar(); + getchar(); + + if (resposta == 'S' || resposta == 's') { + insereProduto(p); + } +} + +/** + * Insere um novo produto + */ +void insereProduto(Produto p) { + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + char sql[500]; + snprintf(sql, 500, "INSERT INTO produtos(nome,fornecedor,precoCompra,precoVenda,descricao,qtdEmEstoque) values('%s','%s',%f,%f,'%s',%d)" + , p.nome, p.fornecedor, p.precoCompra, p.precoVenda, p.descricao, p.qtdEmEstoque); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + printf("Produto cadastrado com sucesso\n"); + } else { + printf("%s\n", mysql_error(&mysql)); + getchar(); + } + } else { + printf("FALHA AO CONECTAR AO BANCO DE DADOS: %s \n", mysql_error(&mysql)); + getchar(); + } +} + +/** + * Mostra o quadro de produtos cadastrados + */ +void mostraProdutos() { + limparTela(); + + MYSQL mysql; + mysql_init(&mysql); + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + + //Executa o comando de consulta + if (mysql_query(&mysql, "SELECT id, nome, fornecedor, precoCompra, precoVenda, descricao, qtdEmEstoque, dataCadastro, dataModificacao FROM produtos ORDER BY nome") == 0) { + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + + mostraCabecalhoMenu(); + while ((linha = mysql_fetch_row(resultado))) { + + //Obtém cada coluna na órdem + int id = atoi(linha[0]), qtdEmEstoque = atoi(linha[6]), i, j; + char *nome = linha[1], *fornecedor = linha[2], *descricao = linha[5], *dataCadastro = linha[7], *dataModificacao = linha[8]; + + float precoCompra = atof(linha[3]), precoVenda = atof(linha[4]); + + //Imprime cada linha + printf("| %2d | %-22s | %-16s| R$%-10.2f| R$%-10.2f| %-25s| %-5d | %-7s | %-7s |\n", + id, nome, fornecedor, precoCompra, precoVenda, descricao, qtdEmEstoque, dataCadastro, dataModificacao); + } + mostraLinhaMenu(); + + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + } + } else { + printf("FALHA AO CONECTAR AO BANCO DE DADOS: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + } +} + +/** + * Mostra um produto,pelo ID + */ +void mostraProduto(int id) { //por id + limparTela(); + mostraCabecalhoMenu(); + + MYSQL mysql; + mysql_init(&mysql); + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + //Executa o comando de consulta + char sql[500]; + snprintf(sql, 500, "SELECT * FROM produtos WHERE id=%d", id); + if (mysql_query(&mysql, sql) == 0) { + + //Obtém o resultado + MYSQL_RES *resultado = mysql_store_result(&mysql); + + //Cria uma variável para guardar a linha + MYSQL_ROW linha; + while ((linha = mysql_fetch_row(resultado))) { + + //Obtém cada coluna na ordem + int id = atoi(linha[0]), qtdEmEstoque = atoi(linha[6]), i, j; + char *nome = linha[1], *fornecedor = linha[2], *descricao = linha[5], *dataCadastro = linha[7], *dataModificacao = linha[8]; + float precoCompra = atof(linha[3]), precoVenda = atof(linha[4]); + + //Imprime cada linha + printf("| %2d | %-22s | %-16s| R$%-10.2f| R$%-10.2f| %-25s| %-5d | %-7s | %-7s |\n", + id, nome, fornecedor, precoCompra, precoVenda, descricao, qtdEmEstoque, dataCadastro, dataModificacao); + } + mostraLinhaMenu(); + + //Libera os resultado e fecha a conexão + mysql_free_result(resultado); + mysql_close(&mysql); + } else { + printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro + getchar(); + } + } else { + printf("FALHA AO CONECTAR AO BANCO DE DADOS: %s \n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar + getchar(); + } +} + +/** + * Altera um produto, recebe id, campo, novo conteúdo do campo e o tipo + */ +void alteraProduto(int id, char campo[], char string[], char tipoDoCampo) { + Produto p; + MYSQL mysql; + mysql_init(&mysql); + //Conecta no banco de dados + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + + //Cria o comando SQL para envio + char sql[500]; + + if (tipoDoCampo == 's')snprintf(sql, 500, "UPDATE produtos SET %s = '%s', dataModificacao = NOW() WHERE id=%d", campo, string, id); + else snprintf(sql, 500, "UPDATE produtos SET %s = %s, dataModificacao = NOW() WHERE id=%d", campo, string, id); + + //Envia o comando e analisa a resposta + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + printf("\n[Produto alterado com sucesso!]"); + printf("\nPRESSIONE \n"); + getchar(); + } else { + printf("%s\n", mysql_error(&mysql)); + getchar(); + } + } else { + printf("Falha na conexão: %s\n", mysql_error(&mysql)); + getchar(); + } + + +} + +/** + * Seleciona e altera campos de um produto. + */ +void mostraAlteracaoProduto() { + int opcao, id = 0; + mostraProdutos(); + + printf("\nDigite o [ID] do produto : "); + scanf("%d", &id); + do { + + while (!checaSeExiste(id, "produtos")) {//obriga o usuário a digitar um id válido + limparTela(); + mostraProdutos(); + printf("\n [PRODUTO INEXISTENTE]\nDigite o [ID] Novamente! : "); + getchar(); + scanf("%d", &id); + } + + mostraProduto(id); + printf("\nQUAL CAMPO DESEJA ALTERAR?\n " + "\n[1] NOME" + "\n[2] FORNECEDOR" + "\n[3] PREÇO DE COMPRA" + "\n[4] PREÇO DE VENDA" + "\n[5] DESCRIÇÃO" + "\n[6] QTD EM ESTOQUE" + "\n[0] [VOLTAR] "); + scanf("%d", &opcao); + + switch (opcao) { + char novo[100]; + case 1: + printf("\nDigite o novo [NOME] do produto: "); + getchar(); + leString(novo, 100); + alteraProduto(id, "nome", novo, 's'); + break; + + case 2: + printf("\nDigite o novo [FORNECEDOR] do produto: "); + getchar(); + leString(novo, 100); + alteraProduto(id, "fornecedor", novo, 's'); + break; + + case 3: + printf("\nDigite o novo [PREÇO DE COMPRA] do produto: "); + getchar(); + leString(novo, 100); + alteraProduto(id, "precoCompra", novo, 'f'); + break; + + case 4: + printf("\nDigite o novo [PREÇO DE VENDA] do produto: "); + getchar(); + leString(novo, 100); + alteraProduto(id, "precoVenda", novo, 'f'); + break; + + case 5: + printf("\nDigite a nova [DESCRIÇÃO] do produto: "); + getchar(); + leString(novo, 100); + alteraProduto(id, "descricao", novo, 's'); + break; + + case 6: + printf("\nDigite a nova [QUANTIDADE EM ESTOQUE] do produto: "); + getchar(); + leString(novo, 100); + ; + alteraProduto(id, "qtdEmEstoque", novo, 'd'); + break; + + default: break; + } + } while (opcao != 0); +} + +//retorna a quantidade de produtos com esse id. + +int checaSeExiste(int id, char *tabela) { + + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + char sql[500]; + snprintf(sql, 500, "SELECT count(*) id FROM %s WHERE id=%d", tabela, id); + + if (mysql_query(&mysql, sql) == 0) { + MYSQL_RES *resultado = mysql_store_result(&mysql); + MYSQL_ROW linha; + linha = mysql_fetch_row(resultado); + id = atoi(linha[0]); //agora id recebe a quantidade de produtos + mysql_close(&mysql); //Encerra a conexão + } else { + printf("%s\n", mysql_error(&mysql)); + } + } else { + printf("Falha na conexão: %s\n", mysql_error(&mysql)); + } + + return id; +} + +/** + * inicia processo de exclusão + */ +void mostraExclusaoProduto() {//mostra opção de exclusão + mostraProdutos(); + + Produto p; + printf("DIGITE O ID DESEJADO [Ou 0 para sair]: "); + scanf("%d", &p.id); + if (p.id == 0) { + mostraMenuProdutos(); + } else { + while (!checaSeExiste(p.id, "produtos")) {//obriga o usuário a digitar um id válido + limparTela(); + mostraProdutos(); + getchar(); + printf("\n [PRODUTO INEXISTENTE]\nDigite o [ID] Novamente ! : "); + scanf("%d", &p.id); + } + + mostraProduto(p.id); + char opcao; + printf("\nDESEJA REALMENTE EXCLUIR O PRODUTO? "); + getchar(); + scanf("%c", &opcao); + + if (opcao == 's' || opcao == 'S') { + excluiProduto(p.id); + } + } + +} + +//Deleta um produto pelo ID + +void excluiProduto(int id) { + + MYSQL mysql; + mysql_init(&mysql); + + if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)) { + char sql[500]; + snprintf(sql, 500, "DELETE FROM produtos WHERE id=%d", id); + + if (mysql_query(&mysql, sql) == 0) { + mysql_close(&mysql); //Encerra a conexão + limparTela(); + printf("\nPRODUTO EXCLUÍDO COM SUCESSO!\n [ENTER]"); + getchar(); + getchar(); + } else { + printf("%s\n", mysql_error(&mysql)); + } + } else { + printf("Falha na conexão: %s\n", mysql_error(&mysql)); + } +} + + +//layout + +void mostraCabecalhoMenu() { + limparTela(); + mostraLinhaMenu(); + printf("| PRODUTOS |\n"); + mostraLinhaMenu(); + printf("| ID | NOME | FORNECEDOR | PREÇO/COMPRA | PREÇO/VENDA | DESCRIÇÃO | EM ESTOQUE | DATA DE CADASTRO | DATA DE MODIFICAÇÃO |\n"); + mostraLinhaMenu(); +} + +void mostraLinhaMenu() { + printf("|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n"); +} \ No newline at end of file diff --git a/codigos/ControleEstoqueC/produtos.h b/codigos/ControleEstoqueC/produtos.h new file mode 100644 index 0000000..6f0bd99 --- /dev/null +++ b/codigos/ControleEstoqueC/produtos.h @@ -0,0 +1,39 @@ +#ifndef PRODUTOS_H +#define PRODUTOS_H + +#include +#include +#include "diretivas_conexao.h" +#include "gerais.h" + + +typedef struct { + int id, qtdEmEstoque, dataCadastro, dataModificacao; + char nome[100], fornecedor[100], descricao[100]; + float precoCompra, precoVenda; +} Produto; + +//cadastro +void mostraMenuProdutos(); +void mostrarCadastroProduto(); +void insereProduto(Produto p); + +//alteração +void alteraProduto(int id, char vetorCampo[], char string[], char tipoDoCampo); +void mostraAlteracaoProduto(); + +//exclusão +void mostraProdutos(); +void mostraProduto(int id); +void mostraExclusaoProduto(); +void excluiProduto(int id); + +//layout +void mostraCabecalhoMenu(); +void mostraLinhaMenu(); + +//outras +void leString(char s[], int tam); +int checaSeExiste(int id, char *tabela); + +#endif \ No newline at end of file diff --git a/controleestoque.bin b/controleestoque.bin deleted file mode 100755 index 5234523..0000000 Binary files a/controleestoque.bin and /dev/null differ diff --git a/src/fornecedores.c b/src/fornecedores.c deleted file mode 100644 index e69de29..0000000 diff --git a/src/fornecedores.h b/src/fornecedores.h deleted file mode 100644 index e69de29..0000000 diff --git a/src/gerais.c b/src/gerais.c deleted file mode 100644 index 2baf649..0000000 --- a/src/gerais.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "gerais.h" - -/** - * Limpa a tela - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void limparTela(){ - system("clear"); -} diff --git a/src/main.c b/src/main.c deleted file mode 100644 index 509858d..0000000 --- a/src/main.c +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include "paises.h" -#include "gerais.h" - -/** - * Mostra o menu principal do sistema - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void mostrarMenuPrincipal(){ - int opcao; //Opção a ser escolhida no menu - - do { - limparTela(); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| SISTEMA DE CONTROLE DE ESTOQUE |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("1) Cadastro de países\n"); - printf("2) Cadastro de estados\n"); - printf("3) Cadastro de cidades\n"); - printf("4) Cadastro de clientes\n"); - printf("5) Cadastro de produtos\n"); - printf("6) Cadastro de fornecedores\n"); - printf("7) Cadastro de representantes\n"); - printf("8) Cadastro de funcionários\n"); - printf("9) Sair\n\n"); - - printf("Digite a opção desejada: "); - scanf("%d", &opcao); getchar(); - - switch (opcao){ - case 1: mostrarListagemPaises(); break; - case 9: - printf("Até a próxima vez!\n"); - break; - default: - printf("Opção inválida!\n"); - } - } while (opcao != 9); -} - -/** - * Função principal do programa - */ -int main(){ - mostrarMenuPrincipal(); - - return 0; -} diff --git a/src/paises.c b/src/paises.c deleted file mode 100644 index 34d85f5..0000000 --- a/src/paises.c +++ /dev/null @@ -1,262 +0,0 @@ -#include "paises.h" - -/** - * Lista todos os países cadastrados no banco de dados - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void mostrarListagemPaises(){ - int opcao; - - do { - limparTela(); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| LISTAGEM DE PAÍSES |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| ID | NOME |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - //Cria a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Efetua a conexão - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - //Executa o comando de consulta - if (mysql_query(&mysql, "select id, nome from paises order by nome") == 0){ - //Obtém o resultado - MYSQL_RES *resultado = mysql_store_result(&mysql); - - //Cria uma variável para guardar a linha - MYSQL_ROW linha; - while ( (linha = mysql_fetch_row(resultado)) ){ - //Obtém cada coluna na órdem - int id = atoi(linha[0]); - char *nome = linha[1]; - - //Imprime cada linha - printf("| %10d | %-100s |\n", id, nome); - } - - //Libera os resultado e fecha a conexão - mysql_free_result(resultado); - mysql_close(&mysql); - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } - - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("O que deseja fazer?\n"); - printf("1) Cadastrar um novo país\n"); - printf("2) Alterar um país\n"); - printf("3) Excluir um país\n"); - printf("4) Voltar ao menu principal\n\n"); - - printf("Digite a opção desejada: "); - scanf("%d", &opcao); getchar(); - - switch (opcao){ - case 1: mostrarCadastroPais(); break; - case 2: mostrarAlteracaoPais(); break; - case 3: mostrarExclusaoPais(); break; - } - } while (opcao != 4); -} - -/** - * Apresenta o cadastro de países - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void mostrarCadastroPais() { - Pais p; - - limparTela(); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| CADASTRO DE PAÍSES |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("| NOME: "); - fgets(p.nome, sizeof(p.nome), stdin); - int tamanho = strlen(p.nome); p.nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("Deseja realmente criar o país? (S/N) "); - char resposta = getchar(); getchar(); - - if (resposta == 'S' || resposta == 's'){ - inserirPais(p); - } -} - -/** - * Função responsável pela inserção de um país no banco de dados - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void inserirPais(Pais p){ - //Inicializa a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Conecta no banco de dados - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - //Cria o comando SQL para envio - char sql[500]; - snprintf(sql, 500, "insert into paises(nome) values('%s')", p.nome); - - //Envia o comando e analisa a resposta - if (mysql_query(&mysql, sql) == 0){ - mysql_close(&mysql); //Encerra a conexão - - printf("País cadastrado com sucesso\n"); //Exibe mensagem de sucesso - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } -} - -void alterarPais(Pais p){ - //Inicializa a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Conecta no banco de dados - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - //Cria o comando SQL para envio - char sql[500]; - snprintf(sql, 500, "update paises set nome = '%s' where id = %d", p.nome, p.id); - - //Envia o comando e analisa a resposta - if (mysql_query(&mysql, sql) == 0){ - mysql_close(&mysql); //Encerra a conexão - - printf("País alterado com sucesso\n"); //Exibe mensagem de sucesso - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } -} - -void excluirPais(int codigo){ - //Inicializa a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Conecta no banco de dados - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - //Cria o comando SQL para envio - char sql[500]; - snprintf(sql, 500, "delete from paises where id = %d", codigo); - - //Envia o comando e analisa a resposta - if (mysql_query(&mysql, sql) == 0){ - mysql_close(&mysql); //Encerra a conexão - - printf("País excluído com sucesso\n"); //Exibe mensagem de sucesso - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } -} - -Pais* selecionarPais(int codigo){ - //Cria a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Efetua a conexão - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - char sql[500]; - snprintf(sql, 500, "select id, nome from paises where id = %d", codigo); - - //Executa o comando de consulta - if (mysql_query(&mysql, sql) == 0){ - //Obtém o resultado - MYSQL_RES *resultado = mysql_store_result(&mysql); - - //Cria uma variável para guardar a linha - MYSQL_ROW linha; - int *id; - char *nome; - if ( (linha = mysql_fetch_row(resultado)) ){ - //Obtém cada coluna na órdem - *id = atoi(linha[0]); - - //Libera os resultado e fecha a conexão - mysql_free_result(resultado); - mysql_close(&mysql); - - Pais pais; - Pais *p = &pais; - strncpy(p->nome, linha[1], 100); - p->id = *id; - - //Imprime cada linha - return p; - } else { - //Libera os resultado e fecha a conexão - mysql_free_result(resultado); - mysql_close(&mysql); - - return NULL; - } - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } -} - -void mostrarAlteracaoPais(){ - int codigo; - printf("Digite o código do país que deseja alterar: "); - scanf("%d", &codigo); getchar(); - - Pais *p = selecionarPais(codigo); - - limparTela(); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| CADASTRO DE PAÍSES |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| Id: %d\n", p->id); - printf("| Nome: %s\n", p->nome); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("Digite o novo nome do país: "); - char nome[100]; - fgets(nome, sizeof(nome), stdin); - int tamanho = strlen(nome); nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 - strncpy(p->nome, nome, 100); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("Deseja realmente salvar as alterações? (S/N) "); - char resposta = getchar(); getchar(); - - if (resposta == 'S' || resposta == 's'){ - alterarPais(*p); - } - - getchar(); -} - -void mostrarExclusaoPais(){ - int codigo; - printf("Digite o código do país que deseja excluir: "); - scanf("%d", &codigo); - getchar(); - - excluirPais(codigo); - getchar(); -} diff --git a/src/paises.c~ b/src/paises.c~ deleted file mode 100644 index bce638d..0000000 --- a/src/paises.c~ +++ /dev/null @@ -1,222 +0,0 @@ -#include "paises.h" - -/** - * Lista todos os países cadastrados no banco de dados - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void mostrarListagemPaises(){ - int opcao; - - do { - limparTela(); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| LISTAGEM DE PAÍSES |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| ID | NOME |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - //Cria a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Efetua a conexão - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - //Executa o comando de consulta - if (mysql_query(&mysql, "select id, nome from paises order by nome") == 0){ - //Obtém o resultado - MYSQL_RES *resultado = mysql_store_result(&mysql); - - //Cria uma variável para guardar a linha - MYSQL_ROW linha; - while ( (linha = mysql_fetch_row(resultado)) ){ - //Obtém cada coluna na órdem - int id = atoi(linha[0]); - char *nome = linha[1]; - - //Imprime cada linha - printf("| %10d | %-100s |\n", *id, nome); - } - - //Libera os resultado e fecha a conexão - mysql_free_result(resultado); - mysql_close(&mysql); - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } - - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("O que deseja fazer?\n"); - printf("1) Cadastrar um novo país\n"); - printf("2) Alterar um país\n"); - printf("3) Excluir um país\n"); - printf("4) Voltar ao menu principal\n\n"); - - printf("Digite a opção desejada: "); - scanf("%d", &opcao); - getchar(); - - switch (opcao){ - case 1: mostrarCadastroPais(); break; - case 2: mostrarAlteracaoPais(); break; - case 3: mostrarExclusaoPais(); break; - } - } while (opcao != 4); -} - -/** - * Apresenta o cadastro de países - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void mostrarCadastroPais() { - Pais p; - - limparTela(); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - printf("| CADASTRO DE PAÍSES |\n"); - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("| NOME: "); - fgets(p.nome, sizeof(p.nome), stdin); - int tamanho = strlen(p.nome); p.nome[tamanho - 1] = '\0'; //Retira o \n do final da string e coloca \0 - printf("|-------------------------------------------------------------------------------------------------------------------|\n"); - - printf("Deseja realmente criar o país? (S/N) "); - char resposta = getchar(); getchar(); - - if (resposta == 'S' || resposta == 's'){ - inserirPais(p); - } -} - -/** - * Função responsável pela inserção de um país no banco de dados - * Autor: Ronneesley Moura Teles - * Data: 15/08/2017 - */ -void inserirPais(Pais p){ - //Inicializa a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Conecta no banco de dados - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - //Cria o comando SQL para envio - char sql[500]; - snprintf(sql, 500, "insert into paises(nome) values('%s')", p.nome); - - //Envia o comando e analisa a resposta - if (mysql_query(&mysql, sql) == 0){ - mysql_close(&mysql); //Encerra a conexão - - printf("País cadastrado com sucesso\n"); //Exibe mensagem de sucesso - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } -} - -void excluirPais(int codigo){ - //Inicializa a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Conecta no banco de dados - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - //Cria o comando SQL para envio - char sql[500]; - snprintf(sql, 500, "delete from paises where id = %d", codigo); - - //Envia o comando e analisa a resposta - if (mysql_query(&mysql, sql) == 0){ - mysql_close(&mysql); //Encerra a conexão - - printf("País excluído com sucesso\n"); //Exibe mensagem de sucesso - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } -} - -Pais* selecionarPais(int codigo){ - //Cria a variável de conexão com o MySQL - MYSQL mysql; - mysql_init(&mysql); - - //Efetua a conexão - if (mysql_real_connect(&mysql, SERVIDOR_BD, USUARIO_BD, SENHA_BD, NOME_BD, PORTA_BD, NULL, 0)){ - char sql[500]; - snprintf(sql, 500, "select id, nome from paises where id = %d", codigo); - - //Executa o comando de consulta - if (mysql_query(&mysql, sql) == 0){ - //Obtém o resultado - MYSQL_RES *resultado = mysql_store_result(&mysql); - - //Cria uma variável para guardar a linha - MYSQL_ROW linha; - int *id; - char *nome; - if ( (linha = mysql_fetch_row(resultado)) ){ - //Obtém cada coluna na órdem - *id = atoi(linha[0]); - - //Libera os resultado e fecha a conexão - mysql_free_result(resultado); - mysql_close(&mysql); - - Pais pais; - Pais *p = &pais; - strncpy(p->nome, linha[1], 100); - p->id = *id; - - //Imprime cada linha - return p; - } else { - //Libera os resultado e fecha a conexão - mysql_free_result(resultado); - mysql_close(&mysql); - - return NULL; - } - } else { - printf("%s\n", mysql_error(&mysql)); //Exibe a mensagem de erro - } - } else { - printf("Falha ao conectar no banco de dados: %s\n", mysql_error(&mysql)); //Exibe a mensagem de erro ao conectar - } -} - -void mostrarAlteracaoPais(){ - int codigo; - printf("Digite o código do país que deseja alterar: "); - scanf("%d", &codigo); - getchar(); - - Pais *p = selecionarPais(codigo); - - printf("Dados atuais do país\n"); - printf("Id: %d\n", p->id); - printf("Nome: %s\n", p->nome); - - getchar(); -} - -void mostrarExclusaoPais(){ - int codigo; - printf("Digite o código do país que deseja excluir: "); - scanf("%d", &codigo); - getchar(); - - excluirPais(codigo); - getchar(); -} diff --git a/src/produtos.c b/src/produtos.c deleted file mode 100644 index e69de29..0000000 diff --git a/src/produtos.h b/src/produtos.h deleted file mode 100644 index e69de29..0000000