Está en la página 1de 5

Facultad de Ingeniería

Introducción a la Programación
1er. Ciclo 2016

Proyecto 1
Gasolinera
Enunciado

Se requiere realizar un programa en C# de tipo consola que simule una Gasolinera, el cual llevará
el control del inventario y las ganancias de la misma. La gasolinera cuenta con las siguientes
características:
a. Cuatro bombas de servicio para los clientes.
b. Cada bomba puede despachar gasolina regular, súper y diésel.
c. Los clientes pueden decidir en cada bomba si quieren consumir por galón de gasolina o
diésel, o bien por cantidad de dinero equivalente a N galones.
d. Cada bomba cuenta con una forma de cobro del consumo de los clientes.
e. La gasolinera cuenta también con tres depósitos, de 50 galones cada uno, para almacenar
combustible: 1 para gasolina regular, 1 para gasolina súper y 1 para diésel. (Notar que
bombas y depósitos son entidades distintas)

El programa debe realizar lo siguiente:

Ingreso de gasolina a depósitos:


1. Mostrar al operador la cantidad de combustible que poseen los tres depósitos de
combustible. Al inicio del programa los tres depósitos tendrán 10 galones de combustible
cada uno. (La capacidad de cada depósito es de 50 galones.) El costo inicial por galón del
diésel será de Q. 10.00; para la gasolina regular será de Q.12.00 y de la gasolina súper de
Q.15.00. Se debe tener un registro del costo total del combustible en cada depósito.
2. El operador debe indicar si desea ingresar combustible a los depósitos. (Si el operador
elige no ingresar combustible ir al paso 7).
3. Si el operador elige ingresar combustible a los depósitos, indicará la cantidad (en galones)
y costo (en quetzales) que desea ingresar para cada tipo de combustible que se desea
llenar.
4. Si la cantidad de galones sobrepasa la capacidad del depósito (tomando en cuenta lo que
haya previamente en el depósito) se señala al usuario que la operación es inválida y se
pasa al siguiente tipo de combustible o se pasa al siguiente paso si no hay más tipos.
5. Calcular el costo por galón del combustible de cada depósito por medio de un promedio
ponderado: CostAct = (CantP * CostP + CantI * CostI) / (CantP + CantI)
Donde:
 CostAct = Costo actual de la gasolina o diésel en el depósito.
 CantP = Cantidad previa de tipo de combustible en el depósito.
 CostP = Costo previo del tipo de combustible en el depósito.
 CantI = Cantidad de tipo de combustible ingresada al depósito.
 CostI = Costo del tipo de combustible que se ingresó al depósito.
6. Si el ingreso de combustible en el depósito es válido para un depósito entonces:
a. Aumenta la cantidad de combustible en el depósito especificado.
b. Acumula los gastos (en quetzales) del combustible ingresado (como consecuencia
del costo del combustible ingresado).
c. Guarda el costo actual por galón de cada depósito (calculado en el paso 5).

Definir precio por galón de cada tipo de combustible:


7. Mostrar al usuario los precios por galón de cada tipo de combustible. Al inicio el precio
por galón serán los siguiente: diésel: Q.12.00, gasolina regular: Q.15.00 y gasolina súper:
Q.18.00
8. Por cada tipo de combustible ingresar nuevos precios por galón (en quetzales).
9. Si el precio por galón indicado es inferior al costo por galón para ese tipo de combustible
(posiblemente recalculado en paso 5) al usuario que ese precio generará pérdidas a la
gasolinera y se prosigue con el siguiente tipo de combustible. Si ya no hay más tipos de
combustible se pasa al siguiente paso.
10. Si no infringe la restricción anterior, se modifica el precio por galón para ese tipo de
combustible.

Venta de gasolina a cliente final:


11. El usuario deberá elegir uno de los siguientes métodos para realizar ventas:
a. Venta manual al cliente: El usuario debe ingresar manualmente los datos de la
venta (que se inician a especificar en el siguiente paso). Se debe permitir realizar
de 3 a 10 ventas, preguntando al usuario después de la tercera venta si desea
continuar.
b. Venta automática cargando datos desde archivo: Los datos se especificarán desde
un archivo (se dará más información sobre esta carga en la siguiente sección). Si el
usuario elige esta opción saltar el paso 22.
12. Mostrar los precios actuales de cada tipo de combustible.
13. Mostrar la cantidad de galones de combustible que tiene cada depósito. Esta cantidad se
debe actualizar después de un consumo.
14. El programa debe permitir seleccionar la bomba que quiere utilizar el cliente.
15. La bomba elegida debe mostrar el total en galones y dinero consumido en ella.
16. Seleccionar el tipo de combustible que se desea. (Si un depósito tiene una cantidad igual
o inferior a su inventario mínimo -5 galones- no deberá mostrarle opción de compra de
este tipo de combustible.)
17. Las bombas deben permitir seleccionar que tipo de venta que se desea hacer: por galón o
por monto de dinero. (Ejemplos del tipo de venta en una sección posterior).
18. Si el cliente final solicita más combustible del que contiene el depósito (lo deja menor a 0)
se le notifica al usuario que no es posible realizar la venta; y se le indica la cantidad (en
galones) o el valor (en quetzales), que podría comprar (dejando el depósito a 0 galones). Si
el usuario acepta esta venta, se procede, de lo contrario se cancela la operación actual.
19. Realizar el cobro en cada bomba utilizando el precio correspondiente.
20. Por cada consumo se debe:
a. Actualizar la cantidad de galones y valor de la venta (en quetzales) consumido en
la bomba.
b. Actualizar la cantidad de galones y valor de la venta (en quetzales) consumido en
el depósito.
c. Acumular los ingresos de la gasolinera.
(Si el usuario eligió ventas manuales saltar a paso 22, siempre que se haya terminado las
ventas que el usuario deseaba –por lo menos 3, máximo 10-)

