Criando um sistema simples de cadastro de clientes...[RESOLVIDO]

8 respostas
J

Boa Noite pessoal,

Acabei de entrar nos estudos da Classe Collection, e estou focando em ArrayList, por isso tive uma ideia de criar um programa simples de cadastro de clientes que geraria uma lista
de 10 cadastro de usuarios. Assim usei o Scanner como entrada de dados para atribuir as variaveis do objeto.
Porém sempre que o sistema reinicia ele cria o mesmo objeto, gostaria de saber se tem como criar um programa que solicita os dados via Scanner e vai criando objetos individuais
e guardando eles no ArrayList, como se fosse banco de dados, O arraylist pode ser usado dessa forma? Será que é possivel tal programa que solicita dados e vai criando instancias individuais? Ou será que o que eu quero tem tudo a ver com Banco de Dados? por favor me ajudem com exemplos.

Grato!!!

// CLASSE DE CADASTRO DE USUARIOS...

import java.util.Scanner;
import java.util.ArrayList;
public class Usuarios {

    public static void main(String[] args) {
     
        Scanner l = new Scanner(System.in);
        
        System.out.println("BEM VINDO AO CADASTRO DE USUÁRIOS");
        
        System.out.println("Digite os dados: "+"\nNome ");
        
        String nome = l.nextLine();
        
        System.out.println("Login desejado ");
        
        String login = l.nextLine();
        
        System.out.println("Cargo ");
        
        String cargo = l.nextLine();
        
        System.out.println("Senha de acesso");
        
        int senha = l.nextInt();
        
        
        Dados usuario;
        
        usuario = new Dados();
        
        usuario.setNome(nome);
        usuario.setLogin(login);
        usuario.setCargo(cargo);
        
        
        ArrayList<Dados> usuarios = new ArrayList<Dados>();
        
        usuarios.add(usuario);
        
        System.out.println(usuario.getNome()+"\n"+usuario.getLogin()+"\n"+usuario.getCargo());
     }
}
// CLASSE QUE GUARDA AS VARIAVEIS DOS OBJETOS...
public class Dados {
    
   private String nome;
   
   private int senha;
   
   private String login;
   
   private String cargo;
    
   
   public Dados(){
   
   
   }
   
   public String getNome(){
   
   return nome;
   }
   
   public void setNome(String name){
   
   nome = name;
   }
   
   public String getLogin(){
   
   return login;
   }
   
   public void setLogin(String log ){
   
   login = log;
   }
   
   public String getCargo(){
   
   return cargo;
   }
   
   public void setCargo(String car){
   
   cargo = car;
   }
   
   
   
}

8 Respostas

E

De acordo com o código o funcionamento é esperado.

ArrayList só existe em tempo de execução, não há persistência de dados.

Você precisa salvar as informações os em disco, seja banco de dados, xml, csv

J

Entendi, mas por exemplo se eu criar um ciclo de 30 repetições pelo while, será que ele consegue criar 30 objetos diferentes, e armazenar os 30 no arrayList, se tiver como, passa o codigo para mim, minha dificuldade está em criar esses objetos individuais.

E

Acredito que esse exemplo se aplique dentro do que você espera, caso você não entender alguma parte da lógica é só retornar que eu explico.

// CLASSE DE CADASTRO DE USUARIOS...

import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;

public class Main {

	private Scanner l;
	private boolean execute;
	private List<Dados> dados;

	public static void main(String[] args) {
		new Main();
	}

	private Main() {
		l = new Scanner(System.in);
		execute = true;
		dados = new ArrayList<Dados>();

		System.out.println("BEM VINDO AO CADASTRO DE USUÁRIOS");

		while (execute) {
			String opcao = menu();

			if (opcao.equalsIgnoreCase("n")) {
				cadastrar();
			} else if (opcao.equalsIgnoreCase("l")) {
				listarCadastros();
			} else if (opcao.equalsIgnoreCase("x")) {
				execute = false;
			} else {
				System.out.println("\nOpção Inválida seu noob !!! \n");
			}
		}
	}

	private String menu() {
		System.out.println("Selecione a opção:");
		System.out.println("N - Novo cadastro");
		System.out.println("L - Listar cadastros");
		System.out.println("X - Sair");
		return l.nextLine();
	}

