Sistema de gestión de coordinación y despegue y aterrizaje de vuelos de aeropuerto basado en JAVA (tesis + PPT + código fuente)

Declaración de tarea de diseño de graduación (tesis)

Página 1

Tema del proyecto de graduación (tesis): Sistema de gestión de coordinación y despegue y aterrizaje de vuelos de aeropuerto basado en JAVA Requisitos del proyecto de graduación (tesis) y datos originales (materiales): 1. Resumir los antecedentes y la importancia de la programación de vuelos del aeropuerto para la seguridad de los vuelos; 2. Comprensión profunda de las tecnologías relacionadas, como el lenguaje de compilación (java), las herramientas y las bases de datos necesarias para programar los sistemas de programación de vuelos de los aeropuertos; 3. Competente en el diseño de componentes jdk, análisis y diseño de bases de datos, usando eclipse y myeclipse para escribir programas de servidor y cliente java; 4. Diseñar e implementar el cliente y servidor del sistema de despacho aeroportuario; 5. Análisis en profundidad de las tecnologías clave y lenguajes de programación utilizados en el sistema de despacho aeroportuario; 6. 7. Entrenar la habilidad de recuperar y usar literatura; Entrenar la habilidad para escribir documentos técnicos y disertaciones.

página 2

Proyecto de graduación (tesis) contenidos principales: 1. Resumir el papel y la importancia del sistema de despacho de vuelos del aeropuerto en el despegue y aterrizaje de aeronaves del aeropuerto, la coordinación y la seguridad de vuelo; 2. Comprender el lenguaje de programación java, la herramienta de programación eclipse, myeclipse y las tecnologías relacionadas de la base de datos mysql necesarias para el desarrollo del sistema de despacho de vuelos del aeropuerto; 3. Familiarizado con el entorno de desarrollo del sistema de despacho de vuelos del aeropuerto; 4. Diseñar y realizar el sistema de despacho de vuelos del aeropuerto 5. Análisis en profundidad de las tecnologías clave en el sistema de despacho de vuelos del aeropuerto y el proceso de diseño de las funciones realizadas 6. Competencia en la escritura de programas de aplicación basados ​​en Java; 7. Diseñar y realizar el programa del sistema de programación de vuelos del aeropuerto basado en java. Los documentos de diseño (tesis) que deben presentar los estudiantes: 1. Tesis de proyecto de graduación con contenido completo, jerarquía clara, narración fluida y composición tipográfica estándar; 2. Documentos electrónicos de diseño de graduación y otros materiales relacionados, incluida la tesis de diseño de graduación, el programa fuente, etc.

Página 3

Principales referencias (datos): Zhou Xueqin. Todo el proceso de desarrollo de software basado en Java [M]. Beijing: Science Press, 2016. Li Enlin. Tecnología de desarrollo orientada a objetos basada en Java [M]. Beijing: China Fortune Press, 2016. Guo Wei. Diseño y aplicación del sistema de información de gestión de operaciones de vuelo del aeropuerto [J]. Ingeniería informática, 2005, (13): 3. Ji Yanli, Peng Xiaowei, Song Xianqun. Un método de diseño de tablas de bases de datos relacionales basado en la clase UML diagrama [A]. 2008. Yu Fengbo. Diseño del sistema de gestión de información de vuelo del aeropuerto [J]. Ciencia y tecnología de la aviación civil, 2004, (05): 2. Luo Zheng et al. Diseño e implementación del sistema de visualización de información de vuelo del aeropuerto [ D]. Beijing: Universidad de Correos y Telecomunicaciones de Beijing, 2006. Tang Yuanxin et al. Curso práctico de base de datos Oracle [M]. Beijing: Higher Education Press, 2005. Li Aiping. Análisis y diseño de sistemas [M]. Beijing: People's Posts and Telecommunications Press, 2015. Wigglesworth.Programación Java [M].Course Technology,1999.James Wightman.Pro SQL Server 2005 Integration Services[B].Apress, 2008Aart van Harten.Diseño de horarios de vuelos de aerolíneas intercontinentales[C].Científico y técnico Documents Publishing House, 1998. Diseño de requisitos para estudiantes de clase profesional (Papel) Fecha de inicio y finalización del trabajo Firma del instructor Fecha Firma de revisión del director del departamento Fecha Firma de aprobación del jefe del departamento Fecha

Sistema de gestión de coordinación y despegue y aterrizaje de vuelos de aeropuerto basado en JAVA

Resumen

Con el desarrollo de la sociedad y el avance de la ciencia y la tecnología, y el advenimiento de la era de la información, han seguido todo tipo de equipos eléctricos inteligentes. Hasta ahora, el más primitivo y común es el uso de computadoras. El surgimiento del software de computadora es el Un gran punto de inflexión en el progreso científico Para el software informático, el lenguaje de programación más utilizado para el software informático moderno es JAVA. Hoy en día, con el desarrollo de varios lenguajes de programación, todavía ocupa firmemente la posición central de los lenguajes informáticos y ha derivado una variedad de tecnologías informáticas avanzadas como Jsp, JavaEE y Struts2, haciendo grandes contribuciones al desarrollo de la informática y la ciencia del software. ., también ha hecho contribuciones sobresalientes a la producción humana y al desarrollo de la sociedad moderna, y varios software de computadora y aplicaciones móviles basados ​​en Java están abiertos al mercado. En términos de seguridad de vuelo, según estadísticas incompletas, el 83,5 % de los accidentes de vuelo ocurrieron durante las fases de despegue y aterrizaje de los vuelos. El incidente de intrusión en la pista del aeropuerto de Hongqiao que ocurrió el 11 de octubre de 2016 demostró plenamente la importancia del despacho y la comunicación entre el capitán y la torre de control. Las instrucciones oportunas y claras son importantes para la seguridad del vuelo. Para ayudar de manera segura a los comandantes de tierra a realizar las importantes funciones de comunicarse con los capitanes de vuelo y emitir instrucciones en la programación del vuelo, el despegue y el aterrizaje del vuelo y el sistema de gestión de la coordinación es particularmente importante. , puede administrar la información de vuelo en tiempo real, enviar instrucciones a los vuelos y recibir solicitudes de vuelos de manera oportuna y clara, numerar solicitudes e instrucciones, y registrar claramente cada elemento de datos.

En la actualidad, la mayoría de las funciones de programación de vuelos aún requieren que los comandantes de tierra programen manualmente los vuelos del aeropuerto y solo usen la radio para la comunicación. Además del uso de la radio, este sistema de gestión de coordinación de vuelo presenta un sistema claro de visualización de información y emisión de órdenes para torres y aeronaves, e introduce un sistema visible de emisión de órdenes, lo que reduce en gran medida el tiempo que los comandantes de tierra dedican al mando y la emisión de órdenes. La tasa de error evita en gran medida los riesgos de seguridad.

Este artículo tiene como objetivo la introducción técnica, el análisis de la demanda del extremo del capitán, el análisis de la demanda del extremo del comandante de tierra, el análisis y diseño del sistema y la implementación del código.Utiliza principalmente tecnología Java (jdk-7u15-windows-i586), mysql-essential-5.1. 32-win32, Eclipse IDE para Java DevelopersVersion: Luna Service Release 2 (4.4.2), apache-tomcat-7.0.77 y otros entornos y herramientas de desarrollo, tecnologías Java, Jsp, JDBC, Servlet y javascript y diseño de paquete de marco easyui Realizado el sistema de gestión de coordinación y despegue y aterrizaje de vuelos del aeropuerto.

Palabras clave: Java; Jsp; cliente; vuelo de aeropuerto; gestión de despegue y aterrizaje y coordinación

Sistema de gestión de coordinación de vuelos aeroportuarios basado en JAVA

Abstracto

Con el desarrollo de la sociedad y el progreso de la ciencia y la tecnología, el advenimiento de la era de la información, también siguió una variedad de equipos eléctricos inteligentes, con mucho, el más original, el más común es el uso de computadoras, el software de computadora es un muy grande punto de inflexión para el progreso de la informática, los programas informáticos, el lenguaje de programación de programas informáticos en la moderna el más utilizado es JAVA. El desarrollo en varios lenguajes de programación hoy en día, todavía ocupa firmemente la posición central en el lenguaje informático, y desarrolló la tecnología informática Jsp, JavaEE y Struts2 y otros avanzados, e hizo grandes contribuciones al desarrollo de la informática y el software, también ha Hizo contribuciones notables al desarrollo de la producción humana y la sociedad moderna. Una variedad de aplicaciones y software informático Java para mercados abiertos basados ​​en teléfonos móviles. En seguridad de vuelo, según estadísticas incompletas, el accidente ocurrió en la etapa de despegue y aterrizaje del vuelo 83.5% ocurrido el 11 de octubre de 2016, el evento de intrusión en la pista del aeropuerto de Hongqiao demuestra completamente la importancia de la comunicación en el aeropuerto y el capitán y la torre en Se emiten instrucciones oportunas y claras para la seguridad del vuelo, con el fin de ayudar a proteger al comandante de tierra. Se emite la implementación de las principales responsabilidades de la programación de vuelos y la comunicación y el comando del capitán de vuelo. El sistema de gestión de vuelos y coordinación es particularmente importante, puede volar en tiempo real. gestión de la información, oportuna y clara para enviar comandos al vuelo y vuelo desde la recepción de la solicitud,

Ahora, la mayoría de las funciones de programación de vuelos también requieren que el comandante de tierra programe manualmente los vuelos al aeropuerto, solo comunicación por radio. El sistema de gestión de vuelo además del uso de la radio, la torre y la aeronave introdujeron una vista clara y un sistema de liberación de información de instrucciones, presenta el sistema de liberación de instrucciones visibles, reduciendo en gran medida los comandantes de tierra y las directivas de comando emitidas por la tasa de error, en gran parte para evitar riesgos de seguridad.

Basado en la introducción de la tecnología, el análisis, el análisis de la demanda, el capitán y los comandantes en tierra finalizan el análisis y el diseño del sistema de demanda, los aspectos de implementación del código como objetivo, el uso principal de Java (jdk-7u15-windows-i586), mysql-essential-5.1 .32-win32 Eclipse IDE para tecnología, Java DevelopersVersion: Luna Service Release 2 (4.4.2), herramientas y entorno de desarrollo apache-tomcat-7.0.77; Diseño e implementación de tecnología Java, Jsp JDBC, Servlet y javascript y paquete easyUI del sistema de gestión de coordinación y despegue y aterrizaje de vuelos del aeropuerto.

Palabras llave : Java; jsp; cliente; vuelo del aeropuerto; despegar y coordinar la gestión


Tabla de contenido

1 Introducción 11

1.1 Antecedentes del proyecto 11

1.2 Propósito del proyecto 11

1.3 Análisis de viabilidad del proyecto 2

2 Introducción técnica 33

2.1 Tecnología Java 3

2.1.1 Introducción a la tecnología Java 3

2.1.2 Funciones orientadas a objetos de Java 3

2.2 Tecnología Javascript y jQuery 4

2.1.1 Introducción a Javascript 4

2.2.2 Introducción a jQuery-easyui 4

2.3 Tecnología Jsp 5

2.4 mysql5

3 Análisis de la demanda 6

3.1 Análisis de la demanda 6

3.2 Análisis de la Demanda de la Terminal de Comando Terrestre 8

3.2.1 Descripción de los requisitos de la terminal de comando de tierra 8

3.2.2 Caso de uso de terminal de comando de tierra Tabla 8

3.3 Análisis de la Demanda de la Terminal Capitán 11

3.3.1 Requerimientos Descripción de Capitán Terminal 11

3.3.2 Caso de uso de Terminal Capitán Tabla 11

3.4 Módulos funcionales de despegue y aterrizaje de vuelos y sistema de coordinación Figura 13

3.5 Sistema de despegue, aterrizaje y coordinación de vuelos ER Figura 13

