Portafolio Programacion I 2012

UNIVERSIDAD TECNICA DE MACHALA FACULTAD DE INGENIERÍA CIVIL ESCUELA DE INFORMÁTICA 2012 PORTAFOLIO DE PROGRAMACION 1 A

Views 136 Downloads 4 File size 16MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD TECNICA DE MACHALA FACULTAD DE INGENIERÍA CIVIL ESCUELA DE INFORMÁTICA

2012 PORTAFOLIO DE PROGRAMACION 1

ALUMNO TUTORADO: Luis David Zamora Loján CURSO: 5to Quimestre “A” TUTOR: Ing. Mariuxi Zea

1|Página

Contenido INTRODUCCIÓN ........................................................................................................................................ 3 SYLLABUS DE LA ASIGNATURA ................................................................................................... 4 ACTIVIDADES DE APRENDIZAJE INTRA Y EXTRA CLASE................................................... 13 CAPITULO 1: INTRODUCCIÓN A .NET ........................................................................................ 14 CAPITULO 2: VISUAL STUDIO 2005 Y C# ................................................................................... 46 CAPITULO 3: USO DE CONTROLES Y METODOLOGÍA DE DESARROLLO.................... 100 CAPITULO 4: PRESENTACIÓN DE RESULTADOS (INFORMES) ........................................ 307 EXAMEN FINAL ................................................................................................................................ 348 PROYECTO FINAL .......................................................................................................................... 350

2|Página

INTRODUCCIÓN Este trabajo corresponde al portafolio del módulo de programación 1, en el periodo correspondiente al 5to. Quimestre del 2012, en el cual observaremos todas las actividades realizadas día a día en el transcurso de las clases de esta materia. Al inicio de las clases fueron para afianzar los conceptos y fundamentos teóricos de los estudiantes con respecto a la programación orientada a objetos, así como adentrarse a la programación en la plataforma .net, exclusivamente el lenguaje de programación C Sharp (C#). Luego las clases fueron prácticas, en la cual se trabajaban con bases de datos a elección, entre las cuales tenemos Access o SQL Server, dando pautas para que los estudiantes realicen trabajos investigativos tanto para exposiciones grupales hacia sus compañeros sobre la forma de utilizar las bondades de la plataforma .net con C#, como para la realización paso a paso sobre los proyectos finales en el cual se iban aplicando, tras cada exposición, lo que se aprendía en clases. Al final se demostró exitosa la forma de aprendizaje en la cual se aprendió mucho y se obtuvo grandes logros que enorgullecieron la imagen de la Escuela de informática, con los trabajos finales presentados a la ciudadanía en el 3 lanzamiento de software educativos y comerciales a empresas públicas y privadas. Ahora se explicará paso a paso lo que se realizó en el transcurso del módulo de Programación 1.

3|Página

SYLLABUS DE LA ASIGNATURA

4|Página

UNIVERSIDAD TÉCNICA DE MACHALA FACULTAD DE INGENIERÍA CIVIL CARRERA DE INGENIERÍA EN SISTEMAS

SYLLABUS PROGRAMACIÓN I

1.

ASIGNATURA

: PROGRAMACIÓN I

2.

MALLA CURRICULAR

: SISTEMA SEMESTRAL

3.

PERIODO ACADÉMICO

: 2012-2013

4.

CÓDIGO

: 502

5.

NUMERO DE CRÉDITOS : 5

6.

PRERREQUISITO

: BASE DE DATOS ANÁLISIS ORIENTADO A OBJETOS

CORREQUISITO

: DISEÑO ORIENTADO A OBJETOS

7.

No. HORAS CLASE

: 80 horas semestrales

8.

No HORAS NO PRESENCIALES: 80 horas semestrales

9.

HORARIO DE CLASE

: 4 HORAS SEMANALES (60 minutos c/hora)

10. DESCRIPCIÓN DE LA ASIGNATURA Programación I, es una asignatura en donde se utiliza un lenguaje de programación, en este caso C#, para construir sistemas informáticos que resuelvan las necesidades o requerimientos de empresas. Permitirá reforzar la lógica de programación de los estudiantes, incentivar al autoaprendizaje de nuevos lenguajes de programación, la autodisciplina y la utilización de metodologías para el desarrollo de sistemas informáticos basados en una metodología de desarrollo.

5|Página

11. CONTRIBUCIÓN DE LA ASIGNATURA EN LA FORMACIÓN DEL INGENIERO DE SISTEMAS Con la asignatura Programación I el ingeniero de sistemas adquiere las siguientes habilidades. 1. Modelar y resolver problemas de diferentes disciplinas que involucran el desarrollo de un software de escritorio. 2. Proponer diferentes soluciones para resolver problemas informáticos. 3. Desarrollar software utilizando metodología de desarrollo y técnicas de programación. 4. Capacidad de liderar y gestionar grupos de desarrollo en proyectos de creación de software 12. RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA 12.1 Diseñar e implementar conexiones hacia base de datos (SQL Server y/o Access) desde una aplicación desarrollada en el lenguaje C# 12.2 Planificar, construir e Implementar aplicaciones en ambiente de escritorio amigables, flexibles y seguras que permitan resolver los problemas dentro de los procesos administrativos, utilizando el Lenguaje C#. 12.3 Programar métodos que muestren características de bajo acoplamiento y alta cohesión. 12.4 Crear reportes que permitan tomar decisiones y ejecutarlos desde una interface creada en lenguaje C#. 12.5 Utilizar técnicas de programación y metodología de desarrollo para crear e implementar soluciones informáticas de escritorio eficientes. 13.

PROGRAMACIÓN DETALLADA

DETALLE

HORAS CLASE

CAPITULO I (10 Horas clase) INTRODUCCIÓN A .NET 1.1 Diagnóstico, Introducción y encuadre 1.2 Introducción a la programación 1.3 .net Framework 1.4 Metodología de Desarrollo de software 1.5 Diseño de ambientes Windows

2 2 2 2 2

CAPITULO II (6 horas clase) VISUAL STUDIO 2005 Y C# 2.1 Conexión a Base de Datos 2.2 Acceso a Base de Datos 2.3 Tipos de Datos por Valor y Referencia 2.4 Funciones 2.5 Nombres reservados

1 1 1 1 2 6|Página

CAPITULO III (34 Horas clase) USO DE CONTROLES Y METODOLOGÍA DE DESARROLLO 3.1 Clases y métodos 2 3.2 Conexión a la base de datos con el DataAdapter 2 3.3 Programación de métodos 2 3.4 Programación de botones de navegación 2 3.5 Operaciones CRUD 4 3.6 Principales controles 4 3.7 Búsqueda de registros 2 3.8 Validación Integridad Referencial: llave principal 2 3.9 Validación Integridad Referencial: llave ajena 2 3.10 Formularios con relación 1 a 1 2 3.11 Creación de valores automáticos 1 3.12 Validación de ingreso de datos 1 3.13 Llamada a otros formularios 2 3.14 Formulario con relación 1 a N 2 3.15 Creación de menús 2 3.16 Creación y uso de usuarios 2 CAPITULO IV (30 Horas clase) PRESENTACIÓN DE RESULTADOS. INFORMES 4.1 Creación y ejecución de informes. Una tabla 4.2 Informes con varias tablas. (1 a N) 4.3 Informes con filtros 4.4 Informes con quiebre de control 4.5 Examen Final del módulo 4.6 Defensa de Proyectos 4.7 Examen de Recuperación

3 3 2 2 8 8 4

TOTAL HORAS CLASE

80

14. TEXTO Y OTRAS REFERENCIAS TEXTO GUÍA -

C# Joseph Schmuller Editorial: Prentice Hall BIBLIOGRAFIA ADICIONAL Programando con C# Deitel & Deitel Editorial: Prentice Hall

No.Edición: Quinta 7|Página

C# Paso a Paso Luis Joyanes Editorial: McGrawHill

No. Edición:

15. DESCRIPCIÓN DE LA METODOLOGÍA DE ENSEÑANZA ESTRATEGIAS PEDAGÓGICAS DEL DOCENTE -

Identificar individualidades y estilos de aprendizaje de los estudiantes Organizar grupos de trabajo para prácticas en el laboratorio Definir tareas de aprendizaje de acuerdo al avance de la materia Determinar tópico de investigación bibliográfica

TRABAJOS QUE DEBEN REALIZAR LOS ESTUDIANTES -

Ejecutar tareas de aprendizaje planificadas Realizar tareas extraclase en el aulavirtual Mejorar su propio rendimiento Llevar a cabo un Proyecto de aplicación que será presentado en un evento de Lanzamiento de Software. Rendir las pruebas y examen final para las fechas programadas.

16. TRABAJO TERMINAL Los estudiantes elaborarán un trabajo o proyecto de aplicación de la asignatura en el desarrollo de software de escritorio para una empresa de la localidad, para lo cual deberán utilizar las capacidades desarrolladas en clase durante el periodo de enseñanza. El proyecto de investigación estará orientado hacia la utilización de las técnicas de programación y metodología de desarrollo en la resolución de problemas, que brinde seguridad, acceso y navegación, utilizando el lenguaje de programación C#.

17. PORTAFOLIO DE LA ASIGNATURA El portafolio de la asignatura contendrá la siguiente información -

Carátula Syllabus Tareas en clase Tareas extraclase Evaluaciones parciales Evaluación final Evidencia de eventos investigativos. Apuntes relevantes 8|Página

18. RECURSOS DIDÁCTICOS Los recursos didácticos a emplearse son:        

19.

Texto guía y Bibliografía adicional Información del Internet Aula Virtual Laboratorio de computación y proyector Software especializado: Visual .NET (C#) 2008, SQL Server 2005, Access 2010 Software Ofimático: Office 2010 Aulas de Clase Pizarrón y marcadores

RELACION DE APRENDIZAJE.

LA

ASIGNATURA

CON

LOS

RESULTADOS

DE

Se describe que es lo que se espera que los estudiantes conozcan y sean capaces de hacer al momento de terminar la asignatura.

RESULTADOS

CONTRIBUCIÓN EL ESTUDIANTE DEBE

a) Aplicar conocimiento en Matemáticas, Ciencia e Ingeniería

BAJA

b) Diseñar, conducir experimentos, analizar e interpretar datos

BAJA

c) Diseñar sistemas, componentes o procesos de Ingeniería de ALTA Sistemas bajo restricciones realistas

Aplicar procedimientos y leyes de la lógica matemática para la implementación de código de programación para la eficiencia y efectividad de soluciones informáticas Levantar e interpretar datos de los procesos de negocio tomados en el análisis, necesarios para el modelamiento y diseño de la aplicación, así como la verificación de la aplicación mediante pruebas de unidad Diseñar componentes de código reutilizables, para su implementación entre diferentes proyectos de desarrollo de software aplicables en distintos contextos de negocio.

9|Página

RESULTADOS

d) Trabajar como un equipo multidisciplinario

e) Identificar, formular y resolver problemas de ingeniería

f) Comprender la responsabilidad ética y profesional

g) Comunicarse efectivamente

CONTRIBUCIÓN EL ESTUDIANTE DEBE

MEDIA

ALTA

BAJA

MEDIA

Conformar equipos de trabajo para el trabajo en clase y el proyecto final donde se distribuyan habilidades respecto a las diferentes soluciones. Entender diferentes procesos que se llevan a cabo en los negocios del mundo real, donde se pueden aplicar soluciones que involucren programación en un entorno de escritorio. Resolver problemas informáticos generales que involucren parámetros comunes y determinen subrutinas reutilizables

Desarrollar un proyecto final que determine la participación e innovación de únicamente los involucrados y entregarlo a tiempo. Explicar la factibilidad y las ventajas del producto que han desarrollado. Desarrollar un manual de usuario claro y didáctico, de tal manera que las dudas del usuario se puedan resolver fácilmente.

h) Entender el impacto de la ingeniería en el ***** contexto social y medio ambiental

i) Comprometerse con el aprendizaje continuo

j) Conocer temas contemporáneos

BAJA

BAJA

Realizar investigaciones sobra la evolución de los lenguajes de programación para entender los cambios continuos que se generan en la tecnología. Entender los problemas de actualidad y más comunes del negocios, que se resuelvan con soluciones de escritorio.

10 | P á g i n a

RESULTADOS k) Usar técnicas, habilidades y herramientas para la práctica de ingeniería

i) Capacidad para liderar gestionar o emprender proyectos

CONTRIBUCIÓN EL ESTUDIANTE DEBE

BAJA

MEDIA

Aplicar técnicas de programación, metodología de desarrollo, y base de datos objeto relacionales

Conformar grupos de desarrollo, que requieran dirección y liderazgo, para el análisis, diseño e implementación del proyecto final de la asignatura

20. EVALUACIÓN DE LA ASIGNATURA El objetivo de la evaluación es poder comparar lo asimilado por el estudiante con lo que debió asimilar, de tal manera que para el docente se convierta en un termómetro que le indica hasta donde llegó con los conocimientos a los estudiantes. La evaluación de la asignatura estará conformada por la evaluación de cada unidad, de la siguiente manera:

FRECUENTE: Participación del estudiante. Exposiciones - Investigaciones. Asistencia Puntualidad.

PARCIAL: Trabajos individuales y en grupo. Pruebas escritas teóricas y prácticas. Trabajos de investigación. FINAL: Examen práctico. Trabajo práctico.

11 | P á g i n a

CUADRO DE PUNTAJE DEL SISTEMA DE EVALUACIONES

Participación individual y grupal

2

Reportes y consultas

1

Trabajo autónomo

1

Trabajos de investigación Bibliográfica o Campo (Proyecto)

1

Evaluación de unidad

2

Examen

3

Total

10 ptos.

21. RESPONSABLE DE LA ELABORACIÓN DEL SYLLABUS Elaborado por:

ING. MARIUXI PAOLA ZEA ORDOÑEZ, Profesora de la Asignatura Mail: [email protected] Teléfono:

2915426

Celulares:

098228455 088006455

Machala, Abril de 2012

12 | P á g i n a

ACTIVIDADES DE APRENDIZAJE INTRA Y EXTRA CLASE

13 | P á g i n a

CAPITULO 1: INTRODUCCIÓN A .NET

14 | P á g i n a

ACTIVIDAD N°:

1

FECHA:

02/04/2012 - 03/04/2012

TEMA:

1. Establezca su objetivo para el módulo de Programación 2. Compartir el objetivo con los compañeros del curso

UNIDAD N° 1.1:

DIAGNÓSTICO, INTRODUCCIÓN Y ENCUADRE

OBJETIVO:



PROBLEMA:

Desconocimiento del enfoque del módulo

INDICADOR DE EVALUACIÓN:

g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES:

Compromiso, Responsabilidad

Describir un objetivo personal para el módulo

TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Objetivo Propuesto: Esforzarme, Estudiar y Aprobar el módulo de Programación I.

15 | P á g i n a

ACTIVIDAD N°:

2

FECHA:

04/04/2012 - 05/04/2012

1. Los alumnos en forma individual contestarán por escrito lo siguiente: Usted es el ingeniero de sistemas contratado para resolver algunos problemas en los procesos administrativos de una Empresa cuyos datos se proporcionan a continuación: Características de la Empresa Nombre: XYZ. Descripción: La empresa se dedica a la comercialización de productos varios, ha tenido problemas con la elaboración del rol de sueldo de los empleados, los informes sobre la cartera de clientes y el inventario de productos, debido a que la información la manejan de forma manual, posee 2 computadoras Intel Pentium, con bajas características. No están conectadas a red y las aplicaciones que son utilizadas es Word para elaborar oficios, memorándums, circulares; y, Excel para elaborar facturas, llevar el control de inventario y la nómina de los empleados. El personal con el que cuenta la empresa es: Secretaria de Gerencia, 2 vendedores, 1 Bodeguero, El Gerente General, Gerente de Ventas, Contadora y 1 mensajero.

TEMA:

De acuerdo a la investigación realizada y a los datos proporcionados de la Empresa ¿Qué propone hacer para solucionar este problema, y por qué? ¿Qué beneficios proporciona su propuesta planteada, Por qué? ¿Qué lenguaje recomendaría utilizar para automatizar los procesos de la Empresa? ¿Por qué? UNIDAD N° 1.2:

INTRODUCCIÓN A LA PROGRAMACIÓN 

OBJETIVO: PROBLEMA: INDICADOR DE EVALUACIÓN:

Comprender cuándo y por qué un problema debe ser automatizado mediante un lenguaje de programación

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente e) Identificar, formular y resolver problemas de ingeniería

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

16 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Como ingeniero de sistemas propongo implementar un sistema automatizado que gestiones esos datos de la empresa de manera automatizada y eficiente para q no exista perdida de datos y contar con ellos en tiempos pertinentes. Los beneficios que traerían para la empresa seria que primeramente tendrían control sobre los procesos de la empresa, así como de los datos que estos generen, los datos de usuarios y clientes estarían guardados y disponibles para usarse en cualquier momento al igual que los datos de los productos que disponen para la venta, y disminuiría los costos y tiempos de ejecución de las actividades como roles de pagos, consultas de clientes e inventarios. Recomendaría trabajar con un lenguaje de programación de bajo o de medio nivel, en este caso C++, porque las computadoras con las que trabaja la empresa presenta pocos requerimientos y trabajar con un leguaje de mayores características ocasionaría el colapso del sistema, en cambio solo buscamos funcionalidad sobre apariencia lo cual se puede hacer perfectamente con C++. Solo si la empresa está dispuesta a hacer una inversión para comprar mejores equipos de cómputo podríamos optar por desarrollar un sistema de información sobre una plataforma de mayores características como lo es java o .net.

17 | P á g i n a

ACTIVIDAD N°:

2

FECHA:

04/04/2012 - 05/04/2012

1. Los alumnos en forma individual contestarán por escrito lo siguiente: Un nuevo virus apareció y dañó específicamente todos los lenguajes de programación utilizados (Ejemplo: Visual Basic, Visual FoxPro, C++, Java, C#, etc.), de tal manera que después de un tiempo no se podrá ejecutar ningún programa, usted ha sido designado por su compañía para desarrollar un nuevo lenguaje de programación. ¿Qué características tendría dicho lenguaje? ¿Por qué?

TEMA:

UNIDAD N° 1.2:

INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO:



PROBLEMA:

Desconocimiento de la terminología para desarrollar sistema informático c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente e) Identificar, formular y resolver problemas de ingeniería

INDICADOR DE EVALUACIÓN:

Establecer los beneficios de utilizar programación orientada a objetos

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

18 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Primeramente vería las mejoras que proporcionaban cada una de las plataformas donde se ejecutaban dichos lenguajes. Sería un lenguaje de programación por capas en la cual se trabaje a bajo nivel pre compilando lenguaje a alto nivel para que sea fácil de usar y entender, debería tener varias versiones de entorno de trabajos que se pueda usar desde un equipo de bajas características hasta un elaborado sistema de información con diseños avanzados mediante la utilización de plugins o librerías externas en su entorno de desarrollo. Deberá ser software libre para que su desarrollo avance rápidamente entre el mundo de la programación y existan mayor número de herramientas disponibles para su uso. Multiplataforma e independiente del kernel, pudiendo también trabajar para una plataforma específica para equipos de baja características que compilen con librerías locales, para aplicaciones personales de escritorio. Deberá ser un lenguaje distribuido y adaptado a la red y a la web para su uso libre en el mundo del internet. También contaría con opciones de seguridad que prevengan posibles caídas de sistema y respaldo automático de información en aplicaciones y niveles de seguridad contra posibles virus que afecten su desarrollo.

19 | P á g i n a

ACTIVIDAD N°:

3

FECHA:

04/04/2012 - 05/04/2012

En grupo de máximo 4 personas, comparta sus respuestas, discuta con sus compañeros y seleccione el lenguaje de programación más conveniente para la empresa, explique por escrito el porqué de sus decisiones. ¿Qué características deben proporcionar los lenguajes de programación a los sistemas automatizados? ¿Por qué? (Elabore una lista de al menos 5 características).

TEMA:

Los alumnos expondrán sus respuestas ante sus compañeros y debatirán sus acuerdos o desacuerdos con la selección presentada. Se revisará las características de los lenguajes de programación. UNIDAD N° 1.2:

INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO:



PROBLEMA:

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente e) Identificar, formular y resolver problemas de ingeniería j) Conocer temas contemporáneos

INDICADOR DE EVALUACIÓN:

Establecer los beneficios de utilizar programación orientada a objetos

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

20 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

C       

Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas. Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave.

C++     

Tiene un conjunto completo de instrucciones de control. Permite la agrupación de instrucciones. Incluye el concepto de puntero (variable que contiene la dirección de otra variable). Los argumentos de las funciones se transfieren por su valor. E/S no forma parte del lenguaje, sino que se proporciona a través de una biblioteca de funciones.

Java     

Lenguaje Simple Orientado a Objeto Distribuido Robusto Seguro

21 | P á g i n a

ACTIVIDAD N°:

4

FECHA:

04/04/2012 - 05/04/2012

TEMA:

Concrete una cita con un ingeniero, analista o programador de sistema que labore en el área de desarrollo de software. Hable sobre uno de los proyectos de sistemas de información en los que esta persona esté trabajando. Y elabore un informe en donde describa las funciones que realiza y porqué utiliza determinada herramienta de programación:

UNIDAD N° 1.2:

INTRODUCCIÓN A LA PROGRAMACIÓN 

OBJETIVO:

PROBLEMA: INDICADOR DE EVALUACIÓN:

Conocer y entender cuáles son las tareas y consideraciones que se deben tomar encuentra para desarrollar un buen Sistema, amigable, flexible, que cumpla con las necesidades de la empresa, que solucione los problemas existentes en los procesos administrativos.

Desconocimiento de la terminología para desarrollar sistema informático c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el apredizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

22 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Datos del entrevistado: Nombre: Ing. Byron Torres DESARROLLO DE LA ENTREVISTA ¿Cuáles son las funciones que son soportadas por dicho proyecto (por ejemplo, proceso de transacciones, ayuda a la decisión, automatización de oficinas)? Las funciones que tiene el sistema aCOSMOS son de Módulo de declaración de impuesto, Modulo de Inventario, Modulo de Producción, Modulo de Cartera. También maneja listas de biométricos e interfaces web para el manejo de palms. En los pedidos de productos controla el stock de los mismos para de esta manera saber con cuantos productos se cuenta. ¿Qué lenguajes de programación utiliza o ha utilizado? ¿Por qué? Lo lenguajes con los que más ha trabajado C#, C++, Visual Basic, Java.Net y PHP. Java y .Net se los utiliza por las interfaces ya que se trabaja de menor manera con la base de datos e interfaz para web. ¿Qué tareas realizó para desarrollar el software? • Conversar con los usuarios para obtener las necesidades de ellos, también con los jefes de tal manera poder determinar qué tipo de información ellos esperan obtener. • Obtener la información respectiva para realizar un análisis y ver qué es lo implementar para realizar un sistema que contenga todos los requisitos adquiridos de los clientes. • Elaborar un prototipo del sistema, es decir para de esta manera poder corregir los errores que pudiera tener el sistema. ¿Cómo me puedo asegurar que mi desarrollo se implementará sin problemas? Teniendo una buena comunicación con el cliente para de esta manera poder recopilar información verídica, obtener los debidos requerimientos del cliente, es decir como desea que quede su sistema, para de esa manera realizar un sistema bien estructurado y completo.

23 | P á g i n a

ACTIVIDAD N°:

5

FECHA:

04/04/2012 - 05/04/2012

Si usted quiere aprender a programar, existen muchos recursos, hay libros, tutoriales de bolsillo, tutoriales en el WEB. Visite algunos tutoriales de los lenguajes de programación arriba mencionados. Conteste lo siguiente en forma de reflexión:   

TEMA:

 

Qué tipo de apoyo proporcionan. Qué tanta ayuda proporcionan estos sitios. Termino usted sabiendo más acerca de la programación que antes, ¿por qué? Qué piensa acerca de estos tutoriales en línea, comparados con aprender de un libro o en una clase. De qué manera estos tutoriales contribuyeron a su aprendizaje.

UNIDAD N° 1.2:

INTRODUCCIÓN A LA PROGRAMACIÓN

OBJETIVO:

 

PROBLEMA: INDICADOR DE EVALUACIÓN:

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

Establecer la bibliografía e información a utilizar Identificar sitios de Internet para buscar información

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

24 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

• Qué tipo de apoyo proporcionan. Los manuales, libros y tutoriales nos proporcionan una guía muy importante para conocer y saber más información acerca del lenguaje de programación, ya que estos nos ofrecen información muy variada acerca del uso del programa, así como su respectiva sintaxis y las diferentes funciones y métodos que tiene el lenguaje, es por ello que se debe encontrar un buen material que sea lo mejor explicito posible para que así la comprensión sea mucho más fácil. • Qué tanta ayuda proporcionan estos sitios. Los tutoriales nos brindan una ayuda muy valiosa ya que nos permiten autoeducarnos a través del contenido de los manuales, cada vez que tengamos una duda o dificultad en alguna función o sintaxis del programa, es por ello que se hace indispensable contar con un grupo de manuales que nos puedan servir de ayuda durante el transcurso del módulo para que así el proceso de aprendizaje sea más productivo y con mejor desempeño. • Termino usted sabiendo más acerca de la programación que antes, ¿por qué? No, ya que los manuales y tutoriales solo muestran el contenido general de un lenguaje de programación, y por lo tanto solo nos sirve para contar con una ayuda extra para cualquier inquietud que tengamos acerca de alguna sintaxis del programa o como funciona algún método o evento. • Qué piensa acerca de estos tutoriales en línea, comparados con aprender de un libro o en una clase. Yo pienso que el aprendizaje es mejor en clase porque los estudiantes pueden despejar sus inquietudes en ese mismo momento a través de su tutor, y mucho más aun, haciendo las practicas, en cambio los tutoriales no ofrecen una ayuda oportuna de alguna inquietud que se tenga de algún contenido el cual no entendemos su significado o no saber dónde ubicarlo. • De qué manera estos tutoriales contribuyeron a su aprendizaje. Los tutoriales nos ayudan mucho en lo que se refiere a reforzar lo aprendido en clase ya que nos proporciona una información extra que puede ayudarnos en cualquier inquietud que tengamos acerca de lo que estamos trabajando.

25 | P á g i n a

ACTIVIDAD N°:

5

FECHA:

09/04/2012 - 10/04/2012

1. Los alumnos en grupos máximo de 4, trabajarán para responder las siguientes preguntas, Se tomarán unos 5 a 15 minutos para pensar individualmente: Utilizando la lectura y la investigación realizada responda: ¿En qué generación de los lenguajes de programación ubica usted a C#? ¿Qué razones lo llevan a pensar eso? ¿Qué diferencia hay entre C# y los otros lenguajes de Programación? ¿Por qué? ¿Qué características tendrá un sistema automatizado con C#? Ponga ejemplos. ¿Cuándo considera usted que no puede utilizar C# para automatizar un sistema manual? ¿Explique por qué?

TEMA:

UNIDAD N° 1.3:

.NET FRAMEWORK

OBJETIVO:



PROBLEMA:

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas

INDICADOR DE EVALUACIÓN:

Establecer los beneficios de utilizar programación orientada a objetos

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

26 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

¿En qué generación de los lenguajes de programación ubica usted a C#? ¿Qué razones lo llevan a pensar eso?. Yo considero a C# un lenguaje entre tercera y cuarta generación ya que este al ser de alto nivel nos proporciona las herramientas necesarias para que la aplicación cumpla nuestras expectativas mediante código que le introducimos para que funcione y a la vez utiliza sentencias de consulta donde solo solicitamos la respuesta que queremos del programa, ambas características corresponden a tercera y cuarta generación respectivamente. ¿Qué diferencia hay entre C# y los otros lenguajes de Programación? ¿Por qué? C Sharp es un lenguaje muy potente surgido por influencia de lenguajes de programación como java, C y C++, de los cuales evoluciono en el desarrollo de todo tipo de aplicaciones y muy intuitivo superando a sus antecesores, trabaja en la plataforma .net y sus aplicaciones son muy vistosas pero muy pesadas para máquinas de pocos requerimientos, apareció en el 2001 y desde entonces a ganado terreno día a día sobre otros lenguajes de programación por su capacidad y sus características. ¿Qué características tendrá un sistema automatizado con C#? Ponga ejemplos. Con C# podemos conseguir aplicaciones y sistemas e información muy potentes y seguras, de un vistoso diseño gracias a plugins que se pueden incorporar a su entorno de desarrollo, con disponibilidad de red y proyectados a la web, en fin un sinnúmero de oportunidades para trabajar, en un entorno controlado por eventos lo cual facilita su uso y lo hace muy maleable siendo orientado a la fácil manipulación del usuario. ¿Cuándo considera usted que no puede utilizar C# para automatizar un sistema manual? ¿Explique por qué? Cuando en el equipo no se pueda instalar la plataforma .net necesaria para que funcione C#, también cuando los equipos de la empresa presenten bajos requerimientos ya que C# necesita muchos recursos de las computadoras para correr correctamente.

27 | P á g i n a

ACTIVIDAD N°:

6

FECHA:

09/04/2012 - 10/04/2012

TEMA:

1. Como conclusión de la Entrevista realizada a los profesionales en el área de Sistemas, ¿qué consideraciones cree usted se deberán tomar en cuenta al momento de desarrollar aplicaciones (sistemas comerciales), de tal manera que no se encuentren problemas en el momento de la implementación? Elaborar una lista de al menos 5 tips o características. 2. Plenaria: Cada grupo compartirá sus opiniones y cómo llegaron a esas conclusiones con el resto de compañeros.

UNIDAD N° 1.3:

.NET FRAMEWORK

OBJETIVO:



PROBLEMA:

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo estricciones realistas

INDICADOR DE EVALUACIÓN:

Establecer los beneficios de utilizar programación orientada a objetos

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

28 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Primeramente y lo más importante sería la confianza y comunicación con el cliente, ya que hay que tener bien en claro cómo funcionan los procesos en la empresa y que tipo de información es la que le sirve para que funcionen correctamente y para eso se necesita una buena comunicación con el cliente y los usuarios finales del sistema. Se debe tener en cuenta los equipos con los que cuenta la empresa para escoger un correcto lenguaje de programación según los requerimientos con la que esta disponga. Debemos considerar si la empresa está dispuesta a invertir en el desarrollo del sistema de información y si este esté en red u orientado en la web según lo que necesite el cliente. Si en cada equipo se puede implementar correctamente las herramientas que servirán para correr aplicaciones según el lenguaje de programación que utilicemos.

29 | P á g i n a

ACTIVIDAD N°:

7

TEMA:

1. Utilizando los buscadores en Internet, elabore un informe acerca de las fortalezas y limitaciones de C#. Busque ejemplos de sistemas (aplicaciones comerciales) que han sido automatizados con C# (mínimo 5). Establezca las características (en cuanto a apariencia física), funcionalidades que tienen dichos sistemas, requerimientos de hardware y software de cada ejemplo

UNIDAD N° 1.3:

.NET FRAMEWORK  

OBJETIVO:

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

09/04/2012 - 10/04/2012

Establecer las características de la plataforma .NET Establecer las características que puede obtener un sistema desarrollado con C#

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo estricciones realistas

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

30 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Fortalezas Declaraciones en el espacio de nombres: al empezar a programar algo, se puede definir una o más clases dentro de un mismo espacio de nombres. 

Tipos de datos: en C# existe un rango más amplio y definido de tipos de datos que los que se encuentran en C, C++ o Java.



Atributos: cada miembro de una clase tiene un atributo de acceso del tipo público, protegido, interno, interno protegido y privado.



Pase de parámetros: aquí se puede declarar a los métodos para que acepten un número variable de parámetros.



Métodos virtuales y redefiniciones: antes de que un método pueda ser redefinido en una clase base, debe declararse como virtual.



Propiedades: un objeto tiene intrínsecamente propiedades, y debido a que las clases en C# pueden ser utilizadas como objetos, C# permite la declaración de propiedades dentro de cualquier clase.



Inicializador: un inicializador es como una propiedad, con la diferencia de que en lugar de un nombre de propiedad, un valor de índice entre corchetes se utiliza en forma anónima para hacer referencia al miembro de una clase.



Control de versiones: C# permite mantener múltiples versiones de clases en forma binaria, colocándolas en diferentes espacios de nombres. Esto permite que versiones nuevas y anteriores de software puedan ejecutarse en forma simultánea.

31 | P á g i n a

Limitaciones 

Las desventajas que se derivan del uso de este lenguaje de programación son que en primer lugar se tiene que conseguir una versión reciente de Visual Studio .NET, por otra parte se tiene que tener algunos requerimientos mínimos del sistema para poder trabajar adecuadamente tales como contar con Windows NT 4 o superior, tener alrededor de 4 gigas de espacio libre para la pura instalación, etc.



Además para quien no está familiarizado con ningún lenguaje de programación, le costará más trabajo iniciarse en su uso, y si se quiere consultar algún tutorial más explícito sobre la programación en C# se tendría que contar además con una conexión a Internet.

Ejemplo:

LABVIEW: SISTEMA DE PRUEBAS CLÍNICAS PARA LA FARMACOLOGÍA Y LA COSMETOLOGÍA Este software puede semi-automatizar las mediciones de caracterización de la piel durante los ensayos clínicos de productos farmacéuticos y cosméticos, utilizando más de 15 instrumentos de medición generalmente presentes en este tipo de laboratorio: corneómetro, sebómetro, pHmetro, termómetro, glossímetro, mexámetro,

colorímetro,

tewámetro,

reviscómetro,

espectro

colorímetro,

cromamómetro, cutómetro, torquémetro. Por lo tanto, hace que las mediciones se hagan de forma más rápida a través de una sola herramienta de software. Ejemplo de una serie de mediciones y análisis

mediante el estudio de la

elasticidad de la piel, con el software de pruebas clínicas software para productos cosméticos y farmacéuticos Funcionamiento Después de la creación y configuración de un estudio que especifica la lista de sujetos, las condiciones (zonas, tiempos, productos) y los instrumentos, o importando esos datos, el técnico efectúa las mediciones con el instrumento en 32 | P á g i n a

mano. El software comunica con el aparato para colectar las mediciones, analizarlas, grabarlas, exportarlas para usarlas en otro software como Excel, e imprimir reportes. Una función de calibración y control permite de la detección derivas y corregirlas. Acerca de la trazabilidad, todas acciones del usuario son grabadas para identificar cualquier cambio o problema y para tener un histórico de los estudios.

33 | P á g i n a

ACTIVIDAD N°:

8

FECHA:

09/04/2012 - 10/04/2012

TEMA:

1. Investigar sobre .NET Framework. Elaborar un ensayo acerca de lo que entiende de este concepto. Demuestre: ¿De qué se trata? ¿Cómo funciona?

UNIDAD N° 1.3:

.NET FRAMEWORK

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

Establecer las características de la plataforma .NET

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

34 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

.NET es un framework de Microsoft que hace un énfasis en la transparencia de redes, con independencia de plataforma de hardware y que permita un rápido desarrollo de aplicaciones. .NET Framework es un componente integral de Windows que admite la creación y la ejecución de la siguiente generación de aplicaciones y servicios Web XML. El diseño de .NET Framework está enfocado a cumplir los objetivos siguientes:     

Proporcionar un entorno coherente de programación orientada a objetos. Proporcionar un entorno de ejecución de código que reduzca lo máximo posible la implementación de software y los conflictos de versiones. Ofrecer un entorno de ejecución de código que fomente la ejecución segura del mismo, incluso del creado por terceras personas desconocidas o que no son de plena confianza. Proporcionar un entorno de ejecución de código que elimine los problemas de rendimiento de los entornos en los que se utilizan secuencias de comandos o intérpretes de comandos. Basar toda la comunicación en estándares del sector para asegurar que el código de .NET Framework se puede integrar con otros tipos de código.

