Вы находитесь на странице: 1из 15

Disear el esquema de almacenamiento dinmico: Seleccionar los tipos de estructuras dinmicas a ser implementadas (Lista enlazada simple, doble

y/o circular) para cada clase de datos y justificar el porque de esta seleccin. 1) Productos: Para esta clase utilizaremos una lista enlazada circular, ya que en este tipo de listas el ltimo nodo esta unido al primer nodo, y es como un retroalimentador, lo necesitaremos para poder regresar con rapidez quizs al primer producto que tengamos, ya que haremos un software para una librerabazar, donde en la cual se realizarn ventas rpidas. 2) Clientes: Para esta clase utilizaremos una lista enlazada simple, as todos los registros estarn unidos por enlaces que salen de cada nodo, por lo cual la bsqueda ser rpida y no ser necesario utilizar una lista enlazada circular. 3) Empleados: Esta clase ser igual a la clase clientes, utilizaremos tambin una lista enlazada simple. 4) Usuarios: En esta clase utilizaremos una lista doblemente enlazada, ya que en esta tipo de listas el nodo tiene dos enlaces uno hacia el nodo anterior y otro hacia el nodo siguiente o null si es el nodo final, por lo tanto nosotros necesitamos esas uniones para mantener el registro en orden. 5) Ventas: En esta clase utilizaremos una lista enlazada circular, ya que al igual que la clase ventas necesitamos que el ltimo nodo este unido al primer nodo para as poder mantener una conexin entre todas nuestras ventas y as poder hallar rpidamente algn registro que necesitemos consultar con rapidez y seguridad. 6) Ventas_Detalles: En esta clase utilizaremos tambin una lista enlazada circular, porque en esa clase tendremos un detalle especfico de cada venta que tengamos, por ello necesitamos que se encuentren unidos el detalle final de la venta con el detalle inicial de la misma, as mantendremos un orden en los detalles de la ventas de la librera. 7) Movimientos_Caja: En esta clase tambin utilizaremos una lista enlazada circular, ya que en todo lo que tenga que ver con ventas, movimientos y lo interno de la empresa siempre necesitaremos mantener unidos los datos de principio a fin y viceversa. 8) CuentasXCobrar: En esta clase utilizaremos una lista enlazada circular, ya que casi siempre necesitaremos regresar al principio rpidamente para ver quizs el estado de cuenta o lo que se debe por lo que esta lista realiza este trabajo con rapidez y seguridad.

Especificar cuales de ellas sern administradas como LIFO o FIFO y justificar el porque de esta seleccin para cada una de las listas. 1) Productos: Para esta clase utilizaremos LIFO, ya que el primer producto que salga ser siempre el primero en llegar, para as mantener el orden de la produccin. 2) Clientes: Para esta clase utilizaremos tambin LIFO porque es necesario tambin mantener en orden a los clientes y que el primero en llegar sea el primero en salir. 3) Empleados: Esta clase utilizaremos FIFO porque el ltimo empleado en llegar ser el primero en salir para ver algn descuento o algo que disponga. 4) Usuarios: En esta clase utilizaremos LIFO porque tambin es necesario mantener el orden de todo. 5) Ventas: En esta clase utilizaremos LIFO porque es necesario mantener en orden todas las ventas. 6) Ventas_Detalles: En esta clase utilizaremos FIFO porque la ltima venta ser la primera en salir para dar un mejor detalle del da. 7) Movimientos_Caja: En esta clase utilizaremos FIFO porque el ltimo movimiento de la caja ser el primero en salir. 8) CuentasXCobrar: En esta clase utilizaremos LIFO para mantener el orden de las cuentas por cobrar.

Codificacin de los mdulo y funcionalidades al 50% Los mdulos y funcionalidades que se codifiquen deben estar totalmente operativos.

package Seguridad;

import Menu.Principal;

