Menu

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?

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.

1 curtida

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)
1 curtida
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?

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

1 curtida

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.

1 curtida

Coloca esse trecho num método chamado menu:

private static void menu() {
   //Trecho
}
1 curtida

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?

1 curtida

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

1 curtida

import java.io.BufferedReader;
import java.io.;
import java.util.ArrayList;
import java.util.List;
import java.math.
;
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.

Mostra esse método aqui

1 curtida

Eu fiz ele em outra classe

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?

1 curtida

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

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

Essa é só a parte do insert né?

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.

1 curtida

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

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

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

1 curtida