Sei sulla pagina 1di 185

Sistema de control para el Video Club Cine Mana

INTERACCION HOMBRE-MAQUINA
M.T.C. Laura Lpez Daz.

Integrantes de Equipo:
Jessica del Carmen Montejo Garca
Roosvelt Omar Prez Hernndez.
Iris Dafne Castellanos Hernndez.

Contenido
1.

INTRODUCCION. ......................................................................................................................... 3

1.1.

Planteamiento del problema. ......................................................................................... 3

1.2.

Justificacin del proyecto. ................................................................................................ 3

1.3.

Objetivo general. ................................................................................................................... 4

1.4.

Objetivos especficos. ......................................................................................................... 4

1.5.

Alcances. .................................................................................................................................... 5

2. DATOS DE LA ORGANIZACIN. ................................................................................................ 6


2.1.

Nombre de la empresa. ...................................................................................................... 6

2.2.

Antecedentes. ......................................................................................................................... 6

3. CONSTRUCCION Y DESARROLLO DE LA APLICACIN. ................................................. 8


3.1.

Presentacin de LA INTERFAZ DEL Sistema. .......................................................... 8

3.2.

CODIGO DE DESARROLLO DEL Sistema. ................................................................. 17

Clase principal:.........................................................................................................................17
Clase insertarCliente ...............................................................................................................24
Clase insertaPelicula ...............................................................................................................34
Clase borrarCliente. .................................................................................................................53
Clase borrarPelicula. ..............................................................................................................61
Clase actualizarCliente ..........................................................................................................69
Clase actualizarPelicula........................................................................................................88
Clase alquilerDePeliculas .................................................................................................. 110
Clase cierreSemanal ............................................................................................................. 135
Clase cierreMensual ............................................................................................................. 156
Clase diaAlquilerAltoBajo ................................................................................................. 166
Clase panelImagen ................................................................................................................ 178
Clase pintaImagen ................................................................................................................. 179
Clase acercaDe ......................................................................................................................... 181

PGINA 1

PGINA 2

1.

INTRODUCCION.

1.1. PLANTEAMIENTO DEL PROBLEMA.


La empresa video club Cine Mana no cuenta con un sistema en el cual se puedan
almacenar y decepcionar los datos de pelculas y clientes asociados. El registro de
los datos es de forma manual en una bitcora por lo cual es tardado y su forma de
archivar la informacin no es segura. Se presenta un mal manejo de informacin
lo que provoca desconocer el total de productos en exhibicin y existencia. As
mismo ignorar en qu forma se da la entrada y salida del de las pelculas y esto
hace que el trabajo sea ms laborioso y puede causar errores a la hora de llenar
la bitcora de entrada y salida, en muchas ocasiones la informacin incluida en
este no coincide con la cantidad y nombre de las pelculas y los clientes.
La problemtica surge que debido a que la mayora de las veces no coincide el
inventario obtenido de los totales registrados en la bitcora con el inventario
obtenido del conteo directo de los dvds existentes y al final cuando el administrador
desea conocer el resultado del inventario se deben consultar uno a uno los
registros de entrada y salida en la bitcora para encontrar el error lo cual implica
demasiado tiempo y generalmente errores en la clave, esto ocasiona malos
entendidos relacionados con las fechas y precios establecidos .

1.2. JUSTIFICACIN DEL PROYECTO.


Debido a la problemtica que genera el uso de un sistema manual para el control
de inventario como lo es la lentitud del sistema, la falta de seguridad en lo datos y
el descontrol, la implementacin de un sistema de informacin que controle el
proceso de renta, los asociados permitir a la empresa mantener el control
oportunamente, as como tambin conocer al final del periodo un estado confiable
de la situacin econmica de la empresa.
PGINA 3

La base de toda empresa es el control de los productos que entran y salen; de aqu
la importancia del manejo del inventario por parte de la misma es importante, ya
que los inventarios son el motor de una empresa es por ello que se debe de
proteger cuidadosamente la informacin. Los procesos automatizados, son
factores de vital importancia en una empresa, en esta se ha observado que la
innovacin y desarrollo de tecnologas de la informacin permitir el desarrollo de
la empresa.
Actualmente se puede afirmar que el proceso de contar y registrar datos financieros
se desarrolla de una manera ms simple y sencilla con el apoyo del contador, pero,
es preciso aclarar que se siguen rigiendo por los principios establecidos para
ejecutar la contabilidad empresarial. La creacin de este software que permita
llevar el control de inventario lograra que los usuarios estn satisfechos por la
rapidez al momento de solicitar informacin sobre las pelculas existentes, puesto
que sern revelados cuando los desee.

1.3. OBJETIVO GENERAL.


Disear, desarrollar e implementar un sistema para el video club Cine Mana,
ubicada en el municipio de Jalpa de Mndez, Tabasco, permitir llevar el control
de rentas que se registran da a da, reduciendo el tiempo de trabajo y as brindar
un mejor servicio a sus clientes.

1.4. OBJETIVOS ESPECFICOS.

Organizar la informacin necesaria.

Disear el modelo del sistema.

Desarrollar un sistema que sea amigable con los administradores.

Disear el prototipo del sistema.

PGINA 4

1.5. ALCANCES.
El sistema a desarrollar tendr la capacidad de:

Altas de productos.

Baja de productos.

Consulta de productos.

Renta de productos.

Control de inventario mediante reportes semanales y mensuales de total


de Rentas.

PGINA 5

2.

DATOS DE LA ORGANIZACIN.

2.1. NOMBRE DE LA EMPRESA.


Video Club Cine Mana ubicado en el barrio Santa Ana a un costado del DIF
municipal del municipio de Jalpa de Mndez, Tabasco.

2.2. ANTECEDENTES.
Hoy en da toda empresa debe de hacer uso de un bien sistema de administracin,
sobre todo por la gran competencia que hay hoy da, El nmero de videoclubs es
muy amplio por lo que con ms motivo es necesario darse a notar.

En este sentido los software de administracin con bases de datos (BD)


constituyeron parte integrante y fundamental del sistema de informacin y tienen
su razn de ser en la misma existencia de este. Hoy en da, las necesidades de
informacin de la sociedad actual se dejan sentir de forma cada vez ms imperiosa.
Y es que el problema de la informacin est estrechamente relacionado con el
desarrollo econmico y social. Es por ello que la investigacin, planificacin y la
toma de decisiones exigen una informacin precisa, oportuna, completa, coherente
y adaptada a las necesidades especficas de cada usuario y de cada circunstancia.
Fue as que las BD, surgi en respuesta al nuevo planteamiento de los sistemas
orientados hacia los datos para mejorar la calidad de las prestaciones de los
sistemas informticos y aumentar su rendimiento. Se constituyeron como una de
las herramientas ms ampliamente difundidas en la actual sociedad de la
informacin, utilizadas como fuentes secundarias en cuanto a recuperacin y
almacenamiento de informacin en todos los campos a nivel cientfico, social,
econmico, poltico y cultural.
Video Club Cine Mana perteneciente a las reas comerciales del municipio de
Jalpa de Mendez, Tabasco, ofrece servicio de calidad, sin embargo se ha
PGINA 6

interesado por mejorar sus servicio administrativos siendo su intencin digitalizar


su informacin de productos pensando en evitar la prdida de tiempo en la
bsqueda manual de los productos solicitados por los usuarios y poder consultar
la informacin a travs de medios digitales. As mismo poder mejorar la
presentacin de sus servicios tanto para empleados y usuarios.

Es as que surge este proyecto, que tiene como propsito, la creacin de una base
de datos donde se puedan guardar y obtener fcilmente la informacin de pelculas
existentes dentro del video club.

PGINA 7

3.
CONSTRUCCION Y DESARROLLO DE
LA APLICACIN.
3.1. PRESENTACIN DE LA INTERFAZ DEL SISTEMA.
Ventana principal: desde aqu podremos ver las diferentes
opciones de administracin que nuestro sistema ofrece.

PGINA 8

Ventana insertar cliente: desde esta ventana podemos insertar


un nuevo cliente a nuestra base de datos.

Ventana insertar pelcula: sirve para registrar una nueva


pelcula a nuestro sistema.

PGINA 9

Ventana borra cliente: ingresando nicamente el nmero de


cliente o ID podemos borrar la informacin del sistema.

Cuando damos mostrar datos nos despliega la siguiente ventana:

Si damos aceptar nos pide confirma la accin.

PGINA 10

Ventana borrar pelcula: funciona igual que la ventana de borrar


clientes. Solo que aqu se ingresa el ID de la pelcula.

Damos mostrar datos y nos muestra los datos:

Si damos aceptar nos despliega el siguiente mensaje de confirmacin.

PGINA 11

Ventana actualizar clientes: ingresando nicamente el id del


cliente podemos actualizar o modificar sus datos.

Ventana actualizar pelculas: ingresado el id de la pelcula


podemos tambin modificar sus datos.

PGINA 12

Ventana alquiler de pelculas: desde aqu se puede generar un


nuevo alquiler de pelculas con los datos de cliente y de la
pelcula. As mismo el costo y fecha de entrega de la misma.

Ventana cierre semanal de alquiler: desde aqu podemos ver


la informacin del cierre de alquiler de una semana.

PGINA 13

Ventana cierre mensual de alquiler: nos muestra el cierre


mensual del total de alquileres. Seleccionando el mes que
nosotros deseemos.

Ventana listado de clientes: nos despliega en forma de reporte


del total de clientes asociados al video club.

PGINA 14

Ventana listado de pelculas: muestra en forma de reporte el


listado total de pelculas.

Ventana mes con alquiler ms bajo y alto: desde aqu


podemos ver el da con ms alquiler y menor alquiler de un mes
en especfico.

PGINA 15

Ventana acerca de: desde aqu se pueden ver los datos de los
desarrolladores del sistema:

PGINA 16

3.2. CODIGO DE DESARROLLO DEL SISTEMA.


Para la elaboracin de esta parte fue requerida una clase para cada apartado-

Clase principal:
import java.awt.Container;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;

public class principal extends JFrame implements ActionListener{


//*****GLOBAL*******
AcercaDe AD;
insertarClientes iClientes;
insertarPelicula iPelicula;
alquilerDePelicula alquiler;
borrarClientes borrarC;
borrarPelicula borrarP;
actualizarClientes actualizarC;
actualizarPelicula actualizarP;
cierreSemanal cierreS;
cierreMensual cierreM;
listadoClientes listadoC;
listadoPeliculas listadoP;
listadoPeliculasCliente listadoPC;
diaAlquilerAltoBajo alquilerDAB;
pintaImagen pim;
static Selecionpelicula sp;
static informeCierreMensual infoCierreMens;
JDesktopPane JDP_escritorio;
JMenuBar JMB_menu;
JMenu /* Barras de men principales*/ JM_sistema, JM_mantenimiento,
JM_movimientos, JM_repotes, /*Barras de men secundarias*/JM_insertar, JM_borrar,
JM_atualizar ;
JMenuItem JMI_AcercaDe, JMI_salir, JMI_insertarClientes,JMI_insertarPelicula,
JMI_actualizarPelicula, JMI_borrarClientes, JMI_borrarPelicula, JMI_actualizarClientes,
JMI_alquiler,
JMI_cierreSemanal,
JMI_cierreMensual,
JMI_listadoClientes,
JMI_listadoPeliculas, JMI_listadoPeliculasCliente, JMI_diaAlquiler_alto_bajo;
Container c;
PGINA 17

static principal p;
//*****CONTENEDOR****
public principal(){
super("VIDEOCLUB!CineMania");
c = getContentPane();//se crea el contenedor
JDP_escritorio=new JDesktopPane();
JMB_menu =new JMenuBar();

ImageIcon icono=new ImageIcon("icono.jpg");


Image fondo2=icono.getImage();
this.setIconImage(fondo2);

try{
pim = new pintaImagen();
JDP_escritorio.setBorder(pim);
}
catch(Exception e){
System.out.print(e);
}

//Instanciar elementos del men


JM_sistema = new JMenu("Sistema");
JM_mantenimiento= new JMenu("Mantenimiento");
JM_movimientos= new JMenu("Movimientos");
JM_repotes = new JMenu("Reportes");
//pegar los elementos al men
JMB_menu.add(JM_sistema);
JMB_menu.add(JM_mantenimiento);
JMB_menu.add(JM_movimientos);
JMB_menu.add(JM_repotes);
//instanciar los elementos de la barra Sistema
JMI_AcercaDe = new JMenuItem("Acerca de");
JMI_salir = new JMenuItem("Salir!");
//pegar los elementos a la barra Sistema
JM_sistema.add(JMI_AcercaDe);
JM_sistema.add(JMI_salir);
//instanciar los elementos de la barra Mantenimiento
JM_insertar = new JMenu("Insertar");
JM_borrar = new JMenu("Borrar");
JM_atualizar = new JMenu("Actualizar");
//Pegar los elementos a la barra Mantenimiento
JM_mantenimiento.add(JM_insertar);
JM_mantenimiento.add(JM_borrar);
PGINA 18

JM_mantenimiento.add(JM_atualizar);
//instanciar los elementos de la barra insertar
JMI_insertarClientes = new JMenuItem("Clientes");
JMI_insertarPelicula = new JMenuItem("Pelicula");
//pegar los elementos de la barra insertar
JM_insertar.add(JMI_insertarClientes);
JM_insertar.add(JMI_insertarPelicula);
//instanciar los elementos de la barra borrar
JMI_borrarClientes = new JMenuItem("Clientes");
JMI_borrarPelicula = new JMenuItem("Pelicula");
//pegar los elementos de la barra borrar
JM_borrar.add(JMI_borrarClientes);
JM_borrar.add(JMI_borrarPelicula);
//instanciar los elementos de la barra actualizar
JMI_actualizarClientes= new JMenuItem("Clientes");
JMI_actualizarPelicula = new JMenuItem("Pelicula");
//pegar los elementos a la barra actualizar
JM_atualizar.add(JMI_actualizarClientes);
JM_atualizar.add(JMI_actualizarPelicula);
//instanciar los elementos de la barra movimientos
JMI_alquiler = new JMenuItem("Alquiler de pelcula");
JMI_cierreSemanal = new JMenuItem("Cierre semanal de alquileres");
JMI_cierreMensual = new JMenuItem("Cierre mensual de alquileres");
//pegar los elementos de la barra movimientos
JM_movimientos.add(JMI_alquiler);
JM_movimientos.add(JMI_cierreSemanal);
JM_movimientos.add(JMI_cierreMensual);
//instanciar los elementos de la barra reportes
JMI_listadoClientes = new JMenuItem("Listado de clientes");
JMI_listadoPeliculas = new JMenuItem("Listado de pelculas");
JMI_listadoPeliculasCliente = new JMenuItem("Listado de pelculas por cliente");
JMI_diaAlquiler_alto_bajo = new JMenuItem("Da del mes con alquiler ms alto y ms
bajo");
//pegar los elementos a la barra reportes
JM_repotes.add(JMI_listadoClientes);
JM_repotes.add(JMI_listadoPeliculas);
JM_repotes.add(JMI_listadoPeliculasCliente);
JM_repotes.add(JMI_diaAlquiler_alto_bajo);
// *******Asignacin de clases internas anninas a los elementos del men***********//
//se asigna una clase interna al Item salir que cuetiona si el usuario desea cerrar o no
la aplicacin..
JMI_salir.addActionListener(new ActionListener() { //
private int YES_NO_CANCEL_OPTION;
private int YES_OPTION;
PGINA 19

public void actionPerformed(ActionEvent e) {


/*/* Boton para salir de la aplicacin//*/
if(JOptionPane.showConfirmDialog(null,"Desea salir de la aplicacin?" , "Salir",
YES_NO_CANCEL_OPTION)==YES_OPTION)
System.exit(0);
}
});
//se asigna una clase interna al Item clientes, perteneciente al men de insertar. Se llama
a la clase AcercaDe
JMI_AcercaDe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
AD=new AcercaDe();
AD.setResizable(false);
if(siJIF_EstaAbierto("Acerca de")==false)
JDP_escritorio.add(AD);
}
});
//se asigna una clase interna al Item clientes, perteneciente al men de insertar. Se
llama a la clase insertarClientes
JMI_insertarClientes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
iClientes =new insertarClientes(null, null, null, null, null, null);
iClientes.setResizable(false);
if(siJIF_EstaAbierto("Insertar Cliente")==false)
JDP_escritorio.add(iClientes);
}
});
//se asigna una clase annima al Item pelcula, perteneciente al men insertar. Se llama
a la clase insertarPelicula
JMI_insertarPelicula.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
iPelicula = new insertarPelicula(null, null, null, null, null, null);
iPelicula.setResizable(false);
if(siJIF_EstaAbierto("Insertar pelcula")==false)
JDP_escritorio.add(iPelicula);
}
});
//************************
//se le asigna una clase annima al Item "alquiler de pelcula" del men
movimientos.Se llama a la clase insertarPelicula
PGINA 20

JMI_alquiler.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
alquiler = new alquilerDePelicula();
if(siJIF_EstaAbierto("Alquiler de pelicula")==false)
JDP_escritorio.add(alquiler);
}
});
//se le asigna una clase annima al Item "Borrar Clientes" del men Insertar.Se llama
a la clase borrarClientes
JMI_borrarClientes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
borrarC = new borrarClientes();
JDP_escritorio.add(borrarC);
}
});
//se le asigna una clase annima al Item "Borrar Pelicula" del men Insertar.Se llama
a la clase borrarPelicula
JMI_borrarPelicula.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
borrarP = new borrarPelicula();
JDP_escritorio.add(borrarP);
}
});
//se le asigna una clase annima al Item "actualizar clientes " del men Insertar.Se
llama a la clase actiualizarClientes
JMI_actualizarClientes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actualizarC = new actualizarClientes();
JDP_escritorio.add(actualizarC);
}
});
//se le asigna una clase annima al Item "actualizar pelicula" del men Insertar.Se
llama a la clase actualizarPelicula
JMI_actualizarPelicula.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actualizarP = new actualizarPelicula();
JDP_escritorio.add(actualizarP);
}
});
//se le asigna una clase annima al Item "cierre Semanal" del men Moviemientos.Se
llama a la clase cierreSemanal
JMI_cierreSemanal.addActionListener(new ActionListener() {
PGINA 21

public void actionPerformed(ActionEvent e) {


cierreS = new cierreSemanal();
JDP_escritorio.add(cierreS);
}
});
//se le asigna una clase annima al Item "cierre Mensual" del men Moviemientos.Se
llama a la clase cierreMensual
JMI_cierreMensual.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cierreM = new cierreMensual();
JDP_escritorio.add(cierreM);
}
});
//se le asigna una clase annima al Item "Listado de clientes" del men reportes.Se llama
a la clase listadoClientes
JMI_listadoClientes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
listadoC = new listadoClientes();
JDP_escritorio.add(listadoC);
}
});
//se le asigna una clase annima al Item "Listado de pelicula" del men reportes.Se
llama a la clase listadoPeliculas
JMI_listadoPeliculas.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
listadoP = new listadoPeliculas();
JDP_escritorio.add(listadoP);
}
});
//se le asigna una clase annima al Item "Peliculas por cliente" del men reportes.Se
llama a la clase listadoPeliculasCliente
JMI_listadoPeliculasCliente.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
listadoPC = new listadoPeliculasCliente();
JDP_escritorio.add(listadoPC);
}
});
//se le asigna una clase annima al Item "Dia alquiler mas bajo y mas alto" del men
Moviemientos.Se llama a la clase diaAlquilerAltoBajo
JMI_diaAlquiler_alto_bajo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
PGINA 22

alquilerDAB = new diaAlquilerAltoBajo();


JDP_escritorio.add(alquilerDAB);
}
});

