Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Agencia de viajes en delphi
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Agencia de viajes en delphi

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
tubina
Usuario


Registrado: Sep 14, 2006
Mensajes: 2

Asunto: Agencia de viajes en delphi Responder citando

Debo Construir una aplicación Delphi pero soy novata en el lenguaje quisiera saber si alguién tiene algún código que permita visualizar, ingresar y buscar información de pasajeros en una determinada agencia de viajes. La información de los pasajeros debe estar almacenada en una base de datos (se deja a elección el sistema administrador de base de datos a usar). Esta base de datos debe contener una tabla con la siguiente estructura:

Tabla : Pasajero
Campos: nombre_pasajero texto de largo 50
ciudad_origen texto de largo 50
ciudad_destino texto de largo 50
fecha_viaje numérico
medio_transporte texto de largo 1 (‘T’:Terrestre, ‘A’: Aéreo)
linea_aerea texto de largo 50
empresa_transporte texto de largo 50

La aplicación debe comenzar con un formulario que visualice todos los pasajeros de la agencia, para esto debe leer todos los datos de la tabla Pasajero.

El botón Agregar debe pasar al formulario de Ingreso y el botón Buscar debe pasar al formulario de Búsqueda.

El formulario de Ingreso debe tener la siguiente forma:
El botón Grabar debe validar que todos los datos deben estar ingresados, insertar un nuevo registro en la tabla Pasajero y volver al primer formulario. Al seleccionar el medio de transporte Terrestre se debe habilitar el ingreso de la empresa transportista y se deben deshabilitar el medio de transporte aéreo y el ingreso de la línea aérea. Lo mismo debe suceder en el caso inverso.
El botón Cancelar debe volver al primer formulario sin ingresar el pasajero.


El formulario de Búsqueda debe tener la siguiente forma:
Sólo se debe permitir ingresar el nombre del pasajero. El botón Buscar debe validar que se ingresó el nombre del pasajero, buscar este pasajero en la tabla Pasajero y si no existe enviar un mensaje de error. Si el pasajero existe debe desplegar el resto de los datos.
El botón Volver debe volver al primer formulario.

Cualquier ayuda la agradeceré.
MensajePublicado:
Jue Sep 14, 2006 1:31 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: RE: Agencia de viajes en Delphi Responder citando

En primer lugar crearemos la tabla "pasajero", para ello hemos utilizado "Database Desktop" (aplicación para creación y modificación de tablas que incluye Delphi). Como tipo de base de datos hemos utilizando Paradox (base de datos por defecto para Delphi).

Desde Delphi realizamos el resto de la aplicación (los tres formularios, y el acceso a la base de datos).

Puedes descargar el código fuente complento desarrollado en Delphi 6 desde aquí.



AjpdSoft Agencia de viajes


El código fuente del formulario principal formMenuPrincipal:

Código:
unit UnidadMenuPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Grids, DBGrids, StdCtrls;

type
  TformMenuPrincipal = class(TForm)
    Panel1: TPanel;
    tabla: TDBGrid;
    bAgregar: TButton;
    bBuscar: TButton;
    bCerrar: TButton;
    procedure bCerrarClick(Sender: TObject);
    procedure bAgregarClick(Sender: TObject);
    procedure bBuscarClick(Sender: TObject);
    procedure tablaDblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }

    vtMostrarDatos : boolean;

  end;

var
  formMenuPrincipal: TformMenuPrincipal;

implementation

uses UnidadModuloDatos, UnidadAgregarPasajero, UnidadBuscarPasajero;

{$R *.dfm}

procedure TformMenuPrincipal.bCerrarClick(Sender: TObject);
begin
  md.tPasajero.Close;
  Close;
end;

procedure TformMenuPrincipal.bAgregarClick(Sender: TObject);
begin
  application.createform(TFormAgregarPasajero, FormAgregarPasajero);
  FormAgregarPasajero.showmodal;
end;

procedure TformMenuPrincipal.bBuscarClick(Sender: TObject);
begin
  application.createform(TFormBuscarPasajero, FormBuscarPasajero);
  FormBuscarPasajero.showmodal;
