none
Ayuda por favooor! RRS feed

  • Pregunta

  • Hola! estoy haciendo una tarea en c#, ya intente de diferentes maneras de hacerlo y no me sale, me podrían ayudar por favor! 

    Se le pide que diseñe un sistema para una empresa de trenes, donde pueda administrar la reserva y compra de boletos, cada tren puede contener X cantidad de vagones, los cuales tienen 2 tipos de asientos, la clase ejecutiva y la clase economica. La clase ejecutiva puede estar o no presente en los vagones. 

    A la misma vez los vagones tienen N capacidad de filas por M capacidad de asientos, el sistema debe de ser configurable para poder ingresar la cantidad de trenes, la cantidad de vagones, la cantidad de filas por vagón, la cantidad de asientos por fila.

    Cuando el sistema este configurado deberá permitir a un operador la compra o reserva de un asiento, así como poder saber en todo momento  la cantidad de asientos disponibles, asientos reservados y asientos comprados. Para realizar una compra o reserva, debe solicitarse y guardarse el nombre del cliente, número de identificación, número telefónico de referencia, dirección de correo electrónico, tipo de asiento seleccionado y determinar si se realizó una compra o reserva. Además el sistema debe de permitir ver la información de un  asiento vendido o reservado.

    sábado, 11 de noviembre de 2017 1:56

Todas las respuestas

  • Puedes colocar el código que tengas de tu avance?
    sábado, 11 de noviembre de 2017 3:01
  • proyecto de introducción a la programación  jajaja 
    domingo, 12 de noviembre de 2017 12:24
  • Es todo un pedazo de tarea. Para alguien que es "novato" puede representar un centenar de horas de trabajo. Y requiere casi mayor esfuerzo de análisis que de programación.

    Comienza por hacer un análisis razonablemente detallado. Puedes redactarlo en forma de "casos de uso", por ejemplo describiendo cuáles son los pasos del usuario que compra un billete, cuáles son los pasos del administrador que configura los trenes, etc. Para esto, es de gran ayuda pensar en cómo lo harías si no tuvieses ordenador y tuviera que hacerse todo a mano: qué formularios rellenaríamos, qué datos habría en cada formulario, quién rellena cada dato, dónde se archiva cada documento, etc. Mientras no seas capaz de determinar cómo resolverías el problema sin hacer uso de la informática, no intentes programarlo; no quedará bien resuelto.

    Terminado el análisis funcional, pasa a realizar un análisis de detalle. Convierte la lista de datos que tienen que rellenarse y guardarse en los formularios manuales en un diagrama entidad-relación, del que se infiere qué tablas de base de datos vas a utilizar y cómo están relacionadas. Procura que esté bien normalizada en el diseño antes de intentar convertirla en una implementación informática.

    Este mismo diagrama que has hecho para base de datos probablemente te valga para hacer una abstracción orientada a objetos dentro de tu programa. Si la tecnología que vas a emplear incluye un mapeador objeto-relacional ("ORM"), tal como Entity Framework, este mapeo de base de datos a objetos se puede generar automáticamente, bien sea creando las clases a partir de la base de datos (database-first) o bien la base de datos a partir de las clases (code-first). O incluso, si el diagrama de tablas lo construyes directamente sobre el diseñador de EF, puedes generar tanto la base de datos como las clases a partir de ese Modelo (model-first).

    Ahora que ya tienes el modelo de datos, puedes pasar a construir las sucesivas capas de programa que trabajan sobre él. En el caso más simple, puede ser una capa de interfaz de usuario ubicada directamente sobre la capa de acceso a datos generada por el ORM. Con el enunciado que has indicado, no parece que sea necesario incorporar una capa de reglas de negocio (ni capas de comunicación, ni de servicios ni nada por el estilo).

    Así que ahora solo nos falta el diseño de la interfaz de usuario. Para ello volvemos de nuevo al diseño que hicimos "sobre papel", acerca de cómo operaríamos a mano, y convertimos eso en una serie de diseños de pantalla y de navegación entre ellas. La forma concreta en la que quedará este diseño depende mucho del tipo de aplicación, por ejemplo, no pondríamos la misma navegabilidad para una aplicación web que para una de escritorio o una para móviles.

    Terminado ese diseño, podemos dar por concluido el análisis y ya podemos pasar a escribir código. Habrá que ir pintando cada una de las pantallas utilizando las herramientas de diseño que correspondan al tipo de aplicación que tengamos que hacer, y luego completar el código de cada una de esas pantallas haciendo llamadas a la capa de datos que antes habíamos generado. Esto llevará tiempo de codificación, pero es relativamente simple porque es todo "ordenado y sistemático" una vez que tenemos completo todo el análisis y sabemos por tanto qué operaciones tiene que hacer cada uno de los comandos que haya en cada una de las pantallas.

    Como decía al principio, puede suponer un centenar de horas de trabajo; no es algo que alguien te vaya a dar resuelto en un mensajito del foro. Pero espero que por lo menos las líneas anteriores te hayan dado una pista acerca de cómo organizarte para irlo resolviendo paso a paso.


    domingo, 12 de noviembre de 2017 16:22