.NET Framework contiene dos componentes principales: Common Language Runtime y la biblioteca de clases de .NET Framework. Common Language Runtime es el fundamento de la tecnología. El motor en tiempo de ejecución se puede considerar como un agente que administra el código en tiempo de ejecución y proporciona servicios centrales, como la administración de memoria, la administración de subprocesos y la interacción remota, al tiempo que aplica una seguridad estricta a los tipos y otras formas de especificación del código que fomentan su seguridad y solidez. De hecho, el concepto de administración de código es un principio básico del motor en tiempo de ejecución. El código destinado al motor en tiempo de ejecución se denomina código administrado, a diferencia del resto de código, que se conoce como código no administrado. La biblioteca de clases, el otro componente principal de .NET Framework, es una completa colección orientada a objetos de tipos reutilizables que se pueden emplear para desarrollar aplicaciones que abarcan desde las tradicionales herramientas de interfaz gráfica de usuario (GUI) o de línea de comandos hasta las aplicaciones basadas en las innovaciones más recientes proporcionadas por ASP.NET, como los formularios Web Forms y los servicios Web XML

35 | P á g i n a

ACTIVIDAD N°:

9

TEMA:

Utilizando el internet, investigue las principales características de las Metodologías de desarrollo de software existentes y elabore un cuadro comparativo donde permita demostrar sus ventajas y desventajas. Indique ¿cuál metodología usará para el desarrollo del proyecto de fin de módulo y explique el Porqué de su selección?

UNIDAD N° 1.4:

METODOLOGÍAS DE DESARROLLO 

OBJETIVO: PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

09/04/2012 - 10/04/2012

Comprender la forma en que el análisis del problema ayuda a establecer los procesos y datos a automatizar

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente e) Identificar, formular y resolver problemas de ingeniería

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

36 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Rational Unified Process (RUP) La metodología RUP, divide en 4 fases el desarrollo del software:    

Inicio, El Objetivo en esta etapa es determinar la visión del proyecto. Elaboración, En esta etapa el objetivo es determinar la arquitectura óptima. Construcción, En esta etapa el objetivo es llevar a obtener la capacidad operacional inicial. Transmisión, El objetivo es llegar a obtener el reléase del proyecto.

Microsoft Solution Framework (MSF) Esta es una metodología flexible e interrelacionada con una serie de conceptos, modelos y prácticas de uso, que controlan la planificación, el desarrollo y la gestión de proyectos tecnológicos. MSF tiene las siguientes características:    

Adaptable: es parecido a un compás, usado en cualquier parte como un mapa, del cual su uso es limitado a un específico lugar. Escalable: puede organizar equipos tan pequeños entre 3 o 4 personas, así como también, proyectos que requieren 50 personas a más. Flexible: es utilizada en el ambiente de desarrollo de cualquier cliente. Tecnología Agnóstica: porque puede ser usada para desarrollar soluciones basadas sobre cualquier tecnología.

Extreme Programing (XP) 

Pruebas Unitarias: se basa en las pruebas realizadas a los principales procesos, de tal manera que adelantándonos en algo hacia el futuro, podamos hacer pruebas de las fallas que pudieran ocurrir. Es como si nos adelantáramos a obtener los posibles errores.



Re fabricación: se basa en la reutilización de código, para lo cual se crean patrones o modelos estándares, siendo más flexible al cambio.



Programación en pares: una particularidad de esta metodología es que propone la programación en pares, la cual consiste en que dos desarrolladores participen en un proyecto en una misma estación de trabajo. Cada miembro lleva a cabo la acción que el otro no está haciendo en ese momento. Es como el chofer y el copiloto: mientras uno conduce, el otro consulta el mapa.

37 | P á g i n a

RUP MSF XP

VENTAJAS

DESVENTAJAS

Genera Obtenemo mucho Asegura Incorpor s código Sea Menor tiempo en la a más adopta a taza de el producci objetivo simple y cualquier errores desarrollo ón de s de más fácil proyecto y del software calidad de tecnología sistema entender

Existe un riesgo de falla.

X

X

X

X

X X

X X

X

X X

Model o costos

X X

X

Bueno yo escogería el modelo RUP ya que con este trabajamos en la materia de Análisis y creo que es más confiable, ya que lo hemos utilizado para realizar nuestro proyecto. A su vez este modelo asegura la producción del software de acuerdo a los requerimientos del cliente.

38 | P á g i n a

ACTIVIDAD N°:

10

TEMA:

Utilizando el internet, investigue las principales características de las Técnicas de programación existentes y elabore un cuadro comparativo donde permita demostrar sus ventajas y desventajas. Indique ¿cuál Técnicas de programación usará para el desarrollo del proyecto de fin de módulo y explique el Porqué de su selección?

UNIDAD N° 1.5:

DISEÑO DE AMBIENTES WINDOWS 

OBJETIVO: PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

09/04/2012 - 10/04/2012

Comprender la forma en que el análisis del problema ayuda a establecer los procesos y datos a automatizar

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente k) Usar técnicas, habilidades y herramientas para la práctica de ingeniería.

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

39 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO



Programación Estructurada Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa.



Programación Modular La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable



Programación Orientada a Objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

Bueno yo escogería la técnica de programación Orientada a objetos porque esta es más sencillas y fácil de entender ya que es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora.

40 | P á g i n a

VENTAJAS Program as fáciles de entender Programación x Estructurada Programación Modular Programación x Orientada a Objetos

Permite crear sistemas más complejo s x x x

DESVENTAJAS Facilitan la escritura y depuración de un programa

Reducción de costos de mantenimie nto

Reducción Poco del eficient esfuerzo e en pruebas

Mayor Mal Cantid rendimien ad de to Código

x

x

x

x

x x

x x

41 | P á g i n a

ACTIVIDAD N°:

11

FECHA:

11/04/2012 - 12/04/2012

1. Tomando en cuenta las investigaciones y los trabajos realizados anteriormente: Imagine que usted es un consultor independiente. Escriba una carta que ofrezca sus servicios como consultor para resolver los problemas relacionados a los procesos que se llevan en una empresa. El usuario, que es bastante escéptico con las personas dedicadas a la informática, no está al tanto de las modas informáticas. Asegúrese de que su propuesta explique paso a paso como construiría un sistema que diera respuesta a las necesidades de este usuario.

TEMA:

UNIDAD N° 1.4, 1.5:

1.4 METODOLOGÍAS DE DESARROLLO 1.5 DISEÑO DE AMBIENTES WINDOWS

OBJETIVO:

 

PROBLEMA: INDICADOR DE EVALUACIÓN:

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente e) Identificar, formular y resolver problemas de ingeniería

Explicar las funciones del nuevo sistema Establecer los beneficios de utilizar sistemas informáticos

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

42 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Machala, 14 de Junio del 2012

Sr. Jaime Santander Propietario de la Empresa Mercantil Suministros S.A. Presente.

De mis consideraciones.

Yo, Luis David Zamora Lojan, por la presente le ofrezco mis servicios profesionales, como ingeniero de sistemas en oficio, para optimizar los procesos que se llevan a cabo en su empresa, pues he notado que el tiempo de repuesta de sus empleados con respecto a la solicitud de servicios del cliente y el acceso a la información de la empresa resulta muy lento lo que posibilita la perdidas de recursos y tiempo, ocasionando pérdidas económicas para su empresa. La solución que le propongo es la implementación de un sistema de información que automatice esos procesos y reduzca el tiempo de acceso a la información, con lo cual asegura que los clientes estarán contentos con ser atendidos más rápido y de manera más eficiente, y los usuarios del sistema tendrán disponibles los datos que necesiten en el momento que lo necesiten para trabajar mejor. Al implementar el sistema asegura una ganancia sustancial con respecto la ejecución de los procesos de su empresa y seguramente generara un ahorro de recursos a corto plazo. Espero tome en consideración mi propuesta, me despido indicándole que estoy a sus servicios.

Atentamente

Luis David Zamora Loján Consultor Independiente.

43 | P á g i n a

ACTIVIDAD N°:

12

FECHA:

11/04/2012 - 12/04/2012

1. Imagine que tiene que trabajar con un usuario que ha dado muestras de impaciencia en otros proyectos, alentando los en el ciclo de vida del desarrollo del sistema y después culpando al analista de sistemas de no haber conseguido cumplir las expectativas. Elabore una lista de los problemas y sus causas, que se presentan al omitir alguna de las fases del ciclo de vida y explíquelas al usuario de tal manera que le quede claro los riesgos a los que se expone el sistema.

TEMA:

2. Plenaria: Los alumnos compartirán sus respuestas, de esta tarea con el resto de compañeros. UNIDAD N° 1.4, 1.5:

1.4 METODOLOGÍAS DE DESARROLLO 1.5 DISEÑO DE AMBIENTES WINDOWS

OBJETIVO:

 

PROBLEMA: INDICADOR DE EVALUACIÓN:

Explicar las funciones del nuevo sistema Establecer los beneficios de utilizar sistemas informáticos

Desconocimiento de la terminología para desarrollar sistema informático g) Comunicarse efectivamente c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

44 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Requerimientos:   

No se tendrá claro que es lo que desea y lo que necesita el cliente. No se considerara el equipo de cómputo disponible. El cliente no estará satisfecho con el resultado.

Análisis:   

No se profundizaran los problemas relevantes de la empresa. No se sabrá hacia donde estará orientada la aplicación del sistema. Pérdida de tiempo.

Diseño:   

No se tendrá clara la estrategia a utilizar. No se sabrá cómo solucionar los problemas encontrados en el análisis. Mal destino de recursos.

Implementación:   

El software contará con muchos errores. El software no cumplirá las expectativas del cliente. No estará definido el método de programación ni hacia donde estará destinado.

Pruebas:   

El producto final tendrá muchas fallas. Los usuarios pueden ocasionar errores graves al sistema y corromper la información. No habrá medidas para solucionar posibles errores en la programación.

Documentación:   

La programación puede no ser clara para futuras actualizaciones y comprensión de código. No habrá referencias sobre el entorno de desarrollo del sistema o sobre quien lo desarrollo. No se contará con un manual que sirva de soporte a los usuarios.

Mantenimiento:   

No permitirá la actualización del software. Reducción del periodo de vida útil del sistema. Fallos en los equipos y el producto.

45 | P á g i n a

CAPITULO 2: VISUAL STUDIO 2005 Y C#

46 | P á g i n a

ACTIVIDAD N°:

13

TEMA:

1. Investigar: Cuales son los DBMS que trabajan con C#, características, ventajas, desventajas. Seleccionar el DBMS idóneo en el que desarrollaría la Base de Datos para un Sistema

UNIDAD N° 2.1:

CONEXIÓN A BASE DE DATOS

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

11/04/2012 - 12/04/2012

Evaluar y seleccionar el DBMS adecuado para el proyecto final del modulo

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

47 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

ORACLE Ventajas  Oracle es el motor de base de datos relacional más usado a nivel mundial.  Puede ejecutarse en todas las plataformas, desde una Pc hasta un supercomputador.  Oracle soporta todas las funciones que se esperan de un servidor "serio": un lenguaje de diseño de bases de datos muy completo (PL/SQL) que permite implementar diseños "activos", con triggers y procedimientos almacenados, con una integridad referencial declarativa bastante potente.  Permite el uso de particiones para la mejora de la eficiencia, de replicación e incluso ciertas versiones admiten la administración de bases de datos distribuidas.  El software del servidor puede ejecutarse en multitud de sistemas operativos.  Existe incluso una versión personal para Windows 9x, lo cual es un punto a favor para los desarrolladores que se llevan trabajo a casa.  Oracle es la base de datos con más orientación hacía INTERNET.  Un aceptable soporte

Desventajas  Una de las versiones más recientes de Oracle es la 8 punto algo (Aunque ya está la 9i). Y es que desde el lanzamiento original de la 8 se sucedieron varias versiones con correcciones, hasta alcanzar la estabilidad en la 8.0.3. El motivo de tantos fallos fue, al parecer, la remodelación del sistema de almacenamiento por causa de la introducción de extensiones orientadas a objetos.  El mayor inconveniente de Oracle es quizás su precio. Incluso las licencias de Personal Oracle son excesivamente caras, en mi opinión. 48 | P á g i n a

Otro problema es la necesidad de ajustes. Un error frecuente consiste en pensar que basta instalar el Oracle en un servidor y enchufar directamente las aplicaciones clientes. Un Oracle mal configurado puede ser desesperantemente lento.  También es elevado el coste de la formación, y sólo últimamente han comenzado a aparecer buenos libros sobre asuntos técnicos distintos de la simple instalación y administración

POSTGRESQL Ventajas  Instalación ilimitada:  Ahorros considerables de costos de operación:.  Estabilidad y confiabilidad:  Extensible:  Multiplataforma:  Diseñado para ambientes de alto volumen:  Herramientas gráficas de diseño y administración de bases de datos.  Soporta los tipos de datos, cláusulas, funciones y comandos de tipo estándar SQL92/SQL99 y extendidos propios de PostgreSQL.  Puede operar sobre distintas plataformas, incluyendo Linux, Windows, Unix, Solaris y MacOS X.  Buen sistema de seguridad mediante la gestión de usuarios, grupos de usuarios y contraseñas.  Gran capacidad de almacenamiento.  Buena escalabilidad ya que es capaz de ajustarse al número de CPU y a la cantidad de memoria disponible de forma óptima, soportando una mayor cantidad de peticiones simultáneas a la base de datos de forma correcta.

Desventajas:  Soporte en línea: Hay foros oficiales, pero no hay una ayuda obligatoria.  Consume más recursos que MySQL. 49 | P á g i n a

 La sintaxis de algunos de sus comandos o sentencias no es nada intuitiva  Es fácil de vulnerar sin protección adecuada.  InnoDB genera mucho footprint en memoria al indizar.  El toolset empresarial tiene un costo adicional por suscripción anual.  Realizar revisiones llegar a ser una labor manual y tediosa para el DBA.  Reducida cantidad de tipos de datos

ACCESS Por medio de Microsoft Access, puede administrar toda la información desde un único archivo de base de datos.  Tablas para almacenar los datos.  Consultas para buscar y recuperar únicamente los datos que necesita.  Formularios para ver, agregar y actualizar los datos de las tablas.  Informes para analizar o imprimir los datos con un diseño específico.  Almacenar los datos una vez en una tabla y verlos desde varios lugares.

Ventajas: 

Es la base de datos más amigable y versátil del mercado.



Es portable.



Crear tablas rápidamente sin preocuparse de la complejidad de las bases de datos.



Actualizar y recopilar información directamente del origen.



Obtener acceso a información procedente de orígenes diversos.

Desventajas: 

Entre sus mayores inconvenientes figuran que no es multiplataforma, pues sólo está disponible para sistemas operativos de Microsoft



Su uso es inadecuado para grandes proyectos de software que requieren tiempos de respuesta críticos

50 | P á g i n a

MySQL Ventajas:  MySQL software es Open Source  Velocidad al realizar las operaciones, lo que le hace uno de los gestores con mejor rendimiento.  Bajo costo en requerimientos para la elaboración de bases de datos, ya que debido a su bajo consumo puede ser ejecutado en una máquina con escasos recursos sin ningún problema.  Facilidad de configuración e instalación.  Soporta gran variedad de Sistemas Operativos  Baja probabilidad de corromper datos, incluso si los errores no se producen en el propio gestor, sino en el sistema en el que está.  Su conectividad, velocidad, y seguridad hacen de MySQL Server altamente apropiado para acceder bases de datos en Internet  El software MySQL usa la licencia GPL

Desventajas:  Un gran porcentaje de las utilidades de MySQL no están documentadas.  No es intuitivo, como otros programas (ACCESS)  No permite el modo de autentificación local (seguridad integrada de Windows), sólo el modo estándar

La base de datos que utilizare para desarrollar mi base de datos es Microsoft Access.

51 | P á g i n a

ACTIVIDAD N°:

14

FECHA:

11/04/2012 - 12/04/2012

Resolver Mini caso Práctico “La Dirección General de Hacienda” (Lo que sería para nosotros el SRI) obteniendo el diagrama de procesos y diagrama E/R respectivo. Tomado del Libro Análisis y Diseño de Sistemas de Información. McGraw Hill. Whitten, Bentley, Barlow. 3era. Edición. Página: 363 - 364. Contestar: 

TEMA:

   

¿Qué características debe considerar al momento de identificar los procesos? ¿Por qué? ¿Qué características tienen que tener los datos para ser considerados en la solución del problema? ¿Por qué? ¿Cómo puede saber cuáles son los datos que se necesitan en un determinado proceso?

UNIDAD N° 2.2:

ACCESO A BASE DE DATOS

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

Modelar y diseñar esquemas de base de datos

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

52 | P á g i n a

MINICASO PRÁCTICO LA DIRECCIÓN GENERAL DE HACIENDA (SRI) El siguiente caso describe cómo procesa una clásica administración regional de Hacienda las declaraciones de impuestos. Las adaptaciones realizadas pretenden hacer más sencillo el ejercicio que cierra el minicaso.

Escena: Wayne Richards, un analista de sistemas con gran experiencia, está manteniendo una entrevista con Paul Adams, supervisor regional de la Dirección General de Hacienda. Wayne ha recibido el encargo de simplificar el modo en que la Dirección General de Hacienda procesa las declaraciones de impuestos con el fin de acelerar tanto las devoluciones de los contribuyentes como el cobro de las declaraciones positivas. Para conseguirlo, Wayne intenta primero aprender los métodos actuales del proceso. Apenas conoce los procedimientos utilizados, ya que su formación se limita al área de sistemas de información en el campo de la fabricación. Unámonos a Wayne y Paul durante su entrevista. Wayne: A decir verdad, no me siento muy cómodo con estos temas. Si tuvieras la amabilidad de explicarme cómo se procesan las declaraciones de la renta, me sentiría mucho más tranquilo.

postales al centro regional. Se clasifican entonces los sobres por tipo de declaración; por ejemplo, en modelos simplificados u ordinarios o en declaraciones positivas o negativas. Una vez hecha esta primera clasificación, los sobres se envían a Recepción y control, donde se separan en 27 tipos en virtud de su pertenencia a tres posibles categorías generales: modelos simplificados con derecho a devolución, modelos ordinarios con derecho a devolución y declaraciones positivas. Wayne: ¿Por qué se clasifican dos veces? Paul: Buena pregunta. Principalmente por el gran número de declaraciones. No es raro que recibamos más de 200.000 al día. La primera clasificación tiene por objetivo dividir el total en varios grupos para hacer el trabajo más manejable. Wayne: 27 tipos parecen muchísimos. ¿Por qué tantos? Siempre he pensado que las declaraciones sólo podían ser positivas o negativas. Paul: No es tan sencillo. Hay declaraciones para las que se piden papeles complementarios. Otras son pagos trimestrales. En total, puede haber unos 500 impresos oficiales para rellenar las declaraciones de la renta.

Paul: Primero, las declaraciones de la renta se llevan en furgones 53 | P á g i n a

Wayne: Tal vez sería más fácil si empezáramos por el más sencillo. ¿Cuál es? Paul: Para procesar los modelos simplificados con derecho a devolución, los operadores meten los impresos en una máquina que “escanea” las declaraciones y guarda los datos para su proceso posterior. Entonces, los datos son leídos por el ordenador principal, que determina el tipo impositivo correcto, decide si ha de enviarse un reembolso, actualiza los archivos de los contribuyentes e imprime cartas, avisos, declaraciones paralelas, etc. Wayne: ¿imprimimos nosotros los cheches de reembolso? Paul: No, la información sobre reembolsos se envía al Centro informático Nacional, que posteriormente solicita al Departamento de Hacienda que emita los cheques. Las cartas, los avisos y las restantes comunicaciones se mandan a las administraciones locales de Hacienda de todo el país, para que remitan las informaciones adecuadas a los contribuyentes. Wayne: Parece bastante sencillo, ¿y qué puedes decirme de los modelos ordinarios con derecho a devolución? Paul: El proceso de los modelos ordinarios con derecho a devolución es bastante parecido, aunque no igual, al de los modelos simplificados. Wayne: ¿Y por qué los procesos son diferentes?

Paul: En parte porque los modelos ordinarios incluyen a menudo tablas múltiples de información, como son las deducciones por categorías. Primero, estas declaraciones se clasifican en bloques de lotes que se procesan como unidades separadas. Los lotes se numeran para asegurar que las declaraciones no se pierdan o se retrasen demasiado en su proceso y, a continuación, se envían a los inspectores. Éstos los comprueban, corrigen los posibles errores y codifican las declaraciones para su proceso. Wayne: ¿Y qué pasa con las declaraciones que están incompletas o que son ilegibles? Paul: Los inspectores devuelven a los contribuyentes cualquier impreso con datos incompletos o ilegibles. Además, los administrativos ponen un sello con un número de documento a cada declaración, con el fin de poder hacer un seguimiento de todas ellas cuando vuelvan a entrar en el sistema. A partir de este momento, el proceso es similar al de los modelos simplificados. Las declaraciones son introducidas en el sistema informático, se almacenan los datos para su tratamiento y son leídos por el ordenador principal. Éste determina la tasa impositiva correcta, decide si ha de enviarse o no un reembolso, actualiza los archivos de los contribuyentes, selecciona algunas declaraciones para su inspección e imprime cartas, avisos, declaraciones 54 | P á g i n a

paralelas, etc. La información de las declaraciones se envía al Centro Informático Nacional, que la remite a su vez al Departamento de Hacienda para la emisión de los cheques de devolución. Los avisos y las informaciones sobre posibles inspecciones se envían a las administraciones locales de Hacienda de todo el país, desde las cuales se mandan a su vez a los contribuyentes las informaciones apropiadas.

depósitos Nacional.

en

el

Banco

Wayne: ¿Qué hacen los inspectores con los informes de errores? Paul: Los verifican, corrigen lo que pueden y se ponen en contacto con los contribuyentes para recoger cualquier información ausente. A partir de este punto, las declaraciones siguen un tratamiento idéntico al descrito para los modelos ordinarios con derecho a devolución.

Wayne: ¿Cómo se gestionan los pagos? Paul: Para declaraciones positivas, los inspectores las examinan y corrigen posibles errores, las codifican para su tratamiento y envían a los contribuyentes todas aquellas que contengan datos incompletos o ilegibles. Después, las declaraciones se introducen en el ordenador. Ésta comprueba los cálculos y los importes declarados, asigna números para la localización de los documentos y guarda los datos. Luego se repiten los pasos utilizados operadores diferentes. Wayne: ¿Por qué se usan dos grupos diferentes de operadores para repetir lo mismo? Paul: Se contrastan los datos de los segundos operadores con los de los primeros para mayor seguridad. Se envían entonces a los inspectores los informes con errores. Los datos correctos se almacenan para su ulterior tratamiento, y se guardan los cheques de los 55 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO Diagrama Entidad Relación de la Dirección General de Hacienda.

Pago

Rembolso

Genera

Declaraciones

Tiene

Tipos

Declaración Paralela

Tiene

Inspectores

Analizan

Categorías

¿Qué características debe considerar al momento de identificar los procesos?  Que debemos realizar un análisis observando los procesos que se puedan automatizar.  Tener conocimiento sobre los impuestos y sus clasificaciones y validación de las haciendas y los procesos que se realizan para tener una idea clara de lo que vamos hacer en el sistema.  Intervenir directamente en los procesos para ver cuáles son los que van a permitir al usuario mejorar del sistema manual al sistema automatizado.  Debemos tomar en cuenta que vamos a manejar en el sistema grandes sumas de dinero de los hacendados así que los procesos de clasificación y cálculos no deben tener errores. ¿Por qué? Porque debemos realizar un análisis de lo que vamos a realizar y principalmente tener conocimiento en cuanto al tema para que el sistema pueda lograr los objetivos que se plantean en el mismo y pueda ser la solución esperada. ¿Qué características tienen que tener los datos para ser considerados en la solución del problema? •Deben ser flexibles y adaptables a cualquier otro cambio de sistema o software, se debe realizar un respaldo de datos.

56 | P á g i n a

•Los datos deben estar enlazados en archivos únicos y específicos que no permitan que se dupliquen para tener 2 resultados diferentes del mismo proceso •Deben permitir al usuario que los resultados de estos sean eficaces y eficientes, y que se los permita gestionar dentro del sistema como ingresar, eliminar, consultas, modificar, etc. •Deben tener validación y ser verificados en cuanto a lo que se registra en la base de datos. ¿Por qué? Porque los datos que se utilizan en el sistema principalmente en la base de datos tienen que poder presentar los resultados correctos en cuanto se maneja nombres y dinero de las personas. ¿Cómo puede saber cuáles son los datos que se necesitan en un determinado proceso? Debemos identificar los resultados que requiere el usuario en un determinado proceso para saber qué datos se van a manejar en el mismo, hay que tomar en cuenta la información recopilada y posteriormente verificar los errores para tener un buen proceso Para procesar los modelos simplificados con derecho a devolución, los operadores meten los impresos en una máquina que “escanea” las declaraciones y guarda los datos para su proceso posterior. Entonces, los datos son leídos por el ordenador principal, que determina el tipo impositivo correcto, decide si ha de enviarse un reembolso, actualiza los archivos de los contribuyentes e imprime cartas, avisos, declaraciones paralelas, etc. Los modelos ordinarios con derecho a devolución incluyen a menudo tablas múltiples de información, como son las deducciones por categorías. Primero, estas declaraciones se clasifican en bloques de lotes que se procesan como unidades separadas. Los lotes se numeran para asegurar que las declaraciones no se pierdan o se retrasen demasiado en su proceso y, a continuación, se envían a los inspectores. Éstos los comprueban, corrigen los posibles errores y codifican las declaraciones para su proceso.

57 | P á g i n a

ACTIVIDAD N°:

15

FECHA:

16/04/2012 - 17/04/2012

Investigar e Implementar el diagrama E/R (Tablas, llaves primarias, relaciones) del Minicaso práctico “La Dirección General de Hacienda”, en un DBMS (Access / SQL Server). Recuerde utilizar nombres nemotécnicos y estandarizados. Responder:

TEMA:

  

¿Qué problemas se presentaron al momento de elaborar el diagrama E/R e implementarlo? ¿Qué se me hizo más fácil resolver en este trabajo? ¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar?

UNIDAD N° 2.2:

ACCESO A BASE DE DATOS

OBJETIVO:

 

PROBLEMA: INDICADOR DE EVALUACIÓN:

Modelar y diseñar esquemas de base de datos Organizar los datos y procesos de un sistema

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

58 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INSPECTOR *Ced_ins Nom_ins Ape_ins Direc_ins Tel_ins

CATEGORÍA *Cod_cat Nom_cat Ced_ins

TIPO *Cod_tip Nom_tip Cod_cat

PAGO *Nro_pag Fec_pag Valor_pag Nro_dec

REMBOLSO *Nro_rem Fec_rem Valor_rem Nro_dec

DECLARACION *Nro_dec Fec_dec Per_dec Ingresos_dec Egresos_dec Valor_dec Cod_tip

DECLARACIÓN PARALELA *Nro_decpar Fec_decpar Per_decpar Valor_decpar Nro_dec Tablas y llaves primarias creadas:

59 | P á g i n a

Relaciones Creadas:

¿Qué problemas se presentaron al momento de elaborar el diagrama E/R e implementarlo? Los problemas que se presentaron para elaboran el diagrama fue la falta de datos e información del minicaso y también debido a la complejidad de la explicación del proceso que pasa a cada declaración ya que está un poco confusa y no se comprende bien.

60 | P á g i n a

¿Qué se me hizo más fácil resolver en este trabajo? La elaboración de el diagrama de entidad – relación. ¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar? El problema que tuve para resolver fue por la falta de información no se puede realizar bien el diagrama. Debo mejorar un poco la compresión de la lectura ya que se encuentran muy complejos y es difícil entender la lógica del minicaso.

61 | P á g i n a

ACTIVIDAD N°:

16

TEMA:

1. Investigar los elementos de C# que le permitirán implementar el diseño de la Interface de usuarios dentro de los Diseñadores de Formularios. Cómo funcionan y para qué sirven, cuándo y cómo deben ser utilizados. ¿Qué objetos GUI existen en C#?

UNIDAD N° 1.4, 3.6:

1.4. DISEÑO DE AMBIENTES WINDOWS 3.6. PRINCIPALES CONTROLES

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

16/04/2012 - 17/04/2012

Establecer las características físicas que tendrá el sistema informático.

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

62 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

En la figura que observamos aquí, podemos visualizar los elementos con los cuales cuenta C# para realizar el diseño de la interface. Como son botones, cuadros de texto, Label, radioButton, checkedListbox, etc Hay tres pasos básicos para crear interfaces de usuario

para

las

aplicaciones

de

formularios

Windows Forms: 

Agregar los controles a la superficie de diseño.



Establecer las propiedades iniciales de los

controles. 

Escribir los controladores para los eventos especificados.

Sirve para agregar controles a un formulario, organizarlos y escribir el código de sus eventos. El uso del diseñador permite:

63 | P á g i n a



Agregar componentes, controles de datos o controles basados en Windows a un formulario.



Hacer doble clic en el formulario del diseñador y escribir código en el evento Load de ese formulario, o hacer doble clic en un control del formulario y escribir código para el evento predeterminado del control.



Modificar la propiedad Text de un control seleccionando el control y escribiendo un nombre.



Ajustar la ubicación del control seleccionado moviéndolo con el mouse (ratón) o con las teclas de dirección. De forma similar, ajustar la ubicación con más precisión utilizando las teclas de dirección y CTRL. Por último, ajustar el tamaño del control utilizando las teclas de dirección y MAYÚS. Para obtener información sobre cómo ajustar de una vez la posición de varios controles, vea Cómo: Alinear varios controles en formularios Windows Forms.



Seleccionar varios controles utilizando MAYÚS+clic o CTRL+clic. Si se utiliza MAYÚS+clic, el primer control seleccionado es el control dominante al alinear o manipular el tamaño. Si se utiliza CTRL+clic, el último control seleccionado es el dominante; por lo tanto, el control dominante cambia cada vez que se agrega un nuevo control. También se pueden seleccionar varios controles haciendo clic en el formulario y arrastrando un rectángulo de selección que rodee los controles que se desean seleccionar.

64 | P á g i n a

ACTIVIDAD N°:

17

TEMA:

Utilizando el Minicaso: “La Dirección General de Hacienda”. Tomado del Libro Análisis y Diseño de Sistemas de Información. McGraw Hill. Whitten, Bentley, Barlow. 3era. Edición. Página: 363 - 364. Desarrolle: Analice y seleccione al menos cinco características de un buen diseño de entrada / salida y al menos cinco características de un buen diseño de Interface para el usuario (que sea amigable).

UNIDAD N° 1.4:

1.4. DISEÑO DE AMBIENTES WINDOWS

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

18/04/2012 - 19/04/2012

Establecer las características físicas que tendrá el sistema informático.

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

65 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CARACTERÍSTICAS DE UN BUEN DISEÑO DE: ENTRADA 

Ingreso ordenado de datos



Deben ser eficaces, precisos, sencillos, atractivos & fáciles de usar.



Ingreso según clasificaciones.



Mensaje de ayuda al usuario al momento de ingresar los datos.



Validación de datos.

SALIDA 

Determinar qué información presentar



Decidir si la información será presentada en forma visual, verbal o impresa y seleccionar el medio de salida.



Disponer de la presentación de la información en un formato aceptable.



Decidir cómo distribuir la salida entre los posibles destinatarios.



Mensajes de advertencia al momento de enviar archivos o apagar el sistema.

CARACTERÍSTICAS DE UN BUEN DISEÑO DE INTERFACE PARA EL USUARIO 

Que no tenga sobrecargar de colores es decir no mezclar tantos colores ni poner imágenes muy fuertes de fondo.



Que contenga un interfaz fácil de entender.



No sobrecargar la interfaz con tantos iconos, haciendo que al usuario le resulte difícil encontrar lo que busca.



Utilizar iconos conocidos, para así el usuario reconozca con facilidad las opciones.



Una interfaz no necesita ser bonita para poder funcionar, sin embargo hacer un diseño agradable contribuirá a que la experiencia de usuario mejore.

66 | P á g i n a

¿Qué tipo de Interface de usuario diseñaría usted para los empleados de La Dirección General de Hacienda? El interfaz que se diseñaría para los empleados de la dirección general de hacienda serian: 

Con unos colores claros en tonos bajos difuminados.



Un diseño amigable con opciones que necesite el usuario como son para clasificar los datos recibidos, la forma de pagos que se realizan, si necesitan o no ser corregidos, etc. de manera que sea de fácil localización, con iconos demostrativos y una buena visualización de la misma.



También que tenga un interfaz la cual llame la atención a los empleados para que de esta manera realicen su trabajo con más eficiencia.



Que tenga un ingreso de usuario o empleado para que cada quien manejo su propia información.

67 | P á g i n a

ACTIVIDAD N°:

18

TEMA:

Basados en las características que enunció, diseñe las Interfaces de entrada / salida y de usuario, explique por qué encuentra que es la más adecuada con base en lo que sabe acerca de los empleados de la administración de la dirección general de Hacienda.

UNIDAD N° 1.4:

1.4. DISEÑO DE AMBIENTES WINDOWS

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

18/04/2012 - 19/04/2012

Establecer las características físicas que tendrá el sistema informático.

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

68 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Es la más adecuada porque para los empleados de la hacienda no saben muchos de sistemas informáticos la cual al momento de diseñar tenemos que tener en cuenta este punto para de esta manera

realizar la interfaz lo más fácil y

comprensible posible, realizando opciones con iconos conocidos para que así pueda realizar su trabajo con mayor rapidez la búsqueda y utilización del mismo.

Se colocarán los datos de acuerdo a la tabla (gestión) a procesar

69 | P á g i n a

ACTIVIDAD N°:

19

FECHA:

18/04/2012 - 19/04/2012

1. Implementar la interface (pantallas / formularios) del Minicaso práctico “La Dirección General de Hacienda”, en C#. Responder: 

TEMA:

 

¿Qué problemas se presentaron al momento de elaborar la interface en C#? ¿Qué se me hizo más fácil resolver en este trabajo? ¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar?

UNIDAD N° 3.6:

PRINCIPALES CONTROLES

OBJETIVO:

 

PROBLEMA: INDICADOR DE EVALUACIÓN:

Establecer las características físicas que tendrá el sistema informático. Organizar los datos y procesos de un sistema

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente k) Usar técnicas, habilidades y herramientas para la práctica de Ingeniería.

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

70 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTERFACE IMPLEMENTADA DE LA DIRECCIÓN GENERAL DE HACIENDA

71 | P á g i n a

72 | P á g i n a

73 | P á g i n a

¿Qué problemas se presentaron al momento de elaborar la interface en C#? Hasta ahora ningún problema con el diseño visual de la interfaz, pero con la parte de realizar el contenido de los formulario se me es un poco confuso la parte de las 2 clasificaciones que se realizan ya que al momento de diseñarlo no sé de qué manera ponerlos. ¿Qué se me hizo más fácil resolver en este trabajo? El diseño de la interfaz de las pantallas es decir colores, iconos, el diseño de los formularios. ¿Qué problemas tuve para resolver el caso? ¿Qué debo mejorar? El problema que tuve es con la parte de las distintas clasificaciones que se realizan antes de detectar los errores ya que es un poco confuso al momento de poder visualizar los documentos por lo que pasan por distintas fases.