end;

procedure TformMenuPrincipal.tablaDblClick(Sender: TObject);
begin
  vtMostrarDatos := true;
  bBuscarClick(Self);
end;

procedure TformMenuPrincipal.FormCreate(Sender: TObject);
begin
  vtMostrarDatos := false;
end;

end.



El código fuente del formulario Agregar formAgregarPasajero:

Código:
unit UnidadAgregarPasajero;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, ExtCtrls;

type
  TformAgregarPasajero = class(TForm)
    Label2: TLabel;
    txtPasajero: TDBEdit;
    Label3: TLabel;
    txtCO: TDBEdit;
    Label4: TLabel;
    txtCD: TDBEdit;
    Label5: TLabel;
    txtFV: TDBEdit;
    Label6: TLabel;
    lLineaAerea: TLabel;
    txtLinea: TDBEdit;
    lEmpresaTransporte: TLabel;
    txtEmpresaT: TDBEdit;
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    txtMedioT: TComboBox;
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure txtMedioTClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formAgregarPasajero: TformAgregarPasajero;

implementation

uses UnidadModuloDatos;

{$R *.dfm}

procedure TformAgregarPasajero.Button2Click(Sender: TObject);
begin
  //cancelamos la inserción y cerramos el formulario
  md.tPasajero.Cancel;
  close;
end;

procedure TformAgregarPasajero.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  md.tPasajero.Cancel;
  //liberamos el formulario de memoria
  Action := caFree;
end;

procedure TformAgregarPasajero.Button1Click(Sender: TObject);
var
  seguir : boolean;
begin
  //comprobamos que se han introducido todos los datos
  if txtPasajero.Text = '' then
  begin
    MessageDlg('Debe introducir el nombre del pasajero.', mtWarning, [mbok], 0);
    txtPasajero.SetFocus;
  end
  else
  begin
    if txtCO.Text = '' then
    begin
      MessageDlg('Debe introducir la ciudad de origen.', mtWarning, [mbok], 0);
      txtCO.SetFocus;
    end
    else
    begin
      if txtCD.Text = '' then
      begin
        MessageDlg('Debe introducir la ciudad de destino.', mtWarning, [mbok], 0);
        txtCD.SetFocus;
      end
      else
      begin
        if md.tPasajeroFecha_viaje.AsString = '' then
        begin
          MessageDlg('Debe introducir la fecha del viaje.', mtWarning, [mbok], 0);
          txtFV.SetFocus;
        end
        else
        begin
          if txtMedioT.Text = '' then
          begin
            MessageDlg('Debe introducir el medio de transporte.', mtWarning, [mbok], 0);
            txtMedioT.SetFocus;
          end
          else
          begin
            seguir := true;
            if (txtMedioT.Text = 'Terrestre') and (txtEmpresaT.Text = '') then
            begin
              seguir := false;
              MessageDlg('Debe introducir la empresa de transporte.', mtWarning, [mbok], 0);
              txtEmpresaT.SetFocus;
            end;
            if (txtMedioT.Text = 'Aéreo') and (txtLinea.Text = '') and (seguir = true) then
            begin
              seguir := false;
              MessageDlg('Debe introducir la línea aérea.', mtWarning, [mbok], 0);
              txtLinea.SetFocus;
            end;
            if seguir then
            begin
              if txtMedioT.Text = 'Aéreo' then
                md.tPasajeroMedio_transporte.Value := 'A';
              if txtMedioT.Text = 'Terrestre' then
                md.tPasajeroMedio_transporte.Value := 'T';
              md.tPasajero.Post;
              Close;
            end;
          end;
        end;
      end;
    end;
  end;
end;

procedure TformAgregarPasajero.FormCreate(Sender: TObject);
begin
  md.tPasajero.Insert;
end;