4 Diseño de sistemas y funciones 14

4.1 Composición del proyecto 14

4.1.1 Lado de la base de datos 14

4.1.2 Lado del servidor 14

4.1.3 Cliente 14

4.2 Análisis y Diseño de Base de Datos 14

4.2.1 Diseño de la estructura lógica de la base de datos 14

4.2.2 Análisis de tablas de bases de datos 15

4.2.3 Diseño de tablas de base de datos 15

4.2.4 Asociación de tablas de base de datos 17

4.3 Diagrama de flujo del proyecto 18

4.4 Diseño funcional del lado del servidor 20

4.5 Diseño de funciones de cliente 21

5 Construcción del entorno del proyecto 22

5.1 Instalación de JDK 22

5.1.1 Instalación de JDK-7u15 22

5.1.2 Configuración de variables de entorno JDK 22

5.2 Instalación de la base de datos 23

5.2.1 Instalación y configuración de Mysql 23

5.2.2 Instalación y configuración de SQLyog10.2 24

5.3 Instalación de servidor y cliente 25

5.3.1 Instalación y configuración de eclipse LUNA 25

5.3.2 Instalación y configuración de apache-tomcat-7.0.77 26

6 Implementación del sistema 27

6.1 Realización de la función de inicio de sesión 27

6.1.1 Inicio de sesión de comandante 27

6.1.2 Inicio de sesión del capitán 28

6.2 Implementación de la interfaz principal 29

6.2.1 Realización de la interfaz principal del terminal de comando de tierra 29

6.2.2 Realización de la interfaz principal de la terminal de capitán 31

6.3 Realización de la función de mando y gestión en tierra 32

6.3.1 Realización de la función de gestión de la información de vuelo del terminal de mando en tierra 32

6.3.2 Realización de la función de gestión de información de mando de vuelo del terminal de mando de tierra 35

6.4 Realización de funciones del terminal capitán 37

6.4.1 Implementación de visualización de información en la terminal del capitán 37

6.4.2 Realización de la función de gestión de información de mando de vuelo del terminal de mando de tierra 39

7 Pruebas y mantenimiento del sistema 43

7.1 Descripción de la prueba 43

7.2 Propósito de la prueba 43

7.3 Alcance de la prueba 44

7.4 Casos de prueba 44

7.5 Análisis de los resultados de las pruebas 46

8 Conclusión 47

Referencia 48

gracias 49

Idioma extranjero original 50

traducción al chino 61

1. Introducción

1.1 Antecedentes del proyecto

Con el desarrollo de la sociedad y el avance de la ciencia y la tecnología, y el advenimiento de la era de la información, han seguido todo tipo de equipos eléctricos inteligentes. Hasta ahora, el más primitivo y común es el uso de computadoras. El surgimiento del software de computadora es el Un gran punto de inflexión en el progreso científico Para el software informático, el lenguaje de programación más utilizado para el software informático moderno es JAVA. Hoy en día, con el desarrollo de varios lenguajes de programación, todavía ocupa firmemente la posición central de los lenguajes informáticos y ha derivado una variedad de tecnologías informáticas avanzadas como Jsp, JavaEE y Struts2, haciendo grandes contribuciones al desarrollo de la informática y la ciencia del software. ., también ha hecho contribuciones sobresalientes a la producción humana y al desarrollo de la sociedad moderna, y varios software de computadora y aplicaciones móviles basados ​​en Java están abiertos al mercado. En términos de seguridad de vuelo, según estadísticas incompletas, el 83,5 % de los accidentes de vuelo ocurrieron durante las fases de despegue y aterrizaje de los vuelos. El incidente de intrusión en la pista del aeropuerto de Hongqiao que ocurrió el 11 de octubre de 2016 demostró plenamente la importancia del despacho y la comunicación entre el capitán y la torre de control. Las instrucciones oportunas y claras son importantes para la seguridad del vuelo. Para ayudar de manera segura al comandante de tierra a realizar la importante responsabilidad de la programación del vuelo, el despegue y aterrizaje del vuelo y la coordinación. La comunicación de mando entre el comandante de tierra y el capitán juega un papel vital en la seguridad del vuelo, especialmente en el aeropuerto y su espacio aéreo.

El lenguaje Java es el lenguaje central y más utilizado en la programación informática moderna. Java es un lenguaje informático orientado a objetos. Es ampliamente utilizado y flexible, y el sistema Java es estable. La programación en el lenguaje Java es una muy buena opción. .

1.2 Propósito del proyecto

Escriba un sistema de coordinación y despegue y aterrizaje de vuelos de aeropuerto basado en Java (sistema de programación de vuelos de aeropuerto) a través de este proyecto. A través de este sistema, los comandantes de tierra del aeropuerto pueden hacer más clara la programación de vuelos y el envío de instrucciones, reducir la tasa de errores de programación de vuelos tanto como sea posible, evitar el riesgo de errores de programación de vuelos tanto como sea posible y evitar la ocurrencia de accidentes aéreos al máximo. en gran medida. Reducir la tasa de error de la emisión de comandos por parte de los comandantes de tierra y establecer la emisión de comandos visuales en los datos de vuelo, de modo que el vuelo pueda despegar y aterrizar normalmente en caso de posible interferencia de radio. Administre la información de vuelo en tiempo real y establezca comunicación de comando entre los comandantes de tierra y los capitanes.

1.3 Análisis de viabilidad del proyecto

Este proyecto consiste en diseñar un sistema de gestión de coordinación y despegue y aterrizaje de vuelos aeroportuarios basado en JAVA.

(1) En términos de viabilidad económica, el software es un software de comando y coordinación utilizado dentro del aeropuerto, que pertenece a la inversión en seguridad aérea.El costo de desarrollo de este software no es alto, y el software y la base de datos del servidor se pueden desarrollar con el base de datos original del aeropuerto Comparado con las pérdidas causadas por el accidente aéreo a las aerolíneas, es una gota en el océano.

(2) En términos de viabilidad técnica, el software utiliza principalmente tecnología Java, tecnología de base de datos jQuery-easyui y Mysql. Java es la herramienta de desarrollo de software más estable y confiable hasta el momento; aunque jQuery-easyui es una tecnología de desarrollo front-end relativamente nueva, su interfaz es novedosa y ordenada, adecuada para el desarrollo de software funcional; la base de datos de desarrollo de proyectos de software utilizada en ambos no solo es estable sino también confiable en rendimiento y puede usarse para el desarrollo de este software.

(3) Desde la perspectiva de la viabilidad legal, las tecnologías utilizadas en este software son todas herramientas y lenguajes de desarrollo de software de código abierto. Aunque Java y otras tecnologías de desarrollo tienen problemas de derechos de autor de Sun, la tecnología Java se puede utilizar de forma gratuita sin implicar una infracción legal.

(4) En términos de viabilidad del esquema, una gran parte de la energía de este desarrollo de software se pone en el análisis y diseño de requisitos de software, y el software diseñado puede realizar el software prediseñado que queremos completar. .


2 Introducción técnica

2.1 Tecnología Java

2.1.1 Introducción a la tecnología Java

En mayo de 1995, Sun Microsystems lanzó un lenguaje de programación Java de todas las edades en el campo de las computadoras y el software, es decir, el lenguaje Java. La empresa es optimista y se ha convertido en el lenguaje de programación de computadoras más utilizado en el mundo.

Java es un lenguaje de programación orientado a objetos que admite la informática en Internet. Añade muchas características nuevas al lenguaje C++ orientado a objetos y se convierte en un lenguaje informático orientado a objetos más completo. El lenguaje Java es un lenguaje informático avanzado, que es más simple y conveniente que el lenguaje C, y en comparación con el lenguaje C++, elimina las características de herencia múltiple. El lenguaje Java solo tiene herencia única y herencia de interfaz, etc., que hace que sea más conveniente para los programadores escribir programas. El lenguaje Java tiene un cierto grado de robustez, y su mecanismo de verificación de seguridad es un mecanismo muy bueno, que puede detectar errores de programa y peligros ocultos de manera oportuna, y manejar excepciones. Además de sus propias funciones de seguridad, el lenguaje Java también proporciona un mecanismo de seguridad para evitar ataques de códigos maliciosos.Tanto el lenguaje Java como sus sistemas tienen una gran portabilidad.

Las clases en los programas Java se pueden cargar dinámicamente en el entorno de tiempo de ejecución, lo que facilita la migración de proyectos. Las características orientadas a objetos de Java, subprocesos múltiples, portabilidad, alto rendimiento y características dinámicas, así como las características de compatibilidad de la plataforma han llevado a que la tecnología Java sea ampliamente utilizada.

2.1.2 Funciones orientadas a objetos de Java

abstracto:

La abstracción es elegir solo una parte de ellos, sin conocer todos los problemas, para expresar completamente el tema actual. La abstracción incluye principalmente dos métodos: la abstracción de procesos y la abstracción de datos. La abstracción de procesos es usar nuestro código de computadora para expresar las características de comportamiento. de objetos; y la abstracción de datos es usar nuestro código de computadora para representar las características del objeto. Uno de ellos es para las características de comportamiento del objeto y el otro es para las características de atributo del objeto.

heredar:

La herencia es un modelo jerárquico de vinculación de clases, que consiste en derivar una nueva clase a partir de una clase existente. Esta nueva clase se denomina subclase y la clase original se denomina clase principal. Java solo admite la herencia única, que se implementa a través del método extends. La herencia única de Java no solo mejora la reutilización del código, sino que también mejora aún más la eficiencia del desarrollo de software.

Paquete:

La encapsulación consiste en envolver el proceso y los datos, ocultar el mecanismo de implementación interna de la clase y el acceso a los datos solo puede realizarse a través de la interfaz definida. De hecho, se basa en un concepto básico, es decir, el mundo real se representa como un objeto completamente encapsulado y se accede al objeto a través de una interfaz protegida. Por lo tanto, la estructura interna de la clase se puede cambiar sin afectar el uso del usuario y los datos están protegidos.

Polimorfismo:

El polimorfismo son las diferentes respuestas de objetos de diferentes clases al mismo contenido. Incluye polimorfismo parametrizado y polimorfismo de inclusión, y tiene las ventajas de flexibilidad, abstracción y comportamiento compartido, y también resuelve el problema de la función del mismo nombre. .

2.2 Tecnología Javascript y jQuery

2.2.1 Introducción a la tecnología Javascript

Javascript es un lenguaje de secuencias de comandos basado en navegadores de Internet. Tiene cierto rendimiento de seguridad de la red. JavaScript puede formar una página web completa con capacidad de respuesta y capacidades de procesamiento de datos con HTML, CSS y lenguajes de servidor basados ​​en Java. Se utiliza para desarrollar el lenguaje de secuencias de comandos de el cliente, puede realizar la interacción con el usuario en la parte frontal del software. Javascript no solo incluye las características del servidor Java, sino que también incluye las capacidades de desarrollo front-end de HTML. Es una combinación de los dos. Compensa algunos defectos en HTML y simplifica el salto de las páginas del cliente, pero lo hace. No reemplace por completo la importancia de HTML y Java en la página web y el diseño del lado del cliente.

En términos generales, Javascript es un lenguaje de descripción simple, seguro, dinámico y multiplataforma basado en objetos y eventos. Puede realizar saltos de página directamente sin procesamiento por parte del servidor. Lenguaje de secuencias de comandos compatible con HTML.

2.2.2 Introducción a la tecnología jQuery-easyui

jQuery EasyUI es una colección de complementos de interfaz de usuario basados ​​en jQuery. Existe para ayudar a los desarrolladores de front-end web a crear clientes y páginas web con una mejor experiencia de usuario y páginas más ricas y hermosas. Es un complemento basado en jQuery. tiene controles de interfaz de usuario fáciles de usar, como el cuadro combinado, el menú y el árbol. El proceso de desarrollo es simple y el uso es bastante conveniente. Las páginas escritas con él son concisas y elegantes, y es una herramienta de desarrollo muy conveniente para los programadores front-end.

