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

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;
   }
   
   
   
}
1 curtida

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

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.

1 curtida

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();
	}
}
3 curtidas

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

[code]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;
}

}[/code]

[code]import java.util.ArrayList;
import java.util.Scanner;

public class CadastraUsuarios {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
ArrayList listaDeUsuarios = new ArrayList();
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();
	}

}

}[/code]

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

1 curtida

Alguem tem algum exemplo para baixar?

vlw

1 curtida

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.

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

Perfeito o codigo ajudou mt aki tira umas duvidas