74 | P á g i n a

ACTIVIDAD N°:

20

TEMA:

Escriba una carta a su último instructor de programación (o al que prefiera). Propóngale un método disciplinado de desarrollo de las especificaciones de los sistemas que sirva de guía a la programación de cursos del próximo ciclo. Su objetivo debería ser conseguir especificaciones (de programación) de los sistemas que eliminen o reduzcan drásticamente la necesidad de aclaraciones que requieren los estudiantes del analista de sistemas, papel desempeñado por el instructor. Defienda su propuesta.

UNIDAD N° 2.3, 2.4, 2.5:

2.3 TIPOS DE DATOS POR VALOR Y REFERENCIA 2.4 FUNCIONES 2.5 NOMBRES RESERVADOS

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

23/04/2012 - 24/04/2012

Organizar los datos y procesos de un sistema

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

75 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Machala, 23 de abril de 2012 Ing. ROSA LUJAN TORRES INTRUCTORA DE PROGRAMACIÓN DE LA ESCUELA DE INFORMATICA Presente. De mis Consideraciones Yo, Luis David Zamora Loján, alumno de la Escuela de Informática me dirijo a usted para proponerle un método disciplinado de desarrollo de las especificaciones de los sistemas que va a servir de guía a la programación de cursos del próximo ciclo. El método que deseo proponerle consiste que usted como profesora, docente e ingeniera debería realizar ejemplos en clase explicando paso a paso los procesos que se deben realizar en los nuevos programas con los que se trabaje ,ya que sería algo nuevo para todos y poco complicado ya que no sabemos la debida utilización de la mismas. Para poder tener un mejor entendimiento le propongo que sus clases se han un poco dinámicas las cual nos facilite el aprendizaje, también que al enviar las respectivas tareas extra clase nos dé una breve explicación sobre lo que se debe realizar para de esta manera tener una idea más clara de lo que se tiene que hacer, ya que sería de gran ayuda para los estudiantes para tener un mejor aprendizaje. Con esta propuesta los estudiantes reducirían drásticamente la necesidad de aclaraciones que requieren los estudiantes.

Atentamente

Luis Zamora

76 | P á g i n a

ACTIVIDAD N°:

21

TEMA: UNIDAD N° 2.2:

Investigar y Elaborar un informe sobre cómo Crear una Base de Datos en Access 2.2. CONEXIÓN A BASE DE DATOS

OBJETIVO:



PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

23/04/2012 - 24/04/2012

Organizar los datos y procesos de un sistema

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

77 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

BASE DE DATOS Y C#

Crear una nueva base de datos

Microsoft Office Access 2007 dispone de una serie de características mejoradas que simplifican el proceso de creación de nuevas bases de datos. Aunque haya creado bases de datos con anterioridad, probablemente apreciará estas características por su capacidad de agilizar el proceso de creación. Este manual aborda el proceso básico de iniciar Office Access 2007 y crear una base de datos mediante una plantilla o creando sus propias tablas. Crear una base de datos en blanco

En la página Introducción a Microsoft Office Access, en Nueva base de datos en blanco, haga clic en Base de datos en blanco. 1. En el panel Base de datos en blanco, escriba un nombre de archivo en el cuadro Nombre de archivo. Si no especifica una extensión de nombre de archivo, Access la agrega automáticamente. Para cambiar la ubicación predeterminada del archivo, haga clic en Buscar una ubicación donde colocar la base de datos (situado junto al cuadro Nombre de archivo), busque la nueva ubicación y, a continuación, haga clic en Aceptar. 2. Haga clic en Crear. Access crea la base de datos con una tabla vacía denominada Tabla1 y, a continuación, abre Tabla1 en la vista Hoja de datos. El cursor se sitúa en la primera celda vacía de la columna Agregar nuevo campo. Importante Si cierra Tabla1 sin guardar los cambios al menos una vez, Access elimina toda la tabla, aunque haya escrito datos en ella.

78 | P á g i n a

Crear tablas en una base de datos

Cuando se crea una base de datos, los datos se almacenan en tablas, que son listas de filas y columnas basadas en temas. Por ejemplo, puede crear una tabla Contactos para almacenar una lista de nombres, direcciones y números de teléfono, o una tabla Productos para almacenar información sobre productos. Siempre debe empezar a diseñar una base de datos creando primero sus tablas, incluso antes de crear otros objetos de base de datos. En este manual se explica cómo crear tablas. Aprenderá a crear una tabla, a agregar campos a la tabla y a definir la clave principal de una tabla. Obtendrá también información sobre los tipos de datos y sobre el modo de definir propiedades de los ampos y de la tabla. Creación de tablas en dbms seleccionado En esta ocasión vamos a trabajar con Access 2007 Pasos a seguir. Al abrir el Acces lo primero que aparecerá esta pantalla A continuación debemos de crear una base de datos en blanco le damos un nombre y damos clip en crear. Nota. La extensión ahora es .accdb

Al arrancar el Access tendremos la siguiente pantalla

79 | P á g i n a

Se lo ve mejor en la vista de diseño ósea la vista del programador

Ahora damos un nombre a la tabla la vamos a llamar tbalumnos. Procedemos a poner los distintos campos. Por ejemplo código_alu es importante colocarlo en este formato para más adelante no confundirnos, por ejemplo cuando hay un error de programación imaginemos que simplemente le dejo código y si creo por decir unas 50 tablas si me dice que hay un error de código no sabría en donde esta error tendría que revisar todas las tablas. En la llave podemos identificar la clave primaria.

80 | P á g i n a

Guardamos la tabla, luego abrimos la tabla clip derecho sobre la tabla - abrir para llenar los registros

Para crear las relaciones realizamos lo siguiente: Seleccionamos la opción Herramientas de base de datos del menú principal, se abrirá un cuadro donde podemos agregar las Tablas creadas.

Ahora con el ratón hacemos clic en la Tabla con relación 1 (sin soltar), arrastramos hasta la tabla con Relación N. Aparecerá una línea que representa la relación. No debemos olvidar que el tipo de relación que se emplee dependerá de cómo se declararon las llaves principales y ajenas. En la Relación de 1 a N, debe declararse en la Tabla1 una llave principal, y en la tabla N solo debe constar el campo de llave ajena, no debe ser llave principal ya que en ese caso la relación sería de 1 a 1, como lo podemos observar en la figura que se muestra a continuación:

81 | P á g i n a

Por último revisamos las opciones de la relación, debemos seleccionar o verificar que esté seleccionado la opción Exigir integridad referencial. Y Por último podemos cerrar el programa de Access.

82 | P á g i n a

ACTIVIDAD N°:

22

TEMA:

Revisar, consultar e investigar las funciones (para caracteres, numéricas, fecha, etc.) y los tipos de datos por valor y referencia de C# Realice un informe donde se indique: ¿Cómo funcionan? ¿Qué hacen? ¿Qué uso se les puede dar? Incluya ejemplos.

UNIDAD N° 2.3, 2.4:

2.3. TIPOS DE DATOS 2.4. FUNCIONES POR VALOR Y REFERENCIA

OBJETIVO:

Estandarizar los nombres de indicadores en programación Conocer y utilizar los tipos de datos en C# Conocer y utilizar las funciones de C#

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

25/04/2012 - 26/04/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

83 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

FUNCIONES UTILIZADAS EN C#

Caracteres: Chart() String() Delete() Lenght() Insert() Lower Case() Upper Case() Left() Right() Scanf () Mid ()

Matemáticas: fabs(x): Devuelve el valor absoluto de x. floor(x): Redondea por defecto al entero

más próximo.

pow(x, y): Calcula x elevado a la potencia y. sqrt (x): Devuelve la raíz cuadrada de x. Int(): Devuelve números enteros Double (): Devuelve números decimales.

84 | P á g i n a

Fecha y Hora: Now ():Fecha y Hora Date():Fecha Time(): Hora DateTime() DateTimeOffset() Year (): El año de la fecha asignada. Month (): Dato numérico del mes de la fecha asignada. Day (): Dato numérico del día de la fecha asignada. Minute (): Minuto de la fecha asignada.

TIPOS DE DATOS POR VALOR Y POR REFERENCIA UTILIZADAS EN C#

Los tipos de datos ofrecidos por C# al programador forman parte de un sistema unificado en el que todos los tipos de datos (incluidos los definidos por el usuario) derivan, aunque sea de manera implícita, de la clase System.Object. Por herencia dispondrán de todos los miembros definidos en ésta clase, en particular los útiles métodos Equals(), GetHashCode(), GetType() y ToString() que describiremnos más adelante. C# proporciona seguridad con los tipos de datos. C# no admiten ni funciones ni variables globales sino que todo el código y datos han de definirse dentro de definiciones de tipos de datos, lo que reduce problemas por conflictos de nombres y facilita la legibilidad del código. C# incluye mecanismos que permiten asegurar que los accesos a tipos de datos siempre se realicen correctamente: No pueden usarse variables que no hayan sido iniciadas. El tipo asignado restringe los valores que puede almacenar y las operaciones en las que puede intervenir. Siempre se comprueba que los índices empleados para acceder a los elementos de una tabla (vector o matriz) se encuentran en el rango de valores válidos. Sólo se admiten conversiones de tipo entre tipos compatibles y entre aquellos que se hayan definido explícitamente el mecanismo de conversión (En C# puede

85 | P á g i n a

implementarse la manera en que se realiza la conversión implícita y explícita entre tipos) Los tipos de datos en C# pueden clasificarse en dos grandes categorías:  

tipos valor tipos referencia

y pueden caracterizarse como sigue:

Tipos valor

Tipos referencia

La variable contiene un valor

La variable contiene una referencia

El dato se almacena en la pila

El dato se almacena en el heap

El dato siempre tiene valor

El dato puede no tener valor null

Una asignación copia el valor

Una asignación copia la referencia

int i = 123;

// tipo valor

string s = "Hello world"; // tipo referencia

El comportamiento cuando se copian o modifican objetos de estos tipos es muy diferente. Tipos valor Los tipos básicos son tipos valor. Si una variable es de un tipo valor contiene únicamente un valor del tipo del que se ha declarado. Los tipos predefinidos de C# son tipos disponibles en la plataforma .NET y que, por comodidad, en C# se emplean usando un alias. En la tabla siguiente enumeramos los tipos simples detallando su nombre completo, su alias, una breve descripción, el número de bytes que ocupan y el rango de valores.

86 | P á g i n a

Nombre (.NET Alias Framework)

Descripción

Tamaño Rango (bytes)

System.Sbyte

sbyte

Bytes con signo

1

-128 ... 127

System.Int16

short

Enteros cortos

2

-32.768 ... 32.767

System.Int32

int

Enteros

4

-2.147.483.648 ... 2.147.483.647

System.Int64

long

Enteros largos

8

-9.223.372.036.854.775.808 ... 9.223.372.036.854.775.807

System.Byte

byte

Bytes (sin signo)

1

0 ... 255

System.Uint16

ushort

Enteros cortos (sin signo)

2

0 ... 65.535

System.UInt32 uint

Enteros (sin signo)

4

0 ... 18.446.744.073.709.551.615

System.Uint64

ulong

Enteros largos (sin signo)

8

0 ... 18.446.744.073.709.551.615

System.Single

float

Reales (7 decimales)

4

±1.5 x 10-45 ... ±3.4 x 10+38

System.Double double

Reales (15-16 decimales)

8

±5.0 x 10-324 ... ±1.7 x 10+308

System.Decimal decimal

Reales (28-29 decimales)

12

±1.0 x 10-28 ... ±7.9 x 10+28

System.Char

Caracteres Unicode

2

Cualquier carácter Unicode

Valores lógicos

1

true ó false

char

System.Boolean bool

El comportamiento de los datos de tipos valor es el esperado cuando se inician o reciben un valor por asignación a partir de otro dato de tipo valor (son independientes).

87 | P á g i n a

Tipos referencia Si un dato es de un tipo referencia contiene la dirección de la información, en definitiva, una referencia al objeto que contiene los datos y/o métodos. En definitiva, distinguimos: La referencia o un nombre por el que nos referimos al objeto y que utilizamos para manipularlo. El objeto referenciado, que ocupa lugar en memoria (en el heap) y que almacenará el valor efectivo del objeto. En definitiva: la variable y su contenido "lógico" están en posiciones de memoria diferentes. El valor almacenado en una variable de tipo referencia es la dirección de memoria del objeto referenciado (es una referencia) o tiene el valor null (no referencia a nada). Observe que pueden existir dos variables que referencien al mismo objeto (pueden existir dos referencias a la misma zona de memoria). C# proporciona dos tipos referencia predefinidos: object y string. Todos los demás tipos predefinidos son tipos valor. El tipo object es el tipo base del cual derivan todos los tipos básicos predefinidos y los creados por el usuario. Pueden crearse nuevos tipos referencia usando declaraciones de clases (class), interfaces (interface) y delegados (delegate), y nuevos tipos valor usando estructuras struct. Los objetos de las clases creadas por el usuario son siempre de tipo referencia. El operador new permite la creación de instancias de clases definidas por el usuario. new es muy diferente en C# y en C++: En C++ indica que se pide memoria dinámica. En C# indica que se llama al constructor de una clase. El efecto, no obstante, es similar ya que como la variable es de un tipo referencia, al llamar al constructor se aloja memoria en el heap de manera implícita. Considere el siguiente fragmento de código, en el que todas las variables son del mismo tipo: ObjetoDemo). Entonces podemos decir que en C# se puede almacenar variables por valor y por referencia. Explicamos lo que significa cada uno, como funcionan y que usos se le puede dar. Tipos por valor: los tipos por valor almacenan datos a los que se puede acceder de forma directa, a su vez dentro de esta categoría encontramos más subcategorías como los tipos nativos, los tipos de datos creados por el

88 | P á g i n a

programador y los enumerados. Los tipos por valor no pueden tener valores nulos. Cuando creamos tipos por valor, el valor de la variable de este tipo se almacena en el Stack, si asignamos una variable de estas características a otra, se crea una copia en el Stack. Al destruir un tipo por valor, se destruye también el valor que se guardó en el Stack. Tipos por referencia: Los tipos creados por referencia almacenan la dirección de memoria en la que se encuentra un dato determinado de manera que usaremos esa dirección de memoria para acceder de forma indirecta al dato. Los tipos por referencia se dividen en varios subgrupos como son las clases propias de la plataforma, interfaces, clases creadas por el programador, etc. Cuando ejecutamos una aplicación es necesario que los datos se sitúen en la memoria del ordenador, la cual está divida en dos partes, una llamada Stack, de pequeño tamaño pero de un acceso muy rápido y otra llamada Heap que cuenta con un mayor tamaño pero con una velocidad de acceso inferior. Cuando creamos un tipo por referencia, en realidad lo que guardamos en el Heap es una dirección de memoria que apunta a un valor, pero no al valor en sí mismo. Si asignamos una variable que contiene un tipo por referencia a otra variable, se dice que ambas se refieren al mismo valor. Los tipos por referencia si pueden contener valores nulos. Pasar argumentos por valor y por referencia En C#, puede transferir un argumento a un procedimiento por valor o por referencia. Esto se conoce como mecanismo para pasar argumentos, y determina si el procedimiento puede modificar el elemento de programación subyacente al argumento en el código de llamada. La declaración del procedimiento determina el mecanismo para pasar argumentos de cada parámetro mediante la palabra clave ByVal o ByRef. Al pasar un argumento a un procedimiento, tenga en cuenta las distintas condiciones que interactúan entre sí: Si el elemento de programación subyacente es modificable o no modificable Si el propio argumento es modificable o no modificable Si el argumento se transfiere por valor o por referencia Si el tipo de datos del argumento es un tipo de valor o un tipo de referencia Para poder pasar los argumentos necesitamos seleccionar un mecanismo entre ellos se encuentra protección y rendimiento.

89 | P á g i n a

Protección. A la hora de elegir uno de los dos mecanismos que existen para pasar argumentos, el criterio más importante que hay que tener en cuenta es la exposición al cambio de las variables de llamada. Rendimiento. Aunque el mecanismo que se utilice para pasar argumentos también puede afectar al rendimiento del código, la diferencia suele ser insignificante. Determinación del mecanismo para pasar argumentos La declaración del procedimiento especifica el mecanismo para pasar argumentos de cada parámetro. El código de llamada no puede reemplazar a un mecanismo ByVal, pero si un argumento se declara con ByRef, el código de llamada puede forzar al mecanismo para que pase el argumento ByVal; para ello hay que encerrar el nombre del argumento entre paréntesis en la llamada. Cuándo pasar un argumento por valor Si el elemento del código de llamada subyacente al argumento es un elemento no modificable, declare el parámetro correspondiente ByVal. Ningún código puede cambiar el valor de un elemento no modificable. Si el elemento subyacente es modificable, pero no desea que el procedimiento pueda modificar su valor, declare el parámetro ByVal. Sólo el código de llamada puede cambiar el valor de un elemento modificable transferido por valor. Cuándo pasar un argumento por referencia Si el procedimiento necesita realmente modificar el valor subyacente en el código de llamada, declare el parámetro correspondiente ByRef. Si la ejecución correcta del código depende del procedimiento que cambia el elemento subyacente en el código de llamada, declare el parámetro ByRef. Si lo transfiere por valor o si el código de llamada en lugar de utilizar el mecanismo para pasar argumentos ByRef incluye el argumento entre paréntesis, la llamada al procedimiento podría producir resultados inesperados. Tipos por Valor vs. Tipos por Referencia En Visual C# existen dos tipos de variables, y para el desarrollador de aplicaciones es muy importante saberlo, y saber cómo y cuándo está usando un tipo u otro, porque de ello depende en buena medida la calidad de su desarrollo. Las variables pueden ser por Valor o por Referencia. Un Tipo por Valor es un tipo que contiene los propios datos almacenados. Podemos imaginarnos los Tipos por valor como una cajita donde metemos cosas. Cuando necesitamos usar la cosa, vemos el contenido de la cajita, y lo 90 | P á g i n a

manipulamos directamente. Los tipos numéricos de Visual Studio: int, long, double, float son ejemplos de Tipos por Valor. Cuando asignamos a una variable de un tipo por valor el contenido de otra variable, hacemos una copia de la "cosa" contenida en la cajita, y desde ese momento, ambas copias son completamente independientes. Pongamos un ejemplo: static void Main(string[] args) { int i; int j; i = 1; j = i; i++; j--; Console.WriteLine(String.Format("i={0} j={1}", i, j)); // i=2 j=0, porque al asignar j=i, lo que hacemos es // una copia de su contenido. Console.ReadKey(); }

Los Tipos por Referencia, por el contrario, son tipos que contienen una referencia a los datos, en vez de los datos en sí. Podemos imaginarnos los tipos por referencia como una cajita donde, en vez de cosas, guardamos un papel que dice dónde está la cosa que queremos usar. Cuando asignamos una variable de un tipo por referencia a otra, copiamos el papel que dice dónde está guardada la cosa. Algunos ejemplos de tipos por referencia son object, List, etc. static void Main(string[] args) { List L; List M; L = new List(); L.Add(7); M = L; M.Add(1); Console.WriteLine(String.Format( "Elementos en L={0} Elementos en M={1}", L.Count, M.Count)); // Elementos en L=2 Elementos en M=2, porque L y M apuntan al // mismo objeto. Console.ReadKey(); }

91 | P á g i n a

El caso del tipo string es particular, ya que es un tipo por referencia, pero se comporta como un tipo por valor. Esto se debe a que Visual Studio .Net define los strings como inmutables, es decir: una vez creado el objeto, no se puede cambiar de ninguna manera.

92 | P á g i n a

ACTIVIDAD N°:

23

FECHA:

30/04/2012 - 01/05/2012

UNIDAD N° 2.5:

Realizar una investigación y elaborar un informe acerca de los nombres reservados usados en C#. ¿Tratando de explicar qué son? ¿Para qué sirven? ¿Cómo funcionan? NOMBRES RESERVADOS

OBJETIVO:

Estandarizar nombres de indicadores en programación

TEMA:

PROBLEMA: INDICADOR DE EVALUACIÓN:

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

93 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

NOMBRES

abstract

as

base

bool

break

byte

char

checked

clase

const

continue

DEFINICION Este indica que el elemento objeto de la modificación tiene una implementación incompleta o que le falta una implementación. El modificador abstract se puede usar con clases, métodos, propiedades, indizadores y eventos. Se usa el modificador abstract en una declaración de clase para indicar que la clase sólo se puede utilizar como clase base de otras clases. El operador as se usa para realizar determinados tipos de conversiones entre tipos de referencia compatibles. La palabra clave base se utiliza para obtener acceso a los miembros de la clase base desde una clase derivada. El acceso a una clase base sólo se permite en un constructor, en un método de instancia o en un descriptor de acceso a una propiedad de instancia La palabra clave bool es un alias de System.Boolean. Se utiliza para declarar variables que almacenan los valores booleanos, true y false. Es una instrucción que permite terminar el bucle envolvente más cercano o la instrucción switch en la cual aparece. El control se transfiere a la instrucción que sigue a la instrucción terminada, si existe alguna. La palabra clave byte denota un tipo integral que almacena valores. No es posible convertir implícitamente a byte otros tipos numéricos no literales de mayor tamaño de almacenamiento. La palabra clave char se utiliza para declarar un carácter Unicode. Las constantes de tipo char se pueden escribir como literales de cadena, secuencias de escape hexadecimales o representaciones. El tipo System.Char proporciona varios métodos estáticos para trabajar con valores char. Esta palabra clave usa con el fin de habilitar explícitamente la comprobación de desbordamiento para operaciones aritméticas y conversiones de tipo integral. Si la expresión contiene uno o varios valores no constantes, el compilador no detecta el desbordamiento. La palabra clave class permite declarar las clases. Una clase puede heredar la implementación de una sola clase base. Sin embargo, una clase puede implementar más de una interfaz. Se utiliza para modificar una declaración de un campo o una variable local. Especifica que el valor del campo o de la variable local es constante, o sea que no se puede modificar. Una expresión constante debe dar un valor del tipo destino o de un tipo que se pueda convertir implícitamente en el tipo destino. Transfiere el control a la siguiente iteración de la instrucción de iteración envolvente donde aparece 94 | P á g i n a

decimal

default

do

double

event

explicit

True-false

float

for

El tipo decimal tiene una mayor precisión y un intervalo más reducido, lo que lo hace adecuado para cálculos financieros y monetarios. Se puede dar formato a los resultados mediante el método String.Format o a través del método Console.Write, el cual llama a String.Format(). La palabra clave default se puede utilizar en la instrucción switch o en código genéric. Cada tipo de referencia tiene un valor por defecto, este valor es devuelto por el valor por defecto (tipo), el valor predeterminado es más útil para la escritura de clases genéricas. La instrucción do ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una determinada expresión se evalúa como false. El cuerpo del bucle se debe incluir entre llaves, {}, a menos que esté compuesto por una sola instrucción. En ese caso, las llaves son opcionales La palabra clave double denota un tipo simple que almacena valores de punto flotante de 64 bits. Se utiliza para almacenar valores muy grandes y muy pequeños, este también almacena los valores fraccionarios como 1.5 y los valores negativos, tales como 1,5. La palabra clave event se utiliza para declarar un evento en una clase de editor. Los eventos son un tipo especial de delegado multidifusión que sólo se puede invocar desde dentro de la clase o struct Este declara un operador de conversión de tipos definido por el usuario que se debe invocar con una conversión de tipos. Si una operación de conversión puede producir excepciones o pérdida de información, debe marcarse como explicit. De esta forma, se evita que el compilador realice la conversión automáticamente y se produzcan posibles consecuencias no deseadas. Devuelve el valor booleano true para indicar que un operando es false; de lo contrario, devuelve false. Debe sobrecargar ambos operadores, true y false, por separado para controlar correctamente los valores NULL en la expresión. La palabra clave float denota un tipo simple que almacena valores de punto flotante de 32 bits. Float es un alias para el tipo System.Single. De forma predeterminada, un literal numérico real en el lado derecho del operador de asignación se trata como double. Por consiguiente, para inicializar una variable de tipo float, utilice el sufijo f o F El bucle for ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una determinada expresión se evalúa como false. El bucle for es útil para recorrer en iteración matrices y para procesar secuencialmente.

95 | P á g i n a

goto

If- else

implicit

int

interface

is

lock

new

null override

La instrucción goto transfiere el control del programa directamente a una instrucción identificada por una etiqueta. Un uso habitual de goto consiste en transferir el control a una etiqueta switch-case específica o a la etiqueta predeterminada de una instrucción switch. La instrucción goto es útil para salir de bucles de varios niveles de anidamiento. La instrucción if selecciona una instrucción para ejecución en base al valor de una expresión Boolean. Si se desea ejecutar más de una instrucción, es posible ejecutar varias instrucciones en forma condicional al incluirlas en bloques mediante {} La palabra clave implicit se utiliza para declarar un operador de conversión de tipo implícito definido por el usuario. Utilícela para permitir conversiones implícitas entre un tipo definido por el usuario y otro tipo, si existen garantías de que la conversión no provocará la pérdida de datos. La palabra clave int denota un tipo integral que almacena valores según el tamaño. Las variables de tipo int se pueden declarar e inicializar. Una interfaz contiene solo las firmas de métodos, propiedades, eventos o indizadores. Una clase o struct que implementa la interfaz debe implementar los miembros de la interfaz que se especifican en la definición de interfaz. En el ejemplo siguiente, la clase ImplementationClass debe implementar un método denominado SampleMethod que no tenga ningún parámetro y devuelva void. Comprueba si un objeto es compatible con un tipo determinado. La palabra clave is genera una advertencia en tiempo de compilación si se sabe que la expresión siempre será true o siempre será false, pero normalmente evalúa la compatibilidad de tipos en tiempo de ejecución. La palabra clave lock marca un bloque de instrucciones como una sección crucial, para lo cual utiliza el bloqueo de exclusión mutua de un objeto, la ejecución de una instrucción y, posteriormente, la liberación del bloqueo. Esta garantiza que un subproceso no va a entrar en una sección crítica del código mientras otro subproceso se encuentre ya en esta sección. La palabra clave new se puede utilizar como operador, modificador o restricción. Operador: Se utiliza para crear objetos e invocar constructores. Modificador: Se utiliza para ocultar un miembro heredado de un miembro de clase base. Restricción: Se utiliza para restringir tipos que se podrían utilizar como argumentos para un parámetro de tipo en una declaración genérica. Este es un literal que representa una referencia nula, es decir, que no apunta a ningún objeto. null es el valor predeterminado de variables de tipo referencia. El modificador override es necesario para ampliar o modificar la implementación abstracta o virtual de un método, propiedad, 96 | P á g i n a

indizador o evento heredado. El método invalidado por una declaración override se conoce como método base invalidado. El método base reemplazado debe tener la misma firma que el método override.

params

private

protected

public

return

stackalloc

static

Este permite especificar un parámetro de método que acepta un número variable de argumentos. Puede enviar una lista separada por comas de argumentos del tipo especificado en la declaración de parámetro o una matriz de argumentos del tipo especificado. También puede no enviar ningún argumento. Es un modificador de acceso de miembros. El acceso de tipo private corresponde al nivel de acceso más restrictivo. Los miembros privados sólo son accesibles dentro del cuerpo de la clase o struct en los que se declaran Es un modificador de acceso a miembros. Un miembro protegido es accesible dentro de su clase y por instancias de clases derivadas. Encontrará una comparación de protected con los otros modificadores de acceso en Niveles de accesibilidad. Los miembros de un struct no se pueden proteger, ya que el struct no se puede heredar. Es un modificador de acceso para tipos y miembros de tipos. El acceso de tipo public corresponde al nivel de acceso menos restrictivo. No existen restricciones para obtener acceso a los miembros públicos. La instrucción return termina la ejecución del método en el que aparece y devuelve el control al método que realizó la llamada. También puede devolver un valor opcional. Si el método es del tipo void, la instrucción return se puede omitir. Si la instrucción return está incluida en un bloque try, el bloque finally, si existe, se ejecutará antes de que el control se devuelva al método de llamada La palabra clave stackalloc se utiliza en un contexto de código no seguro para asignar un bloque de memoria en la pila. Dado que intervienen los tipos de puntero, stackalloc requiere el contexto unsafe. El uso de stackalloc habilita automáticamente las características de detección de saturación del búfer en Common Language Runtime (CLR). Este se utiliza para declarar un miembro estático, que pertenece al propio tipo en vez de a un objeto específico. El modificador static puede utilizarse con clases, campos, métodos, propiedades, operadores, eventos y constructores, pero no puede utilizarse con indizadores, destructores o tipos que no sean clases. No se puede hacer referencia a un miembro estático por medio de una instancia. En vez de ello, se debe hacer referencia por medio del nombre de tipo

97 | P á g i n a

string

Switch case

this

throw

Try-Finally

unchecked

virtual

void

El tipo string representa una secuencia de cero o más caracteres Unicode. string es un alias de String en .NET Framework. Aunque string es un tipo de referencia, los operadores de igualdad (== y !=) se definen para comparar los valores de objetos string, no las referencias. De esta forma, es más intuitivo comprobar la igualdad entre cadenas. Switch es una instrucción de control que selecciona una sección del modificador para ejecutar desde una lista de candidatos. Este puede incluir un número cualquiera de secciones del modificador y cada sección puede tener una o más etiquetas case. Sin embargo, las etiquetas de dos casos pueden contener el mismo valor constante. La palabra clave this hace referencia a la instancia actual de la clase y también se utiliza como modificador del primer parámetro de un método de extensión. Ejemplo: Pasar un objeto como parámetro a otros métodos La instrucción throw se utiliza para señalizar la aparición de una situación anómala (excepción) durante la ejecución del programa. Normalmente, la instrucción throw se utiliza junto con las instrucciones try-catch o try-finally. El bloque finally es útil para limpiar cualquier recurso asignado en el bloque try, así como también para ejecutar cualquier código que deba ejecutarse incluso si hay una excepción. El control se transfiere siempre al bloque finally independientemente de cómo finalice el bloque try. finally se emplea para asegurar la ejecución de un bloque de instrucciones sin importar cómo finaliza el bloque try anterior Este se utiliza con el fin de suprimir la comprobación de desbordamiento para operaciones aritméticas y conversiones de tipo integral. Si se quita el entorno unchecked, se produce un error de compilación. Se puede detectar el desbordamiento en tiempo de compilación porque todos los términos de la expresión son constantes. De forma predeterminada, se suprime la comprobación de desbordamiento de las expresiones que contienen términos no constantes en tiempo de compilación y tiempo de ejecución. La palabra clave virtual se utiliza para modificar un método, propiedad, indizador o declaración de evento y permite invalidar cualquiera de estos elementos en una clase derivada. La implementación de un miembro virtual puede reemplazarse por un miembro de reemplazo de una clase derivada. Cuando se utiliza como tipo de valor devuelto por un método, void especifica que el método no devuelve ningún valor. No se permite utilizar void en la lista de parámetros de un método. Un método que no utiliza parámetros y que no devuelve ningún valor se declara del siguiente modo void SampleMethod(); Void es un alias para el tipo System.Void de .NET Framework.

98 | P á g i n a

volatile

while

La palabra clave volatile indica que varios subprocesos que se ejecutan a la vez podrían modificar un campo. Los campos que se declaran como volatile no están sujetos a optimizaciones del compilador que suponen el acceso por un subproceso único. Esto garantiza que el valor más actualizado está en todo momento presente en el campo. El modificador volatile suele utilizarse para un campo al que tengan acceso varios subprocesos sin utilizar la instrucción lock para serializar el acceso. La instrucción while ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una expresión especificada se evalúa como false. Un bucle while se puede terminar cuando una instrucción break, goto, return o throw transfiere el control fuera del bucle. Para pasar el control a la siguiente iteración sin salir del bucle, use la instrucción continue.

99 | P á g i n a

CAPITULO 3: USO DE CONTROLES Y METODOLOGÍA DE DESARROLLO

100 | P á g i n a

ACTIVIDAD N°:

24

FECHA:

02/05/2012 - 03/05/2012

Con la ayuda de las lecturas realizadas: Lectura complementaria: “La programación Orientada a Objetos”. Cap. 9, pág. 339 – 343, del libro Programación Visual Fox PRO 6.0 Paso a Paso. Editorial Macro. Rubén Luna Villavicencio. 1era. Edición.

TEMA:

Lectura complementaria: “Conceptos Fundamentales de Orientación a Objetos”. Capítulo 15. pág. 575 – 609, del libro Fundamentos de Programación: Algoritmos, Estructura de Datos y Objetos. Mc. GrawHill Liste las palabras claves y trate de darle una breve descripción a cada una de estas.

UNIDAD N° 3.1:

CLASES Y MÉTODOS

OBJETIVO:

Establecer los beneficios de utilizar programación orientada a objetos Establecer y utilizar programación modular de eventos Diseñar programas modulares

PROBLEMA: INDICADOR DE EVALUACIÓN:

Desarrollo de Sistemas informáticos que no son modulares y que permitan alto acoplamiento y baja cohesión. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

101 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Con la ayuda de las lecturas realizadas:

Liste las palabras claves y trate de darle una breve descripción a cada una de estas. Orientada Objetos Clase Agrupar Reutilizar Sobrescribe La programación orientada a objetos es lo que se conoce como un paradigma o modelo de programación, es una forma de programar, una manera de plantearse la programación. Es aquella que representa las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos. Los objetos posee sus propias características o datos que determinan su comportamiento, además posee sus propios métodos o código asociado, los cuales van a responder a las acciones que se den sobre dicho objeto. La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. Las clases tienes las siguientes características: Encapsulamiento es la agrupación de los datos y el código asociado a una determinada clase ocultando de esta manera la complejidad que ésta pueda tener. Herencia es aquella que nos permite reutilizar el código de manera fácil y ordenada para de esta manera ahorrar recursos y espacio. La herencia se produce al crear subclases dentro de una clase.

102 | P á g i n a

Polimorfismo consiste en que varios objetos que tengan distintas clases pero los mismos métodos o propiedades con el mismo nombre se puede establecer. Este tiene relación con la herencia ya que se sobrescribe.

Expresa la relación que existe entre Métodos, Clases y el objeto. Tanto objetos, métodos y clases están relacionadas entre sí ya que cada uno se contiene. Un Objeto es aquel que tiene característica y métodos ya que gracias a esto responde a las acciones que debe realizar y un objeto es la instancia de una clase

103 | P á g i n a

ACTIVIDAD N°:

25

TEMA:

Revisar las propiedades de los controles y determinar para qué sirve, cómo funcionan y cuáles son los posibles valores que pueden contener. Realizar un informe donde explique las propiedades de los controles, e identificar aquellas propiedades que se utilizan para varios controles. Tome en cuenta los que usted considera más importantes y que le servirán para su Proyecto Final.

UNIDAD N° 3.1:

CLASES Y MÉTODOS

OBJETIVO:

Establecer los beneficios de utilizar programación orientada a objetos Establecer y utilizar programación modular de eventos Diseñar programas modulares

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

02/05/2012 - 03/05/2012

Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

104 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Estos controles son los más utilizados y los cuales utilizare dentro de mi proyecto.

BUTTON:

Es aquel que realizar una acción al hacer clip dentro del botón. Este tiene las siguientes características.

Name: Nombre del botón con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al botón.

BackgroundImage: Se puede insertar una imagen de fondo al botón.

BackgroundImageLayout: Se puede escoger entre diferentes opciones que cuenta como es centrar, zoom, strech de la imagen.

Enabled: Se puede poner como activo o desactivado el botón.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del botón.

ForeColor: Aquí se cambia el color del texto del botón.

Text: Aquí ponemos un nombre con cual se va identificar los botones hacia el usuario.

105 | P á g i n a

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

LABEL:

Es una etiqueta que permite identificar algo que se va realizar.

Name: Nombre del label con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al label o también podemos ponerlo como transparente para que no se note.

Enabled: Se puede poner como activo o desactivado el label.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del label.

ForeColor: Aquí se cambia el color del texto del label.

Text: Aquí ponemos un nombre con cual se va identificar el label hacia el usuario.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

CHECKBOX:

Este es una casilla de verificación que nos permite escoger entre varios opciones.

106 | P á g i n a

Name: Nombre del checkbox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al checkbox o también podemos ponerlo como transparente para que no se note.

BackgroundImage: Se puede insertar una imagen de fondo al checkbox.

BackgroundImageLayout: Se puede escoger entre diferentes opciones que cuenta como es centrar, zoom, strech de la imagen.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del checkbox.

ForeColor: Aquí se cambia el color del texto del checkbox.

Text: Aquí ponemos un nombre con cual se va identificar el label hacia el usuario.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

COMBOBOX:

Este componente es una lista desplegable con distintas entradas.

Name: Nombre del combobox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al combobox o también podemos ponerlo como transparente para que no se note.. 107 | P á g i n a

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del combobox.

ForeColor: Aquí se cambia el color del texto del combobox.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

Item: Aquí podremos insertar lo elementos que queremos que contenga el combobox.

DATAGRIDVIEW:

Este inserta una tabla que nos permite observar datos tanto ingresado como de la base de datos.

Name: Nombre del datagridview o tabla con cual se va a identificar de los demás al momento de codificar.

Backgroundcolor: Aquí podremos cambiar el color de fondo de la tabla.

BorderStyle: Esta opción permite con los borde cambien su función es decir finos, grueso, 3d.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga

108 | P á g i n a

MENUSTRIP:

Este nos proporción un sistema de menús dentro de un formulario para de esta manera insertas diferentes submenús.

Name: Nombre del menustrip o tabla con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al menustrip o también podemos ponerlo como transparente para que no se note.

BackgroundImage: Se puede insertar una imagen de fondo al menustrip.

Text: Aquí ponemos un nombre con cual se va identificar el label hacia el usuario.

PICTUREBOX:

Nos permite ingresar imágenes.

Name: Nombre del picturebox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al picturebox o también podemos ponerlo como transparente para que no se note.

BorderStyle: Esta opción permite con los borde cambien su función es decir finos, grueso, 3d.

Image: Nos permite ingresar la imagen que queremos captar. 109 | P á g i n a

TEXTBOX:

Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones.

Name: Nombre del textbox con cual se va a identificar de los demás al momento de codificar.

Backcolor: Aquí le daremos color al componente es decir al textbox o también podemos ponerlo como transparente para que no se note.

BorderStyle: Esta opción permite con los borde cambien su función es decir finos, grueso, 3d.

Font: Aquí se cambia la fuente, el estilo y tamaño del texto del textbox.

ForeColor: Aquí se cambia el color del texto del textbox..

Text: Aquí ponemos un nombre con cual se va identificar el textbox hacia el usuario.

110 | P á g i n a

ACTIVIDAD N°:

26

TEMA:

Realizar un ensayo acerca de la creación de base de datos en Sql Server y la conexión en C#, tratando de explicar cuál ha sido su experiencia, dificultades encontradas y cómo logró superarlas, reflexione sobre lo que necesita mejorar.

UNIDAD N° 3.2:

CONEXIÓN A LA BASE DE DATOS CON EL DATAADAPTER

OBJETIVO:

Establecer la estructura de la Base de Datos Seleccionar el DBMS a utilizar

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

07/05/2012 - 08/05/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas e) Identificar, formular y resolver problemas de ingeniería. g) Comunicarse efectivamente

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

