Menu

28 respostas
E

Criar um projeto Java que abra uma conexão com um BD SQLite, arquivo aluno.db, e
monte um menu com seguintes opções para o usuário:

  1. Inserir novo. Solicita que o usuário informe dados de um novo aluno e faz a
    inserção no BD, retornando em seguida ao menu principal. Se o usuário tentar
    incluir um número de matrícula que já existe, o próprio BD irá gerar uma exceção e
    uma mensagem apropriada deve ser exibida.
  2. Listar todos. Exibe matrícula, nome e idade de todos os alunos existentes,
    retornando em seguida ao menu principal.
  3. Exportar dados para arquivo CSV. Solicita que o usuário informe o nome desejado
    para o arquivo e realiza a exportação dos dados para um arquivo no formato CSV,
    usando vírgula como separador. Retornando em seguida ao menu principal.
  4. Sair. Encerra o programa.

COMO FAZ PRA CRIAR APENAS O MENU?

28 Respostas

RoinujNosde

Faça um while(true), imprima as opções usando System.out.println, peça a opção deseja usando a classe Scanner. Se a opção for 4, chame break; para sair do while.

Lucas_Camara

Tente implementar de acordo com esse esquema:

DECLARA opcao

FAÇA
	IMPRIMA "=== MENU ==="
	IMPRIMA "1 - Ação A"
	IMPRIMA "2 - Ação B"
	IMPRIMA "3 - Ação C"
	IMPRIMA "0 - Sair"
	
	LEIA opcao
ENQUANTO (opcao != 0)
E
public class Main
{
  public static void main(String[] args) 
  {
        System.out.println("\tInserir alunos");
        System.out.println("0. Fim");
        System.out.println("1. Inserir");
        System.out.println("2. Listar todos");
        System.out.println("3. CSV");
        System.out.println("4. SAIR");
        System.out.println("Opcao: ");
    }
    {
        int opcao;
        Scanner scn = new Scanner(System.in);
        
        do{
            menu();
            opcao = scn.nextInt();
            
            switch(opcao){
            case 1:
                inserir();
                break;
                
            case 2:
                listarTodos();
                break;
                
            case 3:
                CSV();
                break;
                
            case 4:
                sair();
                break;
            
            default:
                System.out.println("Opção inválida.");
            }
        } while(opcao != 0);
    }
}

Seria algo parecido com isso?

Lucas_Camara

Soh o método menu que não encontrei. Onde vc definiu ele?

E

kkkkk ai meu Jesus. Rindo de nervoso. Não faço ideia, sei nem o que eu fiz aí. Essa atividade tá complicada pra mim, me desculpem.

RoinujNosde

Coloca esse trecho num método chamado menu:

private static void menu() {
   //Trecho
}
E
private static void menu() {

System.out.println("\tInserir alunos");

System.out.println(“0. Fim”);

System.out.println(“1. Inserir”);

System.out.println(“2. Listar todos”);

System.out.println(“3. CSV”);

System.out.println(“4. SAIR”);

System.out.println("Opcao: ");

}

Assim?

RoinujNosde

Isso, agora só implementar a lógica dos outros métodos inserir, listarTodos, etc.

E
import java.io.BufferedReader;

import <a href="http://java.io">java.io</a>.<em>;

import java.util.ArrayList;

import java.util.List;

import java.math.</em>;

import java.lang.Double;
class Acesso

{

public static void main(String[] args)

{

finally

{

try (Connection conn = Myslql.connectDB(aluno.db))

{

Scanner sc = new Scanner.in();

System.out.println("Digite o nome do aluno: ");

path = in.nextLine();

System.out.printl("Digite a matrícula: ");

path = in.nextLine();

System.out.printl("Digite a idade: ");

path = in.nextLine();
FileWriter fw = new FileWriter("aluno.db", true);
       BufferedWriter bw = new BufferedWriter(fw);
    
       String qryInserString = "InsertString new Aluno" +
       "WHERE nome = ' ' + WHERE matricula = ' ' + WHERE idade = ' '";
       Statement stmt = conn.createStatement();
       int delNum = stmt.executeUpdate(qryInserString);
       while (rs.next()) 
       {
        System.out.print(rs.getString(1)+":");
        System.out.println(rs.setString("nome"));
        System.out.print(rs.getString(2)+":");
        System.out.println(rs.setString(idade));
        System.out.print(rs.getString(3)+":");
        System.out.println(rs.setString(matricula));
        
       }
     }
   } catch (SQLException ex)
 {
   System.out.println("Erro: " + e.getMessage());
 }

}
}