this.setJMenuBar(JMB_menu);
c.add(JDP_escritorio);
}//fin ***CONSTRUCTOR***
public void actionPerformed(ActionEvent e){

}
public static void main(String[] args) {
p =new principal();
p.setSize(900, 700);
p.setVisible(true);
p.setLocation(0,0);
p.setExtendedState(JFrame.MAXIMIZED_BOTH);//Para que el marco se maximise....
p.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
sp= new Selecionpelicula(p);
sp.setLocation(100, 10);
sp.setSize(500,400);
// sp.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

public boolean siJIF_EstaAbierto(String tituloFrameInterno){


boolean estaAbierto=false;
//getAllFrames(), retorna los JInternalFrame que estan abiertos en el JDesktopPane
JInternalFrame[] arreglo= JDP_escritorio.getAllFrames();
for(int i=0; i<arreglo.length;i++)
if(arreglo[i].getTitle().equals(tituloFrameInterno))
estaAbierto=true;
return estaAbierto;
}

public static void setJdialog(Boolean pegar){


sp.setVisible(pegar);
PGINA 23

if(pegar==true)
pegar = false;
else
pegar = true;

}//Fin del set del Jdialog


public static void setJdialog1(Boolean pegar){
infoCierreMens = new informeCierreMensual(p);
infoCierreMens.setVisible(pegar);
if(pegar==true)
pegar = false;
else
pegar = true;
}//fin setJDialog1

Clase insertarCliente
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
PGINA 24

import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;

public final class insertarClientes extends JInternalFrame implements ActionListener{


//global
ImageIcon II_imagen1, II_imagen2;
JPanel JP_principal;
JLabel JL_id, JL_nombreCliente, JL_telefonoCliente, JL_direccionCliente, JL_emailCliente,
JL_autorizadoCliente;
JTextField
JTF_id,
JTF_nombreCliente,
JTF_telefonoCliente,
JTF_emailCliente,
JTF_autorizadoCliente;
JTextArea JTA_direccionCliente;
JButton JB_insertarCliente;
JPanel JP_id, JP_nombre, JP_telefono, JP_direccion, JP_email, JP_autorizado, JP_boton;
JScrollPane JSP_direccionCliente;
private String
id, //recibe el id del cliente, generado por la clase generarIDcliente
nombre, //guarda el texto del campo JTF_nombreCliente, este a su vez contendr el nombre
del cliente
telefono, //guarda el texto del campo JTF_telefonoCliente, este a su vez contendr el telefono
del cliente
direccion, //guarda el texto del campo JTA_direccionCliente, este a su vez contendr la
direccion del cliente
email,
//guarda el texto del campo JTF_emailCliente, este a su vez contendr el coero
electrnico del cliente
autorizado;//guarda el texto del campo JTF_autorizadoCliente, este a su vez contendr el
nombre del autorizado del cliente
String nombreDeArchivo= "Clientes.txt";
//***CONSTRUCTOR***
public insertarClientes(String id, String nombre, String telefono, String direccion, String email,
String autorizado){
super ("Insertar Cliente", true, true, true,true);
setVisible(true);
setLocation(140,10); //ubicacin
setSize(300,350);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setId(id);
this.setNombre(nombre);
this.setTelefono(telefono);
this.setDireccion(direccion);
this.setEmail(email);
this.setAutorizado(autorizado);
JP_principal= new JPanel(); //instancia del panel principal
PGINA 25

// JP_principal.setLayout(new FlowLayout());
JP_principal.setLayout(new BoxLayout(JP_principal,BoxLayout.Y_AXIS));
//instancia de los componentes del panel principal
//(Image Icons)
II_imagen1 = new ImageIcon("imagen1.gif");
II_imagen2 = new ImageIcon("imagen2.gif");
//(etiquetas)
JL_id = new JLabel("Identificacin:");
JL_nombreCliente = new JLabel("Nombre:");
JL_telefonoCliente = new JLabel("Telfono:");
JL_direccionCliente = new JLabel("Direccin:");
JL_emailCliente = new JLabel("e-mail:");
JL_autorizadoCliente = new JLabel("Autorizado:");
//(campos de texto)
JTF_id = new JTextField(2);
JTF_nombreCliente = new JTextField(13);
JTF_telefonoCliente = new JTextField(13);
try{
MaskFormatter formatter = new MaskFormatter("########");
formatter.setPlaceholderCharacter('_');
JL_telefonoCliente=new JLabel("Telfono del cliente");
JTF_telefonoCliente = new JFormattedTextField(formatter);
}
catch(Exception er){
System.out.println(er);
}//fin catch
JTF_emailCliente = new JTextField(13);
JTF_autorizadoCliente = new JTextField(13);
//(areas de texto)
JTA_direccionCliente = new JTextArea(4, 14);
JTA_direccionCliente.setWrapStyleWord(true);
JScrollPane
JSP_direccionCliente=
new
JScrollPane(JTA_direccionCliente,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPa
ne.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//(botones)
JB_insertarCliente = new JButton("Agregar Cliente!", II_imagen1);
//(paneles)
JP_id = new JPanel();
JP_nombre = new JPanel();
JP_telefono = new JPanel();
JP_direccion = new JPanel();
JP_email = new JPanel();
JP_autorizado = new JPanel();
JP_boton = new JPanel();
//Estableser Layout a los paneles
JP_id.setLayout(new FlowLayout());
JP_nombre.setLayout(new FlowLayout());
JP_telefono.setLayout(new FlowLayout());
JP_direccion.setLayout(new FlowLayout());
PGINA 26

JP_email.setLayout(new FlowLayout());
JP_autorizado.setLayout(new FlowLayout());
//atributos a cada objeto
JTF_id.setEditable(false);
JB_insertarCliente.addActionListener((ActionListener) this);
//pegar elementos a cada panel
JP_id.add(JL_id);
JP_id.add(JTF_id);
JP_nombre.add(JL_nombreCliente);
JP_nombre.add(JTF_nombreCliente);
JP_telefono.add(JL_telefonoCliente);
JP_telefono.add(JTF_telefonoCliente);
JP_direccion.add(JL_direccionCliente);
JP_direccion.add(JSP_direccionCliente);
JP_email.add(JL_emailCliente);
JP_email.add(JTF_emailCliente);
JP_autorizado.add(JL_autorizadoCliente);
JP_autorizado.add(JTF_autorizadoCliente);
JP_boton.add(JB_insertarCliente);
//pegar los elementos al panel principal
JP_principal.add(JP_id);
JP_principal.add(JP_nombre);
JP_principal.add(JP_telefono);
JP_principal.add(JP_direccion);
JP_principal.add(JP_email);
JP_principal.add(JP_autorizado);
JP_principal.add(JP_boton);
JTF_id.setText(""+(UltimoID())); //se coloca el nmero de cliente por insertar. La llamada al
//mtodo cantidadDeClientes determina el nmero total de clientes existentes en ese
momento, se le suma 1 para que aparezca el nmero de cliente a insertar.

this.add(JP_principal);

}//****FIN CONSTRUCTOR******
public void actionPerformed(ActionEvent e){
boolean llenadoCorrecto = false;
if(e.getSource()== JB_insertarCliente){
//Se obtienen los datos de los campos de texto para que sean procesados..
setId(JTF_id.getText());
setNombre(JTF_nombreCliente.getText());
setTelefono(JTF_telefonoCliente.getText());
setDireccion(JTA_direccionCliente.getText());
PGINA 27

setEmail(JTF_emailCliente.getText());
setAutorizado(JTF_autorizadoCliente.getText());
//en caso que el, tamao del String recibido sea cero, se dleplegar un mensaje indicando el
error
if(
getAutorizado().length()==0||getTelefono().length()==0||getNombre().length()==0||getDireccion().le
ngth()==0||getEmail().length()==0){//si no se han llenado todos los datos
JOptionPane.showMessageDialog(null, "Debe llenar todos los espacios!", "ERROR!",
JOptionPane.WARNING_MESSAGE, II_imagen1);
}//fin if de campos en blanco
else if(!JTF_nombreCliente.getText().matches("[a-zA-Z]+\\s+[a-zA-z]+"))
JOptionPane.showMessageDialog(null, "Debe digitar nombre y apellido");
else if(!JTF_telefonoCliente.getText().matches("\\d{8}"))
JOptionPane.showMessageDialog(this, "Formato de telfono incorrecto");
else if(!JTF_autorizadoCliente.getText().matches("[a-zA-Z]+\\s+[a-zA-z]+"))
JOptionPane.showMessageDialog(null, "Debe digitar nombre y apellido\ndel autorizado");

else{
llenadoCorrecto=true;
JOptionPane.showMessageDialog(null, "Cliente guardado con xito");
JTF_nombreCliente.setText("");
JTF_telefonoCliente.setText("");
JTF_emailCliente.setText("");
JTF_autorizadoCliente.setText("");
JTA_direccionCliente.setText("");
}
if(llenadoCorrecto==true){
escribeArchivo();
escribeID();
JTF_id.setText(""+UltimoID());
id=JTF_id.getText();
}//fin del if
}//fin if JB_insertarClientes
}//fin actionPerformed

public void escribeArchivo(){


PGINA 28

try{
File f1;
f1 = new File("Clientes.txt");
FileOutputStream fos;
fos=new FileOutputStream(f1,true);
PrintStream ps;
ps = new PrintStream(fos);
String nombreEstudiante;
nombreEstudiante=getId() +";"+ getNombre() +";"+ getDireccion() +";"+ getEmail() +";"+
getTelefono()+";"+ getAutorizado();
ps.println(nombreEstudiante);
}//Fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null,fnfe);
}//fin catch
}//Fin escribeArchivo()

public BufferedReader getBufferedReader(){

BufferedReader entradaDeArchivo= null;


File f = new File(nombreDeArchivo);
try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);
entradaDeArchivo = new BufferedReader(isr);
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
}//fin getBufferedReader

//lee la cantidad de lneas que hay en el archivo


//mtodo cantidadDeClientes determina el nmero total de clientes existentes en ese momento
public int cantidadDeClientes(){
File f1;
f1 = new File("Clientes.txt");
FileOutputStream fos;
PGINA 29

try {fos=new FileOutputStream(f1,true);}


catch(Exception es){
System.out.println("Este error ocurrior en insertar clientes en el metodo cantidad de
clientes\n"+es);
}//fin del catch

BufferedReader entradaDeArchivo = getBufferedReader();


int cuentaClientes = 0;
try{
String registroActual = entradaDeArchivo.readLine();
while(registroActual!=null){
cuentaClientes++;
registroActual = entradaDeArchivo.readLine();
}//fin while
}//fin try
catch( IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return cuentaClientes;
}//fincantidadDeEstudantes

public insertarClientes[] getTodosLosClientes(){


BufferedReader entradaDeArchivo= getBufferedReader();
insertarClientes arregloClientes[] = new insertarClientes[cantidadDeClientes()];
int indiceArregloClientes= -1;
try{
String registroActual = entradaDeArchivo.readLine();
while(registroActual!=null){
indiceArregloClientes++;
StringTokenizer st = new StringTokenizer(registroActual, ";");
String id="", nombre="", telefono="", direccion="", email="", autorizado="";
int ID=1, NOMBRE=2, TELEFONO=3, DIRECCION=4, EMAIL=5, AUTORIZADO=6;
int contador=1;
while(st.hasMoreTokens()){
if(contador==ID)
id=st.nextToken();
PGINA 30

else if(contador==NOMBRE)
nombre=st.nextToken();
else if(contador==TELEFONO)
telefono=(st.nextToken());
else if(contador==DIRECCION)
direccion=st.nextToken();
else if(contador==EMAIL)
email=st.nextToken();
else if(contador==AUTORIZADO)
autorizado=st.nextToken();
contador++;
}//fin while
insertarClientes client = new insertarClientes(id, nombre, telefono, direccion, email,
autorizado);
arregloClientes[indiceArregloClientes]=client;
registroActual = entradaDeArchivo.readLine();
}//fin while
}//fin try
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}
return arregloClientes;
}//fin getTodosLosClientes
/**
* @return the nombre
*/
public String getNombre() {
return nombre;
}
/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* @return the telefono
*/
public String getTelefono() {
return telefono;
}
/**
* @param telefono the telefono to set
*/
public void setTelefono(String telefono) {
PGINA 31

this.telefono = telefono;
}
/**
* @return the direccion
*/
public String getDireccion() {
return direccion;
}
/**
* @param direccion the direccion to set
*/
public void setDireccion(String direccion) {
this.direccion = direccion;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the autorizado
*/
public String getAutorizado() {
return autorizado;
}
/**
* @param autorizado the autorizado to set
*/
public void setAutorizado(String autorizado) {
this.autorizado = autorizado;
}
/**
* @return the id
*/
public String getId() {
return id;
}
PGINA 32

/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
public int UltimoID(){
File f1;
f1 = new File("ID_cliente.txt");
FileOutputStream fos;
try {fos=new FileOutputStream(f1,true);}
catch(Exception es){
System.out.println("Este error ocurrior en insertar clientes en el metodo cantidad de
clientes\n"+es);
}//fin del catch

BufferedReader entradaDeArchivo = getBufferedReaderII();


int cuentaClientes = 0;
try{
String registroActual = entradaDeArchivo.readLine();
while(registroActual!=null){
cuentaClientes++;
registroActual = entradaDeArchivo.readLine();
}//fin while
}//fin try
catch( IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return cuentaClientes+1;
}//find

public BufferedReader getBufferedReaderII(){


BufferedReader entradaDeArchivo= null;
File f = new File("ID_cliente.txt");
try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);
entradaDeArchivo = new BufferedReader(isr);
}//fin try
catch(FileNotFoundException fnfe){
PGINA 33

JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
}//fin getBufferedReader

public void escribeID(){


try{
File f1;
f1 = new File("ID_cliente.txt");
FileOutputStream fos;
fos=new FileOutputStream(f1,true);
PrintStream ps;
ps = new PrintStream(fos);
String ID;
ID=JTF_id.getText();
ps.println(ID);
}//Fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null,fnfe);
}//fin catch

}//Fin del metodo escribe ID

}//fin clase insertarClientes

Clase insertaPelicula
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
PGINA 34

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class insertarPelicula extends JInternalFrame implements ActionListener{

//global
JLabel
JL_numeroPelicula,
JL_nombrePelicula,
JL_categoraPelicula, JL_clasificacinPelicula;

JL_repartoPelicula,

JL_aoPelicula,

JTextField JTF_numeroPelicula, JTF_nombrePelicula, JTF_ano;


JTextArea JTA_reparto;
JPanel JP_principal, JP_clasificacion, JP_clasificacion1, JP_numero,
JP_nombre, JP_reparto, JP_ano, JP_categoria, JP_categoria1, JP_boton;
JScrollPane JSP_reparto;

JButton JB_insertar;
JRadioButton /*para la clacificacin*/JRB_drama, JRB_comedia, JRB_accion, JRB_infantil,
JRB_suspenso, JRB_terror, JRB_cienciaFiccion
PGINA 35

/*para la categora*/, JRB_estreno, JRB_noEstreno;


ButtonGroup BG_Clasificacion, BG_categoria;

private String
id,

//alberga un nmero consecutivo generado en la clase generarIDPelicula

nombre,

//Contiene el nombre de la pelcula, obtenido por medio del JTF_nombrePelicula

reparto,

//guarda el dato de los actores en cada pelacula, obtenido del JTA_reparto

ao,

//guarda al ao de la pelicula, se obtiene mediante el JTF_ao

clasificacion/*="false"*/, //Contiene la clasificacion de la pelcula, obtenida por medio de los


JRadioButtons del ButtonGroup BG_clasificacion + Se inicializa en un string "X" para compararlo
en caso de no ser modificado algn JRadioButton del grupo BG_clasificacion
categoria/*="false"*/;
//Contiene la categora de la pelcula, obtenida por medio de los
JRadioButtons del ButtonGroup BG_categora. Se inicializa en un string "X" para compararlo en
caso de no ser modificado algn JRadioButton del grupo BG_categora

String nombreDeArchivo="Peliculas.txt";

//****CONSTRUCTOR****
public insertarPelicula(String id, String nombre, String clasificacion, String reparto, String ao,
String categoria) {
super("Insertar pelcula", true, true, false, true);
setVisible(true);
setLocation(140,10); //ubicacin
setSize(400,470);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

this.setId(id);
this.setNombre(nombre);
this.setClasificacion(clasificacion);
this.setReparto(reparto);
this.setAo(ao);
PGINA 36

this.setCategoria(categoria);

//instancia de los objetos


//(etiquetas)
JL_numeroPelicula = new JLabel("# pelicula");
JL_nombrePelicula = new JLabel("Nombre");
JL_clasificacinPelicula = new JLabel("Clasificacin");
JL_repartoPelicula = new JLabel("Reparto");
JL_aoPelicula = new JLabel("Ao");
JL_categoraPelicula = new JLabel("Categora");

//(campos de texto)
JTF_nombrePelicula= new JTextField(10);
JTF_ano = new JTextField(4);
JTF_numeroPelicula = new JTextField(2);
//(Areas de texto)
JTA_reparto = new JTextArea(2, 20);
JTA_reparto.setWrapStyleWord(true);
JScrollPane
JSP_reparto=
new
JScrollPane(JTA_reparto,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORI
ZONTAL_SCROLLBAR_AS_NEEDED);

//(Botones)
JB_insertar = new JButton("Insertar!");

//(JRadioButton)
JRB_accion = new JRadioButton("Accion");
JRB_cienciaFiccion = new JRadioButton("Ciencia Ficcin");
JRB_comedia = new JRadioButton("Comedia");
JRB_drama = new JRadioButton("Drama");
JRB_infantil = new JRadioButton("Infantil");
PGINA 37

JRB_suspenso = new JRadioButton("Suspenso");


JRB_terror = new JRadioButton("Terror");

JRB_noEstreno = new JRadioButton("No estreno");


JRB_estreno = new JRadioButton("Estreno");

//ButtonGroup
BG_Clasificacion = new ButtonGroup();
BG_categoria = new ButtonGroup();

//(paneles)
JP_principal = new JPanel();
JP_clasificacion1 = new JPanel();
JP_clasificacion = new JPanel();
JP_numero = new JPanel();
JP_nombre = new JPanel();
JP_reparto = new JPanel();
JP_ano = new JPanel();
JP_categoria = new JPanel();
JP_categoria1 = new JPanel();
JP_boton = new JPanel();

//Asignar Layout a los paneles


JP_principal.setLayout(new BoxLayout(JP_principal,BoxLayout.Y_AXIS));
JP_clasificacion.setLayout(new FlowLayout());
JP_boton.setLayout(new FlowLayout());

JTF_numeroPelicula.setEditable(false);

//pegar radioButtons al grupo de Botones


BG_Clasificacion.add(JRB_accion);
PGINA 38

BG_Clasificacion.add(JRB_cienciaFiccion);
BG_Clasificacion.add(JRB_comedia);
BG_Clasificacion.add(JRB_drama);
BG_Clasificacion.add(JRB_infantil);
BG_Clasificacion.add(JRB_suspenso);
BG_Clasificacion.add(JRB_terror);

BG_categoria.add(JRB_noEstreno);
BG_categoria.add(JRB_estreno);

//pegar componentes a los paneles correspondientes


JP_nombre.add(JL_nombrePelicula);
JP_nombre.add(JTF_nombrePelicula);
JP_numero.add(JL_numeroPelicula);
JP_numero.add(JTF_numeroPelicula);
JP_clasificacion1.add(JL_clasificacinPelicula);
JP_clasificacion.add(JRB_accion);
JP_clasificacion.add(JRB_cienciaFiccion);
JP_clasificacion.add(JRB_comedia);
JP_clasificacion.add(JRB_drama);
JP_clasificacion.add(JRB_infantil);
JP_clasificacion.add(JRB_suspenso);
JP_clasificacion.add(JRB_terror);
JP_reparto.add(JL_repartoPelicula);
JP_reparto.add(JSP_reparto);
JP_ano.add(JL_aoPelicula);
JP_ano.add(JTF_ano);
JP_categoria1.add(JL_categoraPelicula);
JP_categoria.add(JRB_estreno);
JP_categoria.add(JRB_noEstreno);
JP_boton.add(JB_insertar);

PGINA 39

//pegar los paneles al panel principal


JP_principal.add(JP_numero);
JP_principal.add(JP_nombre);
JP_principal.add(JP_clasificacion1);
JP_principal.add(JP_clasificacion);
JP_principal.add(JP_reparto);
JP_principal.add(JP_ano);
JP_principal.add(JP_categoria1);
JP_principal.add(JP_categoria);
JP_principal.add(JB_insertar);

//atributos a los objetos

JB_insertar.addActionListener((ActionListener) this); //se le asigna ActionListenes al boton para


que escuche la el eveto y la accion

//Con las siguientes clases annimas se cambia el estado de la String clasificacion.Se determina
mediante los JRadioButons del grupo BG_clasificacion
//Cuando se presiona un boton, el estado de la String "clasificacion" cambia
// Clase interna del JRB_accion, clasificacion pasa a ser "accion"
JRB_accion.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setClasificacion("accion");
System.out.println(getClasificacion());
}
});

// Clase interna del JRB_cienciaFiccion, clasificacion pasa a ser "ciencia ficcion"


JRB_cienciaFiccion.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
PGINA 40

setClasificacion("ciencia ficcin");
System.out.println(getClasificacion());
}
});

// Clase interna del JRB_comedia, clasificacion pasa a ser "comedia"


JRB_comedia.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setClasificacion("comedia");
System.out.println(getClasificacion());
}
});

// Clase interna del JRB_drama, clasificacion pasa a ser "drama"


JRB_drama.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setClasificacion("drama");
System.out.println(getClasificacion());
}
});

// Clase interna del JRB_infantil, clasificacion pasa a ser "infantil"


JRB_infantil.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setClasificacion("infantil");
System.out.println(getClasificacion());
}
});

// Clase interna del JRB_suspenso, clasificacion pasa a ser "suspenso"


JRB_suspenso.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
PGINA 41

setClasificacion("suspenso");
System.out.println(getClasificacion());
}
});

// Clase interna del JRB_terror, clasificacion pasa a ser "terror"


JRB_terror.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setClasificacion("terror");
System.out.println(getClasificacion());
}
});

//Con las siguientes clases annimas se cambia el estado de la String categoria.Se determina
mediante los JRadioButons del grupo BG_categoria

