Bom dia.
Estou a tentar desenvolver um programa simples para gerir livros usando listas. Tenho alguns problemas com a lógica a aplicar para resolver as questões que preciso de fazer. Gostaria que alguém me pudesse ajudar dando uma olhadela no código e dizendo se o que estou a fazer está no caminho certo ou se há sugestões para melhorar. Neste momento, a parte de inserir livros não está a funcionar correctamente. Há mais métodos que fiz para ver se funcionavam mas não fazem o que é pretendido no menu.
Agradeço desde já a ajuda.
Classe Menu
[code]package pacote;
import javax.swing.*;
public class Menu {
public static int Escolhas(){
int op;
do {
String a=“Menu”+
“\n1 - Inserir Livro”+
“\n2 - Listar Livros por ordem alfabética de título”+
“\n3 - Listar Livros de um autor por ordem alfabética de título”+
“\n4 - Listar Livros de uma Área por ordem alfabética de título” +
“\n5 - Listar Um Livro por ISBN”+
“\n6 - Eliminar Livro Por Título”+
“\n7 - Listar Autores com Livros”+
“\n0 - Sair”;
op=Integer.parseInt(JOptionPane.showInputDialog(a+"\nOpção? (0 a 7)"));
}
while ((op<0) || (op>7));
return op;
}
public static void main(String[]args){
ListaAutores la = new ListaAutores();
ListaLivros ll = new ListaLivros();
int opcao=Escolhas();
while (opcao!=0){
switch(opcao){
// Inserir Livros
case 1:{
String titulo=JOptionPane.showInputDialog("Inserir título do Livro: ");
int ano = Integer.parseInt(JOptionPane.showInputDialog("Inserir ano do Livro: "));
String isbn=JOptionPane.showInputDialog("Inserir ISBN do Livro: ");
double preco= Double.parseDouble(JOptionPane.showInputDialog("Inserir preço do Livro: "));
String area=JOptionPane.showInputDialog("Inserir Área Científica do Livro: ");
String nome=JOptionPane.showInputDialog("Inserir Autor do Livro: ");
Livro novo = new Livro(titulo, ano, isbn, preco, area);
ll.insere(novo);
la.insere(nome);
break;
}
// Listar Livros por ordem alfabética de título
case 2:{
ll.lista();
break;
}
// Listar Livros de um autor por ordem alfabética de título
case 3:{
la.listaAutores();
break;
}
//Listar Livros de uma Área por ordem alfabética de título
case 4:{
break;
}
//Listar Um Livro por ISBN
case 5:{
break;
}
//Eliminar Livro Por Título
case 6:{
break;
}
//Listar Autores com Livros
case 7:{
break;
}
default: System.out.println("Opção não disponível. Escolha uma das opções!");
}
opcao=Escolhas();
}
}
}[/code]
Classe Livro
[code]package pacote;
public class Livro {
private String titulo;
private int ano;
private String isbn;
private double preco;
private String area;
private Autor primAutor;
private Livro proxLivro;
public Livro (String tituloT, int anoT, String isbnT, double precoT, String areaT){
titulo = tituloT;
ano = anoT;
isbn = isbnT;
preco = precoT;
area = areaT;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public Livro getProxLivro() {
return proxLivro;
}
public void setProxLivro(Livro proxLivro) {
this.proxLivro = proxLivro;
}
}
[/code]
Classe Autor
[code]package pacote;
public class Autor {
private String nome;
private Autor proxAutor;
public Autor getProxAutor() {
return proxAutor;
}
public void setProxAutor(Autor proxAutor) {
this.proxAutor = proxAutor;
}
private Livro primLivro;
public Autor (String nomeT){
nome = nomeT;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
[/code]
Classe ListaLivros
[code]package pacote;
import javax.swing.*;
public class ListaLivros {
private Livro primLivro;
public ListaLivros(){
primLivro = null;
}
public void insere(Livro novo){
if (primLivro == null){
primLivro=novo;
}
else {
if (primLivro.getTitulo().compareTo(novo.getTitulo()) < 0){
novo.setProxLivro(primLivro);
primLivro = novo;
}
else {
Livro temp = primLivro.getProxLivro();
Livro anteriorTemp = null;
while (temp != null && temp.getTitulo().compareTo(novo.getTitulo()) < 0){
anteriorTemp = temp;
temp = temp.getProxLivro();
}
novo.setProxLivro(temp);
anteriorTemp.setProxLivro(novo);
}
}
}
public Livro pesquisa(String titulo){
Livro temp = primLivro;
Livro posL = temp;
if (temp!=null) {
JOptionPane.showMessageDialog(null,temp.getTitulo().compareTo(titulo));
while (temp.getTitulo().compareTo(titulo)!=0 && temp.getProxLivro()!= null)
temp = temp.getProxLivro();
if(temp.getTitulo().compareTo(titulo)==0){
JOptionPane.showMessageDialog(null,temp.getTitulo());
JOptionPane.showMessageDialog(null,"O nome " + titulo + " existe");
return posL;
}
else
JOptionPane.showMessageDialog(null,"O nome " + titulo + " Não existe");
return posL;
}
else
JOptionPane.showMessageDialog(null,"Vazia!");
return posL;
}
public void lista(){
Livro temp = primLivro;
String x="";
while (temp != null){
x=x+"Título: "+temp.getTitulo()+"\n Ano: "+temp.getAno()+"\n ISBN: "+temp.getIsbn()+"\n Preço: "+temp.getPreco()+"\n Área Científica: "+temp.getArea()+"\n";
temp= temp.getProxLivro();
}
JOptionPane.showMessageDialog(null, x);
}
}
[/code]
Classe ListaAutores
[code]package pacote;
import javax.swing.*;
public class ListaAutores {
private Autor primAutor;
public ListaAutores(){
primAutor=null;
}
public void insere(String nome){
Autor novo = new Autor(nome);
if (primAutor == null){
novo.setNome(nome);
primAutor=novo;
}
else {
if (primAutor.getNome().compareTo(nome) > 0){
novo.setProxAutor(primAutor);
primAutor = novo;
}
else {
Autor temp = primAutor;
Autor anteriorTemp = null;
while (temp != null && temp.getNome().compareTo(nome) < 0){
anteriorTemp = temp;
temp = temp.getProxAutor();
}
novo.setProxAutor(temp);
anteriorTemp.setProxAutor(novo);
}
}
}
public Autor pesquisa(String nome){
Autor temp = primAutor;
Autor posA = temp;
if (temp!=null) {
// JOptionPane.showMessageDialog(null,temp.getNome().compareTo(nome));
while (temp.getNome().compareTo(nome)!=0 && temp.getProxAutor()!= null)
temp = temp.getProxAutor();
if(temp.getNome().compareTo(nome)==0){
//JOptionPane.showMessageDialog(null,temp.getNome());
JOptionPane.showMessageDialog(null,"O nome " + nome + " existe");
return posA;
}
else
JOptionPane.showMessageDialog(null,"O nome " + nome + " Não existe");
return posA;
}
else
JOptionPane.showMessageDialog(null,"Vazia!");
return posA;
}
public void listaAutores(){
Autor temp = primAutor;
String x="";
while (temp != null){
x=x+temp.getNome()+"\n";
temp= temp.getProxAutor();
}
JOptionPane.showMessageDialog(null, x);
}
}[/code]