jQuery EasyUI tiene las siguientes características:

1. Una colección de complementos de interfaz de usuario basados ​​en jquery;

2. Proporcionar las funciones necesarias para algunas aplicaciones js que se utilizan actualmente para la interacción;

3. EasyUI es compatible con los métodos de representación de Javascript y HTML;

4. Admite HTML5 (a través del atributo de opciones de datos);

5. Ahorre tiempo y recursos al desarrollar productos;

6. Simple, pero poderoso;

7. Admite expansión, puede expandir el control según sus propias necesidades;

8. Todavía hay muchas deficiencias en EasyUI y se mejora continuamente a través de versiones actualizadas.

tecnología 2.3Jsp

El nombre completo de Jsp es Java Server Pages, que es un estándar de tecnología de página web dinámica propuesto por Sun. Es tan multiplataforma como Java y puede ejecutarse en los populares Windows, Linux y otros sistemas operativos. JSP encapsula la lógica de procesamiento para generar páginas web dinámicas a través de scriptlets y similares a XML escritos en el lenguaje Java, y sus páginas web también pueden acceder a la lógica de la aplicación de recursos del lado del servidor a través de etiquetas. La característica más importante de Jsp es separar el diseño frontal de la página web del programa de fondo, lo que facilita el desarrollo de páginas web y clientes.

El principio de funcionamiento de JSP es que cuando el servidor web encuentra la solicitud de página enviada por la operación y el acceso a la página web de Jsp, primero ejecuta el segmento de programa correspondiente que visitamos y necesita, y luego retroalimenta el resultado al cliente. El segmento de programa en Jsp realiza la base de datos y el servidor. La respuesta luego implementa la funcionalidad de una página web dinámica. Entonces, Jsp, como serverlet, realiza la respuesta dinámica de las páginas web a través de la respuesta del servidor.

Desde que se lanzó Jsp, ha sido amado y buscado por los gigantes de Internet, y se ha convertido rápidamente en un lenguaje del lado del servidor muy popular y ampliamente utilizado.Muchas empresas de Internet han establecido servidores compatibles con Jsp, como IBM y Oracle.

2.4 MySQL

MySQL es un sistema de gestión de base de datos de alto rendimiento, cuenta con potentes funciones, gran flexibilidad y múltiples interfaces API, se caracteriza por su bajo costo, alto rendimiento, buena confiabilidad, y su robustez y facilidad de uso y su rápida respuesta, por lo que no necesita mucha mano de obra ni recursos materiales para crear y mantener, y puede hacer un servidor de base de datos de alto rendimiento a un costo muy bajo. Es un servidor de base de datos SQL multiusuario y multiproceso. El lenguaje SQL que admite se ha convertido en el lenguaje de base de datos más utilizado en la industria del software. Hablando de lenguaje SQL, es un lenguaje estandarizado y se utiliza para acceder a The la información será muy conveniente y fácil, muy fácil de usar, muy fácil de aprender. MySQL es ampliamente utilizado en algunas pequeñas y medianas empresas y sitios web, y su ámbito de aplicación se está expandiendo gradualmente. Su organización y gestión de gran cantidad de información y consultas de inventario basadas en la web son las ventajas más destacadas de MySQL. También puede reducir el tiempo de archivo de registros, la secuencia de búsqueda flexible, el formato de salida flexible y múltiples usuarios que acceden a los registros de la base de datos MySQL al mismo tiempo, convirtiéndose en la mejor opción para muchas bases de datos de proyectos.

3 Análisis de la demanda

3.1 Análisis de la demanda

El análisis de requisitos se refiere a un análisis detallado de los problemas a estudiar, pensando cuidadosamente en los requisitos, que incluye principalmente los datos que se ingresarán y los resultados que se obtendrán. Antes de hacer el sistema, lo que tenemos que hacer es un análisis de la demanda. Se trata principalmente de determinar para qué sirve el software desarrollado y qué efecto puede lograr.

En el proceso de desarrollo de software, el análisis de requisitos de software es un paso particularmente importante. Su trabajo principal es describir el alcance, la definición, la función y los requisitos de rendimiento del sistema. El trabajo realizado se denomina análisis de requisitos. En el proceso de desarrollo de software, es un proceso crucial, que determina directamente si el esquema de diseño de software realizará la función esperada requerida por sus clientes y si satisfará a los clientes.

En este sistema de gestión de coordinación y despegue y aterrizaje de vuelos, los participantes incluyen al comandante de tierra y al capitán. El comandante de tierra puede buscar información de vuelo, buscar y operar información de vuelo, emitir instrucciones de vuelo, recibir solicitudes de vuelo y obtener el estado del vuelo.

Figura 3-1 Diagrama de caso de uso del extremo del comandante de tierra

La terminal del capitán tiene funciones como ver información de vuelo, enviar solicitudes de vuelo, recibir instrucciones de la torre y actualizar el estado del vuelo.

Figura 3-2 Diagrama de caso de uso del terminal capitán

Determinar las principales funciones del software a desarrollar y el desempeño del sistema son las principales tareas en la etapa de análisis de requerimientos. Durante mucho tiempo en el pasado, los desarrolladores de software han ignorado la importancia del análisis de requisitos de software.Con la madurez de la tecnología de desarrollo de software, la mayoría de las empresas de software han comenzado a prestar atención a este asunto. Si no reconocemos las necesidades reales de los clientes durante el análisis de requisitos, es posible que el software que finalmente se diseñe no cumpla con las expectativas de los clientes, por lo que rehacer el software es algo que requiere mucho tiempo y mano de obra. de los requisitos El proyecto de software se hace más preciso desde el inicio del análisis. Dado que el sistema de programación de vuelos que hice se divide en dos partes, el comando de tierra y el capitán, en términos de análisis de demanda, discutiré estas dos partes por separado.

3.2 Análisis de los requisitos finales del comando terrestre

3.2.1 Descripción de los requisitos finales del comando en tierra

Análisis de demanda de la terminal de comando en tierra: primero, los usuarios pueden buscar información de vuelo en el software diseñado y buscar información de vuelo. Puede modificar y eliminar la información de vuelo que debe modificarse o eliminarse por algún motivo, agregar el número de vuelo agregado, emitir instrucciones de vuelo y recibir solicitudes de vuelo, y recibir el estado del vuelo en tiempo real. Así que ordénalo de la siguiente manera:

1. Iniciar sesión

2. Explorar información de vuelos

3. Buscar información de vuelos

4. Operar información de vuelo

Modificar información de vuelo

Añadir información de vuelo

Eliminar información de vuelo

5. Enviar instrucciones de vuelo

6. Recibir solicitud de vuelo

7. Modificar instrucciones de vuelo

8. Obtener el estado del vuelo

3.2.2 Tabla de casos de uso del cliente

Tabla 3-1 Tabla de casos de uso de inicio de sesión de Commander

nombre del caso de uso Inicio de sesión de comandante
Breve descripción de las funciones Los comandantes de tierra deben iniciar sesión para verificar su identidad cuando están de servicio
condiciones previas ninguno
condición posterior El comandante ingresa a la interfaz de comando
corriente elemental Ingrese el número de comandante, la contraseña y haga clic en Iniciar sesión para ingresar a la interfaz principal
Transmisión extendida Si el número de comandante no coincide con la contraseña, aparecerá un mensaje de error.

Tabla 3-2 Tabla de casos de uso de exploración de información de vuelos

nombre del caso de uso Navegación de información de vuelos
Breve descripción de las funciones El comandante ingresa al sistema de comando de la torre de control para navegar por la información del vuelo de llegada y salida
condiciones previas ninguno
condición posterior Ordenar vuelos de salida, recibir solicitudes de vuelo, enviar instrucciones de vuelo
corriente elemental Haga clic en la información del vuelo para navegar por la información específica del vuelo

Tabla 3-3 Tabla de casos de uso de edición de información de vuelo

nombre del caso de uso Editar información de vuelo
Breve descripción de las funciones El comandante edita la información del vuelo y borra el vuelo cancelado
condiciones previas ninguno
condición posterior Emitir instrucciones de vuelo y recibir solicitudes de vuelo
corriente elemental Eliminar, agregar y modificar información de vuelos

Tabla 3-4 Tabla de caso de uso de información de vuelos de búsqueda

nombre del caso de uso buscar información de vuelo
Breve descripción de las funciones Buscar vuelos entrantes y próximos
condiciones previas ninguno
condición posterior Enviar instrucciones de vuelo a través de los resultados de la búsqueda de información de vuelo
corriente elemental Realice el envío de instrucciones de vuelo ingresando el número de vuelo, el aterrizaje y la hora de salida

Tabla 3-5 Tabla de casos de uso para emitir instrucciones de vuelo

nombre del caso de uso emitir instrucciones de vuelo
Breve descripción de las funciones Emitir instrucciones de despegue, aterrizaje o rodaje para el vuelo seleccionado
condiciones previas Conozca la información del vuelo y elija el número de vuelo para enviar la instrucción
condición posterior Emite instrucciones al vuelo y el vuelo recibe instrucciones de la torre.
corriente elemental Tower envía instrucciones de vuelo

Tabla 3-6 Tabla de caso de uso de solicitud de vuelo de recepción

nombre del caso de uso Recibir solicitudes de vuelos
Breve descripción de las funciones La torre recibe una solicitud de despegue, aterrizaje o rodaje del vuelo
condiciones previas El vuelo hace una solicitud a la torre de control.
condición posterior Torre responde al vuelo
corriente elemental Tower recibe una solicitud para un vuelo designado

Tabla 3-7 Tabla de caso de uso de modificación de información de vuelo

nombre del caso de uso Instrucciones de Vuelo, Solicitar Enmiendas
Breve descripción de las funciones Modificar la orden de vuelo cuando la orden de vuelo se envía incorrectamente
condiciones previas Instrucciones de vuelo enviadas
condición posterior ninguno
corriente elemental Modificar operaciones de comando

Tabla 3-8 Obtener tabla de caso de uso de dinámica de vuelo

nombre del caso de uso Obtener el estado del vuelo
Breve descripción de las funciones Salida, Pendiente de salida, Aterrizado, Estado pendiente de aterrizaje del vuelo que recibe el vuelo especificado
condiciones previas Comentarios del capitán sobre el estado del vuelo
condición posterior Comandante envía instrucciones de vuelo
corriente elemental La torre de control obtiene la dinámica de feedback de vuelo

3.3 Análisis de la Demanda de la Terminal Capitán

3.3.1 Descripción de los requisitos de la terminal del capitán

Análisis de demanda por parte del capitán: primero, el capitán puede iniciar sesión para verificar la información del vuelo que está volando, enviar solicitudes de vuelo a la torre, recibir instrucciones de vuelo enviadas por la torre y actualizar y retroalimentar el estado del vuelo en tiempo real. Entonces el arreglo es el siguiente:

1. Iniciar sesión

  1. Consultar información de vuelos
  2. Recibir instrucciones de la torre
  3. Enviar solicitud de vuelo
  4. Modificar solicitud de vuelo
  5. Actualizar estado de vuelo

3.3.2 Tabla de casos de uso de terminal de capitán

Tabla 3-9 Tabla de casos de uso de inicio de sesión de Captain

nombre del caso de uso Inicio de sesión del capitán
Breve descripción de las funciones El capitán debe iniciar sesión en el sistema antes de volar
condiciones previas ninguno
condición posterior ninguno
corriente elemental El capitán ingresa el número y la contraseña y hace clic en el botón de inicio de sesión
Transmisión extendida Si el número de capitán no coincide con la contraseña, aparecerá un mensaje de error.

表3-10航班资料信息用例表

用例名称 航班资料信息
功能简述 系统显示此次航班资料信息
前置条件 机长登录
后置条件 发送航班请求
基本流 系统显示此次航班飞行区间、起飞和降落时间