// Clase interna del JRB_estreno, categora pasa a ser "estreno"


JRB_estreno.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setCategoria("estreno");
System.out.println(getCategoria());
}
});

// Clase interna del JRB_noEstreno, categora pasa a ser "NO_Estreno"


JRB_noEstreno.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setCategoria("NO estreno");
System.out.println(getCategoria());
}
});

PGINA 42

JTF_numeroPelicula.setText(""+UltimoID()); //se coloca el nmero de cliente por insertar. La


llamada al
//mtodo cantidadDeClientes determina el nmero total de clientes existentes en ese
momento, se le suma 1 para que aparezca el nmero de cliente a insertar.

this.add(JP_principal);
}//****FIN CONSTRUCTOR****

public void actionPerformed(ActionEvent e){

boolean llenadoCorrecto = false;

try{
if(e.getSource()== JB_insertar){
//Se obtienen los datos de los campos de texto para que sean procesados..

setId(JTF_numeroPelicula.getText());
setNombre(JTF_nombrePelicula.getText());
setAo(JTF_ano.getText());
setReparto(JTA_reparto.getText());

//en caso que el, tamao del String recibido sea cero, se dleplegar un mensaje indicando el
error
if(getNombre().length()==0||getAo().length()==0||getReparto().length()==0||(getCategoria().equals
("false")==true)||(getClasificacion().equals("false")==true)){//si no se han llenado todos los datos
JOptionPane.showMessageDialog(null, "Debe llenar todos los
JOptionPane.WARNING_MESSAGE);

espacios!", "ERROR!",

}
else if(!JTF_ano.getText().matches("\\d{4}"))
JOptionPane.showMessageDialog(null,
JOptionPane.WARNING_MESSAGE);

"Formato

de

ao

incorrecto",

"ERROR!",

PGINA 43

else{
escribeArchivo();
escribeID();
JTF_ano.setText("");
JTF_nombrePelicula.setText("");
JTA_reparto.setText("");
JTF_numeroPelicula.setText(""+UltimoID());

JOptionPane.showMessageDialog(null, "Pelicula guardada con xito");


}//fin else

}//fin if JB_insertarClientes
}//fin try
catch(NullPointerException npe){ //se atrapa la excepcion y se despliega un mensaje...
JOptionPane.showMessageDialog(null, "Debe llenar todos los espacios!", "ERROR!",
JOptionPane.WARNING_MESSAGE);
}//fin catch
}//fin actionPerformed

public void escribeArchivo(){

try{
File f1;
f1 = new File("Peliculas.txt");
FileOutputStream fos;
fos=new FileOutputStream(f1,true);
PrintStream ps;
PGINA 44

ps = new PrintStream(fos);
String idPelicula;

idPelicula=getId() +";"+ getNombre() +";"+ getClasificacion()+";"+ getReparto() +";"+ getAo()


+";"+ getCategoria();
ps.println(idPelicula);

}//Fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null,fnfe);
}//fin catch
}//Fin escribeArchivo()

public BufferedReader getBufferedReader(){

BufferedReader entradaDeArchivo= null;

File f = new File(nombreDeArchivo);

try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);

entradaDeArchivo = new BufferedReader(isr);


}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
}//fin getBufferedReader

PGINA 45

//lee la cantidad de lneas que hay en el archivo


//mtodo cantidadDeClientes determina el nmero total de clientes existentes en ese momento
public int cantidadDePeliculas(){

File f1;
f1 = new File("Peliculas.txt");
FileOutputStream fos;
try {fos=new FileOutputStream(f1,true);}
catch(Exception es){
System.out.println("Este error ocurrior en insertar clientes en el metodo cantidad de
Peliculas\n"+es);

}//fin del catch

BufferedReader entradaDeArchivo = getBufferedReader();

int cuentaPeliculas = 0;

try{
String registroActual = entradaDeArchivo.readLine();
while(registroActual!=null){
cuentaPeliculas++;
registroActual = entradaDeArchivo.readLine();
}//fin while
}//fin try
catch( IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch

return cuentaPeliculas;
}//cantidadDePeliculas
PGINA 46

public insertarPelicula[] getTodosLosPeliculas(){

BufferedReader entradaDeArchivo= getBufferedReader();

insertarPelicula arregloPeliculas[] = new insertarPelicula[cantidadDePeliculas()];

int indiceArregloPeliculas= -1;

try{

String registroActual = entradaDeArchivo.readLine();

while(registroActual!=null){
indiceArregloPeliculas++;

StringTokenizer st = new StringTokenizer(registroActual, ";");


String id="", nombre="", clasificacion="", reparto="", ao="", categoria="";

int ID=1, NOMBRE=2, CLASIFICACION=3, REPARTO=4, AO=5, CATEGORIA=6;

int contador=1;

while(st.hasMoreTokens()){
if(contador==ID)
id=st.nextToken();
else if(contador==NOMBRE)
nombre=st.nextToken();
else if(contador==CLASIFICACION)
clasificacion=(st.nextToken());
else if(contador==REPARTO)
PGINA 47

reparto=st.nextToken();
else if(contador==AO)
ao=st.nextToken();
else if(contador==CATEGORIA)
categoria=st.nextToken();
contador++;
}//fin while

insertarPelicula pelic = new insertarPelicula(id, nombre, clasificacion, reparto, ao,


categoria);
arregloPeliculas[indiceArregloPeliculas] = pelic;

registroActual = entradaDeArchivo.readLine();
}//fin while
}//fin try
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}
return arregloPeliculas;
}//fin getTodosLosPeliculas

/**
* @return the id
*/
public String getId() {
return id;
PGINA 48

/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}

/**
* @return the nombre
*/
public String getNombre() {
return nombre;
}

/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}

/**
* @return the reparto
*/
public String getReparto() {
return reparto;
}

/**
* @param reparto the reparto to set
PGINA 49

*/
public void setReparto(String reparto) {
this.reparto = reparto;
}

/**
* @return the ao
*/
public String getAo() {
return ao;
}

/**
* @param ao the ao to set
*/
public void setAo(String ao) {
this.ao = ao;
}

/**
* @return the clasificacion
*/
public String getClasificacion() {
return clasificacion;
}

/**
* @param clasificacion the clasificacion to set
*/
public void setClasificacion(String clasificacion) {
this.clasificacion = clasificacion;
}
PGINA 50

/**
* @return the categoria
*/
public String getCategoria() {
return categoria;
}

/**
* @param categoria the categoria to set
*/
public void setCategoria(String categoria) {
this.categoria = categoria;
}

public int UltimoID(){

File f1;
f1 = new File("ID_pelicula.txt");
FileOutputStream fos;
try {fos=new FileOutputStream(f1,true);}
catch(Exception es){
System.out.println("Este error ocurrior en insertar clientes en el metodo cantidad de
clientes\n"+es);

}//fin del catch

BufferedReader entradaDeArchivo = getBufferedReaderII();

PGINA 51

int cuentaClientes = 0;

try{
String registroActual = entradaDeArchivo.readLine();
while(registroActual!=null){
cuentaClientes++;
registroActual = entradaDeArchivo.readLine();
}//fin while
}//fin try
catch( IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return cuentaClientes+1;
}//find

public BufferedReader getBufferedReaderII(){

BufferedReader entradaDeArchivo= null;

File f = new File("ID_pelicula.txt");

try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);

entradaDeArchivo = new BufferedReader(isr);


}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
PGINA 52

}//fin getBufferedReader

public void escribeID(){

try{
File f1;
f1 = new File("ID_pelicula.txt");
FileOutputStream fos;
fos=new FileOutputStream(f1,true);
PrintStream ps;
ps = new PrintStream(fos);
String ID;

ID=JTF_numeroPelicula.getText();
ps.println(ID);

}//Fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null,fnfe);
}//fin catch
}//Fin del metodo escribe ID
}//fin de la clase...

