UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración CAMPUS COATZACOALCOS “SISTEMA DE CONTROL DE ACCESO Y DE SERVICIOS DEL CENTRO DE CÓMPUTO DE SISTEMAS COMPUTACIONALES ADMINISTRATIVOS BAJO EL ENFOQUE DE PROGRAMACIÓN” TESINA QUE PARA ACREDITAR LA EXPERIENCIA RECEPCIONAL DEL PROGRAMA EDUCATIVO DE: LICENCIADO EN SISTEMAS COMPUTACIONALES ADMINISTRATIVOS PRESENTA SOFÍA LUIS LÓPEZ DIRECTOR DE TRABAJO RECEPCIONAL: MTRA. PATRICIA MARTÍNEZ MORENO COATZACOALCOS VER., A 3 DE ENERO DE 2012 DEDICATORIA A Dios, a mis padres Miguel y Catalina a quienes amo infinitamente, dedico la siguiente tesina por todo el apoyo incondicional que me han brindado, por amarme, y confiar en mí siempre. AGRADECIMIENTOS Agradezco a Dios por todas las cosas maravillosas que me ha regalado .A mis padres, hermanos, por todo el amor y apoyo que he recibido de ellos. A mis maestros y compañeros de carrera por los conocimientos y apoyo motivación y cariño que me proporcionaron. A la maestra Patricia Martínez Moreno asesor de tesina por la paciencia el apoyo, y conocimientos brindado. ¡MUCHAS GRACIAS! ÍNDICE CAPÍTULO I ............................................................................................................................................... 7 INTRODUCCIÓN ........................................................................................................................................ 7 1.1 PLANTEAMIENTO DEL PROBLEMA ..................................................................................................... 9 1.2 JUSTIFICACIÓN.................................................................................................................................. 10 1.3 OBJETIVO GENERAL .......................................................................................................................... 11 1.4 OBJETIVOS ESPECÍFICOS .................................................................................................................. 11 1.5 LIMITACIONES .................................................................................................................................. 12 1.6 DELIMITACIONES .............................................................................................................................. 12 CAPÍTULO II ............................................................................................................................................ 12 2.- SISTEMA DE CONTROL DE ACCESO Y DE SERVICIOS DEL CENTRO DE CÓMPUTO DE SISTEMAS COMPUTACIONALES ADMINISTRATIVOS BAJO EL ENFOQUE DE PROGRAMACIÓN. ............................. 14 INTRODUCCIÓN ...................................................................................................................................... 14 2.1 SISTEMAS DE INFORMACIÓN ........................................................................................................... 15 2.1.1 COMPONENTES DE UN SISTEMA DE INFORMACIÓN ................................................................ 16 2.1.2 TIPOS DE SISTEMAS ................................................................................................................... 17 2.1.2.1 Sistemas de Procesamiento de Transacciones................................................................... 17 2.1.2.2 Sistemas de automatización de la oficina y sistemas de trabajo del conocimiento .......... 17 2.1.2.3 Sistemas de información gerencial .................................................................................... 18 2.1.2.4 Sistemas de apoyo a la toma de decisiones ....................................................................... 18 2.1.2.5 Sistemas expertos e inteligencia artificial .......................................................................... 18 2.1.2.6 Sistemas de apoyo a ejecutivos ......................................................................................... 18 2.2 CICLO DE VIDA DEL DESARROLLO DE SISTEMAS (CVDS) .................................................................. 19 2.2.1 Identificación de problemas, oportunidades y objetivos.......................................................... 20 2.2.2 Determinación de los requerimientos de información ............................................................. 20 2.2.3 Análisis de las necesidades del sistema .................................................................................... 21 2.2.4 Diseño del sistema recomendado ............................................................................................. 21 2.2.5 Desarrollo y documentación del software ................................................................................ 22 2.2.6 Prueba y mantenimiento del sistema ....................................................................................... 22 2.2.7 Implementación y evaluación del sistema ................................................................................ 23 2.3 PROGRAMACIÓN ............................................................................................................................. 23 2.3.1 Historia de la programación ...................................................................................................... 23 2.3.2 Definiciones .............................................................................................................................. 24 2.3.3 Objetivos de la programación ................................................................................................... 24 2.4 ESTRUCTURA GENERAL DE UN PROGRAMA.................................................................................... 26 2.4.1 Partes principales de un programa ........................................................................................... 26 2.4.2 Clasificación de las instrucciones ............................................................................................. 27 2.5 ELEMENTOS AUXILIARES DE UN PROGRAMA .................................................................................. 28 2.5.1 Contadores ................................................................................................................................ 28 2.5.2 Acumuladores ........................................................................................................................... 29 2.6 ERRORES ........................................................................................................................................... 29 2.7 CALIDAD DE LOS PROGRAMAS ......................................................................................................... 30 2.8 TIPOS DE PROGRAMAS ..................................................................................................................... 31 2.9 LENGUAJES DE PROGRAMACION .................................................................................................... 32 2.9.1 Evolución de los Lenguajes de Programación ........................................................................... 32 2.9.2 Clasificación de los Lenguajes de Programación ...................................................................... 33 2.9.2.1 Según su parecido con el lenguaje natural ........................................................................ 33 2.9.2.2 Según el paradigma de programación ............................................................................... 34 2.10 HERRAMIENTA NECESARIA ............................................................................................................ 35 2.10.1 Microsoft Visual Studio 2008 Professional Edition ................................................................. 35 2.10.1.2 Antecedentes .................................................................................................................. 36 2.10.1.3 .NET FRAMEWORK ........................................................................................................... 38 2.10.3 .NET FRAMEWORK 3.5 ........................................................................................................ 38 2.11 BASE DE DATOS .............................................................................................................................. 39 2.11.1 Componentes de SQL ............................................................................................................. 39 2.11.2 Sistema Gestor de base de datos (SGBD) ............................................................................... 43 2.11.3 Objetivos de un SGBD ............................................................................................................. 43 2.11.4 SQL server................................................................................................................................ 44 Desventajas ........................................................................................................................................ 45 2.12 EJEMPLOS DE CODIFICACIÓN ........................................................................................................ 46 CAPÍTULO III ......................................................................................................................................... 116 3.-CONCLUSIONES Y RECOMENDACIONES............................................................................................. 68 INTRODUCCIÓN .................................................................................................................................. 68 3.1 CONCLUSIONES ............................................................................................................................ 69 3.2 RECOMENDACIONES .................................................................................................................... 70 3.3 PROPUESTAS ................................................................................................................................ 71 BIBLIOGRAFÍA ......................................................................................................................................... 72 GLOSARIO ............................................................................................................................................... 74 ANEXOS .................................................................................................................................................. 76 ÍNDICE DE DIAGRAMAS Diagrama 1. Modelo general de un sistema) .................................................................................. 15 Diagrama 2: Las 7 fases del ciclo de vida del desarrollo de sistemas ........................................ 19 ÍNDICE DE TABLAS Tabla 1: Comandos DLL ................................................................................................................... 40 Tabla 2: Comandos DML .................................................................................................................. 40 Tabla 3: Cláusulas ............................................................................................................................... 41 Tabla 4: Operadores Lógicos ............................................................................................................ 41 Tabla 5: Operadores de Comparación ............................................................................................. 42 Tabla 6: Funciones de Agregado ...................................................................................................... 42 CAPÍTULO I INTRODUCCIÓN El presente capitulo describe de manera detallada la problemática que enfrenta el Centro de Cómputo de la Licenciatura de Sistemas Computacionales Administrativos (LSCA) de la Universidad Veracruzana campus Coatzacoalcos, en cuanto al control de servicios como son: el préstamo del equipo e impresiones que se le otorgaran a los estudiantes de la carrera de Sistemas Computacionales Administrativos (LSCA). Con la finalidad de fortalecer la formación de los estudiantes de Sistemas Computacionales Administrativos y de evitar la problemática antes mencionada, sirvió como base para plantear cuatro elementos fundamentales como son: la justificación, objetivo general, delimitaciones y limitaciones que van enfocados a la realización e implementación de un sistema que lleve el control de acceso y de servicios, así como otras actividades que realizan los prestadores de servicio para el buen funcionamiento de los equipos de cómputo que se ofrecen en el Centro de Cómputo LSCA En el capítulo se discuten estos elementos, para tener una perspectiva previa de ¿Que se requiere?, ¿Con que fin se va a realizar?, ¿Qué beneficios se va a obtener?, ¿Qué se quiere lograr?, y ¿Qué limitaciones puede generarse en el sistema?, para después de obtener este análisis pasar a la construcción e implementación del sistema. 1.1 PLANTEAMIENTO DEL PROBLEMA El Centro de Cómputo LSCA tiene la importante misión de apoyar el desarrollo académico, para que los alumnos puedan ampliar y practicar sus conocimientos para que se complementen con el uso de la tecnología informática. La construcción de este Centro de Cómputo es de gran beneficio tanto para profesores de sistemas que imparten clases, como para los estudiantes de Sistemas Computacionales Administrativos (LSCA), ya que es donde realizar sus prácticas de laboratorio. También se brindan servicios de préstamo de equipo e impresiones a dichos estudiantes; es por tal motivo que se carece de un software para elaborar el registro de las actividades que los estudiantes llevan a cabo en dicho lugar, por lo que la información que se genera, no se encuentra disponible en el momento en que se requiere, lo que implica perder información y tiempo, lo cual no permite actualizar los datos que se solicita. Actualmente el registro de los alumnos que utilizan algún equipo de cómputo, se realizan por medio de una hoja de cálculo (Excel), en la cual se anota el nombre del estudiante, la hora ingreso y salida, entre otros datos, así como el monto total a pagar por las impresiones realizadas, pero es una actividad inquietada para los encargados del registro, llenar todos los datos a la hora de que el alumno solicite un equipo o realice alguna impresión. Por tal motivo aprovechando la tecnología que brinda Visual Basic Studio 2008, se ha decidido desarrollar un sistema para el control del servicios que presta del Centro de Cómputo LSCA, para poder cubrir las necesidades que demanda este sitio tan importante para los estudiantes. Este sistema ayudará a mejorar sus procesos de registro y mantener un control de los servicios de impresión y préstamo de equipo que los estudiantes soliciten, mientras que los maestros podrán reservar el centro de cómputo para impartir su experiencia educativa. También contará con un historial para generar reportes que ayudaran a mantener el centro de cómputo en óptimas condiciones. 9 1.2 JUSTIFICACIÓN Ha aumentado el número de estudiantes de la carrera de LSCA y debido a la construcción del Centro de Cómputo LSCA en donde actualmente se imparten clases y se brindan servicios de cómputo, los encargados de dicho centro de cómputo se ven con la necesidad de requerir un software en donde realicen los registros de los estudiantes y lleven el control de los servicios que se prestan. Es así que se llegó a la conclusión de desarrollar e implementar un sistema que lleve el control de acceso y de servicios que se brindan, el cual contara con los siguientes beneficios: a) Control de acceso de los registros de alumnos, el cual sea capaz de procesar la información almacenada para generar los reportes de las transacciones realizadas durante el día, además de mostrar de manera rápida y precisa los reportes de las rentas de equipos de cómputo. b) Tener un control de los usuarios (prestadores de servicios), los cuales llevaran el registro de los estudiantes y de las actividades que realicen el en centro de cómputo. c) Se tendrá mayor confiabilidad, reducirá la carga de trabajo del usuario del sistema, se agilizar el proceso de recopilación de información y disminuirá el tiempo en la realización del usuario del sistema. d) Con esta herramienta la productividad informática obtendrá un mejor aprovechamiento en los recursos tecnológicos y desarrollo de nuevas expectativas para el aprendizaje de los estudiantes. e) Mejora de la comunicación y calidad de la información f) Prevención de problemas en cuanto a los equipos de cómputo, ya que se desarrollara un apartado enfocado a visualizar que equipos de cómputo están en mal estado, cuales requieren mantenimiento o algún programa de instalación que los profesores requieran en los equipos. 10 Para este sistema se ha planteado un conjunto de métodos para el análisis, desarrollo, diseño e implementación del sistema, el cual va desde el desarrollo del análisis por UML y el desarrollo del sistema por el programa Visual Basic Studio 2008. Con ese sistema se obtendrá una buena organización, eficiencia y será una herramienta fácil y útil para los usuarios que la utilicen. 1.3 OBJETIVO GENERAL Desarrollar un sistema para el control de acceso y de servicios en las etapas de análisis, desarrollo e implementación para el centro de cómputo de sistemas computacionales administrativos, con el fin de automatizar las diferentes tareas que se realizan. 1.4 OBJETIVOS ESPECÍFICOS Realizar el análisis del sistema bajo el lenguaje de modelado unificado (UML), que permitirá un análisis completo, detallado y fácil de comprender. Desarrollar y diseñar el sistema en una plataforma flexible, adecuada y fácil de realizar, para lograr un buen sistema, utilizando los recursos con los que cuenta la Universidad Veracruzana. Documentar e Implantar el sistema de control de acceso y de servicios, con el fin de lograr las expectativas deseadas y lograr cubrir las necesidades del centro de cómputo de sistemas computacionales administrativos. 11 1.5 LIMITACIONES A) Se pretende desarrollar el sistema en un tiempo que comprende a los cuatro meses en sus diferentes etapas. B) La investigación precisa la metodología del desarrollo del sistema así como su estructura y documentación. C) Este trabajo se basara en el desarrollo del sistema en sus tres etapas, la de análisis, desarrollo e implantación, cada etapa será desarrollada y revisada de manera específica, para poder obtener los resultados deseados. 1.6 DELIMITACIONES A) Se utilizara todos los recursos con los que cuenta la universidad, para poder realizar el sistema y este pueda ser utilizado por los usuarios. B) Los conocimientos aplicados serán todos los. Adquiridos en las experiencias educativas cursadas a lo largo de la carrera LSCA. 12 CAPÍTULO II 2.- SISTEMA DE CONTROL DE ACCESO Y DE SERVICIOS DEL CENTRO DE CÓMPUTO DE SISTEMAS COMPUTACIONALES ADMINISTRATIVOS BAJO EL ENFOQUE DE PROGRAMACIÓN. INTRODUCCIÓN Hoy en día los sistemas de información son muy importantes dentro de las organizaciones ya que permiten tener organizada toda la información que se genera a diario en los centros de trabajo, sin embargo para que el sistema desarrollado cumpla con su propósito es necesario presentarle al usuario final un sistema claro y que presente los datos ordenados de tal manera que el usuario puedan interactuar fácilmente con el sistema. Por tal motivo en este capítulo se muestra el prototipo de la interfaz gráfica de usuario del sistema Sistema de control de acceso y de servicios del centro de cómputo de Sistemas Computacionales Administrativos como requisito para poder comprender a través de la interfaz gráfica las necesidades de los usuarios finales y así poder obtener un sistema capaz de cumplir con los requerimientos que el usuario final demande. Para llevar a cabo la codificación del software la aplicación que se utilizó es la aplicación Visual Studio 2008, que también se contempla en este capítulo, mostrando la evolución de los lenguajes de programación, así como también una breve historia sobre visual Basic Studio que es la herramienta que se utilizó para el desarrollo del sistema ya mencionado. Por último se muestra el condigo del sistema desarrollado. 2.1 SISTEMAS DE INFORMACIÓN De acuerdo a la definición de Vicenç Fernández Un sistema de información es un conjunto de elementos que inteccionan entre sí para alcanzar un objetivo común, pueden representarse a través de un modelo que integra los cinco bloques básicos como los elementos entradas, elementos de salidas, sección de transformación mecanismos de control y objetivos.1 Objetivos Mecanismos de control Entradas Transformación Salidas Diagrama 1. Modelo general de un sistema (Elaboración propia) Como se muestra en el diagrama 1 los recursos acceden al sistema a través de las entradas, son transformados, y a través del mecanismo de control se verifica que se lleve a cabo correctamente la transformación para obtener una salida de acuerdo al objetivo establecido. 1 Desarrollo de sistemas de información una metodología basada en el modelado Vicenç Fernández, 2006 pág.11 15 2.1.1 COMPONENTES DE UN SISTEMA DE INFORMACIÓN Un sistema de información requiere de la información que el usuario le provee para llevar a cabo las actividades de entrada, proceso, salida, almacenamiento y control de datos generando información para satisfacer las necesidades de los usuarios. Los componentes de un sistema de información son: Personas: Son todos individuos que están involucrados en el sistema, usuarios finales, profesionales, y directivos. Los profesionales son las personas que se encargan de analizar el sistema y proponer las modificaciones pertinentes al sistema, los desarrolladores son los encargados de codificar el sistema con base en los datos que el analista le entrega, los administradores del sistema controlan el funcionamiento del sistema para verificar que el sistema opere de manera adecuada, y los capacitadores son los encargados de apoyar a los usuarios para que utilicen correctamente el software. Hardware: Son los equipos y dispositivos que conforman la plataforma física, mediante el cual el sistema de información es operado. Software: Son la parte lógica del sistema de información.es decir las instrucciones que lo conforman. Datos: es la unidad de información que es almacenada y son obtenidas a través de las actividades que la organización realiza. Los datos son almacenados en una base de datos y son recuperados cuando el usuario lo solicite para apoyar en la toma de decisiones. 16 2.1.2 TIPOS DE SISTEMAS 2.1.2.1 Sistemas de Procesamiento de Transacciones Los sistemas de procesamiento de transacciones (Transaction Processing Systems, TPS) son sistemas de información computarizada creados para procesar volúmenes de datos relacionados con transacciones rutinarias de negocios, como las nóminas y los inventarios. Un TPS elimina el fastidio que representa la realización de transacciones operativas innecesarias y reduce el tiempo que una vez fue requerido para realizarlas manualmente, sin embargo aún es necesario que los usuarios introduzcan datos en los sistemas computarizados. 2.1.2.2 Sistemas de automatización de la oficina y sistemas de trabajo del conocimiento Existen dos clases de sistemas en el nivel del conocimiento de una organización. Los sistemas de automatización de la oficina [Office Automation Systems, OAS] apoyan a los trabajadores de datos, sin esperar que generen nuevos conocimientos, puesto que solo transforman la información y permiten compartirlos con las personas que lo soliciten dentro de la organización y fuera de esta. Como Ejemplos comunes de un OAS están el procesamiento de texto, las hojas de cálculo, la autoedición, la calendarización electrónica y las comunicaciones mediante correo de voz, correo electrónico y videoconferencia. Los sistemas de trabajo del conocimiento (Knowledge Work Systems, KWS) sirven de apoyo a los trabajadores profesionales, como los científicos, ingenieros y médicos, en sus esfuerzos de creación de nuevo conocimiento permitiéndoles compartir los nuevos conocimientos en la sociedad. 17 2.1.2.3 Sistemas de información gerencial Los sistemas de información gerencial ( Management Information Systems, MIS) tiene como propósito contribuir a la correcta interacción entre los usuarios y las computadoras, apoyando a las organizaciones. Para acceder a la información, los usuarios de estos sistemas acceden a una base de datos común, y producen información importante para la gerencia al momento de tomar decisiones. 2.1.2.4 Sistemas de apoyo a la toma de decisiones Los sistemas de apoyo a la toma de decisiones (Decisión Support Systems, DSS) constituyen una clase de alto nivel de sistemas de información computarizada. Los DSS al igual que los sistemas de información gerencial dependen de una base de datos para obtener los datos necesarios para trabajar. Sin embargo, difieren en que el DSS pone énfasis en el apoyo a la toma de decisiones en todas sus fases, aunque al final la decisión definitiva es responsabilidad exclusiva de las personas encargadas de tomar decisiones. 2.1.2.5 Sistemas expertos e inteligencia artificial La inteligencia artificial ( Artificial Intelligence, AI) se puede considerar como el campo general para los sistemas expertos. La motivación principal de la AI ha sido desarrollar máquinas que tengan un comportamiento inteligente . Dos de las líneas de investigación de la AI son la comprensión del lenguaje natural y el análisis de la capacidad para razonar un problema hasta su conclusión lógica. Los sistemas expertos utilizan las técnicas de razonamiento de la AI para solucionar los problemas que les plantean los usuarios de negocios (y de otras áreas) 2.1.2.6 Sistemas de apoyo a ejecutivos Las computadoras son de gran utilidad para los ejecutivos, le permiten mostrar información relacionadas con el entorno externo a través de gráficas y de comunicaciones, que en la mayoría de los casos se localizan en el área de juntas u oficinas. 18 Gran parte de esta información son generados por los sistemas de apoyo a ejecutivos (Executive Support Systems, ESS) ayudan a estos últimos a organizar sus actividades, tan solo brindan apoyo a los ejecutivos, Los ESS amplían y apoyan las capacidades de los ejecutivos al darles la posibilidad de comprender sus entornos. 2.2 CICLO DE VIDA DEL DESARROLLO DE SISTEMAS (CVDS) El CVDS es un enfoque para el desarrollo de sistemas de información Las siete fases que lo integran son utilizadas pero la gran mayoría de los analistas de sistemas a pesar de la ausencia de un estándar que defina el número exacto de fases que debería contener el CVDS.2 A continuación se explican las siete fases del diagrama 2 que comprende el ciclo de vida. Diagrama 2: Las 7 fases del ciclo de vida del desarrollo de sistemas (Elaboración propia) 2 Kendall E., Kenneth & Kendall E., Julie (2005). Análisis y diseño de sistemas. Pearson Education Pág. 10 19 2.2.1 Identificación de problemas, oportunidades y objetivos En esta fase del ciclo de vida del desarrollo de sistemas, el analista se ocupa de identificar problemas, oportunidades y objetivos. En esta etapa el analista debe concentrar toda su atención ya que el buen resultado del proyecto, depende del éxito obtenido en esta primera etapa. El trabajo que realiza el analista en esta fase es observar de manera objetiva lo que ocurre en el negocio, Determinar que problemas son los que ocurren en repetidas ocasiones, visualiza también las oportunidades que considera importantes y que proporcionarían ventajas competitivas a la organización al implantar un sistema de información . La identificación de objetivos también es una parte importante de esta primera fase. En primer lugar, el analista debe averiguar lo que la empresa trata de conseguir. Después, podrá determinar si al contar con un sistema de información la organización alcanzara sus objetivos aplicándolas a problemas u oportunidades específicos. Los usuarios, los analistas y los administradores de sistemas que coordinan el proyecto son los involucrados en la primera fase. Las actividades de esta fase consisten en realizar entrevistas a los encargados de coordinar a los usuarios, sintetizar el conocimiento obtenido, estimar el alcance del proyecto y documentar los resultados. El resultado de esta fase es un informe de viabilidad que incluye una definición del problema y un resumen de los objetivos. Posterior a esto, quien decide si se lleva a cabo o no el proyecto es la administración. 2.2.2 Determinación de los requerimientos de información La siguiente fase que enfrenta el analista es determinar qué información es la que se requiere. Entre las herramientas que se utilizan para determinar los requerimientos de información se encuentran métodos interactivos como las entrevistas, los muestreos. 20 La investigación de datos impresos y la aplicación de cuestionarios; utiliza también métodos que no interfieren con el usuario como observar el comportamiento de las personas que laboran en el área de trabajo y de los encargados de tomar decisiones al igual que métodos como la elaboración de prototipos. En esta fase, el analista se esfuerza por comprender la información que necesitan los usuarios para llevar a cabo sus actividades ,Es necesario que el analista de sistemas mantenga buena comunicación con los usuarios ,para conocer todos los detalles y funciones del sistema actual y determinar si es necesario llevar a cabo una reingeniería o mejorar los procedimientos para que al finalizar la fase el analista cuente con toda la información completa sobre el funcionamiento de la organización, las personas, los objetivos, los datos y todos los proceso implicados. 2.2.3 Análisis de las necesidades del sistema La siguiente fase al que se enfrenta el analista de sistemas es el de análisis de las necesidades del sistema En esta fase el analista se apoya también en las herramientas y técnicas especiales auxilian Una de estas herramientas es el uso de diagramas de flujo de datos, el analista grafica las entradas, los procesos y las salidas de las funciones de la organización. Para el análisis del sistema del centro de cómputo LSCA se utilizó el lenguaje unificado de modelado (UML) 2.2.4 Diseño del sistema recomendado En esta fase de diseño del ciclo de vida del desarrollo de sistemas, el analista utiliza la información. Que obtuvo en las primeras fases para realizar el diseño lógico del sistema de información. El analista plantea procedimientos precisos para la captura de datos que aseguran que los datos que ingresen al sistema de información sean correctos. Además, el analista facilita la entrada eficiente de datos al sistema de información mediante técnicas adecuadas para el diseño de formularios y pantallas. La interfaz de usuario forma parte del diseño lógico del sistema de información. Para que el usuario interactúe con el sistema es necesario diseñar 21 correctamente La interfaz, de esta manera el usuario aprovechará las ventajas de contar con un sistema de información en su área de trabajo. En esta fase se diseña también la base de datos que almacenan los datos que son generados por el sistema y son indispensables para la tomar las decisiones en la organización. Una base de datos bien organizada es la base de un sistema de información eficiente. 2.2.5 Desarrollo y documentación del software En esta fase el analista o analistas y los programadores se encuentran en constante comunicación a través de herramientas como diagramas de estructura, los diagramas de Nassi-Shneiderman y el pseudocódigo. El analista utiliza más de una de estas herramientas para comunicarle al programador los requisitos que el software debe contener. Otra de las actividades del analista en esta fase es la documentación, ahora la comunicación constante se da con el usuario, para desarrollar manuales de procedimientos, ayuda en línea y sitios Web que incluyan respuestas a preguntas frecuentes (FAQ, Frequently Asked Questions) en archivos "Léame" que se integrarán en el nuevo software. La documentación es importante para que el usuario final, resuelva sus dudas con respecto al software, y también para dale el uso adecuado al sistema. 2.2.6 Prueba y mantenimiento del sistema Al finalizar la codificación del sistema es necesario realizar pruebas para verificar el funcionamiento del sistema, para ello se utilizan datos de muestra para determinar si el sistema realiza los procesos adecuadamente, posteriormente se utilizan datos reales para corroborar el buen funcionamiento, ya que es menos costoso verificar el sistema y corregir errores antes de entregarlo al usuarios finales. 22 2.2.7 Implementación y evaluación del sistema En la última fase del CVDS, se capacita a los usuarios en el manejo del sistema, el fabricante imparte capacitación sobre el sistema y la responsabilidad de procurar y supervisar esta es del analista de sistemas, así como también el supervisar el cambio del antiguo sistema al nuevo, para evitar problemas con el software. Para conocer el buen funcionamiento del sistema es necesario que el sistema sea utilizado realmente por el usuario final. 2.3 PROGRAMACIÓN La programación se ha convertido en una actividad muy importante en la vida diaria, a través de ella podemos obtener programas que permiten realizar tareas de manera eficaz y eficiente, en la actualidad podemos observar que la programación se aplica en múltiples aparatos como electrodomésticos, robots entre otros. La programación intenta resolver ciertos problemas que nos surgen todos los días basándose en una metodología. 2.3.1 Historia de la programación Para crear un programa, y que la computadora interprete y ejecute las instrucciones escritas en él, debe usarse un Lenguaje de programación. En sus inicios las computadoras interpretaban sólo instrucciones en un lenguaje específico, del más bajo nivel, conocido como código máquina, siendo éste excesivamente complicado para programar. De hecho sólo consiste en cadenas de números 1 y 0 (Sistema binario). Para facilitar el trabajo de programación, los primeros científicos que trabajaban en el área decidieron remplazar las instrucciones, secuencias de unos y ceros, por palabras o letras provenientes del inglés; codificándolas así y creando un lenguaje de mayor nivel, que se conoce como Assembly o lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). 23 En realidad escribir en lenguaje ensamblador es básicamente lo mismo que hacerlo en lenguaje máquina, pero las letras y palabras son bastante más fáciles de recordar y entender que secuencias de números binarios. A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un método sencillo para programar. Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como multiplicar dos números puede necesitar un conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará con solo una. Una vez que se termina de escribir un programa, sea en ensamblador o en un lenguaje de alto nivel, es necesario compilarlo, es decir, traducirlo a lenguaje máquina. 2.3.2 Definiciones Un programa de computadora es un conjunto de instrucciones u órdenes dadas a la máquina que producirán la ejecución de una determinada tarea. A la persona que escribe programas se le denomina Programador, al proceso de escribir programas se denomina Programación. En informática, la programación es un proceso por el cual se escribe (en un lenguaje de programación), se prueba, se depura y se mantiene el código fuente de un programa informático. La Programación es la acción de escribir un conjunto de instrucciones escritas en un determinado lenguaje, que dirigen a una computadora para la ejecución de una serie de operaciones, con el objetivo de resolver un problema que se ha definido previamente. 2.3.3 Objetivos de la programación La programación debe perseguir la obtención de programas de calidad. Para ello se establece una serie de factores que determinan la calidad de un programa. Algunos de los factores de calidad más importantes son los siguientes: 24 Corrección. Un programa es correcto si hace lo que debe hacer tal y como se estableció en las fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es muy importante especificar claramente qué debe hacer el programa antes de desarrollarlo y, una vez acabado, compararlo con lo que realmente hace. Claridad. Es muy importante que el programa sea lo más claro y legible posible, para facilitar así su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, así como cuidar el estilo en la edición; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de creación como en las fases posteriores de corrección de errores, ampliaciones, modificaciones, entre otros. Fases que pueden ser realizadas incluso por otro programador, con lo cual la claridad es aún más necesaria para que otros programadores puedan continuar el trabajo fácilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para delimitar secciones de código. Eficiencia. Se trata de que el programa, además de realizar aquello para lo que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se suele hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la cantidad de memoria que necesita, pero hay otros recursos que también pueden ser de consideración al obtener la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco que utiliza, tráfico de red que genera, entre otros.). Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aquélla en la que se elaboró. La portabilidad es una característica muy deseable para un programa, ya que permite, por ejemplo, a un programa que se ha desarrollado para sistemas GNU/Linux ejecutarse también en la familia de sistemas operativos Windows. 25 2.4 ESTRUCTURA GENERAL DE UN PROGRAMA 2.4.1 Partes principales de un programa Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos). Contendrá por tanto dos bloques para la descripción de los dos aspectos citados: Bloque de declaraciones: aquí se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos.). Bloque de instrucciones: es el conjunto de operaciones que se realizan para obtener un resultado esperado. Dentro del bloque de instrucciones de un programa podemos diferenciar tres partes fundamentales. En algunos casos, estas tres partes están perfectamente delimitadas, pero en la mayoría sus instrucciones quedan entremezcladas a lo largo del programa, si bien mantienen una cierta localización geométrica impuesta por la propia naturaleza de las mismas. Entrada de datos: Ingresar instrucciones a través de dispositivos externos (teclado, lector de código de barra, lápiz óptico entre otros), y posteriormente son cargados en memoria central para ser procesados. Proceso o algoritmo: conjunto de instrucciones que son evaluados a partir de la entrada de datos que modifican los objetos a partir de su estado inicial hasta el estado final, dejando éstos disponibles en la memoria central. Salida de resultados: es el resultado obtenido al procesar los datos entrada y se muestran al usuario final a través de dispositivos externos (monitor, impresora, altavoces entre otros). 26 2.4.2 Clasificación de las instrucciones Una instrucción se caracteriza por un estado inicial y final del entorno. El estado final de una instrucción coincide con el inicial de la siguiente. No siempre una instrucción modifica el entorno, pues su cometido puede limitarse a la observación del mismo o a un cambio en el orden de ejecución de otras. Las instrucciones pueden ser: Instrucciones de declaración Se utilizan en aquellos lenguajes de programación que no tienen declaración explícita de los objetos. Su misión consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y características. Instrucciones primitivas Son la que ejecuta el procesador de modo inmediato. Las tres instrucciones principales son asignación, entrada y salida. Instrucción de asignación: consiste en almacenar el valor de una expresión en una variable. La sintaxis: Nombre de la variable= Valor El valor del “nombre de la variable” puede ser constante o variable o combinar ambas. Instrucción de entrada: toma un dato de un dispositivo de entrada y lo almacena en un objeto. Al programar los datos de entrada pueden no provenir de un dispositivo externo, sino ser declarados en el mismo dentro del programa. Ejemplo: IVA=0.16 Instrucción de salida: toma el valor de una expresión u objeto y son mostrados en dispositivos externos. Instrucciones compuestas Son instrucciones que no pueden ser ejecutadas directamente por el procesador, para ello tienen que realizar una llamada a un subprograma, subrutina o párrafo. 27 Instrucciones de control Son aquellas de controlar la ejecución de otras instrucciones. Instrucción alternativa: controla la ejecución de unas u otras instrucciones según una condición. Puede ser simple o doble (SI y SI NO). Instrucción de salto incondicional: altera la secuencia normal de ejecución de un programa, continuando la misma en la línea indicada en la propia instrucción (IR A). Instrucción de salto condicional: altera la secuencia normal de ejecución de un programa únicamente en el caso de cumplimiento de una condición asociada a la propia instrucción (SI... IR A). Instrucción repetitiva: hace que se repitan una o varias instrucciones un número determinado o indeterminado de veces (PARA, MIENTRAS, HASTA e ITERAR). 2.5 ELEMENTOS AUXILIARES DE UN PROGRAMA Son variables que realizan funciones específicas dentro de un programa, y por su gran utilidad, frecuencia de uso y peculiaridades, conviene hacer un estudio separado de las mismas. Las más importantes son: 2.5.1 Contadores Un contador es un campo de memoria El valor incrementa en una cantidad definida, puede ser positiva o negativa, por lo general están asociados a ciclos o bucles. Se inicializan con un valor antes de empezar a trabajar y cada vez que se ejecuta el proceso, el valor aumenta. Se utiliza en los siguientes casos: Para contabilizar el número de veces que es necesario repetir una acción (variable de control de un bucle). Para contar un suceso particular solicitado por el enunciado del problema (asociado a un bucle o independientemente). 28 2.5.2 Acumuladores Un acumulador es un campo de memoria el valor aumenta de acurdo a la instrucción que se haya establecido, Se utiliza para obtener el valor acumulado al ejecutar cierta instrucción, es necesario inicializar en valor en 0 para evitar errores en el programa. 2.6.3 Interruptores (switches) Un interruptor es un campo de memoria que puede tomar dos valores exclusivos (0 y 1, -1 y 1). Se utiliza para: Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instrucción alternativa qué acción realizar. Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle. 2.6 ERRORES Según el momento fase en que se detectan, los errores se clasifican de la siguiente manera: Errores de compilación: Los errores en tiempo de compilación o sintácticos, corresponden al incumplimiento de las reglas sintácticas del lenguaje, por ejemplo una palabra reservada del lenguaje mal escrita, una instrucción incompleta, etc. Estos errores son los más fáciles de corregir, ya que son detectados por el compilador, el cual dará información sobe el lugar donde está y la naturaleza de cada uno de ellos mediante un mensaje de error. Errores de ejecución: Se deben generalmente a operaciones no permitidas, como dividir por cero, leer un dato no numérico en una variable numérica. Se detectan porque se produce una parada anormal del programa durante su ejecución y se dice entonces que el programa se ha caído o que ha sido abortado por el sistema. Son más difíciles de detectar corregir que os errores sintácticos, ya que ocurren o no. 29 Errores de lógica: Corresponden a la obtención por el programa de resultados que n son correctos, y la única manera de detectarlos es realizando un número suficiente de ejecuciones de prueba con una gama lo más amplia posible de juegos de datos de prueba, comparando los datos producidos por el programa con los obtenidos a mano para esos mismos datos. Son los más difíciles de corregir, no sólo por la dificultad para detectarlos, sino porque se deben a la propia concepción y diseño del programa. Errores de especificación: Es posiblemente el peor tipo de error y el más costoso de corregir. Se deben a la realización de unas especificaciones incorrectas motivadas por una mala comunicación entre el programador y quien plantea en problema. Se detectan normalmente cuando ya ha concluido e diseño e instalación del programa, por lo que su puede suponer la repetición de gran parte del trabajo realizado. 2.7 CALIDAD DE LOS PROGRAMAS Para un determinado problema se pueden construir diferentes algoritmos de resolución o programas. Las características generales que debe reunir un programa son las siguientes: Legibilidad: debe ser claro y sencillo, de tal forma que facilite su lectura y comprensión. Fiabilidad: debe ser capaz de recuperarse frente a errores o usos inadecuados. Portabilidad: Si diseño debe permitir la codificación en diferentes lenguajes de programación, así como su instalación en diferentes sistemas. Modificabilidad: debe facilitar su mantenimiento, esto es, las modificaciones y actualizaciones necesarias para adaptarlo a una nueva situación. Eficiencia: Se deben aprovechar al máximo los recursos de la computadora, minimizando la memoria utilizada y el tiempo de proceso o ejecución, siempre que no sea a costa de los requisitos anteriores. 30 2.8 TIPOS DE PROGRAMAS Un programa, por lo general, estará compuesto por una secuencia de acciones, algunas de las cuales serán alternativas o repetitivas. En determinados programas sencillos, no se da esta mezcla de acciones, en cuyo caso los podemos clasificar como sigue: Programas lineales: consisten en una secuencia de acciones primitivas (su ejecución es lineal en el orden en que han sido escritas). Programas alternativos: consisten en el anidamiento de acciones alternativas (las tablas de decisión se realizan mediante programas alternativos). Programas cíclicos: son aquellos en los que un conjunto de acciones se repiten un número determinado o indeterminado de veces (un programa de este tipo se denomina bucle). Otra clasificación relativa a la aplicación desarrollada por el programa es: Programas de gestión: se caracterizan por el manejo de gran cantidad de datos con pocos cálculos (resuelven problemas de gestión). Programas técnicos-científicos: al contrario que los anteriores, realizan gran cantidad de cálculos con pocos datos (revuelven problemas matemáticos, físicos, etc.). Programas de diseño (CAD): se caracterizan por la utilización de técnicas gráficas para resolver problemas de diseño. Programas de simulación: intentan reflejar una situación real, para facilitar su estudio. Programas educativos (EAO): utilizan las ventajas de la computadora para la docencia. Programas de inteligencia artificial: se utilizan para simular el razonamiento humano. 31 2.9 LENGUAJES DE PROGRAMACION Un lenguaje de programación es una notación para escribir programas, es decir, para describir algoritmos dirigidos a la computadora. Un lenguaje viene dado por una gramática o conjunto de reglas que se aplican a un alfabeto. El primer lenguaje de programación que se utilizó fue el lenguaje máquina, el único que entiende directamente a la computadora, cuyo alfabeto es el binario, formado por los símbolos 0 y 1. El lenguaje ensamblador, resultó de la evolución del lenguaje máquina, al sustituir las cadenas de símbolos binarios por nemotécnicos. 2.9.1 Evolución de los Lenguajes de Programación Primera generación: lenguaje máquina. Segunda generación: se crearon los primeros lenguajes Ensambladores. Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol, entre otros. Cuarta generación: Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ejemplo. LISP. 32 2.9.2 Clasificación de los Lenguajes de Programación 2.9.2.1 Según su parecido con el lenguaje natural Bajo nivel: lenguajes máquina y ensambladores. Lenguajes de medio nivel: Minoritariamente en algunos textos se diferencian algunos lenguajes como de medio nivel, como el lenguaje C, ya que tienen ciertas características que los acercan a los lenguajes de bajo nivel, como gestión de punteros de memoria y registros, pero con sintaxis, vocabulario y gramática de alto nivel. Alto nivel: Los lenguajes de programación de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de estar orientados a su ejecución en las máquinas. Los lenguajes de alto y bajo nivel requieren de conocimientos específicos de programación y del lenguaje concreto (vocabulario, gramática y sintaxis) para realizar las secuencias de instrucciones lógicas. Evolución de los Lenguajes de alto nivel 1955: FORTRAN. 1960: LISP, ALGOL, COBOL. 1965: APL, SNOBOL, PL/1, BASIC. 1970: PROLOG, ALGOL68, SIMULA67. 1975: C, PASCAL. 1980: MODULA-2, LIS, EUCLID. 1985: ADA. 1986: Aparece CLIPPER AUTUMN'86 1987: CLIPPER SUMMER'87 1990: Aparece el FORTRAN 90 Principios 90:James Gosling y su equipo comienzan a desarrollar JAVA 1993 :Se desarrolla el lenguaje Visual C++ 1995 : Aparece, JAVA,PHP 2000:c# 33 2.9.2.2 Según el paradigma de programación Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma. Los diferentes paradigmas de programación son: Algorítmico, Imperativo o Por procedimientos. El más común y está representado, por ejemplo, por C o por BASIC. Describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican a al computadora cómo realizar una tarea. La implementación de hardware de la mayoría de las computadoras es imperativa ya que el hardware está diseñado para ejecutar código de máquina que es imperativo. Declarativo o Predicativo. Basado en la utilización de predicados lógicos (lógico) o funciones matemáticas (funcional), su objetivo es conseguir lenguajes expresivos en los que no sea necesario especificar cómo resolver el problema (programación convencional imperativa), sino qué problema se desea resolver. Los intérpretes de los lenguajes declarativos tienen incorporado un motor de inferencia genérico que resuelve los problemas a partir de su especificación. Lógico. Un ejemplo es PROLOG. El mecanismo de inferencia genérico se basa en los procedimientos de deducción de fórmulas válidas en un sistema axiomático Funcional. Representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell. El mecanismo de inferencia genérico se basa en la reducción de una expresión funcional a otra equivalente simplificada. Paradigma estructurado Básicamente el código se divide en bloques, estructuras, que pueden o no comunicarse entre sí. Este software se controla con secuencia, selección e interacción. Otorga una mejor comprensión del código y permite su reutilización de una forma más fácil. 34 Orientado a Objetos. Cada vez más utilizado, sobre todo en combinación con el imperativo. De hecho los lenguajes orientados a objetos permiten la programación imperativa. Algunos ejemplos de lenguajes orientados a objetos son C++, Java, Python. Usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. 2.10 HERRAMIENTA NECESARIA Para codificar el Sistema de control de acceso y de servicios del centro de cómputo de Sistemas Computacionales Administrativos se utilizó la aplicación Microsoft Visual Studio 2008.y SQL server 2008 Express Edition. 2.10.1 Microsoft Visual Studio 2008 Professional Edition Microsoft Visual Studio es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) para sistemas operativos Windows. Soporta varios lenguajes de programación tales como Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros. Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, así como servicios web en cualquier entorno que soporte la plataforma .NET (a partir de la versión .NET 2002). Así se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, páginas web y dispositivos móviles . 35 2.10.1.2 Antecedentes El lenguaje de programación BASIC (Beginner's Al pulposa Simbolice Instrucción Coda ) nació en el año 1964 como una herramienta destinado a principiantes La evolución del BASIC por los años 70 fue escasa, dado el auge que tomaron en aquella época lenguajes de alto nivel como el FORTRAN y el COBOL. En 1978 se definió una norma para unificar los BASIC existentes creándose la normativa BASIC STANDARD Con la popularización del PC, salieron varias versiones del BASIC. Actualmente se está comercializando la versión VISUALBASIC.NET de este producto. Desde su salida al mercado, cada versión supera y mejora la anterior. Microsoft Visual Studio 97 fue la primera versión que salió al mercado, ésta incluía Visual Basic 5.0 y Visual C++ 5.0 para realizar software para Windows específicamente, mientras que Visual J++ 1.1 era para Java y Windows. Los otros lenguajes eran Visual Fox Pro 5.0 para la Bases de Datos y Visual InterDev 1.0 para crear sitios dinámicos con ASP. Esto, como se puede adivinar por la versión del producto, se realizó en 1997. Microsoft Visual Studio 6.0 salió al siguiente año, en 1998. Con esto se movieron los números de versión de todos los Lenguajes de Programación y fue la última versión que Visual J++ y Visual InterDev aparecieron en una paquetería de Visual Studio. Microsoft Visual Studio .NET 2002 fue un salto completamente drástico, ya que se cambia completamente la estructura. Ahora con .NET los programas no se compilan para generar un ejecutable máquina (un archivo .EXE conocido comúnmente para el ambiente Microsoft Windows), sino que se genera un archivo intermedio para poder ser ejecutado en diferentes Plataformas (al decir Plataforma me refiero a distintas Arquitecturas de Software y Hardware, como GNU/Linux, Solaris de Sun Microsystems o Mac OS X de Apple Inc.). A esta versión se le agregan nuevos lenguajes que son: Visual J# (sucesor del desaparecido Visual J++), Visual C# y Visual Basic .NET. Menciono a Visual Basic .NET porque aunque Visual 36 Basic es parte del paquete de Visual Studio desde su primera versión, ahora se convirtió en un Lenguaje de Programación Orientado a Objetos, por tal motivo ahora se le conoce como Visual Basic .NET. Microsoft Visual Studio .NET 2003 no tuvo un fuerte cambio, lo tuvo la versión anterior; tan determinante fue el cambio, que internamente se le conoció como la versión 7.1, mientras que la versión del 2002 era la versión 7. Microsoft Visual Studio 2005 tuvo un cambio muy importante, ahora es posible trabajar con el Framework .NET 2.0, compilar hacia aplicaciones de 32 bits y 64 bits y trabajar con Microsoft SQL Server 2005. Microsoft Visual Studio 2008 fue publicado (RTM) el 17 de noviembre de 2007 en inglés, mientras que la versión en castellano no fue publicada hasta el 2 de febrero de 2008, El nuevo framework (.NET 3.5) está diseñado para aprovechar las ventajas que ofrece el nuevo sistema operativo Windows Vista a través de sus subsistemas Windows Communication Foundation (WCF) y Windows Presentation Foundation (WPF) Es el Entorno Integrado de Desarrollo (también conocido como IDE por sus siglas en inglés, Integrated Development Enviroment), que Microsoft ha desarrollado para la creación de Software enfocado a su Sistema Operativo Microsoft Windows Vista y realizar aplicaciones para trabajar con su paquetería Microsoft Office 2007. Visual Studio 2010 es la versión más reciente de esta herramienta, acompañada por .NET Framework 4.0. El lanzamiento de la versión final fue el 12 de abril de 2010. 37 2.10.1.3 .NET FRAMEWORK Es el cambio a Visual basic.net. Resaltan las siguientes características: El desarrollo de un nuevo fundamento de todas las herramientas de desarrollo.net este fundamento conocido como NET Framework ofrece dos caras primordiales, el entorno del motor de ejecución básico y un conjunto de clases fundamentales. El entorno del motor de ejecución es similar al sistema operático en el sentido de que ofrece una capa entre su programa y la complejidad del resto del sistema, con lo que provee de servicios a su aplicación y simplifica el acceso el acceso a la funcionalidad de las capas inferiores. Las clases fundamentales ofrecen una gran cantidad de funcionalidad, que envuelven y abstraen a tecnologías como los protocolos de internet, acceso al sistema de archivos manejo de XML. 2.10.3 .NET FRAMEWORK 3.5 NET Framework 3.5 agrega de forma incremental las nuevas características de .NET Framework 3.0. Por ejemplo, los conjuntos de características de Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF) y Windows CardSpace. Además, .NET Framework 3.5 contiene una serie de características nuevas en distintas áreas tecnológicas que se han agregado como nuevos ensamblados para evitar cambios destacados. Algunas de estas características son: Integración total de LINQ (Language Integrated Query) y del reconocimiento de los datos. Esta nueva característica le permitirá escribir código en idiomas habilitados para LINQ para filtrar, enumerar y crear proyecciones de varios tipos de datos SQL, colecciones, XML y conjuntos de datos usando la misma sintaxis. 38 ASP.NET AJAX permite crear experiencias web más eficaces, más interactivas y con un gran índice de personalización que funcionan con los exploradores más usados. Nueva compatibilidad con el protocolo web para generar servicios WCF, como por ejemplo AJAX, JSON, REST, POX, RSS, ATOM y distintos estándares WS-* nuevos. Nuevas clases en la biblioteca de clases base (BCL) de .NET Framework 3.5 que tratan numerosas solicitudes de cliente comunes. 2.11 BASE DE DATOS Una base de datos es una colección de archivos interrelacionados, con la mínima redundancia posible con la finalidad de servir a una aplicación de la manera más eficiente. Surgen por la necesidad de almacenar grandes cantidades de información a mediados de los años 60’s con la finalidad de tener la información disponible en el momento necesario. 2.11.1 Componentes de SQL El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. Comandos Existen dos tipos de comandos SQL: DLL (LENGUAJE DE DEFINICIÓN DE DATOS) que permiten crear y definir nuevas bases de datos, campos e índices. La tabla1. Muestra los comandos DLL. DML (LENGUAJE DE MANIPULACIÓN DE DATOS) que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. La tabla2. Muestra la descripción de los comandos DML. 39 Comandos DLL Comando Descripción CREATE Utilizado para crear nuevas tablas, campos e índices DROP Empleado para eliminar tablas e índices ALTER Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos Tabla 1: Comandos DLL (elaboración propia) Comandos DML Comando SELECT INSERT UPDATE DELETE Descripción Utilizado para consultar registros de la base de datos. Utilizado para cargar lotes de datos en la base de datos en una única operación. Utilizado para modificar los valores de los campos y registros especificados. Utilizado para eliminar registros de los campos de una tabla de una base de datos. Tabla 2: Comandos DML (elaboración propia) Cláusulas Son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. La tabla1. Muestra la descripción de las clausulas 40 CLÁUSULAS Cláusula FROM Descripción Utilizada para especificar la tabla de la cual se van a seleccionar los registros Utilizada para especificar las condiciones que deben reunir los WHERE GROUP BY HAVING ORDER BY registros que se van a seleccionar. Utilizada para separar los registros seleccionados en grupos específicos. Utilizada para expresar la condición que debe satisfacer cada grupo. Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico. Tabla 3: Cláusulas (elaboración propia) Los operadores lógicos AND y OR se usan para conectar condiciones de búsqueda en las cláusulas WHERE. NOT invierte el resultado de una condición de búsqueda. La tabla3. Muestra las la descripción de los operadores lógicos OPERADORES LÓGICOS Operador AND OR NOT Descripción Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas. Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. Negación lógica. Devuelve el valor contrario de la expresión seleccionados en grupos específicos. Tabla 4: Operadores Lógicos (elaboración propia) 41 Los operadores de comparación verifican si dos expresiones son iguales. Se pueden utilizar en todas las expresiones excepto en las de los tipos de datos text, ntext o image. En la siguiente tabla 5 se presentan los operadores de comparación. OPERADORES DE COMPARACIÓN Operador Descripción < Menor que > Mayor que <> Distinto de <= Menor o Igual que >= Mayor o Igual que = Igual que Tabla 5: Operadores de Comparación (elaboración propia) Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven un solo valor. Si exceptuamos la función COUNT, todas las funciones de agregado ignoran los valores NULL. En la tabla6. Se describen las funciones de agregado. FUNCIONES DE AGREGADO Operador AVG COUNT: SUM MAX MIN Descripción Utilizada para calcular el promedio de los valores de un campo determinado. Utilizada para devolver el número de registros de la selección. Utilizada para devolver la suma de todos los valores de un campo determinado. Utilizada para devolver el valor más alto de un campo especificado. Utilizada para devolver el valor más bajo de un campo especificado Tabla 6: Funciones de agregado (elaboración propia) 42 2.11.2 Sistema Gestor de base de datos (SGBD) Es un software de sistemas que tiene como propósito general facilitar el proceso de definir, construir y manipular bases de datos que se utilizan para diferentes tipos de aplicaciones, se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta. Ejemplos de software: Informix 4GL, Oracle, SQL server. 2.11.3 Objetivos de un SGBD Independencia lógica y física de los datos: es capacidad de modificar una definición de esquema en un nivel de la arquitectura sin que esta modificación afecte al nivel inmediatamente superior. Para ello un registro externo en un esquema externo no tiene por qué ser igual a su registro correspondiente en el esquema conceptual. Redundancia mínima: se trata de usar la base de datos como repositorio común de datos para distintas aplicaciones. Acceso concurrente por parte de múltiples usuarios: control de concurrencia mediante técnicas de bloqueo o cerrado de datos accedidos. Distribución espacial de los datos: la independencia lógica y física facilita la posibilidad de sistemas de bases de datos distribuidas. Los datos pueden encontrarse en otra habitación, otro edificio e incluso otro país. El usuario no tiene por qué preocuparse de la localización espacial de los datos a los que accede. Integridad de los datos: se refiere a las medidas de seguridad que impiden que se introduzcan datos erróneos. Esto puede suceder tanto por motivos físicos (defectos de hardware, actualización incompleta debido a causas externas), como de operación (introducción de datos incoherentes). Consultas complejas optimizadas: la optimización de consultas permite la rápida ejecución de las mismas. 43 Seguridad de acceso y auditoría: se refiere al derecho de acceso a los datos contenidos en la base de datos por parte de personas y organismos. El sistema de auditoría mantiene el control de acceso a la base de datos, con el objeto de saber qué o quién realizó una determinada modificación y en qué momento. Respaldo y recuperación: se refiere a la capacidad de un sistema de base de datos de recuperar su estado en un momento previo a la pérdida de datos. Acceso a través de lenguajes de programación estándar: se refiere a la posibilidad ya mencionada de acceder a los datos de una base de datos mediante lenguajes de programación ajenos al sistema de base de datos propiamente dicho. 2.11.4 SQL server SQL Server es un sistema gestor de bases de datos (SGBD), es conjunto de objetos eficientemente almacenados. Los objetos donde se almacena la información se denominan tablas, y éstas a su vez están compuestas de filas y columnas. En el centro de SQL Server está el motor de SQL Server, el cual procesa los comandos de la base de datos. Los procesos se ejecutan dentro del sistema operativo y entienden únicamente de conexiones y de sentencias SQL. Microsoft SQL Server es un software producido por Microsoft basado en el modelo relacional. Sus lenguajes para consultas son T-SQL y ANSI SQL. Este SGBD constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle, PostgreSQL o MySQL Es común desarrollar completos proyectos complementando Microsoft SQL Server y Microsoft Access a través de los llamados ADP (Access Data Project). De esta forma se completa la base de datos (Microsoft SQL Server), con el entorno de desarrollo (VBA Access), a través de la implementación de aplicaciones de dos capas mediante el uso de formularios Windows. 44 En el manejo de SQL mediante líneas de comando se utiliza el SQLCMD Para el desarrollo de aplicaciones más complejas (tres o más capas), Microsoft SQL Server incluye interfaces de acceso para varias plataformas de desarrollo, entre ellas NET, pero el servidor sólo está disponible para Sistemas Operativos Windows. Ventajas Soporte de transacciones. Escalabilidad, estabilidad y seguridad. Soporta procedimientos almacenados. Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente. Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y los terminales o clientes de la red sólo acceden a la información. Además permite administrar información de otros servidores de datos. Este sistema incluye una versión reducida, llamada MSDE con el mismo motor de base de datos pero orientado a proyectos más pequeños, que en sus versiones 2005 y 2008 pasa a ser el SQL Express Edition, que se distribuye en forma gratuita. Desventajas usa Address Windowing Extensión (AWE) para hacer el direccionamiento de 64-bit. Esto le impide usar la administración dinámica de memoria, y sólo le permite alojar un máximo de 64 GB de memoria compartida. no maneja compresión de datos (excepto la versión 2008 Enterprise Edition, que sí lo hace), por lo que las bases de datos pueden llegar a ocupar mucho espacio en disco. requiere de un sistema operativo Microsoft Windows, por lo que no puede instalarse, por ejemplo, en servidores Linux. 45 2.12 EJEMPLOS DE CODIFICACIÓN INICIO DE SESIÓN Try con.Open() Dim total As Integer Dim nombre As String = Me.UsernameTextBox.Text Dim clave As String = Me.PasswordTextBox.Text Dim sql As String = "select * from Usuarios where nom_us='" + nombre + "' and cont_us='" + clave + "'" Dim dausuario As New SqlDataAdapter(sql, con) Dim dtusuario As New DataTable dausuario.Fill(dtusuario) total = Me.BindingContext(dtusuario).Count.ToString If UsernameTextBox.Text = "Administrador" And PasswordTextBox.Text = "lscacentrouv" Then MenuIn.Show() PARTE A: Código para iniciar sesión en el sistema, el usuario ingresa nombre de usuario y contraseña, valida si los datos son correctos y si es diferente de administrador restringe las bajas y modificaciones de usuarios y estudiantes. 46 ElseIf total >= 1 Then MenuIn.Show() MenuIn.BajaToolStripMenuItem.Enabled = False MenuIn.ModificaciónToolStripMenuItem.Enabled = False MenuIn.BajaToolStripMenuItem1.Enabled = False MenuIn.ModificaciónToolStripMenuItem1.Enabled = False MenuIn.HistorialToolStripMenuItem.Enabled = False Else MsgBox("Verifique usuario y contraseña", MsgBoxStyle.Exclamation,"Seguridad") Me.UsernameTextBox.Text = "" Me.PasswordTextBox.Text = "" Me.UsernameTextBox.Focus() End If con.Close() Catch ex As Exception MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Try End Sub PARTE B: Segunda parte del código para iniciar sesión en el sistema. 47 ALTA DE USUARIOS Public Sub guardar() Dim cmdguardar As SqlCommand Dim sql As String = "insert into Usuarios values('" + cod + "','" + cla_us + "','" + cont + "','" + nom_us + "','" + ape + "','" + mat_ap + "','" + carr + "','" + sem + "')" Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) a = cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Alta de Usuarios (Personas que utilizarán el sistema).A través de este código el usuario ingresa los datos del nuevo usuario y es dado de alta en la base de Datos. 48 MODIFICACIÓN DE USUARIOS Public Sub modificar() Dim cmdmodificar As SqlCommand Dim sql As String = "update V_Us set nom_us='" + cla_us + "',cont_us='" + cont + "',nom_alt='" + nom_us + "',ap_alt='" + ape + "',mat_alt='" + mat_ap + "' where cod_us='" + cod + "'" Try con = New SqlConnection(cadena) con.Open() cmdmodificar = New SqlCommand(sql, con) m2 = cmdmodificar.ExecuteNonQuery() cmdmodificar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Para modificar los datos del usuario, se ingresan los datos nuevos y son enviados a la Base de Datos. 49 ELIMINAR USUARIOS Public Sub eliminar() Dim cmdmodificar As SqlCommand Dim sql As String = "delete from Usuarios where cod_us='" + cod + "'" Try con = New SqlConnection(cadena) con.Open() cmdmodificar = New SqlCommand(sql, con) e = cmdmodificar.ExecuteNonQuery() cmdmodificar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Para eliminar a un usuario, se ingresa el código del usuario y posteriormente es dado de baja en la Base de Datos. 50 HISTORIAL DE IMPRESÍÓN Public Sub mostrar() Dim damostrar As New SqlDataAdapter("select Matrícula,Nombre,Ap_Paterno as 'appellido paterno',Ap_Materno as 'Apellido Materno',num_imp as 'número de impresiones' from V_Impresion", cadena) Dim dtmostrar As New DataTable damostrar.Fill(dtmostrar) Me.DataGridView1.DataSource = dtmostrar Código utilizado para mostrar el historial de impresión de los Estudiantes. ABONO DE CRÉDITO Public Sub guardar() Dim cmdguardar As SqlCommand Dim sql As String = "insert into Abono values('" + folio + "','" + fecha + "','" + cant_ab + "','" + matr + "')" con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Código para guardar el saldo que abona el Estudiante a su cuenta, para ello se ingresa, el folio, cantidad a abonar y la matrícula para llevar un control sobre abonos. 51 CRÉDITO ACTUAL Using con = New SqlConnection(cadena) Dim x As String = Me.TextBox2.Text con.Open() Dim sql As String = "select saldo from Estudiantes where Matrícula = '" + x + "'" Dim cmd As New SqlCommand(sql, con) Dim sald As Integer = Convert.ToInt32(cmd.ExecuteScalar()) TextBox8.Text = CStr(sald) con.Close() End Using Código utilizado para Mostrar el saldo actual del estudiante.se ingresa matrícula y el saldo es mostrado en pantalla. MODIFICAR EL SALDO Public Sub modificar() Dim cmdguardar As SqlCommand Dim sql As String = "update Estudiantes set saldo= (saldo +'" + cant_ab + "') where Matrícula='" + matr + "'" Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try Código para realizar modificaciones al saldo del estudiante (cuando ingresa nuevo abono a su cuenta.) 52 GUARDAR NÚMERO DE IMPRESIONES Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click llenar() If TextBox9.Text <= TextBox8.Text Then oiimpre.guardar() oiimpre.modificar() MsgBox("Impresión agregada") Else MsgBox("crédito Insuficiente") End If limpiar() End Sub Código utilizado para guardar en la base de datos las impresiónes que los estudiantes han realizado. HISTORIAL DE PRESTAMO Public Sub mostrar() Dim damostrar As New SqlDataAdapter("select * from HPrestamo", cadena) Dim dtmostrar As New DataTable damostrar.Fill(dtmostrar) Me.DataGridView1.DataSource = dtmostrar End Sub Mostrar el historial de préstamo de equipos. Del centro de Cómputo 53 HISTORIAL DE ABONO Public Sub mostrar() Dim damostrar As New SqlDataAdapter("select Matrícula,Nombre,Ap_Paterno as 'appellido paterno',Ap_Materno as 'Apellido Materno',cant_ab as 'Cantidad Abonoada' from V_Abono", cadena) Dim dtmostrar As New DataTable damostrar.Fill(dtmostrar) Mostrar el historial de los abonos de saldo que los estudiantes han realizado HISTORIAL DE IMPRESIÓN Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If RadioButton1.Checked Then actualizar() Else If RadioButton2.Checked Then actualiza2() Else If RadioButton3.Checked Then actualiza3() End If End If El botón Aceptar del formulario de Historial de impresión Muestra el historial por Fecha y Alumno, 54 MODIFICAR SALDO Public Sub modificar() Dim cmdguardar As SqlCommand Dim sql As String = "update Estudiantes set saldo= (saldo - '" + impr + "') where Matrícula='" + matr + "'" Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(Sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub End Class Código utilizado para Modificar el saldo del estudiante cuando Realiza impresiones. 55 PRESTAMO DE EQUIPO Public Sub guardar() Dim cmdguardar As SqlCommand Dim sql As String = "insert into Prestamo values('" + num_equipo + "','" + fecha + "','" + matr + "')" Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Código para Realizar el préstamo de equipo del centro de cómputo, se ingresa el número de equipo la fecha y la matrícula para el control de los equipos. 56 MANTENIMIENTO PC Private Sub MantenimientoBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MantenimientoBindingNavigatorSaveItem.Click Me.Validate() Me.MantenimientoBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.ComputoDataSet) End Sub Private Sub Mantenimiento_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load este código carga datos en la tabla Me.MantenimientoTableAdapter.Fill(Me.ComputoDataSet.Mantenimiento) End Sub Código para guardar el estado en que se encuentran las computadoras . RESERVACIÓN DE AULA Me.Validate() Me.ReservacionBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.ComputoDataSet) ' Me.ReservacionTableAdapter.Fill(Me.ComputoDataSet.Reservacion) Código para guardar el horario de clases en el centro de cómputo. 57 RESERVACIÓN EQUIPO Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGuardar.Click If TextBox1.Text = "" Then MsgBox("ingrese Numero de folio") ElseIf TextBox8.Text = "" Then MsgBox("ingrese Numero de Equipo") ElseIf TextBox8.Text > 0 And TextBox8.Text < 31 Then If TextBox8.Text = "1" Then RadioButton1.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "2" Then RadioButton2.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "3" Then RadioButton3.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "4" Then RadioButton4.BackColor = Color.Red llenar() oprestamo.guardar() End If Código que Permite Visualizar el equipo utilizado por el estudiante . 58 LIBERAR EQUIPO Private Sub LiberarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LiberarToolStripMenuItem.Click If RadioButton1.Checked Then RadioButton1.BackColor = Color.Transparent End If If RadioButton2.Checked Then RadioButton2.BackColor = Color.Transparent End If If RadioButton3.Checked Then RadioButton3.BackColor = Color.Transparent End If If RadioButton4.Checked Then RadioButton4.BackColor = Color.Transparent End If If RadioButton5.Checked Then RadioButton5.BackColor = Color.Transparent End If If RadioButton6.Checked Then RadioButton6.BackColor = Color.Transparent End If If RadioButton7.Checked Then RadioButton7.BackColor = Color.Transparent End If If RadioButton8.Checked Then RadioButton8.BackColor = Color.Transparent Código utilizado para indicar que un equipo se encuentra disponible después de haber sido utilizado. 59 BOTÓN GUARDAR USUARIO. If RadioMaestro.Checked Then llenar2() oalta.guardar2() If oalta.a2 = True Then MsgBox("Usurio Agregado", MessageBoxIcon.Information) Else MsgBox("error al guardar usuario", MsgBoxStyle.Information) End If limpiar() End If If RadioSsocial.Checked Then llenar() oalta.guardar() If oalta.a = True Then MsgBox("Usurio Agregado", MessageBoxIcon.Information) Else MsgBox("error al guardar usuario", MsgBoxStyle.Information) End If limpiar() End If End Sub Código del Botón Guardar del formulario de Usuarios (Maestro y Servicio Social) 60 BOTÓN BUSCAR ESTUDIANTE con = New SqlConnection(cadena) con.Open() Dim x As String = Me.TextBox1.Text Dim sql As String = "SELECT * FROM Estudiantes WHERE Matrícula = '" + x + "'" Dim cmd As New SqlCommand(sql, con) Dim reader As SqlDataReader = cmd.ExecuteReader If reader.Read() Then TextBox2.Text = CStr(reader("Matrícula")) TextBox3.Text = CStr(reader("Nombre")) TextBox4.Text = CStr(reader("Ap_Paterno")) TextBox5.Text = CStr(reader("Ap_Materno")) TextBox6.Text = CStr(reader("semestre")) TextBox7.Text = CStr(reader("carrera")) Else MsgBox("Ingrese Matrícula", MessageBoxIcon.Information) End If con.Close() Código utilizado para mostrar datos del estudiante al ingresar su matrícula. 61 HISTORIAL POR FECHA Public Sub actualizar() Dim x As Date = Me.DateTimePicker1.Value.Date Dim daprestam As New SqlDataAdapter("select Matrícula,Nombre,Ap_Paterno as 'appellido paterno',Ap_Materno as 'Apellido Materno',cant_ab as 'Cantidad Abonoada' from V_Abono WHERE fecha = '" + x + "'", cadena) Dim dtprestam As New DataTable daprestam.Fill(dtprestam) Me.DataGridView1.DataSource = dtprestam End Sub Código utilizado para mostrar información sobre los equipos que se utilizaron en determinada fecha. HISTORIAL POR ESTUDIANTE Public Sub actualiza2() Dim x As String = Me.TextBox1.Text Dim daprestamo As New SqlDataAdapter("select Matrícula,Nombre,Ap_Paterno as 'Apellido Paterno',Ap_Materno as 'Apellido Materno',carrera,fecha,num_equipo as 'Número de Equipo' from V_Eprestamo WHERE Matrícula = '" + x + "'", cadena) Dim dtprestamo As New DataTable daprestamo.Fill(dtprestamo) Me.DataGridView1.DataSource = dtprestamo End Sub Código utilizado para mostrar información sobre los equipos que el estudiante ha utilizado. 62 BOTÓN GUARDAR LAS MODIFICACIONES PRIVATE SUB BUTTON5_CLICK(BYVAL SENDER AS SYSTEM.OBJECT, BYVAL E AS SYSTEM.EVENTARGS) HANDLES BUTTON5.CLICK LLENAR() OESTUDIANTES.MODIFICAR() LIMPIAR() IF OESTUDIANTES.M = TRUE THEN MSGBOX("DATOS MODIFICADO", MESSAGEBOXICON.INFORMATION) ELSE MSGBOX("ERROR AL MODIFICAR DATOS", MSGBOXSTYLE.INFORMATION) END IF Código del botón Modificar: actualiza los datos del Estudiante BOTÓN ELIMINAR AL ESTUDIANTE Private Sub BEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BEliminar.Click llenar() oestudiantes.eliminar() limpiar() If oestudiantes.A = True Then MsgBox("Estudiante Eliminado", MessageBoxIcon.Information) Else MsgBox("error al eliminar Estudiante", MsgBoxStyle.Information) End If End Sub Código del botón Eliminar: Elimina al Estudiante seleccionado de la BD. 63 BOTÓN ACEPTAR. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If RFecha.Checked Then actualizar() End If If RAlumno.Checked Then actualiza2() End If If RCarrera.Checked Then actualiza3() End If Código que Muestra la Consulta de Abonos por Fecha, Alumno y Carrera. LLENAR DATOS Public Sub llenar() oprestamo.cadena = cadena oprestamo.cod = Me.TextBox9.Text oprestamo.num_equipo = Me.TextBox8.Text oprestamo.fecha = DateTimePicker1.Value oprestamo.matr = Me.TextBox1.Text End Sub End Sub Código utilizado para indicar los datos que se almacenaran en la BD, 64 VALIDAR Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Código que permite ingresar solo datos de tipo cadena, en los cuadros de texto. Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Código que permite ingresar solo datos de tipo numérico, en los cuadros de texto 65 REPORTES Me.V_AbonoTableAdapter.Fill(Me.ComputoDataSet.V_Abono) Dim rpt As New CrystalReport4() rpt.SetDataSource(ComputoDataSet) CrystalReportViewer1.ReportSource = rpt Código utilizado para mostrar los reportes de la información generada en el sistema. 66 CAPÍTULO III 3.-CONCLUSIONES Y RECOMENDACIONES INTRODUCCIÓN El desarrollo de software y la programación es uno de las actividades que requieren de concentración y al cual se le dedica tiempo y esfuerzo para poder obtener al final buenos resultados. Con la evolución de los lenguajes de programación y la variedad de herramientas que existen, se busca que el desarrollar software sea menos agotador, y que el resultado sea lo que el usuario espera. Este es uno de los objetivos de la programación orientadas a objetos o los compiladores basados en máquinas virtuales, que también han influenciado de manera positiva en la programación. En esta tercera unidad se muestran las conclusiones y los resultados obtenidos Al finalizar la investigación y el desarrollo del sistema para el centro de cómputo, al igual que las recomendaciones necesarias para que le usuario final utilice adecuadamente el producto obtenido 68 3.1 CONCLUSIONES La información es poder, es por eso que las organizaciones competitivas buscan que la información se encuentre siempre en tiempo y forma para evitar pérdidas, por tal motivo los sistemas de información son de gran ayuda para administrar la información que genera a diario en los centros de trabajo para tomar decisiones importantes sobre la organización, evitando de esta manera quedar fuera del mercado competitivo. Para poder desarrollar sistemas que cumplan con las exigencias de los clientes o usuarios existen lenguajes de programación como Java, C, C++, PHP, C#, (Visual) Basic entre otros. Al desarrollar un software es necesario definir el paradigma de programación, EL paradigma orientado a objetos es Cada vez más utilizado, los desarrolladores en ocasiones lo combinan con el imperativo. Ya que los lenguajes orientados a objetos permiten la programación imperativa. Algunos ejemplos de lenguajes orientados a objetos son C++, Java, Python. Usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. La implantación del sistema desarrollado, será de gran utilidad para el centro de cómputo, porque mejorara la eficacia de las actividades que se realizan en el centro de cómputo. 69 3.2 RECOMENDACIONES 1. Darle el uso adecuado al sistema, se recomienda leer los manuales proporcionados conocer correctamente el funcionamiento y los requisitos necesarios para operar el sistema. 2. El sistema debe ser operado solo por el personal autorizado, con el fin de mantener la integridad de los datos y evitar perdida o filtrado de información. 3. El sistema debe recibir mantenimiento preventivo y de actualización de software y hardware, de esta manera el software cumplirá con el objetivo para el cual fue creado. 4. Se recomienda no compartir la clave de Administrador para evitar alteraciones en el sistema. 5. Cuando el software presente errores no dejar pasar los errores, es necesario notificarle al Técnico del centro de cómputo para monitorear el error y evitar daños mayores en el sistema. 6. Verificar que el equipo en el que se encuentra instalado el sistema este actualizado (Antivirus, Actualizaciones del sistema operativo entre otros.) 70 3.3 PROPUESTAS Es natural que en los software se realicen cambios, dependiendo de las modificaciones en las actividades que los usuarios realicen en sus centros de trabajo, o añadir nuevas funciones al sistema, Por tal motivo es necesario darle mantenimiento y evaluar el sistema, dependiendo del resultado el responsable del sistema para el control de acceso y de servicios del centro de cómputo de sistemas computacionales administrativos decidirá si es necesario realizar cambios al sistema para ello propongo que al planear los cambios que requiera el software revise el código proporcionado, y también el análisis del sistema. 71 BIBLIOGRAFÍA Páginas web Behrens Kurt J. (2011). SQL Server. Consultado en 11-14-2011 en http://sitioit.com/sqlserver.aspx. Casares Claudio (2004). Tutorial SQL. Consultado en 10-4-2011 en http://www.devjoker.com/contenidos/catss/122/NET-FrameWork.aspx. Elías G. (2009). Tutorial SQL. Consultado en 107-2011 en http://paratupagina.com/topic/136-microsoft-visual-studio/. Forma Select Grupo Empresarial (2006). Introducción a SQL Server. Consultado en 10-20-2011 en http://www.formaselect.com/curso/experto-ensql-server2000/Introduccion-a-SQL-Server%202000.pdf. Gonzales T. Luis (). Introducción a la informática. Consultado en 10/12/2011 en http://es.scribd.com/doc/55324138/21/clasificacion-de-las-instrucciones. González Seco José Antonio (29/09/2006). .NET FrameWork. Consultado en 10-4-2011 en http://www.devjoker.com/contenidos/catss/122/NET- FrameWork.aspx. http://msdn.microsoft.com/eses/library/s9ek7a19(v=vs.80).aspx. Microsoft Corporation (2011). Conozca sus errores: tres tipos de errores de programación. Consultado en 11/10/2011 en http://msdn.microsoft.com/eses/library/s9ek7a19%28v=vs.90%29.aspx Microsoft Corporation (2011). Microsoft .NET Framework 3.5. Consultado en 11-14-2011 en http://www.microsoft.com/downloads/ eses/ details .aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6. Moreno Ortiz Antonio (2000). Características y objetivos, Bases de datos. Consultado en 11-14-2011 en http://elies.rediris.es/elies9/4-1-2.htm. 72 Libros Duncan Mackenzie, Kent sharkey (). Aprendiendo Visual Basic.Net en 21 Lecciones Avanzadas. : Pearson Educación. Fernández Alarcón Vicenç (2006). Desarrollo de sistemas de información una metodología basada en el modelado. : Edicions UPC. Kendall E., Kenneth & Kendall E., Julie (2005). Análisis y diseño de sistemas. : Pearson Education. Pressman S.R (2005) Ingeniería de software, un enfoque práctico. Madrid: Mc Graw-Hill Silberschatz Abraham, Henry F. Korth, S. Sudarshan (2002). Fundamentos De Bases De Datos. Cuarta edición. Hill/Interamericana de España, S. A. U. 73 Aravaca (Madrid): McGraw- GLOSARIO Algoritmo: Método que describe cómo se resuelve un problema en término de las acciones que se ejecutan y especifica el orden en que se ejecutan estas acciones. Los algoritmos ayudan al programador a planificar un programa antes de su escritura en un lenguaje de programación. Análisis: Proceso de identificación, modelado y descripción de lo que hace un sistema y de cómo trabaja. Biblioteca de clases: Colección organizada de clases que proporciona un conjunto de componentes y abstracciones reutilizables. Clase: Colección encapsulada de datos y operaciones que actúan sobre los datos. El concepto de clase es fundamental en programación orientada a objetos. Una clase consta de métodos y datos. Los métodos de una clase definen el conjunto de operaciones permitidas sobre los datos de una clase (sus atributos). Una clase puede tener muchas instancias de la clase u objetos. Comando: es una instrucción u orden que el usuario proporciona a un sistema informático, desde la línea de comandos (como una Shell) o desde una llamada de programación. Compilación: Proceso de traducción de un lenguaje de programación. Normalmente este proceso implica la traducción de un lenguaje de programación de alto nivel a lenguaje de programación de bajo nivel, o el formato binario de un conjunto de instrucciones específicas. Ejecutar: Hacer funcionar un programa instrucción a instrucción. 74 Expresión: Conjunto de variables, constantes, funciones y símbolos de operación que expresan un cálculo a realizar. Proporcionan un valor que será del tipo (aritmético, alfanumérico o lógico) de las variables y constantes que contiene. Fuente: Origen. Se dice que un programa está en lenguaje fuente cuando aún no ha sido traducido por ningún compilador. 75 ANEXOS BIBLIOTECA DE CLASES ABONO Imports System.Data.SqlClient Public Class Abono Public cadena As String Public matr As String Public fecha As String Public folio As String Public cant_ab As String Public Sub guardar() Try Dim cmdguardar As SqlCommand Dim sql As String = "insert into Abono values('" + folio + "','" + fecha + "','" + cant_ab + "','" + matr + "')" con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub modificar() Dim cmdguardar As SqlCommand Dim sql As String = "update Estudiantes set saldo= (saldo +'" + cant_ab + "') where Matrícula='" + matr + "'" Try 76 con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub End Class ALTA ublic Class Alta Public cod As String Public cla_us As String Public cont As String Public nom_us As String Public ape As String Public mat_ap As String Public carr As String Public sem As String Public cadena As String Public a As Object Public a2 As Object Public m As Object Public m2 As Object Public e As Object Public Sub guardar() Dim cmdguardar As SqlCommand Dim sql As String = "insert into Usuarios values('" + cod + "','" + cla_us + "','" + cont + "','" + nom_us + "','" + ape + "','" + mat_ap + "','" + carr + "','" + sem + "')" 77 Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) a = cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub guardar2() Dim cmdguardar2 As SqlCommand Dim sql As String = "insert into V_Us values('" + cod + "','" + cla_us + "','" + cont + "','" + nom_us + "','" + ape + "','" + mat_ap + "')" Try con = New SqlConnection(cadena) con.Open() cmdguardar2 = New SqlCommand(sql, con) a2 = cmdguardar2.ExecuteNonQuery() cmdguardar2.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub Mofidicar() Dim cmdguardar As SqlCommand Dim sql As String = "update Usuarios set nom_us='" + cla_us + "',cont_us='" + cont + "',nom_alt='" + nom_us + "',ap_alt='" + ape + "',mat_alt='" + mat_ap + "',car_us'" + carr + "',sem_us'" + sem + "' where cod_us='" + cod + "'" 78 Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) m = cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub modificar2() Dim cmdmodificar As SqlCommand Dim sql As String = "update V_Us set nom_us='" + cla_us + "',cont_us='" + cont + "',nom_alt='" + nom_us + "',ap_alt='" + ape + "',mat_alt='" + mat_ap + "' where cod_us='" + cod + "'" Try con = New SqlConnection(cadena) con.Open() cmdmodificar = New SqlCommand(sql, con) m2 = cmdmodificar.ExecuteNonQuery() cmdmodificar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub eliminar() Dim cmdmodificar As SqlCommand Dim sql As String = "delete from Usuarios where cod_us='" + cod + "'" Try 79 con = New SqlConnection(cadena) con.Open() cmdmodificar = New SqlCommand(sql, con) e = cmdmodificar.ExecuteNonQuery() cmdmodificar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub End Class ESTUDIANTES Imports System.Data.SqlClient Public Class Estudiantes Public matr As String Public nom_es As String Public ape As String Public mat_es As String Public carr As String Public sem As String Public cadena As String Public A As Object Public m As Object Public G As Object Public Sub guardar() Dim cmdguardar As SqlCommand Dim sql As String = "insert into V_Est values('" + matr + "','" + nom_es + "','" + ape + "','" + mat_es + "','" + sem + "','" + carr + "')" Try con = New SqlConnection(cadena) 80 con.Open() cmdguardar = New SqlCommand(sql, con) G = cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub modificar() Dim cmdmodificar As SqlCommand Dim sql As String = "update Estudiantes set Nombre='" + nom_es + "',Ap_Paterno='" + ape + "',Ap_Materno='" + mat_es + "',semestre='" + sem + "',carrera='" + carr + "' where matrícula='" + matr + "'" Try con = New SqlConnection(cadena) con.Open() cmdmodificar = New SqlCommand(sql, con) m = cmdmodificar.ExecuteNonQuery() cmdmodificar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub eliminar() Dim cmdeliminar As SqlCommand Dim sql As String = "delete from Estudiantes where matrícula='" + matr + "'" Try con = New SqlConnection(cadena) con.Open() 81 cmdeliminar = New SqlCommand(sql, con) A = cmdeliminar.ExecuteNonQuery() cmdeliminar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub End Class IMPRESIÓN Imports System.Data.SqlClient Public Class Impresion Public cod_imp As String Public matr As String Public impr As String Public cadena As String Public fecha As String Public Function mostrar() mostrar = New DataTable Dim damostrar As New SqlDataAdapter("select * from Usuarios", con) damostrar.Fill(mostrar) End Function Public Sub guardar() Dim cmdguardar As SqlCommand Dim sql As String = "insert into Impresion values('" + impr + "','" + fecha + "','" + matr + "')" Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) 82 cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub Public Sub modificar() Dim cmdguardar As SqlCommand Dim sql As String = "update Estudiantes set saldo= (saldo - '" + impr + "') where Matrícula='" + matr + "'" Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(Sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub End Class Imports System.Data.SqlClient Public Class Prestamo Public cod As String Public num_equipo As String Public fecha As String Public matr As String Public cadena As String 83 Public Sub guardar() Dim cmdguardar As SqlCommand Dim sql As String = "insert into Prestamo values('" + num_equipo + "','" + fecha + "','" + matr + "')" Try con = New SqlConnection(cadena) con.Open() cmdguardar = New SqlCommand(sql, con) cmdguardar.ExecuteNonQuery() cmdguardar.Dispose() con.Close() MsgBox("Equipo asignado") Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error") End Try End Sub End Class FORMULARIO ALTA USUARIOS Imports System.Data.SqlClient Public Class Alta Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public oalta = New Centro_Clases.Alta Public Sub actualizar() Dim daUsuarios As New SqlDataAdapter("select * from Usuarios", cadena) Dim dtUsuarios As New DataTable daUsuarios.Fill(dtUsuarios) End Sub Public Sub limpiar() 84 Me.TextBox1.Text = "" Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.TextBox6.Text = "" Me.TextBox7.Text = "" Me.TextBox8.Text = "" End Sub Public Sub llenar() oalta.cadena = cadena oalta.cod = Me.TextBox1.Text oalta.cla_us = Me.TextBox2.Text oalta.cont = Me.TextBox3.Text oalta.nom_us = Me.TextBox4.Text oalta.ape = Me.TextBox5.Text oalta.mat_ap = Me.TextBox6.Text oalta.carr = Me.TextBox7.Text oalta.sem = Me.TextBox8.Text End Sub Public Sub llenar2() oalta.cadena = cadena oalta.cod = Me.TextBox1.Text oalta.cla_us = Me.TextBox2.Text oalta.cont = Me.TextBox3.Text oalta.nom_us = Me.TextBox4.Text oalta.ape = Me.TextBox5.Text oalta.mat_ap = Me.TextBox6.Text End Sub 85 Private Sub Alta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() actualizar() End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioSsocial.CheckedChanged Label7.Show() Label8.Show() TextBox7.Show() TextBox8.Show() End Sub Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click Label7.Show() End Sub Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioMaestro.CheckedChanged Label7.Hide() Label8.Hide() TextBox7.Hide() TextBox8.Hide() End Sub Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False 86 ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click limpiar() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Hide() MenuIn.Show() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If RadioMaestro.Checked Then llenar2() oalta.guardar2() If oalta.a2 = True Then MsgBox("Usurio Agregado", MessageBoxIcon.Information) Else MsgBox("error al guardar usuario", MsgBoxStyle.Information) End If limpiar() End If If RadioSsocial.Checked Then llenar() oalta.guardar() If oalta.a = True Then 87 MsgBox("Usurio Agregado", MessageBoxIcon.Information) Else MsgBox("error al guardar usuario", MsgBoxStyle.Information) End If limpiar() End If End Sub Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox8_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox8.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False 88 ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox5_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox7_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox7.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then 89 e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub End Class FORMULARIO MODIFICACIÓN Y BAJA DE USUARIOS Imports System.Data.SqlClient Public Class BSSocial Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public oalta = New Centro_Clases.Alta Public con = New SqlConnection(cadena) Public Sub limpiar() Me.TextBox1.Text = "" Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.TextBox6.Text = "" Me.TextBox7.Text = "" Me.TextBox8.Text = "" Me.TextBox9.Text = "" 90 End Sub Public Sub llenar() 'estudiantes oalta.cadena = cadena oalta.cod = Me.TextBox2.Text oalta.cla_us = Me.TextBox3.Text oalta.cont = Me.TextBox4.Text oalta.nom_us = Me.TextBox5.Text oalta.ape = Me.TextBox6.Text oalta.mat_ap = Me.TextBox7.Text oalta.carr = Me.TextBox7.Text oalta.sem = Me.TextBox9.Text End Sub Public Sub llenar2() 'maestros oalta.cadena = cadena oalta.cod = Me.TextBox2.Text oalta.cla_us = Me.TextBox3.Text oalta.cont = Me.TextBox4.Text oalta.nom_us = Me.TextBox5.Text oalta.ape = Me.TextBox6.Text oalta.mat_ap = Me.TextBox7.Text End Sub Private Sub BMaestro_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() If RadioButton1.Checked Then limpiar() ElseIf RadioButton1.Checked Then limpiar() End If End Sub 91 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) oalta.modificar() limpiar() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) oalta.eliminar() limpiar() End Sub Private Sub RsdioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) HistorialAbono.Show() End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.Show() End Sub Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label6.Click End Sub Private Sub RadioButton2_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged Label7.Show() Label8.Show() TextBox8.Show() TextBox9.Show() End Sub 92 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged Label7.Hide() Label8.Hide() TextBox8.Hide() TextBox9.Hide() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click If RadioButton1.Checked Then con.Open() Dim x As String = Me.TextBox1.Text Dim sql As String = "SELECT * FROM V_Us WHERE cod_us = '" + x + "' " Dim cmd As New SqlCommand(sql, con) Dim reader As SqlDataReader = cmd.ExecuteReader() If reader.Read() Then TextBox2.Text = CStr(reader("cod_us")) TextBox3.Text = CStr(reader("nom_us")) TextBox4.Text = CStr(reader("cont_us")) TextBox5.Text = CStr(reader("nom_alt")) TextBox6.Text = CStr(reader("ap_alt")) TextBox7.Text = CStr(reader("mat_alt")) Else MsgBox("ingrese ID del usuario", MessageBoxIcon.Exclamation) End If con.close() End If If RadioButton2.Checked Then con.Open() Dim x As String = Me.TextBox1.Text Dim sql As String = "SELECT * FROM Usuarios WHERE cod_us ='" + x + "'" 93 Dim cmd As New SqlCommand(sql, con) Dim reader As SqlDataReader = cmd.ExecuteReader If reader.Read() Then TextBox2.Text = CStr(reader("cod_us")) TextBox3.Text = CStr(reader("nom_us")) TextBox4.Text = CStr(reader("cont_us")) TextBox5.Text = CStr(reader("nom_alt")) TextBox6.Text = CStr(reader("ap_alt")) TextBox7.Text = CStr(reader("mat_alt")) TextBox8.Text = CStr(reader("car_us")) TextBox9.Text = CStr(reader("sem_us ")) Else MsgBox("ingrese ID usuario", MessageBoxIcon.Exclamation) End If con.close() End If End Sub Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click limpiar() End Sub Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If RadioButton1.Checked Then llenar2() oalta.eliminar2() If oalta.a2 = True Then MsgBox("Usurio Eliminado", MessageBoxIcon.Information) Else MsgBox("error al eliminar usuario", MsgBoxStyle.Information) End If 94 limpiar() End If If RadioButton2.Checked Then llenar() oalta.guardar() If oalta.a = True Then MsgBox("Usurio Eliminado", MessageBoxIcon.Information) Else MsgBox("error al eliminar usuario", MsgBoxStyle.Information) End If limpiar() End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If RadioButton1.Checked Then llenar2() oalta.modificar2() If oalta.m2 = True Then MsgBox("Usurio Modificado", MessageBoxIcon.Information) Else MsgBox("error al Modificar usuario", MsgBoxStyle.Information) End If limpiar() End If If RadioButton2.Checked Then llenar() oalta.modificar() If oalta.m = True Then MsgBox("Usurio Modificado", MessageBoxIcon.Information) 95 Else MsgBox("error al modificar usuario", MsgBoxStyle.Information) End If limpiar() End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Hide() MenuIn.Show() End Sub Private Sub TextBox9_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox9.TextChanged End Sub End Class ALTA DE ESTUDIANTES Imports System.Data.SqlClient Public Class AltaEs Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public oestudiantes = New Centro_Clases.Estudiantes Public Sub limpiar() Me.TextBox1.Text = "" Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.TextBox6.Text = "" 96 End Sub Public Sub llenar() oestudiantes.cadena = cadena oestudiantes.matr = Me.TextBox1.Text oestudiantes.nom_es = Me.TextBox2.Text oestudiantes.ape = Me.TextBox3.Text oestudiantes.mat_es = Me.TextBox4.Text oestudiantes.sem = Me.TextBox5.Text oestudiantes.carr = Me.TextBox6.Text End Sub Private Sub AltaEs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() Me.TextBox1.Focus() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click llenar() oestudiantes.guardar() If oestudiantes.G = True Then MsgBox("Estudiante Agregado", MessageBoxIcon.Information) Else MsgBox("error al guardar Estudiante", MsgBoxStyle.Information) End If limpiar() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Hide() MenuIn.Show() End Sub 97 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click limpiar() End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else 98 e.Handled = True End If End Sub Private Sub TextBox5_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress If Char.IsLetter(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged End Sub End Class 99 FORMULARIO DE BAJA Y MODIFICACIÓN DE ESTUDIANTES Imports System.Data.SqlClient Public Class BajaMod Private dv As New DataView Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public oestudiantes = New Centro_Clases.Estudiantes Public Sub limpiar() Me.TextBox1.Text = "" Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.TextBox6.Text = "" Me.TextBox7.Text = "" End Sub Public Sub llenar() oestudiantes.cadena = cadena oestudiantes.matr = Me.TextBox2.Text oestudiantes.nom_es = Me.TextBox3.Text oestudiantes.ape = Me.TextBox4.Text oestudiantes.mat_es = Me.TextBox5.Text oestudiantes.sem = Me.TextBox6.Text oestudiantes.carr = Me.TextBox7.Text End Sub Private Sub BajaMod_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 100 llenar() oestudiantes.modificar() limpiar() If oestudiantes.m = True Then MsgBox("Datos Modificado", MessageBoxIcon.Information) Else MsgBox("error al modificar Datos", MsgBoxStyle.Information) End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Hide() MenuIn.Show() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buscar.Click con = New SqlConnection(cadena) con.Open() Dim x As String = Me.TextBox1.Text Dim sql As String = "SELECT * FROM Estudiantes WHERE Matrícula ='" + x + "'" Dim cmd As New SqlCommand(sql, con) Dim reader As SqlDataReader = cmd.ExecuteReader If reader.Read() Then TextBox2.Text = CStr(reader("Matrícula")) TextBox3.Text = CStr(reader("Nombre")) TextBox4.Text = CStr(reader("Ap_Paterno")) 101 TextBox5.Text = CStr(reader("Ap_Materno")) TextBox6.Text = CStr(reader("semestre")) TextBox7.Text = CStr(reader("carrera")) Else MsgBox("Ingrese Matrícula", MessageBoxIcon.Information) End If con.Close() Private Sub BEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BEliminar.Click llenar() oestudiantes.eliminar() limpiar() If oestudiantes.A = True Then MsgBox("Estudiante Eliminado", MessageBoxIcon.Information) Else MsgBox("error al eliminar Estudiante", MsgBoxStyle.Information) End If End Sub End Class FORMULARIO PRESTAMO DE EQUIPO Imports System.Data.SqlClient Public Class Prestamo Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public oprestamo = New Centro_Clases.Prestamo Public Sub limpiar() For Each control As Windows.Forms.Control In Me.Controls If TypeOf control Is GroupBox Then For Each controlText As Windows.Forms.Control In Me.GroupBox1.Controls 102 If TypeOf controlText Is TextBox Then CType(controlText, TextBox).Clear() End If Next ElseIf TypeOf control Is TextBox Then CType(control, TextBox).Clear() End If Next End Sub Public Sub llenar() oprestamo.cadena = cadena oprestamo.cod = Me.TextBox9.Text oprestamo.num_equipo = Me.TextBox8.Text oprestamo.fecha = DateTimePicker1.Value oprestamo.matr = Me.TextBox1.Text End Sub Private Sub Prestamo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGuardar.Click If TextBox1.Text = "" Then MsgBox("ingrese Numero de fo") ElseIf TextBox8.Text = "" Then MsgBox("ingrese Numero de Equipo") ElseIf TextBox8.Text > 0 And TextBox8.Text < 31 Then If TextBox8.Text = "1" Then 103 RadioButton1.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "2" Then RadioButton2.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "3" Then RadioButton3.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "4" Then RadioButton4.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "5" Then RadioButton5.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "6" Then RadioButton6.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "7" Then RadioButton7.BackColor = Color.Red 104 llenar() oprestamo.guardar() End If If TextBox8.Text = "8" Then RadioButton8.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "9" Then RadioButton9.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "10" Then RadioButton10.BackColor = Color.Red End If If TextBox8.Text = "11" Then RadioButton11.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "12" Then RadioButton12.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "13" Then RadioButton13.BackColor = Color.Red RadioButton13.Enabled = True llenar() oprestamo.guardar() 105 ElseIf TextBox8.Text = "14" Then RadioButton14.BackColor = Color.Red End If If TextBox8.Text = "15" Then RadioButton15.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "16" Then llenar() oprestamo.guardar() RadioButton16.BackColor = Color.Red End If If TextBox8.Text = "17" Then RadioButton17.BackColor = Color.Red End If If TextBox8.Text = "18" Then RadioButton18.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "19" Then RadioButton19.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "20" Then RadioButton20.BackColor = Color.Red End If If TextBox8.Text = "21" Then RadioButton21.BackColor = Color.Red 106 llenar() oprestamo.guardar() End If If TextBox8.Text = "22" Then RadioButton22.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "23" Then RadioButton23.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "24" Then RadioButton24.BackColor = Color.Red End If If TextBox8.Text = "25" Then RadioButton25.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "26" Then RadioButton26.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "27" Then RadioButton27.BackColor = Color.Red llenar() oprestamo.guardar() End If 107 If TextBox8.Text = "28" Then RadioButton28.BackColor = Color.Red llenar() oprestamo.guardar() End If If TextBox8.Text = "29" Then RadioButton29.BackColor = Color.Red End If If TextBox8.Text = "30" Then RadioButton30.BackColor = Color.Red llenar() oprestamo.guardar() End If Else MsgBox("El equipo no existe") End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Hide() MenuIn.Show() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click limpiar() End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 108 End Sub Private Sub Label3_rightClick(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub RadioButton8_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton8.CheckedChanged End Sub Private Sub LiberarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LiberarToolStripMenuItem.Click If RadioButton1.Checked Then RadioButton1.BackColor = Color.Transparent End If If RadioButton2.Checked Then Me.Enabled = True RadioButton2.BackColor = Color.Transparent End If If RadioButton3.Checked Then RadioButton3.BackColor = Color.Transparent End If If RadioButton4.Checked Then RadioButton4.BackColor = Color.Transparent End If If RadioButton5.Checked Then RadioButton5.BackColor = Color.Transparent End If 109 If RadioButton6.Checked Then RadioButton6.BackColor = Color.Transparent End If If RadioButton7.Checked Then RadioButton7.BackColor = Color.Transparent End If If RadioButton8.Checked Then RadioButton8.BackColor = Color.Transparent End If If RadioButton9.Checked Then Me.Show() RadioButton9.BackColor = Color.Transparent End If If RadioButton10.Checked Then RadioButton10.BackColor = Color.Transparent End If If RadioButton11.Checked Then RadioButton11.BackColor = Color.Transparent End If If RadioButton12.Checked Then RadioButton12.BackColor = Color.Transparent End If If RadioButton13.Checked Then RadioButton13.BackColor = Color.Transparent End If If RadioButton14.Checked Then RadioButton14.BackColor = Color.Transparent End If If RadioButton15.Checked Then RadioButton15.BackColor = Color.Transparent End If 110 If RadioButton16.Checked Then RadioButton16.BackColor = Color.Transparent End If If RadioButton17.Checked Then RadioButton17.BackColor = Color.Transparent End If If RadioButton18.Checked Then RadioButton18.BackColor = Color.Transparent End If If RadioButton19.Checked Then RadioButton19.BackColor = Color.Transparent End If If RadioButton20.Checked Then RadioButton20.BackColor = Color.Transparent End If If RadioButton21.Checked Then RadioButton21.BackColor = Color.Transparent End If If RadioButton22.Checked Then RadioButton22.BackColor = Color.Transparent End If If RadioButton23.Checked Then RadioButton23.BackColor = Color.Transparent End If If RadioButton24.Checked Then RadioButton24.BackColor = Color.Transparent End If If RadioButton25.Checked Then RadioButton25.BackColor = Color.Transparent End If If RadioButton26.Checked Then 111 RadioButton26.BackColor = Color.Transparent End If If RadioButton27.Checked Then RadioButton27.BackColor = Color.Transparent End If If RadioButton28.Checked Then RadioButton28.BackColor = Color.Transparent End If If RadioButton29.Checked Then RadioButton29.BackColor = Color.Transparent End If If RadioButton30.Checked Then RadioButton30.BackColor = Color.Transparent End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click con = New SqlConnection(cadena) con.Open() Dim x As String = Me.TextBox1.Text Dim sql As String = "SELECT * FROM Estudiantes WHERE Matrícula ='" + x + "' Dim cmd As New SqlCommand(sql, con) Dim reader As SqlDataReader = cmd.ExecuteReader If reader.Read() Then TextBox2.Text = CStr(reader("Matrícula")) TextBox3.Text = CStr(reader("Nombre")) TextBox4.Text = CStr(reader("Ap_Paterno")) 112 TextBox5.Text = CStr(reader("Ap_Materno")) TextBox6.Text = CStr(reader("semestre")) TextBox7.Text = CStr(reader("carrera")) Else MsgBox("Ingrese Matrícula Valída", MessageBoxIcon.Exclamation) End If con.Close() End Sub End class FORMULARIO DE HISTORIAL Imports System.Data.SqlClient Public Class Historial Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public Sub mostrar() Dim damostrar As New SqlDataAdapter("select * from HPrestamo", cadena) Dim dtmostrar As New DataTable damostrar.Fill(dtmostrar) Me.DataGridView1.DataSource = dtmostrar End Sub Public Sub actualizar() Dim x As Date = Me.DateTimePicker1.Value.Date Dim daprestamo As New SqlDataAdapter("select Matrícula,Nombre,Ap_Paterno as 'Apellido Paterno',Ap_Materno as 'Apellido Materno',num_equipo as 'Numero de Equipo' from V_EPrestamo WHERE fecha = '" + x + "'", cadena) Dim dtprestamo As New DataTable daprestamo.Fill(dtprestamo) Me.DataGridView1.DataSource = dtprestamo End Sub 113 Public Sub actualiza2() Dim x As String = Me.TextBox1.Text Dim daprestamo As New SqlDataAdapter("select Matrícula,Nombre,Ap_Paterno as 'Apellido Paterno',Ap_Materno as 'Apellido Materno',carrera,fecha,num_equipo as 'Número de Equipo' from V_Eprestamo WHERE Matrícula = '" + x + "'", cadena) Dim dtprestamo As New DataTable daprestamo.Fill(dtprestamo) Me.DataGridView1.DataSource = dtprestamo End Sub Private Sub Historial_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If RadioButton1.Checked Then Me.DateTimePicker1.Show() Me.Label4.Show() End If actualizar() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Hide() MenuIn.Show() End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged Me.DateTimePicker1.Show() Me.Label4.Show() Me.Label2.Hide() Me.TextBox1.Hide() End Sub 114 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If RadioButton1.Checked Then actualizar() End If If RadioButton2.Checked Then actualiza2() End If End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged Label2.Show() TextBox1.Show() DateTimePicker1.Hide() Label4.Hide() End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.Label2.Show() Me.TextBox1.Show() Me.DateTimePicker1.Hide() End Sub 115 FORMULARIO DE IMPRESIÓN Imports System.Data.SqlClient Public Class Impresion Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public oiimpre = New Centro_Clases.Impresion Public Sub actualizar() Dim daUsuarios As New SqlDataAdapter("select * from Impresion", cadena) Dim dtUsuarios As New DataTable daUsuarios.Fill(dtUsuarios) End Sub Public Sub limpiar() Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.TextBox6.Text = "" Me.TextBox7.Text = "" Me.TextBox8.Text = "" Me.TextBox9.Text = "" End Sub Public Sub llenar() oiimpre.cadena = cadena oiimpre.impr = Me.TextBox9.Text oiimpre.fecha = DateTimePicker1.Value oiimpre.matr = Me.TextBox2.Text End Sub Private Sub Impresion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() End Sub 116 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Hide() MenuIn.Show() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click llenar() If TextBox9.Text <= TextBox8.Text Then oiimpre.guardar() oiimpre.modificar() MsgBox("Impresión agregada") Else MsgBox("crédito Insuficiente") End If limpiar() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Using con = New SqlConnection(cadena) Dim x As String = Me.TextBox2.Text con.Open() Dim sql As String = "select saldo from Estudiantes where Matrícula = '" + x + "'" Dim cmd As New SqlCommand(sql, con) Dim sald As Integer = Convert.ToInt32(cmd.ExecuteScalar()) TextBox8.Text = CStr(sald) con.Close() End Using 117 Using con = New SqlConnection(cadena) Dim x As String = Me.TextBox2.Text con.Open() Dim sql As String = "SELECT * FROM Estudiantes WHERE Matrícula ='" + x + "'" Dim cmd As New SqlCommand(sql, con) Dim reader As SqlDataReader = cmd.ExecuteReader If reader.Read() Then TextBox3.Text = CStr(reader("Nombre")) TextBox4.Text = CStr(reader("Ap_Paterno")) TextBox5.Text = CStr(reader("Ap_Materno")) TextBox6.Text = CStr(reader("semestre")) TextBox7.Text = CStr(reader("carrera")) Else MsgBox("Ingrese Matrícula válida", MessageBoxIcon.Information) End If End Using End Sub Private Sub TextBox9_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox9.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub End class 118 FORMULARIO DE ABONO Imports System.Data.SqlClient Public Class Abono Public Const cadena As String = "Data Source=SOFY-PC\SQLEXPRESS1;Initial Catalog=Computo;User ID=sa;Password=uv" Public oabono = New Centro_Clases.Abono Public Sub limpiar() Me.TextBox2.Text = "" Me.TextBox3.Text = "" Me.TextBox4.Text = "" Me.TextBox5.Text = "" Me.TextBox6.Text = "" Me.TextBox7.Text = "" Me.TextBox8.Text = "" Me.TextBox9.Text = "" End Sub Public Sub llenar() oabono.cadena = cadena oabono.folio = Me.TextBox8.Text oabono.fecha = Me.DateTimePicker1.Value oabono.cant_ab = Me.TextBox9.Text oabono.matr = Me.TextBox2.Text End Sub Public Sub llen() oabono.cadena = cadena TextBox2 = oabono.folio End Sub Private Sub Abono_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() End Sub 119 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click llenar() oabono.modificar() oabono.guardar() limpiar() End Sub Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) llen() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click MenuIn.Show() Me.Close() End Sub Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click con = New SqlConnection(cadena) con.Open() Dim x As String = Me.TextBox2.Text Dim sql As String = "SELECT * FROM Estudiantes WHERE Matrícula ='" + x + "'" Dim cmd As New SqlCommand(sql, con) Dim reader As SqlDataReader = cmd.ExecuteReader If reader.Read() Then 120 TextBox3.Text = CStr(reader("Nombre")) TextBox4.Text = CStr(reader("Ap_Paterno")) TextBox5.Text = CStr(reader("Ap_Materno")) TextBox6.Text = CStr(reader("semestre")) TextBox7.Text = CStr(reader("carrera")) Else MsgBox("Ingrese Matrícula Válida", MessageBoxIcon.Information) End If con.Close() End Sub End Class 121