public class Ingreso extends javax.swing.JFrame {

public Ingreso() { initComponents(); } private void btnIngresarActionPerformed(java.awt.event.ActionEvent evt) { Principal Dialogo = new Principal(); Dialogo.setVisible(true); this.dispose(); }

private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0);

} public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { new Ingreso().setVisible(true); } }); }

package Menu;

import Administracion.ListadoMaestros;

public class Principal extends javax.swing.JFrame {

public Principal() { initComponents(); } private void mnuArchivoActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: ListadoMaestros Dialogo = new ListadoMaestros(this, true);

Dialogo.setVisible(true); }

private void mnuSalirActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: System.exit(0); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { new Principal().setVisible(true); } }); }

public final class ListadoMaestros extends javax.swing.JDialog { //Declaramos la tabla DefaultTableModel modTabla; //Declaramos la variable Nuevo(1=Nuevo; 0=Modificar) public int Nuevo = 0;

//Mtodo Habilitar Estado=true; los controles estarn activos, Estado=false; los controles estarn en modo solo lectura public void Habilitar(boolean Estado) { //Productos txtNombre.setEditable(Estado); cboTipo.setEnabled(Estado); cboSubTipo.setEnabled(Estado); txtPrecio.setEditable(Estado);

txtDescripcion.setEditable(Estado);

//Empleados txtApellidos.setEditable(Estado); txtNombres.setEditable(Estado); txtTelefonos.setEditable(Estado); txtMail.setEditable(Estado); txtDireccion.setEditable(Estado); cboTipoDocumento.setEnabled(Estado); txtNroDocumento.setEditable(Estado); cboSexo.setEnabled(Estado); txtFechaNacimiento.setEditable(Estado); cboCargo.setEnabled(Estado); txtFechaIngreso.setEditable(Estado);

//Clientes cboTipoCliente.setEnabled(Estado); txtClienteNombre.setEditable(Estado); txtClienteTelef.setEditable(Estado); txtClienteMail.setEditable(Estado); txtClienteDireccion.setEditable(Estado); cboClienteTipoDoc.setEnabled(Estado); txtClienteNroDoc.setEditable(Estado); }

public void habilitarBotones(boolean Estado) { btnNuevo.setEnabled(Estado);

btnModificar.setEnabled(Estado); }

public ListadoMaestros(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents();

//Cargamos la tabla modTabla = (DefaultTableModel) tblListado.getModel();

//Llamamos al evento ActionPerformed del Combo Entidad cboEntidadActionPerformed(null); Habilitar(false); habilitarBotones(true); } private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) { Nuevo = 1; Habilitar(true); habilitarBotones(false); btnGrabar.setEnabled(true); } // TODO add your handling code here: switch (cboEntidad.getSelectedIndex()) { case 0: pnlProductos.setVisible(true); pnlEmpleados.setVisible(false); pnlClientes.setVisible(false); break; case 1: pnlProductos.setVisible(false); pnlEmpleados.setVisible(true); pnlClientes.setVisible(false); break; case 2: pnlProductos.setVisible(false); pnlEmpleados.setVisible(false); pnlClientes.setVisible(true); break; } }

public void abrir() { try { FileReader fr = new FileReader("BD/" + cboEntidad.getSelectedItem() + ".txt"); BufferedReader br = new BufferedReader(fr); String linea; while ((linea = br.readLine()) != null) { StringTokenizer st = new StringTokenizer(linea, ";");

switch (cboEntidad.getSelectedIndex()) { case 0: String Codigo = st.nextToken(); String Nombre = st.nextToken(); String Descripcion = st.nextToken(); String Tipo = st.nextToken(); String SubTipo = st.nextToken(); String Precio = st.nextToken();

Object[] Fila = {Codigo, Nombre, Descripcion, Tipo, SubTipo, Precio}; modTabla.addRow(Fila); break; } } br.close(); } catch (Exception ex) { JOptionPane.showMessageDialog(this, "Error en cargar archivo"); JOptionPane.showMessageDialog(null, cboEntidad.getSelectedItem());

} }

public void grabar() { try { FileWriter fw = new FileWriter("BD/" + cboEntidad.getSelectedItem() + ".txt"); PrintWriter pw = new PrintWriter(fw);

int TotalRegistros = tblListado.getRowCount();

for (int i = 0; i < TotalRegistros; i++) { String Codigo = tblListado.getValueAt(i, 0).toString(); String Nombre = tblListado.getValueAt(i, 1).toString(); String Descripcion = tblListado.getValueAt(i, 2).toString(); String Tipo = tblListado.getValueAt(i, 3).toString(); String SubTipo = tblListado.getValueAt(i, 4).toString(); String Precio = tblListado.getValueAt(i, 5).toString();

pw.println(Codigo + ";" + Nombre + ";" + Descripcion + ";" + Tipo + ";" + SubTipo + ";" + Precio); } pw.close();// cierra archivo } catch (Exception ex) { JOptionPane.showMessageDialog(this, "Error en grabacin de archivo"); } }

//Mtodo para dejar la tabla vaca public void limpiarTabla() { while (modTabla.getRowCount() > 0) { modTabla.removeRow(0); } }

private void cboEntidadActionPerformed(java.awt.event.ActionEvent evt) { limpiarTabla(); switch (cboEntidad.getSelectedIndex()) { case 0: pnlProductos.setVisible(true); pnlEmpleados.setVisible(false); pnlClientes.setVisible(false); abrir(); break; case 1: pnlProductos.setVisible(false); pnlEmpleados.setVisible(true); pnlClientes.setVisible(false); abrir(); break; case 2: pnlProductos.setVisible(false); pnlEmpleados.setVisible(false); pnlClientes.setVisible(true); abrir();

break; } } // TODO add your handling code here:} private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) { if (Nuevo == 1) { String Codigo = "00005"; String Nombre = txtNombre.getText(); String Descripcion = txtDescripcion.getText(); String Tipo = cboTipo.getSelectedItem().toString(); String SubTipo = cboSubTipo.getSelectedItem().toString(); String Precio = txtPrecio.getText();

Object[] registro = {Codigo, Nombre, Descripcion, Tipo, SubTipo, Precio}; modTabla.addRow(registro); } else { modTabla.setValueAt(txtNombre.getText(), tblListado.rowAtPoint(null), 1); modTabla.setValueAt(txtDescripcion.getText(), tblListado.rowAtPoint(null), 2); modTabla.setValueAt(cboTipo.getSelectedItem(), tblListado.rowAtPoint(null), 3); modTabla.setValueAt(cboSubTipo.getSelectedItem(), tblListado.rowAtPoint(null), 4); modTabla.setValueAt(txtPrecio.getText(), tblListado.rowAtPoint(null), 5); }

grabar(); Habilitar(false); habilitarBotones(true);

btnGrabar.setEnabled(false); }

private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Nuevo = 0; Habilitar(true); habilitarBotones(false); btnGrabar.setEnabled(true); //JOptionPane.showMessageDialog(null, tblListado.getSelectedRow()); }

private void tblListadoMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: int fila = tblListado.rowAtPoint(evt.getPoint());

if (fila > -1) { txtNombre.setText(String.valueOf(tblListado.getValueAt(fila, 1))); txtDescripcion.setText(String.valueOf(tblListado.getValueAt(fila, 2))); cboTipo.setSelectedItem(String.valueOf(tblListado.getValueAt(fila, 3))); cboSubTipo.setSelectedItem(String.valueOf(tblListado.getValueAt(fila, 4))); txtPrecio.setText(String.valueOf(tblListado.getValueAt(fila, 5))); } }

private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0);

} public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { ListadoMaestros dialog = new ListadoMaestros(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() {

@Override public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } }); }

Вам также может понравиться