Ejemplo. Cálculo de Nómina mensual

Diseñar un programa que permita a la empresa XX calcular la nómina mensual de sus trabajadores por horas. El salario del trabajador estará en función de las horas trabajadas (no podrá realizar más de 8 horas diarios) y su categoría. El coste por hora es de 15 Euros para los trabajadores cuya categoría sea A, 10 si es de categoría B. Se realizará un registro diario. Un trabajador puede realizar un trabajo dentro de la categoría A o B.

En primer lugar, se construirá una tupla con todos los trabajadores que tiene la empresa.

Para ello, tendrá un menú que permita:

  1. Introducir los datos diarios de los trabajadores. Se debe preguntar cuántos trabajadores va a introducir en el programa principal. Para ello, se creará una función llamada Nuevo_trabajo, y devuelve la lista creada (Nombre del trabajador, número de horas, y categoría). Esta opción se implementará por pantalla y archivo

  2. Indicar cuantos trabajadores hicieron un trabajo perteneciente a una categoría (A o B), esté dato se le preguntará al usuario en el programa principal. Para ello, crear una función Contabilizar_categoría y la función devuelve la cantidad calculada que se visualizará en programa principal.

  3. Indicar cuantos trabajadores no realizaron ningún trabajo y su nombre, utilizar conjuntos. Para ello, utilizará una función Llamada Trabajadores_sin_sueldo y debe devolver una cadena con los nombre y la cantidad, que será visualizada en el programa principal.

  4. Calcular el desembolso que realizará la empresa. Para ello, creará una función llamada Cálculo_nómina, que me devuelva la cantidad a pagar por la empresa, esta información se visualizará en el programa principal.

  5. Salir.

Análisis

Diagrama

Archivo Nómina

file-download
39B

Código programa principal.

La función def menu() visualiza las opciones, def pedir_datos(mensaje,limite), permite de validar las diferentes opciones del menú y para validar el número de horas.

circle-info

OJO nomina=[["IRIA","A",5],["JUAN","B",5],["JUAN","A",5]] es para poder poder probar las opciones 2,3. Pero no se sabe cuantos datos tendra debe ser nomina=[]

Elementos comunes

Se pregunta en la opción 1 y opción 2 la categoría, con lo cuál se debe validar y crear una sola función que lo permita en este caso se llama pedir_categoria (categoria_precio).

Opción 1. Introducir los datos diarios de los trabajadores por teclado

pedir_datos(nominamcantidad,tupla,categoria_precio), permite introducir los datos diarios de los trabajadores y verificar_nombre(nomina,nombre), verifica que ese trabajador no exceda las 8 horas.

Opción1. Obtiene los datos de un archivo.

circle-info

El archivo nomina.txt está al principio

Opción 1. Programa principal

Opción 2. Indicar cuantos trabajadores hicieron un trabajo perteneciente a una categoría (A o B)

Funcion con listas

Función con numpy

circle-info

Ojo que le factaría a la Opción 2. Con listas o numpy

Programa principal. Opción 2

Puntualizaciones

La opción 1 y la opción 2, le preguntan al usuario cuál es la categoría y validan. Con lo cuál, lo más conveniente, es crear una función que permita validar la categoria, en este caso se llamará def pedir_categoria (categoria_precio).

Programa principal. Opción 2

Opción 3. Indicar cuantos trabajadores no realizaron ningún trabajo y su nombre

La función def visualizar_conjunto(Trabajadores_sintrabajo), se utiliza para imprimir el valor del conjunto

Programa Principal. Opción 3

Opción 4. Desembolso de la empresa. Nómina

Programa Principal. Opción 3

Última actualización