{
String path = “aluno.db”;

List<Acesso> list = new ArrayList<Acesso>();


try(BufferedReader br = new BufferedReader(new FileReader(path)))
{
  String line = br.readLine();
  line = br.readLine() throw IOException;
  while (line != null)
  {
    String[] vect = line.split(",");
    String nome = vect[0];
    int idade = Integer.vectInteger[1];
    byte matricula = Byte.parseByte(vect[2]);

    Acesso acess = new Acesso(nome,idade,matricula);
    list.add(acess);

    line = br.readLine();
    
  }
    System.out.println("Itens: ");
    for(Acesso a : list)
    {
      System.out.println(p);
    }

} catch (IOException e)
{
  System.out.println("Error: "+e.getMessage());
}

}
}

okay, esse é o resto do programa, tá bem errado eu sei (pode rir, eu deixo). Mas daí, eu num sei nem pra onde vai depois daqui.

RoinujNosde

Mostra esse método aqui

E

Eu fiz ele em outra classe

RoinujNosde

Certo, vc tá usando SQLite. Então não precisa usar os códigos abaixo:

Use classes JDBC, como Connection, Statement, ResultSet. Você aprendeu sobre isso?

E

Sim, inclusive to usando, acho que só a resultset que não coloquei ainda

RoinujNosde

Você pode inserir assim:

//Pegar esses valores
String nome;
int matricula;
int idade;

//Estou assumindo que a tabela é alunos
String sql = "INSERT INTO alunos (nome, matricula, idade) VALUES (?, ?, ?)";

try (Connection conn = Myslql.connectDB(aluno.db); PreparedStatement stm = conn.prepareStatement(sql))
{
    stm.setString(1, nome);
    stm.setInt(2, matricula);
    stm.setInt(3, idade);
    stm.execute();
} catch (SQLException ex) {
    ex.printStackTrace();
}
E

Essa é só a parte do insert né?

RoinujNosde

Sim, para pegar do banco:

try (Connection conn = Myslql.connectDB(aluno.db); Statement stm = conn.createStatement())
{
    ResultSet set = stm.executeQuery("SELECT * FROM alunos;");
    while(set.next()) {
         String nome = set.getString("nome");
         int idade = set.getInt("idade");
         int matricula = set.getInt("matricula");
    }
} catch (SQLException ex) {
    ex.printStackTrace();
}

Eu recomendo criar uma classe Aluno para trabalhar melhor com esses dados.

E

huumm, bem que professor disse que talvez iriamos precisar de uma classe aluno

E

Então no caso o item nº 2 vai ser esse código?

RoinujNosde

Sim, só precisa fazer uns ajustes, como colocar os alunos numa lista e retornar no método.

E

Eu vou fazer um array, né?

RoinujNosde

Não pode usar List (ArrayList, por ex)?

E

É, isso. Pode, eu acho kkk

RoinujNosde

Ah, fica mais fácil então.

Cria a classe Aluno primeiro.

E

Criei. Ta assim:

RoinujNosde

Na classe Aluno seria melhor ter apenas o nome, idade e matricula.
Esse código de banco de dados deixa na classe Acesso.

E
public class Aluno

{

String nome = set.getString(nome);

int idade = set.getInt(idade);

int matricula = set.getInt(matricula);

assim?

E

Acabei de entregar meu trabalho, tomara que eu consiga uma nota boa. Não compilou e ainda ficou com alguns erros. Mas enfim… Muito obrigada pela ajuda e atenção. :blush:

RoinujNosde

Boa sorte.

Criado 21 de maio de 2021
Ultima resposta 21 de mai. de 2021
Respostas 28
Participantes 3