Sunteți pe pagina 1din 28

SESION 1: Desarrollando La Interfaz Grfica De Usuario

SESION 2: Creando El Modelo De La Aplicacion


SESION 3: Creando La Base De Datos
SESION 4: Creando Las Clases De Acceso A Datos
SESION 5: Estableciendo El Control De La Aplicacion
SESION 6: Poniendo En Marcha La Aplicacion
SESION 7: Publicando La Aplicacin

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:

Creamos un nuevo proyecto de tipo Aplicacin de Windows Forms y le


asignamos el nombre de Tratamientos:
Al formulario que aparece por defecto, le modificaremos algunas
propiedades para convertirlo en el formulario principal de la aplicacin:

Con las anteriores propiedades tendremos un formulario principal


contenedor de otros formularios secundarios con su respectivo ttulo y en
estado maximizado.
Para crear el men principal, arrastramos desde el Cuadro de
herramientas un control de tipo MenuStrip sobre el formulario principal:
Ahora, debemos crear el formulario para la asignacin de tratamientos
Hacemos click derecho sobre el proyecto Tratamientos en la ventana de
Explorador de Soluciones y seleccionamos del men contextual la opcin
Agregar > Nuevo Elemento:
Seleccionamos un elemento de tipo Windows Forms y le ingresamos el
nombre frmAsignarTratamientos y hacemos click en el botn
Agregar:
A continuacin crearemos dos formularios complementarios al formulario
anterior, el primero es un formulario de confirmacin, donde se
presentarn los datos del paciente cuyo nmero de identificacin coincida
con el ingresado en el cuadro de texto 8. El segundo formulario servir
para ingresar la informacin de un nuevo paciente, en caso de no estar
registrado.
Agregamos un nuevo formulario, tal como lo hicimos con el
formulario anterior, este formulario lo llamaremos
frmPacienteEncontrado y tendr el siguiente diseo:

AC a continuacin crearemos dos formularios complementarios al


formulario anterior, el primero es un formulario de confirmacin, donde
se presentarn los datos del paciente cuyo nmero de identificacin
coincida con el ingresado en el cuadro de texto 8. El segundo formulario
servir para ingresar la informacin de un nuevo paciente, en caso de no
estar registrado.
Agregamos un nuevo formulario, tal como lo hicimos con el
formulario anterior, este formulario lo llamaremos
frmPacienteEncontrado y tendr el siguiente diseo:
Creamos el siguiente formulario complementario, que servir para
agregar un nuevo paciente cuando este no se encuentre registrado. El
diseo del formulario es el siguiente:
Para responder al men de Consultar Tratamientos, creamos un nuevo
formulario con el siguiente diseo:
Despus de ser creados los formularios, vamos a escribir el cdigo
necesario en el formulario principal para que la aplicacin responda a los
eventos generados por las opciones del men.
Hacemos doble click sobre la opcin Salir del men Archivo para que nos
lleve al respectivo evento:
this.Close();

Hacemos doble click en el men Asignar Tratamientos y en el respectivo


evento escribimos el siguiente cdigo:
FrmAsignarTratamientos f1 = new FrmAsignarTratamientos();
f1.MdiParent = this;
f1.Show();

Hacemos doble click en el men Consultar Tratamientos y en el respectivo


evento escribimos el siguiente cdigo:

FrmConsultarTratamientos f2 = new FrmConsultarTratamientos();