111 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CREACION DE BASE DE DATOS: Para crear una base de datos en SQL Server primeramente debemos ya tener instalado el programa. Una vez hecho esto procedemos a crear una nueva base de datos. Para realizar esto, al lado derecho podemos encontrar todos los objetos que contiene esta instancia, hay encontraremos una carpeta con el mismo nombre donde haremos clip derecho nueva base de datos, nos aparecerá una nueva pantalla donde en la parte superior escribiremos el nombre de nuestra nueva base de datos y haremos clip en aceptar para poder continuar. En la parte superior podemos observar que ya se encuentra el nombre de nuestra base de datos. Una vez creada la base de datos, dentro de esta encontraremos una diversidad de carpetas, entre ellas tablas. Para poder crear las tablas que contendrá nuestra base de datos hacienda_bd haremos clip derecho nueva tabla. Dentro de ella podemos escribir los campos k contendrá esta tabla poniendo las distintas llaves, tipo de valor, etc. Luego procederemos a guardar nuestra tabla designándole su correspondiente nombre y a su sucesivamente creando todas las tablas necesarias que tendrá nuestra base de datos hacienda_bd. Ejemplo: 1.- Abrir el Management Studio

Figura 1. Seleccionar la Herramienta SQL Server Management Studio

Seleccionar la instancia en la que se quiere trabajar, en la figura 2 es la instancia de SQLEXPRESS.

112 | P á g i n a

Figura 2. Conectar a un servidor de bases de datos con el Management Studio

A continuación damos clic en conectar o connect dependiendo si está en español o inglés:

Figura 3. Cuadro de dialogo Management Studio Y listo ya tenemos abierto Microsoft SQL Server Management Studio, el cual servirá para crear bases de datos con sus tablas correspondientes entre otras cosas más, para crear las Bases de datos podemos utilizar los asistentes o realizarlo a través de código SQL, en este primer ejemplo, veamos cómo crear nuestra Base de Datos utilizando la interfaz gráfica. Con el botón derecho (o el botón secundario), pulsar en Bases de datos y del menú seleccionar Nueva base de datos, tal como se muestra en la figura 4.

113 | P á g i n a

Como primer paso debemos hacer click derecho sobre la carpeta de: bases de datos

Después debemos seleccionar la opción de: Nueva base de datos

Figura 4. Crear una nueva base de datos

Entonces se abrirá una ventana en la cual daremos los datos correspondientes para crear nuestra base de datos, el nombre que en este ejemplo se utiliza es MiDB:

114 | P á g i n a

Una vez que seleccionamos la opción de Nueva base de datos aparecerá una ventana como esta En esta ventana asignaremos un nombre a la base de datos Después presionamos Aceptar (OK)

Figura 5. Cuadro de diálogo para ingresar información sobre la base de datos. Damos clic en OK, y listo, nuestra base de datos está creada y aparecerá dentro de la carpeta Base de Datos, pero ahora falta agregarle tablas, procedemos entonces a realizarlo, de la siguiente manera: Extendemos la jerarquía de las carpetas de nuestra base de datos hasta poder ver la carpeta que dice Tables (Tablas), como se muestra en la Figura 6, le damos clic derecho y seleccionamos New Table (Nueva Tabla).

Jerarquía de carpetas

Para crear una tabla en nuestra Base daremos click derecho sobre la Carpeta Tablas ubicada dentro de la base de datos (“MiDB” para el ejemplo) y seleccionaremos “Nueva tabla”

Figura 6. Jerarquía de Carpetas.

Haciendo esto tendremos una ventana como aparece la figura 7, donde podremos ingresar la estructura de nuestra tabla.

115 | P á g i n a

Figura 7. Diseñador de tablas.

En esta ventana empezaremos primero a darle nombre a los campos y el tipo de datos que manejarán, y desde luego si manejan o no valores nulos. En esta ventana agregaremos Todos los campos que Necesitemos en la tabla. Ingresaremos: Nombre de columna – Tipo de dato – Permitir si el valor será nulo

Figura 8. Diseñador de tablas.

También le asignaremos al campo Id la Primary Key

116 | P á g i n a

Al hacer clic en esta opción configuramos el campo seleccionado como llave principal de la tabla

Nota: con esta opción podremos crear las relaciones entre las tablas. (links entre llave principal y llave ajena)

Figura 9. Asignación Clave principal. Con esto, ya tenemos creada una tabla en nuestra base de datos, ahora lo que resta es guardarla con un nombre, para eso daremos clic derecho en la pestaña de dicha tabla (o seleccionamos la opción Archivo del menú principal) y le daremos en Save Table_1 (Grabar Tabla): Click derecho en la pestaña de la tabla

Clic en la opción Save Table 1 (Grabar Tabla1)

Figura 10. Grabar tabla creada. Entonces les damos un nombre a la tabla: Ingrese el nombre que le quiere dar a su tabla

Click en el botón OK para grabar tabla.

Figura 11. Nombre de la tabla a crear.

117 | P á g i n a

Y listo ya hemos creado nuestra tabla en Microsoft SQL Server 2005. Si hacemos clic en el nombre de la tabla creada dentro de la estructura jerárquica de carpetas ubicada en el panel izquierdo, luego clic con el botón derecho y seleccionamos SCRIPT ….., esto permitirá observar el código que se ejecutó para la creación de dicha tabla (se aplica para cualquier objeto de la base de datos que se haya seleccionado). Como lo muestra la Figura 12

Se muestra la codificación SQL para crear dicho objeto.

Clic en el botón secundario del mouse sobre el objeto y seleccionar SCRIPT…

Figura 12. Crear SCRIPT para crear objeto en SQL.

Ahora bien, veamos un ejemplo para crear una base de datos, utilizando comandos SQL. Para esto, en la base de datos que hemos creado, pulsa con el botón derecho del ratón para que te muestre el menú contextual, del que seleccionarás Nueva consulta, tal como puedes ver en la figura 13.

118 | P á g i n a

A lado de esta pestaña se abrirá una nueva para editar código SQL.

Figura 13. Crear una nueva consulta en Management Studio

Eso hará que se muestre una ventana en el panel de la derecha (junto a la ficha Resumen). En la ventana de consulta se puede escribir el código de SQL que se desee para crear los objetos de la base de datos. A continuación se presenta un ejercicio para realizar la creación a través de comandos, para lo cual se presenta un esquema E-R (figura 14), y los códigos que se deben ejecutar:

Figura 14. Modelo E-R, esquema a implementarse 119 | P á g i n a

COMANDOS SQL. Sentencias que se deben ejecutar: --Sentencias para crear base de datos

CREATE DATABASE BANCO GO

--Sentencias para seleccionar base de datos donde se creará la tabla

USE BANCO GO

--Sentencias para crear tabla Cliente

CREATE TABLE CLIENTE (IDCLIENTE VARCHAR(5)PRIMARYKEY,

//Aquí se declara la llave principal

APELLIDOS VARCHAR(30), NOMBRES VARCHAR(30)) GO

--Sentencias para crear tabla Cuenta

CREATE TABLE CUENTA (IDCLIENTE VARCHAR(5), ajena

//Aquí se declara campo para llave

IDCUENTA VARCHAR(5)PRIMARYKEY,

//Aquí se declara la llave principal

SALDO FLOAT, DIVISA VARCHAR(20)) GO

--Sentencias para crear tabla Movimiento

120 | P á g i n a