Clase borrarCliente.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
PGINA 53

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class borrarClientes extends JInternalFrame implements ActionListener{

//global
JLabel JL_identificador;
JTextField JTF_identificador;
JButton JB_mostrarDatos;
borrar

//llama a un JOPtionPane que condtiene los datos del cliente por

JPanel JP_principal, JP_identificador, JP_boton;


String identificador;
String nombreDeArchivo="Clientes.txt";
String datos="";
File registroClientes=new File("Clientes.txt");
insertarClientes insertC;
String datosDelClientePorBorrar;

//***CONSTRUCTOR***
PGINA 54

public borrarClientes() {

super("Borrar cliente", false, true, false, true);


setVisible(true);
setLocation(100,10); //ubicacin
setSize(400,150);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//instancia de objetos
//(etiquetas)
JL_identificador = new JLabel("ID del cliente a borrar");
//(Campos de texto)
JTF_identificador = new JTextField(2);
//(Botones)
JB_mostrarDatos = new JButton("Mostrar datos!");
//(paneles)
JP_principal = new JPanel();
JP_identificador = new JPanel();
JP_boton = new JPanel();

//pegat objetos en su determinado panel


JP_identificador.add(JL_identificador);
JP_identificador.add(JTF_identificador);
JP_boton.add(JB_mostrarDatos);

//pegar paneles al panel principal


JP_principal.add(JP_identificador);
JP_principal.add(JP_boton);

JP_principal.setLayout(new BoxLayout(JP_principal,BoxLayout.Y_AXIS));

//estableser Atributos a los objetos


PGINA 55

JB_mostrarDatos.addActionListener((ActionListener) this);

this.add(JP_principal);
}//****FIN CONSTRUCTOR****

public void actionPerformed(ActionEvent e){

boolean datoCorrecto=false; //varible que determina si el cliente est o no en el archivo.


Depende de su estado si se borra o no

identificador= JTF_identificador.getText();

if(identificador.length()==0)
JOptionPane.showMessageDialog(null,
JOptionPane.ERROR_MESSAGE);

"Debe

digitar

un

identificador",

"ERROR!",

else{
if(buscarCliente(identificador)==true)
datoCorrecto=true;
else{
JOptionPane.showMessageDialog(null,
JOptionPane.WARNING_MESSAGE);

"Cliente

NO

encontrado!",

"ERROR!",

JTF_identificador.setText("");
}//fin else

if(datoCorrecto==true){
JOptionPane.showMessageDialog(null, datosDelClientePorBorrar,"DATOS DEL CLIENTE
"+identificador, JOptionPane.INFORMATION_MESSAGE);
int borrar= JOptionPane.showConfirmDialog(null, "Desea borrar el cliente?", "BORRAR
CLIENTE!", JOptionPane.YES_NO_CANCEL_OPTION);
if(borrar==0){
eliminarCliente(identificador);
JOptionPane.showMessageDialog(null, "Cliente Borrado!");
dispose();
}///fin if
PGINA 56

else if(borrar==1){
JOptionPane.showMessageDialog(null,
JTF_identificador.getText());

"NO

ha

borrado

el

cliente

"

JTF_identificador.setText("");
}//fin else
else if(borrar==2){
JOptionPane.showMessageDialog(null, "Ha cancelado el borrado", "CANCELADO",
JOptionPane.INFORMATION_MESSAGE);
dispose();
}
}//fin if dato correcto=true

}//fin else
}//fin actionPerformed

public boolean buscarCliente(String identificador){

insertC=new insertarClientes(null, null, null, null, null, null);

boolean encontrado= false;

BufferedReader entradaDeArchivo = insertC.getBufferedReader();

try{
String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese
registro
while(registroActual!= null && encontrado==false/*o tambien !encontrado*/){

StringTokenizer st = new StringTokenizer(registroActual, ";");

String id="", nombre="", telefono="", direccion="", email="", autorizado="";

PGINA 57

int ID=1, NOMBRE=2, TELEFONO=3, DIRECCION=4, EMAIL=5, AUTORIZADO=6;

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==ID)
id=st.nextToken();
else if (contador==NOMBRE)
nombre=st.nextToken();
else if(contador==TELEFONO)
telefono=st.nextToken();
else if(contador==DIRECCION)
direccion=st.nextToken();
else if(contador==EMAIL)
email=st.nextToken();
else if(contador==AUTORIZADO)
autorizado=st.nextToken();
contador++;
}//fin while
if(identificador.equalsIgnoreCase(id)){
encontrado = true;
//variable que guarda los datos del cliente que se quiere borrar y los muestra mediante
un mensaje
datosDelClientePorBorrar="ID:
"+id+"\nNombre:
"+nombre+"\nTelefono:
"+telefono+"\nDireccin: "+direccion+"\ne-mail: "+email+"\nAutorizado: "+autorizado;
}//fin if
else
registroActual= entradaDeArchivo.readLine();
}//fin while
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
PGINA 58

}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return encontrado;
}//fin buscarCliente

public void eliminarCliente(String Idcliente){


//archivo clientes.txt donde se encuentra la informacion de los clientes
File archivo=new File("Clientes.txt");
//archivo temporal.txt archivo temporal para realizar la actualizacion de la informacion
File temporal=new File("temporal.txt");

try{
// se abre el archivo de lectura(clientes.txt)
FileReader archivoLectura=new FileReader(archivo);
BufferedReader buffer=new BufferedReader(archivoLectura);
//se abre el archivo temporal.txt de escritura para pasar los registros desde el archivo
clientes.txt
FileWriter archivoEscritura=new FileWriter(temporal);
BufferedWriter bufferTemp=new BufferedWriter(archivoEscritura);
String linea=buffer.readLine();

// se recorren todos los registros del archivo principal clientes.txt


while(linea!=null){//mientras la linea del archivo no est vacia se seguir leyendo el archivo

String[] registro=linea.split(";");
//si el registro tiene el mismo id del cliente a eliminar no se agrega al nuevo archivo
if(!registro[0].equals(Idcliente)){
bufferTemp.write(linea);
bufferTemp.newLine();

PGINA 59

linea=buffer.readLine();
}//fin del while
//se cierran los dos archivos el temporal.txt y clientes.txt
buffer.close();
bufferTemp.close();

try {
File inFile = new File("temporal.txt");
File outFile = new File("clientes.txt");

FileInputStream in = new FileInputStream(inFile);


FileOutputStream out = new FileOutputStream(outFile);

int c;
while( (c = in.read() ) != -1)//aqu se transfieren los datos de temporal.txt a
clientes.txt hasta que en el temporal no tenga datos que leer
out.write(c);

in.close();
out.close();
} catch(IOException ioE) {
JOptionPane.showMessageDialog(this,"Hubo un error a la hora de
borrar");
}

}//fin try

catch(Exception ex){
ex.printStackTrace();

PGINA 60

}
}//fin del metodo eliminar cliente

}//fin de la clase borrarClientes

Clase borrarPelicula.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class borrarPelicula extends JInternalFrame implements ActionListener{

//global
JLabel JL_identificador;
PGINA 61

JTextField JTF_identificador;
JButton JB_mostrarDatos;
JPanel JP_principal, JP_identificador, JP_boton;
String identificador; //recibe el dato del nmero de cliente por eliminar o borrar
insertarPelicula insertP;
String datosPeliculaPorBorrar;
//***CONSTRUCTOR***
public borrarPelicula() {

super("Borrar Pelcula", false, true, false, true);


setVisible(true);
setLocation(100,10); //ubicacin
setSize(400,150);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//instancia de objetos
//(etiquetas)
JL_identificador = new JLabel("ID de la pelcula a borrar");
//(Campos de texto)
JTF_identificador = new JTextField(2);
//(Botones)
JB_mostrarDatos = new JButton("Mostrar datos!");
//(paneles)
JP_principal = new JPanel();
JP_identificador = new JPanel();
JP_boton = new JPanel();

//pegat objetos en su determinado panel


JP_identificador.add(JL_identificador);
JP_identificador.add(JTF_identificador);
JP_boton.add(JB_mostrarDatos);

PGINA 62

//pegar paneles al panel principal


JP_principal.add(JP_identificador);
JP_principal.add(JP_boton);

JP_principal.setLayout(new BoxLayout(JP_principal,BoxLayout.Y_AXIS));

//atributos a los objetos


JB_mostrarDatos.addActionListener(this);

this.add(JP_principal);
}//****FIN CONSTRUCTOR****

public void actionPerformed(ActionEvent e){

boolean llenadoCorrecto=false;

if(e.getSource()==JB_mostrarDatos)

identificador=JTF_identificador.getText();
if(identificador.length()==0){
JOptionPane.showMessageDialog(null,"Digitar identificador!");
JTF_identificador.setText("");
}//fin if
else{
if(buscarPelicula(identificador)==true)
llenadoCorrecto=true;

else{
JOptionPane.showMessageDialog(null,
JOptionPane.WARNING_MESSAGE);

"Pelicula

NO

encontrada!",

"ERROR!",

JTF_identificador.setText("");
PGINA 63

}//fin else

if(llenadoCorrecto==true){
JOptionPane.showMessageDialog(null, datosPeliculaPorBorrar,"DATOS
PELICULA "+identificador, JOptionPane.INFORMATION_MESSAGE);

DE

LA

int borrar= JOptionPane.showConfirmDialog(null, "Desea borrar la pelicula?", "BORRAR


PELICULA!", JOptionPane.YES_NO_CANCEL_OPTION);
if(borrar==0){
eliminarPelicula(identificador);
JOptionPane.showMessageDialog(null, "Pelicula Borrada!");
dispose();
}///fin if
else if(borrar==1){
JOptionPane.showMessageDialog(null,
JTF_identificador.getText());

"NO

ha

borrado

la

pelicula

"

JTF_identificador.setText("");
}//fin else
else if(borrar==2){
JOptionPane.showMessageDialog(null, "Ha cancelado el borrado", "CANCELADO",
JOptionPane.INFORMATION_MESSAGE);
dispose();
}//fin else if

}//fin if

}//fin else
}//fin actionPerformed

PGINA 64

//**Metodo que realiza la bsqueda de una pelicula y devulve true si la pelicula se encuentra en el
archivo, de lo contrario devuelve false
public boolean buscarPelicula(String identificador){

insertP = new insertarPelicula(null, null, null, null, null, null);

boolean encontrado= false;

BufferedReader entradaDeArchivo = insertP.getBufferedReader();

try{
String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese
registro
while(registroActual!= null && encontrado==false/*o tambien !encontrado*/){

StringTokenizer st = new StringTokenizer(registroActual, ";");

String id="", nombre="", clasificacion="", reparto="", ao="", categoria="";

int ID=1, NOMBRE=2, CLASIFICACION=3, REPARTO=4, AO=5, CATEGORIA=6;

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==ID)
id=st.nextToken();
else if (contador==NOMBRE)
nombre=st.nextToken();
else if(contador==CLASIFICACION)
clasificacion=st.nextToken();
else if(contador==REPARTO)
PGINA 65

reparto=st.nextToken();
else if(contador==AO)
ao=st.nextToken();
else if(contador==CATEGORIA)
categoria=st.nextToken();
contador++;
}//fin while
if(identificador.equalsIgnoreCase(id)){
encontrado = true;
//variable que guarda los datos de la pelicula que se quiere borrar y los muestra
mediante un mensaje
datosPeliculaPorBorrar
=
"ID"+id+"\nNombre:
"+nombre+"\nClasificacin:
"+clasificacion+"\nReparto: "+reparto+"\nAo: "+ao+"\nCategora: "+categoria;
}//fin if
else
registroActual= entradaDeArchivo.readLine();
}//fin while
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch

return encontrado;
}//fin buscarPelicula

//**************************************************************************************************************
*********************************************************************
PGINA 66

//**************************************************************************************************************
*********************************************************************
//**************************************************************************************************************
*********************************************************************
//**************************************************************************************************************
*********************************************************************
public void eliminarPelicula(String IdPelicula){
//archivo clientes.txt donde se encuentra la informacion de los clientes
File archivo=new File("Peliculas.txt");
//archivo temporal.txt archivo temporal para realizar la actualizacion de la informacion
File temporal=new File("temporal.txt");

try{
// se abre el archivo de lectura(clientes.txt)
FileReader archivoLectura=new FileReader(archivo);
BufferedReader buffer=new BufferedReader(archivoLectura);
//se abre el archivo temporal.txt de escritura para pasar los registros desde el archivo
clientes.txt
FileWriter archivoEscritura=new FileWriter(temporal);
BufferedWriter bufferTemp=new BufferedWriter(archivoEscritura);
String linea=buffer.readLine();

// se recorren todos los registros del archivo principal clientes.txt


while(linea!=null){//mientras la linea del archivo no est vacia se seguir leyendo el archivo

String[] registro=linea.split(";");
//si el registro tiene el mismo id del cliente a eliminar no se agrega al nuevo archivo
if(!registro[0].equals(identificador)){
bufferTemp.write(linea);
bufferTemp.newLine();

PGINA 67

linea=buffer.readLine();
}//fin del while
//se cierran los dos archivos el temporal.txt y clientes.txt
buffer.close();
bufferTemp.close();

try {
File inFile = new File("temporal.txt");
File outFile = new File("Peliculas.txt");

FileInputStream in = new FileInputStream(inFile);


FileOutputStream out = new FileOutputStream(outFile);

int c;
while( (c = in.read() ) != -1)//aqu se transfieren los datos de temporal.txt a
clientes.txt hasta que en el temporal no tenga datos que leer
out.write(c);

in.close();
out.close();
} catch(IOException ioE) {
JOptionPane.showMessageDialog(this,"Hubo un error a la hora de
borrar");
}

}//fin try

catch(Exception ex){
ex.printStackTrace();

}
}//fin del metodo eliminaePelicula
PGINA 68

}//fin de la clase borrarPeliculas

Clase actualizarCliente
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;

public class actualizarClientes extends JInternalFrame implements ActionListener{


PGINA 69

//global
ImageIcon II_imagen11;
JLabel JL_idMostrar,/*Labels para usar en el panel que muestra los datos actuales*/
JL_idCliente1,
JL_nombre1, JL_direccion1, JL_email1, JL_telefono1, JL_autorizado1,
/*Labels para usar en el panel que actualiza los deatos*/ JL_idCliente2, JL_nombre2,
JL_direccion2, JL_email2, JL_telefono2, JL_autorizado2;

JTextField JTF_idMostrar,/*Campos de texto para utilizar en el panel que muestra los datos*/
JTF_idCliente1,
JTF_nombre1, JTF_direccion1, JTF_email1, JTF_telefono1, JTF_autorizado1,
/*Campos de texto para utilizar en el panel que actuali datos*/ JTF_idCliente2,
JTF_nombre2,
JTF_direccion2, JTF_email2, JTF_telefono2, JTF_autorizado2;

JPanel
JP_principal, JP_norte, JP_este, JP_oeste,//cada panel contendr objetos que
conformarn la ventana
JP_id1, JP_id2, JP_nombre1, JP_nombre2, JP_direccion1, JP_direccion2, JP_email1,
JP_email2, JP_telefono1,
JP_telefono2, JP_autorizado1, JP_autorizado2;

JButton

JB_mostrarDatos, //trae los datos correspondientes y los muestra en campos de texto

JB_actualizar; //reemplaza los datos ya existentes por datos nuevos

private String identificador,


//recibe el nmero de cliente que se desea actualizar. Alberga el
nmero dde cliente para mostrar los datos del mismo
nuevoNombre,

//recibe el nuevo nombre

nuevoDireccion, //recibe el nueva direcion


nuevoemail,
nuevoTelefono,

//recibe el nuevo email


//recibe el nuevo telefono

nuevoAutorizado; //recibe el nuevo nomnbre de Autorizado

String id="", nombre="", telefono="", direccion="", email="", autorizado="";


PGINA 70

String nombreDeArchivo= "Clientes.txt";

//***CONSTRUCTOR***
public actualizarClientes() {

super("Actualizar Clientes", false, true, false, true);


setVisible(true);
setLocation(30,25); //ubicacin
setSize(600,450);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//instanciar objetos
//(Image Icons)
II_imagen11 = new ImageIcon("imagen11.gif");
//(Etiquetas)
JL_autorizado1 = new JLabel("Autorizado");
JL_autorizado2 = new JLabel("Autorizado");
JL_direccion1 = new JLabel("Direccion");
JL_direccion2 = new JLabel("Direccion");
JL_email1 = new JLabel("e-mail");
JL_email2 = new JLabel("e-mail");
JL_idCliente1 = new JLabel("id");
JL_idCliente2 = new JLabel("id");
JL_idMostrar = new JLabel("id cliente actualizar");
JL_nombre1 = new JLabel("Nombre");
JL_nombre2 = new JLabel("Nombre");
JL_telefono1 = new JLabel("Telefono");
JL_telefono2 = new JLabel("Telefono");

//(campos de texto)
JTF_autorizado1 = new JTextField(10);
PGINA 71

JTF_autorizado2 = new JTextField(10);


JTF_direccion1 = new JTextField(10);
JTF_direccion2 = new JTextField(10);
JTF_email1 = new JTextField(10);
JTF_email2 = new JTextField(10);
JTF_idCliente1 = new JTextField(2);
JTF_idCliente2 = new JTextField(2);
JTF_idMostrar = new JTextField(2);
JTF_nombre1 = new JTextField(10);
JTF_nombre2 = new JTextField(10);
JTF_telefono1 = new JTextField(8);
JTF_telefono2 = new JTextField(8);
try{
MaskFormatter formatter = new MaskFormatter("########");
formatter.setPlaceholderCharacter('_');

JTF_telefono2 = new JFormattedTextField(formatter);


}
catch(Exception er){
System.out.println(er);
}//fin catch

//(botones)
JB_actualizar = new JButton("Actualizar!");
JB_mostrarDatos = new JButton("Mostrar datos");

//paneles
JP_principal = new JPanel();
JP_este = new JPanel();
JP_norte = new JPanel();
JP_oeste= new JPanel();
PGINA 72

JP_autorizado1 = new JPanel();


JP_autorizado1 = new JPanel();
JP_autorizado2 = new JPanel();
JP_autorizado2 = new JPanel();
JP_direccion1 = new JPanel();
JP_direccion2 = new JPanel();
JP_email1 = new JPanel();
JP_email2 = new JPanel();
JP_id1 = new JPanel();
JP_id2 = new JPanel();
JP_nombre1 = new JPanel();
JP_nombre2 = new JPanel();
JP_telefono1 = new JPanel();
JP_telefono2 = new JPanel();

//establecer layout a los paneles

JP_principal.setLayout(new BorderLayout());
JP_norte.setLayout(new FlowLayout());
JP_este.setLayout(new GridLayout(6, 1));
JP_oeste.setLayout(new GridLayout(6, 1));

//pegar los objetos a su respectivo panel

JP_norte.add(JL_idMostrar);
JP_norte.add(JTF_idMostrar);
JP_norte.add(JB_mostrarDatos);
JP_norte.add(JB_actualizar);

JP_id1.add(JL_idCliente1);
JP_id1.add(JTF_idCliente1);
JP_nombre1.add(JL_nombre1);
PGINA 73

JP_nombre1.add(JTF_nombre1);
JP_direccion1.add(JL_direccion1);
JP_direccion1.add(JTF_direccion1);
JP_email1.add(JL_email1);
JP_email1.add(JTF_email1);
JP_telefono1.add(JL_telefono1);
JP_telefono1.add(JTF_telefono1);
JP_autorizado1.add(JL_autorizado1);
JP_autorizado1.add(JTF_autorizado1);

JP_oeste.add(JP_id1);
JP_oeste.add(JP_nombre1);
JP_oeste.add(JP_direccion1);
JP_oeste.add(JP_email1);
JP_oeste.add(JP_telefono1);
JP_oeste.add(JP_autorizado1);

JP_id2.add(JL_idCliente2);
JP_id2.add(JTF_idCliente2);
JP_nombre2.add(JL_nombre2);
JP_nombre2.add(JTF_nombre2);
JP_direccion2.add(JL_direccion2);
JP_direccion2.add(JTF_direccion2);
JP_email2.add(JL_email2);
JP_email2.add(JTF_email2);
JP_telefono2.add(JL_telefono2);
JP_telefono2.add(JTF_telefono2);
JP_autorizado2.add(JL_autorizado2);
JP_autorizado2.add(JTF_autorizado2);

JP_este.add(JP_id2);
JP_este.add(JP_nombre2);
PGINA 74

JP_este.add(JP_direccion2);
JP_este.add(JP_email2);
JP_este.add(JP_telefono2);
JP_este.add(JP_autorizado2);

//establecer atributos a ciertos objetos


/*los siguientes campos no se pueden editar, ya que la informacin que se muestra
*all, le corresponde a la aplicacin colocarla en ese lugar.*/
JTF_idCliente1.setEditable(false);
JTF_nombre1.setEditable(false);
JTF_direccion1.setEditable(false);
JTF_email1.setEditable(false);
JTF_telefono1.setEditable(false);
JTF_autorizado1.setEditable(false);
JTF_idCliente2.setEditable(false);

JB_mostrarDatos.addActionListener(this);
JB_actualizar.addActionListener(this);

//El botn actualizar estar disponible hasta que los datos del cliente sean revelados
JB_actualizar.setEnabled(false);

//pegar subpaneles al panel principal

JP_principal.add(JP_norte, BorderLayout.NORTH);
JP_principal.add(JP_oeste, BorderLayout.WEST);
JP_principal.add(JP_este, BorderLayout.EAST);
this.add(JP_principal);

}//****FIN CONSTRUCTOR****

PGINA 75

public void actionPerformed(ActionEvent e){

boolean llenadoCorrecto=false;

if(e.getSource()==JB_mostrarDatos){
setIdentificador(JTF_idMostrar.getText());
if(getIdentificador().length()==0) //en caso que el, tamao del String recibido sea cero, se
dleplegar un mensaje indicando el error
JOptionPane.showMessageDialog(null, "Debe ingresar el identificador del cliente");
else{
if(buscarCliente(identificador)==true){
JB_mostrarDatos.setEnabled(false); //se desabilita el boton, ya no se ocupa
JB_actualizar.setEnabled(true);

//se habilita el boton para utilizarlo en la siguiente

operacion
JTF_idMostrar.setEditable(false); //Se deshabilita la opcion de editar el campo
MostrarDatos();
System.out.println("El cliente existe");
}
else
JOptionPane.showMessageDialog(null, "El identificador para ese cliente no se
encuentra\nDigitar
un
identificador
correcto!",
"Error
al
buscar
el
cliente",
JOptionPane.WARNING_MESSAGE);
JTF_idMostrar.setText("");

}//fin else
}//fin getSource de JB_mostrarDatos

if(e.getSource()==JB_actualizar){

//Se obtienen los datos de los campos de texto para que sean procesados..
setNuevoNombre(JTF_nombre2.getText());
PGINA 76

setNuevoDireccion(JTF_direccion2.getText());
setNuevoemail(JTF_email2.getText());
setNuevoTelefono(JTF_telefono2.getText());
setNuevoAutorizado(JTF_autorizado2.getText());
//escribeNuevoCliente(identificador);
//en caso de que algn dato no se haya ingresado o un campo este vaco o el tamao del
String es cero, se despliega un mensaje indicando el error
if(getNuevoAutorizado().length()==0
||
getNuevoDireccion().length()==0
||
getNuevoNombre().length()==0 || getNuevoTelefono().length()==0 || getNuevoemail().length()==0)
JOptionPane.showMessageDialog(null, "Debe rellenar todos los campos!");

else if(!JTF_nombre2.getText().matches("[a-zA-Z]+\\s+[a-zA-z]+"))
JOptionPane.showMessageDialog(null, "Debe digitar nombre y apellido");
else if(!JTF_telefono2.getText().matches("\\d{8}"))
JOptionPane.showMessageDialog(this, "Formato de telfono incorrecto");
else if(!JTF_autorizado2.getText().matches("[a-zA-Z]+\\s+[a-zA-z]+"))
JOptionPane.showMessageDialog(null,
autorizado");

"Debe

digitar

nombre

apellido\ndel

else{
actualizarCliente(getIdentificador(),
getNuevoNombre(),
getNuevoemail(), getNuevoTelefono(), getNuevoAutorizado());

getNuevoDireccion(),

dispose(); //cieera la ventana con ese mismo botn


}//fin else
}//fin getSource de JB_actualizar
}//fin ActionPerformed

//**************************************************************************************************************
*******************************************************************************
public void actualizarCliente(String IDCliente, String nombre, String direccion, String email, String
telefono, String autorizado){
//archivo productos.txt donde se encuentra la informacion de los productos
PGINA 77

File archivo=new File("clientes.txt");


//archivo temp.txt = archivo temporal para realizar la actualizacion de la informacion
File temporal=new File("temporal.txt");

try{
// se abre el archivo clientes de lectura
FileReader archivoLectura=new FileReader(archivo);
BufferedReader buffer=new BufferedReader(archivoLectura);
//se abre el archivo temp de escritura para pasar los registros desde el archivo clientes.txt
FileWriter archivoEscritura=new FileWriter(temporal);
BufferedWriter bufferTemp=new BufferedWriter(archivoEscritura);
String linea=buffer.readLine();//se lee una linea del archivo clientes.txt

// se recorren todos los registros del archivo principal clientes.txt


while(linea!=null){//mientras que la linea sea diferente de nulo

String[] registro=linea.split(";");//este arreglo toma los datos de la linea hasta el primer punto
y coma

if(!registro[0].equals(IDCliente)){//si registro[0] es difenrente al id del cliente


bufferTemp.write(linea);//se escribe en el archivo los dems datos de los otros clientes
bufferTemp.newLine();//se crea una nueva linea

}//fin del if (!registro[0].equals(IDCliente))

else if(registro[0].equals(IDCliente)){//sino si registro[0] es igual al id del cliente


bufferTemp.write(IDCliente+";"+nombre+";"+direccion+";"+email+";"+telefono
autorizado+"\n");//se escribe en el archivo los nuevos datos del cliente

";"

}// fin del else if (registro[0].equals(IDCliente))

PGINA 78

linea=buffer.readLine();//leer la siguiente linea del archivo


}//fin del while
//se cierran los dos archivos el temp.txt y productos.txt
buffer.close();//se cierra el BufferReader
bufferTemp.close();//se cierra el BufferWriter

try {
File inFile = new File("temporal.txt");//se llama el archivo temporal.txt
File outFile = new File("clientes.txt");//se llama el archivo clientes.txt

FileInputStream
FileInputStream pasandole un archivo

in

new

FileInputStream(inFile);//se

crea

el

FileOutputStream out = new FileOutputStream(outFile);//se crea el


FileOutputStream pasandole un archivo

int c;
while( (c = in.read() ) != -1)//mientras que existan datos en temporal.txt
out.write(c);//se escribe lo que tenga temporal.txt a clientes.txt

in.close();//se cierra el FileInputStream


out.close();//se cierra el FileOutputStream
} catch(IOException e) {
JOptionPane.showMessageDialog(this,"Hubo un error a la hora de
actualizar");
}//fin catch

}//fin try

catch(Exception ex){
ex.printStackTrace();

}//fin catch
PGINA 79

}//fin de actualizarCliente

//**************************************************************************************************************
*******************************************************************************

public void MostrarDatos(){

String datosClienteMostrar="";
datosClienteMostrar=JTF_idMostrar.getText();
JTF_idCliente1.setText(datosClienteMostrar);
JTF_idCliente2.setText(datosClienteMostrar);
JTF_nombre1.setText(nombre);
JTF_telefono1.setText(telefono);
JTF_direccion1.setText(direccion);
JTF_email1.setText(email);
JTF_autorizado1.setText(autorizado);
}//fin mostrarDatos

public BufferedReader getBufferedReader(){

BufferedReader entradaDeArchivo= null;

File f = new File(nombreDeArchivo);

try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);

entradaDeArchivo = new BufferedReader(isr);


}//fin try
catch(FileNotFoundException fnfe){
PGINA 80

JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
}//fin getBufferedReader

public boolean buscarCliente(String idABuscar){

boolean encontrado= false;

BufferedReader entradaDeArchivo = getBufferedReader();

try{
String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese
registro
while(registroActual!= null && encontrado==false/*o tambien !encontrado*/){

StringTokenizer st = new StringTokenizer(registroActual, ";");

// String id="", nombre="", telefono="", direccion="", email="", autorizado="";

int ID=1,
NOMBRE=2,
TELEFONO=5,
DIRECCION=3,
EMAIL=4,
AUTORIZADO=6;

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


PGINA 81

if(contador==ID)
id=st.nextToken();
else if (contador==NOMBRE)
nombre=st.nextToken();
else if(contador==TELEFONO)
telefono=st.nextToken();
else if(contador==DIRECCION)
direccion=st.nextToken();
else if(contador==EMAIL)
email=st.nextToken();
else if(contador==AUTORIZADO)
autorizado=st.nextToken();
contador++;
}//fin while
if(idABuscar.equalsIgnoreCase(id))
encontrado = true;
else
registroActual= entradaDeArchivo.readLine();
}//fin while
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return encontrado;
}//fin nombreABuscar

/**
PGINA 82

* @return the identificador


*/
public String getIdentificador() {
return identificador;
}

/**
* @param identificador the identificador to set
*/
public void setIdentificador(String identificador) {
this.identificador = identificador;
}

/**
* @return the nuevoNombre
*/
public String getNuevoNombre() {
return nuevoNombre;
}

/**
* @param nuevoNombre the nuevoNombre to set
*/
public void setNuevoNombre(String nuevoNombre) {
this.nuevoNombre = nuevoNombre;
}

/**
* @return the nuevoDireccion
*/
public String getNuevoDireccion() {
return nuevoDireccion;
PGINA 83

/**
* @param nuevoDireccion the nuevoDireccion to set
*/
public void setNuevoDireccion(String nuevoDireccion) {
this.nuevoDireccion = nuevoDireccion;
}

/**
* @return the nuevoemail
*/
public String getNuevoemail() {
return nuevoemail;
}

/**
* @param nuevoemail the nuevoemail to set
*/
public void setNuevoemail(String nuevoemail) {
this.nuevoemail = nuevoemail;
}

/**
* @return the nuevoTelefono
*/
public String getNuevoTelefono() {
return nuevoTelefono;
}

/**
* @param nuevoTelefono the nuevoTelefono to set
PGINA 84

*/
public void setNuevoTelefono(String nuevoTelefono) {
this.nuevoTelefono = nuevoTelefono;
}

/**
* @return the nuevoAutorizado
*/
public String getNuevoAutorizado() {
return nuevoAutorizado;
}

/**
* @param nuevoAutorizado the nuevoAutorizado to set
*/
public void setNuevoAutorizado(String nuevoAutorizado) {
this.nuevoAutorizado = nuevoAutorizado;
}

/*
public boolean escribeNuevoCliente(String idABuscar){

boolean encontrado= false;


File f1 = new File("temporal2.txt");
try{
FileOutputStream fos = new FileOutputStream(f1,true);
PrintStream ps = new PrintStream(fos);

PGINA 85

BufferedReader entradaDeArchivo = getBufferedReader();

String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese


registro
while(registroActual!= null){

StringTokenizer st = new StringTokenizer(registroActual, ";");

// String id="", nombre="", telefono="", direccion="", email="", autorizado="";

int ID=1,
NOMBRE=2,
TELEFONO=5,
DIRECCION=3,
EMAIL=4,
AUTORIZADO=6;

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==ID)
id=st.nextToken();
else if (contador==NOMBRE)
nombre=st.nextToken();
else if(contador==TELEFONO)
telefono=st.nextToken();
else if(contador==DIRECCION)
direccion=st.nextToken();
else if(contador==EMAIL)
PGINA 86

email=st.nextToken();
else if(contador==AUTORIZADO)
autorizado=st.nextToken();
contador++;
}//fin while

if(idABuscar.equalsIgnoreCase(id)){
String otronombre = getNuevoNombre();
String Datos = id+";"+otronombre+";";
ps.println(Datos);

registroActual = entradaDeArchivo.readLine();

}//fin del if
else{
String Datos = id+";"+nombre+";";
ps.println(Datos);

registroActual = entradaDeArchivo.readLine();
}
}//fin while
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return encontrado;
}//fin nombreABuscar
PGINA 87

*/

}//fin de la clase actualizarClientes

Clase actualizarPelicula
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
PGINA 88

import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class actualizarPelicula extends JInternalFrame implements ActionListener{

//global
JLabel JL_idMostrar,/*labels
actuales*/JL_idPelicula1,

para

utilizar

en

el

panel

que

muestra

los

datos

JL_nombre1, JL_clasificacion1, JL_reparto1, JL_ao1, JL_categora1,


/*labels para usar en el panel que obtiene los nuevos datos*/ JL_idPelicula2, JL_nombre2,
JL_clasificacion2,
JL_reparto2, JL_ao2, JL_categora2;

JTextField JTF_idMostrar, /*campos de texto para utilizar en el panel que muestra los datos por
actulizar*/JTF_idPelicula1,
JTF_nombre1,
JTF_reparto1,
JTF_cambiarClasificacin,

JTF_ao1,

JTF_categora1,

JTF_clasificacin,

/*campos de texto para usar en el panel que obtiene los nuevos datos*/ JTF_idPelicula2,
JTF_nombre2, JTF_reparto2,
JTF_ao2;

JRadioButton /*para la clacificacin*/JRB_drama, JRB_comedia, JRB_accion, JRB_infantil,


JRB_suspenso, JRB_terror, JRB_cienciaFiccion
/*para la categora*/, JRB_estreno, JRB_noEstreno;
ButtonGroup BG_Clasificacion, BG_categoria;

JButton JB_mostrar, JB_actualizar, JB_verificar, JB_atras;

JPanel JP_principal, JP_norte, JP_este, JP_sur, JP_oeste,


/*paneles para el rea oeste*/JP_nombre1, JP_idPeli1, JP_clasificacin1, JP_reparto1,
JP_ao1, JP_categora1,
/*paneles para el rea este*/JP_nombre2, JP_idPeli2, JP_clasificacion2, JP_nClasificacion,
JP_reparto2, JP_ao2, JP_categora2, JP_nCategora;
PGINA 89

JPanel panel1, panel2;

private String identificador,


nuevoNombre,

//recibe el identificador de la pelcula que se desa actualizar datos

//recibe el nuevo dato correspondiente al nombre de la pelicula

nuevoClasificacion,//recibe el nuevo dato correspondiente a la clasificacion de la pelicula,


determinada por los JRadioButtons del ButtonGroup BG_clasificacion/Se inicializa en cualquier
String(este caso "false")para que sea comparada y asi comprobar su modificacion
nuevoReparto,
nuevoAo,

//recibe el nuevo dato correspondiente al reparto(actores) de la pelicula


//recibe el nuevo dato correspondiente al ao de la pelicula

nuevoCategoria;
//recibe el nuevo dato correspondiente a la categoria de la pelicula,
determinada por los JRadioButtons del ButtonGroup BG_categora/Se inicializa en cualquier
String(este caso "false")para que sea comparada y asi comprobar su modificacion

private String nombreDeArchivo="Peliculas.txt";

String id="", nombre="", clasificacion="", reparto="", ao="", categoria="";

//***CONSTRUCTOR***
public actualizarPelicula() {

super("Actualizar Pelicula", true, true, false, true);


setVisible(true);
setLocation(50,10); //ubicacin
setSize(500,400);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//instancia de los objetos

//(etiquetas)
JL_ao1 = new JLabel("Ao");
PGINA 90

JL_ao2 = new JLabel("Ao");


JL_categora1 = new JLabel("Categora");
JL_categora2 = new JLabel("Categora");
JL_clasificacion1 = new JLabel("Clasificacin");
JL_clasificacion2 = new JLabel("Clasificacin");
JL_idMostrar = new JLabel("ID de la pelicula");
JL_idPelicula1 = new JLabel("ID pelicula" );
JL_idPelicula2 = new JLabel("ID pelicula" );
JL_nombre1 = new JLabel("Nombre");
JL_nombre2 = new JLabel("Nombre");
JL_reparto1 = new JLabel("Reparto");
JL_reparto2 = new JLabel("Reparto");

//(Campos de texto)
JTF_ao1 = new JTextField(4);
JTF_ao2 = new JTextField(4);
JTF_categora1 = new JTextField(8);
JTF_clasificacin = new JTextField(8);
JTF_idMostrar = new JTextField(2);
JTF_idPelicula1 = new JTextField(2);
JTF_idPelicula2 = new JTextField(2);
JTF_nombre1 = new JTextField(10);
JTF_nombre2 = new JTextField(10);
JTF_reparto1 = new JTextField(10);
JTF_reparto2 = new JTextField(10);
JTF_cambiarClasificacin = new JTextField(10);

//(Radio botones)
JRB_accion = new JRadioButton("Accin");
JRB_cienciaFiccion = new JRadioButton("Ciencia Ficcin");
JRB_comedia = new JRadioButton("Comedia");
JRB_drama = new JRadioButton("Drama");
PGINA 91

JRB_infantil = new JRadioButton("Infantil");


JRB_suspenso = new JRadioButton("Suspenso");
JRB_terror = new JRadioButton("Terror");
JRB_estreno = new JRadioButton("Estreno");
JRB_noEstreno = new JRadioButton("No estreno");

//(grupo de radio botones)


BG_Clasificacion= new ButtonGroup();
BG_categoria = new ButtonGroup();

//(botones)
JB_actualizar = new JButton("Actualizar!");
JB_mostrar = new JButton("Mostrar datos");
JB_verificar = new JButton("Verificar");
JB_atras = new JButton("Atras!");

//(paneles)
JP_principal = new JPanel();
JP_este= new JPanel();
JP_norte = new JPanel();
JP_oeste = new JPanel();
JP_sur = new JPanel();
JP_ao1 = new JPanel();
JP_categora1 = new JPanel();
JP_clasificacin1= new JPanel();
JP_idPeli1= new JPanel();
JP_nombre1= new JPanel();
JP_reparto1=new JPanel();
JP_nCategora = new JPanel();
JP_nClasificacion = new JPanel();
JP_idPeli2 = new JPanel();
PGINA 92

JP_nombre2 = new JPanel();


JP_nClasificacion = new JPanel();
JP_clasificacion2 = new JPanel();
JP_reparto2 = new JPanel();
JP_ao2= new JPanel();
JP_nCategora = new JPanel();
JP_categora2 = new JPanel();

panel1=new JPanel();
panel2 = new JPanel();

//agragar los radio botones a su respectivo grupo


BG_Clasificacion.add(JRB_accion);
BG_Clasificacion.add(JRB_cienciaFiccion);
BG_Clasificacion.add(JRB_drama);
BG_Clasificacion.add(JRB_comedia);
BG_Clasificacion.add(JRB_infantil);
BG_Clasificacion.add(JRB_suspenso);
BG_Clasificacion.add(JRB_terror);

BG_categoria.add(JRB_estreno);
BG_categoria.add(JRB_noEstreno);

//Pegar ojetos a sus respectivos paneles

JP_norte.add(JL_idMostrar);
JP_norte.add(JTF_idMostrar);
JP_norte.add(JB_mostrar);

JP_idPeli1.add(JL_idPelicula1);
JP_idPeli1.add(JTF_idPelicula1);
JP_nombre1.add(JL_nombre1);
PGINA 93

JP_nombre1.add(JTF_nombre1);
JP_clasificacin1.add(JL_clasificacion1);
JP_clasificacin1.add(JTF_clasificacin);
JP_reparto1.add(JL_reparto1);
JP_reparto1.add(JTF_reparto1);
JP_ao1.add(JL_ao1);
JP_ao1.add(JTF_ao1);
JP_categora1.add(JL_categora1);
JP_categora1.add(JTF_categora1);

JP_oeste.add(JP_idPeli1);
JP_oeste.add(JP_nombre1);
JP_oeste.add(JP_clasificacin1);
JP_oeste.add(JP_reparto1);
JP_oeste.add(JP_ao1);
JP_oeste.add(JP_categora1);

JP_sur.add(JB_atras);
JP_sur.add(JB_verificar);
JP_sur.add(JB_actualizar);

JP_idPeli2.add(JL_idPelicula2);
JP_idPeli2.add(JTF_idPelicula2);
JP_nombre2.add(JL_nombre2);
JP_nombre2.add(JTF_nombre2);
JP_nClasificacion.add(JL_clasificacion2);
JP_ao2.add(JL_ao2);
JP_ao2.add(JTF_ao2);

JP_reparto2.add(JL_reparto2);
JP_reparto2.add(JTF_reparto2);
JP_nCategora.add(JL_categora2);
PGINA 94

JP_categora2.add(JRB_estreno);
JP_categora2.add(JRB_noEstreno);

JP_este.add(JP_idPeli2);
JP_este.add(JP_nombre2);
JP_este.add(JP_nClasificacion);
JP_este.add(JP_clasificacion2);
JP_este.add(JP_reparto2);
JP_este.add(JP_ao2);
JP_este.add(JP_nCategora);
JP_este.add(JP_categora2);

//Establecer Layouts a los paneles


JP_principal.setLayout(new BorderLayout());
JP_norte.setLayout(new FlowLayout());
JP_sur.setLayout(new FlowLayout());
JP_oeste.setLayout(new GridLayout(6, 1));
JP_este.setLayout(new BoxLayout(JP_este,BoxLayout.Y_AXIS));
JP_clasificacion2.setLayout(new BorderLayout());
panel1.setLayout(new BoxLayout(panel1,BoxLayout.Y_AXIS));
panel2.setLayout(new BoxLayout(panel2,BoxLayout.Y_AXIS));

//*pegar radio botones a su correspondiente panel


panel1.add(JRB_accion);
panel1.add(JRB_cienciaFiccion);
panel1.add(JRB_terror);
panel1.add(JRB_drama);
panel2.add(JRB_comedia);
panel2.add(JRB_suspenso);
panel2.add(JRB_infantil);
JP_clasificacion2.add(panel1, BorderLayout.EAST);
PGINA 95

JP_clasificacion2.add(panel2, BorderLayout.WEST);

//establecer atributos a los objetos

JTF_nombre1.setEditable(false);
JTF_clasificacin.setEditable(false);
JTF_reparto1.setEditable(false);
JTF_ao1.setEditable(false);
JTF_categora1.setEditable(false);
JTF_idPelicula1.setEditable(false);
JTF_idPelicula2.setEditable(false);
JB_actualizar.setEnabled(false);
JB_verificar.setEnabled(false);
JB_atras.setEnabled(false);
JTF_cambiarClasificacin.setEditable(false);

JB_mostrar.addActionListener(this);
JB_atras.addActionListener(this);
JB_verificar.addActionListener(this);
JB_actualizar.addActionListener(this);

JP_principal.add(JP_norte, BorderLayout.NORTH);
JP_principal.add(JP_sur, BorderLayout.SOUTH);
JP_principal.add(JP_este, BorderLayout.EAST);
JP_principal.add(JP_oeste, BorderLayout.WEST);

//Con las siguientes clases annimas se cambia el estado de la String clasificacion.Se determina
mediante los JRadioButons del grupo BG_clasificacion
//Cuando se presiona un boton, el estado de la String "nuevoClasificacion" cambia
// Clase interna del JRB_accion, clasificacion pasa a ser "accion"
PGINA 96

JRB_accion.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoClasificacion("accion");
System.out.println(getNuevoClasificacion());
}
});
// Clase interna del JRB_cienciaFiccion, clasificacion pasa a ser "ciencia ficcion"
JRB_cienciaFiccion.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoClasificacion("ciencia ficcion");
System.out.println(getNuevoClasificacion());
}
});
// Clase interna del JRB_comedia, clasificacion pasa a ser "comedia"
JRB_comedia.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoClasificacion("comedia");
System.out.println(getNuevoClasificacion());
}
});
// Clase interna del JRB_drama, clasificacion pasa a ser "drama"
JRB_drama.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoClasificacion("drama");
System.out.println(getNuevoClasificacion());
}
});
// Clase interna del JRB_infantil, clasificacion pasa a ser "infantil"
JRB_infantil.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoClasificacion("infantil");
System.out.println(getNuevoClasificacion());
PGINA 97

}
});
// Clase interna del JRB_suspenso, clasificacion pasa a ser "suspenso"
JRB_suspenso.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoClasificacion("suspenso");
System.out.println(getNuevoClasificacion());
}
});
// Clase interna del JRB_terror, clasificacion pasa a ser "terror"
JRB_terror.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoClasificacion("terror");
System.out.println(getNuevoClasificacion());
}
});

