0% encontró este documento útil (0 votos)
11 vistas13 páginas

Control de Pagos para Empleados en C#

Este documento presenta una guía de laboratorio sobre programación modular para el desarrollo de una aplicación de control de pago de empleados. La aplicación calcula el sueldo base, asignaciones, descuentos y neto a pagar de los empleados según su área, tiempo de servicio y número de hijos. Incluye métodos para registrar empleados, realizar consultas sobre el total de empleados por área y montos netos acumulados por área y condición.

Cargado por

rotot119
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas13 páginas

Control de Pagos para Empleados en C#

Este documento presenta una guía de laboratorio sobre programación modular para el desarrollo de una aplicación de control de pago de empleados. La aplicación calcula el sueldo base, asignaciones, descuentos y neto a pagar de los empleados según su área, tiempo de servicio y número de hijos. Incluye métodos para registrar empleados, realizar consultas sobre el total de empleados por área y montos netos acumulados por área y condición.

Cargado por

rotot119
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Desarrollo de Aplicaciones Orientada a Objetos

ESCUELA SUPERIOR DE TECNOLOGÍA


PROFESIONAL TECNÓLOGO

Guía de Laboratorio Nº 02
Programacion Modular
Logros:
- Implementa aplicaciones con método sin valor de retorno sin parámetros
- Implementa aplicaciones con método sin valor de retorno con parámetros
- Implementa aplicaciones con método con valor de retorno sin parámetros
- Implementa aplicaciones con método con valor de retorno con parámetros

Caso Desarrollado 01: Control de Pago de Empleados


“Marketing S.A.C.” es una empresa de cooperativa de ahorro y crédito dedicada a brindar productos
financieros contribuyendo con el crecimiento de sus clientes. En consecuencia, necesitan una
aplicación que permita controlar el pago que realizan a sus empleados así como el monto por
movilidad, asignación a favor por el numero de hijos, el descuento de ley y el neto que la empresa
necesita pagar a sus empleados.

Debemos tener en cuenta:

- Use los métodos necesarios para la implementación de la aplicación.


- La asignación del sueldo base se procesa de acuerdo a la siguiente tabla:

AREA / CONDICION PERSONAL COMISION


Ventas $ 2500.00 $ 500.00
Marketing $ 1800.00 $ 1100.00
Logística $ 3500.00 $ 2500.00
Préstamo $ 1500.00 $ 900.00

- La asignación por concepto de movilidad se procesar de acuerdo al área y se aplica sobre el


sueldo base, como se muestra en la siguiente tabla:

AREA / CONDICION PERSONAL COMISION


Ventas 10 % 5%
Marketing 20 % 10 %
Logística 30 % 15 %
Préstamo 25 % 12.5 %

- Calcular el tiempo de servicio según la fecha de ingreso que se registra para un determinado
empleado.
- Calcular una asignación adicional por la cantidad de hijos que registra el empleado, de tal
forma que por cada hijo se le aumenta $ 20.00.
- Calcular un descuento del 17% sobre el sueldo base del empleado.
- Calcular el monto neto que recibe el empleado, de acuerdo al sueldo base, asignación de
movilidad, asignación por numero de hijos y descuento, usando la siguiente formula:

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

Neto = sueldo Base + movilidad + asignación - descuento

- Validar el nombre del empleado de tal forma que no permita registrar al mismo empleado en
la lista de empleados.
- Implemente el botón “Consulta 1”que permita determinar el total de empleados por área.
- Implemente el botón “Consulta 2” que permita determinar el monto acumulado de los netos
según la condición del empleado.
- Implemente el botón “Consulta 3” que permita determinar el monto acumulado de los netos
según el área.
- Finalmente validar los valores del formulario, de tal forma que al registrar a un empleado no
permita registrar espacios vacíos en el nombre del empleado, determinar que el numero de
hijos sea numérico, determinar que el área y la condición sean seleccionados para un
determinado empleado.

Solución:

1. Creamos un nuevo proyecto en Visual Studio 2017

- Archivo > Nuevo > Proyecto


- Seleccione la plantilla “Visual C#”
- Selección “Aplicación de Windows Form”
- Asigne el nombre al proyecto

2. Cambiamos el nombre del formulario

- Seleccione el formulario “[Link]” desde el “Explorador de soluciones”


- Desde la propiedad “Nombre de archivo” asigne el nombre “frmPlanilla”

3. Diseñamos la GUI (Interfaz Gráfica de Usuario) del caso

txtEmpleado
txtHijos
cboArea
cboCondicion
dtFechaIng
btnConsulta1
btnConsulta2
btnConsulta3
lvEmpleados
btnSalir

lvEstadisticas

4. Código completo de la aplicación

using System;
using [Link];
using [Link];
using [Link];

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];

