Sei sulla pagina 1di 88

Facultad de Ingeniera en Sistemas

DESARROLLO DE UNA APLICACIN 3 CAPAS PARA EL REGISTRO DE NOTAS PARA EL CENTRO EDUCATIVO EL SALVADOR EN LA CIUDAD DE AMBATO EN EL AO 2012

Desarrolladores: Xavier Albn Luis Lpez

AMBATO-ECUADOR 2012

1.- INFORMACION GENERAL


Titulo de proyecto DESARROLLO DE UNA APLICACIN 3 CAPAS PARA EL REGISTRO DE NOTAS PARA EL CENTRO EDUCATIVO EL SALVADOR EN LA CIUDAD DE AMBATO EN EL AO 2012 Facultad: Ingeniera en sistemas Escuela: Informtica y Computacin Nivel: Decimo Diurna Proyecto Formativo: Desarrollo de aplicaciones en Software Libre Desarrolladores: Xavier Albn Luis Lpez Profesor Director: Ing. Ligia Jcome Lnea de investigacin: TIC y SOCIEDAD

2.- PLANTEAMIENTO DEL PROBLEMA El Centro Educativo El Salvador no cuenta con un sistema automatizado de notas, lo que hace ms tedioso y tardado el paso de reportes de notas cada parcial y por ende fin de ao y esto ocasiona como problema que el sistema que utiliza el centro educativo para el control de notas sea manual.

Perdida de informacin

Lentitud de Procesamiento

Falta de Informacin

El control de los procesos manual y deficiente

No existe una pgina web

Manejo de procesos inadecuados

No existen reportes claros

3.- OBJETIVOS OBJETIVO GENERAL:


Desarrollar de una aplicacin 3 capas para el registro de notas para el centro educativo el salvador en la ciudad de Ambato en el ao 2012.

OBJETIVOS ESPECIFICOS:
Objetivo especfico 1: Realizar una investigacin de los requerimientos necesarios para el desarrollo de la pgina web. Objetivo especfico 2: Disear una base de datos para almacenar el registro de notas. Objetivo especfico 3: Generar reportes para el manejo de informacin.

4.- JUSTIFICACION
Las Tecnologas de Informacin y Comunicacin (TIC), son un importante factor de desarrollo, de ah que es importante conocer como estn las cifras de penetracin, el Ministerio de Telecomunicaciones MINTEL y el Instituto Nacional del Instituto Nacional de Estadstica y Censos presentaron los avances desde el 2008 al 2011.

Este proyecto tiene como objetivo optimizar el tiempo de los docentes en el registro de notas de los estudiantes, realizando una aplicacin que tenga como objetivo calcular y realizar reportes de las notas tanto de parciales como globales.

Tambin es una prioridad desarrollar una herramienta que permita mejorar la educacin de manera efectiva de una manera sencilla para acelerar el aprendizaje en los estudiantes de nuestra comunidad y as seguir creciendo educativamente y socialmente cada vez ms.

ANTECEDENTES
Historia
En el ao 1997, en la ciudad de Ambato, provincia de Tungurahua debido a la iniciativa el espritu de servir a la comunidad y el crecimiento de la niez en el Barrio de Ingahurco: La Iglesia Episcopal del Ecuador, el Rvdo. Flavio Saccarola y la Dra. Catalina Quinez une sus esfuerzos para crear el Centro Educativo con bases solidad en educacin. Cumpliendo este anhelo en el mes de Octubre de 1997 con el inicio de las actividades escolares del Centro Educativo El Salvador con una aula y la asistencia de 9 nios

distribuidos para Pre-Knder y Primer Ao de Educacin Bsica. Recibiendo la Autorizacin Ministerial en Abril de 1998 con el # 464.

Este ao sirvi de pilar para analizar fortalezas y debilidades de la Institucin, pues se contaba con un amplio espacio de terreno que deba ser aprovechado en beneficio de la niez del Centro Educativo.

En el ao escolar 1998 - 1999 se cont con 2 aulas y la asistencia de 16 alumnos respectivos para Pre-kinder, Primero y Segundo Ao de Educacin Bsica El Sr. Michael Mc. Carty es el vnculo de amistad y ayuda entre Atlanta y varias personas voluntarias del extranjero. Para el ao 1999 - 2000, se incremento a 3 aulas para el funcionamiento de Preknder, Primero, Segundo y Tercer Ao de Educacin Bsica. En este ao se comparti nuevamente gratos momentos con el Sr. Mc. Carty. La Institucin ha crecido paulatinamente y para el ao 2000 - 2001 se logro un total de cinco aulas, repartidas para Pre-kinder, Primero, Segundo, Tercer y Cuarto Ao de Educacin Bsica y un Laboratorio de Computacin. La creacin de laboratorio de Computacin tiene la finalidad de brindar una educacin con conocimientos tericos prcticos a la niez de acuerdo a la nueva Reforma Curricular.

Considerando la realidad social, econmica, poltica, familiar que atraviesa la sociedad ecuatoriana y mundial, la escasez de valores morales, ticos, patriticos, cristianos, motiv a las autoridades y miembros de la Iglesia La Episcopal a crear la institucin Centro Educativo El Salvador que estar encaminada a impartir educacin y cultura, amparada en el Amor a Dios y al prjimo; cuyo objetivo primordial es la formacin integral del ser humano, una formacin holstica, pues reconoce la constitucin tripartita del hombre: cuerpo mente y espritu

Nuestra Institucin, el Centro Educativo El Salvador est ubicada en la Provincia de Tungurahua, Cantn Ambato, Parroquia la Merced, Barrio Ingahurco , calle Av. Cooperativas 01 16 y Las Amricas, con un Acuerdo Ministerial N464 en A Octubre de 1997ofreciendo servicios educativos de Pre-knder a Octavo ao de educacin Bsica

LOGOTIPO

Misin Educar desarrollando al aprendizaje de destrezas y competencias cognitivas, psicomotoras y afectivas significativas que garanticen un ejercicio ciudadano con valores humanos, equidad social y de gnero comprometido en el desarrollo sustentado en el respeto y cuidado de la creacin.

Visin Ser una institucin educativa, abierta a todas las manifestaciones religiosas, a todas las culturas y etnias, fsica, tcnica y acadmica mente, con valores humanos, capaces de conseguir ticamente calidad integral de vida para s, su familia y su entorno social.

5.- MARCO TERICO


POSTGRESQL PostgreSQL es un sistema de gestin de base de datos relacional orientada a objetos y libre, publicado bajo la licencia BSD. Como muchos otros proyectos de cdigo abierto, el desarrollo de PostgreSQL no es manejado por una empresa y/o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre y/o apoyada por organizaciones comerciales. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group). El uso de caracteres en mayscula en el nombre PostgreSQL puede confundir a algunas personas a primera vista. Las distintas pronunciaciones de "SQL" pueden llevar a confusin. Los desarrolladores de PostgreSQL lo pronuncian /post s kju l/;. Es tambin comn or abreviadamente como simplemente "Postgres", el que fue su nombre original. Debido a su soporte del estndar SQL entre la mayor parte de bases de datos relacionales, la comunidad consider cambiar el nombre al anterior Postgres. Sin embargo, el PostgreSQL Core Team anunci en 2007 que el producto seguira llamndose PostgreSQL. El nombre hace referencia a los orgenes del proyecto como la base de datos "post-Ingres", y los autores originales tambin desarrollaron la base de datos Ingres. Historia PostgreSQL ha tenido una larga evolucin, la cual se inicia en 1982 con el proyecto Ingres en la Universidad de Berkeley. Este proyecto, liderado por Michael Stonebraker, fue uno de los primeros intentos en implementar un motor de base de datos relacional. Despus de haber trabajado un largo tiempo en Ingres y de haber tenido una experiencia comercial con l mismo, Michael decidi volver a la Universidad en 1985 para trabajar en un nuevo proyecto sobre la experiencia de Ingres, dicho proyecto fue llamado post-ingres o simplemente POSTGRES. El proyecto post-ingres pretenda resolver los problemas con el modelo de base de datos relacional que haban sido aclarados a comienzos de los aos 1980. El principal de estos problemas era la incapacidad del modelo relacional de comprender "tipos", es decir, combinaciones de datos simples que conforman una nica unidad. Actualmente estos son llamados objetos. Se esforzaron en introducir la menor cantidad posible de funcionalidades para completar el soporte de tipos. Estas funcionalidades incluan la habilidad de definir tipos, pero tambin la habilidad de describir relaciones - las cuales hasta ese momento eran ampliamente utilizadas pero mantenidas completamente por el usuario. En Postgres la base de datos comprenda las relaciones y poda obtener informacin de tablas relacionadas utilizando reglas. Postgres us muchas ideas de Ingres pero no su cdigo. La siguiente lista muestra los hitos ms importantes en la vida del proyecto Postgres.

1986: se publicaron varios papers que describan las bases del sistema. 1988: ya se contaba con una versin utilizable.

1989: el grupo publicaba la versin 1 para una pequea comunidad de usuarios. 1990: se publicaba la versin 2 la cual tena prcticamente reescrito el sistema de reglas. 1991: publicacin de la versin 3, esta aada la capacidad de mltiples motores de almacenamiento. 1993: crecimiento importante de la comunidad de usuarios, la cual demandaba ms caractersticas. 1994: despus de la publicacin de la versin 4, el proyecto termin y el grupo se disolvi.

Despus de que el proyecto POSTGRES terminara, dos graduados de la universidad, Andrew Yu y Jolly Chen, comenzaron a trabajar sobre el cdigo de POSTGRES, esto fue posible dado que POSTGRES estaba licenciado bajo la BSD, y lo primero que hicieron fue aadir soporte para el lenguaje SQL a POSTGRES, dado que anteriormente contaba con un intrprete del lenguaje de consultas QUEL (basado en Ingres), creando as el sistema al cual denominaron Postgres95. Para el ao 1996 se unieron al proyecto personas ajenas a la Universidad como Marc Fournier de Hub.Org Networking Services, Bruce Momjian y Vadim B. Mikheev quienes proporcionaron el primer servidor de desarrollo no universitario para el esfuerzo de desarrollo de cdigo abierto y comenzaron a trabajar para estabilizar el cdigo de Postgres95. En el ao 1996 decidieron cambiar el nombre de Postgres95 de tal modo que refleje la caracterstica del lenguaje SQL y lo terminaron llamando PostgreSQL, cuya primera versin de cdigo abierto fue lanzada el 1 de agosto de 1996. La primera versin formal de PostgreSQL (6.0) fue liberada en enero de 1997. Desde entonces, muchos desarrolladores entusiastas de los motores de base de datos se unieron al proyecto, coordinaron va Internet y entre todos comenzaron a incorporar muchas caractersticas al motor. Aunque la licencia permita la comercializacin de PostgreSQL, el cdigo no se desarroll en principio con fines comerciales, algo sorprendente considerando las ventajas que PostgreSQL ofreca. La principal derivacin se origin cuando Paula Hawthtorn (un miembro del equipo original de Ingres que se pas a Postgres) y Michael Stonebraker conformaron Illustra Information Technologies para comercializar Postgres. En 2000, ex inversionistas de Red Hat crearon la empresa Great Bridge para comercializar PostgreSQL y competir contra proveedores comerciales de bases de datos. Great Bridge auspici a varios desarrolladores de PostgreSQL y don recursos de vuelta a la comunidad, pero a fines de 2001 cerr debido a la dura competencia de compaas como Red Hat y pobres condiciones del mercado. En 2001, Command Prompt, Inc. lanz Mammonth PostgreSQL, la ms antigua distribucin comercial de PostgreSQL. Contina brindando soporte a la comunidad PostgreSQL a travs del auspicio de desarrolladores y proyectos, incluyendo PL/Perl, PL/php y el alojamiento de proyectos de comunidades como PostgreSQL Build Farm. En enero de 2005, PostgreSQL recibi apoyo del proveedor de base de datos Pervasive Software, conocido por su producto Btrieve que se utilizaba en la plataforma Novell Netware. Pervasive anunci soporte comercial y participacin comunitaria y logr algo de xito. Sin embargo, en julio de 2006 dej el mercado de soporte de PostgreSQL.

A mediados de 2005 otras dos compaas anunciaron planes para comercializar PostgreSQL con nfasis en nichos separados de mercados. EnterpriseDB aadi funcionalidades que le permitan a las aplicaciones escritas para trabajar con Oracle ser ms fciles de ejecutar con PostgreSQL. Greenplum contribuy mejoras directamente orientadas a aplicaciones de Data Warehouse e Inteligencia de negocios, incluyendo el proyecto BizGres. En octubre de 2005, John Loiacono, vicepresidente ejecutivo de software en Sun Microsystems coment: "No estamos yendo tras el OEM de Microsoft pero estamos viendo a PostgreSQL ahora", aunque no se dieron especificaciones en ese momento. Para noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) inclua PostgreSQL. En agosto de 2007 EnterpriseDB anunci el Postgres Resource Center y EnterpriseDB Postgres, diseados para ser una completamente configurada distribucin de PostgreSQL incluyendo muchos mdulos contribuidos y agregados. EnterpriseDB Postgres fue renombrado Postgres Plus en marzo de 2008. El proyecto PostgreSQL contina haciendo lanzamientos principales anualmente y lanzamientos menores de reparacin de bugs, todos disponibles bajo la licencia BSD, y basados en contribuciones de proveedores comerciales, empresas aportantes y programadores de cdigo abierto mayormente.

Caracteristicas Alta concurrencia

Algunas de sus principales caractersticas son, entre otras: Mediante un sistema denominado MVCC (Acceso concurrente multiversin, por sus siglas en ingls) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visin consistente de lo ltimo a lo que se le hizo commit. Esta estrategia es superior al uso de bloqueos por tabla o por filas en comn en otras bases, eliminando la necesidad del uso de bloqueos explcitos..... Amplia variedad de tipos nativos PostgreSQL provee nativamente soporte para:

Nmeros de precision arbitraria. Texto de largo ilimitado. Figuras geomtricas (con una variedad de funciones asociadas). Direcciones IP (IPv4 e IPv6). Bloques de direcciones estilo CIDR. Direcciones MAC. Arrays.

Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por completo indexables gracias a la infraestructura GiST de PostgreSQL. Algunos ejemplos son los tipos de datos GIS creados por el proyecto PostGIS.

Otras caractersticas