//Con las siguientes clases annimas se cambia el estado de la String categoria.Se determina
mediante los JRadioButons del grupo BG_categoria
//Cuando se presiona un boton, el estado de la String "nuevoCategoria" cambia
// Clase interna del JRB_estreno, categora pasa a ser "estreno"
JRB_estreno.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setNuevoCategoria("estreno");
System.out.println(getNuevoCategoria());
}
});

// Clase interna del JRB_noEstreno, categora pasa a ser "NO_Estreno"


JRB_noEstreno.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
PGINA 98

setNuevoCategoria("NO estreno");
System.out.println(getNuevoCategoria());
}
});

this.add(JP_principal);

}//****FIN CONSTRUCTOR****

public void actionPerformed(ActionEvent e){

boolean datosCorrectos=false;
boolean peliculaEncontrada=false;

//accion para el JB_mostrar


if(e.getSource()==JB_mostrar){

setIdentificador(JTF_idMostrar.getText()); //se obtiene el dato del campo. Este es el


identficador de la pelicula que se desea actualizar
if( getIdentificador().length()==0) //en caso que el, tamao del String recibido sea cero, se
dleplegar un mensaje indicando el error
JOptionPane.showMessageDialog(null, "Debe digitar el identificador de la pelcula");
else{
if(buscarPelicula(getIdentificador())==true){
mostrarDatos();
peliculaEncontrada=true;
}//fin if
PGINA 99

else{
JOptionPane.showMessageDialog(null, "La pelicula NO se encuentra!", "ERROR!",
JOptionPane.WARNING_MESSAGE);
JTF_idMostrar.setText("");
}//fin else
if(peliculaEncontrada==true){
JTF_idMostrar.setEditable(false);
JB_mostrar.setEnabled(false); //si el dato ingresado es correcto se deshabilitar el botn
JB_verificar.setEnabled(true);//se habilita el boton de verificar los datos por ingresar
}//fin if
}//fin else
}//fin getSource de JB_mostrar

//accion para el JB_verificar


if(e.getSource()==JB_verificar){
try{
setNuevoNombre(JTF_nombre2.getText());
setNuevoReparto(JTF_reparto2.getText());
setNuevoAo(JTF_ao2.getText());

if(
getNuevoClasificacion().equals("false")||getNuevoCategoria().equals("false")||getNuevoNombre().l
ength()==0||getNuevoReparto().length()==0||getNuevoAo().length()==0){
JOptionPane.showMessageDialog(null, "Debe rellenar todos los campos!");
JB_actualizar.setEnabled(false);
}//fin if
else
if(!JTF_ao2.getText().matches("\\d{4}")||Integer.parseInt(JTF_ao2.getText())<1900||Integer.pars
eInt(JTF_ao2.getText())>2014)
JOptionPane.showMessageDialog(null, "Formato de ao incorrecto\nDebe digitar un ao
comprendido entre 1900 y 2014", "ERROR!", JOptionPane.WARNING_MESSAGE);

else{
datosCorrectos=true;
PGINA 100

JTF_nombre2.setEditable(false);
JTF_ao2.setEditable(false);
JTF_reparto2.setEditable(false);
JB_verificar.setEnabled(false);
JB_atras.setEnabled(true);
}//fin else
if(datosCorrectos==true){
JB_actualizar.setEnabled(true);
}//fin if
}//fin try
catch(NullPointerException npe){
JOptionPane.showMessageDialog(null, "Debe rellenar todos los campos!");
}
}//fin getSource JB_verifcar

//accion para el botaon JB_atras


if(e.getSource()==JB_atras){
JTF_nombre2.setEditable(true);
JTF_ao2.setEditable(true);
JTF_reparto2.setEditable(true);
JB_actualizar.setEnabled(false);
JB_verificar.setEnabled(true);
JB_atras.setEnabled(false);
}//fin getSource JB_atras

//accion para el botn JB_actualizar


if(e.getSource()==JB_actualizar){
actualizarPelicula(getIdentificador(),getNuevoNombre(),
getNuevoReparto(), getNuevoAo(), getNuevoCategoria());

getNuevoClasificacion(),

JOptionPane.showMessageDialog(null, "Se han actualizado los datos del pelicula "+id);


dispose();
}//fin getSource de JB_actualizar
PGINA 101

//JTF_idMostrar.setEditable(false);// no se tiene que modificar el campo, por consiguiente se


deshabilita

}//fin ActionPerformed

public void mostrarDatos(){

String datosClienteMostrar="";
datosClienteMostrar=JTF_idMostrar.getText();
JTF_idPelicula1.setText(datosClienteMostrar);
JTF_idPelicula2.setText(datosClienteMostrar);
JTF_nombre1.setText(nombre);
JTF_clasificacin.setText(clasificacion);
JTF_reparto1.setText(reparto);
JTF_ao1.setText(ao);
JTF_categora1.setText(categoria);
}//fin mostrarDatos

//**Metodo que realiza la bsqueda de una pelicula y devulve true si la pelicula se encuentra en el
archivo, de lo contrario devuelve false
public boolean buscarPelicula(String identificador){

boolean encontrado= false;

BufferedReader entradaDeArchivo = getBufferedReader();

try{
PGINA 102

String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese


registro
while(registroActual!= null && encontrado==false/*o tambien !encontrado*/){

StringTokenizer st = new StringTokenizer(registroActual, ";");

int ID=1, NOMBRE=2, CLASIFICACION=3, REPARTO=4, AO=5, CATEGORIA=6;

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==ID)
id=st.nextToken();
else if (contador==NOMBRE)
nombre=st.nextToken();
else if(contador==CLASIFICACION)
clasificacion=st.nextToken();
else if(contador==REPARTO)
reparto=st.nextToken();
else if(contador==AO)
ao=st.nextToken();
else if(contador==CATEGORIA)
categoria=st.nextToken();
contador++;
}//fin while
if(identificador.equalsIgnoreCase(id)){
encontrado = true;

}//fin if
else
PGINA 103

registroActual= entradaDeArchivo.readLine();
}//fin while
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch

return encontrado;
}//fin buscarPelicula

public BufferedReader getBufferedReader(){

BufferedReader entradaDeArchivo= null;

File f = new File(getNombreDeArchivo());

try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);

entradaDeArchivo = new BufferedReader(isr);


}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
PGINA 104

}//fin getBufferedReader

//**************************************************************************************************************
*******************************************************************************
public void actualizarPelicula(String IDPelicula, String nombre, String clasificacion, String reparto,
String ao, String categoria){
//archivo productos.txt donde se encuentra la informacion de los productos
File archivo=new File("Peliculas.txt");
//archivo temp.txt = archivo temporal para realizar la actualizacion de la informacion
File temporal=new File("temporal.txt");

try{
// se abre el archivo clientes de lectura
FileReader archivoLectura=new FileReader(archivo);
BufferedReader buffer=new BufferedReader(archivoLectura);
//se abre el archivo temp de escritura para pasar los registros desde el archivo clientes.txt
FileWriter archivoEscritura=new FileWriter(temporal);
BufferedWriter bufferTemp=new BufferedWriter(archivoEscritura);
String linea=buffer.readLine();//se lee una linea del archivo clientes.txt

// se recorren todos los registros del archivo principal clientes.txt


while(linea!=null){//mientras que la linea sea diferente de nulo

String[] registro=linea.split(";");//este arreglo toma los datos de la linea hasta el primer punto
y coma

if(!registro[0].equals(IDPelicula)){//si registro[0] es difenrente al id del cliente


bufferTemp.write(linea);//se escribe en el archivo los dems datos de los otros clientes
bufferTemp.newLine();//se crea una nueva linea

PGINA 105

}//fin del if (!registro[0].equals(IDCliente))

else if(registro[0].equals(IDPelicula)){//sino si registro[0] es igual al id del cliente


bufferTemp.write(IDPelicula+";"+nombre+";"+clasificacion+";"+reparto+";"+ao + ";" +
categoria+"\n");//se escribe en el archivo los nuevos datos del cliente
}// fin del else if (registro[0].equals(IDCliente))

linea=buffer.readLine();//leer la siguiente linea del archivo


}//fin del while
//se cierran los dos archivos el temp.txt y productos.txt
buffer.close();//se cierra el BufferReader
bufferTemp.close();//se cierra el BufferWriter

try {
File inFile = new File("temporal.txt");//se llama el archivo temporal.txt
File outFile = new File("Peliculas.txt");//se llama el archivo clientes.txt

FileInputStream
FileInputStream pasandole un archivo

in

new

FileInputStream(inFile);//se

crea

el

FileOutputStream out = new FileOutputStream(outFile);//se crea el


FileOutputStream pasandole un archivo

int c;
while( (c = in.read() ) != -1)//mientras que existan datos en temporal.txt
out.write(c);//se escribe lo que tenga temporal.txt a clientes.txt

in.close();//se cierra el FileInputStream


out.close();//se cierra el FileOutputStream
}//fin try
catch(IOException e) {
PGINA 106

JOptionPane.showMessageDialog(this,"Hubo un error a la hora de


actualizar");
}//fin catch
}//fin try

catch(Exception ex){
ex.printStackTrace();

}//fin catch
}//fin de actualizarCliente

/**
* @return the identificador
*/
public String getIdentificador() {
return identificador;
}

/**
* @param identificador the identificador to set
*/
public void setIdentificador(String identificador) {
this.identificador = identificador;
}

/**
* @return the nuevoNombre
*/
public String getNuevoNombre() {
return nuevoNombre;
}

PGINA 107

/**
* @param nuevoNombre the nuevoNombre to set
*/
public void setNuevoNombre(String nuevoNombre) {
this.nuevoNombre = nuevoNombre;
}

/**
* @return the nuevoClasificacion
*/
public String getNuevoClasificacion() {
return nuevoClasificacion;
}

/**
* @param nuevoClasificacion the nuevoClasificacion to set
*/
public void setNuevoClasificacion(String nuevoClasificacion) {
this.nuevoClasificacion = nuevoClasificacion;
}

/**
* @return the nuevoReparto
*/
public String getNuevoReparto() {
return nuevoReparto;
}

/**
* @param nuevoReparto the nuevoReparto to set
*/
public void setNuevoReparto(String nuevoReparto) {
PGINA 108

this.nuevoReparto = nuevoReparto;
}

/**
* @return the nuevoAo
*/
public String getNuevoAo() {
return nuevoAo;
}

/**
* @param nuevoAo the nuevoAo to set
*/
public void setNuevoAo(String nuevoAo) {
this.nuevoAo = nuevoAo;
}

/**
* @return the nuevoCategoria
*/
public String getNuevoCategoria() {
return nuevoCategoria;
}

/**
* @param nuevoCategoria the nuevoCategoria to set
*/
public void setNuevoCategoria(String nuevoCategoria) {
this.nuevoCategoria = nuevoCategoria;
}

/**
PGINA 109

* @return the nombreDeArchivo


*/
public String getNombreDeArchivo() {
return nombreDeArchivo;
}

/**
* @param nombreDeArchivo the nombreDeArchivo to set
*/
public void setNombreDeArchivo(String nombreDeArchivo) {
this.nombreDeArchivo = nombreDeArchivo;
}
}//fin de la clase actualizarPelicula

