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