CREATE TABLE MOVIMIENTO (IDCUENTA VARCHAR(5), ajena

//Aquí se declara campo para llave

IDMOVIMIENTO VARCHAR(5)PRIMARYKEY, //Aquí se declara la llave principal TIPO VARCHAR(2), MONTO FLOAT, FECHA DATETIME) GO

--Sentencias para crear llaves ajenas en la tabla Cuenta

ALTER TABLE CUENTA ADD FOREIGN KEY(IDCLIENTE)REFERENCES CLIENTE GO

--Sentencias para crear llaves ajenas en la tabla Movimiento

ALTER TABLE MOVIMIENTO ADD FOREIGN KEY(IDCUENTA)REFERENCES CUENTA GO

Una vez escrito el código en la ventana de consultas, pulsar el botón Ejecutar (ver la figura 15), o bien pulsa la tecla F5.

121 | P á g i n a

Figura 15. Ejecutar la consulta Esto creará la Base de datos Banco y sus tablas Clientes, Cuentas y Movimientos. Si expande la base de datos y pulsa en Tablas, se observará que ya están las tablas creadas, parecido a como lo muestra la Figura 16.

Figura 16. La tabla de Clientes ya está creada

122 | P á g i n a

Ahora vamos a añadir unos cuantos datos. Para ello vamos a utilizar el comando INSERT, y colocarlo dentro de la ventana consulta. --Sentencias para insertar registros en la tabla Cliente

INSERT INTO CLIENTE VALUES ('00001','CORDOVA','WLIMER') GO INSERT INTO CLIENTE VALUES ('00002','ACOSTA','ANA') GO INSERT INTO CLIENTE VALUES ('00003','CORDOVA','DANIELA') GO

--Sentencias para insertar registros en la tabla Cuenta

INSERT INTO CUENTA VALUES ('00001','00011',200,'DOLARES') GO INSERT INTO CUENTA VALUES ('00002','00012',150,'DOLARES') GO INSERT INTO CUENTA VALUES ('00003','00013',300,'DOLARES') GO

--Sentencias para insertar registros en la tabla Movimiento

INSERT INTO MOVIMIENTO VALUES ('00011','00111','D',20,'24/10/2005') GO INSERT INTO MOVIMIENTO VALUES ('00012','00112','R',100,'05/05/2000') GO INSERT INTO MOVIMIENTO VALUES ('00013','00113','D',50,'25/08/2006') GO

Al igual que con la creación, una vez escrito el código en la ventana de consultas, pulsar el botón Ejecutar (ver la figura 15), o bien pulsa la tecla F5 y se añadirán 123 | P á g i n a

estos datos. También se puede grabar un archivo de texto y ejecutarlo en cualquier momento.

abrirlo para

Otra opción es abrir la tabla de Clientes para que muestre lo que tiene, se mostrará algo parecido a lo que se muestra en la figura 17. En esta ventana, el último registro en blanco, permite adicionar nuevos registros.

Registros ingresados en la tabla Clientes

Este espacio permite adicionar nuevos registros.

Figura 17. Los datos que se añadieron a la tabla de Clientes

CONEXION CON C# Una vez realizada la debida instalación de Microsoft Visual Studio c#, podemos crear un proyecto donde dentro de este crearemos un respectivo formulario. A continuación procedemos a enlazar la base de datos, haciendo clip en el menú data y escogemos data source, hay nos aparecerá un ventanita donde haremos clip dentro de ella en la parte que dice agregar base de datos. Aparecerá una ventana nueva donde haremos clip en base de datos siguiente, aquí escogeremos la base de datos donde después nos aparecerá todo lo referente con lo que trabaja esa base de datos. Haremos clip en tablas y se desplegaran todas las que contiene y señalaremos las tablas con las cuales vamos a trabajar y se cerrara esa pequeña ventana. Ahora en la ventana principal de c# a lado izquierdo podremos visualizar las tablas con sus respectivos campos. Dentro de cada tabla al hacer clic podemos hacer que los datos de esta se visualicen en una tabla o como detalles. Si es como detalle dentro de cada campo 124 | P á g i n a

al hacer clip podemos escoger en donde quiere que lo hagan es decir si en un label, textbox, etc. Una vez realizado todo esto procedemos a arrastrar la tabla hacia el formulario donde automáticamente se colocaron todos los campos correspondientes. De ahí solo se procede a cambiar la interfaz, colores, letra, etc. Ejemplo: Enlazar una Base de Datos SQL Server a los Formularios Visual Studio 2008 proporciona a los desarrolladores un conjunto de herramientas y asistentes que facilitan enormemente el trabajo y ahorran grandes cantidades de tiempo en el desarrollo de diferentes aplicaciones. De los asistentes o herramientas que nos proporcionan mayor rendimiento en el entorno de desarrollo rápido de Microsoft, está la que nos permite trabajar con fuentes de datos como los datos de una aplicación típica maestro detalle. Entre otras cosas, nos centraremos en esta acción, que será la que veremos en detalle a continuación. ¿Qué son los datos Maestro Detalle? El desarrollador de aplicaciones que debe trabajar con datos y fuentes de datos relacionadas entre sí, encuentra con frecuencia problemas de desarrollo en aplicaciones con datos interrelacionados. Además, este tipo de aplicaciones, consumen gran parte del tiempo de desarrollo y son por lo general, acciones repetitivas. Supongamos como ejemplo general, la tabla Socios de un videoclub. Además, relacionemos los socios del videoclub, con una tabla Alquileres, para saber si un socio determinado tiene películas alquiladas, y en ese caso, saber cuáles. Este sencillo ejemplo, es un claro exponente de una aplicación que relaciona datos maestro detalle. Ambas tablas deben estar relacionadas para recopilar la información que se necesite en un momento dado. Los datos maestros serían expuestos por los socios del videoclub, mientras que los datos detalle estarían relacionados con los datos de los alquileres de los socios. En nuestro caso, vamos a cambiar las palabras maestro y detalle por padre e hijo, y a partir de ahora, nos referiremos a padre como la tabla Socios, e hijo como la tabla Alquileres. De esta forma, ubicaremos sin problemas ambos conceptos dentro del entorno de Visual Studio 2008, ya que éste tiene alguna ligera connotación que podría infundirnos a error como observará más adelante. 125 | P á g i n a

Por suerte, Visual Studio 2008 nos proporciona un conjunto de herramientas, que hace que realizar una aplicación Windows con todas las características de una aplicación maestro detalle, sea un auténtico juego de niños, que nos llevará aproximadamente un minuto de nuestro tiempo como mucho. Configurando la fuente de datos Trabajar con fuentes de datos requiere como tarea inicial, que tengamos listo y preparado un origen de fuentes de datos válido. Para esta tarea, deberemos configurar la fuente de datos que vamos a utilizar, algo que vamos a aprender a hacer a continuación. Configurando el origen de la fuente de datos Iniciaremos una nueva aplicación Windows con Visual Studio 2008 y seleccionaremos el menú Data > Show Data Sources (Datos > Mostrar orígenes de datos) como se indica en la figura 1.

Figura 1. Menú para mostrar los orígenes de datos

En este punto, aparecerá una ventana como la que se muestra en la figura 2.

Figura 2. Ventana de orígenes de datos 126 | P á g i n a

Como podemos apreciar, la ventana no tiene por defecto ningún origen de datos asignado, además, esta ventana inicialmente, no está anclada a ningún sitio del entorno. Para situarla en un lugar específico del entorno, haga clic sobre la ventana y arrástrela sobre la parte en la que desee situarla, como se indica por ejemplo, en la figura 3.

Figura 3. La ventana orígenes de datos podemos situarla dónde deseemos dentro de Visual Studio 2008

En este punto, la ventana de orígenes de datos, quedará anclada en el entorno de desarrollo, como se muestra en la figura 4.

127 | P á g i n a

Figura 4. La ventana orígenes de datos anclada en Visual Studio 2008

Cada uno, puede situar esta ventana dónde considere oportuno. En mi caso la he situado entre las ventanas del Explorador de soluciones y de Propiedades, pero podemos situarla dónde consideremos oportuno. Sobre la configuración del origen de datos, haga clic sobre la opción Agregar nuevo origen de datos... como se indica en la figura 5.

Figura 5. Opción para agregar un nuevo origen de datos

128 | P á g i n a

Aparecerá una ventana como la que se muestra en la figura 6 en la cual indicaremos el lugar de dónde la aplicación obtendrá los datos, y que en nuestro caso será de una Base de datos.

Figura 6. Como tipo de origen de datos elegiremos una Base de datos

Una vez seleccionado la opción de Base de datos como tipo de origen de datos, presionaremos el botón Siguiente. En la siguiente ventana, elegiremos la conexión de la base de datos que vamos a utilizar, o presionaremos sobre el botón Nueva conexión... si no tenemos seleccionada la conexión que queremos utilizar, como se muestra a continuación en la figura 7.

Hacer clic en el botón New Connection… para crear una nueva conección.

Figura 7. Ventana dónde elegimos la conexión de datos 129 | P á g i n a

Aparecerá una nueva ventana denominada Agregar conexión, aquí podemos observar la opción Origen de datos, si esta en blanco o contiene otro origen diferente, debemos hacer clic en el botón Cambiar, tal como lo muestra la figura 8.

Figura 8. Ventana para seleccionar el origen de datos.

Al hacer clic en ese botón aparece una ventana con la lista de orígenes de datos disponibles para el proveedor .NET Framework, de esta lista se debe seleccionar el dbms donde se ha implementado la base de datos, en este caso seleccionamos Microsoft Sql Server. Y hacemos clic en Aceptar, como lo muestra la figura 9.

Primero seleccionamos el origen de datos Microsoft SQL Server y luego hacemos clic en el botón Aceptar

Figura 9. Lista de orígenes de datos.

Retornamos a la ventana anterior (Agregar conexión), aquí seleccionaremos nuestro Servidor, si no se encuentra el nombre del servidor en la lista, haga clic 130 | P á g i n a

en el botón Actualizar, o solicitar información del nombre del servidor al administrador de la Red. A continuación seleccionaremos nuestra Base de Datos (para el ejemplo se está utilizando la base de datos denominada “Negocio”), para asegurarse de que la conexión se está estableciendo, probaremos la Conexión (Tiene que funcionar, por lo que debe aparecer un mensaje indicando esta situación), por último hacemos clic en el botón aceptar, como lo muestra la figura 10.

Figura 10. Ventana dónde se muestra los datos que elegimos para la conexión

Con esto regresará a la ventana anterior, como dato informativo por el momento, hacemos clic en el “+” de cadena de conexión como lo demuestra la figura 11. Esta cadena la podemos copiar y podrá ser utilizada dentro de la codificación cuando no se desee utilizar este asistente, por lo que en este caso luego de copiar se presiona Cancelar. Este apartado lo veremos más adelante.

131 | P á g i n a

Figura 11. Ventana dónde se muestra la cadena de conexión utilizada.

Regresando a nuestro tema, en la figura 12, podemos ver cómo hemos establecido la conexión con nuestra fuente de datos, que utilizaremos en nuestro ejemplo de creación de la aplicación de acceso a datos maestro detalle.

Figura 12. Ventana dónde se muestra la conexión de datos que elegimos

A continuación, haremos clic en el botón Siguiente. En la nueva ventana que aparece ahora dentro del asistente para la creación del origen de datos, 132 | P á g i n a

indicaremos el nombre de la cadena de conexión que crearemos. En nuestro caso, no modificaremos el nombre de la cadena de conexión, dejándola por defecto como se muestra en la figura 13.

Figura 13. Asignamos un nombre para el nombre de la cadena de conexión

A continuación, haremos clic sobre el botón Siguiente. En este punto, el asistente se conecta a la base de datos para recuperar la información de la base de datos y mostrarla en la ventana del asistente como se muestra en la figura 14.

Figura 14. Ventana con los objetos de la base de datos seleccionada

A continuación, despliegue el objeto Tablas y seleccione las tablas Alquileres y Socios como se indica en la figura 15. 133 | P á g i n a

Figura 15. Selección de los objetos de la base de datos seleccionada

Una vez que hemos seleccionado los objetos de la base de datos, haremos clic sobre el botón Finalizar para que el asistente concluya las opciones añadidas al asistente. La ventana del origen de datos, quedará ahora configurado de una forma similar a la que se presenta en la figura 16.

Figura 16. Ventana de origen de datos con la configuración añadida

A partir de aquí, deberemos preparar las tablas del origen de datos para que se comporten como auténticos datos e informaciones maestro detalle. Preparando el origen de datos Ya hemos aprendido a añadir nuestro origen de datos, y ahora aprenderemos a prepararlo para poder utilizarlo posteriormente en la aplicación Windows. 134 | P á g i n a

La preparación del origen de datos, nos permitirá seleccionar que tabla o datos queremos que actúen como maestro y cuales como detalle, o dicho de otra forma, que datos queremos que sean padre y cuales hijo. Nuestro objetivo principal es mostrar la tabla Alquileres como tabla hijo y la tabla Socios como padre de la tabla anterior. Prepararemos e incrustaremos primero la tabla Socios dentro del formulario Windows como Detalle de la información, y posteriormente insertaremos la tabla Alquileres dentro del formulario. Por último, asignaremos alguna relación que permita trabajar con las dos tablas en nuestro formulario Windows sin perder la conexión entre ambas tablas y permitiéndonos acceder a la información que nos proporciona dicha relación. Preparando la tabla padre Lo primero que haremos será preparar la tabla padre para poderla añadir al formulario Windows. Por esa razón, haremos clic sobre la tabla Socios de la ventana de Orígenes de datos como se indica en la figura 17.

Figura 17. Tabla Socios de la ventana de orígenes de datos

En la ventana de Orígenes de datos y en concreto con la tabla Socios desplegada, centraremos nuestra atención en el campo NIF como se indica en la figura 18.

Figura 18. Campo NIF de la tabla Socios

Pulse sobre la lista desplegable que aparece a la derecha del campo NIF y seleccione la opción Label como se indica en la figura 19.

135 | P á g i n a

Figura 19. Lista desplegable con la opción Label seleccionada como campo de la tabla desplegada

En este caso, la ventana de Orígenes de datos quedará informada tal y como se indica en la figura20.

Figura 20. Campo NIF modificado en la ventana de Orígenes de datos

A continuación, haremos clic sobre la tabla Socios como se indica en la figura 21, y posteriormente presionaremos sobre la lista desplegable que aparece a la derecha de la tabla.

Figura 21. Tabla Socios seleccionada en la ventana de Orígenes de datos

Si hacemos clic sobre la lista desplegable, aparecerá una lista de opciones o posibilidades, para indicar cómo queremos que sean los campos de la tabla

136 | P á g i n a

seleccionada con respecto a qué tipo de controles queremos que sean. Esto es lo que se indica en la figura 22.

Figura 22. Lista desplegable de la tabla Socios de la ventana de Orígenes de datos

Por defecto, una tabla queda determinada con un icono que representa el control DataGridView, aunque se puede modificar la representación que deseamos tengan los datos dentro de un formulario seleccionando cualquiera de las opciones que tenemos de la lista desplegable. Estas opciones pueden ser cualquiera de las siguientes: Representa los datos volcados dentro de un control DataGridView Representa los datos volcados dentro de controles estándar como TextBox u otros controles para reflejarla como Detalle de la información No representa ningún control como tipo de control de volcado de datos En el caso de la tabla Socios que usaremos como tabla padre, cambiaremos la representación por defecto de DataGridView para indicarle que nos represente la información en controles, tal y como se indica en la figura 23.

Figura 23. Tabla Socios seleccionada en la ventana de Orígenes de datos como Detalle

Ahora que tenemos la tabla maestra ya preparada, pasaremos a preparar la tabla hija.

137 | P á g i n a

Preparando la tabla hija Ahora que ya tenemos preparada la tabla tabla padre, prepararemos la tabla hija de los alquileres de las películas de video, para poder usar su información dentro del formulario Windows. Por esa razón, haga clic sobre la tabla Alquileres de la ventana de Orígenes de datos como se indica en la figura 24.

Figura 24. Tabla Alquileres de la ventana de orígenes de datos

Dentro de la ventana de Orígenes de datos y en concreto de la tabla Alquileres desplegada, centraremos nuestra atención en el campo AlquilerID y SocioNIF como se indica en la figura 25.

Figura 25. Campos AlquilerID y SocioNIF de la tabla Alquileres

Sobre el campo AlquilerID y SocioNIF, haremos una pequeña modificación. Pulse sobre la lista desplegable que aparece a la derecha del campo AlquilerID y SocioNIF y seleccione la opción Label como se indica en la figura 26.

138 | P á g i n a

Figura 26. Lista desplegable de opciones de un campo de la tabla desplegada

De esta manera, el campo AlquilerID y SocioNIF quedarán modificados en la ventana Orígenes de datos como se indica en la figura 27.

Figura 27. Campo AlquilerID y SocioNIF modificados en la ventana de Orígenes de datos

A continuación, haremos clic sobre la tabla Alquileres como se indica en la figura 28, y posteriormente presionaremos sobre la lista desplegable que aparece a la derecha de la tabla.

Figura 28. Tabla Alquileres seleccionada en la ventana de Orígenes de datos

Nos aseguraremos que está seleccionada la opción DataGridView que es la que aparece por defecto. Esto es lo que se indica en la figura 29. 139 | P á g i n a

Figura 29. En la tabla Alquileres, nos aseguraremos de seleccionar la opción DataGridView

Una vez que tenemos las tabla maestra y detalle preparadas para utilizarlas, las añadiremos al formulario Windows para que tengan el funcionamiento esperado. Incrustando los datos maestro detalle Ya sabemos cómo crear un origen de datos, también sabemos cómo preparar los datos maestro y detalle, y por último, lo que nos queda es insertar esos datos en el formulario, y relacionar todos sus datos para que funcionen de la forma esperada. A continuación, veremos cómo llevar a cabo esta tarea y aprenderemos a hacerlo posible de forma muy rápida y sencilla. Incrustando la tabla padre en el formulario Nuestra primera acción, será incrustar en el formulario los datos o tabla padre, que en nuestro caso es la formada por la tabla Socios. Para situar los datos de la tabla Socios dentro de un formulario y en concreto como una información de detalle, bastará con arrastrar y soltar la tabla Socios sobre el formulario como se indica en la figura 30.

Figura 30. Para presentar la información como detalle, arrastraremos la tabla Socios de la ventana Orígenes de datos sobre el formulario Windows

140 | P á g i n a

Observaremos que Visual Studio 2008, generará por nosotros un conjunto de componentes y controles, que por defecto tendrá una apariencia similar a la que se presenta en la figura 31.

Figura 31. Controles y Componentes de la tabla maestra añadidos al formulario Windows

Observe por un momento, que el campo NIF que declaramos como Label en la ventana de Orígenes de datos, aparece como tal en el formulario, tal y como se indica en la figura 32.

Figura 32. Campo NIF de la tabla, representado como un control Label en el formulario Windows

Si ejecutamos nuestra aplicación, observaremos que esta actúa como una típica aplicación de acceso a datos que nos permite navegar a través de los campos de la tabla Socios, tal y como se indica en la figura 33.

141 | P á g i n a

Figura 33. Aplicación en ejecución de la tabla de detalle incrustada en el formulario Windows

A continuación, insertaremos en el formulario la tabla Alquileres y relacionaremos ambas tablas para que se muestren los datos relacionados, dentro del formulario Windows. Incrustando la tabla hija en el formulario Ya tenemos la tabla padre insertada en nuestro formulario Windows. Nuestra segunda acción, será la de incrustar en el formulario los datos o tabla hoja, que en nuestro caso es la formada por la tabla Alquileres, la cual además, posee una relación entre campos con la tabla Socios insertada anteriormente. Para llevar a cabo esta acción arrastraremos y soltaremos la tabla Alquileres sobre el formulario como se indica en la figura 34.

Figura 34. Para presentar la información de la tabla Alquileres, arrastraremos la tabla de la ventana Orígenes de datos sobre el formulario Windows

142 | P á g i n a

Observe que Visual Studio 2008, genera por nosotros más componentes y controles, que por defecto tendrá una apariencia similar a la que se presenta en la figura 35.

Figura 35. Controles y Componentes de la tabla maestra y detalle añadidos al formulario Windows

Como podemos observar, el entorno de trabajo ha hecho por nosotros el trabajo más complejo para representar los datos de forma rápida y sencilla. El esquema de datos tipados, aparecía ya en nuestro proyecto cuando asignamos el correspondiente origen de datos. Ahora lo que ha ocurrido, es que al arrastrar y soltar la tabla padre Socios de la ventana de Orígenes de datos, en el entorno se ha añadido un componente de nombre MSDNVideoDataSet que es el que permitirá relacionar el DataSet tipado con nuestros datos. Este componente será usado por la relación maestro detalle de las dos tablas añadidas al formulario. En la figura 36, podemos ver el esquema añadido a nuestro proyecto, y el componente del que estamos hablando.

Figura 36. Esquema del DataSet tipado añadido al proyecto y su componente de relación

143 | P á g i n a

Ejecute la aplicación y observe el comportamiento de la misma. Observará por lo tanto, que los datos entre detalle y maestra, no están relacionados. Si navegamos a través de los datos de detalle a través del objeto SociosBindingNavigator, el control DataGridView no representa la relación de los datos seleccionados. Esto es lo que se muestra en la figura 37.

Figura 37. Ejecución de la aplicación confirmando que los datos mostrados no están relacionados

A continuación, la tarea que nos queda para completar el correcto funcionamiento de nuestra aplicación, es la de relacionar la tabla detalle y la tabla maestra entre sí, para que los datos que se muestran en la aplicación, estén relacionados entre sí. Relacionando la tabla padre con la tabla hija La tarea más sencilla es la de relacionar la tabla detalle con la tabla maestra. Es una tarea sencilla, porque Visual Studio 2008 nos proporciona las herramientas necesarias para simplificar al máximo esta tarea. Para llevar a cabo esta tarea, haga clic sobre el control DataGridView que corresponde a los datos de la tabla maestra, y acceda a la ventana de Propiedades. Dentro de la ventana de Propiedades, acceda a la propiedad DataSource como se indica en la figura 38.

144 | P á g i n a

Figura 38. Propiedad DataSource del control DataGridView de la información maestra

Despliegue esta propiedad, y de la lista desplegable que aparece, seleccione la opción FK_Alquileres_Socios como se indica en la figura 39.

Figura 39. Asignación de la clave de relación entre las tablas

Cuando se asigna el campo de relación de las tablas, dentro de la aplicación se añade esta relación para que cuando naveguemos entre los datos de la tabla Socios aparezca toda la información de la tabla Alquileres relacionada con la tabla Socios. Esto de lo que hablamos, está supeditado por el componente FK_Alquileres_SociosBindingSource que es lo que se indica en la figura 40.

145 | P á g i n a

Figura 40. Controles y componentes incluido el de relación entre tablas, añadidos al formulario Windows

Para finalizar, ejecutaremos nuestra aplicación y comprobaremos que el funcionamiento de esta, incluida la relación entre tablas, funciona como esperábamos. En la figura 41, podemos observar el comportamiento de nuestra aplicación en ejecución.

Figura 41. Aplicación en ejecución, mostrando la correcta relación entre las tablas

146 | P á g i n a

Manipulando los datos maestro - detalle Obviamente, los datos maestro detalle no nos sirve únicamente para insertar las tablas de datos en un formulario, mostrarlos y navegar por ellos. Además de esto, podemos también manipular los datos maestro detalle, modificarlos, actualizarlos, borrarlos, sin hacer ninguna acción adicional. El control BindingNavigator ya proporciona todas las características necesarias para realizar estas acciones. Podemos personalizar el control para permitir o denegar estas acciones. Además, dentro de la ventana de Orígenes de datos, podemos seleccionar diferentes campos de las tablas y cambiar el tipo de control en el que queremos representar sus datos. A continuación veremos un breve ejemplo de cómo manipular datos para que nos sirva de aprendizaje de cómo hacer esto posible. Modificando datos Ejecute la aplicación de ejemplo que hemos diseñado hasta ahora y sitúese en alguno de sus campos. Centrándonos en la información de la tabla Socios, cambiaremos un campo determinado, como el que se muestra en la figura 42.

Figura 42. Modificaremos el valor de un campo para que nos sirva de ejemplo

Acto seguido, cuando hayamos realizado la modificación, haremos clic sobre la opción de Guardar datos, tal y como se muestra en la figura 43. 147 | P á g i n a

Figura 43. Opción del control BindingNavigator para guardar los datos modificados

Como vemos, la manipulación de datos es realmente sencilla y en la relación de datos mostrada, no tiene porqué presentarnos ninguna dificultad. Insertando y eliminando datos Si queremos agregar datos, deberemos hacer clic sobre la opción Agregar nuevo del control BindingNavigator como se muestra en la figura 44.

Figura 44. Añadir un registro nuevo es realmente sencillo

De la misma manera funciona el mecanismo para eliminar un registro, tal y como se muestra en la figura 45.

Figura 45. Eliminar un registro de forma rápida

Recuerde presionar el icono si quiere que los cambios y modificaciones realizadas se mantengan. Pulsando sobre ese icono, la acción de manipulación de datos se lanza contra la base de datos. Reflexión: Bueno al momento de realizar la debida conexión con la base de datos si tuve algunos problemas porque no recordaba ciertas pasos y me di cuenta que había seleccionado mal algo ya que ese era el problema del porque no se cargaban las tablas de mi base de datos. Pero pude resolverlo viendo unos videos que se facilitaron en la clase de programación para conectar la base de datos y así poder seguir paso a paso para realizar una buena conexión. 148 | P á g i n a

ACTIVIDAD N°:

27

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de la programación de botones de navegación

UNIDAD N° 3.3, 3.4:

3.3 PROGRAMACIÓN DE MÉTODOS 3.4 PROGRAMACIÓN DE BOTONES DE NAVEGACIÓN

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

14/05/2012 - 15/05/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

149 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

PROGRAMACIÓN DE METODOS HIDE Este método permite ocultar cualquier tipo de componente que este dentro del formulario: Ejemplo: Formulario normal:

private void button1_Click(object sender, EventArgs e) { imgmetodos.Hide(); lbmetodos.Hide(); btmetodos.Hide(); }

150 | P á g i n a

Formulario Aplicando Hide:

SHOW Este método permite mostrar cualquier tipo de componente que este dentro del formulario: Ejemplo: Formulario Aplicando Show:

151 | P á g i n a

private void button2_Click(object sender, EventArgs e) { imgmetodos.Show(); lbmetodos.Show(); btmetodos.Show(); }

FOCUS Este método permite poner la selección en el objeto especificado, es decir, el foco se posiciona en el control que se especificó: Ejemplo: Formulario Aplicando Focus:

private void button3_Click(object sender, EventArgs e) { btmetodos.Focus(); }

152 | P á g i n a

CONEXIÓN A BASE DE DATOS A TRAVES DE CÓDIGO CONCEPTOS BASICOS PARA CONECTAR UNA BASE DE DATOS A TRAVES DE CÓDIGO: ADO.NET ¿QUE ES ADO.NET? Responde a las siglas de Microsoft Activex Data Object, es un modelo de conexión y acceso a la base de datos y se caracterizan por: -Trabajar desconectados del origen de datos que se utilicen -El uso de ADO es independiente del lenguaje de programación que se utilice. El modelo de ADO esta dividido en 2 grupos: -Los proveedores de datos o Managed Data Providers -Los contenedores de datos, que aunque están vinculados a los orígenes de datos, son independientes de ellos. NAMESPACES: ADO se basa en los siguientes espacion de nombres de acceso a datos: System.Data: proporciona las clases de acceso a datos generales System.Data.Common, contienen las clases compartidas por los proveedores de datos. System.Data.OleDb, almacena las clases del proveedor de datos OLE DB System.Data.SqlClient, expone las clases del proveedor de datos para SQL Server. Ejemplo:

MANAGED PROVIDERS: El Managed Provider es el proveedor de datos de la plataforma .NET que permite conectar a un origen de datos con una aplicación para recuperar y modificar información, ademas, este proveedor sirve de puente entre el origen de datos y el objeto de ADO más importante, el Dataset.

153 | P á g i n a

Para utilizar los proveedores de acceso a datos debe utilizarse el NAMESPACE correspondiente: System.Data.SqlClient: para SQL SERVER System.Data.OleDb para proveedores OLE DB (ACCESS)

COMPONENTES DE ADO.NET -CLASE OLEDBCONNECTION: Es la clase encargada de establecer la conexion con el origen de datos . Dependiendo del origen de datos que se utilice se deberá utilizar OleDbConnection o SqlConnection. Los métodos más importantes de la clase connection son: Open: Permite establecer la conexión con el origen de los datos. Close: Cierra la conexión. Create Command: Crea un objeto command.

154 | P á g i n a

-CLASE OLEDBCOMMAND Esta clase representa una declaración OLE DB que puede ser un comando SQL, un procedimiento almacenado concreto u cualquier texto que entienda el proveedor OLE DB. Para ejecutar un comando se necesita que haya una conexión valida abierta y dependiendo del comportamiento que se desee dar al objeto Command se utilizara uno de los siguientes métodos: -ExecuteNonQuery.- se utiliza para para ejecutar consultas de acción mediante clausulas como INSERT, UPDATE, DELETE, CREATE, SET principalmente. -ExecuteReader.- devuelve un objeto OleDbDataReader después de ejecutar una sentencia SQL de selección SELECT.

155 | P á g i n a

CREAR UNA CONEXIÓN A TRAVES DE CÓDIGO: 1.- Diseñar un formulario con los siguientes controles:

2.- Crear una Clase ConexionBd.cs dentro de una carpeta llamada DAC, en el proyecto que se está trabajando:

3.- Escribir el siguiente código que permite conectar a una Base de Datos ACCESS: using System; using System.Collections.Generic; using System.Linq; using System.Text; //LIBRERIAS PARA CONECTARA A LA BASE DE DATOS (ACCESS) using System.Data.OleDb; namespace PRACTICA_CONEXIONBD_CODIGO.DAC { class ConexionBD { //Establece una conexion a una Base de Datos ACCESS OleDbConnection Conexion = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\\basedatos.accdb"); public void EjecutarExecuteNonQuery(String sql)

156 | P á g i n a

{ Conexion.Open();//abre la conexion a la BD //OleDbCommand: permite realizar sentencias SQL OleDbCommand coman = new OleDbCommand(sql, Conexion); //ExecuteNonQuery: EJECUTA SENTENCIAS INSERT, UPDATE DELETE coman.ExecuteNonQuery(); Conexion.Close();//cierra la conexion a la BD } public void EjecutarExecuteReader(String sql) { Conexion.Open(); OleDbCommand coman = new OleDbCommand(sql, Conexion); //ExecuteReader: EJECUTA SENTENCIAS SELECT coman.ExecuteReader(); Conexion.Close(); } } }

4.- Una vez creada la conexión, nos dirigimos al formulario principal y damos doble clic sobre el para escribir el siguiente código:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.ProviderBase; //LIBRERIA PARA CONECTARA A LA BASE DE DATOS (ACCESS) using System.Data.OleDb; //RUTA DONDE SE ENCUENTRA LA CLASE ConexionBD using PRACTICA_CONEXIONBD_CODIGO.DAC;

namespace PRACTICA_CONEXIONBD_CODIGO { public partial class Form1 : Form { public Form1() { InitializeComponent(); ListarDatos(); } //CODIGO PARA LA CONEXION A LA BASE DE DATOS //////////////////////////////////////// //Creamos una instancia de la Clase ConexionBD ConexionBD Conexion = new ConexionBD();

157 | P á g i n a

//creamos la clase cliente public class Cliente { public String id; public String nombre; public String apellido; public String direccion; } //creamos la clase que lee los datos del formulario public Cliente leer() { Cliente cli = new Cliente(); cli.nombre = txtnombre.Text; cli.apellido = txtapellido.Text; cli.direccion = txtdireccion.Text; return cli; }

//clase que permite insertar en la BD los datos leidos en la clase anterior public void guardar(Cliente cli) { try { //Sentencia SQL para INSERTAR String sql = ("INSERT INTO clientes(nombre,apellido,direccion) VALUES('" + cli.nombre + "','" + cli.apellido + "','" + cli.direccion + "')"); //ejecuta la sentencia sql Conexion.EjecutarExecuteNonQuery(sql); } catch (Exception ex) { MessageBox.Show("Error al insertar en la bd: " + ex + " ."); } } //////////////////////////////////////////////////////////////////////////

private void ListarDatos() { OleDbConnection conex = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\basedatos.accdb"); OleDbCommand coman = new OleDbCommand("SELECT * From clientes",conex); conex.Open(); //executereader se usa solo es SELECT y ExecuteNonQuery para INSERT UPDATE DELETE OleDbDataReader lee = coman.ExecuteReader(); while (lee.Read()) {

158 | P á g i n a

String[] filas = { lee[0].ToString(), lee[1].ToString(), lee[2].ToString(), lee[3].ToString() }; grid_datos.Rows.Add(filas); } lee.Close(); conex.Close(); } public void habilitar_textos(Boolean ok) { txtnombre.Enabled = ok; txtapellido.Enabled = ok; txtdireccion.Enabled = ok; } public void limpiar_textos() { txtnombre.Text = ""; txtapellido.Text = ""; txtdireccion.Text = ""; } public void habilitar_botones(Boolean ok) { btingresar.Enabled = !ok; btnuevo.Enabled = ok; } private void button1_Click(object sender, EventArgs e) { guardar(leer()); MessageBox.Show("Añadido", "Se añadio el registro", MessageBoxButtons.OK, MessageBoxIcon.Information); grid_datos.Rows.Clear(); ListarDatos(); habilitar_textos(false); habilitar_botones(true); } private void bteliminar_Click(object sender, EventArgs e) { limpiar_textos(); habilitar_textos(true); habilitar_botones(false); } private void button3_Click(object sender, EventArgs e) { this.Hide(); frmmenu frm = new frmmenu(); frm.Show(); } } }

159 | P á g i n a

5.- Diseñar una Base de Datos en Access con el siguiente formato:

6.- Ejecutar el programa y empezar a guardar datos:

160 | P á g i n a

PROGRAMACION DE BOTONES DE NAVEGACIÓN CONCEPTOS BASICOS PARA PROGRAMAR BOTONES DE NAVEGACIÓN (INICIO, ATRÁS, SIGUIENTE, FIN) -CLASE DATA ADAPTER La clase DataAdapter se encarga de las operaciones entre la capa de datos y la capa intermedia, donde los datos son transferidos, se puede decir que es como un puente entre un objeto DataSet y un origen de datos asociados para recuperar y guardar datos. Los principales constructores de la clase son: -Fill (DataSet ds). Rellena un objeto de la clase Data set. -Update (Data Set ds). Actualiza el DataSet correspondiente. -CLASE DATASET La clase DataSet es la clase principal de la arquitectura ADO.NET. Un objeto de esta clase es una representación en memoria de los datos en forma relacional, El Objeto DataSet se rellena con DataAdapters o con datos locales. -CLASE DATATABLE La clase DataTable representa una tabla en memoria y es donde reside la información de los datos. -CLASE DATACOLUMN El conjunto de columnas de un objeto DataTable corresponde a una colección de objetos DataColumn.

-CLASE DATAROW El conjunto de filas de un objeto DataTable corresponde a una colección de objetos DataRow. CREAR BOTONES DE NAVEGACION DE REGISTROS DE UNA BASE DE DATOS: 1.- Diseñar un formulario con los siguientes controles:

161 | P á g i n a

2.- Dar doble clic en el formulario y programar el siguiente código: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //LIBRERIA PARA CONECTARA A LA BASE DE DATOS (ACCESS) using System.Data.OleDb;

namespace PRACTICA_CONEXIONBD_CODIGO { public partial class frmcodigoconexionbd : Form { public frmcodigoconexionbd() { InitializeComponent(); }

//CODIGO PARA MOVER LOS REGISTROS A TRAVES DEL DATA ADAPTER private DataTable tabladedatos; private OleDbDataAdapter DataAdapter; private int fila; private void mostrarDatos(int f) { //cuenta el numero de filas de la tabla de datos int uf = tabladedatos.Rows.Count - 1; //si el parametro recibido es menor que 0 y menor que el numero de filas de la consulta if (f < 0 || uf < 0) return; //almacena la fila de datos

162 | P á g i n a

DataRow dr = tabladedatos.Rows[f]; txtId.Text = dr["id"].ToString(); txtNombre.Text = dr["nombre"].ToString(); txtApellido.Text = dr["apellido"].ToString(); txtDireccion.Text = dr["direccion"].ToString(); //btactualizar.Enabled = true; }

private void frmcodigoconexionbd_Load(object sender, EventArgs e) { string Conex = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\\basedatos.accdb"; string Sentencia = "SELECT * FROM clientes";

// Crear un nuevo objeto del tipo DataAdapter DataAdapter = new OleDbDataAdapter(Sentencia, Conex); // Crear un nuevo objeto del tipo DataTable tabladedatos = new DataTable(); // Llenar la tabla con los datos indicados DataAdapter.Fill(tabladedatos); // Mostrar el primer registro if (tabladedatos.Rows.Count > 0) { btinicio_Click(null,null); } else { fila = -1; //btactualizar.Enabled = false; } } private void btinicio_Click(object sender, EventArgs e) { // Posicionarse en la primera fila fila = 0; // Mostrar los datos de la fila indicada mostrarDatos(fila); } private void btatras_Click(object sender, EventArgs e) { // Posicionarse en la fila anterior fila = fila - 1; if (fila < 0) fila = 0; // Mostrar los datos de la fila indicada mostrarDatos(fila); } private void btsiguiente_Click(object sender, EventArgs e) { // Posicionarse en la fila siguiente int uf = tabladedatos.Rows.Count - 1;

163 | P á g i n a

fila = fila + 1; if (fila > uf) fila = uf; // Mostrar los datos de la fila indicada mostrarDatos(fila); } private void btfin_Click(object sender, EventArgs e) { // Posicionarse en la última fila fila = tabladedatos.Rows.Count - 1; // Mostrar los datos de la fila indicada mostrarDatos(fila); } private void button3_Click(object sender, EventArgs e) { this.Hide(); frmmenu frm = new frmmenu(); frm.Show(); } } }

3.- Ejecutar el programa y verificar los botones de navegación:

164 | P á g i n a

ACTIVIDAD N°:

28

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de las tareas de ingresar, modificar, eliminar registros.

UNIDAD N° 3.5:

OPERACIONES CRUD

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

21/05/2012 - 22/05/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

165 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

BOTONES PARA EL MANEJO DE FORMULARIOS

Creación del Formulario:

Primeramente, el formulario se lo creó con los siguientes botones: Añadir. Modificar. Eliminar. Aceptar. Cancelar. Ahora veremos que realiza cada botón según la siguiente imagen: Botón para habilitar los cuadros de textos.

Botón para cambiar los datos de algún ingreso.

Botón para eliminar los registros.

Botón para guardar los registros. Aquí se insertarán los datos. Botón para borrar lo que estemos digitando.

Tabla donde se mostrará todos los registros.

166 | P á g i n a

A continuación se explicará cada botón, su funcionamiento y su codificación: Añadir y Aceptar Registro. Para añadir un registro, simplemente daremos clic en el botón AÑADIR, el cual automáticamente habilitará los cuadros de texto y a su vez los botones de ACEPTAR y CANCELAR.

Una vez que todos los campos estén llenos daremos clic en el botón ACEPTAR y listo nuestro registro se guardará y se visualizará en la tabla de abajo.

167 | P á g i n a

Para el botón Añadir, su codificación es el que encontramos a continuación: private void btnAñadir_Click_1(object sender, EventArgs e) { btnAñadir.Enabled = false; btnAceptar.Enabled = true; btnCancel.Enabled = true; txtcedula.Enabled = true; txtnombre.Enabled = true; txtapellido.Enabled = true; txtdireccion.Enabled = true; txtedad.Enabled = true; txttelefono.Enabled = true; limpiar_cajas(); bandera = 0; }

Primero se da doble click en el botón AÑADIR que se encuentra en la interfaz y automáticamente se crea un evento para poder codificar dentro de él. Cada una de estas líneas de código sirven para dejar habilitado y deshabilitado los botones de Aceptar, Cancelar, Añadir, también se aplica en las cajas de texto. Además encontramos el método “limpiar_cajas()” que nos sirve para que todos los datos que se encuentren escritos en la cajas de texto se vuelva a dejar en blanco, listo para volver ingresar un nuevo registro. Para el botón Aceptar, su codificación es la que encontramos a continuación:

private void btnAceptar_Click_1(object sender, EventArgs e) { try { conexion.Open();

if (bandera == 0) {

168 | P á g i n a

//OleDbCommand sirve para crear comandos tipo sentencias SQL OleDbCommand insertar = new OleDbCommand("INSERT into Persona(Cedula, Nombre, Apellido, Direccion, Edad, Telefono ) values('" + txtcedula.Text.ToString() + "','" + txtnombre.Text.ToString() + "','" + txtapellido.Text.ToString() + "','" + txtdireccion.Text.ToString() + "','" + Convert.ToInt16(txtedad.Text.ToString()) + "','" + txttelefono.Text.ToString()+"')", conexion); //OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand OleDbDataAdapter dainsertar = new OleDbDataAdapter(); dainsertar.InsertCommand = insertar; dainsertar.InsertCommand.ExecuteNonQuery(); txtcedula.Enabled = false; txtnombre.Enabled = false; txtapellido.Enabled = false; txtdireccion.Enabled = false; txtedad.Enabled = false; txttelefono.Enabled = false; limpiar_cajas(); } else { //OleDbCommand sirve para crear comandos tipo sentencias SQL OleDbCommand actualizar = new OleDbCommand("UPDATE Persona SET Nombre='" + txtnombre.Text.ToString() + "',Apellido='" + txtapellido.Text.ToString() + "',Direccion='" + txtdireccion.Text.ToString() + "',Edad='" + Convert.ToInt16(txtedad.Text.ToString()) + "',Telefono='" + txttelefono.Text.ToString() + "' where Cedula='" + txtcedula.Text.ToString()+"' ", conexion); //OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand OleDbDataAdapter daactualizar = new OleDbDataAdapter(); daactualizar.UpdateCommand = actualizar; // ExecuteNonQuery() sirve para ejecutar sentencias SQL(generalmente es usado para sentencias Insert, Delete, Update, Truncate) // ExecuteReader() sirve para ejecutar sentencias SQL(select) daactualizar.UpdateCommand.ExecuteNonQuery(); } listar_datos(); } catch {

169 | P á g i n a

} finally { if (conexion.State == ConnectionState.Open) { conexion.Close(); } } } } }

Este botón se encarga de guardar todos los datos que se hayan ingresado en las cajas de texto e inmediatamente se presentará en la tabla que se encuentra debajo.

Modificar Registro. Para modificar un registro, lo primero que hacemos es seleccionar en la tabla el registro y seguidamente dar clic en el botón MODIFICAR, el cual habilitará esos datos y podremos modificar el campo que deseemos.

170 | P á g i n a

Luego de esto daremos clic en ACEPTAR, y el registro de modificará. En este caso trabajamos con el campo apellido el cual se cambió de “Lima” a “Serrano”.

Su codificación es la siguiente:

private void btnModificar_Click(object sender, EventArgs e) { btnAñadir.Enabled = false; btnModificar.Enabled = false; btnAceptar.Enabled = true; btnCancel.Enabled = true; txtnombre.Enabled = true; txtapellido.Enabled = true; txtdireccion.Enabled = true; txtedad.Enabled = true; txttelefono.Enabled = true; bandera = 1; }

171 | P á g i n a

private void frmexposicion_Load(object sender, EventArgs e) { listar_datos(); }

public void listar_datos() { // la variable canal es tipo OleDbDataAdapter sta servira para hacer de canal entre el DataSet y un origen de datos para recuperar y guardar los datos. OleDbDataAdapter canal = new OleDbDataAdapter("SELECT * FROM Persona ", conexion); DataSet mibd = new DataSet(); canal.Fill(mibd, "Persona"); // sirve para darle un origen de datos a la grilla grilla_datos.DataSource = mibd; grilla_datos.DataMember = "Persona"; grilla_datos.Update(); }

// el evento SelectionChanged permite obtener los datos que hayamos seleccionado en un grilla

private void grilla_datos_SelectionChanged(object sender, EventArgs e) { try {

//CurrentRow sirve para obtener la fila actual dond se encuentra el puntero o la seleccion dentro de la grilla.// .Value es para obtener el valor o contenido que se encuentra dentro de la Fila(columna) seleccionada. // se los debe convertir a tipo string porq mientras constan en la grilla mantienen el mismo tipo de datos de origen

txtcedula.Text = grilla_datos.CurrentRow.Cells[1].Value.ToString(); txtnombre.Text = grilla_datos.CurrentRow.Cells[2].Value.ToString(); txtapellido.Text = grilla_datos.CurrentRow.Cells[3].Value.ToString(); txtdireccion.Text = grilla_datos.CurrentRow.Cells[4].Value.ToString(); txtedad.Text = grilla_datos.CurrentRow.Cells[5].Value.ToString();

172 | P á g i n a

txttelefono.Text = grilla_datos.CurrentRow.Cells[6].Value.ToString();

txtcedula.Enabled = false; txtnombre.Enabled = false; txtapellido.Enabled = false; txtdireccion.Enabled = false; txtedad.Enabled = false; txttelefono.Enabled = false; } catch { } }

En este botón, no es necesario llenar nuevamente todos los campos para que se pueda modificar, basta con llenar el campo que se desea cambiar para que se guarde los demás igual. La codificación que se encuentra en la parte de arriba sirve para que pueda actuar este botón. Eliminar Registro.

Primeramente seleccionamos el registro de la tabla que deseemos eliminar.

Seguidamente damos clic en el botón ELIMINAR, y como podemos observar en el gráfico de abajo, el registro con Id número “11” se ha eliminado. 173 | P á g i n a

Su codificación es la siguiente: private void btnEliminar_Click(object sender, EventArgs e) { try { conexion.Open(); { OleDbCommand eliminar = new OleDbCommand("DELETE FROM Persona where Cedula='" + txtcedula.Text.ToString() + "'", conexion); //OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand OleDbDataAdapter deliminar = new OleDbDataAdapter(); deliminar.DeleteCommand = eliminar; deliminar.DeleteCommand.ExecuteNonQuery(); } listar_datos(); } catch { }

174 | P á g i n a

finally {

if (conexion.State == ConnectionState.Open) { conexion.Close(); } } }

En este botón se aplica la sentencia SQL para poder eliminar un registro, solo basta con seleccionar el registro y presionamos eliminar y se borra automáticamente.

Cancelar Registro. Simplemente daremos clic en el botón CANCELAR y nuestros cuadros de texto se pondrán en blanco, es decir, todo lo que hayamos ingresado en ellos se borrará

175 | P á g i n a

Su codificación es la siguiente: private void btnCancel_Click(object sender, EventArgs e) { limpiar_cajas(); btnAñadir.Enabled = true; btnModificar.Enabled = true; btnAceptar.Enabled = false; btnCancel.Enabled = false;}

Lo que realiza este botón es solamente todos los botones habilitarlos o deshabilitarlos (Añadir, Modificar, Aceptar, Cancelar) y dejar las cajas de texto sin nada de escritos.

Ahora la codificación de toda la aplicación es la siguiente: CODIGO DE LA APLICACIÓN

using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; // DATA son para datos.. // sirve para poder utilizar todas las referencias para hacer uso de BD en ACCESS using System.Data.OleDb; using System.Data.SqlClient; //Proporciona una implementación base para el modelo de proveedor extensible using System.Data.ProviderBase; using System.Data.Common; using System.Data;

176 | P á g i n a

namespace exposicion { public partial class frmexposicion : Form {

static OleDbConnection conexion = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\Users\\Usu\\Documents\\Visual Studio 2010\\Projects\\exposicion\\dbexposicion1.accdb"); //sirve para tener una referencia para cuando necesite guardar cambias // tendra un valor 0 cuando se requiera ingresar un nuevo elemento // valor = 1 cuando se trate de modificar. static int bandera = 0;

public frmexposicion() { InitializeComponent(); btnAceptar.Enabled=false; btnCancel.Enabled = false; }

public void limpiar_cajas() { // limpiar cajas de texto txtcedula.Clear(); txtnombre.Clear(); txtapellido.Clear(); txtdireccion.Clear(); txtedad.Clear(); txttelefono.Clear();

}

private void btnModificar_Click(object sender, EventArgs e) {

177 | P á g i n a

btnAñadir.Enabled = false; btnModificar.Enabled = false; btnAceptar.Enabled = true; btnCancel.Enabled = true; txtnombre.Enabled = true; txtapellido.Enabled = true; txtdireccion.Enabled = true; txtedad.Enabled = true; txttelefono.Enabled = true; bandera = 1; }

private void frmexposicion_Load(object sender, EventArgs e) { listar_datos(); }

public void listar_datos() { // la variable canal es tipo OleDbDataAdapter sta servira para hacer de canal entre el DataSet y un origen de datos para recuperar y guardar los datos. OleDbDataAdapter canal = new OleDbDataAdapter("SELECT * FROM Persona ", conexion); DataSet mibd = new DataSet(); canal.Fill(mibd, "Persona"); // sirve para darle un origen de datos a la grilla grilla_datos.DataSource = mibd; grilla_datos.DataMember = "Persona"; grilla_datos.Update(); }

// el evento SelectionChanged permite obtener los datos que hayamos seleccionado en un grilla private void grilla_datos_SelectionChanged(object sender, EventArgs e) { try {

178 | P á g i n a

//CurrentRow sirve para obtener la fila actual dond se encuentra el puntero o la seleccion dentro de la grilla.// .Value es para obtener el valor o contenido que se encuentra dentro de la Fila(columna) seleccionada. // se los debe convertir a tipo string porq mientras constan en la grilla mantienen el mismo tipo de datos de origen

txtcedula.Text = grilla_datos.CurrentRow.Cells[1].Value.ToString(); txtnombre.Text = grilla_datos.CurrentRow.Cells[2].Value.ToString(); txtapellido.Text = grilla_datos.CurrentRow.Cells[3].Value.ToString(); txtdireccion.Text = grilla_datos.CurrentRow.Cells[4].Value.ToString(); txtedad.Text = grilla_datos.CurrentRow.Cells[5].Value.ToString(); txttelefono.Text = grilla_datos.CurrentRow.Cells[6].Value.ToString();

txtcedula.Enabled = false; txtnombre.Enabled = false; txtapellido.Enabled = false; txtdireccion.Enabled = false; txtedad.Enabled = false; txttelefono.Enabled = false; } catch { } }

private void btnEliminar_Click(object sender, EventArgs e) { try { conexion.Open(); { OleDbCommand eliminar = new OleDbCommand("DELETE FROM Persona where Cedula='" + txtcedula.Text.ToString() + "'", conexion); //OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand OleDbDataAdapter deliminar = new OleDbDataAdapter();

179 | P á g i n a

deliminar.DeleteCommand = eliminar; deliminar.DeleteCommand.ExecuteNonQuery(); } listar_datos(); } catch { }

finally {

if (conexion.State == ConnectionState.Open) { conexion.Close(); } } }

private void btnCancel_Click(object sender, EventArgs e) { limpiar_cajas(); btnAñadir.Enabled = true; btnModificar.Enabled = true; btnAceptar.Enabled = false; btnCancel.Enabled = false; }

private void btnAñadir_Click_1(object sender, EventArgs e) { btnAñadir.Enabled = false; btnAceptar.Enabled = true; btnCancel.Enabled = true; txtcedula.Enabled = true;

180 | P á g i n a

txtnombre.Enabled = true; txtapellido.Enabled = true; txtdireccion.Enabled = true; txtedad.Enabled = true; txttelefono.Enabled = true; limpiar_cajas(); bandera = 0; }

private void btnAceptar_Click_1(object sender, EventArgs e) { try { conexion.Open();

if (bandera == 0) { //OleDbCommand sirve para crear comandos tipo sentencias SQL OleDbCommand insertar = new OleDbCommand("INSERT into Persona(Cedula, Nombre, Apellido, Direccion, Edad, Telefono ) values('" + txtcedula.Text.ToString() + "','" + txtnombre.Text.ToString() + "','" + txtapellido.Text.ToString() + "','" + txtdireccion.Text.ToString() + "','" + Convert.ToInt16(txtedad.Text.ToString()) + "','" + txttelefono.Text.ToString()+"')", conexion); //OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand OleDbDataAdapter dainsertar = new OleDbDataAdapter(); dainsertar.InsertCommand = insertar; dainsertar.InsertCommand.ExecuteNonQuery();

txtcedula.Enabled = false; txtnombre.Enabled = false; txtapellido.Enabled = false; txtdireccion.Enabled = false; txtedad.Enabled = false; txttelefono.Enabled = false; limpiar_cajas(); } else

181 | P á g i n a

{ //OleDbCommand sirve para crear comandos tipo sentencias SQL OleDbCommand actualizar = new OleDbCommand("UPDATE Persona SET Nombre='" + txtnombre.Text.ToString() + "',Apellido='" + txtapellido.Text.ToString() + "',Direccion='" + txtdireccion.Text.ToString() + "',Edad='" + Convert.ToInt16(txtedad.Text.ToString()) + "',Telefono='" + txttelefono.Text.ToString() + "' where Cedula='" + txtcedula.Text.ToString()+"' ", conexion); //OleDbDataAdapter sirve de puente para obtener la sentencia especificada con el OleDbCommand OleDbDataAdapter daactualizar = new OleDbDataAdapter(); daactualizar.UpdateCommand = actualizar; // ExecuteNonQuery() sirve para ejecutar sentencias SQL(generalmente es usado para sentencias Insert, Delete, Update, Truncate) // ExecuteReader() sirve para ejecutar sentencias SQL(select) daactualizar.UpdateCommand.ExecuteNonQuery(); } listar_datos(); } catch {

} finally { if (conexion.State == ConnectionState.Open) { conexion.Close(); } } } }}

182 | P á g i n a

ACTIVIDAD N°:

29

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de los principales controles que se pueden utilizar en C#

UNIDAD N° 3.6:

PRINCIPALES CONTROLES

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

28/05/2012 - 29/05/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

183 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Control, control de usuario y formulario La mayoría de las clases del espacio de nombres System.Windows.Forms derivan de la clase Control. La clase Control proporciona la funcionalidad base de todos los controles que se muestran en un objeto Form. La clase Form representa una ventana dentro de una aplicación. Incluye cuadros de diálogo, ventanas no modales y ventanas cliente y principal de la Interfaz de documentos múltiples (MDI). También puede crear sus propios controles derivando de la clase UserControl. Menús y barras de herramientas Windows.Forms contiene un amplio conjunto de clases para que pueda crear sus propias barras de herramientas y menús personalizadas, con un aspecto y comportamiento modernos (apariencia y percepción). Las clases ToolStrip, MenuStrip, ContextMenuStripy StatusStrip se pueden utilizar para crear barras de herramientas, barras de menús, menús contextuales y barras de estado, respectivamente. Controles El espacio de nombres System.Windows.Forms dispone de diferentes clases de controles que se pueden utilizar para crear interfaces de usuario completas. Algunos controles están diseñados para la entrada de datos en la aplicación, por ejemplo, los controles TextBox y ComboBox. Otros controles muestran datos de la aplicación, por ejemplo, Label y ListView. El espacio de nombres también dispone de controles para invocar comandos en la aplicación, por ejemplo, Button. El control WebBrowser y las clases HTML administradas, como HtmlDocument, permiten mostrar y manipulan páginas HTML desde su propia aplicación administrada de formularios Windows Forms. El control MaskedTextBox es un control de entrada de datos avanzado que permite definir máscaras que aceptan o rechazan automáticamente los datos proporcionados por el usuario. Además, puede utilizar el control PropertyGrid para crear su propio Diseñador de Windows Forms que muestra las propiedades visibles de diseñador de los controles. Diseño Hay varias clases importantes en Windows.Forms que ayudan a controlar el diseño de los controles

en

una

superficie

de

presentación,

como

un

formulario

o

control.FlowLayoutPanel dispone en serie todos los controles que contiene y

184 | P á g i n a

TableLayoutPanel permite definir celdas y filas para disponer los controles en una cuadrícula fija. SplitContainer divide la superficie de presentación en dos o más partes ajustables. Datos y enlace de datos Windows.Forms define una arquitectura enriquecida para enlazar a los orígenes de datos como las bases de datos y los archivos XML. El control DataGridView proporciona una tabla personalizable para mostrar los datos y le permite personalizar celdas, filas, columnas y bordes. El control BindingNavigator representa una forma estandarizada de explorar datos y trabajar con ellos en un formulario; BindingNavigator se empareja frecuentemente con el control BindingSource para recorrer los registros de datos de un formulario e interactuar con ellos. Componentes Además de los controles, el espacio de nombres System.Windows.Forms proporciona otras clases que, aunque no se derivan de la clase Control, también aportan características visuales a las aplicaciones basadas en Windows. Algunas clases, como ToolTip y ErrorProvider, amplían las capacidades o proporcionan información al usuario. Con las clases Help y HelpProvider, puede mostrar información de Ayuda al usuario de sus aplicaciones. Cuadros de diálogo comunes Windows proporciona varios cuadros de diálogo comunes que se pueden utilizar para ofrecer a la aplicación una interfaz de usuario coherente a la hora de realizar tareas como abrir y guardar archivos, manipular la fuente o el color del texto o imprimir. Las clases OpenFileDialog y SaveFileDialog proporcionan la funcionalidad para mostrar un cuadro de diálogo que permita al usuario buscar o escribir el nombre del archivo que desea abrir o guardar. La clase FontDialog muestra un cuadro de diálogo para cambiar los elementos del objeto Font que utiliza la aplicación. Las clases PageSetupDialog, PrintPreviewDialog y PrintDialog muestran cuadros de diálogo que permiten al usuario controlar la impresión de documentos. Para obtener más información sobre cómo imprimir desde una aplicación basada en Windows, vea el espacio de nombres System.Drawing.Printing. Además de los cuadros de diálogo comunes, el espacio de nombres System.Windows.Forms dispone de la clase MessageBox para mostrar un cuadro de mensaje que pueda presentar datos del usuario y también recuperarlos de éste.

185 | P á g i n a

186 | P á g i n a

187 | P á g i n a

DESCRIPCIÓN Y EJEMPLO DE CONTROLES: TEXTBOX Un control TextBox acepta datos del usuario en un formulario. CREACIÓN DE UN CUADRO DE TEXTO Para crear un control TextBox en tiempo de diseño, sólo tiene que arrastrar y soltar un control TextBox desde Caja de herramientas a un formulario en Visual Studio. Después de arrastrar y colocar un cuadro de texto en un formulario, el cuadro de texto se parece. Una vez que un cuadro de texto está en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos.

188 | P á g i n a

ESTABLECER LAS PROPIEDADES DE TEXTBOX Después de colocar un control TextBox en un formulario, el siguiente paso es establecer las propiedades. La forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

189 | P á g i n a

 UBICACIÓN, ALTURA, ANCHURA Y TAMAÑO La propiedad Location toma un punto que especifica la posición inicial del cuadro de texto en un formulario. La propiedad Tamaño especifica el tamaño del control. También podemos utilizar la propiedad Ancho y Altura lugar de la propiedad Tamaño  FONDO, PRIMER PLANO, BORDERSTYLE Las propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un cuadro de texto, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.  NOMBRE Nombre de la propiedad representa un nombre único de un control TextBox.  TEXTO, TEXTALIGN Y TEXTLENGTH Propiedad Text de un cuadro de texto representa el texto actual de un control TextBox. La propiedad TextAlign representa la alineación del texto que puede ser de Izquierda, Centro o Derecha. La propiedad textLength devuelve la longitud del contenido de un TextBox.  FUENTE Propiedad Font representa la fuente del texto de un control TextBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente.  CONTRASEÑA CARÁCTER Y EL CARÁCTER DE LA CARCASA Propiedad PasswordChar se utiliza para aplicar máscara en un cuadro de texto cuando necesite usarlo para un ingreso de la contraseña y hacer ahora lo que la contraseña sea fácil de leer. Por ejemplo, puede colocar una estrella (*) para caracteres de la contraseña.  LONGITUD MÁXIMA Puede restringir el número de caracteres en un control TextBox estableciendo la propiedad MaxLength. El fragmento de código siguiente se establece la duración máxima de un cuadro de texto de 50 caracteres.

COMBOBOX Un control ComboBox es una combinación de un control TextBox y un control ListBox. Sólo un elemento de la lista se muestra a la vez en un ComboBox y otros artículos disponibles son cargados en una lista desplegable. CREACIÓN DE UN COMBOBOX Podemos crear un control ComboBox con un diseñador de formularios en tiempo de diseño. Para crear un control ComboBox en tiempo de diseño, sólo tiene que arrastrar y soltar un control ComboBox desde Caja de herramientas a un formulario en Visual Studio. Después de arrastrar y

190 | P á g i n a

soltar un ComboBox en un formulario. Una vez que un ComboBox es en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos.

ESTABLECER LAS PROPIEDADES DE COMBOBOX Después de colocar un control ComboBox en un formulario, el siguiente paso es establecer las propiedades. La forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

191 | P á g i n a

 NOMBRE Nombre de la propiedad representa un nombre único de un control ComboBox. Se utiliza para acceder al control en el código.  UBICACIÓN, ALTURA, ANCHURA Y TAMAÑO La propiedad Location toma un punto que especifica la posición inicial del ComboBox en un formulario. También puede utilizar las propiedades Left y Top para especificar la ubicación de un control de la esquina superior izquierda del formulario. La propiedad Tamaño especifica el tamaño del control.  DROPDOWNHEIGHT Y DROPDOWNWIDTH Usted puede controlar el tamaño del área desplegable de un ComboBox. Las propiedades DropDownHeight y dropdownWidth representan la altura y la anchura de la zona desplegable de píxeles respectivamente. Si las propiedades dropdownWidth y DropDownHeight son inferiores a los valores de anchura y altura, no será aplicable. Si todos los elementos que no caben en el tamaño de la zona desplegable, las barras de desplazamiento aparecerán.

 FUENTE Propiedad Font representa la fuente del texto de un control ComboBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente. Fondo y primer plano Las propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un ComboBox, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.

192 | P á g i n a

 ARTÍCULOS COMBOBOX La propiedad Ítems se utiliza para agregar y trabajar con los elementos de un ComboBox. Podemos añadir elementos a un ComboBox en tiempo de diseño desde la ventana de Propiedades, haga clic en la colección de elementos.

Al hacer clic en las colecciones, la colección de cadenas ventana del editor se abrirá donde usted puede escribir una cadena. Cada línea de agregar a esta colección se convertirá en un elemento de ComboBox.

193 | P á g i n a

PICTUREBOX Control PictureBox se utiliza para mostrar imágenes en Windows Forms. CREACIÓN DE UN PICTUREBOX  MOSTRAR UNA IMAGEN Propiedad Image se utiliza para establecer una imagen que se mostrará en un control PictureBox.

 SIZEMODE Propiedad SizeMode se utiliza para colocar una imagen en un cuadro de imagen. Puede ser normal, StretchImage, AutoSize, CenterImage, y Zoom.

194 | P á g i n a

LISTBOX Un control ListBox proporciona una interfaz para visualizar una lista de elementos. Los usuarios pueden seleccionar uno o varios elementos forman la lista. Un ListBox se puede utilizar para mostrar varias columnas y estas columnas pueden tener imágenes y otros controles. CREACIÓN DE UN LISTBOX Hay dos enfoques para crear un control ListBox de formularios Windows Forms. En tiempo de diseño Para crear un control ListBox en tiempo de diseño, simplemente arrastre y suelte un control ListBox de caja de herramientas a un formulario en Visual Studio. Después de arrastrar y soltar un control ListBox en un formulario, el control ListBox aparecerá. Una vez que un ListBox es en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos.

ESTABLECER LAS PROPIEDADES DE LISTBOX La forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

195 | P á g i n a

 NOMBRE Nombre de la propiedad representa un nombre único de un control ListBox. Se utiliza para acceder al control en el código  UBICACIÓN, ALTURA, ANCHURA Y TAMAÑO La propiedad Location toma un punto que especifica la posición de partida de la ListBox en un formulario. También puede utilizar las propiedades Left y Top para especificar la ubicación de un control de la esquina superior izquierda del formulario. La propiedad Tamaño especifica el tamaño del control.  FUENTE Propiedad Font representa la fuente del texto de un control ListBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente.

 FONDO Y PRIMER PLANO Las propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un ListBox, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.

196 | P á g i n a

LISTBOX ARTÍCULOS La propiedad Items se utiliza para agregar y trabajar con los elementos de un ListBox. Podemos añadir elementos a un control ListBox en tiempo de diseño de la ventana Propiedades, haga clic en la colección de elementos.

Al hacer clic en las colecciones, la colección de cadenas ventana del editor se abrirá donde usted puede escribir una cadena. Cada línea de agregar a esta colección se convertirá en un elemento de ListBox.

197 | P á g i n a

 SELECCIÓN DEL MODO Y LA SELECCIÓN DE OBJETOS Propiedad SelectionMode define cómo se seleccionan los elementos en un ListBox. El valor SelectionMode puede ser uno de los siguientes cuatro valores de enumeración SelectionMode. Ninguno - No hay elemento se puede seleccionar. Uno - Sólo un elemento se puede seleccionar. MultiSimple - Varios elementos pueden ser seleccionados. MultiExtended - Varios elementos se pueden seleccionar, y el usuario puede utilizar las teclas SHIFT, CTRL y las teclas de flecha para hacer las selecciones. T o seleccionar un elemento en un control ListBox, podemos usar el método que se SetSelect índice de elemento y un valor verdadero o falso en verdadero valor representan el elemento a seleccionar.  CÓMO DESHABILITAR LA SELECCIÓN DE ELEMENTOS EN UN LISTBOX? Sólo tienes que configurar la propiedad SelectionMode en Ninguno.  ORDENAR LOS ELEMENTOS La propiedad Sorted establecida en true, los elementos de ListBox se ordenan.

CHECKBOX Un control CheckBox permite a los usuarios seleccionar las opciones de uno o varios de una lista de opciones. CREACIÓN DE UN CHECKBOX Podemos crear un control CheckBox con un diseñador de formularios en tiempo de diseño. Para crear un control CheckBox en tiempo de diseño, sólo tiene que arrastrar y soltar un control CheckBox de la caja de herramientas a un formulario en Visual Studio. Después de arrastrar y soltar un control CheckBox en un formulario. Una vez que un control CheckBox está en el formulario, puede moverse y cambiar su tamaño a través del ratón y establecer sus propiedades y eventos. 198 | P á g i n a

ESTABLECER LAS PROPIEDADES DE CHECKBOX Después de colocar un control CheckBox en un formulario, el siguiente paso es establecer las propiedades. La forma más fácil es establecer las propiedades de la ventana Propiedades. Puede abrir la ventana Propiedades presionando F4 o haga clic derecho sobre un control y seleccionar la opción Propiedades del menú.

199 | P á g i n a

 UBICACIÓN, ALTURA, ANCHURA Y TAMAÑO La propiedad Location toma un punto que especifica la posición inicial de la casilla de verificación en un formulario. También puede utilizar las propiedades Left y Top para especificar la ubicación de un control de la esquina superior izquierda del formulario. La propiedad Tamaño especifica el tamaño del control. También podemos utilizar la propiedad Ancho y Altura lugar de la propiedad Tamaño.  FONDO, PRIMER PLANO, BORDERSTYLE Las propiedades BackColor y ForeColor se utilizan para establecer el fondo y el color de primer plano de un control CheckBox, respectivamente. Si hace clic sobre estas propiedades en la ventana de Propiedades, el cuadro de diálogo de color aparece.  NOMBRE Nombre de la propiedad representa un nombre único de un control CheckBox. Se utiliza para acceder al control en el código.  TEXTO Y TEXTALIGN Propiedad Text de un control CheckBox representa el texto actual de un control CheckBox. La propiedad TextAlign representa la alineación del texto que puede ser de Izquierda, Centro o Derecha.  COMPRUEBE LA ALINEACIÓN DE MARK Propiedad CheckAlign se utiliza para alinear la marca de verificación en un control CheckBox.Mediante el uso de las propiedades CheckAlign y TextAlign, podemos colocar el texto y la marca de verificación para cualquier posición en un control CheckBox que queremos.

 FUENTE Propiedad Font representa la fuente del texto de un control CheckBox. Si hace clic en la propiedad Font en la ventana de Propiedades, verá el nombre de fuente, tamaño y otras opciones de la fuente.  IMAGEN DE CHECKBOX La imagen característica de un CheckBox control se utiliza para establecer el fondo como una imagen.La propiedad de la imagen necesita un objeto Image. La clase de imagen tiene un método estático llamado FromFile que toma el nombre de un archivo de imagen con la ruta completa y crea un objeto de imagen. También puede alinear la imagen y el texto. Las propiedades ImageAlign y TextAlign de CheckBox se utilizan para este propósito.

200 | P á g i n a

 ESTADOS CHECKBOX Un control CheckBox típico tiene dos estados posibles â € "registrado como el no. Estado de activación es cuando la casilla se marca de verificación dentro y sin control es cuando la casilla no está marcada. Normalmente, se utiliza un ratón para activar o desactivar un control CheckBox. Propiedad Checked es cierto cuando un control CheckBox se encuentra en estado de activación. Resumen Un control TextBox acepta datos del usuario en un formulario. En este artículo, hablamos de discutir la manera de crear un control TextBox de formularios Windows Forms en tiempo de diseño, así como en tiempo de ejecución. Después de eso, vimos cómo utilizar varias propiedades y métodos. En este artículo, hablamos de discutir la manera de crear un control ComboBox de formularios Windows Forms en tiempo de diseño, así como en tiempo de ejecución. Después de eso, hablamos de cómo utilizar sus diversas propiedades y métodos para crear aplicaciones del mundo real, hablamos de discutir la forma de utilizar un control PictureBox para mostrar imágenes en aplicaciones de Windows Forms, hablamos de discutir la manera de crear un control ListBox de formularios Windows Forms.Después de eso, vimos cómo utilizar varias propiedades y métodos. Vea a continuación la lista de artículos para aprender más sobre el control ListBox, y por último, hablamos de discutir la manera de crear un control CheckBox de formularios Windows Forms en tiempo de diseño, así como en tiempo de ejecución. Después de eso, vimos cómo utilizar varias propiedades y métodos.

http://www.c-sharpcorner.com/uploadfile/mahesh/textbox-in-C-Sharp/ http://www.c-sharpcorner.com/uploadfile/mahesh/combobox-in-C-Sharp/

201 | P á g i n a

ACTIVIDAD N°:

30

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la recuperación de información (búsqueda)

UNIDAD N° 3.7:

BÚSQUEDA DE REGISTROS

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

04/06/2012 - 05/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

202 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCIÓN

El presente manual de usuario se lo ha realizado para facilitar la utilización del programa y brindar

una mejor visualización del mismo. Para una mejor

comprensión sobre el sistema elaborado se presentan la explicación respectiva de sus debidos funcionamientos. Visual Studio es un conjunto de herramientas de desarrollo y de otras tecnologías basado

en

componentes

para

crear

aplicaciones

eficaces

de

alto

rendimiento. Además, Visual Studio está optimizado para diseño basado en equipos, desarrollo e implementación de soluciones empresariales. Visual Studio es un conjunto completo de herramientas de desarrollo para la generación de aplicaciones Web ASP.NET, Servicios Web XML, aplicaciones de escritorio y aplicaciones móviles. Visual Basic, Visual C++, Visual C# y Visual J# utilizan el mismo entorno de desarrollo integrado (IDE), que les permite compartir herramientas y facilita la creación de soluciones en varios lenguajes. Asimismo, dichos lenguajes aprovechan las funciones de .NET Framework, que ofrece acceso a tecnologías clave para simplificar el desarrollo de aplicaciones Web ASP y Servicios Web XML.

OBJETIVO El principal objetivo del manual es facilitar a los usuarios el manejo del programa de Automatización de Sistema Médico "ASME", permitiendo la realización de simulaciones del sistema y los procedimientos de búsqueda mediante diferentes maneras, para optimizar su utilización.

203 | P á g i n a

PROGRAMACIÓN DE BÚSQUEDA DE REGISTROS (VARIAS FORMAS O MODELOS)

Explicación de palabras desconocidas. OleDBConnection.- Representa una conexión abierta a un origen de datos. En el caso de un sistema de bases de datos de cliente y servidor, equivale a una conexión de red al servidor. Dependiendo de la funcionalidad que admita el proveedor

OLE

DB

nativo,

algunos

métodos

o

propiedades

de

un

objeto OleDbConnection pueden no estar disponibles.

OleDBDataAdapter.- Representa un conjunto de comandos de datos y una conexión de base de datos que se utilizan para rellenar DataSet y actualizar el origen de datos. DataSet.- Representa una caché de memoria interna de datos. EventArgs.- Contiene los datos adicionales asociados a ciertos tipos de eventos de estado de flujo de trabajo. Diferencia entre Object sender y EventArgs e.- Sender representa una referencia al objeto

que lanza ese evento, mientras que eventargs es la clase base para contener los eventos lanzados por el control.

204 | P á g i n a

Explicación de la creación de la Base de Datos

Abrimos el programa Acces para la creación de la Base de Datos, nos vamos a Inicio, Todos los Programas, Microsoft Office y clic en Microsoft Acces.

Una vez abierto el programa damos clic en “BASE DE DATOS EN BLANCO”.

Luego ponemos el nombre de la base de datos en la parte inferior derecha y clic en “CREAR”.

205 | P á g i n a

Ahora agregamos la tabla en el programa de la siguiente manera.

Colocamos un nombre en este caso el nuestro será Empleados.

Empezamos a crear los campos de la siguiente manera.

Una vez creada los campos realizamos lo siguiente y empezamos a ingresar registros.

206 | P á g i n a

Ahora guardamos todo lo que hemos realizado.

Explicación de la creación del formulario en Visual C# Abrimos el programa Visual C# para la creación del formulario y nos vamos a Inicio, Todos los Programas, Microsoft Visual Studio 2010 y clic en Microsoft Visual Studio 2010.

207 | P á g i n a

Una vez abierto el programa vamos a Archivo, Nuevo, Proyecto y nos aparecerá la siguiente pantalla. Le ponemos un Nombre al archivo y aceptamos.

Editamos el formulario agregando los componentes a utilizar como son:

TextBox Label

Label

TextBox

RadioButton

TextBox

Button

DataGridView

208 | P á g i n a

Explicación de cómo insertar la base de datos al programa. Paso1.-

Paso2.- Presionar el icono de Base de Datos y clic en siguiente.

Paso 3.- Elegimos un modelo de base de datos de la siguiente manera y clic en siguiente.

Paso 4.- Clic en Nueva Conexión y en la pantalla que nos saldrá en la parte de examinar buscamos la base de datos que anteriormente creamos, clic en Probar conexión y aceptamos. 209 | P á g i n a

Paso5.- En la parte de cadena de conexión copiamos lo que observamos ahí para luego utilizarlo en el código y salimos e la ventana.

Explicación del funcionamiento del programa. El programa le permitirá buscar al empleado por las opciones de cedula, nombre, ciudad, apellido. Deberá seleccionar una de las opciones y en un cuadro de texto colocar el valor de cedula, nombre, etc., del registro que quiera buscar y automáticamente en la tabla se presentara el registro, seleccionamos el que se busque y se cargará en los cuadros de texto, además encontramos botones de movimiento que nos permitirá movernos entre registros inicio, fin, siguiente, anterior. 210 | P á g i n a

Código General.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.ProviderBase; using System.Data.OleDb; using Grupo3Parte2.conexionBD;// librebria que nos permite escribir un comando de un conjunto de datos namespace Grupo3Parte2 { public partial class Empleado : Form { private DataSet datos; private OleDbDataAdapter medio; int posicion; int posicionFinal; OleDbConnection conexion = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Hacienda.accdb "); // ruta de conexion public void cargarDatos() { medio = new OleDbDataAdapter("select * from Empleados", conexion); datos = new DataSet(); medio.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables["Empleados"];

211 | P á g i n a

posicion = 0; posicionFinal = (datos.Tables["Empleados"].Rows.Count) - 1; } private void mover(int paso) { posicion = posicion + paso; txtCedula.Text = datos.Tables["Empleados"].Rows[posicion][0].ToString(); txtNombre.Text = datos.Tables["Empleados"].Rows[posicion][1].ToString(); txtApellido.Text = datos.Tables["Empleados"].Rows[posicion][2].ToString(); txtFecha.Text = datos.Tables["Empleados"].Rows[posicion][3].ToString(); txtCargo.Text = datos.Tables["Empleados"].Rows[posicion][4].ToString(); txtCiudad.Text = datos.Tables["Empleados"].Rows[posicion][5].ToString(); } public Empleado() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: esta línea de código carga datos en la tabla 'haciendaDataSet.Empleados' Puede moverla o quitarla según sea necesario. this.empleadosTableAdapter.Fill(this.haciendaDataSet.Empleados); cargarDatos(); } {

private void btnInicio_Click(object sender, EventArgs e) mover(-posicion);

}

private void btnSiguiente_Click(object sender, EventArgs e) { if (posicion == posicionFinal) { MessageBox.Show("No hay más registros"); }

212 | P á g i n a

else { mover(1); }

}

private void btnAnterior_Click(object sender, EventArgs e) { if (posicion == 0) { MessageBox.Show("Estas ya en el primer Registro");

} else { mover(-1); }

}

private void btnFin_Click(object sender, EventArgs e) { posicion = 0; if (posicion == posicionFinal) { MessageBox.Show("No hay más registros");

} else { mover(posicionFinal); }

}

private void textBox1_TextChanged(object sender, EventArgs e) if (rd1.Checked == true)

{

{

try

213 | P á g i n a

{ //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Cedula like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables[0];} catch (Exception ex) { MessageBox.Show("Error al leer de la bd: " + ex + "."); }

}

if (rd2.Checked == true) { try { //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Nombre like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables[0]; } catch (Exception ex) { MessageBox.Show("Error al leer de la bd: " + ex + "."); }

}

if (rd3.Checked == true) { try

214 | P á g i n a

{ //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Ciudad like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables[0]; } catch (Exception ex) {

MessageBox.Show("Error al leer de la bd: " + ex + ".");

} } if (rd4.Checked == true) { try { //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Apellido like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables[0]; } catch (Exception ex) { MessageBox.Show("Error al leer de la bd: " + ex + "."); }

}

}

private void rd2_CheckedChanged(object sender, EventArgs e) {

}

215 | P á g i n a

private void rd3_CheckedChanged(object sender, EventArgs e) {

}

//para cargar de la tabal a los cuadros de texto private void tabla_CellContentClick(object sender, DataGridViewCellEventArgs e) { txtCedula.Text = tabla.CurrentRow.Cells[0].Value.ToString(); txtNombre.Text = tabla.CurrentRow.Cells[1].Value.ToString(); txtApellido.Text = tabla.CurrentRow.Cells[2].Value.ToString(); txtFecha.Text = tabla.CurrentRow.Cells[3].Value.ToString(); txtCargo.Text = tabla.CurrentRow.Cells[4].Value.ToString(); txtCiudad.Text = tabla.CurrentRow.Cells[5].Value.ToString(); }

}

}

EXPLICACIÓN DE CADA PARTE DEL PROGRAMA CON SU RESPECTIVO CÓDIGO Mediante esta línea podemos realizar la conexión con nuestra base de datos, aquí colocamos lo que copiamos al momento de realizar la conexión de la base de datos con el programa. OleDbConnection conexion = new OleDbConnection (@”Provider=Microsoft.ACE.OLEDB.12.0; DataSource=Hacienda.accdb”); En esta línea de código carga datos en la tabla 'haciendaDataSet.Empleados'. Puede moverla o quitarla según sea necesario. private void Form1_Load(object sender, EventArgs e) { this.empleadosTableAdapter.Fill(this.haciendaDataSet.Empleados); cargarDatos(); }

Para cargar o colocar los datos de los registros ingresados en la tabla de la Base de Datos creada en Access a la tabla del programa se la realiza de la siguiente manera.

216 | P á g i n a

public void cargarDatos() { medio = new OleDbDataAdapter("select * from Empleados", conexion); datos = new DataSet(); medio.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables["Empleados"]; posicion = 0; posicionFinal = (datos.Tables["Empleados"].Rows.Count) - 1; }

Encontramos también botones de movimiento para podernos desplazar de registro en registro o podemos también ir al principio o final de los registros, según lo que se desee.

217 | P á g i n a

El método para permitir que los botones funciones es el siguiente pero este método no va dentro de ningún botón.

private void mover(int paso) { posicion = posicion + paso; txtCedula.Text = datos.Tables["Empleados"].Rows[posicion][0].ToString(); txtNombre.Text = datos.Tables["Empleados"].Rows[posicion][1].ToString(); txtApellido.Text = datos.Tables["Empleados"].Rows[posicion][2].ToString(); txtFecha.Text = datos.Tables["Empleados"].Rows[posicion][3].ToString(); txtCargo.Text = datos.Tables["Empleados"].Rows[posicion][4].ToString(); txtCiudad.Text = datos.Tables["Empleados"].Rows[posicion][5].ToString(); }

La codificación de cada botón se encuentra dentro del mismo solo hacemos clic sobre ellos y ponemos el siguiente código:

BOTÓN INICIO:

private void btnInicio_Click(object sender, EventArgs e) { mover(-posicion);

}

BOTÓN SIGUIENTE:

private void btnSiguiente_Click(object sender, EventArgs e) { if (posicion == posicionFinal) { MessageBox.Show("No hay más registros");

218 | P á g i n a

} else { mover(1); } }

BOTÓN ANTERIOR:

private void btnAnterior_Click(object sender, EventArgs e) { if (posicion == 0) { MessageBox.Show("Estas ya en el primer Registro");

} else { mover(-1); }

}

BOTÓN FIN:

private void btnFin_Click(object sender, EventArgs e) { posicion = 0; if (posicion == posicionFinal) { MessageBox.Show("No hay más registros"); } else {

219 | P á g i n a

mover(posicionFinal); } }

Lo que encontramos posteriormente es la funcion principal del programa que cuenta con 4 RadioButton y un TextBox en el cual se insertara lo que se requiera buscar.

Todo el código que observamos a continuación para realizar estas acciones se la debe colocar dentro del TextBox y es el siguiente: Este proceso se lo coloca dentro de un try y un catch para así poder especificar lo que se va a realizar dependiendo de la opción que elija.

Accion del RadioButton Cedula:

private void textBox1_TextChanged(object sender, EventArgs e) { if (rd1.Checked == true) { try { //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Cedula like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados");

220 | P á g i n a

tabla.DataSource = datos.Tables[0]; } catch (Exception ex) { MessageBox.Show("Error al leer de la bd: " + ex + "."); } }

Accion del RadioButton Nombre

if (rd2.Checked == true) { try { //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Nombre like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables[0]; } catch (Exception ex) { MessageBox.Show("Error al leer de la bd: " + ex + "."); } }

Accion del RadioButton Ciudad

if (rd3.Checked == true)

221 | P á g i n a

{ try { //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Ciudad like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables[0]; } catch (Exception ex) { MessageBox.Show("Error al leer de la bd: " + ex + "."); } }

Accion del RadioButton Apellido

if (rd4.Checked == true) { try { //limpiamos la tabla DataTable dt = tabla.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from Empleados where Apellido like '" + textBox1.Text + "%'", conexion); ad.Fill(datos, "Empleados"); tabla.DataSource = datos.Tables[0]; } catch (Exception ex)

222 | P á g i n a

{ MessageBox.Show("Error al leer de la bd: " + ex + "."); } } }

Y por último el código que se pondrá dentro del DataGridView que se utiliza para poder realizar la acción que cuando el usuario busque un registro y le aparezca en la tabla este seleccione el registro que quiera y se cargue automáticamente en los cuadros de textos.

//para cargar de la tabal a los cuadros de texto private void tabla_CellContentClick(object sender, DataGridViewCellEventArgs e) { txtCedula.Text = tabla.CurrentRow.Cells[0].Value.ToString(); txtNombre.Text = tabla.CurrentRow.Cells[1].Value.ToString(); txtApellido.Text = tabla.CurrentRow.Cells[2].Value.ToString(); txtFecha.Text = tabla.CurrentRow.Cells[3].Value.ToString(); txtCargo.Text = tabla.CurrentRow.Cells[4].Value.ToString(); txtCiudad.Text = tabla.CurrentRow.Cells[5].Value.ToString(); }

CONCLUSIÓN Visual Studio, es un idioma muy completo para uso de formularios y manejo con bases de datos, es muy claro y tiene muy buena ayuda en castellano. Sus usos para fines administrativos y contables para pequeñas y medianas administraciones, lo hacen ser uno de los mejores en esa materia. Es por esto que este sistema ofrece una visión global de lo que podría ser la búsqueda de un medicamento, empleado, etc., dentro del Subcentro de Salud “Velasco Ibarra” la aplicación ofrece alta interactividad con las personas que vayan a trabajar con el sistema, y puede ofrecer datos de manera rápida y sencilla.

223 | P á g i n a

ACTIVIDAD N°:

31

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la validación de la llave principal.

UNIDAD N° 3.8:

VALIDACIÓN DE INTEGRIDAD REFERENCIAL (LLAVE PRINCIPAL)

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

11/06/2012 - 12/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

224 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Validación de Integridad Referencial (Llave principal y llave ajena). Definición de Bases de Datos. Es una colección de datos referentes a una organización estructurada según un modelo de datos de forma que refleja las relaciones y restricciones existentes entre los objetos del mundo real, y consigue independencia, integridad y seguridad de los datos. Lo que debemos tener claro es la diferencia entre Base de Datos y SGBD. La base de datos es el almacenamiento donde residen los datos. El SGBD es el encargado de manipular la información contenida en ese almacenamiento mediante operaciones de lectura/escritura sobre la misma. Además las bases de datos no sólo contendrán las tablas (ficheros) de datos, sino que también almacenará formularios (interfaces para edición de datos), consultas sobre los datos, e informes. El SGBD se encargará de manipular esos datos, controlar la integridad y seguridad de los datos, reconstruir y reestructurar la base de datos cuando sea necesario. Introducción a las técnicas de Bases de Datos. El objetivo principal de las bases de datos es el de unificar los datos que se manejan y los programas o aplicaciones que los manejan. Anteriormente los programas se codificaban junto con los datos, es decir, se diseñaban para la aplicación concreta que los iba a manejar, lo que desembocaba en una dependencia de los programas respecto a los datos, ya que la estructura de los ficheros va incluida dentro del programa, y cualquier cambio en la estructura del fichero provocaba modificar y recompilar programas. Además, cada aplicación utiliza ficheros que pueden ser comunes a otras de la misma organización, por lo que se produce una REDUNDANCIA de la información, que provoca mayor ocupación de memoria, laboriosos programas de actualización (unificar datos recogidos por las aplicaciones de los diferentes departamentos), e inconsistencia de datos (no son correctos) si los datos no fueron bien actualizados en todos los programas. Con las bases de datos, se busca independizar los datos y las aplicaciones, es decir, mantenerlos en espacios diferentes. Los datos residen en memoria y los programas mediante un sistema gestor de bases de datos, manipulan la información. El sistema gestor de bases de datos recibe la petición por parte del programa para manipular los datos y es el encargado de recuperar la información de la base de datos y devolvérsela al programa que la solicitó. Cada programa requerirá de una cierta información de la base de datos, y podrá haber otros que utilicen los mismos datos, pero realmente residirán en el mismo espacio de almacenamiento y los programas no duplicarán esos datos, si no que trabajarán directamente sobre ellos concurrentemente. Aunque la estructura de la base de datos cambiara, si los datos modificados no afectan a un programa 225 | P á g i n a

específico, éste no tendrá por qué ser alterado. Mediante estas técnicas de base de datos se pretende conseguir a través del Sistema Gestor de Bases de Datos(SGBD): • INDEPENDENCIA de los Datos: Cambios en la estructura de la Base de Datos no modifican las aplicaciones. • INTEGRIDAD de los Datos: Los datos han de ser siempre correctos. Se establecen una serie de restricciones (reglas de validación) sobre los datos. • SEGURIDAD de los Datos: Control de acceso a los datos para evitar manipulaciones de estos no deseadas. INTEGRIDAD REFERENCIAL Podemos definir integridad referencial al hecho de no hacer referencia a registros o campos que no existen porque nunca fueron creados o por que han dejado de existir en el transcurso de la base de datos. Por tanto podemos afirmar que la integridad referencial impide que queden registros huérfanos, ya que no podemos hablar de una persona que figura en la tabla de ventas si esta no existe en la tabla de clientes. En una clave ajena no puede haber un valor no nulo que no exista en la tabla de referencia”. Para que no existan errores de integridad referencial en la base de datos, el sistema comprueba automáticamente que los valores introducidos en las claves ajenas existan en el campo de referencia en la otra tabla, si no existe, no nos dejará insertar el registro. La integridad referencial garantiza que los cambios efectuados en una tabla no afectaran a la relación. Además impide: Añadir un registro a la tabla seleccionada si el valor del campo de relación no existe en la tabla principal. Eliminar un registro de la tabla principal si tiene registros relacionados en la tabla relacionada. Esto quiere decir, siguiendo con el ejemplo anterior, que antes de borrar a una persona de la tabla de clientes, habría que borrarla de la tabla de ventas, ya que no pueden existir ventas de un cliente inexistente. Modificar el campo de relación en la tabla principal si tiene registros relacionados en la tabla relacionada. Modificar el campo de relación en la tabla relacionada si el nuevo valor que se indexa en el no existe en la tabla principal, ya que este debe estar también en la tabla principal. Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que 226 | P á g i n a

existe en la otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves foráneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en las claves foráneas valores que no estén en la tabla principal. La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla. ¿Cuándo se pueden producir errores en los datos? Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave foránea no existe en la tabla principal. insertamos un nuevo habitante y en la columna población escribimos un código de población que no está en la tabla de poblaciones (una población que no existe). Cuando modificamos el valor de la clave principal de un registro que tiene 'hijos', modificamos el código de Valencia, sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía habitantes asignados, qué pasa con esos habitantes, no pueden seguir teniendo el código de población 1 porque la población 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el código de Valencia o bien cambiar el código de población de todos los habitantes de Valencia y asignarles el código 10. Cuando modificamos el valor de la clave foránea, el nuevo valor debe existir en la tabla principal. Por ejemplo cambiamos la población de un habitante, tenía asignada la población 1 (porque estaba empadronado en valencia) y ahora se le asigna la población 2 porque cambia de lugar de residencia. La población 2 debe existir en la tabla de poblaciones. Cuando queremos borrar una fila de la tabla principal y ese registro tiene 'hijos', por ejemplo queremos borrar la población 1 (Valencia) si existen habitantes asignados a la población 1, estos no se pueden quedar con el valor 1 en la columna población porque tendrían asignada una población que no existe. En este caso tenemos dos alternativas, no dejar borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el campo población de todos sus 'hijos'. Asociada a la integridad referencial están los conceptos de actualizar los registros en cascada y eliminar registros en cascada. Actualizar en cascada los campos relacionados:

227 | P á g i n a

Al activar esta opción, si realizamos alguna modificación en el campo clave principal de la tabla principal, Access realizara una actualización automática en el campo relacionado de la tabla relacionada. Eliminar en cascada los registros relacionados: Si eliminamos un registro en la tabla principal, se eliminaran automáticamente todos los registros relacionados en las demás tablas relacionadas. Tipos de restricciones de integridad Datos Requeridos: establece que una columna tenga un valor no NULL. Se define efectuando la declaración de una columna es NOT NULL cuando la tabla que contiene las columnas se crea por primera vez, como parte de la sentencia CREATE TABLE. Chequeo de Validez: cuando se crea una tabla cada columna tiene un tipo de datos y el DBMS asegura que solamente los datos del tipo especificado sean ingresados en la tabla. Integridad de entidad: establece que la clave primaria de una tabla debe tener un valor único para cada fila de la tabla; si no, la base de datos perderá su integridad. Se especifica en la sentencia CREATE TABLE. El DBMS comprueba automáticamente la unicidad del valor de la clave primaria con cada sentencia INSERT Y UPDATE. Un intento de insertar o actualizar una fila con un valor de la clave primaria ya existente fallará. Integridad referencial: asegura la integridad entre las llaves foráneas y primarias (relaciones padre/hijo). Como crear una Integridad Referencial utilizando el DBMS Colocaremos un ejemplo de una base de datos que esté relacionado la tabla Empleados y la tabla Proyectos donde existe una relación uno a varios, dentro de la relación activaremos la integridad referencial.

228 | P á g i n a

Al crear la relación con su respectiva integridad referencial nos quedara las tablas relacionadas de la siguiente manera

Ahora dentro del programa realizado en C# vemos que dentro de los registros de la tabla Proyecto existen 2 registros donde aparece el Empleado “Byron Aguilar”

Si dentro del programa eliminamos el registro de este empleado como vemos en imagen, también se eliminará el proyecto ya que esta activada la integridad referencial

229 | P á g i n a

Luego de haber eliminado el registro del empleado, volvemos a la tabla de registro de los proyectos y nos damos cuenta que los proyectos en los que constaba el empleado eliminado, también se ha eliminado

Como crear una Integridad Referencial utilizando el Codificación C# Para realizar la practica con respecto a la integridad referencial vamos a necesitar los siguientes elementos los cuales lo encontraremos en el botón cuadro de herramientas en la barra de herramientas de la aplicación visual C#.

Damos clic ahí y nos aparecerá en el lado derecho una ventana con todos los elementos para realizar un formulario.

230 | P á g i n a

De esta lista escogeremos los siguientes elementos:     

1 DataGridView 1 Panel 3 Label 3 TextBox 2 Button

Los cuales colocaremos de la siguiente forma:

231 | P á g i n a

Una vez que tenemos la interfaz grafica procederemos ha realizar la programación respectiva del botón “Ingresar (1 método)” Ahora en la parte de la programación contamos con 3 capas para realizar esta práctica.

  

La primera capa será la capa de los formularios es decir q ahí van todos los formularios que hagamos. La capa dos estar la lógica, aquí encontraremos todos las clases necesarias con sus respectivos métodos. Y la tercera y ultima capa se encontrará la base de datos en esta clase se definirá todo con respecto a la conexión de la base de datos con SQL SERVER MANAGER 2008.

Para realizar la codificación respectiva al botón del primer metodo utilizaremos las siguientes clases:

232 | P á g i n a

  

frmClientes (la una pestaña esta el diseño del formulario y en la otra la codificación del formulario) CAPA 1 controlClientes (parte lógica del botón) CAPA 2 baseDatos (conexión y sentencias sql) CAPA3

Ahora demos doble clic en ese botón y nos enviara a la parte del código de la clase frmClientes de ese botón el cual por defecto estará escrito esta parte del código. private void button1_Click_1(object sender, EventArgs e) { } Dentro de esta línea de código empezaremos a escribir lo siguiente controlClientes ctrlClientes = new controlClientes(); de esta forma instaciamos un objeto de la clase controClientes para poder acceder a sus métodos.

Dentro de este método escribiremos lo siguiente: int error= ctrlClientes.ingresarCliente(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text);//inicializamos la variable error y le asignamos el metodo ingresarCliente y como lo que escribimos en los textBox es tipo text y un parámetro que recibe el método es entero tenemos que convertirlo por medio del castig Convert.ToInt16 el cual convertirá el nummero que ingresemos en el textBox en entero.

Seguido de esto en la clase controlClientes tendremos el metodo ingresarCliente, este método recibe como parámetro 3 cosas, es decir de la siguiente manera: public int { }

ingresarCliente(int codigo, String nombre, String apellido)

Dentro de este método haremos una instanciación a la clase baseDatos para poder acceder a sus métodos. baseDatos bd = new baseDatos(); instanciamos la clase// String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')");// en esta línea estamos escribiendo nuestra sentencia y utilizamos INSERT para insertar los datos q se ingresan en el textBox.

233 | P á g i n a

Seguidamente a esta línea escribimos la siguiente línea en la que ya llamamos al método ejecutarComandos de la clase baseDatos, el cual recibe como parámetro la sentencia que nosotros escribimos. public int ejecutarComandos(String sql) { conectar();//establecemos la conexión con la bse de datos comandos.CommandText = sql; especificamos el tipo de sentencia en este caso sql comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado

Realizamos un try catch para capturar errore en los cuales definiremos lo siguiente: 

si la excepción cae en el try “el ingreso se realizo con éxito”, pasando directamente a cerrar la conexión y retornándome un valor de 0. try {

comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito");//envía un mensaje por consola que se realizo con éxito el ingreso } cerrarConexion(); return 0;



si la excepción cae en el catch “el ingreso me va a dar error”, cerrará la conexión y me retornará un valor de 1 catch (SqlException exc) { Console.WriteLine("ERROR: "+ exc.Message); return 1; } }

Una vez que me retornan los valores de 0 o 1 respectivamente este valor se retornara en la capa anterior que es la numero 2 la capa de la lógica donde esta la clase controlCliente en donde se inicializa la variable error para que reciba un entero. int error= bd.ejecutarComandos(sentencia);// se inicializa “error” y le asignamos el método ejecutarComandos y como parámetro la sentencia que escribimos.

Seguida a esta línea escribiremos la siguiente que nos permite obtener el valor del error de la capa3 de la base de datos. return error;// este error captura el error de la base de datos sea 0 o 1

Una vez que este error tiene el valor de la capa 3 lo envía a la capa 1 donde se encuentra la clase del formulario; en esta parte se hará la comparación. 234 | P á g i n a

Si el valor q retorna es cero entra en el if actualiza la tabla y envía el mensaje “Se realizo con éxito” if (error == 0)//compara el valor de retorno { ActualizarGRID();//actualiza la tabla MessageBox.Show("Registro Guardado con Exito", "Guardar");//muestra mensaje }

Pero si el valor q retorna es uno pasa el if y se ejecuta la línea del else mostrándome un mensaje de error else MessageBox.Show("ERROR", "REGISTRO NO GUARDADO");//muestra mensaje

Ahora si una vez explicado las líneas de código aquí les dejo para q se guíen de una mejor forma cada clase con su método y líneas de código utilizado. CAPA 1 FORMULARIOS CLASE: frmClientes private void button1_Click_1(object sender, EventArgs e) { controlClientes ctrlClientes = new controlClientes();

235 | P á g i n a

int error= ctrlClientes.ingresarCliente(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text); if (error == 0) { ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar"); } else MessageBox.Show("ERROR", "REGISTRO NO GUARDADO"); }

CAPA 2 LÓGICA CLASE: controlClientes public int {

ingresarCliente(int codigo, String nombre, String apellido)

//DataTable tabla = new DataTable(); baseDatos bd = new baseDatos(); String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')"); int error= bd.ejecutarComandos(sentencia); return error; }

CAPA 3 BASE DE DATOS CLASE: baseDatos

public int ejecutarComandos(String sql) { //Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: "+ exc.Message); return 1; }

236 | P á g i n a

cerrarConexion(); return 0; }

BOTON INGRESAR (2 METODO) -

En el cuadro de herramientas se selecciona un botón para poder agregar al formulario

-

En la clase lógica “controlClientes” se encuentra el método “verificarllaveprimaria”

-

Aquí recibe como parámetro un entero que será el código

-

Instanciaremos un objeto de la clase “baseDatos” para poder acceder su método “ejecutarSeleccionSQL”

-

La variable sentencia guardara la sentencia sql que se va implementar para poder seleccionar de la base de datos el código que se haya ingresado en el formulario. public int verificarLlavePrimaria(int codigo) {

baseDatos bd = new baseDatos(); String sentencia = ("Select * from clientes where id_cliente = codigo); DataTable tabla= bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t;

" +

}

-

En la clase de la base de dato “baseDatos” se encuentra el método “ejecutarSeleccionSQL”.

-

Este método recibe como parámetro la sentencia sql.

-

Aquí se instancia una tabla en donde recibe como parámetro la sentencia sql y la conexión para conectarse con la base de datos y pueda ver los registros.

-

Luego se llenara o cargara la tabla con la consulta que se hizo en la base de datos, es decir con los códigos que se encuentra en dicho registro. public DataTable ejecutarSeleccionSQL(String sql) { DataTable tabla = new DataTable(); SqlDataAdapter adap = new SqlDataAdapter(sql, miConexion); //sirve para hacer selecciones SQL adap.Fill(tabla); //llena o carga la tabla con la base de datos return tabla;

237 | P á g i n a

}

-

Aquí retorna lo que está en la variable tabla para guardarse en la variable tabla que está en la clase “controlClientes” DataTable tabla=

-

bd.ejecutarSeleccionSQL(sentencia);

De ahí cuenta el numero de filas que tiene dicha tabla y lo guarda en t int t = tabla.Rows.Count;

-

Entonces en la clase del formulario con el método “verificarllaveprimaria” con lo que retorna “t” el número de filas si este es igual a 1 no podrá ingresarse un nuevo registro ya que esta existente esa llave primaria. Pero si es igual a 0 si se puede ingresar un nuevo registro.

private void button2_Click(object sender, EventArgs e) { controlClientes ctrlClientes = new controlClientes(); int numRegistro=ctrlClientes.verificarLlavePrimaria(Convert.ToInt16(txtCodigo.Text) ); if (numRegistro == 0) { //MessageBox.Show("LLAVE PRIMARIA NO REPETIDA", "CORRECTO" ); ctrlClientes.ingresarCliente2(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text); ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar"); } else MessageBox.Show("LLAVE PRIMARIA REPETIDA", "MAL"); }

-

Dentro del if se encuentra el método ingresarCliente2 que está en la clase controlClientes.

-

Aquí el siguiente método recibe como parámetro el código, el nombre y apellido del cliente.

-

Se instancia un objeto de la clase “basededatos”

-

En la variable “sentencia” se guardará la sentencia sql insert.

-

Se llama al método “ejecutarComandos2” que está en la clase de “baseDatos”.

public void ingresarCliente2(int codigo, String nombre, String apellido)

238 | P á g i n a

{

baseDatos bd = new baseDatos(); String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')"); bd.ejecutarComandos2(sentencia); } }

-

Este método “ejecutarComandos2” recibe como parámetro la sentencia sql.

-

Hace que se ejecute la sentencia sql.

-

Verifica si se realizo con éxito cuando entra al try

-

En caso de que no sea así el catch me mostrará un mensaje en consola que hubo un error.

-

Por último cierra la conexión.

public void ejecutarComandos2(String sql) { //Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: " + exc.Message); } cerrarConexion(); }

CAPA 1 FORMULARIOS private void button2_Click(object sender, EventArgs e) { controlClientes ctrlClientes = new controlClientes(); int numRegistro=ctrlClientes.verificarLlavePrimaria(Convert.ToInt16(txtCodigo.Text) ); if (numRegistro == 0)

239 | P á g i n a

{ //MessageBox.Show("LLAVE PRIMARIA NO REPETIDA", "CORRECTO" ); ctrlClientes.ingresarCliente2(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text); ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar"); } else MessageBox.Show("LLAVE PRIMARIA REPETIDA", "MAL");

}

CAPA 2 LOGICA public int verificarLlavePrimaria(int codigo) { baseDatos bd = new baseDatos(); String sentencia = ("Select * from clientes where id_cliente = " + codigo); DataTable tabla= bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t; }

public void ingresarCliente2(int codigo, String nombre, String apellido) { baseDatos bd = new baseDatos(); String sentencia = ("INSERT INTO clientes (id_cliente , nombre_cliente , apellido_cliente) VALUES ( ' " + codigo + "','" + nombre + "','" + apellido + "')"); bd.ejecutarComandos2(sentencia); }

CAPA 3 BASE DE DATOS public DataTable ejecutarSeleccionSQL(String sql) { DataTable tabla = new DataTable(); SqlDataAdapter adap = new SqlDataAdapter(sql, miConexion); //sirve para hacer selecciones SQL adap.Fill(tabla); //llena o carga la tabla con la base de datos return tabla; }

public void ejecutarComandos2(String sql) { //Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado

240 | P á g i n a

try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: " + exc.Message); } cerrarConexion();

}

Formulario CELULARES Bueno primeramente este proyecto echo en c# esta realizado en capas esto nos sirve para no mezclar el código y será más fácil utilizarlo, como lo muestro a continuación:

Capa 1 que es AccesoADatos

Capa 2 que es ExposicionIntegralReferencial Capa 3 que es LOGIC

Luego de crear las capas procedemos a crear el formulario, para ello seleccionamos la capa en la que deseamos crear el formulario y damos Click derecho buscamos la opción Agregar y se nos despliega más opciones en la cual seleccionamos Windows froms y damos Click ….

241 | P á g i n a

Luego nos aparecerá una new ventana en la cual colocaremos el nombre de cómo queremos que se llame el new formulario en mi caso le colocare fromCelulares.cs y podemos notar que se pone automáticamente la extensión .cs y damos Click en aceptar y se nos creara el nuevo from el cual nos aparecerá totalmente Facio o limpio.

Form New

Luego de tener el new From procedemos a colocar los componentes en el from para ello se los debe seleccionar del cuadro de herramientas en el cual hay muchos componentes como observamos en la imagen.

242 | P á g i n a

El cuadro de herramientas consta de varias pestañas como controles comunes, contenedores entre otras mas

Para agregar los componentes solo se los debe arrastrar al from, en mi caso le coloque botones una DATAGRIDVIEW (tabla), label y textbox y un Panel.

DATAGRIDVIE W LABEL PANEL

BUTTON

TEXTBOX

243 | P á g i n a

Estos componentes mencionados anteriormente se les puede cambiar de apariencia entre otras cosas mediante las propiedades en el caso del button se le puede colocar imagen al panel igual a los label, textbox y button se les puede colocar un formato y color de la letra, para esto seleccionar el campo y les aparece al lado izquierdo la herramienta de las propiedades.

Una vez ya creado el from y colocado los componentes y colocándole nombre a los componentes para que se nos haga más fácil su utilización procedemos a realizar la codificación de los botones q hallamos colocado.

Le damos doble Click para abrir modo edición el cual nos dará método con evento para que momento de ejecutarlo funcione

Al hacer doble Click nos aparecerá lo siguiente, el cual es el modo de edición:

244 | P á g i n a

el un al el

Como pueden ver lo seleccionado es el código que contiene nuestro botón. Al darle doble Click en nuestro botón. Por defecto nos aparecerá el siguiente método el cual recibe el evento para su ejecución al darle Click cuando este en marcha el programa. Private void button1_Click (object sender, EventArgs e) { }

A continuación se mostrara el código del botón. private void button1_Click(object sender, EventArgs e) { //lo que hacemos aquí es simplemente crear un new objeto de la clase controlCelular que se encuentra en la Capa LOGIC controlCelulares ctrlCelulares = new controlCelulares(); //primeramente se creado el objeto mediante la instanciación utilizamos el método ingresar celular la cual recibe parámetros de tal forma que convertimos lo que capturamos en el textbox llamado txtcodigo a un entero de 16bits porque este método recibe parámetros String y el código entero por lo cual hacemos la conversión //la variable entera declarada int error nos va a servir para guardar el valor del error ya se ha este 0 o 1; int error = ctrlCelulares.ingresarCelular(Convert.ToInt16(txtCodigo.Text), txtMarca.Text, txtModelo.Text , txtPertenece.Text); //nos preguntamos si el error q nos devuelve en igual igual a 0 si es así ara lo siguiente caso contrario salta al else. if (error == 0) { //llama el metodo actualizarGrip la cual se encuentra en la misma clase. ActualizarGRID(); //nos presenta un mensaje que nos indica que se guardo correctamente. MessageBox.Show("Registro Guardado con Éxito", "Guardar"); //aquí simplemente hacemos que al momento que se guarde los datos se limpien los textbox en el cual mediante el .Text= “”; para que queden vacio y se borre lo que estaba en ellos. txtCodigo.Text = " "; txtMarca.Text = " ";

245 | P á g i n a

txtModelo.Text = " "; txtPertenece.Text = ""; } Else //nos mostrara un mensaje de error porq retorno el valor 1 MessageBox.Show("ERROR", "REGISTRO NO GUARDADO"); } public int ingresarCelular(int codigo, String marca, String modelo , String pertenece) { //crear un new objeto de la clase baseDatos que se encuentra en la Capa LOGIC AccesoADatos baseDatos bd = new baseDatos(); //creamos una new variable tipo string la cual utilizaremos para guardarlo que ingresamos en tabla celulares String sentencia = ("INSERT INTO celulares (id_celular , marca_celular , modelo_celular , id_cliente ) VALUES ( ' " + codigo + "','" + marca + "','" + modelo + "','" + pertenece + "')"); //se llama el metodo ejecutarComandos de la clase basedatos y le mandamos en este caso la variable que creamos de tipo String la cual será como sentencia sql, la variable int error es la que nos va a almacenar ya se 0 o 1 deacuerdo al error int error = bd.ejecutarComandos(sentencia); return error; //retornara 0 o 1 }

public int ejecutarComandos(String sql) { conectar(); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: "+ exc.Message); return 1; } cerrarConexion(); return 0; } private void ActualizarGRID() { //lo que hacemos aquí es simplemente crear un new objeto de la clase controlCelular que se encuentra en la Capa LOGIC controlCelulares ctrlCelulares = new controlCelulares(); tblCelulares.DataSource = ctrlCelulares.mostrarDatosEnGrid("celulares"); }

246 | P á g i n a

public DataTable mostrarDatosEnGrid(String nombreTabla) { //Creamos un new objeto de la clase baseDatos que se encuentra en la Capa AccesoADatos baseDatos bd = new baseDatos(); //creamos una variable tipo String y la inicializamos String nomTabla = nombreTabla; //llamamos al metodo llenartabla y le mandamos el parámetro el cual es la variable q creamos en este caso nomTabla DataTable s = bd.llenarTabla(nomTabla); return s; //retorna en este caso los datos de la tabla }

Formulario Celulares (usando el boton de 2 metodo) Primeramente hay que crear un proyecto y dentro del proyecto las siguientes clases. Lo podremos hacer desde el menú archivo de C#

Seguido de eso en el formulario Celulares.cs tendremos que tener los siguientes controles:    

Un datagrid 3 labels 3 textboxs 2 botones

247 | P á g i n a

Ahora damos doble clic en el botón ingresar 2 metodo para acceder al código y codificamos lo siguiente controlClientes ctrlClientes = new controlClientes(); int numRegistro=ctrlClientes.verificarLlavePrimaria(Convert.ToInt16(txtCodigo.Text) ); if (numRegistro == 0) { //MessageBox.Show("LLAVE PRIMARIA NO REPETIDA", "CORRECTO" );

ctrlClientes.ingresarCliente2(Convert.ToInt16(txtCodigo.Text), txtNombre.Text, txtApellido.Text); ActualizarGRID(); MessageBox.Show("Registro Guardado con Exito", "Guardar"); } else MessageBox.Show("LLAVE PRIMARIA REPETIDA", "MAL");

}

Lo que hace este código es extraer los valores de los textboxs para su validación primeramente y luego para hacer el respectivo ingreso.

Ahora no dirigiremos a la clase controlCelulares.cs que la podremos apreciar en el explorador de proyectos ubicado en el lado derecho de C#

Y tendremos estos códigos:

248 | P á g i n a

METODO PARA VERIFICAR QUE LA LLAVE PRIMARIA QUE NO ESTÉ REPETIDA public int verificarLlavePrimaria(int codigo) {

baseDatos bd = new baseDatos(); String sentencia = ("Select * from celulares where id_celular = " + codigo); DataTable tabla = bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t; }

249 | P á g i n a

ACTIVIDAD N°:

32

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar validar la llave ajena.

UNIDAD N° 3.9:

VALIDACIÓN DE INTEGRIDAD REFERENCIAL (LLAVE AJENA)

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

13/06/2012 - 14/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

250 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Continuando con el ejercicio anterior, podemos realizar la verificación de la integridad referencial en cuanto a la llave ajena.

METODO PARA VERIFICAR QUE LA LLAVE AJENA TENGA REFERENCIA A LA TABLA PRINCIPAL. public int verificarLlaveAjena(int codigo) {

baseDatos bd = new baseDatos(); String sentencia = ("Select * from clientes where id_cliente = " + codigo); DataTable tabla = bd.ejecutarSeleccionSQL(sentencia); int t = tabla.Rows.Count; return t; } Método para relizar el ingreso de datos public void ingresarCelular2(int codigo, String marca, String modelo, String pertenece) { //DataTable tabla = new DataTable(); baseDatos bd = new baseDatos(); String sentencia = ("INSERT INTO celulares (id_celular , marca_celular , modelo_celular , id_cliente ) VALUES ( ' " + codigo + "','" + marca + "','" + modelo + "','" + pertenece + "')"); bd.ejecutarComandos2(sentencia); } Todos estos métodos llaman a diferentes métodos de selección de datos, estos métodos se encuentran en la clase baseDatos.cs que la podemos apreciar en el explorador de proyectos, ubicado generalmente al lado derecho de C#. Dichos métodos son:

251 | P á g i n a

Método para ejecutar las sentencias Select. public DataTable ejecutarSeleccionSQL(String sql) { DataTable tabla = new DataTable(); SqlDataAdapter adap = new SqlDataAdapter(sql, miConexion); //sirve para hacer selecciones SQL adap.Fill(tabla); //llena o carga la tabla con la base de datos return tabla; }

Metodo para realizar el insert a la base de datos public void ejecutarComandos2(String sql) { //Console.WriteLine("LLEGA A EJECUTAR COMANDOS "); conectar(); //onsole.WriteLine("SI CONECTA"); comandos.CommandText = sql; comandos.CommandType = CommandType.Text; //especifica que vamos a mandar es texto, no un procedimiento almacenado try { comandos.ExecuteNonQuery();//hace que se ejecute la sentencia sql Console.WriteLine("Se Realizó con Exito"); } catch (SqlException exc) { Console.WriteLine("ERROR: " + exc.Message); } cerrarConexion(); }

En primera instancia nuestro programa en ejecución tendrá la siguiente ventana

252 | P á g i n a

En el formulario también tenemos un botón con un icono de binoculares, cual nos va ayudar a seleccionar la llave ajena para su ingreso.

Vamos al código de este winowsForm El cual es la clase busquedaCliente.cs public String id; private void tblClientes_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.RowIndex == -1) return; id = "" + tblClientes.Rows[e.RowIndex].Cells[0].Value; txtCodigo.Text = id; }

private void button1_Click(object sender, EventArgs e) { this.Hide();

}

Lo que hace es que al seleccionar un registro con el mouse en la tabla, se pase el dato del id al textbox y cuando pulsemos aceptar, este form se cierra y se llena en el formulario principal.

253 | P á g i n a

ACTIVIDAD N°:

33

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la relación de información (registros) cuando se utilizan formularios de 1 a 1.

UNIDAD N° 3.10:

FORMULARIOS CON RELACIÓN 1 A 1

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

18/06/2012 - 19/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

254 | P á g i n a

ACTIVIDAD N°:

34

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear o utilizar valores automáticos para las llaves principales (códigos, ids, entre otros)

UNIDAD N° 3.11:

CREACIÓN DE VALORES AUTOMÁTICOS

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

20/06/2012 - 21/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

255 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCION La presente investigación se refiere al tema de validación de campos. La validación de datos nos permite definir el tipo de datos que se desea introducir en una celda, haciendo más seguro los datos que se ingresan y se puede configurar la validación de datos para evitar que los usuarios introduzcan datos no válidos o permitir su entrada y comprobarlos tras finalizar el usuario. En muchos casos de sistemas se requiere información de confiabilidad para que los registros sean correctos. Los controles de validación comprueban los datos proporcionados por el usuario en los controles SelectionList y TextBox. La validación se produce cuando el formulario se envía al servidor. Los controles de validación comprueban los datos proporcionados por el usuario y, si estos no superan alguna de las pruebas de validación, ASP.NET devuelve la página al dispositivo de cliente. Cuando esto ocurre, los controles de validación que detectaron los errores muestran mensajes de error. La creación de valores auto numérico nos ayuda asignar un número creciente o aleatorio a ese campo en cada nuevo registro que se agregue a la tabla. Es ideal para el caso en que debemos numerar los registros por orden de llegada. La validación de datos se hace verdaderamente importante para cualquier proyecto, ya que así impedimos que los usuarios que hagan uso del software que nosotros desarrollemos tengan menos posibilidad de cometer errores en el traspaso de datos. La validación de datos se hace de distintas formas, pero también hay distintos tipos. A continuación en el siguiente manual veremos de forma más específica la creación de valores automáticos (Código). También como validar números, letras, si existen o no datos dentro de un cuadro de texto, cedula. Para crear valores automáticos al momento de insertar nuevos registros lo podemos hacer de dos formas. -

En la Base de Datos

-

Por Codificación

256 | P á g i n a

CREACION DE VALORES AUTOMATICOS A TRAVÉS DEL DBMS (CODIGO PRINCIPAL NUMERICO) Creación de valores automáticos en Access.Una de las necesidades más frecuentes que se plantean en las bases de datos consiste en la creación de valores automáticos al momento de realizar cálculos matemáticos con datos combinados que pertenecen a distintos campos. En Access, la mejor manera de hacerlo es mediante la creación de un campo nuevo que realice estas operaciones. Hay que realizarlo sobre una consulta. 1) Creamos una nueva base de datos con su nombre en Access. Ejemplo: Escuela

2) Creamos una nueva tabla en la que podemos dar propiedades al campo que queramos sean automáticos. Por ejemplo: Al crear la tabla alumnos podemos escoger que el primer campo sea de autonumeración o autogenerado, en este caso el Id del alumno.

257 | P á g i n a

Entonces al momento de realizar un nuevo registro este campo será generado sólo, incrementando de uno en uno, sin la necesidad de insertar algún valor en este campo. 3) Seguimos creando los demás campos y guardamos la tabla con su respectivo nombre. Ejemplo: Alumnos

4) Una vez ya creada la tabla podremos guardar información en esta. Entonces al momento de trabajar con una conexión de Visual Studio con Access lo podemos comprobar. 5) Ejecutamos nuestro programa que nos permitirá almacenar un nuevo registro en la tabla “Alumnos” de nuestra base de datos.

6) Insertamos el nombre, apellido, la edad y esta información se guardará en la base de datos. El Id es generado automáticamente gracias a la propiedad del tipo de dato (Autonumeración) asignado al momento de crear este campo.

258 | P á g i n a

Codificación del Ejemplo Planteado. 1) Primeramente creamos un nuevo proyecto en Visual Studio C#. Clic en “Nuevo Proyecto” y nos aparecerá la ventana de abajo y le damos un nombre. Ejemplo: MiProyecto.

2) Se creará un formulario que será la ventana que interactúa con el usuario. 3) Creamos una clase para poder conectarnos a nuestra base de datos de Access. Con la siguiente codificación:

Ruta de la base de Datos

Abrimos la Conexión

Método para cerrar la Conexión

4) Creamos la tabla y los campos necesarios para ingresar los datos en nuestro formulario. 259 | P á g i n a

Tabla (DataGridView) Campos de Registro

Botón Guardar

5) En el formulario estará un evento para visualizar la información de mi base de datos y llenar la tabla con estos, también tendremos un método que al pulsar el botón se nos guardarán los nuevos datos ingresados en los campos nombre, apellido y edad.

Abrimos la conexión con la base Buscamos todos los registros de la tabla alumnos en la base de datos y son enviados al método “Consultar”

Actualizamos la tabla con el nuevo registro

Llenamos la tabla de nuestro formulario

Obtenemos los datos ingresados en los campos de registro y los enviamos al método “guardar”

6) En la clase conexión tendremos un método “Consultar” que es que el realizará el llenado de la grilla cada vez que llamemos a este método.

260 | P á g i n a

Sentencia de consulta

Creación y llenado de la grilla

7) En la misma clase tendremos el método “Guardar” que es él que trabaja con el botón realizando la consulta para ingresar los datos a la base. Dentro de este tenemos 2 líneas que nos ayudan a generar el ID automáticamente, obteniendo el número total de registros y sumándole 1 para luego asignar el nuevo id al registro que está siendo guardado.

Creamos una variable para acceder al formulario

Obtenemos el número total de registros de la tabla para crear un nuevo id aumentado en uno

Consulta para insertar los datos a la base

Asignamos los datos a los campos de la tabla para el nuevo registro Ejecutamos la consulta

261 | P á g i n a

CREACIÓN DE VALORES AUTOMÁTICOS (A TRAVÉS DE CODIGO EN C#) La creación de valores auto numérico nos ayuda asignar un número creciente o aleatorio a ese campo en cada nuevo registro que se agregue a la tabla. Es ideal para el caso en que debemos numerar los registros por orden de llegada. En este caso la base de datos Access lo realiza de forma automáticamente, pero en este manual lo haremos de forma que codificamos la parte que esta salga automáticamente la numeración de los campos.

262 | P á g i n a

Aquí lo k hacemos es llamar a la sentencias SQL en este caso ocupamos el SELECT. OleDbDataAdapter canal = new OleDbDataAdapter ("SELECT * FROM Persona ", conexion); Aquí lo k hacemos crear una variable de tipo dataset para que almacena el arreglo. OleDbDataAdapter mibd = new DataSet (); try { Aquí lo k hacemos es abrir la conexión conexion.Open(); Aquí lo k hacemos es crear un canal donde vamos a poner un nombre o etiqueta donde se va guardar los arreglos.

canal.Fill(mibd, "Persona"); Aquí lo que hacemos es crear una variable de tipo entero para así guardar el número total de registros ingresados. int numero_registros = mibd.Tables["Persona"].Rows.Count; Aquí lo que hacemos es crear una variable de tipo llamada ultimo _numero aquí se va guardar el arreglo es decir al número total de posiciones. int numero_ultimo = Convert.ToInt16(mibd.Tables["Persona"].Rows[numero_registros - 1][0].ToString()); Esta condición lo que hace es decir si el número de registros es 0 tomara el txtid es valor de 1 caso contrario si el número de registros es igual numero_ultimo el txtid tomara el valor del ultimo número +1. Caso contrario de esto se hará lo mismo. Esto se da dentro del try cach. if (numero_registros == 0) { txtid.Text = "1"; } else { if(numero_registros==numero_ultimo) { txtid.Text = (numero_ultimo + 1).ToString(); } else {

263 | P á g i n a

} } catch { } Dentro del finally función casi igual al try cach pero este caso si se cumple o no igual entra al finally y realiza la acción. Finally { if (conexion.State == ConnectionState.Open) { conexion.Close (); } } }

OleDbDataAdapter Representa un conjunto de comandos de datos y una conexión de base de datos que se utilizan para rellenar Dataset y actualizar el origen de datos.

DataSet: Representa una caché de memoria interna de datos.

Fill Agrega filas en un intervalo especificado de Dataset o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando el nombre de la Tabla.

Convert Convierte un tipo de datos base en otro tipo de datos base.

ToString Devuelve una clase String que representa la clase Object actual. 264 | P á g i n a

State Obtiene el estado actual de la conexión

CONCLUSION La característica principal de este documento ha sido aprender mas sobre como utilizar la codificación y a su vez entender bien los códigos para evitar los problemas que se tornan muy seguidos si un software no cuenta con una validación de datos óptima. Al igual que la creación de valores automáticos estos dos parámetros son partes fundamentales de un sistema para ello hemos puesto ejemplos que logren un mayor entendimiento para si poner en practica en cualquier sistema a desarrollarse.

265 | P á g i n a

ACTIVIDAD N°:

35

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo validar que los datos ingresados son correctos (validación de datos), tienen integridad.

UNIDAD N° 3.12:

VALIDACIÓN DE INGRESO DE DATOS

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

20/06/2012 - 21/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

266 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

Introducción La presente investigación se refiere al tema de validación de campos, La validación de datos nos permite definir el tipo de datos que se desea introducir en una celda, haciendo más seguro los datos y Se puede configurar la validación de datos para evitar que los usuarios introduzcan datos no válidos o permitir su entrada y comprobarlos tras finalizar el usuario. En muchos casos se requiere información de la confiabilidad de que los registros sean correctos. La característica principal de este documento es saber cómo utilizar la codificación y como utilizar bien los códigos para evitar los problemas que se tornan muy seguidos si un software no cuenta con una validación de datos óptima.

Validaciones en C# La validación de datos resulta especialmente útil al diseñar formularios u hojas de cálculo que otras personas utilizarán para introducir datos como formularios presupuestarios o informes de gastos. Tipos de datos que se pueden validar C# permite designar los siguientes tipos de datos válidos para una celda: Números

Especifique que la entrada en una celda debe ser un número entero

o un número decimal. Puede establecer un mínimo o máximo, excluir un número o intervalo determinado, o utilizar una fórmula para calcular la validez de un número. Fechas y horas

Establezca un mínimo o máximo, excluya determinadas

fechas u horas, o utilice una fórmula para calcular la validez de una fecha u hora. Longitud

Limite el número de caracteres que se puede escribir en una celda o

exija un número mínimo de caracteres.

267 | P á g i n a

Lista de valores

Elabore una lista de las opciones para una celda como, por

ejemplo, pequeña, mediana, grande, y admita sólo esos valores en la celda. Se puede mostrar una flecha de lista desplegable cuando un usuario hace clic en la celda para facilitar la selección de una opción de la lista. Tipos de mensajes que se puede mostrar Para cada celda que se valida, se pueden mostrar dos mensajes diferentes: uno que aparece antes de que el usuario introduzca los datos y otro que aparece después de que el usuario intente introducir los datos que no cumplen los requisitos. Si los usuarios tienen activado el Ayudante de Office, éste mostrará los mensajes. Mensaje de entrada

Mensaje entrante Este tipo de mensaje aparece cuando

un usuario hace clic en la celda validada. Se puede utilizar este tipo de mensaje para facilitar instrucciones sobre el tipo de datos que se han de introducir en la celda. Mensaje de error

Este tipo de mensaje aparece sólo cuando el usuario escribe

datos no válidos y presiona la tecla ENTRAR. Se puede elegir entre tres tipos de mensajes de error: Mensaje de información

Este mensaje no impide la entrada de datos no

válidos. Además del texto que proporciona el usuario, incluye un icono de información, un botón Aceptar, que introduce los datos no válidos en la celda, y un botón Cancelar, que restaura el valor anterior de la celda. Mensaje de advertencia

Este mensaje no impide la entrada de datos no

válidos. Incluye el texto que proporciona el usuario, un icono de advertencia y tres botones: Sí introduce los datos no válidos en la celda, No regresa a la celda para más modificaciones y Cancelar restaura el valor anterior de la celda. Mensaje de detención

Este mensaje no permite la entrada de datos no

válidos. Incluye el texto que proporciona el usuario, un icono de detención y dos botones: Reintentar regresa

a

la

celda

para

más

modificaciones

y

Cancelar restaura el valor anterior de la celda. Observe que este mensaje no está 268 | P á g i n a

concebido como medida de seguridad: si bien los usuarios no pueden introducir datos no válidos escribiendo y presionando ENTRAR, pueden eludir la validación copiando y pegando o rellenando datos en la celda. Si no se especifica ningún mensaje, Excel marca si los datos que introduce un usuario son válidos de modo que se pueden comprobar más adelante, pero no notifica al usuario cuando una entrada no es válida. Código ASCII

Ejemplos: La cedula ecuatoriana está formada por los dos primeros dígitos que corresponden a la provincia donde fue expedida, por lo cual los dos primeros números no será mayor a 24 ni menor a 1. El tercer digito es un número menor a 6 (0, 1, 2, 3, 4, 5). 269 | P á g i n a

Los siguientes hasta el noveno digito son un número consecutivo. Y el décimo digito es el digito verificador. Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el algoritmo “Módulo 10”

Coeficientes = 2.1.2.1.2.1.2.1.2

270 | P á g i n a

Validaciones de los campos en C# Captura de pantalla de validación de Cedula

Se introduce la cedula de identidad en el campo DNI para saber si la cedula es correcta o no. En caso ser correcta aparece una ventana que dice “cedula correcta”.

En caso de ser incorrecta la cedula aparecerá una ventana “cedula incorrecta”. Código de validación de cedula: using System; using System.Collections.Generic; using System.Linq; using System.Text;

namespace Validar {

271 | P á g i n a

class ValidarDni { public bool res; public string num_cedula; public int tamanio; public ValidarDni(string num, int tam) { num_cedula = num; tamanio = tam; }

public Boolean comprobar_cedula() { int suma = 0; int j = 0; bool a = true; int x = 0;

for (int i = 0; i < tamanio - 1; i++) { j = Convert.ToInt16(this.num_cedula[i].ToString()); if (a == true) { x = j * 2; if (x > 9) { x = 1 + (x % 10); } a = false; }

else { x = j * 1; a = true; } suma += x; } x = suma % 10; j = Convert.ToInt32(this.num_cedula[tamanio - 1].ToString());

272 | P á g i n a

if (x == 0) { if (x == j) { res = true; } } else { x = (suma - x) + 10; if (j == (x - suma)) { res = true; } else { res = false; } } return res; } } }

Captura de pantalla de validación Nombre y Apellido:

273 | P á g i n a

Al introducir el nombre y el apellido en los campos de texto deben fijarse que solo sean letras y en el caso de introducir números o caracteres aparecerá una ventana que indicara “Solo letras en estos campos”. Código de validación Nombre y Apellido (Sólo Letras) private void txtNombre_KeyPress(object sender, KeyPressEventArgs e) { if (((((e.KeyChar) < 65 ) || e.KeyChar > 90) && (((e.KeyChar) < 97 ) || e.KeyChar > 122)) && (e.KeyChar != 8 && e.KeyChar != 32)) { MessageBox.Show("Solo letras"); e.Handled = true; } }

private void txtApellido_KeyPress(object sender, KeyPressEventArgs e) { if (((((e.KeyChar) < 65) || e.KeyChar > 90) && (((e.KeyChar) < 97) || e.KeyChar > 122)) && (e.KeyChar != 8 && e.KeyChar != 32)) { MessageBox.Show("Solo letras"); e.Handled = true; } }

Captura de pantalla de validación de Teléfono

274 | P á g i n a

Al introducir el número de teléfono el campo de texto deben fijarse que solo sean números en caso de introducir letras o caracteres aparecerá una ventana que indicara “Solo números Telefónicos”. Código de validación Teléfono (Sólo números) private void txtTelefono_KeyPress(object sender, KeyPressEventArgs e) { if ((((e.KeyChar) < 48 && e.KeyChar != 8 ) || e.KeyChar > 57) && e.KeyChar !=45) { MessageBox.Show("Solo numeros telefonico"); e.Handled = true; } }

Captura de pantalla de validación de Correo

Al introducir el correo en el campo de texto deben fijarse que solo sean letras y caracteres como “@,-_.” en el caso de introducir mal el correo aparecerá una ventana que indicara “Correo incorrecto”. Código de validación de Correo (Validación caracteres especiales) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions;

namespace Validacion {

275 | P á g i n a

class Email { public Boolean email_bien_escrito(String email) { String expresion; expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; if (Regex.IsMatch(email, expresion)) { if (Regex.Replace(email, expresion, String.Empty).Length == 0) { return true; } else { return false; } } else { return false; } } } }

Captura de pantalla de validación de Datos Obligatorios

276 | P á g i n a

Al introducir el DNI, nombre, apellido, dirección, teléfono y correo en los campos de texto deben fijarse que todos los campos estén llenos en caso de dejar un campo sin llenar aparecerá una ventana que indicara “Ingresar datos obligatorios”. Código de validación de Datos obligatorios (Sin datos en blanco)

private void btnIngresar_Click(object sender, EventArgs e) { if (txtDni.Text.Equals("") || txtApellido.Text.Equals("") || txtNombre.Text.Equals("") || txtDireccion.Text.Equals("") || txtTelefono.Text.Equals("") || txtCorreo.Text.Equals("")) { MessageBox.Show("Ingrese datos obligatorios"); } else { ValidarDni dni = new ValidarDni(txtDni.Text, 10);

if (dni.comprobar_cedula()) { //MessageBox.Show("Cedula correcta"); } else { MessageBox.Show("Cedula incorrecta"); }

Validacion.Email ema = new Validacion.Email();

if (ema.email_bien_escrito(txtCorreo.Text)) { //MessageBox.Show("Correo correcto"); } else { MessageBox.Show("Correo incorrecta"); }

MessageBox.Show("Datos Ingresados"); }

277 | P á g i n a

txtDni.Text = null; txtNombre.Text = null; txtApellido.Text = null; txtDireccion.Text = null; txtTelefono.Text = null; txtCorreo.Text = null; }

278 | P á g i n a

ACTIVIDAD N°:

36

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo llamar a formularios (desde menú o desde un formulario)

UNIDAD N° 3.13:

LLAMADA A FORMULARIOS

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

25/06/2012 - 26/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

279 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

NAVEGACION ENTRE FORMULARIOS

1. En el frame principal vamos a propiedades y la opción IsMdiContainer ponemos True

2. Creamos una instancia del tipo del frame del que queremos que nos aparezca en nuestra ventana principal

Inventario inven = new Inventario(); inven.MdiParent = this; inven.Show();

280 | P á g i n a

3. Una vez hecho esto nos quedará algo asi

281 | P á g i n a

ACTIVIDAD N°:

37

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo realizar la relación de información (registros) cuando se utilizan formularios de 1 a N (maestro – detalle).

UNIDAD N° 3.14:

FORMULARIOS CON RELACION 1 A N

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

27/06/2012 - 28/06/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

282 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCION

El presente trabajo escrito, correspondiente al módulo de Programación 1, se utilizará como complemento de la exposición, dentro del mismo trataremos sobre la fácil creación de facturas y manejo de cálculos dentro del entorno de Visual Studio 2008, además está enfocado en ayudar

de manera oportuna a tener un

concepto más claro de esta práctica, considerando que este informe cuenta con datos que en nuestra posterior vida profesional nos ayudará en posibles casos en los que tendremos que interactuar con estos conceptos. Desarrollaremos actitudes para poder realizar con éxito prácticas y trabajos de manera eficiente. Este informe servirá como material de apoyo para posteriores aplicaciones, permitirá ejecutar los conocimientos adquiridos a futuro y asegurara la compresión total de posibles implementaciones.

283 | P á g i n a

DISEÑO Algo fundamental en la realización de un sistema o proyecto implementado en un lenguaje de programación es el diseño, es decir que nuestra interfaz debe poseer los componentes necesarios para cada una de las funciones que se pretendan realizar. Lo primero a realizar es un proyecto nuevo declarado como Windows aplicación, el cual nombraremos con Factura1

Al realizar esto c# nos presentara por defecto un formulario de nombre Form1 en el cual añadiremos los componentes necesarios.

En nuestra práctica primero utilizaremos, un Datagridview al cual llamaremos dgArticulos además, agregaremos un label y un textBox(txtCantidadVenta) para la cantidad a vender y un Button(btnAgregar) y un textBox(txtAgregar) para Agregar.

284 | P á g i n a

Como segunda parte añadiremos un GroupBox, dentro del cual agregaremos un Datagridview llamado dgVentas, el cual tendrá como columnas la cantidad tomada del txtAgregar; la descripción, Precio Unitario tomados de la tabla artículos de la base de datos Facturacion que será creada en Acces

De igual manera en el mismo GroupBox introducimos 6 label y 6 textBox correspondientes a Pago de cliente (txtMontoFact), subtotal(txtsubtotal), Descuento (txtDescuento), Iva(lblIva), Total(lblTotal=), Cambio(lblCambio):

Por último agregaremos botones de cálculo de salida

285 | P á g i n a

FUNCIONAMIENTO Hacemos clic en la fila del producto a vender y especificamos la cantidad en el txtCantidadVenta , presionamos enter.

NOTA: Si la cantidad ingresada es mayor al stock del producto aparecerá un mensaje avisando que la cantidad debe ser menor al stock del producto y que no hay suficientes productos para la venta

Si los datos son correctos aparecerán en la tabla de descripción de la venta (dgVenta), además de reducirse el stock con respecto a la cantidad ingresada

286 | P á g i n a

En caso de querer ingresar más productos a la base: Hacemos clic sobre el producto en la tabla e ingresamos la cantidad en el txtAgregar y pulsamos el btnAgregar

Por último calculamos los valores simplemente presionamos el botón calcular

Luego ingresamos el pago del cliente y presionamos enter esto nos dará el cambio a devolver.

Para terminar la aplicación simplemente presionamos el botón Salir

287 | P á g i n a

CODIFICACION Declaración de objetos y variables

Método para la conexión y desconexión Este método es invocado en los métodos de actualizar (), modifyStock():

Método para actualizar

Método para modificar (disminuir y aumentar) el stock y tomar las filas titulo y precio unitario para enviar al método traspasar

288 | P á g i n a

Método que recibe los argumentos enviados de la modificación para actualizar la base de datos en stock

Método que recibe los argumentos de nombre del artículo y precio unitario para añadir las filas de cantidad, la descripción y el precio unitario en la tabla de dgVentas

289 | P á g i n a

Acción clic del botón calculo

Método de los cálculos

Método que al dar enter permite obtener el pago o monto del cliente y devuelve el cambio

290 | P á g i n a

Acción clic del botón Agregar

Acción que al presionar enter llena las filas cantidad descripción y precio unitario de la tabla dgVentas

CONCLUSION:

Después de la exposición y la práctica realizada en clase, estaremos en condiciones de implementar en nuestro sistema la gestión de la factura, la cual nos ayudara en posibles proyectos en los que se utilizara inventario o manejo de entrada y salida de productos.

291 | P á g i n a

ACTIVIDAD N°:

38

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear, utilizar y mostrar el menú del sistema informático

UNIDAD N° 3.15:

CREACIÓN DE MENÚS

OBJETIVO:

Diseñar programas modulares que muestren características de bajo acoplamiento y alta cohesión. Establecer los beneficios de utilizar la programación orientada a objetos.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

02/07/2012 - 03/07/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

292 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

INTRODUCCIÓN Una de las características en una aplicación de escritorio es que sea fácil de usar para el usuario. Es importante que contengan menús que puedan ofrecer atajos para los distintos procesos del sistema, además de una gacil navegación de formularios y control de los accesos de usuarios

A continuación vamos a explicar los pasos necesarios para implementar los procesos antes mencionados para que nuestra aplicación satisfaga las necesidades del usuario.

OBJETIVO Realizar un manual que describa paso a paso la creación de menús, navegación de formularios y control de usuarios mediante la investigación para poder aplicar los conocimientos adquiridos en el desarrollo de un sistema informático.

293 | P á g i n a

Menús Hoy en día la mayoría de las aplicaciones para Windows tienen menús. Es realmente sencillo trabajar con ellos con C#. Hay tres tipos de menús y los tres derivan de una clase común, denominada Menú, que proporciona la funcionalidad básica y común a las tres.

Las clases MainMenu y MenuItem MainMenu es el menú principal. Un formulario puede tener definidos varios menús principales, dependiendo del estado de algunas variables de la aplicación. Estos menús pueden unirse entre sí. Cada uno de los elementos o items o submenús –ya sean de primer o segundo nivel- de cada menú son objetos de la clase MenuItem. Estos elementos, a su vez, pueden contener otros objetos o submenús. Todos los elementos u objetos de un menú son almacenados en la colección MenuItemCollection que es una propiedad de las clases

MainMenu y ContextMenu. Los menús contextuales o también llamados menús PopUp se despliegan generalmente cuando se pulsa sobre un control con el botón derecho. Al igual que los MainMenu pueden contener varios elementos MenuItem. A continuación se 294 | P á g i n a

estudiarán las propiedades más importantes Posteriormente se estudiarán los menús PopUp.

de

la

clase

MenuItem.

Propiedades 1. Checked y RadioChecked Propiedad booleana. Indica si un elemento aparece activado con un elemento tipo Check o RadioCheck. Para que éste último tenga funcionalidad debe estar a True la propiedad Checked. 2. DefaultItem Propiedad booleana. Indica si es el elemento por defecto o predeterminado. Se escribe en letra negrita. 3. Enabled Propiedad booleana. Indica si está habilitada o no esa opción de menú. 4. MdiList Propiedad booleana. Indica si la lista de ventanas hijas MDI se añadirá a este item. 5. MergeOrder Indica el orden donde será ubicado el menú. 6. MergeType Indica el tipo de unión de los menús. 7. OwnerDraw Propiedad booleana. Indica si será Windows o el programador el responsable de dibujar el item o elemento de menú. 8. ShortCut Indica la combinación de teclas o acceso directo asociado con ese elemento.

9. ShowShortCut Propiedad booleana. Indica si aparece escrito a la derecha del item la combinación de teclas asociada al item. 10. Text Texto del elemento. 295 | P á g i n a

11. Visible Indica si un item es visible o no. Es una propiedad booleana. Eventos 1. Click Ocurre cuando se pulsa un item con el ratón. 2. DrawItem Ocurre si un item de menú necesita ser redibujado. 3. MeasureItem Ocurre justo antes de que sea redibujado un item. 4. PopUp Ocurre cuando se presentan en pantalla un submenú. 5. Select Ocurre cuando se selecciona un item del menú. Hay además dos métodos interesantes de esta clase: CloneMenu: Que permite crear un nuevo menú a partir de otros existentes y MergeMenu que permite unir dos menús. Para trabajar con menús se utiliza la clase MenuItemCollection que almacena los elementos de cada menú. Para añadir y eliminar elementos de menú a MainMenu o ContextMenu: Se utilizan los métodos de esta colección.

La clase ContextMenu Es el menú que aparece cuando se pulsa con el botón derecho del ratón. Se trabaja de la misma manera que un MainMenu con la única diferencia de que no existe un nivel principal de items y por lo tanto no se puede nombrar el principal. Los menús PopUp contienen también objetos de la clase MenuItem. Una vez diseñado el menú es necesario asociarlo a un control o a un formulario por medio de la propiedad ContextMenu del control.

La clase ImageList Este control proporciona una colección para almacenar imágenes que puede ser utilizada en otros controles como una caja de herramientas o un ListView. Aunque 296 | P á g i n a

puede almacenar imágenes de cualquier tamaño, las que se añaden a un mismo control deben tener –en general- el mismo. Sin embargo, en el caso del control ListView –y a veces las cajas de herramientas- es preciso almacenar dos tipos de tamaños de imágenes. Este control no es visible en tiempo de diseño ni en tiempo de ejecución, aunque se le pueden añadir imágenes en tiempo de diseño y en tiempo de ejecución.

La clase ToolBar Los controles ToolBar se usan para construir una barra de herramientas. Una barra de herramientas contiene, por lo general, varios controles de la clase ToolBarButton que pueden aparecer como botones estándar –como por ejemplo los botones Abrir, Guardar,...-, controles ComboBox –como el tipo de letrabotones desplegables –como los iconos color de la letra, resaltar o ayuda- , botones ToogleButton o de dos posiciones o de ON/OFF –como el tipo de alineación del párrafo, y botones con texto, imagen o ambos. Además, normalmente suelen disponer de una pequeña etiqueta o ToolTip, con una breve descripción de la función del botón. En general, las barras de herramientas sirven para acceder de manera más rápida y gráfica a algunos de los elementos más importantes o más utilizados de un menú. Se puede asociar imágenes a cada uno de los botones a través de un objeto ImageList, asignando el índice de cada imagen a la propiedad ImageIndex del botón. También se puede asignar un texto a la derecha o en la parte inferior del botón a través de la propiedad Text del ToolBarButton.

La clase ToolbarButton Los objetos de esta clase son los controles que se ubican en la barra de herramientas. Esta clase no deriva de la clase Control, sino directamente de la clase Component. Propiedades Esta clase permite configurar para cada botón de la caja de herramientas la imagen, estilo, texto y ToolTip. A través de ellos se puede configurar un botón “desplegable” como, por ejemplo los dos botones situados en la parte superior derecha de la barra de herramientas del Visual Studio .NET. Las propiedades más importantes son:

297 | P á g i n a

1. DropDownMenu Asigna un menú de tipo PopUp a un botón “desplegable”. Para ello, debe tener la propiedad Style a DropDownButton-. 2. ImageIndex Contiene el índice de la imagen del botón. 3. Style Es el estilo del botón. 4. Text La etiqueta o texto –opcional- del botón en la barra de herramientas. 5. ToolTipText Es el texto de la etiqueta explicativa del botón. Para ello, la barra de herramientas debe tener la propiedad ShowToolTips a True. 6. ParcialPush Sólo tiene sentido con la propiedad Style a ToogleButton. Si es True Los botones están en gris, indicando que están inhabilitados. 7. Pushed Propiedad booleana. Indica si el botón está pulsado o no (ON/OFF).

Para controlar los eventos sobre la barra de herramientas, se procede como en los demás controles. Cuando se desea determinar qué botón ha sido pulsado, se utiliza la propiedad Button - que devuelve el botón que se ha pulsado- de la clase ToolBarButtonClickEventArgs que se ha pasado al auditor del evento.

CREACION DE MENUS MenuStrip. MenuStrip es el contenedor de nivel superior que reemplaza a MainMenu. También proporciona las características de control de claves y de interfaz de múltiples documentos (MDI). Funcionalmente, ToolStripDropDownItem y ToolStripMenuItem operan MenuStrip, aunque se derivan de ToolStripItem.

junto

con

298 | P á g i n a

Para crear un MenuStrip se realize lo siguiente:

1.- Se crea una variable de tipo MenuStrip.

MenuStrip ms = new MenuStrip();

2.-

Creamos los items con los que vamos a trabajar.

ToolStripMenuItem windowMenu = new ToolStripMenuItem("AR&CHIVO"); ToolStripMenuItem salirMenu = new ToolStripMenuItem("&Salir"); ToolStripMenuItem EditarMenu = new ToolStripMenuItem("&Editar");

3.- Se asigna el campo que queremos que aparezca como la lista principal y a los ítems que va a contener esta lista en el MenuStrip.

ms.MdiWindowListItem = windowMenu; windowMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {EditarMenu,salirMenu}); // Add the window ToolStripMenuItem to the MenuStrip. ms.Items.Add(windowMenu); 4.- Colocamos el menu en el espacio que queremos.

ms.Dock = DockStyle.Top; this.MainMenuStrip = ms;

Y por ultimo agregamos la barra al frame.

299 | P á g i n a

this.Controls.Add(ms); De la siguiente manera tendríamos la barra menú.

ContextMenu. Se utilizan menús contextuales para ofrecer a los usuarios opciones de menú específicas del contexto cuando hacen clic con el botón secundario del mouse en el control.

1.-Creamos el menu contextual de la siguiente manera.

ContextMenuStrip menuContextual = new ContextMenuStrip();

2.- Creamos los ítems que van a estar dentro del menú contextual. ToolStripMenuItem estiloMenu = new ToolStripMenuItem("&Estilo"); ToolStripMenuItem letra = new ToolStripMenuItem("&Letra"); ToolStripMenuItem fondo = new ToolStripMenuItem("&Fondo");

3.-Agregamos el item principal y los item secundarios del menu contextual menuContextual.Items.Add(estiloMenu);

estiloMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {letra,fondo}); 300 | P á g i n a

4.- Por ultimo colocamos el menu contextual dentro del frame.

this.ContextMenuStrip = menuContextual;

Y tendremos el menú contextual de la siguiente manera.

CONCLUSION

La creación de MenuStrip nos permite realizar barras de menús que contengas diferentes funciones que agilizan los procesos del usuario

301 | P á g i n a

ACTIVIDAD N°:

39

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear usuarios, asignar privilegios, quitar privilegios.

UNIDAD N° 3.16:

CREACIÓN Y USO DE USUARIOS

OBJETIVO:

Asegurar el acceso a los datos.

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

02/07/2012 - 03/07/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

302 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

PRIVILEGIOS DE USUARIOS Los privilegios de usuarios definen el ingreso, acceso y restricciones de funciones para los usuarios para si llevar un control en los procesos del sistema

Seleccionamos el tipo de acceso del usuario

Recibe los datos ingresados del sistema Para luego hacer una consulta a la base De datos de la tabla Usuarios

303 | P á g i n a

De esta forma buscamos en la base de datos que coincidan con el ingreso del sistema para luego permita el ingreso al menú principal del programa.

Usuario permitido como Administrador

CONTROL DE USUARIO Permite tener un historial de usuario es decir al ingresar el usuario al sistema se crea un registro de que a iniciado sesión especificando la fecha y la hora. También se utiliza este historial al momento de guardar: Cliente Proveedor Producto Generación de facturas. Entre otras.

Visualización del Control de usuario.

304 | P á g i n a

Accedemos al sistema escribiendo el nombre y contraseña de usuario y automáticamente se genera un registro de historial de inicio de sesión.

Para ver el historial damos clic en el botón reportes.(#1)

1

Al dar clic en reportes nos mostrara la siguiente ventana donde esta el botón historial (#1)

1

305 | P á g i n a

Al dar clic (#1) mostrara el historial de lo que a iniciado sesión el usuario.

CONCLUSION

El control de usuarios es importante puesto que da seguridad al sistema y esto evita la salida de información no autorizada

306 | P á g i n a

CAPITULO 4: PRESENTACIÓN DE RESULTADOS (INFORMES)

307 | P á g i n a

ACTIVIDAD N°:

40

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear y ejecutar reportes utilizando 1 tabla desde C#.

UNIDAD N° 4.1:

CREACIÓN Y EJECUCIÓN DE INFORMES (1 TABLA)

OBJETIVO:

Recuperar información para ser presentada en impresos

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

04/07/2012 - 05/07/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

308 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CREACIÓN Y EJECUCIÓN DE REPORTES CON CRYSTAL REPORTS.UNA TABLA. En este manual Aprenderemos a crear Reportes con CrystalReport de una sola Tabla, para ello comenzaremos creando un nuevo Proyecto.

Luego de Haber Creado Un nuevo Proyecto, procedemos a agregar un WindowsFormApplication llamado Report1Tabla.

309 | P á g i n a

Dentro de este formulario Agregaremos los siguientes componentes:

1 dataGridView = grilla 2 Botones = atrás, Generar Reporte

Luego de haber agregado estos componentes, pasamos a crear otro Formulario llamado Visualizar1Tabla.cs

Dentro de este formulario Pasaremos a agregar el siguiente componente a nuestro formulario.

310 | P á g i n a

Este CrystalreportViewer nos permitirá más adelante poder visualizar el reporte con los datos de la base de datos que se esté consultando. Y este formulario quedará diseñado de la siguiente manera.

Ahora sí, una vez concluida la parte del diseño, la misma que nos permitirá visualizar los datos, pasemos a codificar los componentes agregados. Comenzamos con el formulario Report1Tabla. Dentro de este formulario ira agregado los siguientes métodos.

311 | P á g i n a

Una vez realizada esta codificación llamamos al método cargarDatos(); al evento

Load del Formulario. Con todas estas líneas de código, en nuestro dataGriedView que agregamos a este formulario, se mostrara la información que poseemos en nuestra base de datos de la tabla Empleado.

312 | P á g i n a

Esta es la tabla con sus respectivos campos que posee la base de datos creada en Access 2010

Una vez que ya se ha cargado los datos de la base de datos a nuestra grilla, procedemos a agregar a nuestro proyecto 2 componentes más:

Conjunto de datos = Dataset1 Archivo CrystalReport = rpt1Tabla.rpt

Como primer Punto Agregamos el conjunto de datos, una vez ya agregado a nuestro proyecto se cargara una vista, donde comenzaremos a agregar una tabla que ira almacenando los datos que tenemos de la base de datos.

313 | P á g i n a

Una vez dado clic derecho sobre el espacio de trabajo agregaremos una tabla de datos llamada Empleados, que como se mencionó anteriormente almacenará los datos de la base de datos.

314 | P á g i n a

En esta gráfica ya nos muestra el dataTable que se utilizara para trabajar.

Una vez que ya está agregado el dataTable procederemos a agregar columnas que se agregaran de acuerdo a los campos que posee nuestra base de datos.

Ya agregadas todas las columnas a nuestra tabla, procedemos a crear el segundo archivo, CrystalReport, que nos permitirá visualizar los datos de nuestra base de datos.

315 | P á g i n a

Ya creado nuestro componente, se abrirá un asistente de creación de reportes, la cual nos muestra 3 opciones:

Usar asistente de informes Como Informe en Blanco A partir de un informe existente De estas tres opciones escogeremos Como Informe en Blanco, y damos a aceptar

Ahora se nos muestra el informe en blanco, de aquí en adelante seguiremos los siguientes pasos para enlazar este visor de reportes con el conjunto de datos que se creó anteriormente. En la parte derecha se Muestra un menú que dice “EXPLORADOR DE CAMPOS” damos clic derecho, seleccionamos la opción “asistente de base de datos”

Ahora se visualizará la siguiente ventana, en esta ventana escogeremos la primera opción “Datos del Proyecto” y desplegamos la carpeta que dice “ADO .Net Dataset”. Seleccionamos la opción con nombre “Empleado” y lo pasamos al otro lado con el botón de Mayor Que > y presionamos aceptar.

316 | P á g i n a

Una vez enlazado con el dataSet1. Se mostraran los campos de la tabla que se agrego en el dataset, a esos campos se los debe arrastrar a la sección de “Detalle”, los colocamos ordenadamente, ya que depende de como los ordenemos, cambiara la apariencia del reporte.

Una vez Terminada esta parte, llegamos a la parte final, donde realizaremos la codificación del Botón “Generar Reporte” que se encuentra en el Formulario Report1Tabla. Damos doble clic sobre ese componente y se generara el evento click del botón, dentro de este evento escribiremos las siguientes líneas de código.

Y una vez Terminado todos los Pasos, al ejecutar nuestro proyecto se vera asi, con la tabla que muestra todos los datos de la base de datos y el reporte que se crea al dar clic sobre el botón de generación de reporte.

317 | P á g i n a

318 | P á g i n a

ACTIVIDAD N°:

41

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear y ejecutar reportes con varias tablas desde c#.

UNIDAD N° 4.2:

INFORMES CON VARIAS TABLAS (1 A N)

OBJETIVO:

Recuperar información para ser presentada en impresos

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

11/07/2012 - 12/07/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

319 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

CREACIÓN DE REPORTES DE UNO A MUCHOS MEDIANTE CRYSTAL REPORTS DE VISUAL STUDIO 2010 CREACION DE REPORTES MEDIANTE EL ASISTENTE Creamos un nuevo proyecto de C# en el IDE de Visual Studio y le pondremos un nombre.

320 | P á g i n a

Vamos hasta el menú Proyecto y luego a propiedades del Proyecto

En la parte donde dice “Versión de .NET” nos fijamos que predeterminado se encuentra .NET Framework 4 Client Profile

Lo debemos cambiar por el que dice .NET Framework 4, ya que éste nos permitirá a realizar trabajos con Crystal Reports. En el Explorador de Servicios Agregamos una nueva conexión la cual permitirá trabajar con nuestra base de datos.

321 | P á g i n a

Elegimos cual es el origen de los datos que vamos agregar a nuestro proyecto.

Procedemos a buscar la ubicación de la base de datos que necesita nuestro proyecto

Agregamos un nuevo elemento a nuestro proyecto el cual va a ser un Data Set que no es mas que un conjunto de datos para visualizar las tablas de una base de datos

322 | P á g i n a

Desde el Explorador de Servicios arrastramos las tablas para que el Crystal Reports sepa como trabajar, cabe mencionar que las relaciones entre las tablas deben estar establecidas desde un principio

Terminado el paso anterior se debe agregar un nuevo elemento al proyecto el cual será el Crystal Reports

323 | P á g i n a

Le damos aceptar para poder continuar

324 | P á g i n a

Elegimos todos los dato que deseamos tener en el reporte

Damos clic en siguiente para continuar

325 | P á g i n a

Nos fijamos que así queda la relación entre las tablas que escogimos para el proyecto

Escogemos los campos que aparecerán en el reporte

326 | P á g i n a

En esta opción se la debe seleccionar el campo para hacer las respectivas agrupaciones

En este caso se selecciona como se presentarán los resúmenes, puede ser una suma, un promedio, entre muchas operaciones

327 | P á g i n a

Se selecciona el título del gráfico que se presentará en el reporte con los resultados obtenidos

Se debe seleccionar la plantilla con el modelo de reporte que se va a generar

328 | P á g i n a

Y asi se tiene listo el reporte ahora se debe hacer las conexiones para que se lo pueda apreciar mejor.

Ahora en el formulario se debe arrastrar el CrystalReport Viewer es aquel que permitirá tener listo para la impresión e reporte

329 | P á g i n a

Una vez finalizado se debe crear un nuevo método que permita llenar el reporta y que esté preparado para imprimir

Y por último se debe ejecutar para comprobar que lo que hemos realizado funciona

330 | P á g i n a

CREACIÓN DE REPORTES MEDIANTE CÓDIGO: Creamos un nuevo proyecto de C# en el IDE de Visual Studio y le pondremos un nombre.

331 | P á g i n a

Hacemos un GUI rápido y sencillo para tener una idea de lo que se quiere hacer, así de la siguiente manera, el cual posee un label, un DataGridView y un botón:

Cambiamos la configuración del Proyecto a .NET Framework 4 asi:

332 | P á g i n a

Creamos un dataSet, luego se crea una tabla de datos con el número de columnas que tengamos en nuestra tabla y que son necesarias para el reporte.

333 | P á g i n a

Cargamos todos los datos de la tabla de la base de datos y los presentamos en el DataGridView, al mismo tiempo enviamos las columnas al DataSet

334 | P á g i n a

Luego agregamos un nuevo elemento al proyecto, en este caso va a ser un CrystalReport:

Usamos el asistente para hacer el reporte

335 | P á g i n a

Agregamos todos los elementos del dataSet de nuestro proyecto:

Escogemos todos los campos que nos serán útiles para la realización del reporte:

336 | P á g i n a

Nos saltamos todas las que son opcionales y concluimos con elegir el tipo de reporte que vamos a utilizar, en este caso escogí el borde rojo azul.

Diseñamos a nuestro gusto la forma en la que el reporte se va a imprimir:

337 | P á g i n a

Agregamos un nuevo elemento al proyecto, que va a ser un Form en el que vayamos a visualizar el reporte

Al formulario le agregamos un CrystalReportsView para poder captar el reporte:

338 | P á g i n a

Por último creamos un evento para el botón de “Ver Reporte” con el siguiente código:

Y por último ejecutamos el programa para observar el reporte

339 | P á g i n a

340 | P á g i n a

NOTAS IMPORTANTES PARA LA CORRECTA IMPLEMENTACIÓN DE LOS REPORTES CON CRYSTAL REPORT. Cuando creamos de esta manera el reporte en VS 2010 tendría que agregar automáticamente las librerías necesarias, además configurar el App.Config de manera que la ejecución resulte exitosa. Pero por alguna razón en algunos VS 2010 no configura de manera correcta el App.config y nuestro reporte no se ejecuta, en otros no existe el problema. Estuve probando en diferentes VS 2010 sobre todo ultímate pero me sale un error, en otros no y todo es normal, tal vez sea porque algunos PC eran de X64 y otros de X32 pero, no hay problema si tenemos este error de ejecución el cual indica que no podemos compilar porque no se reconoce las librerías de CR.

Para que se ejecute de manera correcta solo tenemos que configurar el App.Config, agregando esta línea.



Y comentando la línea –>

341 | P á g i n a

Quedando el App.config como sigue: //////////////////////





///////////////////// Con esto ya se ejecuta nuestro reporte.

342 | P á g i n a

ACTIVIDAD N°:

42

TEMA:

Realizar una investigación, Exponer y elaborar un Informe acerca de cómo crear y ejecutar reportes utilizando filtros de información desde c#.

UNIDAD N° 4.3:

INFORMES CON FILTROS

OBJETIVO:

Recuperar información para ser presentados en impresos

PROBLEMA: INDICADOR DE EVALUACIÓN:

FECHA:

18/07/2012 - 19/07/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

343 | P á g i n a

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

BUSQUEDA DE REGISTROS POR FILTRADO DE DATOS Y PASO DE INFORMACION A OTRO FORMULARIO Presionamos el botón buscar y así seleccionar el dato que deseamos pasar a este formulario.

Presionar

Esta es la tabla que se muestra a continuación y en donde se puede ver la lista de clientes con sus respectivas edades.

Ingresar el dato a buscar

En los campos nombre, apellido y edad podemos ingresar los datos a buscar según la búsqueda, en este caso buscamos los clientes que tengan por nombre JIMMY, damos click en la celda y procedemos a cerrar el formulario.

344 | P á g i n a

Podemos ver que el dato ya se pasó al otro formulario

CODIFICACION Botón Buscar del primer formulario private void button1_Click(object sender, EventArgs e) { Form1 ver = new Form1(); ver.ShowDialog(); txt_nombres.Text=ver.valor; txt_apellidos.Text = ver.apellido; txt_edad.Text = ver.edad; } Formulario de datos using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb;

namespace practica

345 | P á g i n a

{ public partial class Form1 : Form { Form2 inicio=new Form2(); public string valor,apellido,edad; public Form1() { InitializeComponent(); } private DataSet ds; OleDbConnection conn = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\CLIENTEDB.accdb;");

private void Form1_Load(object sender, EventArgs e) { ds=new DataSet(); coneccion(); } public void coneccion() { //codificacion con la cual cargamos el grip al iniciar el from OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes",conn); ad.Fill(ds, "clientes"); dataGridView1.DataSource=ds.Tables["clientes"]; } //campo de texto del nombre al escribir se limpia en los otros 2 campos private void textBox1_TextChanged(object sender, KeyPressEventArgs e) { textBox2.Text = ""; textBox3.Text = ""; //limpiamos el datagrid DataTable dt = dataGridView1.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes where nombre like '"+textBox1.Text +"%'", conn); ad.Fill(ds, "clientes"); dataGridView1.DataSource = ds.Tables[0];

} //Campo de texto apellido private void textBox2_TextChanged(object sender, KeyPressEventArgs e) { textBox1.Text = ""; textBox3.Text = ""; //limpiamos el datagrid DataTable dt = dataGridView1.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes where apellido like '" + textBox2.Text + "%' ", conn); ad.Fill(ds, "clientes"); dataGridView1.DataSource = ds.Tables[0];

346 | P á g i n a

} // Campo de texto edad private void textBox3_TextChanged(object sender, KeyPressEventArgs e) { textBox2.Text = ""; textBox1.Text = ""; //limpiamos el datagrid DataTable dt = dataGridView1.DataSource as DataTable; dt.Rows.Clear(); OleDbDataAdapter ad = new OleDbDataAdapter("select * from clientes where edad like '" + textBox3.Text + "%' order by edad asc", conn); ad.Fill(ds, "clientes"); dataGridView1.DataSource = ds.Tables[0]; } public String nombre; // Codigo del datagrip el cual se activa al presionar clic captutamos el valor de las celdas //y la almacenamos en unas variables publicas valor apellido y edad private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if ((e.RowIndex != -1) && (e.ColumnIndex != -1)) { // valor = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); valor = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString(); apellido = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString(); edad = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();

} else { MessageBox.Show("Selección fuera de la tabla"); } }

} }

Esta selección se la envía a imprimir, utilizando un informe creado con código.

347 | P á g i n a

EXAMEN FINAL

348 | P á g i n a

Grupo # 1. Nombre: ……….…………………………………………………………………………… Aparatos * Cod_ap Descripción Est_conserv Id_s

Salas * Id_s Metros2 Ubicación Tipo Aparatos? Cursos?

Clases * Codigo_da Descripción Fecha/hora Id_s

1) Crear la correspondiente base de datos (0,5) 2) Formulario para Aparatos. (3.5 puntos) a) Verificar que el Cod_ap no se repita.

1

b) Verificar que el Id_s se encuentre en la otra tabla, si no existe permitirle si desea, crear dicho registro. 2 c) En el campo Est_conserv solo puede contener valores de: Excelente, Bueno, Regular, Malo, Dañado. 0,50 3) Formulario Salas (cabecera) y Clases (detalle)

(5 puntos)

a) Id_s debe llenarse automáticamente (secuencial)

1.5

b) El campo metros2 solo puede contener valores entre 10 y 50 0,50 c) Al añadir detalle se debe crear automáticamente la relación entre las dos tablas

1

d) para la llave ajena Id_s de la tabla Clases (detalle) mostrar una ventana de ayuda (con búsqueda por descripción) para seleccionar el registro y que devuelva el código al formulario anterior

2

4) Colocar donde sea necesario, botones para moverse, añadir, aceptar y cancelar registros. (1 punto)