Clase alquilerDePeliculas
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
PGINA 110

import javax.swing.JTextField;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Timer;

public class alquilerDePelicula extends JInternalFrame implements ActionListener{

//global
JLabel JL_numeroAlquiler, JL_numeroCliente , JL_fechaEntrega, JL_montoAPAgar;
JTextField
JTF_numeroAlquiler,
JTF_montoAPagar;

JTF_numeroCliente,JTF_ao,

JTF_fechaEntrega,

JButton JB_guardar, JB_verificarDatos;


JPanel JP_principal, JP_nALquiler, JP_nCliente, JP_nPelicula, JP_fAlquiler, JP_fEntrega,
JP_mPagar, JP_boton;
JPanel JP_fechaPrincipal;

JLabel JL_hora;
JTextField JTF_hora;
JButton JB_verInformacion,JB_agregarPelicula;

String nombreDeArchivo="Alquileres.txt";
insertarClientes insertC;
insertarPelicula insertP;

public String peliculas;

private String
IDalquiler,
PGINA 111

IDcliente,
IDpelicula,
fechaAlquiler,
fechaDeEntrega,
totalAPagar="nada";
String cliente, datosDelCliente;
Calendar c2;
Timer timer;

private String mesCierre;

//***CONSTRUCTOR***
public alquilerDePelicula() {
super ("Alquiler de pelicula", true, true, true, true);
setVisible(true);
setLocation(140,10); //ubicacin
setSize(300,700);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//instancia de los elementos de la fecha////////////////


c2 = new GregorianCalendar();

/////////////////////////////////////////////////////////////

//instanciar objetos
//(JComboBox)

//(etiquetas)
JL_numeroAlquiler = new JLabel("Alquiler nmero:");
JL_fechaEntrega = new JLabel("Fecha de entrega");
JL_montoAPAgar = new JLabel("Monto a pagar");
PGINA 112

JL_numeroCliente = new JLabel("Nmero cliente");

//(Campos de texto)

JTF_fechaEntrega = new JTextField(11);


JTF_montoAPagar = new JTextField(4);
JTF_numeroAlquiler = new JTextField(2);
JTF_numeroCliente = new JTextField(2);

//(botones)
JB_guardar = new JButton("Generar Alquiler!");
JB_verificarDatos= new JButton("Verificar datos");

//(paneles)
JP_principal = new JPanel();
JP_nALquiler = new JPanel();
JP_nCliente = new JPanel();
JP_nPelicula = new JPanel();
JP_fAlquiler = new JPanel();
JP_fEntrega = new JPanel();
JP_mPagar = new JPanel();
JP_boton = new JPanel();
JP_fechaPrincipal = new JPanel();
//pegar objetos a su respectivo panel
JP_nALquiler.add(JL_numeroAlquiler);
JP_nALquiler.add(JTF_numeroAlquiler);
JP_nCliente.add(JL_numeroCliente);
JP_nCliente.add(JTF_numeroCliente);

JP_fEntrega.add(JL_fechaEntrega);
JP_fEntrega.add(JTF_fechaEntrega);
PGINA 113

JP_mPagar.add(JL_montoAPAgar);
JP_mPagar.add(JTF_montoAPagar);
JP_boton.add(JB_verificarDatos);
JP_boton.add(JB_guardar);

IDalquiler=""+UltimoID();
JTF_numeroAlquiler.setText(IDalquiler);

//(pegar paneles al panel principal)


JP_principal.add(JP_nALquiler);
JP_principal.add(JP_nCliente);
JP_principal.add(JP_nPelicula);
JP_principal.add(JP_fAlquiler);
JP_principal.add(JP_fEntrega);
JP_principal.add(JP_mPagar);
JP_principal.add(JP_boton);

//atributos
JB_guardar.addActionListener(this);
JB_guardar.setEnabled(false);
JB_verificarDatos.addActionListener(this);
JTF_numeroAlquiler.setEditable(false);
JP_principal.setLayout(new BoxLayout(JP_principal,BoxLayout.Y_AXIS));
JTF_fechaEntrega.setEditable(false);
JTF_montoAPagar.setEditable(false);

JP_principal.add(JP_fechaPrincipal);
PGINA 114

JL_hora = new JLabel("Fecha:");


JTF_hora=new JTextField(18);
JTF_hora.setEditable(false);
JP_fechaPrincipal.add(JL_hora);
JP_fechaPrincipal.add(JTF_hora);
int dia = (c2.get(Calendar.DATE));
int mes = (c2.get(Calendar.MONTH))+1;
int annio = (c2.get(Calendar.YEAR));
int dias = c2.get(Calendar.DAY_OF_WEEK);
JTF_hora.setText(formateoFecha(dia, dias, mes, annio));

JB_verInformacion = new JButton("Ver cliente");


JP_nCliente.add(JB_verInformacion);

JB_agregarPelicula = new JButton("Agregar Pelicula");


JP_nPelicula.add(JB_agregarPelicula);
JB_agregarPelicula.addActionListener(this);
JB_verInformacion.addActionListener(this);

this.add(JP_principal);

}//******FIN CONSTRUCTOR*******

public void actionPerformed(ActionEvent e){

boolean datosCorrectos=false;

if(e.getSource()==JB_verificarDatos){

//
setIDcliente(JTF_numeroCliente.getText());
PGINA 115

//setIdAlquiler(esteblecerIDAlquiler());
//instancia de los elementos de la fecha////////////////
c2 = new GregorianCalendar();
String dia = Integer.toString(c2.get(Calendar.DATE));
String mes = Integer.toString(c2.get(Calendar.MONTH)+1);
String annio = Integer.toString(c2.get(Calendar.YEAR));

fechaAlquiler=dia+"-"+mes+"-"+annio;
boolean bisiesto = ((GregorianCalendar) c2).isLeapYear(Integer.parseInt(annio));
/////////////////////////////////////////////////////////////

JTF_fechaEntrega.setText(
determinaFechaDeEntrega(Integer.parseInt(dia),Integer.parseInt(mes) , Integer.parseInt(annio),
bisiesto));

validarCliente();
establecePeliculasPrecio();

//se verifica que se hata escrito en todos los campos necesarios para escribir en el archivo
if(((JTF_numeroCliente.getText().length()>0)&&JTF_fechaEntrega.getText().length()>0)&&JTF_mo
ntoAPagar.getText().length()>0&&getPeliculas().length()>0){
JB_guardar.setEnabled(true);
datosCorrectos=true;
}//fin if

}//fin getSource de JB_verificarDatos

if(e.getSource()==JB_guardar){

escribeArchivo();
PGINA 116

escribeID();
datosCorrectos=false;

JTF_fechaEntrega.setText("");
JTF_montoAPagar.setText("");

JTF_numeroCliente.setText("");

JB_guardar.setEnabled(false);
JB_verificarDatos.setEnabled(true);

JTF_numeroAlquiler.setText(""+UltimoID());
IDalquiler=JTF_numeroAlquiler.getText();
totalAPagar="nada";
setPeliculas("");

}//fin getSource de JB_guardar

if(e.getSource()==JB_agregarPelicula){
principal.setJdialog(true);
totalAPagar="";

}//fin de agregar pelicula

if(e.getSource()==JB_verInformacion){
cliente=JTF_numeroCliente.getText();
if(cliente.length()==0)
JOptionPane.showMessageDialog(null,"Debe digitar un identificador" );
else{
PGINA 117

if(buscarCliente(cliente)==false){
JOptionPane.showMessageDialog(null,"El cliente no se encuentra");
JTF_numeroCliente.setText("");
}//fin if
else{

JOptionPane.showMessageDialog(null, datosDelCliente);
}

}//fin getSource JB verVnformacion

}//fin actionPerformed

//Se valida el cliente, la aplicacion no deja avanzar hasta que se digite el id de un usuario alojado
en el archivo
public void validarCliente(){
insertC = new insertarClientes(null, null, null, null, null, null);
if(buscarCliente(JTF_numeroCliente.getText())==true){

System.out.println("Cliente encontrado");
}//fin del if
else{
JOptionPane.showMessageDialog(null,
JOptionPane.WARNING_MESSAGE);

"Cliente

NO

encontrado",

"ERROR!",

JTF_numeroCliente.setText("");
}//fin else
}//fin validarPelicula
PGINA 118

//Se validaLa pelicula, la aplicacion no deja avanzar hasta que se digite el id de una pelicula alojada
en el archivo

//**Metodo que realiza la bsqueda entre todos los clientes y devulve true si el cliente se encuentra
en el archivo, de lo contrario devuelve false
public boolean buscarCliente(String identificador){

File f1 = new File("clientes.txt");


try{
FileOutputStream fos = new FileOutputStream(f1,true);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "No se pudo crear el archivo clientes.txt\nPor favor
revise su configuracin");
}
boolean encontrado= false;
insertC = new insertarClientes(null, null, null, null, null, null);
BufferedReader entradaDeArchivo = insertC.getBufferedReader();

try{
String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese
registro
while(registroActual!= null && encontrado==false/*o tambien !encontrado*/){

StringTokenizer st = new StringTokenizer(registroActual, ";");

String id="", nombre="", telefono="", direccion="", email="", autorizado="";

int ID=1, NOMBRE=2, TELEFONO=3, DIRECCION=4, EMAIL=5, AUTORIZADO=6;

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


PGINA 119

if(contador==ID)
id=st.nextToken();
else if (contador==NOMBRE)
nombre=st.nextToken();
else if(contador==TELEFONO)
telefono=st.nextToken();
else if(contador==DIRECCION)
direccion=st.nextToken();
else if(contador==EMAIL)
email=st.nextToken();
else if(contador==AUTORIZADO)
autorizado=st.nextToken();
contador++;
}//fin while
if(identificador.equalsIgnoreCase(id)){
encontrado = true;
//variable que guarda los datos del cliente que se quiere borrar y los muestra mediante
un mensaje
datosDelCliente="ID:
"+id+"\nNombre:
"+nombre+"\nTelefono:
"+telefono+"\nDireccin: "+direccion+"\ne-mail: "+email+"\nAutorizado: "+autorizado;
}
else
registroActual= entradaDeArchivo.readLine();
}//fin while
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return encontrado;
PGINA 120

}//fin buscarCliente

public void escribeArchivo(){

try{
File f1;
File f2;
f1 = new File(nombreDeArchivo);
f2 = new File("Cierre_Mes.txt");
FileOutputStream fos;
FileOutputStream fos2;
fos=new FileOutputStream(f1,true);
fos2= new FileOutputStream(f2, true);
PrintStream ps;
PrintStream ps2;
ps = new PrintStream(fos);
ps2 = new PrintStream(fos2);
String alquiler;
String MESCierre;

alquiler=JTF_numeroAlquiler.getText()+";"+getIDcliente()+";"+getPeliculas()+";"+getFechaAlquiler(
)+";"+JTF_fechaEntrega.getText()+";"+getTotalAPagar();
ps.println(alquiler);
MESCierre=
getMesCierre()+";"+JTF_numeroAlquiler.getText()+";"+getIDcliente()+";"+getPeliculas()+";"+getFec
haAlquiler()+";"+JTF_fechaEntrega.getText()+";"+getTotalAPagar();
ps2.println(MESCierre);
}//Fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null,fnfe);
}//fin catch
PGINA 121

}//Fin escribeArchivo()

/**
* @return the IDcliente
*/
public String getIDcliente() {
return IDcliente;
}

public void setIDcliente(String IDcliente) {


this.IDcliente = IDcliente;
}

/**
* @return the IDpelicula
*/
public String getIDpelicula() {
return IDpelicula;
}

/**
* @param IDpelicula the IDpelicula to set
*/
public void setIDpelicula(String IDpelicula) {
this.IDpelicula = IDpelicula;
}

/**
PGINA 122

* @return the fechaAlquiler


*/
public String getFechaAlquiler() {
return fechaAlquiler;
}

/**
* @param fechaAlquiler the fechaAlquiler to set
*/
public void setFechaAlquiler(String fechaAlquiler) {
this.fechaAlquiler = fechaAlquiler;
}

/**
* @return the fechaDeEntrega
*/
public String getFechaDeEntrega() {
return fechaDeEntrega;
}

/**
* @param fechaDeEntrega the fechaDeEntrega to set
*/
public void setFechaDeEntrega(String fechaDeEntrega) {
this.fechaDeEntrega = fechaDeEntrega;
}

/**
* @return the totalAPagar
*/
public String getTotalAPagar() {
System.out.println("Devuelve"+totalAPagar);
PGINA 123

return totalAPagar;
}

/**
* @param totalAPagar the totalAPagar to set
*/
public void setTotalAPagar(String totalAPagar) {

this.totalAPagar = totalAPagar;

public int UltimoID(){

File f1;
f1 = new File("ID_alquiler.txt");
FileOutputStream fos;
try {fos=new FileOutputStream(f1,true);}
catch(Exception es){
System.out.println("Este error ocurrior en insertar clientes en el metodo cantidad de
clientes\n"+es);

}//fin del catch

BufferedReader entradaDeArchivo = getBufferedReader();

int cuentaClientes = 0;

PGINA 124

try{
String registroActual = entradaDeArchivo.readLine();
while(registroActual!=null){
cuentaClientes++;
registroActual = entradaDeArchivo.readLine();
}//fin while
}//fin try
catch( IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
return cuentaClientes+1;
}//find

public BufferedReader getBufferedReader(){

BufferedReader entradaDeArchivo= null;

File f = new File("ID_alquiler.txt");

try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);

entradaDeArchivo = new BufferedReader(isr);


}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
}//fin getBufferedReader

PGINA 125

public void escribeID(){

try{
File f1;
f1 = new File("ID_alquiler.txt");
FileOutputStream fos;
fos=new FileOutputStream(f1,true);
PrintStream ps;
ps = new PrintStream(fos);
String ID;

ID=JTF_numeroAlquiler.getText();
ps.println(ID);

}//Fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null,fnfe);
}//fin catch

JTF_numeroAlquiler.setText(""+(UltimoID()));

}//Fin del metodo escribe ID

//Metodo que determina la fecha de entrega de las peliculas


//Analiza los meses del ano y ademas si el ano es bisiesto o no
public static String determinaFechaDeEntrega(int dia, int mes,int ano,boolean bisiesto){
int limite=0;

PGINA 126

while(limite<3){

if(mes== 1||mes== 3||mes==5 ||mes == 7|| mes ==8|| mes ==10||mes ==


12){
if(dia<29){
dia=dia+3;
limite=3;

}//fin del if

else{

while(limite<3){
dia++;
if(dia==32){
dia=1;
mes++;
if(mes==13){
mes=1;
ano++;

}//fin del if

}//fin del if

limite++;
}//fin del while

PGINA 127

}//Fin del else

}//Fin del if de meses de 31 dias

else if(mes == 4||mes== 6|| mes== 9||mes==11){

if(dia<28){
dia=dia+3;
limite=3;

}//fin del if

else{

while(limite<3){
dia++;
if(dia==31){
dia=1;
mes++;

}//fin del if

limite++;
}//fin del while

}//Fin del else

PGINA 128

}//Fin del if de meses de 30 dias

else{
if(bisiesto == false){
while(limite<3){
dia++;
if(dia==28){
dia=1;
mes++;

}//fin del if

limite++;
}//fin del while

}//Si el ano en cuestion no es bisiesto

else{
while(limite<3){
dia++;
if(dia==29){
dia=1;
mes++;

}//fin del if

PGINA 129

limite++;
}//fin del while
}//Si el ano es bisiesto
}//Fin del caso del mes de fabrero
}//Fin del while

return ""+dia+"-"+mes+"-"+ano;
}//Fin del metodo fecha de entrega

public String getIDalquiler() {


return IDalquiler;
}

public void setIDalquiler(String IDalquiler) {


this.IDalquiler = IDalquiler;
}

/**
* @return the peliculas
*/
public String getPeliculas() {
return peliculas;
}

/**
PGINA 130

* @param peliculas the peliculas to set


*/
public void setPeliculas(String peliculas) {
System.out.println("Recibe"+peliculas);

this.peliculas = peliculas;
System.out.println("la global"+this.peliculas);
}

public String formateoFecha(int dia,int dias,int mes,int annio){


String fechaFinal="";
String day="",meses="";
switch(dias){
case 1:
day="domingo ";
break;
case 2:
day="Lunes ";
break;
case 3:
day ="Martes ";
break;
case 4:
day="Miercoles ";
break;
case 5:
day="Jueves ";
break;
case 6:
day="Viernes ";
break;
PGINA 131

case 7:
day="Sabado ";

}//Fin

switch(mes){

case 1:
meses="Enero";
break;
case 2:
meses="Febrero";
break;
case 3:
meses = "Marzo";
break;
case 4:
meses="Abril";
break;
case 5:
meses="Mayo";
break;
case 6:
meses="Junio";
break;
case 7:
meses="Julio";
break;
case 8:
meses="Agosto";
break;
case 9:
PGINA 132

meses="Setiembre";
break;
case 10:
meses="Octubre";
break;
case 11:
meses="Noviembre";
break;
case 12:
meses="Diciembre";

} //Fin del switch

setMesCierre(meses);//se establese el mes en que se hizo el cierre

fechaFinal=day+dia+" de "+meses+" del "+annio;

return fechaFinal;
}//Fin del metodo formateoFecha

public void establecePeliculasPrecio(){

if(totalAPagar.equalsIgnoreCase("nada")==false){
File f2 = new File("seleccionPeliculas.txt");
try{
FileInputStream fis = new FileInputStream(f2);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String datos = br.readLine();
PGINA 133

int i = datos.length();
datos=datos.substring(0,i-2);
System.out.println(datos);
StringTokenizer st = new StringTokenizer(datos,";");
totalAPagar=st.nextToken();
peliculas=st.nextToken();
JTF_montoAPagar.setText(totalAPagar);
setPeliculas(peliculas);
f2.delete();

}//fin del try


catch (FileNotFoundException fne){
JOptionPane.showMessageDialog(null,"Debe de elegir almenos una pelicula....");
}//fin del catch
catch(IOException y){
JOptionPane.showMessageDialog(null,"No se puede haceder al archivo con datos de la
pelicula");
}//fin del catch
}//fin del if

else{
JOptionPane.showMessageDialog(null,"Debe agregar almenos una pelicula");
}

}//Fin del metodo establece peliculas y precio

/**
* @return the mesCierre
*/
public String getMesCierre() {
return mesCierre;
}
PGINA 134

/**
* @param mesCierre the mesCierre to set
*/
public void setMesCierre(String mesCierre) {
this.mesCierre = mesCierre;
}

}//fin de la clase alquilerDePelicula

Clase cierreSemanal
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.Calendar;

import java.util.GregorianCalendar;

import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
PGINA 135

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class cierreSemanal extends JInternalFrame implements ActionListener{


private JPanel JP_principal,JP_semana1,JP_semana2;
private JTable semana1;
private JTable semana2;
DefaultTableModel DTM_semana1;
DefaultTableModel DTM_semana2;
String encabezados[]= {"L","K","M","J","V","S","D" };
private JButton JB_atras,JB_adelante,JB_atras2,JB_adelante2;
Calendar c1;
int dia,mes,anio,semana;
JLabel JL_mes1,JL_anio1,JL_mes2,JL_anio2;
int mesCambia=0,mesCambia2=0;
String fechaSelecion1="",fechaSelecion2="";
private JLabel JL_alquiler1,JL_alquiler2,JL_total1,JL_total2;
private JTextField JTF_alquiler1,JTF_alquiler2,JTF_total1,JTF_total2;
alquilerDePelicula aq;
JTextField JTF_semanaInicio1,JTFsemanaFinal1,JTF_semanaInicio2,JTF_semanaFinal2;

//***CONSTRUCTOR***
public cierreSemanal(){

super("Cierre Semanal", true, true , true , true);


PGINA 136

setVisible(true);
setLocation(100, 10);
setSize(950,350);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
c1 = new GregorianCalendar();
dia=c1.get(Calendar.DAY_OF_MONTH);
mes=c1.get(Calendar.MONTH);
anio=c1.get(Calendar.YEAR);
semana=c1.get(Calendar.WEEK_OF_MONTH);
int diaSemana=c1.get(Calendar.DAY_OF_WEEK);

String nueva[][]=ObtenerTabla(dia, mes+1, anio, semana, diaSemana);

JP_principal = new JPanel();


JP_principal.setLayout(new GridLayout(2,2));

JP_semana1= new JPanel();


semana1= new JTable();
JL_mes1=new JLabel("");
JL_anio1=new JLabel(""+anio);
//JL_anio1.setText(""+anio);

JL_mes1.setText((""+(mes+1)));

JP_semana1.add(JL_mes1);
JP_semana1.add(new JLabel("/"));
JP_semana1.add(JL_anio1);
PGINA 137

JScrollPane JSP_barraDeslizadora= new JScrollPane(semana1);


DTM_semana1 = new DefaultTableModel(nueva,encabezados);
semana1.setModel(DTM_semana1);
semana1.getTableHeader().setResizingAllowed(false);///no se permite cambiar el tamao a la
tabla
semana1.getTableHeader().setReorderingAllowed(false);///no se puede cambiar la posicion
de las filas en la tabla
semana1.setEnabled(false);

JP_semana1.add(JSP_barraDeslizadora);

JP_semana2 = new JPanel();


JL_mes2 = new JLabel("");
JL_mes2.setText((mes+1)+"");
JP_semana2.add(JL_mes2);
JL_anio2 = new JLabel(""+anio);
JP_semana2.add(new JLabel("/"));
JP_semana2.add(JL_anio2);

semana2 = new JTable();


String matrizSecundaria[][]=ObtenerTabla(dia, mes+1, anio, semana, diaSemana);
JScrollPane JSP_barraDeslizadora2 = new JScrollPane(semana2);

DTM_semana2 = new DefaultTableModel(matrizSecundaria,encabezados);


semana2.setModel(DTM_semana2);
semana2.getTableHeader().setResizingAllowed(false);///no se permite cambiar el tamao a la
tabla
semana2.getTableHeader().setReorderingAllowed(false);///no se puede cambiar la posicion
de las filas en la tabla
semana2.setEnabled(false);
PGINA 138

JP_semana2.add(JSP_barraDeslizadora2);

JB_atras = new JButton("Atras");


JB_adelante= new JButton("Adelante");
JB_adelante.setEnabled(false);

JPanel JP_botones = new JPanel();


JP_botones.add(JB_atras);
JP_botones.add(JB_adelante);
JPanel JP_botonesSemana1 = new JPanel();
JP_botonesSemana1.setLayout(new BoxLayout(JP_botonesSemana1,BoxLayout.Y_AXIS));
JP_botonesSemana1.add(JP_botones);

JPanel info1=new JPanel();


JL_alquiler1 = new JLabel("Alquileres de la semana");
JTF_alquiler1 = new JTextField(5);
JTF_alquiler1.setEditable(false);
JL_total1 = new JLabel("Total:");
JTF_total1=new JTextField(5);
JTF_total1.setEditable(false);
info1.add(JL_alquiler1);
info1.add(JTF_alquiler1);
info1.add(JL_total1);
info1.add(JTF_total1);
JTF_semanaInicio1=new JTextField(7);
JTFsemanaFinal1 = new JTextField(7);
PGINA 139

JPanel JP_idicaSemana1=new JPanel();


JP_idicaSemana1.add(new JLabel("Semana del"));
JP_idicaSemana1.add(JTF_semanaInicio1);
JP_idicaSemana1.add(new JLabel("hasta"));
JP_idicaSemana1.add(JTFsemanaFinal1);
JTF_semanaInicio1.setEditable(false);
JTFsemanaFinal1.setEditable(false);

JP_botonesSemana1.add(info1);
JP_botonesSemana1.add(JP_idicaSemana1);

JB_atras2 = new JButton("Atras");


JB_adelante2 = new JButton("Adelante");
JB_adelante2.setEnabled(false);
JPanel JP_botonesSemana2 = new JPanel();
JP_botonesSemana2.setLayout(new BoxLayout(JP_botonesSemana2,BoxLayout.Y_AXIS));
JPanel JP_botones2 = new JPanel();
JP_botones2.add(JB_atras2);
JP_botones2.add(JB_adelante2);

JPanel JP_info2=new JPanel();


JL_alquiler2 = new JLabel("Alquileres de la semana");
JTF_alquiler2 = new JTextField(5);
JL_total2=new JLabel("Total");
JTF_total2 = new JTextField(5);
JTF_alquiler2.setEditable(false);
JTF_total2.setEditable(false);
PGINA 140

JP_info2.add(JL_alquiler2);
JP_info2.add(JTF_alquiler2);
JP_info2.add(JL_total2);
JP_info2.add(JTF_total2);

JPanel JP_idicaSemana2 = new JPanel();


JP_idicaSemana2.add(new JLabel("Semana del"));
JTF_semanaInicio2=new JTextField(7);
JTF_semanaInicio2.setEditable(false);
JP_idicaSemana2.add(JTF_semanaInicio2);
JP_idicaSemana2.add(new JLabel("hasta"));
JTF_semanaFinal2 = new JTextField(7);
JTF_semanaFinal2.setEditable(false);
JP_idicaSemana2.add(JTF_semanaFinal2);

JP_botonesSemana2.add(JP_botones2);
JP_botonesSemana2.add(JP_info2);
JP_botonesSemana2.add(JP_idicaSemana2);

//Accion a los botones.......


JB_adelante.addActionListener(this);
JB_atras.addActionListener(this);
JB_adelante2.addActionListener(this);
JB_atras2.addActionListener(this);

JP_semana1.setBackground(Color.MAGENTA);
JP_semana2.setBackground(Color.BLUE);
JP_botonesSemana1.setBackground(Color.black);

JP_principal.add(JP_semana1);
PGINA 141

JP_principal.add(JP_botonesSemana1);
JP_principal.add(JP_semana2);
JP_principal.add(JP_botonesSemana2);

//Mouse adapter para conocer la celda el dato de la celda donde se hace clik
semana1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
int fila = semana1.rowAtPoint(e.getPoint());
int columna = semana1.columnAtPoint(e.getPoint());
if ((fila > -1) && (columna > -1)){
System.out.println("Debe
clickeo"+DTM_semana1.getValueAt(fila,columna));

imprimir

donde

Object obj = DTM_semana1.getValueAt(fila, columna);


try{

fechaSelecion1=obj.toString();

}
catch(NullPointerException npe){
System.out.println("selecicon en lugar invalido");
}//fin del catch
}//fin del if

DeterminaAlquiler(Integer.parseInt(fechaSelecion1),
1,Integer.parseInt(JL_anio1.getText()),1);

Integer.parseInt(JL_mes1.getText())-

PGINA 142

});

semana2.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e){
int fila = semana2.rowAtPoint(e.getPoint());
int columna = semana2.columnAtPoint(e.getPoint());
if ((fila > -1) && (columna > -1))
System.out.println((DTM_semana2.getValueAt(fila,columna )));
Object obj = DTM_semana2.getValueAt(fila, columna);
try{
fechaSelecion2=obj.toString();

}//fin del try


catch(NullPointerException npe){
System.out.println("Seleccione un lugar valido");
}//fin del catch
DeterminaAlquiler(Integer.parseInt(fechaSelecion2),
1,Integer.parseInt(JL_anio2.getText()),2);

Integer.parseInt(JL_mes2.getText())-

}
});

