[C con Clase] Programa de ejemplo (control de gastos) código fuente para aprendizaje
Oscar Aparicio Holgado
enigma-si en hotmail.com
Dom Sep 16 14:33:51 CEST 2012
He visto gente iniciada en C++ nueva en la lista de correo; incluyo este programa sencillo (es mi primer programa y tendrá mil maneras de mejorarlo) pero puede valer para que vean a través de ejemplos como he logrado lo que el programa básicamente hace.
Estableces un sueldo, conceptos de gastos (ejemplo : coche, luz, comida etc) y luego estableces los valores de gastos de cada cosa, luego a través del menú te ofrece un mini informe.
Espero lo disfruten, se aceptan sugerencias.
un saludo.
#include <iostream>
using namespace std;
class gastos
{
private:
int sueldo;
int vgastos;
int ng;
struct gasto {
char concepto[50];
int valor;
};
public:
gasto losgastos[9];
void menu();
void establecerg();
void establecervg();
void informe();
void establecesueldo(int);
int sueldoacero();
int gastosacero();
};
void gastos::menu()
{
char eleccion;
cout << "Elige la opci\xa2n :" << endl;
cout << "---------------------" << endl;
cout << "1.- Establecer sueldo." << endl;
cout << "2.- Establecer conceptos de gastos." << endl;
cout << "3.- Establecer valores de gastos." << endl;
cout << "4.- Mostrar informe." << endl;
cout << "5.- Salir del programa." << endl;
cout << endl;
cin >> eleccion;
switch (eleccion)
{
case '1':
int valor;
cout << "Introduce el valor del sueldo en euros : "; cin >> valor; cout << endl;
establecesueldo(valor);
menu();
break;
case '2':
if(sueldo == 0)
{
cout << "Error, debes establecer un sueldo primero.\n";
menu();
break;
}
else
{
establecerg();
losgastos[0].valor = 1;
menu();
break;
}
case '3':
if(losgastos[0].valor == 0)
{
cout << "Error, debes establecer un concepto de gastos primero.\n";
cout << losgastos[0].valor << endl;
menu();
break;
}
else
{
establecervg();
menu();
break;
}
case '4':
if(sueldo == 0)
{
if(losgastos[0].valor == 0)
{
cout << "Error, debes establecer un sueldo, conceptos y valores primero.\n";
menu();
break;
}
}
else
{
if(losgastos[0].valor == 0 || losgastos[0].valor == 1)
{
cout << "Error, debes establecer un sueldo, conceptos y valores primero.\n";
menu();
break;
}
informe();
menu();
break;
}
case '5':
return;
default:
cout << "Escoge una opci\xa2n de las que ofrece el men\xa3..." << endl;
cout << endl;
menu();
break;
}
}
void gastos::establecesueldo(int a)
{
sueldo = a;
}
void gastos::establecerg()
{
cout << "\xa8" << "Cu\xa0ntos gastos quieres declarar? escoje un n\xa3mero del 1 al 10 : "; cin >> ng;
if(ng <= 10)
{
int i, j;
for(i = 0, j = 1; i < ng; i++, j++)
{
cout << "Establece un concepto de gasto (" << j << "/10) : "; cin >> losgastos[i].concepto; cout << endl;
}
}
else
{
cout << "Error, debes introducir un numero del 1 al 10...\n";
establecerg();
}
}
void gastos::establecervg()
{
int i;
for(i = 0; i < ng; i++)
{
cout << "Establece valor de gasto en euros para " << losgastos[i].concepto << " : "; cin >> losgastos[i].valor; cout << endl;
}
cout << endl;
}
void gastos::informe()
{
cout << "Gastos de este mes :" << endl;
cout << "--------------------" << endl;
cout << endl;
int i;
for(i = 0; i < ng; i++)
{
cout << losgastos[i].concepto; cout << " : "; cout << losgastos[i].valor; cout << endl;
}
vgastos = 0;
for(i = 0; i < ng; i++)
{
vgastos += losgastos[i].valor;
}
cout << endl;
cout << "Sueldo : " << sueldo << endl;
cout << "Gastos : " << vgastos << endl;
cout << "Te sobra : " << (sueldo - vgastos) << endl;
cout << endl;
}
int gastos::sueldoacero()
{
return sueldo = 0;
losgastos[0].valor = 0;
}
int gastos::gastosacero()
{
return losgastos[0].valor = 0;
}
int main()
{
gastos objetodeclase;
objetodeclase.sueldoacero();
objetodeclase.gastosacero();
objetodeclase.menu();
return 0;
}
Oscar
Administrador de sistemas Linux.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120916/aacefa0c/attachment.html>
Más información sobre la lista de distribución Cconclase