Professional Documents
Culture Documents
Ingreso: fecha, tipo, descripcin, importe. Los ingresos pueden tener asociado un gasto de la partida "otros" (por ejemplo una comisin, retencin de IRFP, etc.) que coincidir en la fecha y descripcin. Gasto en la partida de alimentacin, transporte u otros: fecha, tipo, descripcin, importe
Los tipos asociados a cada partida son los siguientes (al lado de cada tipo aparece su cdigo representado con dos caracteres):
Partida Ingresos Tipos Devolucin (DV) Extra (EX) Nmina (NO) Varios (VA) Alimentacin Transporte Caf (CA) Cena (CE) Comida (CO) Compras (CM) Desayuno (DS) Varios (VA) Avin (AV) Autobs (AU) Gasolina (GA) Metro (ME) Seguro (SE) Taller (TA) Tren (TR) Varios (VA) Otros gastos Comisin (CS) Donacin (DO) Ocio (OC) Prstamo (PR) Retencin (RE) Ropa (RO) Salud (SA) Varios (VA)
Se considera que el identificador de un ingreso es la fecha ms 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:
Registrar y eliminar ingresos. Cuando se elimina el ingreso se debe eliminar su gasto asociado si lo tiene. Registrar y eliminar gastos de cualquiera de los tipos Mostrar el saldo actual de la contabilidad. Deben aparecer los ingresos totales, gastos totales y la diferencia entre ingresos y gastos. Mostrar un resumen de los gastos de una partida determinada, indicando el total de gastos de cada tipo, el total de gastos de la partida y el porcentaje de gastos de esta partida respecto al total de gastos. 1
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 lnea del mismo tiene un comando para la aplicacin. Comandos:
Nuevo ingreso: "ING" <fecha> <tipo> (<desc>) <imp> [<tipo gasto> <imp gasto>] Nuevo gasto de alimentacin: "ALI" <fecha> <tipo> (<desc>) <imp> Nuevo gasto de transporte: "TRA" <fecha> <tipo> (<desc>) <imp> Nuevo gasto de otro tipo: "OTR" <fecha> <tipo> (<desc>) <imp> Eliminar un ingreso: "ELI" "ING" <fecha> <tipo> Eliminar un gasto: "ELI" <partida> <fecha> <tipo> Mostrar el saldo: "SAL" Mostrar resumen de gastos: "GAS" <partida>
<fecha>: dd/mm/aaaa <tipo>: dos caracteres segn la tabla vista ms arriba <desc>: cadena de 50 caracteres como mximo describiendo el ingreso o gasto. <imp>: importe correspondiente al ingreso o gasto (un nmero entero positivo) <tipo gasto>: tipo (dos caracteres) correspondiente a un gasto asociado a un ingreso <imp gasto>: importe de gasto asociado al ingreso (nmero entero positivo) <partida>: tres caracteres que identifican la partida: "ALI" (alimentacin), "TRA" (transporte) y "OTR" (otros).
Formato de la salida: ser un fichero, con una lnea para el resultado o error de cada accin: 2
Nuevo ingreso: "Ingresado" <importe> <fecha> <tipo> (<desc>) Nuevo gasto de alimentacin: "Alimentacin" <importe> <fecha> <tipo> (<desc>) Nuevo gasto de transporte: "Transporte" <importe> <fecha> <tipo> (<desc>) Nuevo gasto de otro tipo: "Otros" <importe> <fecha> <tipo> (<desc>) Eliminar un ingreso: "Ingreso eliminado" <importe> <fecha> <tipo> (<desc>) Eliminar un gasto: "Gasto eliminado" <partida><importe> <fecha> <tipo> (<desc>) Mostrar el saldo: "Ingresos" <ingresos> "Gastos" <gastos> "-> Saldo" <saldo> Mostrar gastos por partida: "Total" <partida> <total de la partida> <porcentaje partida> {<tipo> <total tipo>}(para cada tipo de la partida que tenga algn gasto)
Todos los campos tienen la misma representacin 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 lneas: 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 lneas, la primera con la eliminacin del ingreso y la segunda con la eliminacin del gasto. Ejemplo de salida para el ejemplo anterior
Ingresado 170000 21/2/2000 Nmina (Salario) Otros 29000 21/2/2000 Donacin (Salario) Alimentacin 30000 2/3/2000 Cena (Invitacin a Compaeros) Transporte 5500 4/3/2000 Gasolina (Llenar el depsito) Ingresos 170000 Gastos 64500 -> Saldo 105500 Gasto eliminado Transporte 5500 4/3/2000 Gasolina (Llenar el depsito) Ingresos 170000 Gastos 59000 -> Saldo 111000 Otros 1000 5/3/2000 Ocio (Cine) Total Otros 30000 50% Donacin 29000 Ocio 1000 Alimentacin 40000 12/3/2000 Compras (Compras del mes) Total Alimentacin 70000 70% Cena 30000 Compras 40000 Ingresos 170000 Gastos 100000 -> Saldo 70000 Ingreso eliminado 170000 21/2/2000 Nmina (Salario) Gasto eliminado Otros 29000 21/2/2000 Donacin (Salario) Ingresos 0 Gastos 71000 -> Saldo -71000
Cuando la ejecucin de algn comando produzca un error, la salida correspondiente a ese comando ser una lnea con el formato siguiente: "ERROR" <descripcin del error>. Seguidamente el programa deber procesar normalmente el resto de los comandos del fichero de entrada.
1.1.3. lista de sucesos Registrar un ingreso (flujos di e ii). Registrar un gasto de alimentacin (flujos dga e iga) Registrar un gasto de transporte (flujos dgt e igt) Registrar un gasto de otro tipo (flujos dgo e igo) Eliminar un ingreso (flujos dei e iei) Eliminar un gasto (flujo deg e ieg) Mostrar el saldo (flujo dms e ims) Mostrar el resumen de gastos (flujo dmg e img)
Diagrama 5 (Tratar_Res_Gasto)
1.2.1.2.
Especificacin de procesos
Proceso: Obtener tipo_operacin if tipo_operacin = 1 | 2 then Obtener datos_operacin_ingreso Ir a Proceso 2 else if tipo_operacin = 3 | 4 then Obtener datos_operacin_gasto Ir a Proceso 3 else if tipo_operacin = 5 then Obtener datos_operacin_saldo Ir a Proceso 4 else if tipo_operacin = 6 then Obtener datos_operacin_resumen_gastos Ir a Proceso 5 endif Salida:
datos_ingreso | datos_gasto | datos_saldo | datos_res_gasto
if encontrado then Escribir Ingreso duplicado else Registrar un Ingreso (fecha, tipo, desc, importe, Almacn Ingresos) Escribir Ingresado + importe + fecha + tipo + desc if (impGasto!=0) RegistrarGasto (tipoGasto, impGasto, fecha, desc, Almacen Gastos) endif endif Volver al proceso 1 Salida:
inf_ingreso Almacn Ingresos Almacn Gastos
Proceso: encontrado = Buscar (fecha, tipo, Almacen Ingresos) if encontrado then (hayGastoAsoc, tipoGasto) = Eliminar un Ingreso (fecha, tipo, Almacn Ingresos) Escribir Ingreso Eliminado + importe + fecha + tipo + desc if (hayGastoAsoc) Eliminar un Gasto (tipoGasto, fecha, Almacn Gastos) endif else Escribir No se encontro el Ingreso endif Volver al proceso 1 Salida:
inf_elim_ingreso Almacn Ingresos Almacn Gastos
Proceso: 8
case partida ALI: correcto = Registrar gasto de alimentacin TRA: correcto = Registrar gasto de transporte OTR: correcto = Registrar gasto de otro default: Registrar ERROR endcase if correcto then Escribir El gasto ya existe else Escribir partida + <importe> + <fecha> + <tipo> + (<desc>) endif Volver al proceso 1 Salida:
inf_registro_gasto Almacn Gastos
Proceso: encontrado = Buscar (descripcin de operacin de gasto) if encontrado then (importe, desc)=EliminarGasto (partida, fecha, tipo) Escribir Gasto Eliminado + partida + importe + fecha + tipo + desc else Escribir El gasto no existe endif Volver al proceso 1 Salida:
inf_eliminacin_gasto Almacn Gastos
Saldo
10
2. Diseo
2.1. Modelo de implantacin del sistema
Este punto no es necesario ya que no es un sistema distribuido.
11
12
13
14
1.2.
Concepto
CrearContabilidad AgregarIngreso
DIO de anlisis
MC
Contabilidad () cn.AadirIngreso () ing.ComprobarNExis(datosI) ing.Aadir (datosI) gx.ComprobarNExis(datosG) gx.Aadir (datosG)
Contabilidad (cn)
GastoTipoX (gx)
Ingreso (ing)
EliminarIngreso
AgregarGasto
EliminarGasto
MostrarSaldo GastosPartida
DestruirContabilidad
15
1.3.
Contabilidad () ~ Contabilidad () Aadir (fecha, tipo, desc, importe, hayGasto, tipoGasto, impGasto) Aadir (fecha, tipo, desc, importe, hayIng, tipoIngreso) Eliminar (tipo, fecha, hayIng) Eliminar (partida, tipo, fecha, hayGasto) MostrarSaldo () GastosPartida (partida)
1 *
GastoOtros
*
Ingreso
TFecha fecha, TipoIngreso tipo, char desc[50], long importe,bool hayGasto, TipoGasto tipoGasto, long impGasto Ingreso (fecha, tipo, desc, importe, hayGasto, tipoGasto) ~ Ingreso () bool ComprobarExiste (tipo, fecha) bool ComprobarNExiste (tipo, fecha)
TFecha fecha, TipoGasto tipo, char desc[50], long importe,bool hayIng, TipoIngreso tipoIngreso Gasto (fecha, tipo, desc, importe, hayIng, tipoIng) ~ Ingreso () bool ComprobarExiste (tipo, fecha) bool ComprobarNExiste (tipo, fecha) Consultar ()
*
GastoAlimentacin
TFecha fecha, TipoGasto tipo, char desc[50], long importe,bool hayIng, TipoIngreso tipoIngreso Gasto (fecha, tipo, desc, importe, hayIng, tipoIng) ~ Ingreso () bool ComprobarExiste (tipo, fecha) bool ComprobarNExiste (tipo, fecha) Consultar ()
*
GastoTransporte
TFecha fecha, TipoGasto tipo, char desc[50], long importe,bool hayIng, TipoIngreso tipoIngreso Gasto (fecha, tipo, desc, importe, hayIng, tipoIng) ~ Ingreso () bool ComprobarExiste (tipo, fecha) bool ComprobarNExiste (tipo, fecha) Consultar ()
16
2. Diseo
2.1 Diseo lgico
Diagrama de clases del diseo (incluye atributos y relaciones)
Clases: Contabilidad ListaIngresos ListaGastos TipoElemento TipoIngreso TipoGasto
17
DIO de diseo
18
19
20
contaboo.cp
contabil.h
Contabil.cpp
Lectura.h
FechaOO.h
Lectura.cpp
FechaOO.cp p
Nota: El archivo tipos.h esta incluido en todos ellos con definiciones bsicas tales como bool o Tpartida.
21