this.add(JP_principal);

}//***FIN CONSTRUCTOR

PGINA 143

public String[][] ObtenerTabla(int dia2,int mes,int anio,int semana2,int diaSemana2){//Inicio del


metodo Obtener Tabla
String matriz[][]=new String[6][7];

if(mes== 1||mes== 3||mes==5 ||mes == 7|| mes ==8|| mes ==10||mes == 12){
int dia=dia2,semana=semana2,diaSemana=diaSemana2;

if(diaSemana==1)
diaSemana=6;
else{
diaSemana=diaSemana-2;
}//fin del else

while(dia<32){

while(diaSemana<7&&dia<32){
matriz[semana-1][diaSemana]=""+dia;
diaSemana++;
dia++;

}//fin del while

diaSemana=0;
semana++;

}//fin del while


dia=dia2-1;
semana=semana2;
diaSemana=diaSemana2;
PGINA 144

if(diaSemana==1)
diaSemana=6;
else{
diaSemana=diaSemana-2;
}//fin del else
diaSemana--;

while(dia>0){

while(diaSemana>-1&&dia>0){
matriz[semana-1][diaSemana]=""+dia;
diaSemana--;
dia--;

}//fin del while

diaSemana=6;
semana--;

}//fin del while

}//Fin del if meses de 31 dias

else if(mes == 4||mes== 6|| mes== 9||mes==11){


int dia=dia2,semana=semana2,diaSemana=diaSemana2;

if(diaSemana==1)
diaSemana=6;
else{
diaSemana=diaSemana-2;
PGINA 145

}//fin del else

while(dia<31){

while(diaSemana<7&&dia<31){
matriz[semana-1][diaSemana]=""+dia;
diaSemana++;
dia++;

}//fin del while

diaSemana=0;
semana++;

}//fin del while


dia=dia2-1;
semana=semana2;
diaSemana=diaSemana2;
if(diaSemana==1)
diaSemana=6;
else{
diaSemana=diaSemana-2;
}//fin del else
diaSemana--;

while(dia>0){

while(diaSemana>-1&&dia>0){
matriz[semana-1][diaSemana]=""+dia;
diaSemana--;
PGINA 146

dia--;

}//fin del while

diaSemana=6;
semana--;

}//fin del while

}//fin de los meses de 30 dias

else{
int dia=dia2,semana=semana2,diaSemana=diaSemana2;

if(diaSemana==1)
diaSemana=6;
else{
diaSemana=diaSemana-2;
}//fin del else

while(dia<29){

while(diaSemana<7&&dia<29){
matriz[semana-1][diaSemana]=""+dia;
diaSemana++;
dia++;

}//fin del while

PGINA 147

diaSemana=0;
semana++;

}//fin del while


dia=dia2-1;
semana=semana2;
diaSemana=diaSemana2;
if(diaSemana==1)
diaSemana=6;
else{
diaSemana=diaSemana-2;
}//fin del else
diaSemana--;

while(dia>0){

while(diaSemana>-1&&dia>0){
matriz[semana-1][diaSemana]=""+dia;
diaSemana--;
dia--;

}//fin del while

diaSemana=6;
semana--;

}//fin del while


}//Fin del else

return matriz ;
PGINA 148

}//fin del metodo ObtenerTabla

public void actionPerformed(ActionEvent e) {


Calendar c2;
Calendar c3;
c2 = new GregorianCalendar();
c3=new GregorianCalendar();

//Botones semana 1
if(e.getSource()==JB_atras){
mesCambia++;
c2.add(Calendar.MONTH,-mesCambia);
System.out.println("fecha modificacion"+c2.getTime());
int dia=c2.get(Calendar.DAY_OF_MONTH);
System.out.println(dia);
int mes=c2.get(Calendar.MONTH);
System.out.println("Mese deberia ser 9"+ mes);

int anio=c2.get(Calendar.YEAR);
int semana=c2.get(Calendar.WEEK_OF_MONTH);
int diaSemana=c2.get(Calendar.DAY_OF_WEEK);
String mesanterior[][]=ObtenerTabla(dia, mes+1, anio, semana, diaSemana);
JL_mes1.setText((mes+1)+"");
JL_anio1.setText(""+anio);
DTM_semana1.setDataVector(mesanterior, encabezados);
semana1.setModel(DTM_semana1);
JB_adelante.setEnabled(true);

}//fin del boton atras

PGINA 149

if(e.getSource()==JB_adelante){
mesCambia--;
c2.add(Calendar.MONTH,-mesCambia);
System.out.println("fecha modificacion"+c2.getTime());
int dia=c2.get(Calendar.DAY_OF_MONTH);
System.out.println(dia);
int mes=c2.get(Calendar.MONTH);
System.out.println("Mese deberia ser 9"+ mes);

int anio=c2.get(Calendar.YEAR);
int semana=c2.get(Calendar.WEEK_OF_MONTH);
int diaSemana=c2.get(Calendar.DAY_OF_WEEK);
String mesanterior[][]=ObtenerTabla(dia, mes+1, anio, semana, diaSemana);
JL_mes1.setText((mes+1)+"");
JL_anio1.setText(""+anio);
DTM_semana1.setDataVector(mesanterior, encabezados);
semana1.setModel(DTM_semana1);

if(mesCambia==0){
JB_adelante.setEnabled(false);
}

}//fin del boton adelante

//Botones semana 2
if(e.getSource()==JB_atras2){
mesCambia2++;
c3.add(Calendar.MONTH,-mesCambia2);
System.out.println("fecha modificacion"+c3.getTime());
PGINA 150

int dia=c3.get(Calendar.DAY_OF_MONTH);
System.out.println(dia);
int mes=c3.get(Calendar.MONTH);
System.out.println("Mese deberia ser 9"+ mes);

int anio=c3.get(Calendar.YEAR);
int semana=c3.get(Calendar.WEEK_OF_MONTH);
int diaSemana=c3.get(Calendar.DAY_OF_WEEK);
String mesanterior[][]=ObtenerTabla(dia, mes+1, anio, semana, diaSemana);
JL_mes2.setText((mes+1)+"");
JL_anio2.setText(""+anio);
DTM_semana2.setDataVector(mesanterior, encabezados);
semana2.setModel(DTM_semana2);
JB_adelante2.setEnabled(true);

}//fin del boton atras 2

if(e.getSource()==JB_adelante2){

mesCambia2--;
c3.add(Calendar.MONTH,-mesCambia2);
System.out.println("fecha modificacion"+c3.getTime());
int dia=c3.get(Calendar.DAY_OF_MONTH);
System.out.println(dia);
int mes=c3.get(Calendar.MONTH);
System.out.println("Mese deberia ser 9"+ mes);

int anio=c3.get(Calendar.YEAR);
int semana=c3.get(Calendar.WEEK_OF_MONTH);
int diaSemana=c3.get(Calendar.DAY_OF_WEEK);
String mesanterior[][]=ObtenerTabla(dia, mes+1, anio, semana, diaSemana);
PGINA 151

JL_mes2.setText((mes+1)+"");
JL_anio2.setText(""+anio);
DTM_semana2.setDataVector(mesanterior, encabezados);
semana2.setModel(DTM_semana2);

if(mesCambia2==0){
JB_adelante2.setEnabled(false);
}

}//fin del boton atras 2

}//fin del performed

public void DeterminaAlquiler(int dia,int mes,int annio,int boton){


Calendar ce;
ce=new GregorianCalendar();
ce.set(annio, mes, dia);

String
fechaActual=ce.get(Calendar.DAY_OF_MONTH)+"-"+(ce.get(Calendar.MONTH)+1)+""+ce.get(Calendar.YEAR);
String fecha2="";
String fecha3="",fecha4="",fecha5="",fecha6="",fecha7="";
System.out.println("22-11-2010"+fechaActual);
for(int t=1;t<7;t++){
ce.add(Calendar.DATE, 1);
if(t==1)
fecha2=ce.get(Calendar.DAY_OF_MONTH)+"-"+(ce.get(Calendar.MONTH)+1)+""+ce.get(Calendar.YEAR);
if(t==2)
fecha3=ce.get(Calendar.DAY_OF_MONTH)+"-"+(ce.get(Calendar.MONTH)+1)+""+ce.get(Calendar.YEAR);
if(t==3)
PGINA 152

fecha4=ce.get(Calendar.DAY_OF_MONTH)+"-"+(ce.get(Calendar.MONTH)+1)+""+ce.get(Calendar.YEAR);
if(t==4)
fecha5=ce.get(Calendar.DAY_OF_MONTH)+"-"+(ce.get(Calendar.MONTH)+1)+""+ce.get(Calendar.YEAR);
if(t==5)
fecha6=ce.get(Calendar.DAY_OF_MONTH)+"-"+(ce.get(Calendar.MONTH)+1)+""+ce.get(Calendar.YEAR);
if(t==6)
fecha7=ce.get(Calendar.DAY_OF_MONTH)+"-"+(ce.get(Calendar.MONTH)+1)+""+ce.get(Calendar.YEAR);

}//fin del for

System.out.println(fecha2+"\n"+fecha3+"\n"+fecha4+"\n"+fecha5+"\n"+fecha6+"\n"+fecha7);

int totalalquiler=0,totalDinero=0;

File f1=new File("Alquileres.txt");

try{

FileOutputStream fos=new FileOutputStream(f1,true);


FileInputStream fis = new FileInputStream(f1);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

PGINA 153

String registroActual= br.readLine();

while(registroActual!=null){
StringTokenizer st = new StringTokenizer(registroActual, ";");
String id="", idClient="", idPelicula="", FechaAlquiler="", FechaEntrega="";
System.out.println("linesd el archivo"+registroActual);
int contador=1;
int pago=0;
int ID=1, IDClIENTE=2, IDPELICULA=3, FECHAALQUILER=4, FECHAENTREGA=5,
PAGO=6;

while(st.hasMoreTokens()==true){
if(contador==ID)
id=st.nextToken();
else if(contador == IDClIENTE)
idClient=st.nextToken();
else if(contador == IDPELICULA)
idPelicula=(st.nextToken());
else if (contador == FECHAALQUILER)
FechaAlquiler=st.nextToken();
else if (contador == FECHAENTREGA)
FechaEntrega=st.nextToken();
else if (contador == PAGO) {
pago=Integer.parseInt(st.nextToken());
break;
}//fin contador6

contador++;

System.out.println(contador);

PGINA 154

}//fin while
if(fechaActual.equalsIgnoreCase(FechaAlquiler)||fecha2.equalsIgnoreCase(FechaAlquiler)||fecha3
.equalsIgnoreCase(FechaAlquiler)||fecha4.equalsIgnoreCase(FechaAlquiler)||fecha5.equalsIgnore
Case(FechaAlquiler)||fecha6.equalsIgnoreCase(FechaAlquiler)||fecha7.equalsIgnoreCase(FechaA
lquiler)){
totalalquiler++;
totalDinero+=(pago);
}//fin del if

registroActual=br.readLine();

}//fin while

}//fin del try


catch(Exception es){
JOptionPane.showMessageDialog(null,es);
}//fin del catch
if(boton==1){
JTF_alquiler1.setText(""+totalalquiler);
JTF_total1.setText(""+totalDinero);
JTF_semanaInicio1.setText(fechaActual);
JTFsemanaFinal1.setText(fecha7);
}//fin del boton
else{
JTF_alquiler2.setText(""+totalalquiler);
JTF_total2.setText(""+totalDinero);
JTF_semanaInicio2.setText(fechaActual);
JTF_semanaFinal2.setText(fecha7);

}//fin del else


PGINA 155

}//fin del metodo Determina alquiler

}//Fin de la clase cierresemanal

Clase cierreMensual
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class cierreMensual extends JInternalFrame{

//global
JPanel JP_principal;
JButton JB_generarInforme;
JComboBox JCB_meses;
PGINA 156

String
meses[]={"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Setiembre","Octubre",
"Noviembre","Diciembre"};

int totalIngresosPorMes=0;
int contadorDeRegistros;

private String Mes;

//***CONSTRUCTOR***
public cierreMensual(){

super("Cierre Mensual", false, true , true , true);


setVisible(true);
setLocation(100, 10);
setSize(300,200);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

JCB_meses = new JComboBox(meses);

JP_principal= new JPanel(new GridLayout(4, 1));


JPanel JP_1= new JPanel();
JPanel JP_2 = new JPanel();
JPanel JP_3 = new JPanel();
JPanel JP_4 = new JPanel();

JB_generarInforme = new JButton("Generar Informe!");

PGINA 157

JLabel JL_informe = new JLabel("Informe Mensual");


JLabel JL_Elija = new JLabel("Elija un mes:");

JP_1.add(JL_informe);
JP_2.add(JL_Elija);
JP_3.add(JCB_meses);
JP_4.add(JB_generarInforme);

JP_principal.add(JP_1);
JP_principal.add(JP_2);
JP_principal.add(JP_3);
JP_principal.add(JP_4);

JB_generarInforme.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {


setMes(meses[JCB_meses.getSelectedIndex()]);
escribeArchivo();
principal.setJdialog1(true);
}
});

this.add(JP_principal);

}//***FIN CONSTRUCTOR

public BufferedReader getBufferedReader(){

BufferedReader entradaDeArchivo= null;


PGINA 158

File f = new File("Cierre_Mes.txt");

try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);

entradaDeArchivo = new BufferedReader(isr);


}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
}//fin getBufferedReader

//mtodo que realiza la suma de los registros de un determinado mes

public int buscartotalRegistroPorMes(String identificador/*va a ser igual al Mes*/){

contadorDeRegistros = 0; //variable que guarda la cantidad de registros encontrados en el


mes eligido

try{
BufferedReader entradaDeArchivo = getBufferedReader();

do{
// while(entradaDeArchivo!=null){

String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese


registro
PGINA 159

StringTokenizer st = new StringTokenizer(registroActual, ";");

String mes="", idalquiler="", idcliente="", idpelicula="", fechasale="", fechaentrega="",


pago="";

int MES=1, IDALQUILER=2,


FECHAENTREGA=6, PAGO=7;

IDCLIENTE=3,

IDPELICULA=4,

FECHASALE=5,

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==MES)
mes=st.nextToken();
else if (contador==IDALQUILER)
idalquiler=st.nextToken();
else if(contador==IDCLIENTE)
idcliente=st.nextToken();
else if(contador==IDPELICULA)
idpelicula=st.nextToken();
else if(contador==FECHASALE)
fechasale=st.nextToken();
else if(contador==FECHAENTREGA)
fechaentrega=st.nextToken();
else if(contador==PAGO)
pago=st.nextToken();
contador++;
}//fin while
if(identificador.equalsIgnoreCase(mes)){
contadorDeRegistros++;

PGINA 160

}//fin if
else
registroActual= entradaDeArchivo.readLine();

//}//fin while
}while(entradaDeArchivo!=null);

}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
catch(NullPointerException npe){
}
escribeTotalRegistros();//llamada al metodo para que determine la cantidad alojada en la
ultima linea del archivo temp_contadorRegistros
return contadorDeRegistros;
}//fin buscarPelicula

