Ayuda con un Proyecto en C
Publicado por Ernesto (14 intervenciones) el 15/06/2019 22:52:09
necesito ayuda con un proyecto es de lista enlazadas en C, agradecería cualquier ayuda ayuda
Objetivo: Aplicar estructuras dinámicas, listas enlazadas, Imitando el manejo de archivos relacionados en Base de Datos, en relación de 1 a “n”. Un empleado puede tener de 1 a “n” Horas_Extras.
Enunciado: La Empresa “Trabajando para Ud.”, requiere controlar las horas extras realizadas en un mes determinado. Nota: En el mes se trabajan 180 horas. Valor de una hora = Sbase / 180 La hora extra se cancela con un 50% adicional
Registro Empleado son:
* Cod_Empleado
* Nombre
* Cargo
* Sbase
Registro Horas_Extras:
* Folio (numérico correlativo)
* Cod_Empleado
* Día (int)
* Cantidad horas extras (int)
* Monto (int)
Pauta de evaluación:
a) Ingreso de Empleados (10 puntos)
b) Listar todos los empleados de la lista principal (10 puntos)
c) Listar todas las horas extras de un determinado empleado. Al final de la lista imprimir cantidad de horas extras y el monto total. (20 puntos) Salida: Código Empleado, Nombre, Folio, Dia, Sbase, Cantidad, Valor HExtra, Monto
d) Listar todas las horas extras realizadas en un rango de día en el mes.(20 puntos) Listado de Horas Extras en el rango de Día Inicio: 99 hasta Día final. 99 Detalle: ……………………………………………………………………… e) Implementar un menú, el proceso se realiza mientras lo desee el usuario. (10 puntos)
Nota: los empleados y las horas extras se almacenan a la cola de las listas respectivas.
Esto llevo:
Objetivo: Aplicar estructuras dinámicas, listas enlazadas, Imitando el manejo de archivos relacionados en Base de Datos, en relación de 1 a “n”. Un empleado puede tener de 1 a “n” Horas_Extras.
Enunciado: La Empresa “Trabajando para Ud.”, requiere controlar las horas extras realizadas en un mes determinado. Nota: En el mes se trabajan 180 horas. Valor de una hora = Sbase / 180 La hora extra se cancela con un 50% adicional
Registro Empleado son:
* Cod_Empleado
* Nombre
* Cargo
* Sbase
Registro Horas_Extras:
* Folio (numérico correlativo)
* Cod_Empleado
* Día (int)
* Cantidad horas extras (int)
* Monto (int)
Pauta de evaluación:
a) Ingreso de Empleados (10 puntos)
b) Listar todos los empleados de la lista principal (10 puntos)
c) Listar todas las horas extras de un determinado empleado. Al final de la lista imprimir cantidad de horas extras y el monto total. (20 puntos) Salida: Código Empleado, Nombre, Folio, Dia, Sbase, Cantidad, Valor HExtra, Monto
d) Listar todas las horas extras realizadas en un rango de día en el mes.(20 puntos) Listado de Horas Extras en el rango de Día Inicio: 99 hasta Día final. 99 Detalle: ……………………………………………………………………… e) Implementar un menú, el proceso se realiza mientras lo desee el usuario. (10 puntos)
Nota: los empleados y las horas extras se almacenan a la cola de las listas respectivas.
Esto llevo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
struct _empleado {
int Cod_empleado;
char nombre[20];
char cargo[12];
int Sbase;
struct _empleado *siguiente;
};
struct _empleado *primero, *ultimo;
void mostrar_menu() {
printf("\n\nMenú:\n=====\n\n");
printf("1.- Añadir elementos\n");
printf("2.- Borrar elementos\n");
printf("3.- Mostrar lista\n");
printf("4.- Salir\n\n");
printf("Escoge una opción: ");fflush(stdout);
}
void anadir_elemento() {
struct _empleado *nuevo;
nuevo = (struct _empleado *) malloc (sizeof(struct _empleado));
if (nuevo==NULL) printf( "No hay memoria disponible!\n");
printf("\nNuevo elemento:\n");
printf("Cod_empleado: "); fflush(stdout);
gets(nuevo->Cod_empleado);
printf("Nombre: "); fflush(stdout);
gets(nuevo->nombre);
printf("Cargo: "); fflush(stdout);
gets(nuevo->cargo);
printf("Sueldo Base: "); fflush(stdout);
gets(nuevo->Sbase);
nuevo->siguiente = NULL;
if (primero==NULL) {
printf( "Primer elemento\n");
primero = nuevo;
ultimo = nuevo;
}
else {
ultimo->siguiente = nuevo;
ultimo = nuevo;
}
}
void mostrar_lista() {
struct _empleado *auxiliar;
int i;
i=0;
auxiliar = primero;
printf("\nMostrando la lista completa:\n");
while (auxiliar!=NULL) {
printf( "Codigo_Empleado: %s, Nombre: %s, Cargo: %s, Sbase: %s\n",
auxiliar->Cod_empleado,auxiliar->nombre,auxiliar->cargo,auxiliar->Sbase);
auxiliar = auxiliar->siguiente;
i++;
}
if (i==0) printf( "\nLa lista está vacía!!\n" );
}
int main() {
char opcion;
primero = (struct _empleado *) NULL;
ultimo = (struct _empleado *) NULL;
do {
mostrar_menu();
opcion = getch();
switch ( opcion ) {
case '1': anadir_elemento();
break;
case '2': printf("No disponible todavía!\n");
break;
case '3': mostrar_lista(primero);
break;
case '4': exit( 1 );
default: printf( "Opción no válida\n" );
break;
}
} while (opcion!='4');
}
Valora esta pregunta


0