表3-11发送航班请求用例表

用例名称 发送航班请求
功能简述 航班在待起飞或待降落时向塔台发送航班请求
前置条件 了解此次航班信息
后置条件 接收塔台指令
基本流 机长发送航班请求指令

表3-12接收塔台指令用例表

用例名称 接收塔台指令
功能简述 塔台对航班发送指令机长接收塔台指令
前置条件 塔台对指定航班发送指令
后置条件
基本流 机长接收塔台指令

表3-13发送航班请求用例表

用例名称 修改航班请求
功能简述 航班在请求信息出错时修改航班请求信息
前置条件 已发送航班请求
后置条件 接收塔台指令
基本流 机长对航班请求信息进行修改

表3-14更新航班状态用例表

用例名称 更新航班状态
功能简述 飞机在完成起飞或降落操作或准备完成起飞和降落操作时向塔台发送航班状态
前置条件
后置条件 塔台发送航班指令
基本流 机长反馈航班的实时状态

3.4机场航班起降与协调管理系统模块图

图3-3 功能模块图

3.5机场起降与协调管理系统E-R图

图3-4 E-R图

4 系统及功能设计

4.1 项目组成

4.1.1 数据库端

数据库端主要把地面指挥员、机长及其相关的各种信息存储在数据库表中,方便服务器对数据的增删改查,从而达到客户端对数据库信息的增删改查。这里用Mysql中的表来记录各种数据。

4.1.2 服务器端

服务器端与客户端交互,把客户端所传来的数据,请求相对应的操作,调用方法,连接数据库对数据库进行相对应地面指挥员及机长想对数据做出的增删改查,从而达到记录数据的效果。

4.1.3 客户端

客户端安装于机场塔台和航班的设备中,与用户直接交互,对于用户的操作向服务器端发出请求,等待服务器响应。服务器成功响应从而达到地面指挥员和机长想得到的信息及做出相应的操作。这里用eclipse中的浏览器代替。

4.2 数据库的分析与设计

数据库是软件进行信息管理的命门,数据库设计是否清晰、简介直接关系到系统开发和维护的成本。数据库分析包括概念结构设计、逻辑结构设计和物理结构设计。在此系统进行需求分析时已经分析并画出了数据库E-R图(概念结构设计),所以这里着重讨论数据库的逻辑结构设计和数据库表的分析和设计(物理结构设计)。

4.2.1 数据库逻辑结构设计

数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用的 DBMS产品所支持的数据模型相符合的逻辑结构。在进行数据库逻辑的设计时,要确认数据库的逻辑结构,还要保证数据库的完整性和安全性,明确指出数据记录由哪些表项组成,以及数据库数据的类型和取值范围。

在数据库逻辑结构设计中,由我们之前设计的机场航班起降与协调管理系统E-R图可以得出以下关系数据模型(关系中下划实线为主键,下画虚线为外键):

机长(机长编号,姓名,密码);

地面指挥(指挥员编号,姓名,密码);

机长客户端(机长编号);

地面指挥客户端(指挥员编号);

航班信息(航班编号,航班号,飞行区间,起降时间,航班状态,指挥员编号,机长编号);

指挥信息(编号,指令、请求编号,指令、请求名称,发出端,指令、请求内容,

航班编号,发布时间,指挥员编号,机长编号)。

4.2.2 数据库表的分析

根据对地面指挥员端和机长端的需求分析,首先必须登录才可以进行进一步操作,所以首先需要有指挥员表:t_User;机长表:t_Polit;还需要航班信息表t_Grade;在航班进行实时通信时,还需要航班请求和指令表:t_Standard,整理如下:

  1. 指挥员表:t_User
  2. 机长表:t_Polit
  3. 航班信息表:t_Grade
  4. 航班指挥信息表:t_Standrad

4.2.3 数据库表的设计

  1. 机长表的设计:t_Pilot包括机长编号PoliteId(主键)、机长姓名PoliteName、机长密码PolitePassword。
    表4-1 机长表
字段名 字段类型 是否可为空 字段含义 注释
PoliteId INT N 机长编号 主键
PoliteName VARCHAR2(20) N 机长姓名
PolitePassword VARCHAR2(20) N 机长密码
  1. 航班信息表:t_Grade包括航班编号gradeId(主键)、航班号gradeName、起降时间gradeDate、飞行区间gradeLine、航班状态gradeState。
    表4-2 航班信息表
字段名 字段类型 是否可为空 字段含义 注释
gradeId INT N 航班编号 主键
gradeName VARCHAR2(20) N 航班号
gradeLine VARCHAR2(100) N 飞行区间
gradeDate VARCHAR2(100) N 起降时间
gradeState VARCHAR(100) N 航班状态
  1. 航班指挥信息表:t_Standard包括编号;编号staId(主键);指令、请求编号staNo;指令、请求名称staName;指令、请求发出端sex;指令、请求内容staDesc;航班编号gradeId(外键);指令、请求发出时间staDate。
    表4-3 航班指挥信息表
字段名 字段类型 是否可为空 字段含义 注释
staId INT N 编号 主键
staNo VARCHAR2(20) N 指令、请求编号
staName VARCHAR2(20) N 指令、请求名称
sex VARCHAR2(10) N 发出端
staDesc VARCHAR2(300) N 指令、请求内容
gradeId INT N 航班编号 外键
staDate VARCHAR2(50) N 发布时间
  1. 指挥员表:t_User包括指挥员编号userId(主键)、指挥员姓名userName、指挥员密码userPassword。

表4-4 指挥员表

字段名 字段类型 是否可为空 字段含义 注释
userId INT N 指挥员编号 主键
userName VARCHAR2(20) N 指挥员姓名
userPassword VARCHAR2(20) N 指挥员密码

4.2.4 数据库表的关联

机场航班起降与协调管理系统程序共有四个数据库表,机长表t_Pilot和指挥员表t_User存储机长和指挥员的登录信息数据,不需要关联。而航班指挥信息需要指定是某一航班对应的指挥信息,所以航班信息表t_Grade和航班指挥信息表t_Standard需要建立主外键关联,如图所示:

图4-1 数据库关联图

4.3 项目流程图

本项目分为地面指挥人员端和机长端两个端口来进行描述。

1.地面指挥人员端在未登陆的情况下,不能进入系统主界面,只有在登录后才可以进入指挥员界面,对航班信息进行浏览;然后查看是否有飞机晚点航班信息需要修改、取消航班以及添加航班;之后获取指定航班动态,并发送与接收指令,直至航班离开机场管辖空域脱离管制。对待降落航班下达降落指令和接收航班请求,直至航班降落完成。

图4-2 用户端流程图

2.机长端在登录状态下,才可以进行机长端操作,机长首先查看航班信息,然后更新航班状态,对塔台发送请求并接收塔台指令,并实时更新航班状态,直至航班完成起飞或降落动作。

图4-3 机长端流程图

4.4 指挥员端功能设计

首先建立DynamicWebProject工程:CommandInfoManage;其次建立后台数据库链接和服务器连接,需要建立以下包:

数据库链接:com.java1234.dao;

工程模型:com.java1234model;

工具类:com.java1234.util;

服务器:com.java1234.web;

如图4-4所示

图4-4 指挥员服务器

需要建立与指挥员交会的客户端,如图4-5所示:

图4-5 指挥员客户端

4.5 机长端功能设计

首先建立DynamicWebProject工程:AcceptInfoManage;其次建立后台数据库链接和服务器连接,需要建立以下包:

数据库链接:com.java1234.dao;

工程模型:com.java1234model;

工具类:com.java1234.util;

服务器:com.java1234.web;

如图4-6所示

图4-6 机长系统服务器

需要建立与指挥员交会的客户端,如图4-7所示:

图4-7 机长系统客户端

5 项目环境的搭建

5.1 JDK的安装

5.1.1 JDK-7u15的安装

安装JDK-7u15,如图5-1所示:

图5-1 安装JDK-7u15

5.1.2 JDK环境变量的配置

配置JDK环境变量,如图5-2,图5-3,图5-4所示:

图5-2 配置JDK环境变量JAVA_HOME

图5-3 配置JDK环境变量CLASSPATH

图5-4 配置JDK环境变量Path

5.2 数据库的安装

5.2.1 数据库Mysql的安装与配置

mysql-essential-5.1.32-win32数据库的安装,如图5-5所示:

图5-5 mysql-essential-5.1.32-win32数据库的安装

mysql-essential-5.1.32-win32数据库的配置,如图5-6所示:

图5-6 mysql-essential-5.1.32-win32数据库的配置

5.2.2 SQLyog10.2的安装与配置

SQLyog10.2是32位Mysql数据库的图形界面直接解压就可以使用了,安装如图5-7所示:

图5-7 SQLyog10.2的安装

5.3 服务器端的安装

5.3.1eclipse LUNA的安装与配置

eclipse LUNA直接解压就可以使用,如图5-8所示:

图5-8 eclipse LUNA的安装

5.3.2 apache-tomcat-7.0.77的安装与配置

apache-tomcat-7.0.77的安装如图5-9所示:

图5-9 apache-tomcat-7.0.77的安装

apache-tomcat-7.0.77安装完成后需要在eclipse LUNA中配置tomcat服务器并启动运行,结果如图5-10所示:

图5-10 apache-tomcat-7.0.77运行结果

6 系统的实现

6.1登录功能的实现

6.1.1 指挥员登陆

打开软件,进入地面指挥登录界面,如图6-1所示:

图6-1 地面指挥登录界面

地面指挥员登录页面用户名为userName,密码为password,登录按钮为submit按钮,重置按钮为button按钮。

当点击登录时,服务器会进行用户名密码的验证,当用户名和密码为空时,显示用户名密码为空;当用户名密码错误时显示用户名密码错误。当验证正确时,跳转到index.jsp页面,运用到了数据传递的doget和dopost的方法。下面列出了doGet和doPost的主要方法,服务器端部分代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName=request.getParameter("userName");
String password=request.getParameter("password");
request.setAttribute("userName", userName);
request.setAttribute("password", password);
}
  1. 机长登录
    打开软件,出现机长登录界面,如图6-2所示:


图6-2 机长登录界面
机长登录页面用户名为userName,密码为password,登录按钮为submit按钮,重置按钮为button按钮。
当点击登录时,服务器会进行用户名密码的验证,当用户名和密码为空时,显示用户名密码为空、当用户名密码错误时显示用户名密码错误。当用户名密码验证正确时,跳转到index.jsp页面服务器端代码与地面指挥端服务器代码一致。

  1. 主界面的实现
    6.2.1 地面指挥端主界面的实现
    当登录成功后,进入地面指挥端主界面,主界面由功能菜单和含有两个分页的树组成主界面的功能,主界面由jquery-easyui实现。右上角可以读取当前登录的指挥员姓名和现在时间,左侧功能栏可以选择隐藏和显示。当点击树中相应的按钮时,触发服务器响应弹出对应窗口,窗口可以关闭。如图6-3所示:


图6-3 地面指挥系统主界面
左侧树中两个分页运用了jquery获取分页的值,其的跳转代码为:

$(function(){
//数据
var treeData=[{
text:"根",
children:[{
text:"航班信息管理",
attributes:{
url:"gradeInfoManage.jsp"
}
},{
text:"航班指挥信息管理",
attributes:{
url:"standardInfoManage.jsp"
}
}]
}];


右侧从登录页面获取地面指挥员的登录名,运用了jQuery语言,其代码为:

<div style="padding-top:10px;padding-rignt:20px;">当前用户:&nbsp;<font color="red" size="4">${currentUser.userName}</font></div>


若用户想不经过登录直接访问主页面,则是行不通的,因为页面中还加入了权限设置,防止跳过登录直接访问main页面,其代码为:

if(session.getAttribute("currentUser")==null){
response.sendRedirect("index.jsp");
return;
}


在网页中还加入了一个时间控件,其代码为:

function startTime()
{
var today=new Date();//定义日期对象
var yyyy = today.getFullYear();//通过日期对象的getFullYear()方法返回年
var MM = today.getMonth()+1;//通过日期对象的getMonth()方法返回年
var dd = today.getDate();//通过日期对象的getDate()方法返回年
var hh=today.getHours();//通过日期对象的getHours方法返回小时
var mm=today.getMinutes();//通过日期对象的getMinutes方法返回分钟
var ss=today.getSeconds();//通过日期对象的getSeconds方法返回秒
// 如果分钟或小时的值小于10,则在其值前加0,比如如果时间是下午3点20分9秒的话,则显示15:20:09
MM=checkTime(MM);
dd=checkTime(dd);
mm=checkTime(mm);
ss=checkTime(ss);
var day; //用于保存星期(getDay()方法得到星期编号)
if(today.getDay()==0) day = "星期日 "
if(today.getDay()==1) day = "星期一 "
if(today.getDay()==2) day = "星期二 "
if(today.getDay()==3) day = "星期三 "
if(today.getDay()==4) day = "星期四 "
if(today.getDay()==5) day = "星期五 "
if(today.getDay()==6) day = "星期六 "
document.getElementById('nowDateTimeSpan').innerHTML=yyyy+"-"+MM +"-"+ dd +" " + hh+":"+mm+":"+ss+" " + day;
setTimeout('startTime()',1000);//每一秒中重新加载startTime()方法
}
  1. 机长端主界面的实现
    当登录成功后,进入机长端主界面,主界面由功能菜单和含有两个分页的树组成主界面的功能,主界面由jquery-easyui实现。右上角可以读取当前登录的机长姓名和现在时间,左侧功能栏可以选择隐藏和显示。当点击树中相应的按钮时,触发服务器响应弹出对应窗口,窗口可以关闭,和地面指挥端功能相类似。如图6-4所示:


图6-4 机长系统客户端主界面

  1. 地面指挥管理功能的实现
    6.3.1 地面指挥端航班信息管理功能的实现
    点击地面指挥端中的航班信息管理按钮,弹出航班信息管理界面,界面可以关闭和刷新。航班可以进行搜索、添加、修改和删除等操作。若地面指挥人员想要查看指定信息的航班,那么输入航班名称即可搜索出对应的航班;若航班加出班次,则地面指挥人员可以点击添加添加航班信息,但是航班状态需要由机长进行填写;若航班班次取消,则点击删除按钮删除要取消的航班,若误点了已经起飞或者降落的航班的删除按钮,则弹出窗口航班正在运行,不能进行删除;若航班修改了架次,则点击修改按钮进行航班信息的修改。如图6-5所示


图6-5 航班信息管理
显示航班信息需要读取数据库,进行搜索操作时也需要读取数据库,其读取数据库的部分代码如下:

public ResultSet gradeList(Connection con,PageBean pageBean,Grade grade)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_grade");

PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
return pstmt.executeQuery();
}

public int gradeCount(Connection con,Grade grade)throws Exception{
StringBuffer sb=new StringBuffer("select count(*) as total from t_grade");
}


服务器端需要读取每一条数据的行和页,这里服务器端也运用了doget和dopost方法。
数据操作有添加功能、删除功能和修改功能,如图所示:


图6-6 添加航班信息


图6-7 修改航班信息


图6-8 删除航班信息
在增加、修改航班信息时,航班信息的每个信息都是必输入项,所以设置一个输入字符的验证,用jquery进行验证直接调用easyui语句:required="true"
在执行增加、删除和修改操作时,会在数据库中读取和写入信息以数据删除和添加为例,其代码为:

public int gradeDelete(Connection con,String delIds)throws Exception{
String sql="delete from t_grade where id in("+delIds+")";
PreparedStatement pstmt=con.prepareStatement(sql);
return pstmt.executeUpdate();
}

public int gradeAdd(Connection con,Grade grade)throws Exception{
String sql="insert into t_grade values(null,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, grade.getGradeName());
pstmt.setString(2, grade.getGradeDate());
pstmt.setString(3, grade.getGradeLine());
pstmt.setString(4, grade.getGradeState());
return pstmt.executeUpdate();
}


6.3.2 地面指挥端航班指挥信息管理功能的实现
从主页面点击航班指挥信息页面,打开航班指挥信息分页,如图6-9所示:


图6-9 航班指挥信息管理
航班指挥信息管理的主要功能是航班指令的发布、航班指令的修改和删除,还有不同的条件查询。我们这里提供了各种不同条件的航班指令信息查询方法方便航班指令信息的查看和管理。当收到航班发出的请求或者遇到情况时,地面指挥端点击发布指令进行指令的发布,在发布指令界面可以向任意一搜航班发送信息。当信息发送错误时,可以点击修改指令进行修改,或者点击删除指令重新对指令进行发布。如图:


图6-10 指令信息发布


图6-11修改指令信息


图6-12 删除指令信息
在显示航班指令信息和执行航班指令信息的操作时,都需要访问数据库或者将修改写入数据库,以指令信息的读取为例,则我们需要如下代码:

public ResultSet standardList(Connection con,PageBean pageBean,Standard standard)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_standard s,t_grade g where s.gradeId=g.id");

return pstmt.executeQuery();
}

public int standardCount(Connection con,Standard standard)throws Exception{
StringBuffer sb=new StringBuffer("select count(*) as total from t_standard s,t_grade g where s.gradeId=g.id");
PreparedStatement pstmt=con.prepareStatement(sb.toString());
ResultSet rs=pstmt.executeQuery();

}


在删除航班信息时,如果航班已经发出指令,则不能删除航班,这就涉及到数据库的关联操作:

public boolean getStandardByGradeId(Connection con,String gradeId)throws Exception{
String sql="select * from t_standard where gradeId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, gradeId);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
return true;
}else{
return false;
}
}
  1. 机长端功能的实现

6.4.1 机长端航班信息显示的实现

点击机长端中的航班信息查询按钮,弹出航班信息查询界面,界面可以关闭和刷新。可以查看此次航班的信息,并对航班现在的状态进行实时的更新。在机长想要查看自己所飞航班的信息时,点击下拉框,选择自己将要飞行的航班班次;若航班状态发生改变,则点击更新航班状态按钮对航班状态进行实时更新。如图6-13所示:

图6-13 航班信息查询

显示航班信息需要读取数据库,进行搜索操作时也需要读取数据库,其读取数据库的代码与地面指挥端的代码基本一致。

服务器端需要读取每一条数据的行和页,这里服务器端dopost和doget方法代码也和地面指挥端的代码基本一致。

对指定航班状态进行更新,如图所示:

图6-14 更新航班状态

在更新航班状态时,会在数据库中读取和写入信息,代码为:

public int gradeCount(Connection con,Grade grade)throws Exception{
StringBuffer sb=new StringBuffer("select count(*) as total from t_grade");
if(StringUtil.isNotEmpty(grade.getGradeName())){
sb.append(" and gradeName like '%"+grade.getGradeName()+"%'");
}
PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
ResultSet rs=pstmt.executeQuery();

}
public int gradeModify(Connection con,Grade grade)throws Exception{
String sql="update t_grade set gradeName=?,gradeDate=?,gradeLine=?,gradeState=? where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, grade.getGradeName());
pstmt.setString(2, grade.getGradeDate());
pstmt.setString(3, grade.getGradeLine());
pstmt.setString(4, grade.getGradeState());
pstmt.setInt(5, grade.getId());
return pstmt.executeUpdate();
}

6.4.2 地面指挥端航班指挥信息管理功能的实现

机长端航班指挥信息管理的主要功能是航班指令的发布、航班指令的修改和删除,还有不同的条件查询。我们这里提供了各种不同条件的航班指令信息查询方法方便航班指令信息的查看和管理。当收到塔台发出的请求或者遇到情况时,机长端点击发布指令进行请求指令的发布,在发布指令界面可以向塔台发送信息。当信息发送错误时,可以点击修改指令进行修改,或者点击删除指令重新对指令进行发布。如图6-15所示:

图6-15 航班指挥信息管理

航班指挥信息管理的主要功能是航班请求的发布、航班请求的修改和删除,还有不同的条件查询,如图:

图6-16 请求信息发布

图6-17修改请求信息

图6-12 删除请求信息

在显示航班指令信息和执行航班指令信息的操作时,都需要访问数据库或者将修改写入数据库,则我们需要如下代码来访问数据库:

public ResultSet standardList(Connection con,PageBean pageBean,Standard standard)throws Exception{
StringBuffer sb=new StringBuffer("select * from t_standard s,t_grade g where s.gradeId=g.id");
PreparedStatement pstmt=con.prepareStatement(sb.toString());
return pstmt.executeQuery();
}

public int standardCount(Connection con,Standard standard)throws Exception{
StringBuffer sb=new StringBuffer("select count(*) as total from t_standard s,t_grade g where s.gradeId=g.id");
PreparedStatement pstmt=con.prepareStatement(sb.toString());
ResultSet rs=pstmt.executeQuery();
}

7 系统的测试与维护

7.1 测试描述

在软件开发的生命周期中,软件测试是无处不在的,它是软件开发整个过程的非常重要的组成部分,软件完成的好坏就是由软件测试决定的。软件测试有静态测试和动态测试,所谓静态测试就是不需要去执行软件,而是直接用人脑的思维去评判软件的好坏;动态测试需要进行软件的运行,来检测软件的好坏。在软件的不同阶段也有着不同的软件测试程序,在软件初步开发阶段有单元测试,在软件开发中后期有集成测试和系统测试,最后在软件验收前有验收测试。从软件工程的算法角度分还有黑盒和白盒测试。

7.2 测试目的

1.确定该系统中的各数据信息和该测试的各个部件。

2.确定该系统能够很好的处理以下的几点功能:

地面指挥员端:

1.指挥员登录

2.航班信息的浏览

3.航班信息的操作

航班的删除

航班的添加

航班信息的修改

航班信息的搜索

4.指挥信息的操作

指挥信息的查询

指令的发布

指令的修改

指令的删除

机长端:

1.机长登录

2.航班信息的查询

3.航班指挥信息的操作

航班指挥信息查询

航班请求的发布

航班请求的删除

航班请求的修改

7.3 测试范围

1.单元测试,是指对软件开发中的最小可运行单元进行动态运行测试和静态测试,单元测试通常被用于测试在特定场景下所被测试的函数行为特征。

2.集成测试是单元测试的更高级阶段,它用来测试每个单元的协同配合情况,测试每个单元集成起来是否可以达到预期的效果。

3.系统测试是对系统整体在开发阶段进行的测试,他是测试所有集成模块所组成的完整系统的功能是否完善,是否与需求分析时确定的系统功能所吻合,是否应该对程序的某一部分进行最后的修改。

4.验收测试主要以用户测试为主,主要测试客户的满意度;或者是软件测试人员陪同客户进行程序的功能和客户满意度测评,是软件开发阶段的最后一个步骤,测试通过则系统就可以交付使用。

7.4 测试用例

表7-1 部分测试用例

