Está en la página 1de 9

Una empresa de servicio de taxis necesita una aplicación para registrar la información de los taxis afiliados, los

conductores y los usuarios del servicio.

El programa debe permitir el ingreso de estos datos y el reporte de la información almacenada hasta el momento.

Para llevar a cabo este proceso se realiza el siguiente diseño de pantalla:

JTabbedPane

JComboBox
JPanel
(TPanel)

JRadioButton

La pantalla principal debe contener cuatro Pestañas, (Taxis, Conductores, Usuarios, Listados)

Cada pestaña se diseña utilizando un Panel en un archivo independiente, a continuación se muestra el código
correspondiente a la clase que se encarga de manejar la información de los taxis.

Para utilizar este código debe crear una clase llamada TPanel (esta clase no se puede ejecutar porque no contiene main,
a continuación se debe crear la clase EmpresaTaxis que será la clase principal)

import javax.swing.*;

import java.io.*;

import java.awt.*;

import java.awt.event.*;

public class TPanel extends JPanel implements ActionListener {

JLabel lblpla, lblmod, lblncon, lblmar;

JTextField txtncon;

JComboBox cmbpla;//cuadro combinado para mostrar las placas de los taxis

JComboBox cmbmod;//cuadro combinado para mostrar el modelo del taxi

//Arreglo para cargar los datos en el cuadro combinado de las placas

String pla[] = {"XEJ-240", "XEJ-123", "XEJ-666", "XEJ-910", "XEJ-368", "XEJ-789", "XEJ-986",


"XEJ-645"};

//Arreglo para cargar los datos en el cuadro combinado de los taxis


String mod[] = {"2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017",
"2018"};

JPanel p1;

JRadioButton optmaz, optche, optdae, optren;

ButtonGroup grpmod;

JButton cmbgra, cmbnue;

DataOutputStream archoutput;

public TPanel() {

p1 = new JPanel();

p1.setLayout(new GridLayout(6, 3, 10, 10));

lblpla = new JLabel("Placa");

lblmod = new JLabel("Modelo");

lblmar = new JLabel("Marca");

lblncon = new JLabel("Conductor");

txtncon = new JTextField(20);

optmaz = new JRadioButton("Mazda", true);

optche = new JRadioButton("Chevrolet", false);

optdae = new JRadioButton("Daewoo", false);

optren = new JRadioButton("Renault", false);

cmbpla = new JComboBox(pla);

cmbmod = new JComboBox(mod);

cmbgra = new JButton("Grabar");

cmbnue = new JButton("Nuevo");

grpmod = new ButtonGroup();

grpmod.add(optmaz);

grpmod.add(optche);

grpmod.add(optdae);

grpmod.add(optren);

p1.add(lblpla);

p1.add(cmbpla);

p1.add(new JLabel(""));

p1.add(lblmod);

p1.add(cmbmod);

p1.add(new JLabel(""));

p1.add(lblmar);

p1.add(optmaz);

p1.add(optche);

p1.add(new JLabel(""));
p1.add(optdae);

p1.add(optren);

p1.add(lblncon);

p1.add(txtncon);

p1.add(new JLabel(""));

p1.add(cmbgra);

p1.add(cmbnue);

cmbgra.setEnabled(false);

cmbgra.addActionListener(this);

cmbnue.addActionListener(this);

add(p1);

public void actionPerformed(ActionEvent ev) {

if (ev.getSource() == cmbgra) {

grabar();

if (ev.getSource() == cmbnue) {

nuevo();

public void nuevo() {

try {

archoutput = new DataOutputStream(new FileOutputStream("taxis.dat"));

cmbnue.setEnabled(false);

cmbgra.setEnabled(true);

} catch (IOException exc) {

JOptionPane.showMessageDialog(null, "No se pudo abrir el archivo", "Empresa de Taxis",

JOptionPane.ERROR_MESSAGE);

System.exit(1);

}
public void grabar() {

try {

if (txtncon.getText().isEmpty()) {

JOptionPane.showMessageDialog(null, "Debe escribir correctamente los datos",


"Campos de texto vacios", JOptionPane.ERROR_MESSAGE);

} else {

archoutput.writeUTF(txtncon.getText());

archoutput.writeUTF(cmbpla.getSelectedItem().toString());

archoutput.writeUTF(cmbmod.getSelectedItem().toString());

if (optmaz.isSelected() == true) {

archoutput.writeUTF("Mazda");

if (optche.isSelected() == true) {

archoutput.writeUTF("Chevrolet");

if (optdae.isSelected() == true) {

archoutput.writeUTF("Daewoo");

if (optren.isSelected() == true) {

archoutput.writeUTF("Renault");

txtncon.setText("");

} catch (IOException exc) {

JOptionPane.showMessageDialog(null, "Error al guardar los datos", "Empresa de Taxis",

JOptionPane.ERROR_MESSAGE);

System.exit(1);

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

Esta clase contiene el main para poder ejecutar la aplicación


import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class EmpresaTaxis extends JFrame implements ActionListener{

JTabbedPane jtp;
JMenu menuArchivo;

JMenuBar barra;

JMenuItem acerca;

JMenuItem salir;

public EmpresaTaxis() {

setTitle("Empresa de taxis");

setSize(800, 400);

initComponents();

private void initComponents() {

Container con=getContentPane();

con.setLayout(new FlowLayout());

jtp = new JTabbedPane();

jtp.addTab("Taxis", new TPanel());//permite adicionar una pestaña

//jtp.addTab("Conductores", new CPanel());

//jtp.addTab("Usuarios", new UPanel());

//jtp.addTab("Listados", new LPanel());

menuArchivo = new JMenu("Archivo");

menuArchivo.setMnemonic('A');

barra = new JMenuBar();

setJMenuBar(barra);

acerca = new JMenuItem(" Acerca de... ");

acerca.setMnemonic('A');

salir = new JMenuItem(" Salir ");

salir.setMnemonic('s');

barra.add(menuArchivo);

menuArchivo.add(acerca);

menuArchivo.add(salir);

acerca.addActionListener(this);

salir.addActionListener(this);

con.add(jtp);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
public void actionPerformed(ActionEvent ev) {

if (ev.getSource()==acerca) {

JOptionPane.showMessageDialog(this, "Trabajo final",

"Empresa de Taxis",
JOptionPane.INFORMATION_MESSAGE);

if (ev.getSource()==salir) {

System.exit(0);

public static void main(String args[]) {


new EmpresaTaxis().setVisible(true);

De los conductores se almacena: nombre, dirección y teléfono (String), cédula (int)


Para esta pestaña se debe crear un nuevo panel en la clase CPanel (no olvidar quitar el comentario en la clase
EmpresaTaxis para visualizar esta pestaña)
import javax.swing.*;

import java.io.*;

import java.awt.*;

import java.awt.event.*;

public class CPanel extends JPanel implements ActionListener {

JLabel lblnom, lblced, lbldir, lbltel;

JTextField txtnom, txtced, txtdir, txttel;

JPanel p1, p2;

JButton cmbgra, cmbnue;

DataOutputStream archoutput;

public CPanel() {

p2 = new JPanel();

p1 = new JPanel();

p1.setLayout(new GridLayout(5, 2, 10, 10));

p2.setLayout(new BorderLayout());

lblnom = new JLabel("Nombre");

lblced = new JLabel("Cedula");

lbldir = new JLabel("Direccion");

lbltel = new JLabel("Telefono");

txtnom = new JTextField(20);

txtced = new JTextField(20);

txtdir = new JTextField(20);

txttel = new JTextField(20);

cmbgra = new JButton("Grabar");

cmbnue = new JButton("Nuevo");

p1.add(lblnom);

p1.add(txtnom);

p1.add(lblced);

p1.add(txtced);

p1.add(lbldir);

p1.add(txtdir);

p1.add(lbltel);

p1.add(txttel);

p1.add(cmbgra);

cmbgra.setEnabled(false);

p1.add(cmbnue);
add(p1);

cmbnue.addActionListener(this);

cmbgra.addActionListener(this);

public void actionPerformed(ActionEvent ev) {

if (ev.getSource() == cmbgra) {

grabar();

if (ev.getSource() == cmbnue) {

nuevo();

public void nuevo() {

try {

archoutput = new DataOutputStream(new FileOutputStream("conductores.dat"));

cmbnue.setEnabled(false);

cmbgra.setEnabled(true);

} catch (IOException exc) {

JOptionPane.showMessageDialog(null, "No se pudo abrir el archivo", "Empresa de Taxis",

JOptionPane.ERROR_MESSAGE);

System.exit(1);

public void grabar() {

try {

int ced = Integer.parseInt(txtced.getText());

int tel = Integer.parseInt(txttel.getText());

if (ced > 0) {

archoutput.writeUTF(txtnom.getText());

archoutput.writeInt(ced);

archoutput.writeUTF(txtdir.getText());

archoutput.writeInt(tel);
txtnom.setText("");

txtced.setText("");

txtdir.setText("");

txttel.setText("");

} catch (NumberFormatException efn) {

JOptionPane.showMessageDialog(this, "Debe escribir correctamente los datos", "Formato


de numero invalido", JOptionPane.ERROR_MESSAGE);

} catch (IOException exc) {

JOptionPane.showMessageDialog(null, "Error al guardar los datos", "Empresa de Taxis",

JOptionPane.ERROR_MESSAGE);

System.exit(1);

Complementar el ejercicio creando el panel para la pestaña de usuario. Se deben registrar los siguientes datos en el
archivo: nombre, dirección y teléfono (String) estos elementos deben ser diligenciados en campos de texto, usando dos
radioButton se debe determinar si la dirección pertenece a la zona rural o urbana, en el archivo se debe registrar la
palabra correspondiente.
Este panel debe tener dos botones, Grabar y Nuevo.
El panel de Listados debe contener un JTextArea para visualizar el contenido de los archivos y 3 botones con los cuales
se puede hacer el reporte de cada uno de los archivos manejados hasta el momento (taxis, usuarios, conductores)
Para crear un textArea se utilizan las siguientes instrucciones
En la definición de los objetos de la ventana se debe crear el textArea y el Scroll (barra de desplazamiento)
JTextArea lista;
JScrollPane scroll;

Luego en la inicialización de los objetos se deben crear en este orden.


lista=new JTextArea();
scroll=new JScrollPane(lista);
y por ultimo debe adicionar al panel el objeto scroll

También podría gustarte