namespace pjCaso62
{
public partial class frmPlanilla : Form
{
//Declaracion de variables GLOBALES
double tVentas, tMarketing, tLogistica, tPrestamo;
double aVentas, aMarketing, aLogistica, aPrestamo;
double aPersonal, aComision;

public frmPlanilla()
{
InitializeComponent();
}

private void btnRegistrar_Click(object sender, EventArgs e)


{
if (valida() == "")
{
//Captura de datos
string empleado = getEmpleado();
if (validaEmpleado() == false)
{
int hijos = getHijos();
string area = getArea();
string condición = getCondicion();

//Realizando calculos
int años = calculaTiempoServicio();
double sueldoBase = asignaSueldoBase(área, condición);
double movilidad = calculaMovilidad(sueldoBase);
double asignación = calculaAsignacion(hijos);
double descuento = calculaDescuento(sueldoBase);
double neto = calculaNeto(sueldoBase,movilidad,asignacion,descuento);

//Imprimir en la lista
imprimir(años, sueldoBase, movilidad, asignación, descuento, neto);
}
else
{
[Link]("El empleado ya se encuentra registra","Planilla");
return;
}
}
else
{
[Link]("El error se encuentra en "+valida(),"Planilla",
[Link],[Link]);
}
}

private void btnConsulta1_Click(object sender, EventArgs e)


{
totalEmpleadosxArea();

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

[Link]();
string[] elementosFila = new string[2];
ListViewItem row;

elementosFila[0] = "Total de Personal del área de Ventas";


elementosFila[1] = [Link]("0.00");
row = new ListViewItem(elementosFila);
[Link](row);

elementosFila[0] = "Total de Personal del área de Marketing";


elementosFila[1] = [Link]("0.00");
row = new ListViewItem(elementosFila);
[Link](row);

elementosFila[0] = "Total de Personal del área de Logística";


elementosFila[1] = [Link]("0.00");
row = new ListViewItem(elementosFila);
[Link](row);

elementosFila[0] = "Total de Personal del área de Prestamos";


elementosFila[1] = [Link]("0.00");
row = new ListViewItem(elementosFila);
[Link](row);
}

private void btnConsulta3_Click(object sender, EventArgs e)


{
montoAcumuladoxArea();

[Link]();
string[] elementosFila = new string[2];
ListViewItem row;

elementosFila[0] = "Monto neto acumulado del área de Ventas";


elementosFila[1] = [Link]("C");
row = new ListViewItem(elementosFila);
[Link](row);

elementosFila[0] = "Monto neto acumulado del área de Marketing";


elementosFila[1] = [Link]("C");
row = new ListViewItem(elementosFila);
[Link](row);

elementosFila[0] = "Monto neto acumulado del área de Logística";


elementosFila[1] = [Link]("C");
row = new ListViewItem(elementosFila);
[Link](row);

elementosFila[0] = "Monto neto acumulado del área de Prestamos";


elementosFila[1] = [Link]("C");
row = new ListViewItem(elementosFila);
[Link](row);
}

private void btnConsulta2_Click(object sender, EventArgs e)


{
montoAcumuladorxCondicion();

[Link]();

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

string[] elementosFila = new string[2];


ListViewItem row;

elementosFila[0] = "Monto neto acumulado por empleados tipo Personal";


elementosFila[1] = [Link]("C");
row = new ListViewItem(elementosFila);
[Link](row);

elementosFila[0] = "Monto neto acumulado por empleados tipo Comision";


elementosFila[1] = [Link]("C");
row = new ListViewItem(elementosFila);
[Link](row);
}

private void btnSalir_Click(object sender, EventArgs e)


{
DialogResult r = [Link]("Esta seguro de salir?",
"Planilla",
[Link],
[Link]);
if (r == [Link]) [Link]();
}

//Metodos de captura de valor


string getEmpleado()
{
return [Link];
}

int getHijos()
{
return [Link]([Link]);
}

string getArea()
{
return [Link];
}

string getCondicion()
{
return [Link];
}

DateTime getFecha()
{
return [Link];
}

//Metodos para calcular


//Metodo que determina el sueldo
double asignaSueldoBase(string area, string condicion)
{
switch (area)
{
case "Ventas":
if (condicion == "Personal")
return 2500;
else
return 500;

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

case "Marketing":
if (condicion == "Personal")
return 1800;
else
return 1100;
case "Logistica":
if (condicion == "Personal")
return 3500;
else
return 2500;
case "Prestamo":
if (condicion == "Personal")
return 1500;
else
return 900;
}
return 0;
}

//Calcular Años de servicio


int calculaTiempoServicio()
{
return [Link] - getFecha().Year;
}

//Calcular la asignación de movilidad


double calculaMovilidad(double sueldoBase)
{
switch (getArea())
{
case "Ventas":
if (getCondicion() == "Personal")
return 10.0/100 * sueldoBase;
else
return 5.0 / 100 * sueldoBase;
case "Marketing":
if (getCondicion() == "Personal")
return 20.0 / 100 * sueldoBase;
else
return 10.0 / 100 * sueldoBase;
case "Logistica":
if (getCondicion() == "Personal")
return 30.0 / 100 * sueldoBase;
else
return 15.0 / 100 * sueldoBase;
case "Prestamo":
if (getCondicion() == "Personal")
return 25.0 / 100 * sueldoBase;
else
return 12.5 / 100 * sueldoBase;
}
return 0;
}

//Metodo para calcular la asignación por numero de hijos


double calculaAsignacion(int hijos)
{
return hijos * 20;
}

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

double calculaDescuento(double sueldoBase)


{
return 17.0 / 100 * sueldoBase;
}

double calculaNeto(double sueldoBase, double movilidad,


double asignación, double descuento)
{
return sueldoBase+movilidad+asignacion-descuento;
}

//Metodo para imprimir


void imprimir(int tiempo, double sueldoBase, double movilidad,
double asignacion, double descuento, double neto)
{
ListViewItem fila = new ListViewItem(getEmpleado());
[Link](getHijos().ToString());
[Link](getArea());
[Link](getCondicion());
[Link]([Link]());
[Link]([Link]("0.00"));
[Link]([Link]("0.00"));
[Link]([Link]("0.00"));
[Link]([Link]());
[Link]([Link]("0.00"));
[Link](fila);
}

//Metodos para las estadisticas


//CONSULTA 1: Total de Empleados por Areas
public void totalEmpleadosxArea()
{
tVentas = 0;
tMarketing = 0;
tLogistica = 0;
tPrestamo = 0;

for (int i=0; i < [Link]; i++)


{
string area = [Link][i].SubItems[2].Text;
switch (area)
{
case "Ventas": tVentas++; break;
case "Marketing": tMarketing++; break;
case "Logistica": tLogistica++; break;
case "Préstamo": tPrestamo++; break;
}
}
}

//CONSULTA 2: Monto acumulado de netos por condición


public void montoAcumuladorxCondicion()
{
aPersonal = 0;
aComision = 0;
for (int i = 0; i < [Link]; i++)
{
string condicion= [Link][i].SubItems[3].Text;
switch (condicion)
{

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

case "Personal":
aPersonal+=[Link]([Link][i].SubItems[9].Text);
break;
case "Comision":
aComision += [Link]([Link][i].SubItems[9].Text);
break;
}
}
}

//CONSULTA 3: Monto acumulado de netos por área


public void montoAcumuladoxArea()
{
aVentas = 0;
aMarketing= 0;
aLogistica = 0;
aPrestamo = 0;

for (int i = 0; i < [Link]; i++)


{
string area = [Link][i].SubItems[2].Text;
switch (area)
{
case "Ventas":
aVentas+=[Link]([Link][i].SubItems[9].Text);
break;
case "Marketing":
aMarketing+=[Link]([Link][i].SubItems[9].Text);
break;
case "Logistica":
aLogistica+=[Link]([Link][i].SubItems[9].Text);
break;
case "Prestamo":
aPrestamo+=[Link]([Link][i].SubItems[9].Text);
break;
}
}
}

//Metodo que valida el registro duplicado del empleado


bool validaEmpleado()
{
bool estado=false;
for (int i = 0; i < [Link]; i++)
{
string empleado = [Link][i].SubItems[0].Text;

if (getEmpleado() == empleado) estado = true;


}
return estado;
}
//Metodo de validacion de datos
string valida()
{
if ([Link]().Length == 0)
{
[Link]();
return "nombre del empleado";
}
else if (![Link]([Link]))

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

{
[Link] = "";
[Link]();
return "numero de hijos; es un valor numero..!!";
}
else if ([Link] == -1)
{
[Link]();
return "area del empleado";
}
else if ([Link] == -1)
{
[Link]();
return "condición del empleado";
}
return "";
}
}
}

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