功能点 测试用例描述 测试用例操作 预期结果 实际结果
地面指挥人员登录 输入用户名和密码,点击登录按钮 正确的用户名“myx”和密码“123456” 登录成功跳转至主界面 成功跳转至主界面
错误的用户名“myx”和密码“123123”或没有输入 错误处理:提示用户名密码错误或者用户名密码为空 错误处理:成功弹出提示用户名密码错误或者用户名密码为空。
机长登录 输入用户名和密码,点击登录按钮 正确的用户名“polit”和密码“123456” 登录成功跳转至主界面 成功跳转至主界面
错误的用户名“polit”和密码“123123”或没有输入 错误处理:提示用户名密码错误或者用户名密码为空 错误处理:成功弹出提示用户名密码错误或者用户名密码为空。
航班信息查询 输入航班名称,点击查询按钮 输入“MU0001”,点击查询按钮 系统显示查询的MU0001航班信息 系统成功显示MU0001航班信息
航班信息删除 点击删除按钮,点击删除按钮 选中要删除航班,点击删除按钮 系统显示删除成功 系统显示删除成功
未选中航班点击删除 系统显示请选择航班 系统显示请选择航班
选中已经下达指令的航班 系统显示该航班为运行航班,不能删除 系统显示该航班为运行航班,不能删除
航班信息添加 点击添加按钮,输入航班信息,点击添加航班 点击添加航班按钮,在弹出框中输入航班信息,点击确定 系统显示添加成功,并在航班信息栏中出现添加的信息 系统显示添加成功,并在航班信息栏中出现添加的信息
航班信息修改 点击修改按钮,输入需要修改的航班信息,点击修改航班信息 选择航班,点击修改按钮,在弹出框中输入航班信息,点击确定 系统显示修改成功,并在航班信息栏中出现修改后的信息 系统显示修改成功,并在航班信息栏中出现修改后的信息
未选中航班,点击修改按钮 弹出请选择航班 弹出请选择航班
航班指令信息查询 选择或输入航班查询条件,点击查询按钮 在指令名称中输入“请求起飞”,点击查询按钮 系统显示查询的所有发送了请求起飞的航班的指令 系统显示查询的所有发送了请求起飞的航班的指令
航班指令删除 点击删除按钮,点击删除按钮 选中要删除指令,点击删除按钮 系统显示删除成功 系统显示删除成功
未选中指令点击删除 系统显示请选择航班 系统显示请选择航班
航班指挥信息发布 点击发布按钮,输入航班指挥信息,点击确定 点击添加航班指挥信息按钮,在弹出框中输入航班信息,点击确定 系统显示发布成功,并在航班指挥信息栏中出现添加的指令 系统显示发布成功,并在航班指挥信息栏中出现添加的指令
航班指挥信息修改 点击修改按钮,输入需要修改的航班指挥信息,点击修改 选择航班指令,点击修改按钮,在弹出框中输入航班指挥信息,点击确定 系统显示修改成功,并在航班指令信息栏中出现修改后的信息 系统显示修改成功,并在航班指令信息栏中出现修改后的信息
未选中航班,点击修改按钮 弹出请选择航班指令 弹出请选择航班指令

7.5 测试结果分析

本基于JAVA的机场航班起降与协调管理系统,在所有的按钮的测试、输入框和其他功能组建的测试中,顺利实现功能,并且功能相对完善,经过各项测试,本系统基本完成了系统的开发目的,通过了单元测试、集成测试、系统测试及验收测试,基本达到了测试的要求,完成测试,软件可以进行验收。

8 结束语

经过为期两个月的基于JAVA的机场航班起降与协调管理系统的设计与实现,从技术上看,我对Java语言书写服务器和数据库连接的设计有一个更全面的了解,巩固了所学的Java的知识,对Java中出现的一些问题有了更加深刻的理解和相对应的解决办法,对整体架构、编程思想有了更加深刻的理解,对控件的熟练运用也有了一定提高。我通过基于JAVA的机场航班起降与协调管理系统的实现,学会了一种新的前台设计框架,那就是现在比较好用的jquery-easyui。我也明白了要设计一个功能体验较好的程序,首先需要对它做出全面的分析,从需求到设计每一步都要有一个整体框架,还需要对细节进行处理,这样才能保证下一步的顺利进行。在我的设计中就出现了对应的问题: 在软件设计中,没有考虑到绕过登录系统也可以通过网页和篡改代码进行主页面的访问,于是我增加了用户名和密码的返回值验证来进行主页面的权限验证。我没有考虑到在删除时,发出指令的航班不能进行删除,于是我设置了数据库的连带删除功能。

此次毕业设计,是学校对我们四年来学习成果的一次检验,基于JAVA的机场航班起降与协调管理系统的设计与实现基本上自己在大学生活中学习的大部分知识都融入了进去,但是还不够,在许多方面还没有考虑全面,相信自己在进入工作中会更加努力,做出更加完美、用户体验更好的系统。


参考文献

[1]周雪芹. 基于java的软件开发全过程实战[M]. 北京:科学出版社,2016.

[2]李恩临.基于Java的面向对象开发技术[M].北京:中国财富出版社,2016.

[3]郭卫.机场航班运作管理信息系统设计与应用 [J]. 计算机工程, 2005,(13):3.

[4]及燕丽,彭小卫,宋贤群. 一种基于UML类图的关系数据库表设计方法[A]. 2008.

[5]于凤波.机场航班信息管理系统的设计[J].民航科技,2004,(05):2.

[6]罗峥等. 机场航班信息显示系统的设计与实现[D]. 北京:北京邮电大学,2006.

[7]唐远新等.Oracle数据库实用教程[M].北京:高等教育出版社,2005..

[8]李爱萍.系统分析与设计[M].北京:人民邮电出版社,2015.

[9]Wigglesworth.Java programming[M].Course Technology,1999.

[10]James Wightman. Pro SQL Server 2005 Integration Services[B]. Apress, 2008

[11]Aart van Harten .Intercontinental airline flight schedule design[C]. Scientific and Technical Documents Publishing House,1998.


致 谢

在论文完成之际,首先感谢校内指导老师对我的帮助,这个过程中,两位老师给了很大的帮助,他们丰富的知识和敏捷的思维都给我留下极其深刻的印象,论文和毕业设计过程中,我碰到很多这样或那样的小问题,他们都帮助我解决了,同时,很多同学也给予了我很大的鼓励,感谢他们。

最后借此之际,我向我的两位指导老师和各位同学们表示深切的感谢!


外文原文

Java and the Internet

If Java is, in fact, yet another computer programming language, you may question why it is so important and why it is being promoted as a revolutionary step in computer programming. The answer isn’t immediately obvious if you’re coming from a traditional programming perspective. Although Java is very useful for solving traditional stand-alone programming problems, it is also important because it will solve programming problems on the World Wide Web.

  1. Client-side programming

The Web’s initial server-browser design provided for interactive content, but the interactivity was completely provided by the server. The server produced static pages for the client browser, which would simply interpret and display them. Basic HTML contains simple mechanisms for data gathering: text-entry boxes, check boxes, radio boxes, lists and drop-down lists, as well as a button that can only be programmed to reset the data on the form or “submit” the data on the form back to the server. This submission passes through the Common Gateway Interface (CGI) provided on all Web servers. The text within the submission tells CGI what to do with it. The most common action is to run a program located on the server in a directory that’s typically called “cgi-bin.” (If you watch the address window at the top of your browser when you push a button on a Web page, you can sometimes see “cgi-bin” within all the gobbledygook there.) These programs can be written in most languages. Perl is a common choice because it is designed for text manipulation and is interpreted, so it can be installed on any server regardless of processor or operating system.

Many powerful Web sites today are built strictly on CGI, and you can in fact do nearly anything with it. However, Web sites built on CGI programs can rapidly become overly complicated to maintain, and there is also the problem of response time. The response of a CGI program depends on how much data must be sent, as well as the load on both the server and the Internet. (On top of this, starting a CGI program tends to be slow.) The initial designers of the Web did not foresee how rapidly this bandwidth would be exhausted for the kinds of applications people developed. For example, any sort of dynamic graphing is nearly impossible to perform with consistency because a GIF file must be created and moved from the server to the client for each version of the graph. And you’ve no doubt had direct experience with something as simple as validating the data on an input form. You press the submit button on a page; the data is shipped back to the server; the server starts a CGI program that discovers an error, formats an HTML page informing you of the error, and then sends the page back to you; you must then back up a page and try again. Not only is this slow, it’s inelegant.

The solution is client-side programming. Most machines that run Web browsers are powerful engines capable of doing vast work, and with the original static HTML approach they are sitting there, just idly waiting for the server to dish up the next page. Client-side programming means that the Web browser is harnessed to do whatever work it can, and the result for the user is a much speedier and more interactive experience at your Web site.

The problem with discussions of client-side programming is that they aren’t very different from discussions of programming in general. The parameters are almost the same, but the platform is different: a Web browser is like a limited operating system. In the end, you must still program, and this accounts for the dizzying array of problems and solutions produced by client-side programming. The rest of this section provides an overview of the issues and approaches in client-side programming.

2.Plug-ins

One of the most significant steps forward in client-side programming is the development of the plug-in. This is a way for a programmer to add new functionality to the browser by downloading a piece of code that plugs itself into the appropriate spot in the browser. It tells the browser “from now on you can perform this new activity.” (You need to download the plug-in only once.) Some fast and powerful behavior is added to browsers via plug-ins, but writing a plug-in is not a trivial task, and isn’t something you’d want to do as part of the process of building a particular site. The value of the plug-in for client-side programming is that it allows an expert programmer to develop a new language and add that language to a browser without the permission of the browser manufacturer. Thus, plug-ins provide a “back door” that allows the creation of new client-side programming languages (although not all languages are implemented as plug-ins).

3.Scripting languages

Plug-ins resulted in an explosion of scripting languages. With a scripting language you embed the source code for your client-side program directly into the HTML page, and the plug-in that interprets that language is automatically activated while the HTML page is being displayed. Scripting languages tend to be reasonably easy to understand and, because they are simply text that is part of an HTML page, they load very quickly as part of the single server hit required to procure that page. The trade-off is that your code is exposed for everyone to see (and steal). Generally, however, you aren’t doing amazingly sophisticated things with scripting languages so this is not too much of a hardship.

This points out that the scripting languages used inside Web browsers are really intended to solve specific types of problems, primarily the creation of richer and more interactive graphical user interfaces (GUIs). However, a scripting language might solve 80 percent of the problems encountered in client-side programming. Your problems might very well fit completely within that 80 percent, and since scripting languages can allow easier and faster development, you should probably consider a scripting language before looking at a more involved solution such as Java or ActiveX programming.

The most commonly discussed browser scripting languages are JavaScript (which has nothing to do with Java; it’s named that way just to grab some of Java’s marketing momentum), VBScript (which looks like Visual Basic), and Tcl/Tk, which comes from the popular cross-platform GUI-building language. There are others out there, and no doubt more in development.

JavaScript is probably the most commonly supported. It comes built into both Netscape Navigator and the Microsoft Internet Explorer (IE). In addition, there are probably more JavaScript books available than there are for the other browser languages, and some tools automatically create pages using JavaScript. However, if you’re already fluent in Visual Basic or Tcl/Tk, you’ll be more productive using those scripting languages rather than learning a new one. (You’ll have your hands full dealing with the Web issues already.)

4.Java

If a scripting language can solve 80 percent of the client-side programming problems, what about the other 20 percent—the “really hard stuff?” The most popular solution today is Java. Not only is it a powerful programming language built to be secure, cross-platform, and international, but Java is being continually extended to provide language features and libraries that elegantly handle problems that are difficult in traditional programming languages, such as multithreading, database access, network programming, and distributed computing. Java allows client-side programming via the applet.

An applet is a mini-program that will run only under a Web browser. The applet is downloaded automatically as part of a Web page (just as, for example, a graphic is automatically downloaded). When the applet is activated it executes a program. This is part of its beauty—it provides you with a way to automatically distribute the client software from the server at the time the user needs the client software, and no sooner. The user gets the latest version of the client software without fail and without difficult reinstallation. Because of the way Java is designed, the programmer needs to create only a single program, and that program automatically works with all computers that have browsers with built-in Java interpreters. (This safely includes the vast majority of machines.) Since Java is a full-fledged programming language, you can do as much work as possible on the client before and after making requests of the server. For example, you won’t need to send a request form across the Internet to discover that you’ve gotten a date or some other parameter wrong, and your client computer can quickly do the work of plotting data instead of waiting for the server to make a plot and ship a graphic image back to you. Not only do you get the immediate win of speed and responsiveness, but the general network traffic and load on servers can be reduced, preventing the entire Internet from slowing down.