Claves ajenas tambin denominadas Llaves ajenas o Claves Forneas (foreign keys). Disparadores (triggers): Un disparador o trigger se define como una accin especfica que se realiza de acuerdo a un evento, cuando ste ocurra dentro de la base de datos. En PostgreSQL esto significa la ejecucin de un procedimiento almacenado basado en una determinada accin sobre una tabla especfica. Ahora todos los disparadores se definen por seis caractersticas:

El nombre del disparador o trigger El momento en que el disparador debe arrancar El evento del disparador deber activarse sobre... La tabla donde el disparador se activar La frecuencia de la ejecucin La funcin que podra ser llamada

Entonces combinando estas seis caractersticas, PostgreSQL le permitir crear una amplia funcionalidad a travs de su sistema de activacin de disparadores (triggers).

Vistas. Integridad transaccional. Herencia de tablas. Tipos de datos y operaciones geomtricas. Soporte para transacciones distribuidas. Permite a PostgreSQL integrase en un sistema distribuido formado por varios recursos (p.ej, una base de datos PostgreSQL, otra Oracle, una cola de mensajes IBM MQ JMS y un ERP SAP) gestionado por un servidor de aplicaciones donde el xito ("commit") de la transaccin globlal es el resultado del xito de las transacciones locales.

Funciones

Bloques de cdigo que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes, con la potencia que cada uno de ellos da, desde las operaciones bsicas de programacin, tales como bifurcaciones y bucles, hasta las complejidades de la programacin orientada a objetos o la programacin funcional. Los disparadores (triggers en ingls) son funciones enlazadas a operaciones sobre los datos. Algunos de los lenguajes que se pueden usar son los siguientes:

Un lenguaje propio llamado PL/PgSQL (similar al PL/SQL de oracle). C. C++. Java PL/Java web. PL/Perl. Pl/PHP.

PL/Python. PL/Ruby. PL/sh. PL/Tcl. PL/Scheme. Lenguaje para aplicaciones estadsticas R por medio de PL/R.

PostgreSQL soporta funciones que retornan "filas", donde la salida puede tratarse como un conjunto de valores que pueden ser tratados igual a una fila retornada por una consulta (query en ingls). Las funciones pueden ser definidas para ejecutarse con los derechos del usuario ejecutor o con los derechos de un usuario previamente definido. El concepto de funciones, en otros DBMS, son muchas veces referidas como "procedimientos almacenados" (stored procedures).

JAVA COMO LENGUAJE DE PROGRAMACION Java es un lenguaje de programacin orientado a objetos, desarrollado por Sun Microsystems en 1995. El lenguaje en s mismo toma mucha de su sintaxis de C, Cobol y Visual Basic, pero tiene un modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de punteros o memoria. La memoria es gestionada mediante un recolector de basura. Las aplicaciones Java estn tpicamente compiladas en un bytecode, aunque la compilacin en cdigo mquina nativo tambin es posible. En eltiempo de ejecucin, el bytecode es normalmente interpretado o compilado a cdigo nativo para la ejecucin, aunque la ejecucin directa porhardware del bytecode por un procesador Java tambin es posible. La implementacin original y de referencia del compilador, la mquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolucin del lenguaje a travs del Java Community Process, si bien otros han desarrollado tambin implementaciones alternativas de estas tecnologas de Sun, algunas incluso bajo licencias de software libre. Entre diciembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus tecnologas Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre aunque la biblioteca de clases de pginas web comprendidas en las librerias de objetacion de objetos para ser compilados como aplicaciones comprimidas no estan totalmente acopladas de acuerdo con Sun que dice que se requiere un intrprete para ejecutar los programas de Java. Historia

Java se cre como una herramienta de programacin para ser usada en un proyecto de set-top-box en una pequea operacin denominada the Green Project en Sun Microsystems en el ao1991. El equipo (Green Team), compuesto por trece personas y

dirigido por James Gosling, trabaj durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo. El lenguaje se denomin inicialmente Oak (por un roble que haba fuera de la oficina de Gosling), luego pas a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas grficas y finalmente se renombr a Java. El trmino Java fue acuado en una cafetera frecuentada por algunos de los miembros del equipo. Pero no est claro si es un acrnimo o no, aunque algunas fuentes sealan que podra tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrnimo, Just Another Vague Acronym ("slo otro acrnimo ambiguo ms"). La hiptesis que ms fuerza tiene es la que Java debe su nombre a un tipo de caf disponible en la cafetera cercana, de ah que el icono de java sea una taza de caf caliente. Un pequeo signo que da fuerza a esta teora es que los 4 primeros bytes (el nmero mgico) de los archivos.class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teoras, el nombre fue sacado al parecer de una lista aleatoria de palabras.1 Los objetivos de Gosling eran implementar una mquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesin maratoniana de tres das entre John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, el equipo reorient la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic, propiciara que Internet se convirtiese en un medio interactivo, como el que pensaban era la televisin por cable. Naughton cre entonces un prototipo de navegador, WebRunner, que ms tarde sera conocido como HotJava. En 1994, se les hizo una demostracin de HotJava y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld, a que vieran la luz pblica Java y HotJava, el navegador Web. El acontecimiento fue anunciado por John Gage, el Director Cientfico de Sun Microsystems. El acto estuvo acompaado por una pequea sorpresa adicional, el anuncio por parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java sera soportado en sus navegadores. El 9 de enero del ao siguiente, 1996, Sun fund el grupo empresarial JavaSoft para que se encargase del desarrollo tecnolgico. [1] Dos semanas ms tarde la primera versin de Java fue publicada. La promesa inicial de Gosling era Write Once, Run Anywhere (Escrbelo una vez, ejectalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de ejecucin (la JVM) ligero y gratuito para las plataformas ms populares de forma que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma. El entorno de ejecucin era relativamente seguro y los principales navegadores web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las pginas web. Java ha experimentado numerosos cambios desde la versin primigenia, JDK 1.0, as como un enorme incremento en el nmero de clases y paquetes que componen la biblioteca estndar.2 Desde J2SE 1.4, la evolucin del lenguaje ha sido regulada por el JCP (Java Community Process), que usa Java Specification Requests (JSRs) para proponer y

especificar cambios en la plataforma Java. El lenguaje en s mismo est especificado en la Java Language Specification (JLS), o Especificacin del Lenguaje Java. Los cambios en los JLS son gestionados en JSR 901.

JDK 1.0 (23 de enero de 1996) Primer lanzamiento: comunicado de prensa JDK 1.1 (19 de febrero de 1997) Principales adiciones incluidas: comunicado de prensa

una reestructuracin intensiva del modelo de eventos AWT (Abstract Windowing Toolkit) clases internas (inner classes) JavaBeans JDBC (Java Database Connectivity), para la integracin de bases de datos RMI (Remote Method Invocation)

J2SE 1.2 (8 de diciembre de 1998) Nombre clave Playground. Esta y las siguientes versiones fueron recogidas bajo la denominacin Java 2 y el nombre "J2SE" (Java 2 Platform, Standard Edition), reemplaz a JDK para distinguir la plataforma base de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro Edition). Otras mejoras aadidas incluan:comunicado de prensa

la palabra reservada (keyword) strictfp reflexin en la programacin la API grfica ( Swing) fue integrada en las clases bsicas la mquina virtual (JVM) de Sun fue equipada con un compilador JIT (Just in Time) por primera vez Java Plug-in Java IDL, una implementacin de IDL (Lenguaje de Descripcin de Interfaz) para la interoperabilidad con CORBA Colecciones (Collections)

J2SE 1.3 (8 de mayo de 2000) Nombre clave Kestrel. Los cambios ms notables fueron:comunicado de prensa lista completa de cambios

la inclusin de la mquina virtual de HotSpot JVM (la JVM de HotSpot fue lanzada inicialmente en abril de 1999, para la JVM de J2SE 1.2) RMI fue cambiado para que se basara en CORBA JavaSound se incluy el Java Naming and Directory Interface (JNDI) en el paquete de bibliotecas principales (anteriormente disponible como una extensin) Java Platform Debugger Architecture (JPDA)

J2SE 1.4 (6 de febrero de 2002) Nombre Clave Merlin. Este fue el primer lanzamiento de la plataforma Java desarrollado bajo el Proceso de la Comunidad

Java como JSR 59. Los cambios ms notables fueron: comunicado de prensalista completa de cambios

Palabra reservada assert (Especificado en JSR 41.) Expresiones regulares modeladas al estilo de las expresiones regulares Perl Encadenacin de excepciones Permite a una excepcin encapsular la excepcin de bajo nivel original. non-blocking NIO (New Input/Output) (Especificado en JSR 51.) Logging API (Specified in JSR 47.) API I/O para la lectura y escritura de imgenes en formatos como JPEG o PNG Parser XML integrado 5 y JSR 63.) y procesador XSLT (JAXP) (Especificado en JSR

Seguridad integrada y extensiones criptogrficas (JCE, JSSE, JAAS) Java Web Start incluido (El primer lanzamiento ocurri en marzo de 2001 para J2SE 1.3) (Especificado en JSR 56.)

J2SE 5.0 (30 de septiembre de 2004) Nombre clave: Tiger. (Originalmente numerado 1.5, esta notacin an es usada internamente) Desarrollado bajo JSR 176, Tiger aadi un nmero significativo de nuevas caractersticas comunicado de prensa

Plantillas (genricos) provee conversin de tipos (type safety) en tiempo de compilacin para colecciones y elimina la necesidad de la mayora de conversin de tipos (type casting). (Especificado por JSR 14.) Metadatos tambin llamados anotaciones, permite a estructuras del lenguaje como las clases o los mtodos, ser etiquetados con datos adicionales, que puedan ser procesados posteriormente por utilidades de proceso de metadatos. (Especificado por JSR 175.) Autoboxing/unboxing Conversiones automticas entre tipos primitivos (Como los int) y clases de envoltura primitivas (Como Integer). (Especificado por JSR 201.) Enumeraciones la palabra reservada enum crea una typesafe, lista ordenada de valores (como Dia.LUNES, Dia.MARTES, etc.). Anteriormente, esto solo poda ser llevado a cabo por constantes enteras o clases construidas manualmente (enum pattern). (Especificado por JSR 201.) Varargs (nmero de argumentos variable) El ltimo parmetro de un mtodo puede ser declarado con el nombre del tipo seguido por tres puntos (e.g. void drawtext(String... lines)). En la llamada al mtodo, puede usarse cualquier nmero de parmetros de ese tipo, que sern almacenados en un array para pasarlos al mtodo.

Bucle for mejorado La sintaxis para el bucle for se ha extendido con una

sintaxis especial para iterar sobre cada miembro de un array o sobre cualquier clase que implementeIterable, como la clase estndar Collection, de la siguiente forma: void displayWidgets (Iterable<Widget> widgets) { for (Widget w : widgets) { w.display(); } } Este ejemplo itera sobre el objeto Iterable widgets, asignando, en orden, cada uno de los elementos a la variable w, y llamando al mtodo display() de cada uno de ellos. (Especificado por JSR 201.) |}

Java SE 6 (11 de diciembre de 2006) Nombre clave Mustang. Estuvo en desarrollo bajo la JSR 270. En esta versin, Sun cambi el nombre "J2SE" por Java SE y elimin el ".0" del nmero de versin. Est disponible en http://java.sun.com/javase/6/. Los cambios ms importantes introducidos en esta versin son:

Incluye un nuevo marco de trabajo y APIs que hacen posible la combinacin de Java con lenguajes dinmicos como PHP, Python, Ruby y JavaScript. Incluye el motor Rhino, de Mozilla, una implementacin de Javascript en Java. Incluye un cliente completo de Servicios Web y soporta las ltimas especificaciones para Servicios Web, como JAX-WS 2.0, JAXB 2.0, STAX y JAXP. Mejoras en la interfaz grfica y en el rendimiento.

Java SE 7 Nombre clave Dolphin. En el ao 2006 an se encontraba en las primeras etapas de planificacin. Su lanzamiento fue en julio de 2011.

Soporte para XML dentro del propio lenguaje. Un nuevo concepto de superpaquete. Soporte para closures.

Introduccin de anotaciones estndar para detectar fallos en el software. No oficiales: NIO2. Java Module System. Java Kernel. Nueva API para el manejo de Das y Fechas, la cual reemplazara las antiguas clases Date y Calendar. Posibilidad de operar con clases BigDecimal usando operandos.

FILOSOFIA

Adems de los cambios en el lenguaje, con el paso de los aos se han efectuado muchos ms cambios dramticos en la biblioteca de clases de Java (Java class library) que ha crecido de unos pocos cientos de clases en JDK 1.0 hasta ms de tres mil en J2SE 5.0. APIs completamente nuevas, como Swing y Java2D, han sido introducidas y muchos de los mtodos y clases originales de JDK 1.0 estn obsoletos. En el 2005 se calcula en 4,5 millones el nmero de desarrolladores y 2.500 millones de dispositivos habilitados con tecnologa Java. El lenguaje Java se cre con cinco objetivos principales: 1. Debera usar el paradigma de la programacin orientada a objetos. 2. Debera permitir la ejecucin de un mismo programa en mltiples sistemas operativos. 3. Debera incluir por defecto soporte para trabajo en red. 4. Debera disearse para ejecutar cdigo en sistemas remotos de forma segura. 5. Debera ser fcil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++. Para conseguir la ejecucin de cdigo remoto y el soporte de red, los programadores de Java a veces recurren a extensiones como CORBA (Common Object Request Broker Architecture),Internet Communications Engine o OSGi respectivamente.
Orientado a objetos

