Práctica (curso 1999-2000): contabilidad personal

Enunciado

Se trata de programar una contabilidad personal. Se consideran ingresos por un lado y varias partidas de gastos (alimentación, transporte y otros). Datos de cada tipo de operación:

Los tipos asociados a cada partida son los siguientes (al lado de cada tipo aparece su código representado con dos caracteres):

Partida

Ingresos

Alimentación

Transporte

Otros gastos

Tipos

Devolución (DV)
Extra (EX)
Nómina (NO)
Varios (VA)
Café (CA)
Cena (CE)
Comida (CO)
Compras (CM)
Desayuno (DS)
Varios (VA)
Avión (AV)
Autobús (AU)
Gasolina (GA)
Metro (ME)
Seguro (SE)
Taller (TA)
Tren (TR)
Varios (VA)
Comisión (CS)
Donación (DO)
Ocio (OC)
Préstamo (PR)
Retención (RE)
Ropa (RO)
Salud (SA)
Varios (VA)

Se considera que el identificador de un ingreso es la fecha más el tipo. En el caso de un gasto, su identificador es la partida, la fecha y el tipo. No se admiten duplicados de ingresos ni de gastos.

El programa debe permitir realizar las siguientes acciones:

Para ejecutar el programa habrá que realizar la siguiente llamada:

CONTAB <entrada> <salida>

Donde <entrada> indica el nombre del fichero de entrada y <salida> el nombre del fichero de salida.

Formato de la entrada: es un fichero de texto. Cada línea del mismo tiene un comando para la aplicación. Comandos:

Formato de los campos:

Ejemplo de fichero de entrada:

ING 21/2/2000 NO (Salario) 170000 RE 29000
ALI 2/3/2000 CE (Invitación a Compañeros) 30000
TRA 4/3/2000 GA (Llenar el depósito) 5500
SAL
ELI TRA 4/3/2000 GA
SAL
OTR 5/3/2000 OC (Cine) 1000
GAS OTR
ALI 12/3/2000 CM (Compras del mes) 40000
GAS ALI
SAL
ELI ING 21/2/2000 NO
SAL

Formato de la salida: será un fichero, con una línea para el resultado o error de cada acción:

Todos los campos tienen la misma representación que en la entrada, excepto el campo <tipo> que deberá mostrar el nombre completo del tipo.

Cuando un nuevo ingreso lleve asociado un gasto, la salida tendrá dos líneas: la primera con el resultado del ingreso y la segunda con el resultado del gasto.

Cuando se elimina un ingreso que tiene asociado un gasto, la salida tendrá dos líneas, la primera con la eliminación del ingreso y la segunda con la eliminación del gasto.

Ejemplo de salida para el ejemplo anterior

Ingresado 170000 21/2/2000 Nómina (Salario)
Otros 29000 21/2/2000 Donación (Salario)
Alimentación 30000 2/3/2000 Cena (Invitación a Compañeros)
Transporte 5500 4/3/2000 Gasolina (Llenar el depósito)
Ingresos 170000 Gastos 64500 -> Saldo 105500
Gasto eliminado Transporte 5500 4/3/2000 Gasolina (Llenar el depósito)
Ingresos 170000 Gastos 59000 -> Saldo 111000
Otros 1000 5/3/2000 Ocio (Cine)
Total Otros 30000 50% Donación 29000 Ocio 1000
Alimentación 40000 12/3/2000 Compras (Compras del mes)
Total Alimentación 70000 70% Cena 30000 Compras 40000
Ingresos 170000 Gastos 100000 -> Saldo 70000
Ingreso eliminado 170000 21/2/2000 Nómina (Salario)
Gasto eliminado Otros 29000 21/2/2000 Donación (Salario)
Ingresos 0 Gastos 71000 -> Saldo -71000

Cuando la ejecución de algún comando produzca un error, la salida correspondiente a ese comando será una línea con el formato siguiente: "ERROR" <descripción del error>. Seguidamente el programa deberá procesar normalmente el resto de los comandos del fichero de entrada.

Se pide

Llevar a cabo el desarrollo del programa siguiendo el modelo orientado al flujo de datos y el modelo orientado a objetos.

Normas

Ficheros