//mtodo que retorna una matriz con los datos correspondientes a un determinado mes...

public String [][] crearMatrix(int cantidadDeRegistros, String identificador){

String datosMovimientos[][] = new String[cantidadDeRegistros][7];

int fila = 0; //variable que guarda la cantidad de registros encontrados en el mes eligido

try{
BufferedReader entradaDeArchivo = getBufferedReader();
PGINA 161

while(entradaDeArchivo!=null){

String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese


registro

StringTokenizer st = new StringTokenizer(registroActual, ";");

String mes="", idalquiler="", idcliente="", idpelicula="", fechasale="", fechaentrega="",


pago="";

int MES=1, IDALQUILER=2,


FECHAENTREGA=6, PAGO=7;

IDCLIENTE=3,

IDPELICULA=4,

FECHASALE=5,

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==MES){
mes=st.nextToken();

}//fin if
else if (contador==IDALQUILER)
idalquiler=st.nextToken();
else if(contador==IDCLIENTE)
idcliente=st.nextToken();
else if(contador==IDPELICULA)
idpelicula=st.nextToken();
else if(contador==FECHASALE)
fechasale=st.nextToken();
else if(contador==FECHAENTREGA)
fechaentrega=st.nextToken();
PGINA 162

else if(contador==PAGO)
pago=st.nextToken();

contador++;
}//fin while

if(identificador.equalsIgnoreCase(mes)){

//si el mes es encontrado, la matrix se llena con los datos correspondientes a ese mes
datosMovimientos[fila][0]= mes;
datosMovimientos[fila][1]= idalquiler;
datosMovimientos[fila][2]= idcliente;
datosMovimientos[fila][3]= idpelicula;
datosMovimientos[fila][4]= fechasale;
datosMovimientos[fila][5]= fechaentrega;
datosMovimientos[fila][6]= pago;
//Se suman todas las cantidades que pasen por la celda de pago, para obtener la
cantidad total de ingresos por mes...
totalIngresosPorMes+=Integer.parseInt(datosMovimientos[fila][6]);
fila++;
}//fin if
else
registroActual= entradaDeArchivo.readLine();

}//fin while

}//fin try

catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
PGINA 163

JOptionPane.showMessageDialog(null, ioE);
}//fin catch
catch(NullPointerException npe){
}//fin catch

escribeTotalIngresos();//se llama al mtodo para que escriba en el archivo temp_totalIngresos


la cantidad sumada de la celda de "pago" del la matriz "datosMovimientos"

return datosMovimientos;
}//fin crearMatrix

public void escribeArchivo(){

try{
File f1;
f1 = new File("Mes_Consulta.txt");
FileOutputStream fos;
fos=new FileOutputStream(f1,true);
PrintStream ps;
ps = new PrintStream(fos);
ps.println(getMes());
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null,fnfe);
}//fin catch
}//fin escribeArchivo

public void escribeTotalRegistros(){


try{

File f4;
PGINA 164

f4= new File("temp_contadorRegistros.txt");


FileOutputStream fos4;
fos4 = new FileOutputStream(f4,true);
PrintStream ps;
ps = new PrintStream(fos4);
String contadorDeRegistrosString;
contadorDeRegistrosString = String.valueOf(contadorDeRegistros);
ps.println(contadorDeRegistrosString);
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch

}//fin escribeTotalRegistros

public void escribeTotalIngresos(){

try{
File f5;
f5=new File("temp_totalIngresos.txt");
FileOutputStream fos5;
fos5 = new FileOutputStream(f5);
PrintStream ps5;
ps5= new PrintStream(fos5);
String totalIngresos;
totalIngresos = String.valueOf(totalIngresosPorMes);
ps5.println(totalIngresos);
}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
PGINA 165

}//fin escribeTotalIngresos

/**
* @return the Mes
*/
public String getMes() {
return Mes;
}

/**
* @param Mes the Mes to set
*/
public void setMes(String Mes) {
this.Mes = Mes;
}

}//fin clase

Clase diaAlquilerAltoBajo
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
PGINA 166

import java.util.StringTokenizer;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class diaAlquilerAltoBajo extends JInternalFrame{

//global
JPanel JP_principal, JP_elijaMES, JP_comboMeses, JP_etiquetasALto_Bajo, JP_camposTexto;
JTextField JTF_bajo, JTF_alto, JTF_ingresosAlto, JTF_ingresoBajo;
JComboBox JCB_meses;
String mesElegido="false";//variable que lleva el mes al que se le quiere consultar el dia de
alquiler mas alto y bajo
String
meses[]={"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Setiembre","Octubre",
"Noviembre","Diciembre"};
int contadorDeRegistros;
int vecMes[]= new int [32];//vector equivalente con la cantidad de celdas equivalentes a un mes
del calendario.

//*****CONSTRUCTOR******
public diaAlquilerAltoBajo(){

super("Dia Alquiler Alto-Bajo", true, true , true , true);


setVisible(true);
setLocation(100, 10);
setSize(300,300);//El tamao de la ventana
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
PGINA 167

//instancia de los objetos


//(JPanels)
JP_principal= new JPanel();
JP_elijaMES = new JPanel();
JP_comboMeses = new JPanel();
JP_etiquetasALto_Bajo = new JPanel(); JPanel JP_etiquetaAlto = new JPanel(); JPanel
JP_etiquetaBajo = new JPanel();
JP_camposTexto = new
JP_campoBajo= new JPanel();

JPanel();

JPanel

JP_campoAlto=

new

JPanel();

JPanel

JPanel JP_diaDel = new JPanel();


JPanel JP_JLingresos = new JPanel();
JPanel JP_datosIngresos = new JPanel(); JPanel JP_datosIngresosAltos=new JPanel();
JPanel JP_datosIngresosBajos = new JPanel();
//(JComboBox)
JCB_meses = new JComboBox(meses);
//(JLabels)
JLabel JL_elijaMes= new JLabel("Elija un mes");
JLabel JL_diaDel = new JLabel("Da del mes con alquiler ms alto y bajo");
JLabel JL_alto = new JLabel("Alto");
JLabel JL_bajo = new JLabel("Bajo");
JLabel JL_ingresos = new JLabel("Ingresos del da:");
//(JtextFields)
JTF_alto = new JTextField(2);
JTF_bajo = new JTextField(2);
JTF_ingresosAlto = new JTextField(5);
JTF_ingresoBajo = new JTextField(5);

//(pegar objetos a los paneles)


JP_elijaMES.add(JL_elijaMes);
JP_comboMeses.add(JCB_meses);
JP_etiquetasALto_Bajo.add(JP_etiquetaAlto);
PGINA 168

JP_etiquetasALto_Bajo.add(JP_etiquetaBajo);
JP_etiquetaAlto.add(JL_alto);
JP_etiquetaBajo.add(JL_bajo);
JP_camposTexto.add(JP_campoAlto);
JP_camposTexto.add(JP_campoBajo);
JP_campoAlto.add(JTF_alto);
JP_campoBajo.add(JTF_bajo);
JP_diaDel.add(JL_diaDel);
JP_JLingresos.add(JL_ingresos);
JP_datosIngresos.add(JP_datosIngresosAltos);
JP_datosIngresos.add(JP_datosIngresosBajos);
JP_datosIngresosAltos.add(JTF_ingresosAlto);
JP_datosIngresosBajos.add(JTF_ingresoBajo);
//(pegar paneles al panel principal)
JP_principal.add(JP_elijaMES);
JP_principal.add(JP_comboMeses);
JP_principal.add(JP_diaDel);
JP_principal.add(JP_etiquetasALto_Bajo);
JP_principal.add(JP_camposTexto);
JP_principal.add(JP_JLingresos);
JP_principal.add(JP_datosIngresos);

JP_principal.setLayout(new BoxLayout(JP_principal, BoxLayout.Y_AXIS));


JP_etiquetasALto_Bajo.setLayout(new GridLayout(1, 2));
JP_camposTexto.setLayout(new GridLayout(1, 2));
JP_datosIngresos.setLayout(new GridLayout(1, 2));
JTF_alto.setEditable(false);
JTF_bajo.setEditable(false);
JTF_ingresoBajo.setEditable(false);
JTF_ingresosAlto.setEditable(false);
PGINA 169

this.add(JP_principal);

JCB_meses.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

//en caso de que no haya informacin que ensear se establecer XXX como que no existe
informacin--JTF_alto.setText("XXX");
JTF_bajo.setText("XXX");
JTF_ingresoBajo.setText("0");
JTF_ingresosAlto.setText("0");

mesElegido = meses[JCB_meses.getSelectedIndex()];//se saca el String ubicado en esa


posicin del arreglo
establecerAlto_bajo(mesElegido);//llamada al mtodo que determina la cantidad de
movimientos del mes seleccionado
}
});//fin clase interna anonima

}//***FIN CONSTRUCTOR

public void establecerAlto_bajo(String ME/* es igual al mes Elegido*/){

String mesMatrix[][]=crearMatrix(buscartotalRegistroPorMes(ME), ME);

}//fin establecerAlto_bajo();

public BufferedReader getBufferedReader(){


PGINA 170

BufferedReader entradaDeArchivo= null;


File f = new File("Cierre_Mes.txt");

try{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);

entradaDeArchivo = new BufferedReader(isr);


}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}
return entradaDeArchivo;
}//fin getBufferedReader

//metodo que busca el total de registros en un mes


public int buscartotalRegistroPorMes(String identificador/*va a ser igual al Mes*/){

contadorDeRegistros = 0; //variable que guarda la cantidad de registros encontrados en el


mes eligido

try{
BufferedReader entradaDeArchivo = getBufferedReader();

do{
// while(entradaDeArchivo!=null){

PGINA 171

String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese


registro

StringTokenizer st = new StringTokenizer(registroActual, ";");

String mes="", idalquiler="", idcliente="", idpelicula="", fechasale="", fechaentrega="",


pago="";

int MES=1, IDALQUILER=2,


FECHAENTREGA=6, PAGO=7;

IDCLIENTE=3,

IDPELICULA=4,

FECHASALE=5,

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==MES)
mes=st.nextToken();
else if (contador==IDALQUILER)
idalquiler=st.nextToken();
else if(contador==IDCLIENTE)
idcliente=st.nextToken();
else if(contador==IDPELICULA)
idpelicula=st.nextToken();
else if(contador==FECHASALE)
fechasale=st.nextToken();
else if(contador==FECHAENTREGA)
fechaentrega=st.nextToken();
else if(contador==PAGO)
pago=st.nextToken();
contador++;
}//fin while
if(identificador.equalsIgnoreCase(mes)){
PGINA 172

contadorDeRegistros++;

}//fin if
else
registroActual= entradaDeArchivo.readLine();

//}//fin while
}while(entradaDeArchivo!=null);

}//fin try
catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
catch(NullPointerException npe){
}

return contadorDeRegistros;
}//fin buscarPelicula

//mtodo que retorna una matriz con los datos correspondientes a un determinado mes...

public String [][] crearMatrix(int cantidadDeRegistros, String identificador){

Arrays.fill(vecMes, 0);
int sumaDia=0;

String datosMovimientos[][] = new String[cantidadDeRegistros][7];

int fila = 0; //variable que guarda la cantidad de registros encontrados en el mes eligido
PGINA 173

try{
BufferedReader entradaDeArchivo = getBufferedReader();

while(entradaDeArchivo!=null){

String registroActual = entradaDeArchivo.readLine(); //se obtiene toda la linea de ese


registro

StringTokenizer st = new StringTokenizer(registroActual, ";");

String mes="", idalquiler="", idcliente="", idpelicula="", fechasale="", fechaentrega="",


pago="";

int MES=1, IDALQUILER=2,


FECHAENTREGA=6, PAGO=7;

IDCLIENTE=3,

IDPELICULA=4,

FECHASALE=5,

int contador=1; //cuando contador est en algn valor de los anteriores, se guarda ese
String en la variable correspondiente

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(contador==MES){
mes=st.nextToken();

}//fin if
else if (contador==IDALQUILER)
idalquiler=st.nextToken();
else if(contador==IDCLIENTE)
idcliente=st.nextToken();
else if(contador==IDPELICULA)
idpelicula=st.nextToken();
PGINA 174

else if(contador==FECHASALE)
fechasale=st.nextToken();
else if(contador==FECHAENTREGA)
fechaentrega=st.nextToken();
else if(contador==PAGO)
pago=st.nextToken();

contador++;
}//fin while

if(identificador.equalsIgnoreCase(mes)){

//si el mes es encontrado, la matrix se llena con los datos correspondientes a ese mes
datosMovimientos[fila][0]= mes;
datosMovimientos[fila][1]= idalquiler;
datosMovimientos[fila][2]= idcliente;
datosMovimientos[fila][3]= idpelicula;
datosMovimientos[fila][4]= fechasale;
datosMovimientos[fila][5]= fechaentrega;
datosMovimientos[fila][6]= pago;
fila++;
estableceAltoBajo(guardaEnVector(determinaDia(fechasale), pago));

}//fin if

else
registroActual= entradaDeArchivo.readLine();
}//fin while

}//fin try

PGINA 175

catch(FileNotFoundException fnfe){
JOptionPane.showMessageDialog(null, fnfe);
}//fin catch
catch(IOException ioE){
JOptionPane.showMessageDialog(null, ioE);
}//fin catch
catch(NullPointerException npe){
}//fin catch
catch(ArrayIndexOutOfBoundsException AIOBE){
JOptionPane.showMessageDialog(null, AIOBE);
}//fin catch

return datosMovimientos;
}//fin crearMatrix

public String determinaDia(String fecha){

StringTokenizer st = new StringTokenizer(fecha, "-");

String dia="" ,mes="", ao="";;

int DIA=1, MES=2, AO=3;

int cont=1;

while(st.hasMoreTokens()){ //sigue en el ciclo mientras hallan mas tokens


if(cont==DIA)
dia=st.nextToken();
else if (cont==MES)
mes=st.nextToken();
PGINA 176

else if(cont==AO)
ao=st.nextToken();
cont++;
}//fin while

return dia;

}//fin determinadia

/*se utiliza el dia para guardar el pago en un vector*/


public int[] guardaEnVector(String dia, String pago){
vecMes[Integer.parseInt(dia)]+=Integer.parseInt(pago);
String salida="";
for(int i = 0; i<vecMes.length;i++)
salida+=vecMes[i]+"-";
return vecMes;
}//fin guardaEnVector

public void estableceAltoBajo(int vector[]){

int menor=0;
int mayor=vector[1];
int posicionAlto=0;
int posicionBajo=0;
//se establece la cantidad que debe guardar la variable menor
for(int m=0; m<vector.length;m++){
if(vector[m]!=0)
menor=vector[m];
posicionBajo=m;
if(menor>0)//cuando menos es mayor que cero sale del ciclo for
break;
PGINA 177

} //fin for

for(int i= 1; i<vector.length; i++){


//se va guardando el mximo valor del vector que representa la cantidad de ingresos de un da en
especfico
if(mayor<vector[i]){
mayor=vector[i];
posicionAlto=i;//se guarda la posicion en la que se encuentra el mximo valor, ya que
representa la el dia de mayor entrada.
}//fin if
//se va guardando el valor mnimo del vector, mayor que cero, ello corresponder a la cantidad de
ingresos minimos, de dia de alquiler mas bajo
if(vector[i]!=0){
if(menor>vector[i]){
menor=vector[i];
posicionBajo=i;//se guarda la posicion en la que se encuentra el mximo valor, ya que
representa la el dia de menor entrada.
}//fin if
}//fin if

}//fin for
//se establecen los datos correspondientes a los campos de texto...
JTF_ingresosAlto.setText(" "+mayor);
JTF_alto.setText(""+posicionAlto);
JTF_ingresoBajo.setText(" "+menor);
JTF_bajo.setText(""+posicionBajo);

}//fin establecerAltyoBajo()

}//fin clase

Clase panelImagen
import java.awt.Graphics;
PGINA 178

import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class panelImagen extends JPanel {

private ImageIcon icono;


private Image fondo;

public panelImagen(String ubicacion){// inicio del constructor

icono=new ImageIcon(ubicacion);
fondo=icono.getImage();
this.setSize(400,400);
}// fin del constructor

@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillRect(0, 0, 400, 400);
g.drawImage(fondo, 0,0,null);
}//fin paintComponent
}//fin class panelImagen

Clase pintaImagen
/*Clase PintaImage.... crea un border en el cual incluye
*la imagen cargada en el BuferedImage
* para aplicarla a el JDesktop Pane...
**/
PGINA 179

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.border.Border;

public class pintaImagen implements Border{

private File archi= new File("fondo.jpg");

private BufferedImage image;

public pintaImagen() {

try{
image = ImageIO.read(archi);
}
catch(Exception e){
System.out.println("No se encontro la imagen de fondo \n "+e);
}//

}//constructor

public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
PGINA 180

int x0 = x+ (width-image.getWidth())/2;
int y0 = y+ (height-image.getHeight())/2;
g.drawImage(image,x0,y0,null); }

public Insets getBorderInsets(Component c) {


return new Insets(0,0,0,0);}

public boolean isBorderOpaque() {


return true; }
}

Clase acercaDe
import java.awt.Color;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class AcercaDe extends JInternalFrame implements ActionListener {


//GLOBAL
JPanel JP_principal,JP_sobreLaaplicacion,JP_informacionSistema;
panelImagen JP_imagen;

PGINA 181

//**CONSTRUCTOR**

public AcercaDe(){
super("Acerca de", false, true, false, true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);//cuando se cierre sige funcionando el
resto de la aplicacin
setVisible(true);//la ventana ser visible para el usuario
setSize(700,700);//El tamao de la ventana
setLocation(100,8);
setResizable(true);

JP_principal=new JPanel();
JP_principal.setLayout(new BoxLayout(JP_principal,BoxLayout.Y_AXIS));
JP_imagen = new panelImagen("aplicacion.png");
JP_informacionSistema = new JPanel();
JP_sobreLaaplicacion=new JPanel();

//construccion del panel sobre la aplicacion

JP_sobreLaaplicacion.add(new JLabel("Video Club! 1.0 Software desarrollado para el manejo


de alquiler de peliculas"));
JP_sobreLaaplicacion.add(new JLabel("Proyecto para la materia de INTERACCION
HOMBRE-MAQUINA M.T.C. Laura Lopez Diaz"));
JP_sobreLaaplicacion.add(new
TABASCO"));

JLabel("UNIVERSIDAD

JUAREZ

AUTONOMA

DE

JP_sobreLaaplicacion.add(new JLabel("Division Academica de Informatica y Sistemas"));


JP_sobreLaaplicacion.add(new JLabel("Jessica M.G. Roosvelt Omar P.H. Iris Dafne C.H."));

//Informacion del sistema


PGINA 182

JTextArea JTA_info=new JTextArea(5,55);


JTA_info.setEditable(false);
String usuario="Usuario... "+System.getProperty("user.name");
String pc ="Este equipo..."+ System.getenv("COMPUTERNAME");
String sistema ="Sistema Operativo..."+ System.getProperty("os.name");
String procesador="Procesador..."+ System.getenv("PROCESSOR_IDENTIFIER");

String java = "Version JDK..."+System.getProperty("java.version");

String salida=usuario+"\n"+pc+"\n"+sistema+"\n"+procesador+"\n"+java;
JTA_info.setText(salida);
JTA_info.setFont(new Font("Courier", Font.BOLD, 14));
JP_informacionSistema.add(JTA_info);

JButton JB_aceptar = new JButton("Aceptar");


//Clase annima de ActionListener para hacer que el botn cierre el JInternalFrame
JB_aceptar.addActionListener(new ActionListener() { //
public void actionPerformed(ActionEvent e) {

/*/* Boton para salir de la aplicacin//*/

dispose(); //cierra solamente el JInternalFrame


}
});
//fin clase annina que cierra el JInternalFrame AcercaDe

//pegar componentes al panel principal

JP_principal.add(JP_imagen);
JP_principal.add(JP_sobreLaaplicacion);
JP_principal.add(JP_informacionSistema);
JP_principal.add(JB_aceptar);// se pega el boton aceptar
PGINA 183

this.add(JP_principal);
this.setBackground(Color.cyan);
}//fin constructor

public void actionPerformed(ActionEvent e) {

dispose();

}//fin del actionPerformed

PGINA 184

Potrebbero piacerti anche