La primera caracterstica, orientado a objetos (OO), se refiere a un mtodo de programacin y al diseo del lenguaje. Aunque hay muchas interpretaciones para OO, una primera idea es disear el software de forma que los distintos tipos de datos que usen estn unidos a sus operaciones. As, los datos y el cdigo (funciones o mtodos) se combinan en entidades llamadas objetos. Un objeto puede verse como un paquete que contiene el comportamiento (el cdigo) y el estado (datos). El principio es separar aquello que cambia de las cosas que permanecen inalterables. Frecuentemente, cambiar una estructura de datos implica un cambio en el cdigo que opera sobre los mismos, o viceversa. Esta separacin en objetos coherentes e independientes ofrece una base ms estable para el diseo de un sistema software. El objetivo es hacer que grandes proyectos sean fciles de gestionar y manejar, mejorando como consecuencia su calidad y reduciendo el nmero de proyectos fallidos. Otra de las grandes promesas de la programacin orientada a objetos es la creacin de entidades ms genricas (objetos) que permitan la reutilizacin del software entre proyectos, una de las premisas fundamentales de la Ingeniera del Software. Un objeto genrico cliente, por ejemplo, debera en teora tener el mismo conjunto de comportamiento en diferentes proyectos, sobre todo cuando estos coinciden en cierta medida, algo que suele suceder en las grandes organizaciones. En este sentido, los objetos podran verse como piezas reutilizables que pueden emplearse en mltiples proyectos distintos, posibilitando as a la industria del software a construir proyectos de envergadura empleando componentes ya existentes y de comprobada calidad; conduciendo esto finalmente a una reduccin drstica del tiempo de desarrollo. Podemos usar como ejemplo de objeto el aluminio. Una vez definidos datos (peso, maleabilidad, etc.), y su comportamiento (soldar dos piezas, etc.), el objeto aluminio puede ser reutilizado en el campo de la construccin, del automvil, de la aviacin, etc.

La reutilizacin del software ha experimentado resultados dispares, encontrando dos dificultades principales: el diseo de objetos realmente genricos es pobremente comprendido, y falta una metodologa para la amplia comunicacin de oportunidades de reutilizacin. Algunas comunidades de cdigo abierto (open source) quieren ayudar en este problema dando medios a los desarrolladores para diseminar la informacin sobre el uso y versatilidad de objetos reutilizables y bibliotecas de objetos. Independencia de la plataforma La segunda caracterstica, la independencia de la plataforma, significa que programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware. Este es el significado de ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, write once, run anywhere. Para ello, se compila el cdigo fuente escrito en lenguaje Java, para generar un cdigo conocido como bytecode (especficamente Java bytecode) instrucciones mquina simplificadas especficas de la plataforma Java. Esta pieza est a medio camino entre el cdigo fuente y el cdigo mquina que entiende el dispositivo destino. El bytecode es ejecutado entonces en la mquina virtual (JVM), un programa escrito en cdigo nativo de la plataforma destino (que es el que entiende su hardware), que interpreta y ejecuta el cdigo. Adems, se suministran bibliotecas adicionales para acceder a las caractersticas de cada dispositivo (como los grficos, ejecucin mediante hebras o threads, la interfaz de red) de forma unificada. Se debe tener presente que, aunque hay una etapa explcita de compilacin, el bytecode generado es interpretado o convertido a instrucciones mquina del cdigo nativo por el compilador JIT (Just In Time). Hay implementaciones del compilador de Java que convierten el cdigo fuente directamente en cdigo objeto nativo, como GCJ. Esto elimina la etapa intermedia donde se genera el bytecode, pero la salida de este tipo de compiladores slo puede ejecutarse en un tipo de arquitectura. La licencia sobre Java de Sun insiste que todas las implementaciones sean compatibles. Esto dio lugar a una disputa legal entre Microsoft y Sun, cuando ste ltimo aleg que la implementacin de Microsoft no daba soporte a las interfaces RMI y JNI adems de haber aadido caractersticas dependientes de su plataforma. Sun demand a Microsoft y gan por daos y perjuicios (unos 20 millones de dlares) as como una orden judicial forzando la acatacin de la licencia de Sun. Como respuesta, Microsoft no ofrece Java con su versin de sistema operativo, y en recientes versiones de Windows, su navegador Internet Explorer no admite la ejecucin de applets sin un conector (o plugin) aparte. Sin embargo, Sun y otras fuentes ofrecen versiones gratuitas para distintas versiones de Windows. Las primeras implementaciones del lenguaje usaban una mquina virtual interpretada para conseguir la portabilidad. Sin embargo, el resultado eran programas que se ejecutaban comparativamente ms lentos que aquellos escritos en C o C++. Esto hizo que Java se ganase una reputacin de lento en rendimiento. Las implementaciones recientes de la JVM dan lugar a programas que se ejecutan considerablemente ms rpido que las versiones antiguas, empleando diversas tcnicas, aunque sigue siendo mucho ms lento que otros lenguajes. La primera de estas tcnicas es simplemente compilar directamente en cdigo nativo como hacen los compiladores tradicionales, eliminando la etapa del bytecode. Esto da lugar a un gran rendimiento en la ejecucin, pero tapa el camino a la portabilidad. Otra

tcnica, conocida como compilacin JIT (Just In Time, o compilacin al vuelo), convierte el bytecode a cdigo nativo cuando se ejecuta la aplicacin. Otras mquinas virtuales ms sofisticadas usan una recompilacin dinmica en la que la VM es capaz de analizar el comportamiento del programa en ejecucin y recompila y optimiza las partes crticas. La recompilacin dinmica puede lograr mayor grado de optimizacin que la compilacin tradicional (o esttica), ya que puede basar su trabajo en el conocimiento que de primera mano tiene sobre el entorno de ejecucin y el conjunto de clases cargadas en memoria. La compilacin JIT y la recompilacin dinmica permiten a los programas Java aprovechar la velocidad de ejecucin del cdigo nativo sin por ello perder la ventaja de la portabilidad en ambos. La portabilidad es tcnicamente difcil de lograr, y el xito de Java en ese campo ha sido dispar. Aunque es de hecho posible escribir programas para la plataforma Java que acten de forma correcta en mltiples plataformas de distinta arquitectura, el gran nmero de estas con pequeos errores o inconsistencias llevan a que a veces se parodie el eslogan de Sun, "Write once, run anywhere" como "Write once, debug everywhere" (o Escrbelo una vez, ejectalo en cualquier parte por Escrbelo una vez, depralo en todas partes) El concepto de independencia de la plataforma de Java cuenta, sin embargo, con un gran xito en las aplicaciones en el entorno del servidor, como los Servicios Web, los Servlets, los Java Beans, as como en sistemas empotrados basados en OSGi, usando entornos Java empotrados. SINTAXIS
La sintaxis de Java se deriva en gran medida de C++. Pero a diferencia de ste, que combina la sintaxis para programacin genrica, estructurada y orientada a objetos, Java fue construido desde el principio para ser completamente orientado a objetos. Todo en Java es un objeto (salvo algunas excepciones), y todo en Java reside en alguna clase (recordemos que una clase es un molde a partir del cual pueden crearse varios objetos).

Aplicaciones autnomas
// Hola.java public class Hola() //Declara una clase llamada Hola, que es descendiente de la clase Object { //Entre llaves se declaran los atributos y mtodos de la clase public static void main(String[] args) //public: indica que el mtodo main()es pblico //void: indica que la funcin main() no devuelve ningn valor //El mtodo main()debe aceptar siempre como parmetro un vector de strings { System.out.println("Hola, mundo!"); //Esta lnea indica que se va a ejecutar el mtodo println(), encargado de mostrar //un valor a travs de la salida estndar (en nuestro caso, un String) //Este mtodo pertenece al atributo out }

Applets Las applet Java son programas incrustados en otras aplicaciones, normalmente una pgina Web que se muestra en un navegador.
// Hello.java import javax.swing.JApplet; import java.awt.Graphics; public class Hello extends JApplet { public void paint(Graphics g) { g.drawString("Hola, mundo!", 65, 95); } } <!-- Hola.html --> <html> <head> <title>Applet Hola Mundo</title> </head> <body> <applet code="Hola.class" width="200" height="200"> </applet> </body> </html>

Actualmente HTML 5 ha eliminado el uso de la etiqueta <applet>. La sentencia import indica al compilador de Java que incluya las clases java.applet. Applet y java.awt. Graphics, para poder referenciarlas por sus nombres, sin tener que anteponer la ruta completa cada vez que se quieran usar en el cdigo fuente. La clase Hola extiende (extends) a la clase Applet, es decir, es una subclase de sta. La clase Applet permite a la aplicacin mostrar y controlar el estado del applet. La clase Applet es un componente del AWT (Abstract Window Toolkit), que permite al applet mostrar una interfaz grfica de usuario o GUI (Graphical User Interface), y responder a eventos generados por el usuario. La clase Hola sobrecarga el mtodo paint (Graphics) heredado de la superclase contenedora (Applet en este caso), para acceder al cdigo encargado de dibujar. El mtodo paint() recibe un objeto Graphics que contiene el contexto grfico para dibujar el applet. El mtodo paint() llama al mtodo drawString (String, int, int) del objeto Servlets Los servlets son componentes de la parte del servidor de Java EE, encargados de generar respuestas a las peticiones recibidas de los clientes.
// Hola.java import java.io.IOException; import javax.servlet.*;

public class Hola extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.println("Hola, mundo!"); pw.close(); } }

Las sentencias import indican al compilador de Java la inclusin de todas las clases pblicas e interfaces de los paquetes java.io y javax.servlet en la compilacin. La clase Hola extiende (extends), es heredera de la clase GenericServlet. Esta clase proporciona la interfaz para que el servidor le pase las peticiones al servlet y el mecanismo para controlar el ciclo de vida del servlet. La clase Hola sobrecarga el mtodo service (ServletRequest, ServletResponse), definido por la interfaz servlet para acceder al manejador de la peticin de servicio. El mtodo service()recibe un objeto de tipo ServletRequest que contiene la peticin del cliente y un objeto de tipo ServletResponse, usado para generar la respuesta que se devuelve al cliente. El mtodoservice() puede lanzar (throws) excepciones de tipo ServletException e IOException si ocurre algn tipo de anomala. El mtodo setContentType (String) en el objeto respuesta establece el tipo de contenido MIME a "text/html", para indicar al cliente que la respuesta a su peticin es una pgina con formato HTML. El mtodo getWriter() del objeto respuesta devuelve un objeto de tipo PrintWriter, usado como una tubera por la que viajarn los datos al cliente. El mtodo println (String) escribe la cadena "Hola, mundo!" en la respuesta y finalmente se llama al mtodo close() para cerrar la conexin, que hace que los datos escritos en la tubera o stream sean devueltos al cliente. Aplicaciones con ventanas Swing es la biblioteca para la interfaz grfica de usuario avanzada de la plataforma Java SE.
// Hola.java import javax.swing.*; public class Hola extends JFrame { Hola() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); add(new JLabel("Hola, mundo!")); pack(); } public static void main(String[] args) { new Hola().setVisible(true); } }

Las instrucciones import indican al compilador de Java que las clases e interfaces del paquete javax.swing se incluyan en la compilacin. La clase Hola extiende (extends) la clase javax.swing.JFrame, que implementa una ventana con una barra de ttulo y un control para cerrarla. El constructor Hola() inicializa el marco o frame llamando al mtodo setDefaultCloseOperation (int) heredado de JFrame para establecer las operaciones por defecto cuando el control de cierre en la barra de ttulo es seleccionado al valor WindowConstants.DISPOSE_ON_CLOSE. Esto hace que se liberen los recursos tomados por la ventana cuando es cerrada, y no simplemente ocultada, lo que permite a la mquina virtual y al programa acabar su ejecucin. A continuacin se crea un objeto de tipo JLabel con el texto "Hola, mundo!", y se aade al marco mediante el mtodo add (Component), heredado de la clase Container. El mtodo pack(), heredado de la clase Window, es invocado para dimensionar la ventana y distribuir su contenido. El mtodo main() es llamado por la JVM al comienzo del programa. Crea una instancia de la clase Hola y hace la ventana sea mostrada invocando al mtodo setVisible (boolean) de la superclase (clase de la que hereda) con el parmetro a true. Vase que, una vez el marco es dibujado, el programa no termina cuando se sale del mtodo main(), ya que el cdigo del que depende se encuentra en un hilo de ejecucin independiente ya lanzado, y que permanecer activo hasta que todas las ventanas hayan sido destruidas. FUNCIONAMIENTO

El diseo de Java, su robustez, el respaldo de la industria y su fcil portabilidad han hecho de Java uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintos mbitos de la industria de la informtica. En dispositivos mviles y sistemas empotrados Desde la creacin de la especificacin J2ME (Java 2 Platform, Micro Edition), una versin del entorno de ejecucin Java reducido y altamente optimizado, especialmente desarrollado para el mercado de dispositivos electrnicos de consumo se ha producido toda una revolucin en lo que a la extensin de Java se refiere. Es posible encontrar microprocesadores diseados para ejecutar bytecode Java y software Java para tarjetas inteligentes (JavaCard), telfonos mviles, buscapersonas, set-top-boxes, sintonizadores de TV y otros pequeos electrodomsticos. El modelo de desarrollo de estas aplicaciones es muy semejante a las applets de los navegadores salvo que en este caso se denominan MIDlets. En el navegador web Desde la primera versin de java existe la posibilidad de desarrollar pequeas aplicaciones (Applets) en Java que luego pueden ser incrustadas en una pgina HTML para que sean descargadas y ejecutadas por el navegador web. Estas mini-aplicaciones se ejecutan en una JVM que el navegador tiene configurada como extensin (plug-in) en un contexto de seguridad restringido configurable para impedir la ejecucin local de cdigo potencialmente malicioso. El xito de este tipo de aplicaciones (la visin del equipo de Gosling) no fue realmente el esperado debido a diversos factores, siendo quizs el ms importante la lentitud y el

reducido ancho de banda de las comunicaciones en aquel entonces que limitaba el tamao de las applets que se incrustaban en el navegador. La aparicin posterior de otras alternativas (aplicaciones web dinmicas de servidor) dej un reducido mbito de uso para esta tecnologa, quedando hoy relegada fundamentalmente a componentes especficos para la intermediacin desde una aplicacin web dinmica de servidor con dispositivos ubicados en la mquina cliente donde se ejecuta el navegador. Las applets Java no son las nicas tecnologas (aunque s las primeras) de componentes complejos incrustados en el navegador. Otras tecnologas similares pueden ser: ActiveX de Microsoft,Flash, Java Web Start, etc. En sistemas de servidor
En la parte del servidor, Java es ms popular que nunca, desde la aparicin de la especificacin de Servlets y JSP (Java Server Pages). Hasta entonces, las aplicaciones web dinmicas de servidor que existan se basaban fundamentalmente en componentes CGI y lenguajes interpretados. Ambos tenan diversos inconvenientes (fundamentalmente lentitud, elevada carga computacional o de memoria y propensin a errores por su interpretacin dinmica). Los servlets y las JSPs supusieron un importante avance ya que:

El API de programacin es muy sencilla, flexible y extensible. Los servlets no son procesos independientes (como los CGIs) y por tanto se ejecutan dentro del mismo proceso que la JVM mejorando notablemente el rendimiento y reduciendo la carga computacional y de memoria requeridas. Las JSPs son pginas que se compilan dinmicamente (o se pre-compilan previamente a su distribucin) de modo que el cdigo que se consigue una ventaja en rendimiento substancial frente a muchos lenguajes interpretados.

La especificacin de Servlets y JSPs define un API de programacin y los requisitos para un contenedor (servidor) dentro del cual se puedan desplegar estos componentes para formar aplicaciones web dinmicas completas. Hoy da existen multitud de contenedores (libres y comerciales) compatibles con estas especificaciones. A partir de su expansin entre la comunidad de desarrolladores, estas tecnologas han dado paso a modelos de desarrollo mucho ms elaborados con frameworks (pe Struts, Webwork) que se sobreponen sobre los servlets y las JSPs para conseguir un entorno de trabajo mucho ms poderoso y segmentado en el que la especializacin de roles sea posible (desarrolladores, diseadores grficos,...) y se facilite la reutilizacin y robustez de cdigo. A pesar de todo ello, las tecnologas que subyacen (Servlets y JSPs) son substancialmente las mismas. Este modelo de trabajo se ha convertido en uno de los estndar de-facto para el desarrollo de aplicaciones web dinmicas de servidor.

En aplicaciones de escritorio Hoy en da existen multitud de aplicaciones grficas de usuario basadas en Java. El entorno de ejecucin Java (JRE) se ha convertido en un componente habitual en los PC de usuario de los sistemas operativos ms usados en el mundo. Adems, muchas aplicaciones Java lo incluyen dentro del propio paquete de la aplicacin de modo que se ejecuten en cualquier PC. En las primeras versiones de la plataforma Java existan importantes limitaciones en las APIs de desarrollo grfico (AWT). Desde la aparicin de la biblioteca Swing la

situacin mejor substancialmente y posteriormente con la aparicin de bibliotecas como SWT hacen que el desarrollo de aplicaciones de escritorio complejas y con gran dinamismo, usabilidad, etc. sea relativamente sencillo. Plataformas soportadas Una versin del entorno de ejecucin Java JRE (Java Runtime Environment) est disponible en la mayora de equipos de escritorio. Sin embargo, Microsoft no lo ha incluido por defecto en sus sistemas operativos. En el caso de Apple, ste incluye una versin propia del JRE en su sistema operativo, el Mac OS. Tambin es un producto que por defecto aparece en la mayora de las distribuciones de GNU/Linux. Debido a incompatibilidades entre distintas versiones del JRE, muchas aplicaciones prefieren instalar su propia copia del JRE antes que confiar su suerte a la aplicacin instalada por defecto. Los desarrolladores de applets de Java o bien deben insistir a los usuarios en la actualizacin del JRE, o bien desarrollar bajo una versin antigua de Java y verificar el correcto funcionamiento en las versiones posteriores. IDE DE JAVA ECLIPSE GALILEO Eclipse es un entorno de desarrollo integrado de cdigo abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, tpicamente ha sido usada para desarrollar entornos (del ingls IDE), como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados tambin para desarrollar el mismo Eclipse). Sin embargo, tambin se puede usar para otros tipos de aplicaciones cliente, como BitTorrent o Azureus. Eclipse es tambin una comunidad de usuarios, extendiendo constantemente las reas de aplicacin cubiertas. Un ejemplo es el recientemente creado Eclipse Modeling Project, cubriendo casi todas las reas de Model Driven Engineering. Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas para VisualAge. Eclipse es ahora desarrollado por la Fundacin Eclipse, una organizacin independiente sin nimo de lucro que fomenta una comunidad de cdigo abierto y un conjunto de productos complementarios, capacidades y servicios. Eclipse fue liberado originalmente bajo la Common Public License, pero despus fue re-licenciado bajo la Eclipse Public License. La Free Software Foundation ha dicho que ambas licencias son licencias de software libre, pero son incompatibles con Licencia pblica general de GNU (GNU GPL). ARQUITECTURA

La base para Eclipse es la Plataforma de cliente enriquecido (del Ingls Rich Client Platform RCP). Los siguientes componentes constituyen la plataforma de cliente enriquecido:

Plataforma principal - inicio de Eclipse, ejecucin de plugins OSGi - una plataforma para bundling estndar. El Standard Widget Toolkit (SWT) - UN widget toolkit portable. JFace - manejo de archivos, manejo de texto, editores de texto El Workbench de Eclipse - vistas, editores, perspectivas, asistentes

Los widgets de Eclipse estn implementados por una herramienta de widget para Java llamada SWT, a diferencia de la mayora de las aplicaciones Java, que usan las opciones estndar Abstract Window Toolkit (AWT) o Swing. La interfaz de usuario de Eclipse tambin tiene una capa GUI intermedia llamada JFace, la cual simplifica la construccin de aplicaciones basadas en SWT. El entorno de desarrollo integrado (IDE) de Eclipse emplea mdulos (en ingls plug-in) para proporcionar toda su funcionalidad al frente de la plataforma de cliente enriquecido, a diferencia de otros entornos monolticos donde las funcionalidades estn todas incluidas, las necesite el usuario o no. Este mecanismo de mdulos es una plataforma ligera para componentes de software. Adicionalmente a permitirle a Eclipse extenderse usando otros lenguajes de programacin como son C/C++ y Python, permite a Eclipse trabajar con lenguajes para procesado de texto como LaTeX, aplicaciones en red como Telnet y Sistema de gestin de base de datos. La arquitectura plugin permite escribir cualquier extensin deseada en el ambiente, como sera Gestin de la configuracin. Se provee soporte para Java y CVS en el SDK de Eclipse. Y no tiene por qu ser usado nicamente para soportar otros lenguajes de programacin. La definicin que da el proyecto Eclipse acerca de su software es: "una especie de herramienta universal - un IDE abierto y extensible para todo y nada en particular". En cuanto a las aplicaciones clientes, Eclipse provee al programador con frameworks muy ricos para el desarrollo de aplicaciones grficas, definicin y manipulacin de modelos de software, aplicaciones web, etc. Por ejemplo, GEF (Graphic Editing Framework - Framework para la edicin grfica) es un plugin de Eclipse para el desarrollo de editores visuales que pueden ir desde procesadores de texto wysiwyg hasta editores de diagramas UML, interfaces grficas para el usuario (GUI), etc. Dado que los editores realizados con GEF "viven" dentro de Eclipse, adems de poder ser usados conjuntamente con otros plugins, hacen uso de su interfaz grfica personalizable y profesional. El SDK de Eclipse incluye las herramientas de desarrollo de Java, ofreciendo un IDE con un compilador de Java interno y un modelo completo de los archivos fuente de Java. Esto permite tcnicas avanzadas de refactorizacin y anlisis de cdigo. Mediante diversos plugins estas herramientas estn tambin disponibles para otros lenguajes como C/C++ (Eclipse CDT) y en la medida de lo posible para lenguajes de script no tipados como PHP o Javascript. El IDE tambin hace uso de un espacio de trabajo, en este caso un grupo de metadata en un espacio para archivos plano, permitiendo modificaciones externas a los archivos en tanto se refresque el espacio de trabajo correspondiente. CARACTERISTICAS

Eclipse dispone de un Editor de texto con resaltado de sintaxis. La compilacin es en tiempo real. Tiene pruebas unitarias con JUnit, control de versiones con CVS, integracin con Ant, asistentes (wizards) para creacin de proyectos, clases, tests, etc., y refactorizacin. Asimismo, a travs de "plugins" libremente disponibles es posible aadir control de versiones con Subversion e integracin con Hibernate.

6. DISEO METODOLOGICO METODOLOGIA DE INVESTIGACION

Para este proyecto utilizamos una investigacin de campo, pues tuvimos que ir a la escuela a ver como se llevan a cabo sus procesos. Y para ello realizamos una entrevista dirigida a la Lic. Alba Noem Suarez directora del Centro Educativo El Salvador. Adems efectuamos una encuesta dirigida a los 10 docentes de la escuela.

ANALISIS DE RESULTADOS

INTERPRETACION DE RESULTADOS 1. Le gustara realizar un sistema tres capas para la Escuela?

Si

No

6 5 4 3 2 1 0 valor 150 valor 200

Series1

2.

Se sentira ms cmodo si utilizara un software de acuerdo a sus

necesidades? Si No

valor 150 valor 200

3. notas?

Cree usted que ahorrara tiempo utilizando un sistema de registro de

Si

No

5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 valor 150 valor 200

Series1

4.

Cree que le facilitara el trabajo del manejo de registros de notas?

Si

No

5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 valor 150 valor 200

Series1

5.

Cunto pagara por este software?

150

200

300

valor 150 valor 200 valor 300

METODOLOGIA DE DE DASARROLLO MODELO RUP DE IMPLEMENTACION

Se utiliz esta metodologa ya que con el modelo rup nos permite realizar el anlisis, diseo y las pruebas del sistema en fases mucho ms especficas pudiendo el desarrollo del software ser mas especifico y completo en el momento de la implementacin para una mayor y mejor documentacin. ANALISIS DEL SISTEMA ACTUAL

El sistema de registro de notas del Centro Educativo es de forma manual lo que causa que la escuela no pueda promocionar sus servicios y que sus docentes no puedan registrar sus notas mediante internet ANALISIS DEL NUEVO SISTEMA El nuevo sistema que se quiere implementar en el Centro Educativo es una aplicacin tres capas para realizar paginas informativas y as ganar mucho ms alumnos para la Escuela mediante la red de alcance global

ESTUDIO DE FACTIBILIDAD Factibilidad operativa

La directora de la escuela dio total apertura para poder observar los procesos que se llevan a cabo en el Centro Educativo y los beneficios para la Escuela son varios: - Promocionar los servicios de la escuela mediante internet. - La posibilidad de los docentes para registrar notas e ingresar sus datos para el registro mediante la web - La facilidad de ingresar donde sea a la base de datos para el administrador del sistema y para el administrador de la escuela mediante el registro de usuarios y la creacin de los mismos Por tanto este proyecto es operativamente factible de desarrollar

Factibilidad Tcnica Para que el sistema este ptimamente se necesita los siguientes requerimientos tcnicos: Funciona en sistemas operativos Windows Xp, vista y 7 Exploradores Web chrome, Mozilla, Explorer. Sistema mnimo Xp Intel Dual Core 2.00 MHZ 1 GB RAM Disco Duro 10GB Perifricos de entrada y salida

El sistema de registro de notas es adaptable para que funcione en un PC de escritorio y dispositivos porttiles, que fcilmente pueden ser conectados con servidores donde recibirn los datos, tambin se puede considerar el uso para software tanto como para software libre o propio. Interface llamativa y colores adecuados para el usuario Fcil de manejar y con sus respectivos iconos de asignacin para usuarios con pocas destrezas de interface usuario maquina Para que el sistema opere con mxima capacidad es necesaria una buena conexin a internet. Puesto que la empresa cuenta con todo el recurso tecnolgico necesario este proyecto es tcnicamente factible de desarrollar.

Factibilidad econmica Este diseo de pgina web puede grabar informacin en una base de datos sin embargo, puede hacerse una interface entre los sistemas no compatibles mediante la emulacin, o por medio de la simulacin, que es un programa de cmputo que establece compatibilidad, pero con frecuencia estas formas de factibilidad tcnica no estn disponibles o son demasiado costosas. Si el personal no tiene esta experiencia, puede entrenrsele o pueden emplearse nuevos o consultores que la tengan. Una falta de experiencia tcnica dentro de la organizacin puede llevar al rechazo de una alternativa particular.
Costos directos Costo de desarrollo

Costos indirectos Costos Principales

Rubro Transporte Viticos

Costos 200 150

TOTAL:

350

CT=CD+CI CT=1053+350 Ct=1403 DOLARES.

ANLISIS ORIENTADO A OBJETOS

DIAGRAMA DE FLUJO

En primera instancia inicia sesin el que va a utilizar el programa con su respectivo usuario y contrasea, posteriormente se ingresa el nombre de los docentes con un formulario de ingreso para crear una cuenta y que conste su registro si la informacin es vlida se ingresara la cuenta respectiva

DIAGRAMA DE CASO DE USO

Modificar REGISTRO Administrador Registrar

Bsqueda

Detallada s

Docentes

Modificar

Tabulares Reportes Estadsticos Alumnos

Grficos

Registro

Pgina principal Usuario

Antecedentes

Misin

Visin

Marco de desarrollo Caso de uso : pagina web sistema digital para la escuela Actor principal Ing. Ligia Jcome

Personal involucrado e intereses Registrar docentes Registrar alumnos Registrar notas Registrar materias Escuela Precondiciones autentificacin usuario Garanta de xito Guardar los datos

Visualizar la informacin

Mensajes de error Ingresar clave principal Ingresar nombres de los docentes Ingreso datos de los alumnos Visualiza la informacin del Centro Educativo

Requisitos especiales Acceso al usuario con cuenta propia

Lista de tecnologa y variacin de datos Sistema operativo a utilizar Windows 7.0

DIAGRAMAS DE ACTIVIDAD Detalle Usuario Descripcin Llevar la gestin de la reservacin, es decir, har las anotaciones, las registrara a la base de datos desde la pgina web. Comentarios

Cancelar notas Dar de baja una nota.

Secuencia

Pasos 1

Accin El administrador solicita al sistema cancelar una reserva.

2 3

El sistema pide el cdigo de la nota. Si el administrador le da al sistema el cdigo de la nota.

4 5

El sistema muestra la nota con ese cdigo El administrador valida la cancelacin de la nota.

Dar de alta Descripcin Secuencia Aadir un alumno a la base de datos. Pasos 1 2 Accin El administrador solicita al sistema aadir un alumno El sistema solicita los datos personales del nuevo alumno. 3 4 El administrador introduce los datos del nuevo. El sistema da de alta al alumno.

Registro Descripcin Secuencia Realizacin de notas de los alumnos Pasos 1 2 Accin El administrador solicita realizar una materia. El sistema solicita la materia

El administrador introduce el cdigo de la materia y el tema

4 5 6

El sistema comprueba si el cdigo no es repetido El administrador selecciona una de las materias. El sistema valida la materia

DIAGRAMA DE CLASES

En este software a crear lo que existe son alumnos, docentes, materias, notas, observaciones, programador etc.

Modelo de datos

DISEO

Global Model Graph