procedure TformAgregarPasajero.txtMedioTClick(Sender: TObject);
begin
  if txtMedioT.Text = 'Terrestre' then
  begin
    txtLinea.Text := '';
    txtLinea.Enabled := false;
    lLineaAerea.Enabled := false;
    lEmpresaTransporte.Enabled := true;
    txtEmpresaT.Enabled := true;
  end;
  if txtMedioT.Text = 'Aéreo' then
  begin
    txtEmpresaT.Text := '';
    txtEmpresaT.Enabled := false;
    lEmpresaTransporte.Enabled := false;
    lLineaAerea.Enabled := true;
    txtLinea.Enabled := true;
  end;
end;

end.



El código fuente del formulario Buscar formBuscarPasajero:

Código:
unit UnidadBuscarPasajero;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Mask, DBCtrls;

type
  TformBuscarPasajero = class(TForm)
    Label1: TLabel;
    txtNombre: TEdit;
    bBuscar: TButton;
    gDatos: TGroupBox;
    Label2: TLabel;
    txtPasajero: TDBEdit;
    Label3: TLabel;
    txtCO: TDBEdit;
    Label4: TLabel;
    txtCD: TDBEdit;
    Label5: TLabel;
    txtFV: TDBEdit;
    Label6: TLabel;
    lLineaAerea: TLabel;
    txtLinea: TDBEdit;
    lEmpresaTransporte: TLabel;
    txtEmpresaT: TDBEdit;
    Panel1: TPanel;
    Button1: TButton;
    bCancelar: TButton;
    txtMedioT: TComboBox;
    bVolver: TButton;
    procedure bBuscarClick(Sender: TObject);
    procedure bCancelarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure txtMedioTClick(Sender: TObject);
    procedure bVolverClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formBuscarPasajero: TformBuscarPasajero;

implementation

uses UnidadModuloDatos, UnidadMenuPrincipal;

{$R *.dfm}

procedure TformBuscarPasajero.bBuscarClick(Sender: TObject);
begin
  if txtNombre.Text <> '' then
  begin
    //utilizamos la función "locate" para realizar la búsqueda
    if md.tPasajero.Locate('nombre_pasajero', txtNombre.Text, []) then
    begin
      //mostramos el panel donde se muestran los datos del pasajero buscado
      gDatos.Visible := true;
      //ampliamos el tamaño del formulario
      Height := 323;

      //para el desplegable de Medio de transporte (según sea A = Aéreo ó T = Terrestre)
      if md.tPasajeroMedio_transporte.AsString = 'A' then
        txtMedioT.ItemIndex := txtMedioT.Items.IndexOf ('Aéreo');
      if md.tPasajeroMedio_transporte.AsString = 'T' then
        txtMedioT.ItemIndex := txtMedioT.Items.IndexOf ('Terrestre');
    end
    else
    begin
      //ocultamos el panel donde se muestran los datos del pasajero buscado
      gDatos.Visible := False;
      //reducimos el tamaño del formulario
      Height := 68;
      MessageDlg('No se ha encontrado ningún pasajero con el nombre especificado.', mtWarning, [mbok], 0);
      txtNombre.SetFocus;
    end;
  end
  else
  begin
    MessageDlg('Debe introducir el nombre del pasajero a buscar.', mtWarning, [mbok], 0);
    txtNombre.SetFocus;
  end;
end;

procedure TformBuscarPasajero.bCancelarClick(Sender: TObject);
begin
  md.tPasajero.Cancel;
  close;
end;

procedure TformBuscarPasajero.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  formmenuprincipal.vtMostrarDatos := false;
  md.tPasajero.Cancel;
  Action := caFree;
end;

procedure TformBuscarPasajero.Button1Click(Sender: TObject);
var
  seguir : boolean;