One advantage a Java applet has over a scripted program is that it’s in compiled form, so the source code isn’t available to the client. On the other hand, a Java applet can be decompiled without too much trouble, but hiding your code is often not an important issue. Two other factors can be important. As you will see later in this book, a compiled Java applet can comprise many modules and take multiple server “hits” (accesses) to download. (In Java 1.1 and higher this is minimized by Java archives, called JAR files, that allow all the required modules to be packaged together and compressed for a single download.) A scripted program will just be integrated into the Web page as part of its text (and will generally be smaller and reduce server hits). This could be important to the responsiveness of your Web site. Another factor is the all-important learning curve. Regardless of what you’ve heard, Java is not a trivial language to learn. If you’re a Visual Basic programmer, moving to VBScript will be your fastest solution, and since it will probably solve most typical client/server problems you might be hard pressed to justify learning Java. If you’re experienced with a scripting language you will certainly benefit from looking at JavaScript or VBScript before committing to Java, since they might fit your needs handily and you’ll be more productive sooner.to run its applets withi

5.ActiveX

To some degree, the competitor to Java is Microsoft’s ActiveX, although it takes a completely different approach. ActiveX was originally a Windows-only solution, although it is now being developed via an independent consortium to become cross-platform. Effectively, ActiveX says “if your program connects to its environment just so, it can be dropped into a Web page and run under a browser that supports ActiveX.” (IE directly supports ActiveX and Netscape does so using a plug-in.) Thus, ActiveX does not constrain you to a particular language. If, for example, you’re already an experienced Windows programmer using a language such as C++, Visual Basic, or Borland’s Delphi, you can create ActiveX components with almost no changes to your programming knowledge. ActiveX also provides a path for the use of legacy code in your Web pages.

6.Security

Automatically downloading and running programs across the Internet can sound like a virus-builder’s dream. ActiveX especially brings up the thorny issue of security in client-side programming. If you click on a Web site, you might automatically download any number of things along with the HTML page: GIF files, script code, compiled Java code, and ActiveX components. Some of these are benign; GIF files can’t do any harm, and scripting languages are generally limited in what they can do. Java was also designed to run its applets within a “sandbox” of safety, which prevents it from writing to disk or accessing memory outside the sandbox.

ActiveX is at the opposite end of the spectrum. Programming with ActiveX is like programming Windows—you can do anything you want. So if you click on a page that downloads an ActiveX component, that component might cause damage to the files on your disk. Of course, programs that you load onto your computer that are not restricted to running inside a Web browser can do the same thing. Viruses downloaded from Bulletin-Board Systems (BBSs) have long been a problem, but the speed of the Internet amplifies the difficulty.

The solution seems to be “digital signatures,” whereby code is verified to show who the author is. This is based on the idea that a virus works because its creator can be anonymous, so if you remove the anonymity individuals will be forced to be responsible for their actions. This seems like a good plan because it allows programs to be much more functional, and I suspect it will eliminate malicious mischief. If, however, a program has an unintentional destructive bug it will still cause problems.

The Java approach is to prevent these problems from occurring, via the sandbox. The Java interpreter that lives on your local Web browser examines the applet for any untoward instructions as the applet is being loaded. In particular, the applet cannot write files to disk or erase files (one of the mainstays of viruses). Applets are generally considered to be safe, and since this is essential for reliable client/server systems, any bugs in the Java language that allow viruses are rapidly repaired. (It’s worth noting that the browser software actually enforces these security restrictions, and some browsers allow you to select different security levels to provide varying degrees of access to your system.)

You might be skeptical of this rather draconian restriction against writing files to your local disk. For example, you may want to build a local database or save data for later use offline. The initial vision seemed to be that eventually everyone would get online to do anything important, but that was soon seen to be impractical (although low-cost “Internet appliances” might someday satisfy the needs of a significant segment of users). The solution is the “signed applet” that uses public-key encryption to verify that an applet does indeed come from where it claims it does. A signed applet can still trash your disk, but the theory is that since you can now hold the applet creator accountable they won’t do vicious things. Java provides a framework for digital signatures so that you will eventually be able to allow an applet to step outside the sandbox if necessary.

Digital signatures have missed an important issue, which is the speed that people move around on the Internet. If you download a buggy program and it does something untoward, how long will it be before you discover the damage? It could be days or even weeks. By then, how will you track down the program that’s done it? And what good will it do you at that point?

7.Internet vs. intranet

The Web is the most general solution to the client/server problem, so it makes sense that you can use the same technology to solve a subset of the problem, in particular the classic client/server problem within a company. With traditional client/server approaches you have the problem of multiple types of client computers, as well as the difficulty of installing new client software, both of which are handily solved with Web browsers and client-side programming. When Web technology is used for an information network that is restricted to a particular company, it is referred to as an intranet. Intranets provide much greater security than the Internet, since you can physically control access to the servers within your company. In terms of training, it seems that once people understand the general concept of a browser it’s much easier for them to deal with differences in the way pages and applets look, so the learning curve for new kinds of systems seems to be reduced.

The security problem brings us to one of the divisions that seems to be automatically forming in the world of client-side programming. If your program is running on the Internet, you don’t know what platform it will be working under, and you want to be extra careful that you don’t disseminate buggy code. You need something cross-platform and secure, like a scripting language or Java.

If you’re running on an intranet, you might have a different set of constraints. It’s not uncommon that your machines could all be Intel/Windows platforms. On an intranet, you’re responsible for the quality of your own code and can repair bugs when they’re discovered. In addition, you might already have a body of legacy code that you’ve been using in a more traditional client/server approach, whereby you must physically install client programs every time you do an upgrade. The time wasted in installing upgrades is the most compelling reason to move to browsers, because upgrades are invisible and automatic. If you are involved in such an intranet, the most sensible approach to take is the shortest path that allows you to use your existing code base, rather than trying to recode your programs in a new language.

When faced with this bewildering array of solutions to the client-side programming problem, the best plan of attack is a cost-benefit analysis. Consider the constraints of your problem and what would be the shortest path to your solution. Since client-side programming is still programming, it’s always a good idea to take the fastest development approach for your particular situation. This is an aggressive stance to prepare for inevitable encounters with the problems of program development.

8.Server-side programming

This whole discussion has ignored the issue of server-side programming. What happens when you make a request of a server? Most of the time the request is simply “send me this file.” Your browser then interprets the file in some appropriate fashion: as an HTML page, a graphic image, a Java applet, a script program, etc. A more complicated request to a server generally involves a database transaction. A common scenario involves a request for a complex database search, which the server then formats into an HTML page and sends to you as the result. (Of course, if the client has more intelligence via Java or a scripting language, the raw data can be sent and formatted at the client end, which will be faster and less load on the server.) Or you might want to register your name in a database when you join a group or place an order, which will involve changes to that database. These database requests must be processed via some code on the server side, which is generally referred to as server-side programming. Traditionally, server-side programming has been performed using Perl and CGI scripts, but more sophisticated systems have been appearing. These include Java-based Web servers that allow you to perform all your server-side programming in Java by writing what are called servlets. Servlets and their offspring, JSPs, are two of the most compelling reasons that companies who develop Web sites are moving to Java, especially because they eliminate the problems of dealing with differently abled browsers.

9. separate arena: applications

Much of the brouhaha over Java has been over applets. Java is actually a general-purpose programming language that can solve any type of problem—at least in theory. And as pointed out previously, there might be more effective ways to solve most client/server problems. When you move out of the applet arena (and simultaneously release the restrictions, such as the one against writing to disk) you enter the world of general-purpose applications that run standalone, without a Web browser, just like any ordinary program does. Here, Java’s strength is not only in its portability, but also its programmability. As you’ll see throughout this book, Java has many features that allow you to create robust programs in a shorter period than with previous programming languages.

Be aware that this is a mixed blessing. You pay for the improvements through slower execution speed (although there is significant work going on in this area—JDK 1.3, in particular, introduces the so-called “hotspot” performance improvements). Like any language, Java has built-in limitations that might make it inappropriate to solve certain types of programming problems. Java is a rapidly evolving language, however, and as each new release comes out it becomes more and more attractive for solving larger sets of problems.

中文翻译

Java和因特网

既然Java不过另一种类型的程序设计语言,大家可能会奇怪它为什么值得如此重视,为什么还有这么多的人认为它是计算机程序设计的一个里程碑呢?如果您来自一个传统的程序设计背景,那么答案在刚开始的时候并不是很明显。Java除了可解决传统的程序设计问题以外,还能解决World Wide Web(万维网)上的编程问题。

1.客户端编程

Web最初采用的“服务器-浏览器”方案可提供交互式内容,但这种交互能力完全由服务器提供,为服务器和因特网带来了不小的负担。服务器一般为客户浏览器产生静态网页,由后者简单地解释并显示出来。基本HTML语言提供了简单的数据收集机制:文字输入框、复选框、单选钮、列表以及下拉列表等,另外还有一个按钮,只能由程序规定重新设置表单中的数据,以便回传给服务器。用户提交的信息通过所有Web服务器均能支持的“通用网关接口”(CGI)回传到服务器。包含在提交数据中的文字指示CGI该如何操作。最常见的行动是运行位于服务器的一个程序。那个程序一般保存在一个名为“cgi-bin”的目录中(按下Web页内的一个按钮时,请注意一下浏览器顶部的地址窗,经常都能发现“cgi-bin”的字样)。大多数语言都可用来编制这些程序,但其中最常见的是Perl。这是由于Perl是专为文字的处理及解释而设计的,所以能在任何服务器上安装和使用,无论采用的处理器或操作系统是什么。

2. 插件

朝客户端编程迈进的时候,最重要的一个问题就是插件的设计。利用插件,程序员可以方便地为浏览器添加新功能,用户只需下载一些代码,把它们“插入”浏览器的适当位置即可。这些代码的作用是告诉浏览器“从现在开始,你可以进行这些新活动了”(仅需下载这些插入一次)。有些快速和功能强大的行为是通过插件添加到浏览器的。但插件的编写并不是一件简单的任务。在我们构建一个特定的站点时,可能并不希望涉及这方面的工作。对客户端程序设计来说,插件的价值在于它允许专业程序员设计出一种新的语言,并将那种语言添加到浏览器,同时不必经过浏览器原创者的许可。由此可以看出,插件实际是浏览器的一个“后门”,允许创建新的客户端程序设计语言(尽管并非所有语言都是作为插件实现的)。

3. 脚本编制语言

插件造成了脚本编制语言的爆炸性增长。通过这种脚本语言,可将用于自己客户端程序的源码直接插入HTML页,而对那种语言进行解释的插件会在HTML页显示的时候自动激活。脚本语言一般都倾向于尽量简化,易于理解。而且由于它们是从属于HTML页的一些简单正文,所以只需向服务器发出对那个页的一次请求,即可非常快地载入。缺点是我们的代码全部暴露在人们面前。另一方面,由于通常不用脚本编制语言做过分复杂的事情,所以这个问题暂且可以放在一边。

脚本语言真正面向的是特定类型问题的解决,其中主要涉及如何创建更丰富、更具有互动能力的图形用户界面(GUI)。然而,脚本语言也许能解决客户端编程中80%的问题。你碰到的问题可能完全就在那80%里面。而且由于脚本编制语言的宗旨是尽可能地简化与快速,所以在考虑其他更复杂的方案之前(如Java及ActiveX),首先应想一下脚本语言是否可行。

目前讨论得最多的脚本编制语言包括JavaScript(它与Java没有任何关系;之所以叫那个名字,完全是一种市场策略)、VBScript(同Visual Basic很相似)以及Tcl/Tk(来源于流行的跨平台GUI构造语言)。当然还有其他许多语言,也有许多正在开发中。