NOTAS COD_ALUMNO COD_MATERIA NOTA1 NOTA2 NOTA3 ALUMNOS NOTA4 COD_ALUMNO CHAR(10) NOTA5 COD_CURSO CHAR(2) COD_ALUMNO = COD_ALUMNO NOTA6 NOMBRE_A CHAR(20) NOTA8 APELLIDO_A CHAR(20) NOTA9 DIRECCION_A CHAR(20) PROMEDIO1 TELEFONO_A CHAR(10) PROMEDIO2 PROMEDIO3 PROMEDIO_G CHAR(10) CHAR(2) VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2

COD_MAT ERIA = COD_MAT ERIA

MATERIA COD_MATERIA NOTA CHAR(2) CHAR(20)

COD_MAT ERIA = COD_MAT ERIA

COD_CURSO = COD_CURSO

PROFESOR OBSERVACION CHAR(2) CHAR(10) CHAR(20) COD_P COD_MATERIA NOMBRE_P APELLIDO_P DIRECCION_P TELEFONO_P CHAR(10) CHAR(2) CHAR(20) CHAR(20) CHAR(20) CHAR(9)

COD_OBSEVACION COD_ALUMNO COD_ALUMNO = COD_ALUMNO OBSERVACION

CURSOS COD_CURSO CHAR(2) NIVEL CHAR(20)

Model Information
Project Name: Project Code: Database: Name: Code: Label: Author: Version: Created On: Progress Model_1 MODEL_1

07/07/2012 10:49

Modified On:

07/07/2012 10:51

Begin Script End Script

Columns
Column List
Column Code APELLIDO_A APELLIDO_P COD_ALUMNO COD_ALUMNO COD_ALUMNO COD_CURSO COD_CURSO COD_MATERIA COD_MATERIA COD_MATERIA COD_OBSEVACION COD_P DIRECCION_A DIRECCION_P NIVEL NOMBRE_A CHAR(20) CHAR(20) CHAR(10) CHAR(10) CHAR(10) CHAR(2) CHAR(2) CHAR(2) CHAR(2) CHAR(2) CHAR(2) CHAR(10) CHAR(20) CHAR(20) CHAR(20) CHAR(20) Type

Column Code NOMBRE_P NOTA NOTA1 NOTA2 NOTA3 NOTA4 NOTA5 NOTA6 NOTA8 NOTA9 OBSERVACION PROMEDIO_G PROMEDIO1 PROMEDIO2 PROMEDIO3 TELEFONO_A TELEFONO_P CHAR(20) CHAR(20) VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 CHAR(20) VA2 VA2 VA2 VA2 CHAR(10) CHAR(9)

Type

Column APELLIDO_A
Table Code: Name: Code: Label: Domain: Type: Length: ALUMNOS apellido_a APELLIDO_A

CHAR(20) 20

Precision:

Column APELLIDO_P
Table Code: Name: Code: Label: Domain: Type: Length: PROFESOR apellido_p APELLIDO_P

CHAR(20) 20

Precision:

Column COD_ALUMNO
Table Code: Name: Code: Label: Domain: Type: Length: ALUMNOS cod_alumno COD_ALUMNO

CHAR(10) 10

Precision:

Column COD_ALUMNO
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS cod_alumno COD_ALUMNO

CHAR(10) 10

Precision:

Column COD_ALUMNO
Table Code: Name: Code: Label: Domain: Type: Length: OBSERVACION cod_alumno COD_ALUMNO

CHAR(10) 10

Precision:

Column COD_CURSO
Table Code: Name: Code: Label: Domain: Type: Length: CURSOS cod_curso COD_CURSO

CHAR(2) 2

Precision:

Column COD_CURSO
Table Code: Name: Code: Label: Domain: Type: Length: ALUMNOS cod_curso COD_CURSO

CHAR(2) 2

Precision:

Column COD_MATERIA
Table Code: Name: NOTAS cod_materia

Code: Label: Domain: Type: Length:

COD_MATERIA

CHAR(2) 2

Precision:

Column COD_MATERIA
Table Code: Name: Code: Label: Domain: Type: Length: PROFESOR cod_materia COD_MATERIA

CHAR(2) 2

Precision:

Column COD_MATERIA
Table Code: Name: Code: Label: Domain: Type: Length: MATERIA cod_materia COD_MATERIA

CHAR(2) 2

Precision:

Column COD_OBSEVACION
Table Code: Name: Code: Label: Domain: Type: Length: OBSERVACION cod_obsevacion COD_OBSEVACION

CHAR(2) 2

Precision:

Column COD_P
Table Code: Name: Code: Label: Domain: Type: Length: PROFESOR cod_p COD_P

CHAR(10) 10

Precision:

Column DIRECCION_A
Table Code: Name: Code: Label: Domain: Type: ALUMNOS direccion_a DIRECCION_A

CHAR(20)

Length:

20

Precision:

Column DIRECCION_P
Table Code: Name: Code: Label: Domain: Type: Length: PROFESOR direccion_p DIRECCION_P

CHAR(20) 20

Precision:

Column NIVEL
Table Code: Name: Code: Label: Domain: Type: Length: CURSOS nivel NIVEL

CHAR(20) 20

Precision:

Column NOMBRE_A
Table Code: Name: Code: Label: Domain: Type: Length: ALUMNOS nombre_a NOMBRE_A

CHAR(20) 20

Precision:

Column NOMBRE_P
Table Code: Name: Code: Label: Domain: Type: Length: PROFESOR nombre_p NOMBRE_P

CHAR(20) 20

Precision:

Column NOTA
Table Code: Name: Code: Label: Domain: Type: Length: MATERIA nota NOTA

CHAR(20) 20

Precision:

Column NOTA1
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS nota1 NOTA1

VA2 2

Precision:

Column NOTA2
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS nota2 NOTA2

VA2 2

Precision:

Column NOTA3
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS nota3 NOTA3

VA2 2

Precision:

Column NOTA4
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS nota4 NOTA4

VA2 2

Precision:

Column NOTA5
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS nota5 NOTA5

VA2 2

Precision:

Column NOTA6
Table Code: Name: NOTAS nota6

Code: Label: Domain: Type: Length:

NOTA6

VA2 2

Precision:

Column NOTA8
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS nota8 NOTA8

VA2 2

Precision:

Column NOTA9
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS nota9 NOTA9

VA2 2

Precision:

Column OBSERVACION
Table Code: Name: Code: Label: Domain: Type: Length: OBSERVACION observacion OBSERVACION

CHAR(20) 20

Precision:

Column PROMEDIO_G
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS promedio_g PROMEDIO_G

VA2 2

Precision:

Column PROMEDIO1
Table Code: Name: Code: Label: Domain: Type: NOTAS promedio1 PROMEDIO1

VA2

Length:

Precision:

Column PROMEDIO2
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS promedio2 PROMEDIO2

VA2 2

Precision:

Column PROMEDIO3
Table Code: Name: Code: Label: Domain: Type: Length: NOTAS promedio3 PROMEDIO3

VA2 2

Precision:

Column TELEFONO_A
Table Code: Name: Code: Label: Domain: Type: Length: ALUMNOS telefono_a TELEFONO_A

CHAR(10) 10

Precision:

Column TELEFONO_P
Table Code: Name: Code: Label: Domain: Type: Length: PROFESOR telefono_p TELEFONO_P

CHAR(9) 9

Precision:

Tables
Table List
Name Alumnos Cursos Materia ALUMNOS CURSOS MATERIA Code 0 0 0 Number

Name Notas Observacion Profesor NOTAS OBSERVACION PROFESOR

Code 0 0 0

Number

Table Alumnos
Name: Code: Label: Number: PK constraint: Source: Alumnos ALUMNOS

Entity ALUMNOS

Column List
Name cod_alumno cod_curso nombre_a apellido_a direccion_a telefono_a COD_ALUMNO COD_CURSO NOMBRE_A APELLIDO_A DIRECCION_A TELEFONO_A Code Type CHAR(10) CHAR(2) CHAR(20) CHAR(20) CHAR(20) CHAR(10) P Yes No No No No No M Yes No No No No No

Column COD_ALUMNO Column COD_CURSO Column NOMBRE_A Column APELLIDO_A Column DIRECCION_A Column TELEFONO_A
Index List
Index Code ALUMNOS_PK RELATION_42_FK P Yes No F No Yes U Yes No C No No Column Code COD_ALUMNO COD_CURSO Sort ASC ASC

Reference to List
Reference to CURSOS Primary Key COD_CURSO Foreign Key COD_CURSO

Reference by List
Referenced by NOTAS OBSERVACION Primary Key COD_ALUMNO COD_ALUMNO Foreign Key COD_ALUMNO COD_ALUMNO

Table Cursos
Name: Code: Label: Number: PK constraint: Source: Cursos CURSOS

Entity CURSOS

Column List
Name cod_curso nivel COD_CURSO NIVEL Code Type CHAR(2) CHAR(20) P Yes No M Yes No

Column COD_CURSO Column NIVEL


Index List
Index Code CURSOS_PK P Yes F No U Yes C No Column Code COD_CURSO Sort ASC

Reference by List
Referenced by ALUMNOS Primary Key COD_CURSO Foreign Key COD_CURSO

Table Materia

Name: Code: Label: Number: PK constraint: Source:

Materia MATERIA

Entity MATERIA

Column List
Name cod_materia nota COD_MATERIA NOTA Code Type CHAR(2) CHAR(20) P Yes No M Yes No

Column COD_MATERIA Column NOTA


Index List
Index Code MATERIA_PK P Yes F No U Yes C No Column Code COD_MATERIA Sort ASC

Reference by List
Referenced by PROFESOR NOTAS Primary Key COD_MATERIA COD_MATERIA Foreign Key COD_MATERIA COD_MATERIA

Table Notas
Name: Code: Label: Number: PK constraint: Source: Notas NOTAS

Relationship RELATION_41

Column List
Name cod_alumno cod_materia nota1 COD_ALUMNO COD_MATERIA NOTA1 Code Type CHAR(10) CHAR(2) VA2 P Yes Yes No M Yes Yes No

Name nota2 nota3 nota4 nota5 nota6 nota8 nota9 promedio1 promedio2 promedio3 promedio_g NOTA2 NOTA3 NOTA4 NOTA5 NOTA6 NOTA8 NOTA9 PROMEDIO1 PROMEDIO2 PROMEDIO3 PROMEDIO_G

Code

Type VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2 VA2

P No No No No No No No No No No No

M No No No No No No No No No No No

Column COD_ALUMNO Column COD_MATERIA Column NOTA1 Column NOTA2 Column NOTA3 Column NOTA4 Column NOTA5 Column NOTA6 Column NOTA8 Column NOTA9 Column PROMEDIO1 Column PROMEDIO2 Column PROMEDIO3 Column PROMEDIO_G

Index List
Index Code RELATION_41_PK RELATION_41_FK2 RELATION_41_FK P Yes No No F No Yes Yes U Yes No No C No No No Column Code COD_ALUMNO COD_MATERIA COD_ALUMNO COD_MATERIA Sort ASC ASC ASC ASC

Reference to List
Reference to MATERIA ALUMNOS Primary Key COD_MATERIA COD_ALUMNO Foreign Key COD_MATERIA COD_ALUMNO

Table Observacion
Name: Code: Label: Number: PK constraint: Source: Observacion OBSERVACION

Entity OBSERVACION

Column List
Name cod_obsevacion cod_alumno observacion Code COD_OBSEVACION COD_ALUMNO OBSERVACION Type CHAR(2) CHAR(10) CHAR(20) P Yes No No M Yes No No

Column COD_OBSEVACION Column COD_ALUMNO Column OBSERVACION


Index List
Index Code OBSERVACION_PK RELATION_43_FK P Yes No F No Yes U Yes No C No No Column Code COD_OBSEVACION COD_ALUMNO Sort ASC ASC

Reference to List
Reference to ALUMNOS Primary Key COD_ALUMNO Foreign Key COD_ALUMNO

Table Profesor
Name: Code: Label: Number: PK constraint: Source: Profesor PROFESOR

Entity PROFESOR

Column List
Name cod_p cod_materia nombre_p apellido_p direccion_p telefono_p COD_P COD_MATERIA NOMBRE_P APELLIDO_P DIRECCION_P TELEFONO_P Code Type CHAR(10) CHAR(2) CHAR(20) CHAR(20) CHAR(20) CHAR(9) P Yes No No No No No M Yes No No No No No

Column COD_P Column COD_MATERIA Column NOMBRE_P Column APELLIDO_P Column DIRECCION_P Column TELEFONO_P
Index List
Index Code PROFESOR_PK RELATION_35_FK P Yes No F No Yes U Yes No C No No COD_P COD_MATERIA Column Code Sort ASC ASC

Reference to List
Reference to MATERIA Primary Key COD_MATERIA Foreign Key COD_MATERIA

References
Reference List
Reference Name Relation_35 Relation_41 Relation_412 Relation_42 Relation_43 Reference Code RELATION_35 RELATION_41 RELATION_412 RELATION_42 RELATION_43 Parent MATERIA MATERIA ALUMNOS CURSOS ALUMNOS Child PROFESOR NOTAS NOTAS ALUMNOS OBSERVACION

Reference Relation_35
Name: Code: Label: Parent: Child: Cardinality: Join: Relation_35 RELATION_35

MATERIA PROFESOR 0, n MATERIA COD_MATERIA = Modification rule for parent Table: Deletion rule for parent Table: Parent mandatory for the child Table: Change parent allowed for the child Table:

PROFESOR COD_MATERIA Restrict Restrict No Yes

Reference Relation_41
Name: Code: Label: Parent: Child: Cardinality: Join: Relation_41 RELATION_41

MATERIA NOTAS 0, n MATERIA COD_MATERIA = Modification rule for parent Table: Deletion rule for parent Table: Parent mandatory for the child Table: Change parent allowed for the child Table:

NOTAS COD_MATERIA Restrict Restrict Yes Yes

Reference Relation_412

Name: Code: Label: Parent: Child: Cardinality: Join:

Relation_412 RELATION_412

ALUMNOS NOTAS 0, n ALUMNOS COD_ALUMNO = Modification rule for parent Table: Deletion rule for parent Table: Parent mandatory for the child Table: Change parent allowed for the child Table:

NOTAS COD_ALUMNO Restrict Restrict Yes Yes

Reference Relation_42
Name: Code: Label: Parent: Child: Cardinality: Join: Relation_42 RELATION_42