begin
  //comprobamos que se han introducido todos los datos
  if txtPasajero.Text = '' then
  begin
    MessageDlg('Debe introducir el nombre del pasajero.', mtWarning, [mbok], 0);
    txtPasajero.SetFocus;
  end
  else
  begin
    if txtCO.Text = '' then
    begin
      MessageDlg('Debe introducir la ciudad de origen.', mtWarning, [mbok], 0);
      txtCO.SetFocus;
    end
    else
    begin
      if txtCD.Text = '' then
      begin
        MessageDlg('Debe introducir la ciudad de destino.', mtWarning, [mbok], 0);
        txtCD.SetFocus;
      end
      else
      begin
        if md.tPasajeroFecha_viaje.AsString = '' then
        begin
          MessageDlg('Debe introducir la fecha del viaje.', mtWarning, [mbok], 0);
          txtFV.SetFocus;
        end
        else
        begin
          if txtMedioT.Text = '' then
          begin
            MessageDlg('Debe introducir el medio de transporte.', mtWarning, [mbok], 0);
            txtMedioT.SetFocus;
          end
          else
          begin
            seguir := true;
            if (txtMedioT.Text = 'Terrestre') and (txtEmpresaT.Text = '') then
            begin
              seguir := false;
              MessageDlg('Debe introducir la empresa de transporte.', mtWarning, [mbok], 0);
              txtEmpresaT.SetFocus;
            end;
            if (txtMedioT.Text = 'Aéreo') and (txtLinea.Text = '') and (seguir = true) then
            begin
              seguir := false;
              MessageDlg('Debe introducir la línea aérea.', mtWarning, [mbok], 0);
              txtLinea.SetFocus;
            end;
            if seguir then
            begin
              if txtMedioT.Text = 'Aéreo' then
                md.tPasajeroMedio_transporte.Value := 'A';
              if txtMedioT.Text = 'Terrestre' then
                md.tPasajeroMedio_transporte.Value := 'T';
              md.tPasajero.Post;
              Close;
            end;
          end;
        end;
      end;
    end;
  end;
end;

procedure TformBuscarPasajero.FormCreate(Sender: TObject);
begin
  //ocultamos el panel donde se muestran los datos del pasajero buscado
  gDatos.Visible := False;
  //reducimos el tamaño del formulario
  Height := 68;

  //si se ha hecho doble clic sobre algún pasajero del formulario principal lo mostramos directamente
  if formMenuPrincipal.vtMostrarDatos then
  begin
    gDatos.Visible := true;
    Height := 323;
  end;
end;

procedure TformBuscarPasajero.txtMedioTClick(Sender: TObject);
begin
  if txtMedioT.Text = 'Terrestre' then
  begin
    txtLinea.Text := '';
    txtLinea.Enabled := false;
    lLineaAerea.Enabled := false;
    lEmpresaTransporte.Enabled := true;
    txtEmpresaT.Enabled := true;
  end;
  if txtMedioT.Text = 'Aéreo' then
  begin
    txtEmpresaT.Text := '';
    txtEmpresaT.Enabled := false;
    lEmpresaTransporte.Enabled := false;
    lLineaAerea.Enabled := true;
    txtLinea.Enabled := true;
  end;
end;

procedure TformBuscarPasajero.bVolverClick(Sender: TObject);
begin
  close;
end;

end.




El código fuente del módulo de datos (data module) md:

Código:
unit UnidadModuloDatos;

interface

uses
  SysUtils, Classes, DB, DBTables, Forms;

type
  Tmd = class(TDataModule)
    dbtPasajero: TDataSource;
    tPasajero: TTable;
    tPasajeroCodigo: TAutoIncField;
    tPasajeroNombre_pasajero: TStringField;
    tPasajeroCiudad_origen: TStringField;
    tPasajeroCiudad_destino: TStringField;
    tPasajeroFecha_viaje: TDateField;
    tPasajeroMedio_transporte: TStringField;
    tPasajeroLinea_aerea: TStringField;
    tPasajeroEmpresa_transporte: TStringField;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  md: Tmd;

implementation

{$R *.dfm}

procedure Tmd.DataModuleCreate(Sender: TObject);
begin
  tPasajero.Close;
  tPasajero.DatabaseName := ExtractFilePath(application.ExeName) + 'datos';
  tPasajero.Open;
end;

end.
MensajePublicado:
Sab Sep 16, 2006 4:03 pm
Top of PageVer perfil de usuario
tubina
Usuario


Registrado: Sep 14, 2006
Mensajes: 2

Asunto: Responder citando

Gracias Alonso por la gran ayuda, te pasaste, muchas gracias!!!
MensajePublicado:
Sab Sep 16, 2006 11:53 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A