Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIN
El presente tutorial es una gua paso a paso sobre el desarrollo completo
de un caso de uso en el lenguaje de programacin c# de .NET.
El caso de uso que servir de fuente para el desarrollo de la aplicacin es
Administrar datos tratamientos, caso de uso del Sistema Gestin Citas
que se ha venido desarrollando:
SESION : 1
Recordemos que el caso de uso que se desarrollar en el presente tutorial
es Administrar datos Tratamientos:
Para el desarrollo de la GUI, debemos tener en cuenta el diseo de la base
de datos, que en relacin con los tratamientos indica que un paciente
puede tener varios tratamientos:
namespace Tratamientos.modelo
{
class Paciente
{
private string id;
private string nombres;
private string apellidos;
private string fechanacimiento;
private string sexo;
namespace Tratamientos.modelo
{
class Tratamiento
{
private string fechaasignado;
private string descripcion;
private string fechainicio;
private string fechafin;
private string observaciones;
private string paciente;
public Tratamiento(string fasi, string desc, string fini, string ffin, string
obse, string paci)
{
this.fechaasignado = fasi;
this.descripcion = desc;
this.fechainicio = fini;
this.fechafin = ffin;
this.observaciones = obse;
this.paciente = paci;
namespace Tratamientos.bd
{
class Conexion
{
private static SqlCeConnection conexion;
namespace Tratamientos.bd
{
class GestorTratamientos
{
SqlCeConnection conexion;
public GestorTratamientos()
{
conexion = bd.Conexion.getconexion();
}
public void registrarPaciente(modelo.Paciente p)
{
SqlCeCommand comando = new SqlCeCommand();
comando.Connection=conexion;
comando.CommandText = "Insert into [PACIENTES] values
(@id,@nom,@ape,@fna,@sex)";
comando.Parameters.AddWithValue("@id", p.Identificacion);
comando.Parameters.AddWithValue("@nom", p.Nombres);
comando.Parameters.AddWithValue("@ape", p.Apellidos);
comando.Parameters.AddWithValue("@fna", p.FechaNacimiento);
comando.Parameters.AddWithValue("@sex", p.Sexo);
try
{
if (comando.ExecuteNonQuery()==1)
{
System.Windows.Forms.MessageBox.Show("Paciente Registrado
Correctamente");
}
}
catch(SqlCeException ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
public modelo.Paciente getPacienteByID(String id)
{
SqlCeCommand comando= new SqlCeCommand();
comando.Connection=conexion;
comando.CommandText="SELECT * FROM PACIENTES WHERE
pac_identificacion=@id";
comando.Parameters.AddWithValue("@id", id);
SqlCeDataReader registro = comando.ExecuteReader();
if (registro.Read())
{
return new
modelo.Paciente(registro.GetString(0),registro.GetString(1),registro.GetString(2),
registro.GetDateTime(3).ToShortDateString(),registro.GetString(4));
}
return null;
}
public void asignarTratamiento(modelo.Tratamiento tratamiento)
{
SqlCeCommand comando = new SqlCeCommand();
comando.Connection = conexion;
comando.CommandText = "Insert into [TRATAMIENTOS]
(tra_fechaAsignado,tra_descripcion,tra_fechaInicio,tra_fechaFin," +
"tra_observaciones,tra_paciente) values
(@fAsig,@desc,@fInicio,@fFin,@obs,@pac)";
comando.Parameters.AddWithValue("@fAsig",
tratamiento.FechaAsignado);
comando.Parameters.AddWithValue("@desc", tratamiento.Descripcion);
comando.Parameters.AddWithValue("@fInicio",
tratamiento.FechaInicio);
comando.Parameters.AddWithValue("@fFin", tratamiento.FechaFin);
comando.Parameters.AddWithValue("@obs", tratamiento.Observaciones);
comando.Parameters.AddWithValue("@pac", tratamiento.Paciente);
try
{
if (comando.ExecuteNonQuery()==1)
{
System.Windows.Forms.MessageBox.Show("Tratamiento Registrado
Correctamente");
}
}
catch (SqlCeException ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
public SqlCeDataReader consultarTratamiento (String paciente)
{
SqlCeCommand comando= new SqlCeCommand();
comando.Connection=conexion;
comando.CommandText="SELECT * FROM TRATAMIENTOS WHERE tra_paciente=@id";
comando.Parameters.AddWithValue("@id", paciente);
SqlCeDataReader registro = comando.ExecuteReader();
return registro;
}
}
}
Como pudimos apreciar en esta sesin, los mtodos de acceso a datos
corresponden con las funcionalidades que se definieron en la vista de la
aplicacin.
En este momento, el explorador de soluciones debe reflejar los siguientes
archivos y directorios:
SESION 5: ESTABLECIENDO EL CONTROLADOR DE LA APLICACIN
El proyecto hasta ahora cuenta con las interfaces grficas a travs de las
cuales se comunicar con los usuarios y con los mtodos de acceso a la
base de datos, pero hace falta definir las clases que servirn de directores
de orquesta de nuestra aplicacin, es decir aquellas clases y mtodos que
en el momento de recibir una accin por parte del usuario establezcan
cual debe ser el mtodo de acceso a datos encargado de atender la
solicitud.
Estas clases son las clases controladoras de la aplicacin.
Debido a que las clases controladoras requieren tomar informacin de los
formularios y llevar informacin hacia estos, debemos hacer que los
campos de los formularios puedan ser accedidos desde otra clase, para
ello, se asigna el valor de Public a la propiedad Modifiers de cada control
al que se requiera acceder.
Seleccionamos todos los controles de ingreso de datos del formulario
Asignar Tratamiento y cambiamos el valor de la propiedad Modifiers de
Private a Public:
namespace Tratamientos.controlador
{
class TratamientosControl
{
private bd.GestorTratamientos gt;
public TratamientosControl()
{
gt = new bd.GestorTratamientos();
}
public void asignarTratamiento(FrmAsignarTratamientos formulario)
{
gt.asignarTratamiento(new
modelo.Tratamiento(formulario.txtFechaAsignado.Text, formulario.txtDescripcion.Text,
formulario.dtpFechaInicio.Value.ToShortDateString(),
formulario.dtpFechaFin.Value.ToShortDateString(),
formulario.txtObservaciones.Text, formulario.txtIdentificacion.Text));
}
public void consultarPaciente(FrmAsignarTratamientos formulario)
{
modelo.Paciente p =
gt.getPacienteByID(formulario.txtIdentificacion.Text);
if (p == null)
{
if (MessageBox.Show("El Paciente no se encuentra registrado. Desea
Registrarlo?", "Atencin",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
new FrmRegistrarPaciente().ShowDialog();
}
}
else
{
FrmPacienteEncontrado f = new FrmPacienteEncontrado();
f.lblIdentificacion.Text = p.Identificacion;
f.lblNombres.Text = p.Nombres;
f.lblApellidos.Text = p.Apellidos;
f.lblFechaNacimiento.Text = p.FechaNacimiento;
f.lblSexo.Text = p.Sexo;
f.ShowDialog();
}
}
public void consultarTratamientos(FrmConsultarTratamientos formulario)
{
SqlCeDataReader lector =
gt.consultarTratamiento(formulario.txtIdentificacion.Text);
DataTable dt = new DataTable();
dt.Load(lector);
formulario.dtgTratamientos.DataSource = dt;
}
public void registrarPaciente(FrmRegistrarPaciente formulario)
{
String sexo = "";
if (formulario.optMasculino.Checked)
sexo = "M";
else
sexo = "F";
modelo.Paciente p = new
modelo.Paciente(formulario.txtIdentificacion.Text, formulario.txtNombres.Text,
formulario.txtApellidos.Text,
formulario.dtpFechaNacimiento.Value.ToShortDateString(), sexo);
gt.registrarPaciente(p);
}
}
}
SESION 6: PONIENDO EN MARCHA LA APLICACIN
Para poder ejecutar la aplicacin, debemos ingresar algunos pequeos
cdigos en la vista, con el fin de gestionar adecuadamente los eventos
generados por el usuario de la aplicacin. En este punto, ya contamos con
un base de datos SqlServer Compact edition, una clase con mtodos de
acceso a la base de datos GestorTratamientos, una clase controladora
TratamientosControl encargada de servir de puente entre los formularios
y la clase de acceso a datos. El propsito de la presente sesin es
establecer la comunicacin entre los formularios y la clase controladora.
Vamos al cdigo del formulario principal y este debe lucir de la siguiente
manera despus de agregar el cdigo de la lnea 20 en el cual se cierra la
conexin con la base de datos:
formulario principal
bd.Conexion.cerrarconexion();
tratamientos de control
asignar tratamientos
Consultar Tratamientos