CURSOS ALUMNOS 0, n CURSOS COD_CURSO = Modification rule for parent Table: Deletion rule for parent Table: Parent mandatory for the child Table: Change parent allowed for the child Table:

ALUMNOS COD_CURSO Restrict Restrict No Yes

Reference Relation_43
Name: Code: Label: Parent: Child: Cardinality: Join: Relation_43 RELATION_43

ALUMNOS OBSERVACION 0, n ALUMNOS COD_ALUMNO = Modification rule for parent Table: Deletion rule for parent Table: Parent mandatory for the child Table: Change parent allowed for the child Table:

OBSERVACION COD_ALUMNO Restrict Restrict No Yes

ARQUITECTURA DE LA BASE DE DATOS DISEO FISICO En esta base de datos realizada en POSTGRESQL tenemos 6 tablas en la cual se encuentran relacionadas entre s para su concordancia. En la tabla clientes tenemos todo los datos personales de los alumnos como su nombre, direccin, telfono, etc. En la tabla Docente tenemos todo lo referente al registro de cada materia como sus notas, etc. En la tabla observacin en el cual consta los datos del alumno y su comportamiento. En la tabla materia en el cual consta el su cdigo como su tema. De curso se tiene tambin su nivel.

IMPLEMENTACION Clase de Conexin con la base de Datos


package db; import java.sql.*; import java.sql.Connection; import java.sql.SQLException; import java.sql.DriverManager; public class Coneccion { public Coneccion(){} public static Connection getConexion(){ try{ DriverManager.registerDriver(new org.postgresql.Driver()); return DriverManager.getConnection("jdbc:postgresql://localhost:5432/centro_educativo","luis1","luis1"); }catch (SQLException e){ e.printStackTrace(); } return null; } }

Clases con los procedimientos almacenados: select, insert, update, delete de todas las tablas
package db; import java.sql.CallableStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import org.hsqldb.Types; public class Alumnos { public Alumnos(){ } private object.Alumnos myAlumnos=null; public Alumnos(object.Alumnos inalumnos){ this.setalumnos(inalumnos); } public void setalumnos(object.Alumnos inalumnos){ this.myAlumnos=inalumnos; } public object.Alumnos getalumnos(){ return this.myAlumnos; } public boolean insert(java.sql.Connection inconection){ boolean result=true; try{ CallableStatement stmInsert= inconection.prepareCall("{call f_insertaralumno(?,?,?,?,?,?)}"); stmInsert.setString(1, this.getalumnos().getcod_a()); stmInsert.setString(2,this.getalumnos().getcod_c()); stmInsert.setString(3,this.getalumnos().getnom_a()); stmInsert.setString(4, this.getalumnos().getape_a()); stmInsert.setString(5,this.getalumnos().getdir_a()); stmInsert.setString(6,this.getalumnos().gettel_a()); stmInsert.execute(); stmInsert.close(); }catch(SQLException e){ result=false; e.printStackTrace(); } return result; } public boolean delete(java.sql.Connection inconection) { boolean result=true; try { CallableStatement stmDelete=inconection.prepareCall("{call f_eliminaralumnos(?,?)}"); stmDelete.setString(1,this.getalumnos().getcod_a()); stmDelete.setString(2,this.getalumnos().getcod_c()); stmDelete.execute(); stmDelete.close(); } catch (SQLException e) { result=false; e.printStackTrace();

} return result; } public boolean actualizar(java.sql.Connection inconection){ boolean result=true; try{ CallableStatement stmActualizar= inconection.prepareCall("{call f_actualizaralumno(?,?,?,?,?,?)}"); stmActualizar.setString(1, this.getalumnos().getcod_a()); stmActualizar.setString(2,this.getalumnos().getcod_c()); stmActualizar.setString(3,this.getalumnos().getnom_a()); stmActualizar.setString(4, this.getalumnos().getape_a()); stmActualizar.setString(5,this.getalumnos().getdir_a()); stmActualizar.setString(6,this.getalumnos().gettel_a()); stmActualizar.execute(); stmActualizar.close(); }catch(SQLException e){ result=false; e.printStackTrace(); } return result; } public ArrayList<object.Alumnos> select(java.sql.Connection inConnection){ ArrayList <object.Alumnos> outAlumnos=new ArrayList<object.Alumnos>(); try { inConnection.setAutoCommit(false); CallableStatement stmSelect=inConnection.prepareCall("{?=call f_seleccionalumno()}"); //NO tenemos paramentros a enviar sino valores a recibir stmSelect.registerOutParameter(1, Types.OTHER);//retorna refcursor stmSelect.execute(); ResultSet results=(ResultSet) stmSelect.getObject(1); //en resultset esta todo lo que retorna de la bd while(results.next()){//por cada bucle creo una nueva instancia object.Alumnos tmpAlumnos=new object.Alumnos(); tmpAlumnos.setcod_a(results.getString(1)); //1 es el indice de la columna de la bd tmpAlumnos.setcod_c(results.getString(2)); tmpAlumnos.setnom_a(results.getString(3)); tmpAlumnos.setape_a(results.getString(4)); tmpAlumnos.setdir_a(results.getString(5)); tmpAlumnos.settel_a(results.getString(6)); outAlumnos.add(tmpAlumnos);//anado al array los valores obtenidos } results.close(); stmSelect.close(); inConnection.setAutoCommit(true); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } return outAlumnos; } public ArrayList<object.Alumnos> buscar(java.sql.Connection inConnection, String inId_alumno){ ArrayList <object.Alumnos> outAlumnos=new ArrayList<object.Alumnos>();

try { inConnection.setAutoCommit(false); CallableStatement stmBuscar=inConnection.prepareCall("{?=call f_buscaralumno(?)}"); //Si tenemos 1 paramentros a enviar que la cedula y valores a recibir stmBuscar.registerOutParameter(1, Types.OTHER);//retorna refcursor stmBuscar.setString(2,inId_alumno); stmBuscar.execute(); ResultSet results=(ResultSet) stmBuscar.getObject(1); //en resultset esta todo lo que retorna de la bd while(results.next()){//por cada bucle creo una nueva instancia object.Alumnos tmpAlumnos=new object.Alumnos(); tmpAlumnos.setcod_a(results.getString(1)); //1 es el indice de la columna de la bd tmpAlumnos.setcod_c(results.getString(2)); tmpAlumnos.setnom_a(results.getString(3)); tmpAlumnos.setape_a(results.getString(4)); tmpAlumnos.setdir_a(results.getString(5)); tmpAlumnos.settel_a(results.getString(6)); outAlumnos.add(tmpAlumnos);//anado al array los valores obtenidos } results.close(); stmBuscar.close(); inConnection.setAutoCommit(true); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } return outAlumnos; } } package db; import java.sql.CallableStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import org.hsqldb.Types; public class Notas { public Notas(){ } private object.Notas myNotas=null; public Notas(object.Notas innotas){ this.setnotas(innotas); } public void setnotas(object.Notas innotas){ this.myNotas=innotas; } public object.Notas getnotas(){ return this.myNotas; } public boolean insert(java.sql.Connection inconection){ boolean result=true; try{

CallableStatement stmInsert= inconection.prepareCall("{call f_insertarnotas(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}"); stmInsert.setString(1,this.getnotas().getmatnot()); stmInsert.setString(2,this.getnotas().getalnot()); stmInsert.setDouble(3,this.getnotas().getnota1()); stmInsert.setDouble(4,this.getnotas().getnota2()); stmInsert.setDouble(5,this.getnotas().getnota3()); stmInsert.setDouble(6,this.getnotas().getnota4()); stmInsert.setDouble(7,this.getnotas().getnota5()); stmInsert.setDouble(8,this.getnotas().getnota6()); stmInsert.setDouble(9,this.getnotas().getnota7()); stmInsert.setDouble(10,this.getnotas().getnota8()); stmInsert.setDouble(11,this.getnotas().getnota9()); stmInsert.setDouble(12,this.getnotas().getpro1()); stmInsert.setDouble(13,this.getnotas().getpro2()); stmInsert.setDouble(14,this.getnotas().getpro3()); stmInsert.setDouble(15,this.getnotas().getprog()); stmInsert.execute(); stmInsert.close(); }catch(SQLException e){ result=false; e.printStackTrace(); } return result; } public boolean delete(java.sql.Connection inconection) { boolean result=true; try { CallableStatement stmDelete=inconection.prepareCall("{call f_eliminarnotas(?,?)}"); stmDelete.setString(1,this.getnotas().getmatnot()); stmDelete.setString(2,this.getnotas().getalnot()); stmDelete.execute(); stmDelete.close(); } catch (SQLException e) { result=false; e.printStackTrace(); } return result; } public boolean actualizar(java.sql.Connection inconection){ boolean result=true; try{ CallableStatement stmActualizar= inconection.prepareCall("{call f_actualizarnotas(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}"); stmActualizar.setString(1,this.getnotas().getmatnot()); stmActualizar.setString(2,this.getnotas().getalnot()); stmActualizar.setDouble(3,this.getnotas().getnota1()); stmActualizar.setDouble(4,this.getnotas().getnota2()); stmActualizar.setDouble(5,this.getnotas().getnota3()); stmActualizar.setDouble(6,this.getnotas().getnota4()); stmActualizar.setDouble(7,this.getnotas().getnota5()); stmActualizar.setDouble(8,this.getnotas().getnota6()); stmActualizar.setDouble(9,this.getnotas().getnota7()); stmActualizar.setDouble(10,this.getnotas().getnota8());

stmActualizar.setDouble(11,this.getnotas().getnota9()); stmActualizar.setDouble(12,this.getnotas().getpro1()); stmActualizar.setDouble(13,this.getnotas().getpro2()); stmActualizar.setDouble(14,this.getnotas().getpro3()); stmActualizar.setDouble(15,this.getnotas().getprog()); stmActualizar.execute(); stmActualizar.close(); }catch(SQLException e){ result=false; e.printStackTrace(); } return result; } public ArrayList<object.Notas> select(java.sql.Connection inConnection){ ArrayList <object.Notas> outNotas=new ArrayList<object.Notas>(); try { inConnection.setAutoCommit(false); CallableStatement stmSelect=inConnection.prepareCall("{?=call f_seleccionnotas()}"); //NO tenemos paramentros a enviar sino valores a recibir stmSelect.registerOutParameter(1, Types.OTHER);//retorna refcursor stmSelect.execute(); ResultSet results=(ResultSet) stmSelect.getObject(1); //en resultset esta todo lo que retorna de la bd while(results.next()){//por cada bucle creo una nueva instancia object.Notas tmpNotas=new object.Notas(); tmpNotas.setmatnot(results.getString(1)); //1 es el indice de la columna de la bd tmpNotas.setalnot(results.getString(2)); tmpNotas.setnota1(results.getDouble(3)); tmpNotas.setnota2(results.getDouble(4)); tmpNotas.setnota3(results.getDouble(5)); tmpNotas.setnota4(results.getDouble(6)); tmpNotas.setnota5(results.getDouble(7)); tmpNotas.setnota6(results.getDouble(8)); tmpNotas.setnota7(results.getDouble(9)); tmpNotas.setnota8(results.getDouble(10)); tmpNotas.setnota9(results.getDouble(11)); tmpNotas.setpro1(results.getDouble(12)); tmpNotas.setpro2(results.getDouble(13)); tmpNotas.setpro3(results.getDouble(14)); tmpNotas.setprog(results.getDouble(15)); outNotas.add(tmpNotas);//anado al array obtenidos } results.close(); stmSelect.close(); inConnection.setAutoCommit(true); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } return outNotas; } public String inId_notas){ ArrayList<object.Notas> buscar(java.sql.Connection inConnection,

los

valores

ArrayList <object.Notas> outNotas=new ArrayList<object.Notas>(); try { inConnection.setAutoCommit(false); CallableStatement stmBuscar=inConnection.prepareCall("{?=call f_buscarnotas(?)}"); //Si tenemos 1 paramentros a enviar que la cedula y valores a recibir stmBuscar.registerOutParameter(1, Types.OTHER);//retorna refcursor stmBuscar.setString(2,inId_notas); stmBuscar.execute(); ResultSet results=(ResultSet) stmBuscar.getObject(1); //en resultset esta todo lo que retorna de la bd while(results.next()){//por cada bucle creo una nueva instancia object.Notas tmpNotas=new object.Notas(); tmpNotas.setmatnot(results.getString(1)); //1 es el indice de la columna de la bd tmpNotas.setalnot(results.getString(2)); tmpNotas.setnota1(results.getDouble(3)); tmpNotas.setnota2(results.getDouble(4)); tmpNotas.setnota3(results.getDouble(5)); tmpNotas.setnota4(results.getDouble(6)); tmpNotas.setnota5(results.getDouble(7)); tmpNotas.setnota6(results.getDouble(8)); tmpNotas.setnota7(results.getDouble(9)); tmpNotas.setnota8(results.getDouble(10)); tmpNotas.setnota9(results.getDouble(11)); tmpNotas.setpro1(results.getDouble(12)); tmpNotas.setpro2(results.getDouble(13)); tmpNotas.setpro3(results.getDouble(14)); tmpNotas.setprog(results.getDouble(15)); outNotas.add(tmpNotas);//anado al array obtenidos } results.close(); stmBuscar.close(); inConnection.setAutoCommit(true); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } return outNotas; } }

los

valores

Clases con los set y get de todos los objetos de todas las tablas
package object; public class Notas { private String materia,alumno; private double n1,n2,n3,n4,n5,n6,n7,n8,n9; private double p1,p2,p3,pg; public Notas() { } public Notas(String idm,String ida,double nt1,double nt2,double nt3,double nt4,double nt5,double nt6,double nt7,double nt8,double nt9,double pm1,double pm2,double pm3,double pmg) {

this.setmatnot(idm); this.setalnot(ida); this.setnota1(nt1); this.setnota2(nt2); this.setnota3(nt3); this.setnota4(nt4); this.setnota5(nt5); this.setnota6(nt6); this.setnota7(nt7); this.setnota8(nt8); this.setnota9(nt9); this.setpro1(pm1); this.setpro2(pm2); this.setpro3(pm3); this.setprog(pmg); } //set y get de cod_materia en notas public void setmatnot(String codma) { materia=codma; } public String getmatnot() { return materia; } //set y get de cod_alumno en notas public void setalnot(String coda) { alumno=coda; } public String getalnot() { return alumno; } //set y get de nota1 en notas public void setnota1(double no1) { n1=no1; } public double getnota1() { return n1; } //set y get de nota2 en notas public void setnota2(double no2) { n2=no2; } public double getnota2() { return n2; } //set y get de nota3 en notas public void setnota3(double no3) {

n3=no3; } public double getnota3() { return n3; } //set y get de nota4 en notas public void setnota4(double no4) { n4=no4; } public double getnota4() { return n4; } //set y get de nota5 en notas public void setnota5(double no5) { n5=no5; } public double getnota5() { return n5; } //set y get de nota6 en notas public void setnota6(double no6) { n6=no6; } public double getnota6() { return n6; } //set y get de nota7 en notas public void setnota7(double no7) { n7=no7; } public double getnota7() { return n7; } //set y get de nota8 en notas public void setnota8(double no8) { n8=no8; } public double getnota8() { return n8; } //set y get de nota9 en notas public void setnota9(double no9) {

n9=no9; } public double getnota9() { return n9; } //set y get de promedio_1 en notas public void setpro1(double pro1) { p1=pro1; } public double getpro1() { return p1; } //set y get de promedio2 en notas public void setpro2(double pro2) { p2=pro2; } public double getpro2() { return p2; } //set y get de promedio3 en notas public void setpro3(double pro3) { p3=pro3; } public double getpro3() { return p3; } //set y get de promedio_general en notas public void setprog(double prog) { pg=prog; } public double getprog() { return pg; } } package object; public class Alumnos { private String cod_a,cod_curso,nom_a,ape_a,dir_a,tel_a; public Alumnos(){} public Alumnos(String cod, String codc, String nombre, String apellido, String direccion, String telefono){ this.setcod_a(cod); this.setcod_c(codc); this.setnom_a(nombre); this.setape_a(apellido); this.setdir_a(direccion);

this.settel_a(telefono); } public void setcod_a(String incod_a){ cod_a=incod_a; } public String getcod_a(){ return cod_a; } public void setcod_c(String incod_c){ cod_curso=incod_c; } public String getcod_c(){ return cod_curso; } public void setnom_a(String innom_a){ nom_a=innom_a; } public String getnom_a(){ return nom_a; } public void setape_a(String inape_a){ ape_a=inape_a; } public String getape_a(){ return ape_a; } public void setdir_a(String indir_a){ dir_a=indir_a; } public String getdir_a(){ return dir_a; } public void settel_a(String intel_a){ tel_a=intel_a; } public String gettel_a(){ return tel_a; } }

Clases servlet de todas las clases y tablas de la aplicacin


package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Alumno_Insertar */ public class Alumno_Insertar extends HttpServlet { private static final long serialVersionUID = 1L;

/** * @see HttpServlet#HttpServlet() */ public Alumno_Insertar() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub boolean result=true; try{ //asignamos a variables locales la informacion enviadapor el cliente mediante "request" String incod_Alumno=request.getParameter("codigo_a"); String incodcur=request.getParameter("cod_curso"); String innombre_a=request.getParameter("nombre_a"); String inapellido_a=request.getParameter("apellido_a"); String indireccion_a=request.getParameter("direccion_a"); String intelefono_a=request.getParameter("telefono_a"); object.Alumnos obj= new object.Alumnos(); obj.setcod_a(incod_Alumno); obj.setcod_c(incodcur); obj.setnom_a(innombre_a); obj.setape_a(inapellido_a); obj.setdir_a(indireccion_a); obj.settel_a(intelefono_a); Connection con=db.Coneccion.getConexion(); result=new db.Alumnos(obj).insert(con); con.close(); }catch (SQLException e){ result=false; e.printStackTrace(); } response.getOutputStream().print(result); } } package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Alumno_Buscar */ public class Alumno_Buscar extends HttpServlet {

private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Alumno_Buscar() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub try { String inId_alumno=request.getParameter("codigo_a"); ArrayList<object.Alumnos> result=null; ServletOutputStream out=response.getOutputStream(); Connection con=db.Coneccion.getConexion(); result=new db.Alumnos().buscar(con,inId_alumno); out.println("<dataset>");//Para imprimir no el la consola si no en el formulario for (int i = 0; i < result.size(); i++) { out.println("<record>"); out.println("<codigo_alumno>"+result.get(i).getcod_a()+"</codigo_alumno>"); //deben ser los mismos que defini en el Frm_cliente como variable out.println("<codigo_curso>"+result.get(i).getcod_c()+"</codigo_curso>"); //estos son los indices out.println("<nombre>"+result.get(i).getnom_a()+"</nombre>"); out.println("<apellido>"+result.get(i).getape_a()+"</apellido>"); out.println("<direccion>"+result.get(i).getdir_a()+"</direccion>"); out.println("<telefono>"+result.get(i).gettel_a()+"</telefono>"); out.println("</record>"); } out.println("</dataset>"); con.close(); out.close(); } catch (IOException e) { // TODO: handle exception e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); }

} package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Alumno_Actualizar */ public class Alumno_Actualizar extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Alumno_Actualizar() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub boolean result=true; try { //ASIGNAMOS A VARIABLES LOCALES LA INFORMACION ENVIADA POR EL CLIENTE Y PARA ESO USAMOS EL "request" String incod_Alumno=request.getParameter("codigo_a"); String incodcur=request.getParameter("cod_curso"); String innombre_a=request.getParameter("nombre_a"); String inapellido_a=request.getParameter("apellido_a"); String indireccion_a=request.getParameter("direccion_a"); String intelefono_a=request.getParameter("telefono_a"); object.Alumnos obj= new object.Alumnos(); obj.setcod_a(incod_Alumno); obj.setcod_c(incodcur); obj.setnom_a(innombre_a); obj.setape_a(inapellido_a); obj.setdir_a(indireccion_a); obj.settel_a(intelefono_a); Connection con=db.Coneccion.getConexion(); result=new db.Alumnos(obj).actualizar(con); con.close();

} catch (SQLException e) {

// TODO: handle exception result=false; e.printStackTrace();

} response.getOutputStream().print(result);//Indica al cliente si se inserto o no } }

package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Alumno_Eliminar */ public class Alumno_Eliminar extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Alumno_Eliminar() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub boolean result=true; try { //ASIGNAMOS A VARIABLES LOCALES LA INFORMACION ENVIADA POR EL CLIENTE Y PARA ESO USAMOS EL "request" String inId_Alumno=request.getParameter("codigo_a");//esta variable se enviar desdde el cliente el txtId_Cliente object.Alumnos obj=new object.Alumnos(); obj.setcod_a(inId_Alumno); Connection con=db.Coneccion.getConexion(); result=new db.Alumnos(obj).delete(con); con.close(); } catch (SQLException e) { // TODO: handle exception e.printStackTrace();

result=false; } response.getOutputStream().print(result);//Indica al cliente si se inserto o no } }

package servlet; import java.io.IOException; import java.sql.Connection; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.SQLException; /** * Servlet implementation class Cliente_Select */ public class Alumno_Seleccionar extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Alumno_Seleccionar() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub try { ArrayList<object.Alumnos> result=null; ServletOutputStream out=response.getOutputStream(); Connection con=db.Coneccion.getConexion(); result=new db.Alumnos().select(con); out.println("<dataset>");//Para imprimir no el la consola si no en el formulario for (int i = 0; i < result.size(); i++) { out.println("<record>"); out.println("<codigo_a>"+result.get(i).getcod_a()+"</codigo_a>"); //deben ser los mismos que defini en el Frm_cliente como variable out.println("<cod_curso>"+result.get(i).getcod_c()+"</cod_curso>"); //estos son los indices out.println("<nombre_a>"+result.get(i).getnom_a()+"</nombre_a>"); out.println("<apellido_a>"+result.get(i).getape_a()+"</apellido_a>"); out.println("<direccion_a>"+result.get(i).getdir_a()+"</direccion_a>"); out.println("<telefono_a>"+result.get(i).gettel_a()+"</telefono_a>");

out.println("</record>"); } out.println("</dataset>"); con.close(); out.close(); } catch (IOException e) { // TODO: handle exception e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); } } }

Formularios de JAVA script


function FrmAlumno(inDesktop){ //Crear text field y number field(para ingresdar solo numeros) var id_alumno=new Ext.form.TextField({ id:'id_alumno', name:'id_alumno', fieldLabel:'Id Alumno', anchor:'50%', value:'', allowBlank:false, //indica de que el campo es requerido minLength:10 }); //creacion de text field var id_curso=new Ext.form.TextField({ id:'id_curso', name:'id_curso', fieldLabel:'Id Curso', anchor:'50%', value:'', allowBlank:false, //indica de que el campo es requerido maxLength:40 }); var txtnombre=new Ext.form.TextField({ id:'txtnombre', name:'txtnombre', fieldLabel:'Nombre', anchor:'50%', value:'', allowBlank:false, //indica de que el campo es requerido maxLength:20 }); var txtapellido=new Ext.form.TextField({ id:'txtapellido', name:'txtapellido', fieldLabel:'Apellido',

anchor:'50%', value:'', allowBlank:false, //indica de que el campo es requerido maxLength:20 }); var txtdireccion=new Ext.form.TextField({ id:'txtdireccion', name:'txtdireccion', fieldLabel:'Direccion', anchor:'50%', value:'', allowBlank:false, //indica de que el campo es requerido maxLength:20 }); var txttelefono=new Ext.form.TextField({ id:'txttelefono', name:'txttelefono', fieldLabel:'Telefono', anchor:'50%', value:'', allowBlank:false, //indica de que el campo es requerido maskRe:/[0123456789]/ //coloco mascara para que ingrese solo numeros }); //Creacion de un boton para guardar los datos ingresados en la BD var btnEnviar=new Ext.Button({ //ya no se necesita el Ext.form.Button id:'btnEnviar', name:'btnEnviar', text:'Guardar Nuevo', listeners:{//para manipular en evento clik click:function(){ //alert('Boton de prueba'); pnlAlumno.getForm().submit({ url:"Alumno_Insertar", waitMsg:'Enviando informacion', //mensage de espera success:resultinsert, //lama a la funcion del success failure:resultinsert, //paso losparametros con la variables del del servelt paso los componentes de cajas params:{ id_alumno:id_alumno.getValue(), id_curso:(id_curso.getValue()), nombre:(txtnombre.getValue()), apellido:(txtapellido.getValue()), direccion:txtdireccion.getValue(), telefono:(txttelefono.getValue()) }

}); } }

}); // boton para actualizar los cambios en la base de datos var btnActualizar=new Ext.Button({ //ya no se necesita el Ext.form.Button id:'btnActualizar', name:'btnActualizar', text:'Actualizar Cambios', listeners:{//para manipular en evento clik click:function(){ //alert('Boton de prueba'); pnlAlumno.getForm().submit({ url:"Alumno_Actualizar", waitMsg:'Actualizandolos datos', //mensage de espera success:resultinsert, //lama a la funcion del success failure:resultinsert, //paso losparametros con la variables del del servelt paso los componentes de cajas params:{ id_alumno:id_alumno.getValue(), id_curso:(id_curso.getValue()), nombre:(txtnombre.getValue()), apellido:(txtapellido.getValue()), direccion:txtdireccion.getValue(), telefono:(txttelefono.getValue()) }

}); } }

}); var btnEliminar= new Ext.Button({ id:'btnEliminar', name:'btnEliminar', text:'Eliminar Alumno', listeners:{ click:function(){ Ext.Msg.show({ //mensaje que pregunta si eliminar o no title:'Aviso', msg:'Esta seguro de eliminar', buttons:Ext.Msg.YESNO, fn:fEliminar, //llama a una funcionenviando un mesaje del boton seleccionado Icon:Ext.MessageBox.QUESTION }); function fEliminar(btn){ if (btn=='yes'){ var registroselec= gridAlumno.getSelectionModel().getSelected(); pnlAlumno.getForm().submit({ url:"Alumno_Eliminar", waitMsg:'Actualizandolos datos', //mensage de espera success:resultdelete, //lama a la funcion del success failure:resultdelete,

//paso losparametros con la variables del del servelt paso los componentes de cajas params:{ id_alumno:registroselec.get('id_alumno')//debe ser el mismo del data stored }

}); } } }

})