1. Caso propuesto 01: Venta de Productos


Una tienda ha puesto en oferta la venta de camisas ofreciendo un descuento, por
temporada de verano, denominado 7% + 7%. Los cálculos se efectúan de la siguiente
manera:

 El importe de la compra es igual al producto del precio de la camisa por la cantidad de


unidades adquiridas.
 El importe del primer descuento es igual al 7% del importe de la compra.
 El importe del segundo descuento es igual al 7% del lo que queda de restar el importe
de la compra menos el importe del primer descuento.
 El importe del descuento total es igual a la suma de los dos descuentos anteriores.

 El importe a pagar es igual al importe de la compra menos el importe del descuento total.

Dado el precio del producto y la cantidad de unidades adquiridas, implemente una aplicación
en Visual C# que determine el importe de la compra, el importe del primer descuento, el
importe del segundo descuento, el importe del descuento total y el importe a pagar.

2. Caso Propuesto 02: Ventas de Licencia


La empresa SYSTEM SAC ha desarrollado un software de ventas el cual se viene ofreciendo a
todo el Perú en diferentes tipos de licencia. La venta del software es gestionada por
vendedores capacitados los cuales necesitan registrar las ventas realizadas mediante una
aplicación de control de registro de facturas, el cual solicita el nombre completo del vendedor,
numero de factura, tipo de licencia y unidades de software vendido.