JavaScript也许是日常用的,它得到的支持也最全面。无论NetscapeNavigator,Microsoft Internet Explorer,还是Opera,目前都提供了对JavaScript的支持。除此以外,市面上讲述JavaScript的书籍也要比讲述其他语言的书多得多。有些工具还能利用JavaScript自动产生网页。当然,如果你已经有Visual Basic或者Tcl/Tk的深厚功底,当然用它们要简单得多,起码可以避免学习新语言的烦恼(解决Web方面的问题就已经够让人头痛了)。

4. Java

如果说一种脚本编制语言能解决80%的客户端程序设计问题,那么剩下的20%又该怎么办呢?它们属于一些高难度的问题吗?目前最流行的方案就是Java。它不仅是一种功能强大、高度安全、可以跨平台使用以及国际通用的程序设计语言,也是一种具有旺盛生命力的语言。对Java的扩展是不断进行的,提供的语言特性和库能够很好地解决传统语言不能解决的问题,比如多线程操作、数据库访问、连网程序设计以及分布式计算等等。Java通过“程序片”(Applet)巧妙地解决了客户端编程的问题。

程序片(或“小应用程序”)是一种非常小的程序,只能在Web浏览器中运行。作为Web页的一部分,程序片代码会自动下载回来(这和网页中的图片差不多)。激活程序片后,它会执行一个程序。程序片的一个优点体现在:通过程序片,一旦用户需要客户软件,软件就可从服务器自动下载回来。它们能自动取得客户软件的最新版本,不会出错,也没有重新安装的麻烦。由于Java的设计原理,程序员只需要创建程序的一个版本,那个程序能在几乎所有计算机以及安装了Java解释器的浏览器中运行。由于Java是一种全功能的编程语言,所以在向服务器发出一个请求之前,我们能先在客户端做完尽可能多的工作。例如,再也不必通过因特网传送一个请求表单,再由服务器确定其中是否存在一个拼写或者其他参数错误。大多数数据校验工作均可在客户端完成,没有必要坐在计算机前面焦急地等待服务器的响应。这样一来,不仅速度和响应的灵敏度得到了极大的提高,对网络和服务器造成的负担也可以明显减轻,这对保障因特网的畅通是至关重要的。
与脚本程序相比,Java程序片的另一个优点是它采用编译好的形式,所以客户端看不到源码。当然在另一方面,反编译Java程序片也并不是件难事,而且代码的隐藏一般并不是个重要的问题。大家要注意另外两个重要的问题。正如本书以前会讲到的那样,编译好的Java程序片可能包含了许多模块,所以要多次“命中”(访问)服务器以便下载(在Java 1.1中,这个问题得到了有效的改善——利用Java压缩档,即JAR文件——它允许设计者将所有必要的模块都封装到一起,供用户统一下载)。在另一方面,脚本程序是作为Web页正文的一部分集成到Web页内的。这种程序一般都非常小,可有效减少对服务器的点击数。另一个因素是学习方面的问题。不管你平时听别人怎么说,Java都不是一种十分容易便可学会的语言。如果你以前是一名Visual Basic程序员,那么转向VBScript会是一种最快捷的方案。由于VBScript可以解决大多数典型的客户机/服务器问题,所以一旦上手,就很难下定决心再去学习Java。如果对脚本编制语言比较熟,那么在转向Java之前,建议先熟悉一下JavaScript或者VBScript,因为它们可能已经能够满足你的需要,不必经历学习Java的艰苦过程。

5. ActiveX

在某种程度上,Java的一个有力竞争对手应该是微软的ActiveX,尽管它采用的是完全不同的一套实现机制。ActiveX最早是一种纯Windows的方案。经过一家独立的专业协会的努力,ActiveX现在已具备了跨平台使用的能力。实际上,ActiveX的意思是“假如你的程序同它的工作环境正常连接,它就能进入Web页,并在支持ActiveX的浏览器中运行”(IE固化了对ActiveX的支持,而Netscape需要一个插件)。所以,ActiveX并没有限制我们使用一种特定的语言。比如,假设我们已经是一名有经验的Windows程序员,能熟练地使用像C++、Visual Basic或者Borland Delphi那样的语言,就能几乎不加任何学习地创建出ActiveX组件。事实上,ActiveX是在我们的Web页中使用“历史遗留”代码的最佳途径。

6. 安全

自动下载和通过因特网运行程序听起来就像是一个病毒制造者的梦想。在客户端的编程中,ActiveX带来了最让人头痛的安全问题。点击一个Web站点的时候,可能会随同HTML网页传回任何数量的东西:GIF文件、脚本代码、编译好的Java代码以及ActiveX组件。有些是无害的;GIF文件不会对我们造成任何危害,而脚本编制语言通常在自己可做的事情上有着很大的限制。Java也设计成在一个安全“沙箱”里在它的程序片中运行,这样可防止操作位于沙箱以外的磁盘或者内存区域。

ActiveX是所有这些里面最让人担心的。用ActiveX编写程序就像编制Windows应用程序——可以做自己想做的任何事情。下载回一个ActiveX组件后,它完全可能对我们磁盘上的文件造成破坏。当然,对那些下载回来并不限于在Web浏览器内部运行的程序,它们同样也可能破坏我们的系统。从BBS下载回来的病毒一直是个大问题,但因特网的速度使得这个问题变得更加复杂。
目前解决的办法是“数字签名”,代码会得到权威机构的验证,显示出它的作者是谁。这一机制的基础是认为病毒之所以会传播,是由于它的编制者匿名的缘故。所以假如去掉了匿名的因素,所有设计者都不得不为它们的行为负责。这似乎是一个很好的主意,因为它使程序显得更加正规。但我对它能消除恶意因素持怀疑态度,因为假如一个程序便含有Bug,那么同样会造成问题。

Java通过“沙箱”来防止这些问题的发生。Java解释器内嵌于我们本地的Web浏览器中,在程序片装载时会检查所有有嫌疑的指令。特别地,程序片根本没有权力将文件写进磁盘,或者删除文件(这是病毒最喜欢做的事情之一)。我们通常认为程序片是安全的。而且由于安全对于营建一套可靠的客户机/服务器系统至关重要,所以会给病毒留下漏洞的所有错误都能很快得到修复(浏览器软件实际需要强行遵守这些安全规则;而有些浏览器则允许我们选择不同的安全级别,防止对系统不同程度的访问)。

大家或许会怀疑这种限制是否会妨碍我们将文件写到本地磁盘。比如,我们有时需要构建一个本地数据库,或将数据保存下来,以便日后离线使用。最早的版本似乎每个人都能在线做任何敏感的事情,但这很快就变得非常不现实(尽管低价“互联网工具”有一天可能会满足大多数用户的需要)。解决的方案是“签了名的程序片”,它用公共密钥加密算法验证程序片确实来自它所声称的地方。当然在通过验证后,签了名的一个程序片仍然可以开始清除你的磁盘。但从理论上说,既然现在能够找到创建人“算帐”,他们一般不会干这种蠢事。Java 1.1为数字签名提供了一个框架,在必要时,可让一个程序片“走”到沙箱的外面来。

数字签名遗漏了一个重要的问题,那就是人们在因特网上移动的速度。如下载回一个错误百出的程序,而它很不幸地真的干了某些蠢事,需要多久的时间才能发觉这一点呢?这也许是几天,也可能几周之后。发现了之后,又如何追踪当初肇事的程序呢(以及它当时的责任有多大)?

7. 因特网和内联网

Web是解决客户机/服务器问题的一种常用方案,所以最好能用相同的技术解决此类问题的一些“子集”,特别是公司内部的传统客户机/服务器问题。对于传统的客户机/服务器模式,我们面临的问题是拥有多种不同类型的客户计算机,而且很难安装新的客户软件。但通过Web浏览器和客户端编程,这两类问题都可得到很好的解决。若一个信息网络局限于一家特定的公司,那么在将Web技术应用于它之后,即可称其为“内联网”(Intranet),以示与国际性的“因特网”(Internet)有别。内联网提供了比因特网更高的安全级别,因为可以物理性地控制对公司内部服务器的使用。说到培训,一般只要人们理解了浏览器的常规概念,就可以非常轻松地掌握网页和程序片之间的差异,所以学习新型系统的开销会大幅度减少。

安全问题将我们引入客户端编程领域一个似乎是自动形成的分支。若程序是在因特网上运行,由于无从知晓它会在什么平台上运行,所以编程时要特别留意,防范可能出现的编程错误。需作一些跨平台处理,以及适当的安全防范,比如采用某种脚本语言或者Java。

但假如在内联网中运行,面临的一些制约因素就会发生变化。全部机器均为Intel/Windows平台是件很平常的事情。在内联网中,需要对自己代码的质量负责。而且一旦发现错误,就可以马上改正。除此以外,可能已经有了一些“历史遗留”的代码,并用较传统的客户机/服务器方式使用那些代码。但在进行升级时,每次都要物理性地安装一道客户程序。浪费在升级安装上的时间是转移到浏览器的一项重要原因。使用了浏览器后,升级就变得易如反掌,而且整个过程是透明和自动进行的。如果真的是牵涉到这样的一个内联网中,最明智的方法是采用ActiveX,而非试图采用一种新的语言来改写程序代码。

面临客户端编程问题令人困惑的一系列解决方案时,最好的方案是先做一次投资/回报分析。请总结出问题的全部制约因素,以及什么才是最快的方案。由于客户端程序设计仍然要编程,所以无论如何都该针对自己的特定情况采取最好的开发途径。这是准备面对程序开发中一些不可避免的问题时,我们可以做出的最佳姿态。

8服务器端编程

我们的整个讨论都忽略了服务器端编程的问题。如果向服务器发出一个请求,会发生什么事情?大多数时候的请求都是很简单的一个“把这个文件发给我”。浏览器随后会按适当的形式解释这个文件:作为HTML页、一幅图、一个Java程序片、一个脚本程序等等。向服务器发出的较复杂的请求通常涉及到对一个数据库进行操作(事务处理)。其中最常见的就是发出一个数据库检索命令,得到结果后,服务器会把它格式化成HTML页,并作为结果传回来(当然,假如客户通过Java或者某种脚本语言具有了更高的智能,那么原始数据就能在客户端发送和格式化;这样做速度可以更快,也能减轻服务器的负担)。另外,有时需要在数据库中注册自己的名字(比如加入一个组时),或者向服务器发出一份订单,这就涉及到对那个数据库的修改。这类服务器请求必须通过服务器端的一些代码进行,我们称其为“服务器端的编程”。在传统意义上,服务器端编程是用Perl和CGI脚本进行的,但更复杂的系统已经出现。其中包括基于Java的Web服务器,它允许我们用Java进行所有服务器端编程,写出的程序就叫做“小服务程序”(Servlet)。

9.一个独立的领域:应用程序

与Java有关的大多数争论都是与程序片有关的。Java实际是一种常规用途的程序设计语言,可解决任何类型的问题,至少理论上如此。而且正如前面指出的,可以用更有效的方式来解决大多数客户机/服务器问题。如果将视线从程序片身上转开(同时放宽一些限制,比如禁止写盘等),就进入了常规用途的应用程序的广阔领域。这种应用程序可独立运行,毋需浏览器,就象普通的执行程序那样。在这儿,Java的特色并不仅仅反应在它的移植能力,也反映在编程本身上。就像贯穿全书都会讲到的那样,Java提供了许多有用的特性,使我们能在较短的时间里创建出比用从前的程序设计语言更健壮的程序。

但要注意任何东西都不是十全十美的,我们为此也要付出一些代价。其中最明显的是执行速度放慢了(尽管可对此进行多方面的调整)。和任何语言一样,Java本身也存在一些限制,使得它不十分适合解决某些特殊的编程问题。但不管怎样,Java都是一种正在快速发展的语言。随着每个新版本的发布,它变得越来越可爱,能充分解决的问题也变得越来越多。

Supongo que te gusta

Origin blog.csdn.net/m0_66999594/article/details/128665908
Recomendado
Clasificación