//CREACION DE LA GRILLA PARA EL SELECT var dsAlumno=new Ext.data.Store({ url:'Alumno_Seleccionar', //llamada al servlet que debo crer reader:new Ext.data.XmlReader({record:'record'}, ['codigo_a','cod_curso', 'nombre_a', 'apellido_a', 'direccion_a','telefono_a']//estas variables se deben pasar a servlet ) }); var cmAlumno=new Ext.grid.ColumnModel([ {header:'Id Alumno', width:80, dataIndex:'codigo_a'}, {header:'Id Curso', width:80, dataIndex:'cod_curso'}, {header:'Nombre', width:80, dataIndex:'nombre_a'}, {header:'Apellido', width:80, dataIndex:'apellido_a'}, {header:'Direccion', width:80, dataIndex:'direccion_a'}, {header:'Telefono', width:80, dataIndex:'telefono_a'} ]); var gridAlumno=new Ext.grid.GridPanel({ id:'gridAlumno', cm:cmAlumno, //Este es el colummodel store:dsAlumno, //nombre del datasoter de arriba region:'center', sm:new Ext.grid.RowSelectionModel({ simgleSelection:true, //que seleccione solo uno listeners:{ rowselect:function(sm, row, record){ id_alumno.setValue(record.get('codigo_a')); id_curso.setValue(record.get('cod_curso')); txtnombre.setValue(record.get('nombre_a')); txtapellido.setValue(record.get('apellido_a')); txtdireccion.setValue(record.get('direccion_a')); txttelefono.setValue(record.get('telefono_a')); }

} })

}); dsAlumno.load(); //Posiciona paneles var pnlAlumno = new Ext.form.FormPanel({//crea un panel id:'pnlAlumno', frame:true, labelWidth:100, region:'north', autoHeight: true, style:{ padding:'0px 0px 0px 0px' }, items:[id_alumno,id_curso,txtnombre, txtapellido, txtdireccion, txttelefono] el number field al panel }); var winFrmAlumno = inDesktop.createWindow({ id:'winFrmAlumno', title:"Alumno", iconCls:'icon-grid', width:600, height: 500, minWidth:400, maximizable:true, minimizable:true, constrain:true, modal: false, layout:'border', items:[pnlAlumno, gridAlumno],//pongo el panel en la ventana bbar:[btnEnviar, btnActualizar,btnEliminar] }); this.getWindow = function(){ return winFrmAlumno; }