f2.MdiParent = this;
f2.Show();
Esto es todo lo que por el momento tendremos en la Interface Grfica del
prototipo, al ejecutar la aplicacin y hacer click en cada una de las
opciones del men, estas deben responder correctamente:
Para finalizar, crearemos una carpeta llamada vista donde
almacenaremos todos los formularios creados, para ello hacemos click
derecho sobre el proyecto Tratamientos en la ventana del Explorador de
Soluciones y seleccionamos la opcin del men contextual Agregar >
Nueva Carpeta:
Seleccionamos los 5 formularios creados y los arrastramos hasta el
paquete vista:
SESION 2 : CREANDO EL MODELO DE LA APLICACIN
Para identificar las clases que forman parte del modelo, es necesario
revisar el diagrama de clases realizado durante el anlisis y refinado
durante el diseo.
Las clases que forman parte del modelo de esta aplicacin son: Paciente,
Tratamiento y GestorTratamientos Antes de crear las clases, debemos
crear una nueva carpeta llamada modelo sobre el proyecto y haciendo
click derecho sobre esta carpeta seleccionamos del men contextual la
opcin Agregar > Nuevo elemento:
De la ventana emergente seleccionamos el elemento Clase y le asignamos
el nombre Paciente.cs y hacemos click en el botn Agregar:
El cdigo de la clase Paciente es sencillo, simplemente se definen sus
atributos, se adiciona su constructor y se crean las propiedades getter y
setter para cada atributo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Tratamientos.modelo
{
class Paciente
{
private string id;
private string nombres;
private string apellidos;
private string fechanacimiento;
private string sexo;

public Paciente(string id, string nombres, string apellidos, string


fechanacimiento, string sexo)
{
this.id = id;
this.nombres = nombres;
this.apellidos = apellidos;
this.fechanacimiento = fechanacimiento;
this.sexo = sexo;
}

public string Identificacion


{
get
{
return this.id;
}
set
{
this.id = value;
}
}
public string Nombres
{
get
{
return this.nombres;
}
set
{
this.nombres = value;
}
}
public string Apellidos
{
get
{
return this.apellidos;
}
set
{
this.apellidos = value;
}
}
public string FechaNacimiento
{
get
{
return this.fechanacimiento;
}
set
{
this.fechanacimiento = value;
}
}
public string Sexo
{
get
{
return this.sexo;
}
set
{
this.sexo = value;
}
}
}
}
De manera similar creamos la clase Tratamiento dentro del paquete
modelo, teniendo en cuenta que sus atributos reflejan los campos de la
tabla TRATAMIENTOS en la base de datos.
El campo de la base de datos nmero de tratamiento no es tenido en
cuenta en la clase como atributo, ya que este campo se debe generar
automticamente en la base de datos para cada nuevo tratamiento.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

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;

public string FechaAsignado


{
get { return this.fechaasignado; }
set { this.fechaasignado = value; }
}
public string Descripcion
{
get { return this.descripcion; }
set { this.descripcion = value; }
}
public string FechaInicio
{
get { return this.fechainicio; }
set { this.fechainicio = value; }
}
public string FechaFin
{
get { return this.fechafin; }
set { this.fechafin = value; }
}
public string Observaciones
{
get { return this.observaciones; }
set { this.observaciones = value; }
}
public string Paciente
{
get { return this.paciente; }
set { this.paciente = value; }
}
}
}

SESION 3: CREANDO LA BASE DE DATOS


El motor de base de datos seleccionado para el desarrollo de la presente
aplicacin es SQL Server Compact 3.5 que es el que se instala por defecto
al instalar el visual C# 2010 Express.
Una base de datos SQLServer Compact Edition es una base de datos local,
que residir en el mismo directorio de la solucin y que se puede
empaquetar como parte integral del proyecto. A diferencia de una base
de datos SQLServer, la cual debe residir en un servidor de bases de datos.
Todos los elementos asociados a la base de datos y el acceso a la misma,
se crearn en una nueva carpeta dentro del proyecto llamada bd:
Hacer click derecho sobre el proyecto Tratamientos y del men
contextual, seleccionar la opcin Agregar_Nueva carpeta y asignar el
nombre de bd a la carpeta recin creada:
Sobre esta carpeta, hacemos click derecho y seleccionamos del men
contextual la opcin Agregar_Nuevo elemento:
De la ventana emergente, seleccionamos el tipo de elemento Base de
datos local, le asignamos como nombre TratamientosBD y hacemos click
en el botn Agregar:
En la siguiente ventana, hacemos click en Cancelar, para que no se inicie
el asistente de orgenes de datos:
Observamos que en el explorador de soluciones, dentro de la carpeta bd,
se muestra el archivo de bases de datos TratamientosBD.sdf:
Para que los cambios sobre los datos de la base de datos se mantengan
entre las diferentes ejecuciones del programa, cambiamos el valor de la
propiedad de la base de datos Copiar en el directorio de resultados el
valor copiar siempre por el valor copiar si es posterior:
Hacemos doble click a este archivo y de esta manera, se abre la ventana
de Explorador de bases de datos, en ella observamos la base de datos
TratamientosBD.sdf.
Hacemos click derecho sobre la carpeta Tablas y seleccionamos la opcin
Crear tabla:
Creamos la tabla PACIENTES, definimos sus respectivos campos y
hacemos click en el botn Aceptar:
De manera similar creamos la tabla TRATAMIENTOS en esta tabla,
debemos poner mucha atencin en las propiedades del campo
tra_numero, ya que para lograr que sea autonumrico, debemos darle el
valor de true a la propiedad Identidad:
SESION 4 : CREANDO LAS CLASES DE ACCESO A DATOS
Despus de crear las respectivas tablas requeridas para la aplicacin,
pasamos a crear la clase Conexion dentro de la carpeta bd, esta clase
servir
para establecer y retornar una conexin con la base de datos
TratamientosBD.
Teniendo en cuenta que la base de datos que estamos empleando en esta
aplicacin es de tipo SQLServer Compact Edition, debemos agregar una
referencia para su respectivo acceso.
Hacemos click derecho sobre la carpeta References en el Explorador de
soluciones y seleccionamos del men contextual la opcin Agregar
referencia:
Seleccionamos la referencia System.Data.SqlServerCe y hacemos click en
el botn Aceptar:

Luego de agregar la referencia necesaria, creamos una nueva clase dentro


de la carpeta bd llamada Conexion, el cdigo de esta clase es el siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlServerCe;

namespace Tratamientos.bd
{
class Conexion
{
private static SqlCeConnection conexion;

public static SqlCeConnection getconexion()


{
if (conexion != null)
return conexion;
conexion = new SqlCeConnection();
conexion.ConnectionString = "Data
Source=|DataDirectory|\\bd\\TratamientosBD.sdf";
try
{
conexion.Open();
return conexion;
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show("Error de Conexion" + e.Message);
return null;
}
}
public static void cerrarconexion()
{
if (conexion != null)
conexion.Close();
}
}
}

Despus de creada la clase Conexin.cs, pasamos a crear la clase Gestor-


Tratamientos que tendr los mtodos requeridos con acceso a la base de
datos de acuerdo con las funcionalidades definidas en la vista de la
aplicacin.El cdigo de la clase GestorTratamientos es el siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlServerCe;

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:

De igual manera hacemos con los controles del formulario Consultar


Tratamientos:
Por ltimo hacemos lo mismo con el formulario Registrar Paciente:
A continuacin, creamos la clase controladora de la aplicacin, esta se
crear dentro de un paquete llamado controlador.
Crear una nueva carpeta dentro del proyecto Tratamientos con el nombre
de controlador y dentro de ella, crear una nueva clase llamada
TratamientosControl:
La clase TratamientosControl atender las solicitudes de la vista y las
enviar a la clase GestorTratamientos para su comunicacin con la base
de datos El cdigo de la clase TratamientosControl es el siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlServerCe;
using System.Data;
using System.Windows.Forms;

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

El Cdigo correspondiente al formulario Paciente Encontrado solo


incorpora lo necesario para que al hacer click en el botn Aceptar se cierre
el formulario:
El cdigo correspondiente al formulario Registrar Paciente es el siguiente:

Como podemos ver, el cdigo de los formularios es mnimo con el fin de


ser independientes de la lgica de la aplicacin. Despus de hacer estos
ajustes en el cdigo, se puede ejecutar la aplicacin para ver su
funcionamiento.
Es importante tener en cuenta que para asignar y consultar los
tratamientos, despus de ingresar la identificacin del paciente se debe
pulsar la tecla Enter
SESION 7: PUBLICANDO LA APLICACIN
Luego de ejecutar la aplicacin y comprobar su correcto funcionamiento,
pasaremos a crear su instalador.
Seleccionamos del men Proyecto la opcin Propiedades de
Tratamientos Seleccionamos la ficha Publicar: Verificamos los archivos
que sern incluidos haciendo click en el botn
Archivos de Aplicacin: Observamos que la base de datos
TratamientosBD.sdf y la librera SqlServerCe.dll han sido includas:
Si queremos conocer los requisitos necesarios para que la aplicacin se
ejecute correctamente, podemos hacer click en el botn Requisitos
previos. Despus de comprobar los archivos que se incluirn en la
publicacin, hacemos click en el botn Publicar ahora: Como resultado de
esta operacin, se crea una nueva carpeta dentro del proyecto llamada
Publish dentro de la cual aparecen los siguientes archivos:
Al hacer click en el archivo Setup.exe se instalar la aplicacin en el
sistema operativo del computador y podremos accederla por fuera del
entorno de desarrollo de Visual C#:

S-ar putea să vă placă și