Carga de ventas por medio de un archivo:


21. El usuario debe ingresar la dirección del archivo que contendrá los datos para la
realización de ventas. Para todas las ventas especificadas en el archivo aplican las
mismas restricciones de las ventas manuales.

Información de ventas:
22. Mostrar cantidad en galones vendida por cada bomba y el ingreso en quetzales. Mostrar
un total de las 4 bombas.
23. Mostrar cantidad en galones vendida por cada tipo combustible y el ingreso en quetzales.
Mostrar un total de todos los tipos de combustible. (Notar que el total de las bombas con
el total por tipo de combustible debería ser el mismo.)
24. Mostrar cantidad por cada tipo de combustible comprado por la gasolinera y el gasto en
quetzales. Mostrar un total de todos los tipos de combustible.
25. Mostrar al usuario ganancia total (si la hay) de la gasolinera.

Carga de datos por medio de archivo

Al estudiante se le brindará un archivo para completar la funcionalidad de su proyecto:

ManejoDatos.cs: Este archivo contendrá la clase “ManejoDatos” que consta principalmente del
siguiente método que el usuario podrá utilizar:

bool CargaryEjecutarDatosArchivo(
string strRutaArchivo,
Gasolinera objGasolinera)

Devuelve verdadero si se logran cargar los datos correctamente del archivo especificado y se
logran ejecutar las ventas en la gasolinera enviada; de lo contrario devuelve falso.

Notar: se solicita un objeto de tipo “Gasolinera” en la cual el estudiante debe por lo menos
especificar el método: “EjecutarAcción”. Las características de este método se señalan en la
siguiente sección.

Clase Gasolinera:

El estudiante debe implementar el siguiente método en la clase “Gasolinera” el cual realizará una
venta dentro de la gasolina:
bool EjecutarAccion(
int intTipoCombustible,
int intBomba,
double dblCantidadCombustible,
double dblDineroVenta)

Donde:
 intTipoCombustible:
o 1: Diésel
o 2: Regular
o 3: Súper
 intBomba: Número de bomba elegida
 dblCantidadCombustible: Cantidad de combustible a llenar o vender (si se elige comprar por
galones, de lo contrario el archivo tendrá -1).
 dblDineroVenta: Cantidad de dinero que se desea gastar en una venta al cliente final. (si se
elige comprar por cantidad de dinero, de lo contrario el archivo tendrá -1).

Ejemplos del tipo de venta, por galón o por valor en quetzales:

1. Si el precio de la gasolina regular son Q31.00 por galón y el cliente desea consumir Q.
150.00, el resultado final de la bomba debe ser:

Galones consumidos: 4.84


Venta en Quetzales: 150

2. Si el precio del Diésel es Q27.50 por galón y el cliente desea comprar 5 galones, el
resultado final de la bomba debe ser:

Galones consumidos: 5
Venta en Quetzales: 137.50

Documentos requeridos:
El documento que se debe entregar deberá contener:

 Carátula
 Introducción
 Análisis:
o Nombre del programa
o Objetivo general del programa (qué problema resuelve): Dar la descripción
necesaria para que cualquier persona comprenda en qué consiste el sistema.
o Alcance del programa: Señalar qué funciones se incluyen en el sistema. (Esto
debería estar alineado con lo especificado en este documento.)
 Diseño:
o Diagrama(s) de flujo: Mostrar el proceso que seguirá la gasolinera con su(s)
interacción(es) principal(es) con los clientes.
o Diagrama de clases principales en el proyecto y breve descripción de cada una de
ellas, con sus métodos y atributos más importantes.
o Diseño de pantalla de cómo se verá el sistema.
 Conclusiones
 Bibliografía: Mencionar bibliografía de los conceptos de programación utilizados para la
creación de este programa.

Con el diseño realizado codificar en el lenguaje de alto nivel C#. Se deberá entregar:
 Programa fuente, debidamente documentado internamente
 Programa ejecutable
 Manual de usuario

Aspectos a evaluar:

 Validación de errores, uso de Try-Catch en todas las operaciones.


 Adecuada aplicación de los conocimientos de programación.
 Calidad de la documentación: ortografía, orden, limpieza y que esté completa.
 Funcionalidad del programa: debe cumplir a cabalidad con todos los requerimientos.
 Evidencia de la creación del programa y dominio de los conceptos utilizados. Se podrá
demandar que en la calificación presencial del proyecto se realicen cambios de
funcionalidad.
 Creatividad.

Análisis 15
Diseño 15
Manual de Usuario 10
Codificación 60
Total 100

También podría gustarte