//aado

//creacion de funcion para el success que indica si se inserto o no el registro var resultinsert=function(form, action){ var outresult=action.result; if (outresult) { alert("Dato insertado con exito"); dsAlumno.reload(); txtcod_al.setValue(''); txtcod_cur.setValue(''); txtNombre_al.setValue(''); txtApellido_al.setValue(''); txtDireccion_al.setValue(''); txttelefono_al.setValue(''); } else{

alert("No se ha podido insertar el registro"); dsAlumno.reload(); } } //funcion de aviso de elimninacin ya llamada en el boton eliminar cliente var resultdelete=function(form, action){ var outresult=action.result; if (outresult) { alert("Dato eliminado con exito"); dsAlumno.reload(); txtcod_al.setValue(''); txtcod_cur.setValue(''); txtNombre_al.setValue(''); txtApellido_al.setValue(''); txtDireccion_al.setValue(''); txttelefono_al.setValue(''); } else{ alert("No se ha podido eliminar el registro"); dsAlumno.reload(); } }

} FrmAlumno.prototype.show = function(){ this.getWindow().show(); } function FrmAlumnoBuscar(inDesktop){ //este es para cargar el combobox var dsAlumnoAll= new Ext.data.Store({ url:'Alumno_Buscar', params:{ codigo_a:''//verificar que sea el mismo del servlet Buscar_Cliente }, reader: new Ext.data.XmlReader({record:'record'}, ['codigo_alumno','codigo_curso','nombre','apellido','direccion','telefono']) }); dsAlumnoAll.load();

var dsAlumno= new Ext.data.Store({ url:'Alumno_Buscar', params:{ codigo_a:''//verificar que sea el mismo del servlet Buscar_Cliente }, reader: new Ext.data.XmlReader({record:'record'}, ['codigo_alumno','codigo_curso','nombre','apellido','direccion','telefono']) });

var cmAlumno = new Ext.grid.ColumnModel([ {header: "Codigo Alumno", width: 50, dataIndex: 'codigo_alumno',sortable: true}, {header: "Codigo Curso", width: 80, dataIndex: 'nombre_cliente',sortable: true}, {header: "Nombre.", width: 80, dataIndex: 'nombre',sortable: true}, {header: "Apellido", width: 80, dataIndex: 'apellido',sortable: true}, {header: "Direccion", width: 80, dataIndex: 'direccion',sortable: true}, {header: "Telefono", width: 70, dataIndex: 'telefono',sortable: true} ]); /** * Ext.grid.GridPanel */ var grdAlumno = new Ext.grid.GridPanel({ cm:cmAlumno, store:dsAlumno, region:'center', sm:new Ext.grid.RowSelectionModel({singleSelect:true}), loadMask:{msg:"Cargando..."} }); dsAlumno.load();

var txtIdAlumno=new Ext.form.TextField({//para ingresar el id a buscar id:'txtIdAlumno', name:'txtIdAlumno', anchor:'90%', value:"" }); //Crear boton para poder buscar

/** *Ext.form.ComboBox Almacena el plazo del credito */ var cbxAlumno= new Ext.form.ComboBox({ id:'cbxAlumno', store: dsAlumnoAll, //para que salgan siempre todos fieldLabel :'Alumnos', valueField:'codigo_alumno', //Cargo los valores de stCliente al combobox displayField:'codigo_alumno', mode:'local', anchor:'90%', triggerAction:'all', listeners:{ //esto hago para que me haga la busqueda al seleccionar del combobox select:function(combo, record){ dsAlumno.reload({ params:{ codigo_a:record.get('codigo_alumno') //aqui puedo mandar dos parametros separados con "," } }); }

}); var btnBuscar=new Ext.Button({ id:'btnBuscar', name:'btnBuscar', text:'Buscar', listeners:{ click:function(){ dsAlumno.reload({ params:{ codigo_a:txtIdAlumno.getValue() } }); } } });

var btnLimpiar=new Ext.Button({ id:'btnLimpiar', text:'Limpiar', listeners:{ click:function(){ dsAlumno.reload({ params:{ codigo_a:'' //aqui puedo mandar dos parametros separados con "," } }); txtIdAlumno.setValue(''); //para limpiar

} }

}); var winFrmAlumnoBuscar = inDesktop.createWindow({ id:'winFrmAlumnoBuscar', title:"Alumno", iconCls:'icon-grid', width:400, height: 250, minWidth:400, maximizable:true, minimizable:true, constrain:true,

modal: false, layout:'border', items:[grdAlumno], tbar:['codigo_alumno',txtIdAlumno,'-', btnBuscar,'-',btnLimpiar,'-',cbxAlumno] //Agrego el label en html para que aparesca en el tbar

}); this.getWindow = function(){ return winFrmAlumnoBuscar; }

} FrmAlumnoBuscar.prototype.show = function(){ this.getWindow().show(); }

Escritorio Web
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>OurCompany.com</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="description" content="" /> <link rel="stylesheet" type="text/css" href="stylesheet.css" /> <script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script> <link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" /> <style type="text/css"> body,td,th { color: #990000; font-size: 36px; } h1 { font-size: 24px; } body { margin-left: 0cm; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0cm; } .container div #form1 p { font-family: "Courier New", Courier, monospace; } .contentArea .container div #form1 p { font-size: 16px; } .contentArea .container div #form1 p { text-align: justify; } .contentArea .container div #form1 p { font-size: 16;

} .contentArea .container div #form1 p { font-size: 18px; } .contentArea .container div #form1 p { font-size: 16px; } .contentArea .container div #form1 p { color: #000; } </style> </head> <body> <div class="bannerArea"> <div class="container"> <div class="toplogo">CENTRO EDUCATIVO EL SALVADOR</div> <div style="clear:both;"></div> </div> </div> <div class="topnavigationArea"> <div class="container"> <div class="topnavigationgroup"> <ul id="MenuBar1" class="MenuBarHorizontal"> <li><a href="ANTECEDENTES.html">ANTECEDENTES</a></li> <li><a href="VISION.html">VISION Y MISION</a></li> <li><a href="escritorio.html">ESCRITORIOWEB</a></li> <li><a href="index.html">PAGINA PRINCIPAL</a></li> </ul> </div> <div style="clear:both;"></div> </div> </div> <div class="contentArea"> <div class="container"> <div style="clear:both;"> <form id="form1" name="form1" method="post" action=""> <p>En el ao 1997, en la ciudad de Ambato, provincia de Tungurahua debido a la iniciativa el espritu de servir a la comunidad y el crecimiento de la niez en el Barrio de Ingahurco: La Iglesia Episcopal del Ecuador, el Rvdo. Flavio Saccarola y la Dra. Catalina Quinez une sus esfuerzos para crear el Centro Educativo con bases solidad en educacin.<br /> Cumpliendo este anhelo en el mes de Octubre de 1997 con el inicio de las actividades escolares del Centro Educativo &ldquo;El Salvador&rdquo; con una aula y la asistencia de 9 nios distribuidos para Pre-Knder y Primer Ao de Educacin Bsica. Recibiendo la Autorizacin Ministerial en Abril de 1998 con el # 464.</p> <p>Este ao sirvi de pilar para analizar fortalezas y debilidades de la Institucin, pues se contaba con un amplio espacio de terreno que deba ser aprovechado en beneficio de la niez del Centro Educativo.</p> <p>En el ao escolar 1998 - 1999 se cont con 2 aulas y la asistencia de 16 alumnos respectivos para Pre-kinder, Primero y Segundo Ao de Educacin Bsica<br /> El Sr. Michael Mc. Carty es el vnculo de amistad y ayuda entre Atlanta y varias personas voluntarias del extranjero.</p> <p>Para el ao 1999 - 2000, se incremento a 3 aulas para el funcionamiento de Pre-knder, Primero, Segundo y Tercer Ao de Educacin Bsica. En este ao se comparti nuevamente gratos momentos con el Sr. Mc. Carty.</p> <p>La Institucin ha crecido paulatinamente y para el ao 2000 - 2001 se logro un total de cinco aulas, repartidas para Pre-kinder, Primero, Segundo, Tercer y Cuarto Ao de Educacin Bsica y un Laboratorio de Computacin. La creacin de laboratorio de Computacin tiene la finalidad de brindar una educacin con conocimientos tericos - prcticos a la niez de acuerdo a la nueva Reforma Curricular.</p>

<p>Considerando la realidad social, econmica, poltica, familiar que atraviesa la sociedad ecuatoriana y mundial, la escasez de valores morales, ticos, patriticos, cristianos, motiv a las autoridades y miembros de la Iglesia &ldquo;La Episcopal&rdquo; a crear la institucin Centro Educativo &ldquo;El Salvador&rdquo; que estar encaminada a impartir educacin y cultura, amparada en el Amor a Dios y al prjimo; cuyo objetivo primordial es la formacin integral del ser humano, una formacin holstica, pues reconoce la constitucin tripartita del hombre:<strong> cuerpo</strong> <strong>mente y espritu</strong></p> <p>Nuestra Institucin, el <strong>Centro Educativo &ldquo;El Salvador</strong>&rdquo; est ubicada en la Provincia de Tungurahua, Cantn Ambato, Parroquia la Merced, Barrio Ingahurco , calle Av. Cooperativas 01 16 y Las Amricas, con un Acuerdo Ministerial N464 en A Octubre de 1997ofreciendo servicios educativos de Pre-knder a Octavo ao de educacin Bsica </p> </form> </div> </div> </div> <div class="footerArea"> <div class="container"> <div class="copyright"></div> </div> </div> <script type="text/javascript"> <!-var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"}); //--> </script> </body> </html>

PRUEBAS Se realiz pruebas de validacin donde se hizo una buena determinacin de los resultados realizando actividades de creacin de los datos del sistema donde el software fue probado por el creador y por el administrador de la escuela. Se realizo pruebas de ejecucin donde el software se prob con todas las pginas de registro, bsqueda, reportes dando as como resultado el inicio de la fase de implementacin y mantenimiento.

7.- RESULTADOS ESPERADOS


Los resultados que se pretende conseguir con el desarrollo de un sistema tres capas para el control de registro de notas que son los siguientes:

Un sistema acorde a las necesidades de la Unidad Educativa El Salvador que permitir el mejor manejo de la informacin asegurando as un desempeo ptimo y un servicio de calidad a todos sus usuarios. Satisfacer las actuales necesidades de la Unidad Educativa El Salvador en la automatizacin de sus procesos con una adecuada capacitacin para su adecuado uso Ser una referencia para otras escuelas del sector con la automatizacin de sus procesos y tener un resultado eficaz en el registro de sus usuarios

8.- TRANSFERENCIA DE RESULTADOS A LOS USUARIOS


Este sistema tres capas brinda una facilidad de organizar el registro de los clientes de la Unidad Educativa El Salvador. Con la creacin de los usuarios se puede clasificar los usuarios que van a usar el sistema siendo as mucho ms seguro y mas administrable aumentando la eficacia de sus procesos y evitando la fuga de informacin, Implementando el sistema de inmediato para su uso adecuado Para transferir los resultados al usuario se llevara una capacitacin con el cual se enseara a manejar el software y se entregara el manual de usuario donde se detallara el uso del mismo.

ELEMENTOS

FACTORES RELEVANTES Dependen de los requerimientos del trabajo del usuario.

Objetivos de la capacitacin. Mtodos de Dependen del trabajo del usuario, capacitacin. personalidad conocimientos y experiencias; usar una combinacin de plticas, demostraciones, prctica y estudio.

Sitios de capacitacin

Depende de los usuarios y esto ser gratis

Materiales de capacitacin

Depende de las necesidades del usuario; manuales de operacin, casos, prototipos de equipo.

9.- CONCLUSIONES Y RECOMENDACIONES

Se concluye que se realiz adecuadamente la integridad de las bases de datos

El excelente desarrollo del software es notable para su uso

Sus reportes son claros y precisos al momento de manipular

Se recomienda una capacitacin previa del software adquirido

Se recomienda revisar el ordenador para ver si cumple con los requisitos recomendados para el funcionamiento del software

10.- BIBLIOGRAFIA
http://www.monografias.com/trabajos14/sqlserver/sqlserver.shtml http://www.sqlserverya.com.ar/ http://www.clikear.com/manuales/sql/default.aspx http://es.wikipedia.org/wiki/ASP.NET http://www.microsoft.com/spain/visualstudio/products/2010-editions

http://carloslone.wordpress.com/2009/01/19/visual-studio-2010-qu-esperamosobtener/ Pressman, Roger. Ingeniera del software: Un enfoque prctico. 5ta. ed. McGraw Hill, Madrid, 2002.

Larman, Craig. UML y Patrones. Introduccin al anlisis y diseo orientado a objetos. Prentice Hall, Mxico, 1999.

Fowler, Martin. UML gota a gota. Addison Wesley Longman de Mxico, Mxico, 1999.

Sintes, Anthony. Aprendiendo programacin orientada a objetos en 21 lecciones avanzadas. Pearson Educacin, Mxico, 2002.

Jacobson, I., Booch, G. y Rumbaugh, J. El proceso unificado de desarrollo de software. Pearson Educacin, Madrid, 2000. Rosenberg, Doug y Scott, Kendall. Use Case Driven Obejct Modeling with UML: A practical approach. Addison Wesley, Boston, 1999.

Rosenberg, Doug y Scott, Kendall. Appying Use Case Driven Object Modeling with UML: An annotated e-commerce Example. Addison Wesley, Boston, 2001.

ANEXOS

Manual de Usuarios Pgina de ingreso Principal

Pgina de Misin y Visin

Pagina de Antecedentes

Escritorio Web

Ingreso de Alumnos

Reporte de Alumnos

UNIVERSIDAD INDOAMERICA FACULTAD DE INGENIERIA EN SISTEMAS Encuesta 1. Le gustara realizar un sistema tres capas para la Escuela?

Si

No

2.

Se sentira ms cmodo si utilizara un software de acuerdo a sus

necesidades? Si No

3. notas?

Cree usted que ahorrara tiempo utilizando un sistema de registro de

Si

No

4.

Cree que le facilitara el trabajo del manejo de registros de notas?

Si 5. Cunto pagara por este software?

No

150

200

300

Potrebbero piacerti anche