Debemos tener en cuenta:

 Al iniciar la aplicación se debe mostrar la fecha de manera automática.


 El registro de la factura debe mostrarse en un cuadro de lista, con los datos propios de
la venta además del monto subtotal por cada factura.
 Así mismo, deberá mostrarse el monto total registrado de las facturas (esto representa
al monto acumulado de subtotales)
 Finalmente, mostrar las estadísticas del registro como el total de unidades y el monto
total acumulado por cada tipo de licencia.
 El costo de venta de las licencias se muestra en la siguiente tabla:

TIPO DE LICENCIA MONTO DE VENTA POR UNIDAD


Cobre $700.00
Bronce $900.00
Silver $1400.00
Gold $2500.00
 El botón registrar item envía los datos a un control ListView.

Interfaz grafica del usuario propuesta:

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

3. Caso Propuesto 03: Registro de Habitaciones


Una de las empresas hoteleras que opera en el centro de la ciudad de Lima, necesita una
aplicación que permita controlar el registro de los alquileres de sus habitaciones que se realiza
diariamente; esto es debido a la gran demanda de turistas en el mes actual. La aplicación
deberá mostrar un formulario de registro de alquileres con la fecha actual y la hora en forma
digital. Además de poder seleccionar el tipo de habitación y los días que el usuario solicito en
alquiler; la aplicación deberá registrar todos los alquileres mostrándolo en una lista con los
datos del tipo, costo por día de la habitación, días alquilados, subtotal, descuento y pago neto
que realizan sus clientes. Al final se debe mostrar una estadística de la cantidad de días y neto
acumulados por cada tipo de habitación. Debemos tener en cuenta:

 Al iniciar la aplicación se debe mostrar la fecha y la hora digitalizada de manera


automática.
 El precio de las habitaciones varia según el tipo, tal como se muestra en la siguiente
tabla:

TIPO DE HABITACION COSTO POR DIA


Simple $30.00
Doble $50.00
Matrimonial $120.00
Presidencial $300.00

 El botón registrar envía los datos de la habitación y la cantidad de días alquilados a


un control ListView.
 Finalmente, mostrar las estadísticas de forma automática al registrar una habitación,
como el total de habitaciones simples, dobles, matrimoniales y presidenciales además
de los montos recaudados por cada tipo de habitación en un control ListView.

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

Interfaz grafica del usuario propuesta:

4. Caso Propuesto 04: Control de Entradas


La empresa “CINE-WORD” es una cadena global de multicines líder en el mercado de
exhibición cinematográfica el cual ha decidido instalarse en la ciudad de Lima. Ha empezado
por ofrecer la venta de sus boletos de cine de forma corporativa. Para lo cual necesita una
aplicación que según la edad de cliente se le asigne una categoría y a partir de allí se apliquen
los precios y descuentos. Debemos tener en cuenta:

 Al iniciar la aplicación el cuadro combinado de las edades deben encontrarse


precargados.
 El precio de las habitaciones varia según el tipo, tal como se muestra en la siguiente
tabla:

EDAD CATEGORÍA DESCUENTO PRECIO UNITARIO


03 - 12 Niño 20% $10.00
13 - 17 Joven I 10% $15.00
18 - 50 Joven II 5% $25.00
51 - 65 Adulto I 10% $15.00
>65 Adulto II 20% $10.00

 Al seleccionar una edad desde el cuadro combinado debe mostrar automáticamente el


precio y la categoría asignada.
 El botón registrar envía los datos de la venta como la categoría, precio unitario,
cantidad de boletos, subtotal(precio por la cantidad seleccionada), descuento e importe
a pagar en un control ListView.

Elaborado por: Lic. Manuel Torres Re.


Desarrollo de Aplicaciones Orientada a Objetos

 Finalmente, mediante un botón mostrar las estadísticas el monto total acumulado de


los subtotales, monto total que la empresa deja de percibir por aplicar descuento, los
montos acumulados por cada tipo de categoría en un control ListView.

Interfaz grafica del usuario propuesta:

Elaborado por: Lic. Manuel Torres Re.

También podría gustarte