Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: 0916 en 12 de Junio 2021, 21:46

Título: Java programa proyecto final sistema realice altas bajas consultas #codigoJava
Publicado por: 0916 en 12 de Junio 2021, 21:46
Hola a todos estoy comenzando en este mundo ;)

Este es un proyecto que tengo que hacer pero ando bien perdido  :-\

¿Podrían ayudarme por favor?

Codifica y realiza un sistema  que contenga lo siguiente :
Que realice Altas, Bajás, Consultas ( utilizando Archivo de Textos )


Título: Re: Ayuda
Publicado por: Kabuto en 12 de Junio 2021, 23:50
Hola.

Altas y Bajas... ¿de qué? ¿Clientes? ¿Productos? ¿Estudiantes? ¿Libros?...

En cualquier caso, yo comenzaría haciéndolo sin guardar en ficheros de texto, esta funcionalidad la añadiría al final, cuando ya se tuviera un programa funcionando con su menú y tal..

Comienza tú un código, llega hasta donde puedas y te ayudamos a completar.
Título: Re: Ayuda
Publicado por: 0916 en 23 de Junio 2021, 23:14
Hola, esto es lo que llevo, pero no sé cómo dar de baja a alguien de los que ya he agregado.

Código: [Seleccionar]
package proyectofinal;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class ProyectoFinal {

    public static void main(String[] args) {
        File archivo;
        FileWriter escribir;
        PrintWriter linea;
        String nombre = "", control = "";
        archivo = new File("Proyecto.txt");
        if (!archivo.exists()) {
            try {
                archivo.createNewFile();
                nombre = JOptionPane.showInputDialog(null, "Ingresa el nombre",
                         "Solicitando datos", 3);
                control = JOptionPane.showInputDialog(null, "Ingresa el control",
                         "Solicitando datos", 3);
                escribir = new FileWriter(archivo, true);
                linea = new PrintWriter(escribir);
                linea.println(nombre);
                linea.println(control);
                linea.close();
                escribir.close();
            } catch (IOException ex) {
                Logger.getLogger(ProyectoFinal.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            try {

                nombre = JOptionPane.showInputDialog(null, "Ingresa el nombre",
                         "Solicitando datos", 3);
                control = JOptionPane.showInputDialog(null, "Ingresa el control",
                         "Solicitando datos", 3);
                escribir = new FileWriter(archivo, true);
                linea = new PrintWriter(escribir);
                linea.println(nombre);
                linea.println(control);
                linea.close();
                escribir.close();
            } catch (IOException ex) {
                Logger.getLogger(ProyectoFinal.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

    }
Título: Re: Ayuda
Publicado por: Kabuto en 24 de Junio 2021, 13:21
Para dar de baja, no podemos borrar directamente en el archivo. Hay que leer su contenido obviando lo que queremos "borrar" y luego volver a escribirlo todo, ya sin el dato que se ha de dar de baja.

Por otra parte, en este programa se requiere un menú de opciones y recomiendo usar métodos para cada acción, uno para escribir las altas, otro para hacer las bajas y otro para las consultas.

Te dejo una posible solución, con un menú mediante JOptionPane.
Hay comentarios explicando, pero pregunta cualquier cosa que no entiendas.
Un saludo.

Código: [Seleccionar]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

import javax.swing.JOptionPane;

public class ProyectoFinal {

public static void main(String[] args) {

final String[] OPCIONES = new String[] {"Alta", "Baja", "Consulta", "SALIR"};
int opcion = 0;

do {
opcion = JOptionPane.showOptionDialog(null, "Elija opcion:", "Menu Registro",
opcion, JOptionPane.QUESTION_MESSAGE, null, OPCIONES, null);

switch(opcion) {
case 0:
String nuevoNombre = JOptionPane.showInputDialog(null, "Ingresa el nombre",
                        "Solicitando datos", JOptionPane.QUESTION_MESSAGE);
String nuevoControl = JOptionPane.showInputDialog(null, "Ingresa el control",
                        "Solicitando datos", JOptionPane.QUESTION_MESSAGE);
alta(nuevoNombre, nuevoControl);
break;
case 1:
String borrarNombre = JOptionPane.showInputDialog(null, "Ingresa el nombre",
                        "Dar de baja", JOptionPane.QUESTION_MESSAGE);
baja(borrarNombre);
break;
case 2:
String consultaNombre = JOptionPane.showInputDialog(null, "Ingresa el nombre",
                        "Consultar", JOptionPane.QUESTION_MESSAGE);
String consulta = consulta(consultaNombre);
if (consulta == null)
JOptionPane.showMessageDialog(null, "No hay registro con ese nombre", "Consultar",
JOptionPane.WARNING_MESSAGE);
else
JOptionPane.showMessageDialog(null, "Datos encontrados:\n" + consulta, "Consultar",
JOptionPane.INFORMATION_MESSAGE);
break;
case 3:
JOptionPane.showMessageDialog(null, "FIN DE PROGRAMA", "Salir",
JOptionPane.INFORMATION_MESSAGE);
}
}while (opcion != 3);


}

private static void alta(String nombre, String control) {

try {
BufferedWriter escritor = new BufferedWriter(new FileWriter("proyecto.txt", true));
escritor.write(nombre + " -- " + control); //Escribimos nueva linea con los datos
escritor.newLine();
escritor.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Error: " + ex.getMessage(), "Nueva Alta",
JOptionPane.WARNING_MESSAGE);
}
}

private static void baja(String nombre) {
/*
* Para dar de baja no podemos borrar directamente del archivo.
* Hay que leer todos los datos, excepto la línea a dar de baja y
* volver a escribir el resto.
*/
StringBuilder datosLeidos = new StringBuilder(); //Aquí almacenaremos las líneas leídas
try {
BufferedReader lector = new BufferedReader(new FileReader("proyecto.txt"));
String linea = lector.readLine(); //Leemos primera línea
while (linea != null) { //Mientras hayan líneas para leer...
if (!linea.startsWith(nombre)) //Si NO es la linea que queremos dar de baja
datosLeidos.append(linea + "\n"); //La guardamos

linea = lector.readLine(); //Leemos siguiente línea
}
lector.close();

//Ya hemos leído todos los datos excepto el que queremos dar de baja.
//Volvemos a volcarlos en el archivo de texto
BufferedWriter escritor = new BufferedWriter(new FileWriter("proyecto.txt", false));
escritor.write(datosLeidos.toString());
escritor.close();
//Proceso de baja terminado.
JOptionPane.showMessageDialog(null, "Registro Actualizado", "Baja",
JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Error: " + ex.getMessage(), "Baja",
JOptionPane.WARNING_MESSAGE);
}
}

private static String consulta(String nombre) {
/*
* Para consultar buscamos por nombre en el archivo de texto
* y retornamos la línea de datos que corresponde
*/
try {
BufferedReader lector = new BufferedReader(new FileReader("proyecto.txt"));
String linea = lector.readLine();
while (linea != null) {
if (linea.startsWith(nombre)) { //Nombre encontrado, no hay que seguir buscando
lector.close(); //Cerramos lector
return linea; //Retornamos línea encontrada.
}
else //Si no, seguimos consultando líneas.
linea = lector.readLine();
}
lector.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Error: " + ex.getMessage(), "Consulta",
JOptionPane.WARNING_MESSAGE);
}

//Si durante la lectura no se ha retornado la línea buscada,
//es que no existe el nombre que se busca. Retornamos null.
return null;
}

}