ayuda para aprobar un examen

Javier
28 de Mayo del 2002
Necesito realizar este trabajo, si alguien me puede guiar un poquillo le estaría muy agradecido
El trabajo consiste en lo siguiente;

Descripción general
Un cine pretende informatizar la venta de entradas. La taquilla dispone de varios puestos de venta, por lo que se ha decido que dichos puestos dispongan de una estación con un programa cliente que trabaja contra un servidor para todos los puestos. La aplicación permite escoger la fila de la que se escogen las entradas según la preferencia de los usuarios. Además el cine cuenta con diferentes salas, cada una con capacidades distintas.
Se realizarán tanto el programa cliente como el programa servidor. No es necesario tener en cuenta la concurrencia de las peticiones, aunque sí la posibilidad de que se puedan realizar peticiones desde varios puestos cliente alternativamente.
Programa servidor
Este programa leerá de un archivo la configuración de las salas. El número de salas será también configurable. El formato del archivo será el siguiente (los comentarios no pertenecen al fichero):
3 “Número de salas”
10,8 “Sala 1: 10 filas de 8 asientos”
4,4 “Sala 2: 4 filas de 4 asientos”
12,10 “Sala 3: 12 filas de 10 asientos”
Cuando se arranca el programa servidor, este entra en un bucle indefinido y a la escucha en el puerto 4444 las peticiones de los puestos clientes. El programa puede recibir dos tipos de peticiones:
1. Obtener configuración de sala. Cuando se reciba una cadena “config 2”, siendo 2 el número de la sala, el servidor responderá con una cadena del estilo “2 4 3 0 2 4” significando esta cadena lo siguiente:
1. Número de sala
2. Número de filas
3. Número de butacas libres en la primera fila
4. Número de butacas libres en la segunda fila
5. ...
2. Comprar butacas. Cuando se reciba una cadena “compra 2 3 2” se responderá si la compra es posible (“si” o “no”) en función de si hay o no suficientes butacas en la fila de la sala requeridas por el usuario. Si hay butacas suficientes, se modificarán las estructuras internas para reflejar el nuevo estado de la sala (la fila 3 de la sala 2 deberá tener 2 butacas libres menos. En el ejemplo del punto previo la configuración pasaría a ser “2 4 3 0 0 4”). El significado de la cadena de petición es el siguiente:
1. Número de sala
2. Número de fila
3. Número de butacas a comprar
Programa cliente
Este programa presenta el interfaz de usuario de cara a la persona que atiende la taquilla. Cuando se arranca el programa entra en un bucle indefinido y se queda esperando a que el usuario vaya seleccionando las distintas opciones que le aparecen. Cuando se necesiten realizar peticiones sobre el servidor, se enviarán al puerto 4444 del servidor.
El desarrollo de la ejecución debe ser aproximadamente la siguiente:
1. Pedir al usuario que seleccione la sala de la que se pretende comprar entradas.
2. Enviar al programa servidor la petición de configuración de la sala seleccionada. Si por ejemplo se selecciona la sala 2, se enviará la cadena “config 2”.
3. Recibir la configuración enviada por el servidor para la sala mencionada.
4. Mostrar la configuración recibida en la pantalla. Si por ejemplo se recibe del servidor “2 4 3 0 2 4” (ver ejemplo en la sección del programa servidor) se mostrará algo parecido a:
Sala 2: 4 Filas
Fila 1: 3 butacas disponibles
Fila 2: 0 butacas disponibles
Fila 3: 2 butacas disponibles
Fila 4: 4 butacas disponibles

5. Pedir al usuario que seleccione la fila de la que se van a reservar las butacas.
6. Pedir al usuario que seleccione el número de butacas que desea reservar.
7. Enviar al programa servidor la petición de compra de butacas con los datos disponibles. Por ejemplo “compra 2 3 2” (ver ejemplo en la sección del programa servidor) para indicar que se quieren comprar de la sala 2 y fila 3, 2 butacas.
8. Recibir la respuesta enviada por el servidor sobre la petición realizada.
9. En el caso de que la respuesta sea “si”, mostrar un mensaje indicando que se han reservado las entradas correspondientes y volver al paso 1.
10. En el caso de que la respuesta sea “no”, mostrar un mensaje de error y volver al paso 4. Esta situación se daría por ejemplo si el usuario intenta reservar entradas de la fila 2 que ya están agotadas.

Muchisimas gracias a todos.