349 | P á g i n a

PROYECTO FINAL

350 | P á g i n a

ACTIVIDAD N°:

44

TEMA:

Presentar el proyecto Final para revisión previa antes de la presentación oficial.

OBJETIVO:

Desarrollar un sistema informático que permita integrar los datos y procesos de la institución.

PROBLEMA:

INDICADOR DE EVALUACIÓN:

FECHA:

30/07/2012 - 31/07/2012

Sistemas informáticos que no cumplen con los requisitos y necesidades establecidos por las empresas. Desarrollo de Sistemas informáticos que no son modulares y no permiten alto acoplamiento y baja cohesión b) Diseñar, conducir experimentos, analizar e interpretar datos c) Diseñar sistemas, componentes o procesos de Ingeniería de Sistemas bajo restricciones realistas d) Trabajar como un equipo multidisciplinario e) Identificar, formular y resolver problemas de ingeniería f) Comprender la responsabilidad ética y profesional g) Comunicarse efectivamente i) Comprometerse con el aprendizaje continuo j) Conocer temas contemporáneos k) Usar técnicas, habilidades y herramientas para la práctica de ingeniería

VALORES: TIPO DE ACTIVIDAD LUGAR

□Intraclase □Extraclase

ALCANCE

□Individual □Grupal

CALIFICACIÓN

FORMA

□Taller □Síntesis, esquemas □Caso de estudio □Investigativa □Vinculación con la colectividad

□Práctica de laboratorio □Práctica de clase □Resolución de problemas, ejercicios

□Ensayo, artículo □Informe de exposición

DESARROLLO DE LA ACTIVIDAD, SOLUCIÓN O PROCEDIMIENTO

351 | P á g i n a