Ir ao conteúdo
  • Cadastre-se

Def

Membro Pleno
  • Posts

    85
  • Cadastrado em

  • Última visita

Tudo que Def postou

  1. Estou com dúvidas em relação ao servlet do meu formulário, pois bem, explicando do inicio: Preciso fazer um formulário jsp com uma página de cadastro, e outra de login, então teria que programar o localhost do cadastro, e assim que preenchesse a página de cadastro enviasse os dados pro banco de dados(mysql), e então fosse pra página de login, e assim que preenchesse iria aparecer a página escrito "Logado". Já fiz a classe Controller(Servlet), DAO, e Web (Onde coloquei as classes de cadastro) porém por algum motivo tenho alguns erros no servlet, exemplo de como ficou até o momento o Controller(Servlet) e a classe DAO que está no package Model: OBS: Preciso de ajuda URGENTE!! CASO Queira dar uma modificada e me enviar dizendo o que fiz de errado, segue o link abaixo: https://www.mediafire.com/file/xl1mxy8w5gm9qdf/Trabalhoo.rar/file package Controller; import Model.DAO; import Model.Web; import java.io.IOException; import java.sql.SQLException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Controller */ @WebServlet("/Controller") public class Controller extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Controller() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); String action = request.getServletPath(); try { switch (action) { case "/controller": insertUser(request, response); break; case "/login": loginUser(request, response); break; } } catch (SQLException ex) { throw new ServletException(ex); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } private void insertUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ServletException { String nome = request.getParameter("nome"); String sobrenome = request.getParameter("sobrenome"); String email = request.getParameter("email"); String senha = request.getParameter("senha"); String telefone = request.getParameter("telefone"); User newUser = new User(nome, sobrenome, email, senha, telefone, false); Web.inserirUser(newUser); response.sendRedirect("cadastro.jsp"); } private void loginUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ServletException { String email = request.getParameter("email"); String senha = request.getParameter("senha"); dao loginUser = dao.loginUser(email, senha); request.setAttribute("loginUser", loginUser); if (loginUser.isValid()) { RequestDispatcher dispatcher = request.getRequestDispatcher("logado.jsp"); dispatcher.forward(request, response); } else response.sendRedirect("index.jsp"); } } package Model; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; public class DAO { private String driver = "com.mysql.cj.jdbc.Driver"; private String url = "jdbc:mysql://127.0.0.1:3306/demo?useTimezone=true&serverTimezone=UTC"; private String user = "root"; private String password = "admin"; private Connection conectar() { Connection con = null; try { Class.forName(this.driver); con = DriverManager.getConnection(this.url, this.user, this.password); return con; } catch (Exception var3) { System.out.println(var3); return null; } } public void testeConexao() { try { Connection con = this.conectar(); System.out.println(con); con.close(); } catch (Exception var2) { System.out.println(var2); } } public void inserirContato(Web contato) { String create = "insert into contatos (nome, sobrenome, email, senha, telefone) values (?,?,?,?,?)"; try { Connection con = this.conectar(); PreparedStatement pst = con.prepareStatement(create); pst.setString(1, contato.getNome()); pst.setString(2, contato.getSobrenome()); pst.setString(3, contato.getEmail()); pst.setString(4, contato.getSenha()); pst.setString(5, contato.getTelefone()); pst.executeUpdate(); con.close(); } catch (Exception var5) { System.out.println(var5); } } public ArrayList<Web> listarContatos() { ArrayList<Web> contatos = new ArrayList<Web>(); String read = "select * from contatos order by nome"; try { Connection con = this.conectar(); PreparedStatement pst = con.prepareStatement(read); ResultSet rs = pst.executeQuery(); while(rs.next()) { String idcon = rs.getString(1); String nome = rs.getString(2); String sobrenome = rs.getString(3); String email = rs.getString(4); String senha = rs.getString(5); String telefone = rs.getString(6); contatos.add(new Web(idcon, nome, sobrenome, email, senha, telefone)); } con.close(); return contatos; } catch (Exception var10) { System.out.println(var10); return null; } } public void selecionarContato(Web contato) { String read2 = "select * from contatos where idcon = ?"; try { Connection con = this.conectar(); PreparedStatement pst = con.prepareStatement(read2); pst.setString(1, contato.getIdcon()); ResultSet rs = pst.executeQuery(); while(rs.next()) { contato.setIdcon(rs.getString(1)); contato.setNome(rs.getString(2)); contato.setFone(rs.getString(3)); contato.setEmail(rs.getString(4)); } con.close(); } catch (Exception var6) { System.out.println(var6); } } public void alterarContato(Web contato) { String update = "update contatos set nome=?,fone=?,email=? where idcon=?"; try { Connection con = this.conectar(); PreparedStatement pst = con.prepareStatement(update); pst.setString(1, contato.getNome()); pst.setString(2, contato.getSobrenome()); pst.setString(3, contato.getEmail()); pst.setString(4, contato.getSenha()); pst.setString(5, contato.getTelefone()); pst.setString(6, contato.getIdcon()); pst.executeUpdate(); con.close(); } catch (Exception var5) { System.out.println(var5); } } public void deletarContato(Web contato) { String delete = "delete from contatos where idcon=?"; try { Connection con = this.conectar(); PreparedStatement pst = con.prepareStatement(delete); pst.setString(1, contato.getIdcon()); pst.executeUpdate(); con.close(); } catch (Exception var5) { System.out.println(var5); } } }
  2. Olá, me enviaram uma estrutura e me pediram pra adicionar funções de limpeza e reimplementar o código usando o <list> porém não sei como posso usar uma função de limpeza em java, por isso criei outra classe "clear" e fiz uma gambiarra usando o arraylist abaixo do main porém surgiram diversos erros. Alguém conseu public class Fila { private int tamanho; private int dados[]; public Fila (int c) { dados = new int [c]; tamanho = 0; } public boolean cheia() { return dados.length == tamanho; } public boolean vazia() { return tamanho == 0; } public void adiciona (int e) { if(cheia()){ System.err.println("Erro. Fila Cheia"); }else { dados[tamanho++] = e; } } public int remove() { int r = -1; if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { r = dados[0]; for (int i=0; i<tamanho-1; i++) { dados[i] = dados[i+1]; } tamanho --; } return r; } public int obterPrimeiro(){ int l = 0; if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { l = dados[0]; } return l; } public int obterUltimo() { int j = 0; if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { j = dados[tamanho -1]; } return j; } public void exibir() { if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { System.out.println("\n Fila:"); for(int i=0; i<tamanho; i++) { System.out.printf("|%d|", dados[i]); } System.out.print("\n"); } } } E esse é outra classe teste fila: import java.util.Scanner; import java.util.LinkedList; import java.util.ArrayList; public class testeFila { public static void main(String[] args) { Fila fila; Scanner ler = new Scanner(System.in); int opcao, k, e, removido ; String msg = "1 - Adicionar\n " +"2 - Remover\n" +"3 - Obter o Primeiro\n" +"4 - Obter Ultimo\n" +"5 - Exibir a Fila\n" +"6 - Sair\n\n"; System.out.println("Tamanho da Fila: "); k = ler.nextInt(); fila = new Fila(k); do { System.out.println(msg); opcao = ler.nextInt(); switch (opcao) { case 1: System.out.print("Informe o elemento da Lista"); e = ler.nextInt(); fila.adiciona(e); break; case 2: removido = fila.remove(); System.out.println("Elemento da Lista Removido" +removido); e = ler.nextInt(); fila.adiciona(e); break; case 3: System.out.println("\nPrimeiro"+ fila.obterPrimeiro()); break; case 4: System.out.println("\nPrimeiro"+ fila.obterUltimo()); break; case 5: fila.exibir(); break; } }while(opcao !=6); } }
  3. Olá, me enviaram uma estrutura e me pediram pra adicionar funções de limpeza e reimplementar o código usando o <list> porém não sei como posso usar uma função de limpeza em java, por isso criei outra classe "clear" e fiz uma gambiarra usando o arraylist abaixo do main porém surgiram diversos erros. Alguém conseu public class Fila { private int tamanho; private int dados[]; public Fila (int c) { dados = new int [c]; tamanho = 0; } public boolean cheia() { return dados.length == tamanho; } public boolean vazia() { return tamanho == 0; } public void adiciona (int e) { if(cheia()){ System.err.println("Erro. Fila Cheia"); }else { dados[tamanho++] = e; } } public int remove() { int r = -1; if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { r = dados[0]; for (int i=0; i<tamanho-1; i++) { dados[i] = dados[i+1]; } tamanho --; } return r; } public int obterPrimeiro(){ int l = 0; if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { l = dados[0]; } return l; } public int obterUltimo() { int j = 0; if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { j = dados[tamanho -1]; } return j; } public void exibir() { if(vazia()) { System.err.println("Erro. Fila Vazia"); }else { System.out.println("\n Fila:"); for(int i=0; i<tamanho; i++) { System.out.printf("|%d|", dados[i]); } System.out.print("\n"); } } } E esse é outra classe teste fila: import java.util.Scanner; import java.util.LinkedList; import java.util.ArrayList; public class testeFila { public static void main(String[] args) { Fila fila; Scanner ler = new Scanner(System.in); int opcao, k, e, removido ; String msg = "1 - Adicionar\n " +"2 - Remover\n" +"3 - Obter o Primeiro\n" +"4 - Obter Ultimo\n" +"5 - Exibir a Fila\n" +"6 - Sair\n\n"; System.out.println("Tamanho da Fila: "); k = ler.nextInt(); fila = new Fila(k); do { System.out.println(msg); opcao = ler.nextInt(); switch (opcao) { case 1: System.out.print("Informe o elemento da Lista"); e = ler.nextInt(); fila.adiciona(e); break; case 2: removido = fila.remove(); System.out.println("Elemento da Lista Removido" +removido); e = ler.nextInt(); fila.adiciona(e); break; case 3: System.out.println("\nPrimeiro"+ fila.obterPrimeiro()); break; case 4: System.out.println("\nPrimeiro"+ fila.obterUltimo()); break; case 5: fila.exibir(); break; } }while(opcao !=6); } }
  4. @arfneto uma ultima duvida que tava tendo aqui, para que usou esse *C no comando "int mostra_um_carro(Carro* c)" E para que usou esses %s %s em printf(" Marca/Modelo: %s %s\n Cor: %s\n Placa: %s\n Ano do Veículo: %s\n", ?
  5. @arfneto Eu já vou apresentar o trabalho então não dá mais tempo de alterar, mas agora vou buscar saber mais e treinar mais o codeblocks. Sabe algum pdf, ou algo bom que eu possa estudar? o @herbertbahia me mandou um e irei estudar por ele também, preciso aprender MUITA coisa ainda adicionado 3 minutos depois @arfneto vou estudar como se faz esse prismas e tudo o que eu não sei e tentarei fazer até ficar um projeto bem feito, queria agradecer muito a vocês @herbertbahia @arfneto @Mauro Britivaldo por ter se disponibilizado a me ajudar, sem vocês creio que isso não seria possível, me ajudaram com o trabalho e ainda me ensinaram. Muito obrigado, de verdade.
  6. Isso seria uma opção de pagamento do cliente, mas acho que dava pra incluir na lista do ultimo veiculo cadastrado também, ou não? Ou será se deixo como está e finalizo o trabalho por aqui?
  7. Ahh entendi, deu certinho. Uma dúvida poderia me explicar como fez o "Listar cliente"? gostaria de adicionar a opção que o cliente digitou como forma de pagamento no listar o ultimo veiculo cadastrado pra informar o que tal pessoa escolheu como forma de pagamento
  8. Mas uma linha antes do case 4 é o 2, e eu coloquei o break; mas não deu
  9. Quando teclo pra sair da opção do valor do estacionamento ele já vai direto ao "Listar cliente" como faço pra voltar ao menu? Coloquei o system pause mas ainda não deu certo, ele já pulou direto pro listar cliente system("pause");//Faz o sistema esperar o usuário apertar uma tecla para voltar ao menu break;//´Para a execução do switch
  10. Ahh sim, entendi. @herbertbahia já terminamos o trabalho praticamente, mas quis colocar uma opção pra pessoa decidir se ela irá querer pagar uma diaria ou mensal pelo estacionamento então fizemos com switch case também pra pessoa escolher, porém tem algo dando errado. Acredito que seja porque tem o case 1 e 2 dentro do case 3 como você pode ver, mas não tem o que fazer já que precisa do switch case pra pessoa poder escolher, como eu deveria arrumar isso? usando um if talvez?? //Feito por Alex, Gabriel M e Pedro V. //Feito por Alex, Gabriel M e Pedro V. #define _CRT_SECURE_NO_WARNINGS//Diz para o compilador que o programador não quer usar a versão segura das bibliotecas #include <stdio.h>//Biblioteca padrão do C #include <stdlib.h>//Biblioteca padrão do C #include <string.h>//Possui comando para mehlor utilização de stirngs #include <locale.h>//Biblioteca para reconhecer caracteres como "Ç" typedef struct //dados cadastrais do cliente { char nome[10];//Variável para nome int idade;//Variável para idade char CPF_CNPJ[20];//Variável para CPF/CNPJ char CNH[30];//Variável para CNH char Endereco[50];//Variável para endereço } Cliente;//Atribui todas as variáveis para o Cliente typedef struct //dados cadastrais do veículo { char placa[10];//Variável para placa do veículo char modelo[20];//Variável para modelo do veículo char marca[20];//Variável para marca do veículo char cor[20];//Variável para cor do veículo char ano[5];//Variável para ano do veículo } Carro;//Atribui todas as variáveis para o carro int le_um_carro(Carro*); //Informações do veículo int mostra_um_carro(Carro* c);//Informações do veículo para serem exibidas no programa int main(){ char aux[200]; Carro info; Cliente cliente; int opcao; //Variável para o Switch-Case int qntdvezes; //Variável que guardar quantas vezes o cliente veio ao estacionamento int virnovamente; //Variável que valida quantas vezes o cliente tem que vir para dar 10 idas ao estacionamento setlocale(LC_ALL, "Portuguese"); //Comando da biblioteca locale.h para reconhecer caracteres especiais while(1){ //Menu para o cliente system("cls"); printf("-----------------------------------------\n"); printf("\tCONTROLE DE ESTACIONAMENTO\n"); printf("-----------------------------------------\n\n"); printf("1- Cadastrar Cliente\n"); printf("\n2- Cadastrar Veículo\n"); printf("\n3- Valor do estacionamento\n"); printf("\n4- Listar o último veículo cadastrado\n"); printf("\n5- Créditos\n"); printf("\n6- Sair\n"); printf("\nOpcao: "); scanf("%d",&opcao); switch (opcao){//Switch para o cliente escolher //Case 1 é para guardar informações do cliente case 1: system("cls");//Limpa a tela printf("Informe o nome do cliente: ");//Printf para exibir uma mensagem na tela fflush(stdin);//Limpa o espaço de memória gets(cliente.nome);//Gets armazena TODOS os caracteres digitados printf("Informe a idade do cliente: "); scanf("%d", &cliente.idade);//Sacnf é para receber valores de váriaveis printf("Informe o CPF/CNPJ do cliente: "); cpf: fflush(stdin); gets(aux); if (strlen(aux) < 11){ //If para validar se os digitos estão corretos printf("Erro quantidade de dígitos menor do que o esperado\n"); printf("Digite novamente: "); goto cpf;//O goto serve para tratar erros, se algum for indentificado, ele volta para o usuário digitar novamente } else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos printf("Erro quantidade de dígitos maior do que o esperado\n"); printf("Digite novamente: "); goto cpf; } else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro strcpy(cliente.CPF_CNPJ,aux); } printf("Informe o número do CNH do cliente: "); cnh: fflush(stdin); gets(aux); if (strlen(aux) < 11){ //If para validar se os digitos estão corretos printf("Erro quantidade de dígitos menor do que o esperado\n"); printf("Digite novamente: "); goto cnh; } else if (strlen(aux) > 11){ //Else if para validar se os digitos estão corretos printf("Erro quantidade de dígitos maior do que o esperado\n"); printf("Digite novamente: "); goto cnh; } else{ //Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro strcpy(cliente.CNH,aux);//Strcpy transfere o valor de uma variável para outra(char) } printf("Informe o endereço do cliente: "); gets(cliente.Endereco); system("pause");//Faz o sistema esperar o usuário apertar uma tecla para voltar ao menu break;//´Para a execução do switch //Case 2 é para cadatrar os dados dos veículos case 2: le_um_carro(&info);//Chama a função para o cadastro dos veículos break; default: //Default é para, se alguma opção foi escolhida erroneamente, ele exibe uma mensagem printf("Opcao inesperada: %d\n", opcao); break; //Case 3 é para exibir o valor do estacionamento case 3: system(cls);//limpar a tela int pagamento;//forma de pagamento int tipo_serv;//tipo de serviço { printf("------------------------------------------\n"); printf("\tTIPOS DE SERVICOS OFERECIDOS:\n"); printf("------------------------------------------\n\n"); printf("\n1- PLANO MENSAL =60R$ \n\n"); printf("\n2- DIARIA =2,50R$ \n\n"); printf("Escolha uma das duas opções para realizar o pagamento: "); scanf("%d", &tipo_serv); switch(tipo_serv) { case 1: system("cls"); printf("SUA CONTA FICOU 60R$.\t"); printf("Escolha o meio de pagamento: \n\n"); printf("\n1- Credito\n"); printf("\n2- Debito\n"); printf("\n3- Em dinheiro\n\n"); printf("Digite o numero equivalente a sua escolha: "); scanf("%d", &pagamento); break; case 2: system("cls"); printf("SUA CONTA FICOU 2,50R$.\t"); printf("Escolha o meio de pagamento: \n\n"); printf("\n1- Credito\n"); printf("\n2- Debito\n"); printf("\n3- Em dinheiro\n\n"); printf("Digite o numero equivalente a sua escolha: "); scanf("%d", &pagamento); } } //Case 4 é para exibir o último carro cadastrado case 4: system("cls"); mostra_um_carro(&info); system("pause"); break; //Case 5 é para validar quantas vezes o cliente terá q usar o estacionamento para ter uma vinda de graça case 5: printf(" A cada 10 vindas ao estacionamento, você tem direito a vir 1 vez sem pagar.\n "); printf("Informe quantas vezes veio ao estacionamento:\n "); scanf("%d", &qntdvezes); if (qntdvezes < 10){ virnovamente = 10 - qntdvezes;//Validar quantas vezes o cliente precisa vir para ter o estacionamento gratuito printf(" Você precisa vir mais %d vezes ao estacionamento.", virnovamente); } else { printf(" Parabéns, você tem uma ida ao estacionamento de graça."); } getch(); break; //Case 6 é para o cliente sair do menu case 6: printf("Agradecemos a sua vinda e volte sempre!!"); exit(1);//Sair do programa break; } } } //le_um_carro serve para guardar as informações do case 2 int le_um_carro(Carro* C) { system("cls"); char aux[200]; Carro info; printf("Informe o número da placa, como: xxx-xxxx [8 digitos]: "); placa: fflush(stdin); gets(aux); if (strlen(aux) < 8) {//If para validar se os digitos estão corretos printf("Erro quantidade de dígitos menor do que o correto\n"); printf("Digite novamente: "); goto placa; } else if (strlen(aux) > 8) {//Else if para validar se os digitos estão corretos printf("Erro quantidade de dígitos maior do que o correto\n"); printf("Digite novamente: "); goto placa; } else {//Else para validar se os digitos estão corretos, e se estiverem prossegue o cadastro strcpy(info.placa, aux); } printf("Informe a marca do veículo: "); gets(info.marca); printf("Informe o modelo do veículo: "); gets(info.modelo); printf("Informe a cor do veículo: "); gets(info.cor); printf("Informe o ano do veículo: "); gets(info.ano); *C = info; return 0; }; //mostra_um_carro serve para literalmente mostrar as informações do case 3 int mostra_um_carro(Carro* c) { printf(" Marca/Modelo: %s %s\n Cor: %s\n Placa: %s\n Ano do Veículo: %s\n", c->marca, c->modelo, c->cor, c->placa, c->ano ); return 0; }; OBS: Esse é nosso trabalho
  11. Porque você colocou case 4 e o case 5?
  12. Ahhh, quando você disse de adicionar int menu(); imaginei que era pra declarar o menu inicial que tinha feito como : printf("-----------------------------------------\n"); printf("\tCONTROLE DE ESTACIONAMENTO\n"); printf("-----------------------------------------\n\n"); printf("1- Cadastrar Cliente\n"); printf("\n2- Cadastrar Veiculo\n"); printf("\n3- Listar veiculos cadastrados\n"); printf("\n4- Creditos\n"); printf("\n5- Sair\n"); printf("\nOpcao: "); scanf("%d",&opcao); Mas esse int menu era apenas pra declarar a opção do case 1? adicionado 3 minutos depois Apertei alt + enter mas não deu em nada adicionado 5 minutos depois Onde você mandou? não me lembro exatamente como era
  13. Brigadão mano, muito grato!! adicionado 13 minutos depois Verdade não tinha notado essa chave em cima do main(), quanto ao int menu(); pensei que era pra usar ele acima do menu que havia te mandado, mas afinal das contas nem precisava do int menu(); tava vendo aqui so bastava declarar variavel main e o case1 /* le_um_cliente(&cliente); mostra_um_cliente(&cliente); break; */ adicionado 16 minutos depois Em geral @arfneto já está finalizado, pois a parte de listar os cadastrados e a parte de fechar o programa outro membro do meu grupo irá fazer, acha que vale a pena eu colocar quanto ficará a diaria/mensalidade do estacionamento?? Acho que assim ficará mais completo né
  14. Ok, está ficando assim: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> //dados cadastrais do cliente struct cad_cliente{ char nome[10]; int idade; char CPF_CNPJ[20]; char CNH[30]; char Endereco[50]; }; { int menu(); char aux[200]; struct cad_cliente info; int opcao; while(1){ system("cls"); printf("-----------------------------------------\n"); printf("\tCONTROLE DE ESTACIONAMENTO\n"); printf("-----------------------------------------\n\n"); printf("1- Cadastrar Cliente\n"); printf("\n2- Cadastrar Veiculo\n"); printf("\n3- Listar veiculos cadastrados\n"); printf("\n4- Creditos\n"); printf("\n5- Sair\n"); printf("\nOpcao: "); scanf("%d",&opcao); switch(opcao){ } typedef struct { char placa[10]; char modelo[20]; char marca[20]; char cor[20]; char ano[5]; } Carro; int le_um_carro(Carro*); int mostra_um_carro(Carro* c); { int main(void) Carro info; Cliente cliente; int opcao = 2; switch (opcao) { case 1: le_um_cliente(&cliente); mostra_um_cliente(&cliente); break; system("cls"); printf("Informe o nome do cliente: "); fflush(stdin); gets(info.nome); printf("Informe a idade do cliente: "); scanf("%d", &info.idade); printf("Informe o CPF/CNPJ do cliente: "); cpf: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else{ strcpy(info.CPF_CNPJ,aux); } printf("Informe o número do CNH do cliente: "); cnh: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else{ strcpy(info.CNH,aux); } printf("Informe o endereco do cliente: "); gets(info.Endereco); system("pause"); break; case 2: le_um_carro(&info); mostra_um_carro(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() int le_um_carro(Carro* C) { char aux[200]; Carro info; printf("Informe o numero da placa [7 digitos]: "); placa: fflush(stdin); gets(aux); if (strlen(aux) < 8) { printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: "); goto placa; } else if (strlen(aux) > 8) { printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: "); goto placa; } else { strcpy(info.placa, aux); } printf("Informe a marca do veiculo: "); gets(info.marca); printf("Informe o modelo do veiculo: "); gets(info.modelo); printf("Informe a cor do veiculo: "); gets(info.cor); printf("Informe o ano do veiculo: "); gets(info.ano); *C = info; return 0; }; // le_um_carro() int mostra_um_carro(Carro* c) { printf("Marca/Modelo: %s %s Cor: %s Placa: %s Entrada: %s \n", c->marca, c->modelo, c->cor, c->placa, c->ano ); return 0; };
  15. Kkkk ok, obrigado. Assim, esse menu eu posso colocar dentro do case 1 mesmo? ou tem que ficar do lado de fora com o "Int menu();" while(1){ system("cls"); printf("-----------------------------------------\n"); printf("\tCONTROLE DE ESTACIONAMENTO\n"); printf("-----------------------------------------\n\n"); printf("1- Cadastrar Cliente\n"); printf("\n2- Cadastrar Veiculo\n"); printf("\n3- Listar veiculos cadastrados\n"); printf("\n4- Creditos\n"); printf("\n5- Sair\n"); printf("\nOpcao: "); scanf("%d",&opcao); switch(opcao){
  16. Esse da print é o seguinte: Fiz primeiro o cadastro do cliente que será a opção 1 desse programa, só que eu havia feito ela separado. Ai fui fazer o cadastro do veiculo que é a opção 2 e graças ao arfneto consegui finalizar ele. E agora estou tentando juntar eles para rodar como um só programa Ou seja: quando eu teclar a opção 1 eu irei fazer o cadastro do cliente, preencher tudo certinho e dar o enter e apertar a opção 2 para cadastrar o veiculo do cliente. Espero ter dado pra entender, se quiser posso mandar aqui os dois codigos separados Separados eles funcionam muito bem, mas juntando eles ta dando alguns erro o que provavelmente é por causa do case mesmo
  17. Ok, eu ainda deixo o menu das funções? Esse da print é o menu adicionado 0 minutos depois Ou eu deixo o menu onde ele está e só pego o case do cliente e mudo pra baixo?
  18. @arfneto @arfneto tá dando erro bem nessa linha quando tirei o int main(void) mas eu tirei o int main(void) porque já tem lá em cima no cadastro do cliente, pois começa a partir deleTá
  19. Ahhh sim então aquilo que você fez no cadastro do veiculo eu posso usar no do cliente? O que eu quis dizer acima é o seguinte, é que eu fiz desse jeito o cadastro do cliente junto com o herbert separado do cadastro do veiculo olha só como ficou: E assim deu super certo mas se eu coloco em cima dos seus codigos do cadastro do veiculo não dá certo, então eu mudo os codigos do cliente pra ficar que nem o que você fez do veiculo? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> //dados cadastrais do cliente struct cad_cliente{ char nome[10]; int idade; char CPF_CNPJ[20]; char CNH[30]; char Endereco[50]; }; int main(void){ char aux[200]; struct cad_cliente info; int opcao; while(1){ system("cls"); printf("-----------------------------------------\n"); printf("\tCONTROLE DE ESTACIONAMENTO\n"); printf("-----------------------------------------\n\n"); printf("1- Cadastrar Cliente\n"); printf("\n2- Cadastrar Veiculo\n"); printf("\n3- Listar veiculos cadastrados\n"); printf("\n4- Creditos\n"); printf("\n5- Sair\n"); printf("\nOpcao: "); scanf("%d",&opcao); switch(opcao){ case 1: system("cls"); printf("Informe o nome do cliente: "); fflush(stdin); gets(info.nome); printf("Informe a idade do cliente: "); scanf("%d", &info.idade); printf("Informe o CPF/CNPJ do cliente: "); cpf: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else{ strcpy(info.CPF_CNPJ,aux); } printf("Informe o número do CNH do cliente: "); cnh: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else{ strcpy(info.CNH,aux); } printf("Informe o endereco do cliente: "); gets(info.Endereco); system("pause"); break; } } } adicionado 1 minuto depois Dessa forma?
  20. @arfneto Ok, dá pra usar a estrutura que você usou com o do cadastro do cliente? OBS: O do cliente já estava pronto, porém quando eu coloquei junto com o cad_veiculo ele deu erro Devo usar o int le_um_cliente e esse processo todo ou posso simplemente usar como eu ja tinha terminado o do cliente? //dados cadastrais do cliente struct cad_cliente{ char nome[10]; int idade; char CPF_CNPJ[20]; char CNH[30]; char Endereco[50]; }; int main(void){ char aux[200]; struct cad_cliente info; int opcao; while(1){ system("cls"); printf("-----------------------------------------\n"); printf("\tCONTROLE DE ESTACIONAMENTO\n"); printf("-----------------------------------------\n\n"); printf("1- Cadastrar Cliente\n"); printf("\n2- Cadastrar Veiculo\n"); printf("\n3- Listar veiculos cadastrados\n"); printf("\n4- Creditos\n"); printf("\n5- Sair\n"); printf("\nOpcao: "); scanf("%d",&opcao); switch(opcao){ case 1: system("cls"); printf("Informe o nome do cliente: "); fflush(stdin); gets(info.nome); printf("Informe a idade do cliente: "); scanf("%d", &info.idade); printf("Informe o CPF/CNPJ do cliente: "); cpf: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else if (strlen(aux) > 11){ Ou uso desse jeito pra compilar o cadastro do cliente e do veiculo? adicionado 3 minutos depois @herbertbahia ah sim, é que nem eu por exemplo. voce utilizou int idade; e eu achei que poderia usar para int modelo; também, as vezes fico perdido em quando usar int pra tal coisa e char pra outra, ainda mais em cadastros adicionado 28 minutos depois @herbertbahia O que eu poderia fazer pra colocar o do cadastro cliente com o cadastro veiculo? Eu digito na opcao: 1 e vai pro do cadastro cliente e 2 para veiculo, acho que já deveria ta rodando assim devido ao switch case1 e 2 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> //dados cadastrais do cliente struct cad_cliente{ char nome[10]; int idade; char CPF_CNPJ[20]; char CNH[30]; char Endereco[50]; }; int main(void){ char aux[200]; struct cad_cliente info; int opcao; while(1){ system("cls"); printf("-----------------------------------------\n"); printf("\tCONTROLE DE ESTACIONAMENTO\n"); printf("-----------------------------------------\n\n"); printf("1- Cadastrar Cliente\n"); printf("\n2- Cadastrar Veiculo\n"); printf("\n3- Listar veiculos cadastrados\n"); printf("\n4- Creditos\n"); printf("\n5- Sair\n"); printf("\nOpcao: "); scanf("%d",&opcao); switch(opcao){ case 1: system("cls"); printf("Informe o nome do cliente: "); fflush(stdin); gets(info.nome); printf("Informe a idade do cliente: "); scanf("%d", &info.idade); printf("Informe o CPF/CNPJ do cliente: "); cpf: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else{ strcpy(info.CPF_CNPJ,aux); } printf("Informe o número do CNH do cliente: "); cnh: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else{ strcpy(info.CNH,aux); } printf("Informe o endereco do cliente: "); gets(info.Endereco); system("pause"); break; } } } typedef struct { char placa[10]; char modelo[20]; char marca[20]; char cor[20]; char ano[5]; } Carro; int le_um_carro(Carro*); int mostra_um_carro(Carro* c); { Carro info; int opcao = 2; switch (opcao) { case 2: le_um_carro(&info); mostra_um_carro(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() int le_um_carro(Carro* C) { char aux[200]; Carro info; printf("Informe o numero da placa [7 digitos]: "); placa: fflush(stdin); gets(aux); if (strlen(aux) < 8) { printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: "); goto placa; } else if (strlen(aux) > 8) { printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: "); goto placa; } else { strcpy(info.placa, aux); } printf("Informe a marca do veiculo: "); gets(info.marca); printf("Informe o modelo do veiculo: "); gets(info.modelo); printf("Informe a cor do veiculo: "); gets(info.cor); printf("Informe o ano do veiculo: "); gets(info.ano); *C = info; return 0; }; // le_um_carro() int mostra_um_carro(Carro* c) { printf("Marca/Modelo: %s %s Cor: %s Placa: %s Entrada: %s \n", c->marca, c->modelo, c->cor, c->placa, c->ano ); return 0; };
  21. @herbertbahia Esse a = 10; é usado pra declarar a linha de "a"?
  22. @arfneto posso usar dois typedef? para o cadastro do veiculo e do cliente, ou deixo como estava antes? Agora ficou assim: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> //dados cadastrais do cliente typedef struct { char nome[10]; int idade; char CPF_CNPJ[20]; char CNH[30]; char Endereco[50]; } Cliente; int le_um_cliente(Cliente*); int mostra_um_carro(Cliente* c); int main(void){ Cliente info; int opcao = 2; switch (opcao) { case 1: le_um_cliente(&info); mostra_um_cliente(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() int le_um_cliente(Cliente* C) { char aux[200]; Cliente info; int opcao; printf("Informe o nome do cliente: "); fflush(stdin); gets(info.nome); printf("Informe a idade do cliente: "); scanf("%d", &info.idade); printf("Informe o CPF/CNPJ do cliente: "); cpf: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: \n"); goto cpf; } else{ strcpy(info.CPF_CNPJ,aux); } printf("Informe o número do CNH do cliente: "); cnh: fflush(stdin); gets(aux); if (strlen(aux) < 11){ printf("erro quantidade de digitos menor do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else if (strlen(aux) > 11){ printf("erro quantidade de digitos maior do que o correto\n"); printf("digite novamente: \n"); goto cnh; } else{ strcpy(info.CNH,aux); } printf("Informe o endereco do cliente: "); gets(info.Endereco); system("pause"); break; } } } typedef struct { char placa[10]; char modelo[20]; char marca[20]; char cor[20]; char ano[5]; } Carro; int le_um_carro(Carro*); int mostra_um_carro(Carro* c); { Carro info; int opcao = 2; switch (opcao) { case 2: le_um_carro(&info); mostra_um_carro(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() int le_um_carro(Carro* C) { char aux[200]; Carro info; printf("Informe o numero da placa [7 digitos]: "); placa: fflush(stdin); gets(aux); if (strlen(aux) < 8) { printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: "); goto placa; } else if (strlen(aux) > 8) { printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: "); goto placa; } else { strcpy(info.placa, aux); } printf("Informe a marca do veiculo: "); gets(info.marca); printf("Informe o modelo do veiculo: "); gets(info.modelo); printf("Informe a cor do veiculo: "); gets(info.cor); printf("Informe o ano do veiculo: "); gets(info.ano); *C = info; return 0; }; // le_um_carro() int mostra_um_carro(Carro* c) { printf("Marca/Modelo: %s %s Cor: %s Placa: %s Entrada: %s \n", c->marca, c->modelo, c->cor, c->placa, c->ano ); return 0; };
  23. @arfneto Ahh sim, agora que vi aquela mensagem. Deu tudo certo, agora vou tentar colocar o codigo do cliente nele
  24. @arfneto #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> struct cad_cliente { char nome[10]; int idade; char CPF_CNPJ[20]; char CNH[30]; char Endereco[50]; }; struct cad_veiculo { char placa[10]; char modelo; char marca[20]; char cor; char ano; }; int main(void) { Carro info; int opcao = 2; switch (opcao) { case 2: le_um_carro(&info); mostra_um_carro(&info); break; default: printf("Opcao inesperada: %d\n", opcao); break; }; // switch() }; // main() int le_um_carro(Carro* C) { char aux[200]; Carro info; printf("Informe o numero da placa [7 digitos]: "); placa: fflush(stdin); gets(aux); if (strlen(aux) < 7) { printf("erro quantidade de digitos menor do que o correto\n"); printf("Digite novamente: "); goto placa; } else if (strlen(aux) > 7) { printf("erro quantidade de digitos maior do que o correto\n"); printf("Digite novamente: "); goto placa; } else { strcpy(info.placa, aux); } printf("Informe a marca do veiculo: "); gets(info.marca); printf("Informe o modelo do veiculo: "); gets(info.modelo); printf("Informe a cor do veiculo: "); gets(info.cor); printf("Informe o ano do veiculo: "); gets(info.ano); *C = info; return 0; }; // le_um_carro() Assim? @arfneto

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...