	private void cadastrar() {
		boolean cadastrando = true;

		while (cadastrando) {
			System.out.println("Cadastro de Usuário");
			Dados d = new Dados();
			d.setNome(textInput("Nome:"));
			d.setLogin(textInput("Login: "));
			d.setCargo(textInput("Cargo: "));

			String cadastrar = textInput("Adicionar cadastro (S/N) ?");
			if (cadastrar.equalsIgnoreCase("s")) {
				System.out.println("Cadastro adicionado !!!");
				dados.add(d);
			} else if (cadastrar.equalsIgnoreCase("n")){
				System.out.println("Cadastro ignorado !!!");
			} else {
				System.out.println("\nOpção inválida seu noob, vou ignorar o cadastro só pra você ter que digitar denovo !!! \n");
			}

			String continua = textInput("Continuar cadastrando (S/N) ?");
			if (continua.equalsIgnoreCase("N")) {
				cadastrando = false;
			} else if (continua.equalsIgnoreCase("s")){
				// se for s sai do if e volta para o inicio do while
			} else {
				System.out.println("\nOpção inválida seu noob, eu vou sair só porque você não colabora !!! \n");
				cadastrando = false;
			}
		}
	}

	private void listarCadastros() {
		if (dados.size() == 0) {
			System.out.println("\nNão existem cadastros !!!\n");
		} else {
			System.out.println("\nLista de Cadastros\n");
			for (int i = 0; i < dados.size(); i++) {
				Dados d = dados.get(i);
				System.out.println("Cadastro número: " + i);
				System.out.println("\tNome: " + d.getNome());
				System.out.println("\tLogin: " + d.getLogin());
				System.out.println("\tCargo: " + d.getCargo() + "\n");
			}
			System.out.println("\nFim da lista\n");
		}
	}

	private String textInput(String label) {
		System.out.println(label);
		return l.nextLine();
	}
}
R

Tente usar nomes de variáveis que digam alguma coisa sobre ela, e melhore sua identação...
Segue abaixo uma maneira mais "bonita":

public class Usuario {
	private String nome;
	private int senha;
	private String login;
	private String cargo;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getSenha() {
		return senha;
	}
	public void setSenha(int senha) {
		this.senha = senha;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getCargo() {
		return cargo;
	}
	public void setCargo(String cargo) {
		this.cargo = cargo;
	}
}
import java.util.ArrayList;
import java.util.Scanner;


public class CadastraUsuarios {
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		ArrayList<Usuario> listaDeUsuarios = new ArrayList<Usuario>();
		Usuario usuario = new Usuario();		
		int op = 0;
		
		System.out.println("Digite 1 para cadastrar usuários ou 0 para sair !");
		op = scanner.nextInt();
		
		while(op != 0){
			System.out.println("Bem vindo ao sistema de cadastros de usuários");
			System.out.println("Digite o nome do usuário");
			usuario.setNome(scanner.nextLine());
			
			System.out.println("Digite o cargo do usuário");
			usuario.setCargo(scanner.nextLine());
			
			System.out.println("Digite o login");
			usuario.setLogin(scanner.nextLine());
			
			System.out.println("Digite a senha");
			usuario.setLogin(scanner.nextLine());
			
			listaDeUsuarios.add(usuario);
			usuario = new Usuario();
			
			System.out.println("Digite 1 para cadastrar usuários ou 0 para sair !");
			op = scanner.nextInt();
		}
	
	}
}
J

Valeu ezequiellorenzatti , vc me trouxe um exemplo perfeito do que eu queria, vou estudar o codigo caso tiver duvida vou perguntar, valeu mesmo…

L

Alguem tem algum exemplo para baixar?

vlw

J

LeandroAlff não sei se te responde mas basta copiar o codigo acima e colar diretamente na IDE, contanto que o nome da classe seja o mesmo nome do arquivo, foi assim
que eu testei o codigo do ezequiel, e deu certo.

A

[color=black]Rieth[i] [/color]

Perfeito o codigo ajudou mt aki tira umas duvidas

Criado 17 de maio de 2013
Ultima resposta 6 de set. de 2014
Respostas 8
Participantes 5