Funciones en C: Gestión de Inventario con y sin Punteros
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 8,63 KB
Funciones en C: Gestión de Inventario
A continuación, se presenta un ejemplo de código en C que implementa un sistema de gestión de inventario. Se exploran dos versiones: una que utiliza punteros y otra que no. Se detallan las funciones principales, incluyendo main, menu, salir, mostrar e insertar.
Función main (sin punteros)
La función main sin punteros gestiona el flujo principal del programa. Presenta un menú al usuario y ejecuta las acciones correspondientes según la opción seleccionada.
int main() {
int opcion;
do {
limpiarPantalla();
printf("\n\n MENÚ:\n\n");
printf("\t 1. Mostrar la lista de estrellas\n\n");
printf("\t 2. Insertar una nueva estrella\n\n");
printf("\t 3. Consultar los datos de una estrella\n\n");
printf("\t 4. Modificar los datos de una estrella\n\n");
printf("\t 5. Borrar una estrella\n\n");
printf("\t 6. Guardar en el disco\n\n");
printf("\t 7. Recuperar los datos del inventario guardado.\n\n");
printf("\t 8. Salir\n\n");
printf("Elija una opción: \n\n");
scanf("%d", &opcion);
switch (opcion) {
case 1:
mostrarEstrellas();
break;
case 2:
insertarEstrella();
break;
case 3:
consultarEstrella();
break;
case 4:
modificarEstrella();
break;
case 5:
borrarEstrella();
break;
case 6:
guardarEnDisco();
break;
case 7:
recuperarDesdeDisco();
break;
case 8:
printf("Saliendo...\n");
break;
default:
printf("Opción no válida.\n");
}
printf("\nPresione Enter para continuar...");
getchar();
getchar();
} while (opcion != 8);
return 0;
}
Función main (con punteros)
La función main con punteros también gestiona el flujo principal, pero utiliza punteros para manipular las estructuras de datos.
void main() {
int respuesta;
char algomas[3];
cabecera = NULL;
do {
respuesta = menu();
switch (respuesta) {
case 1:
Mostrar();
break;
case 2:
Insertar();
break;
case 3:
Consultar();
break;
case 4:
Modificacion();
break;
case 5:
Guardado();
break;
case 6:
Borrado();
break;
case 7:
Recuperar();
break;
case 8:
Salir();
break;
default:
printf("La opción no es válida.\n\n");
printf("Pulse intro para continuar.\n\n");
gets(algomas);
break;
}
} while (respuesta != 8);
}
Función menú (con punteros)
La función menú muestra las opciones disponibles al usuario y devuelve la opción seleccionada.
int menu() {
int resp;
system("cls");
printf("\n\n MENÚ DE LA FERRETERÍA \n\n");
printf("\t 1: Mostrar la lista de productos disponibles.\n\n");
printf("\t 2: Insertar un nuevo producto.\n\n");
printf("\t 3: Consultar el inventario.\n\n");
printf("\t 4: Modificar algún producto.\n\n");
printf("\t 5: Guardar en el disco.\n\n");
printf("\t 6: Borrar algún producto del inventario.\n\n");
printf("\t 7: Recuperar los datos del inventario guardado.\n\n");
printf("\t 8: Salir.\n\n");
printf("Elija una opción del menú:\n\n");
scanf("%d", &resp);
return (resp);
}
Función menú (sin punteros)
La función menú sin punteros tiene una estructura similar a la versión con punteros.
int menu() {
int resp;
return resp;
}
// Dentro de la función main:
int respuesta;
Almacen.cursor = 0;
do {
respuesta = menu();
switch (respuesta) {
case 1:
Mostrar();
break;
case 2:
Insertar();
break;
}
} while (respuesta != 8);
Función salir (con punteros)
La función salir se encarga de finalizar la ejecución del programa.
void Salir() {
char algomas[3];
printf("Pulse intro para salir.\n");
fflush(stdin);
gets(algomas);
}
Función salir (sin punteros)
La función salir sin punteros se integra dentro del switch de la función main.
// En la función main, dentro del switch:
case 8:
printf("Ha elegido la opción de salir del programa.\n\n");
printf("Pulse una tecla para continuar");
fflush(stdin);
gets(algomas);
break;
// En la función main:
char algomas[3];
Función mostrar (con punteros)
La función mostrar recorre la lista de productos y muestra sus datos en pantalla.
void Mostrar() {
int i;
char algomas[3];
system("cls");
i = 0;
if (cabecera == NULL) {
printf("\n No hay ningún producto guardado.\n");
} else {
aux = cabecera;
while (aux != NULL) {
printf("\n Posición del producto que se va a mostrar: %d \n", i);
printf("Nombre del producto: %s\n", aux->datos.Nombre);
printf("Número de cajas del producto: %d\n", aux->datos.Numero);
printf("Número de la posición en el almacén: %d\n", aux->datos.Pos);
printf("Letra de la posición en el almacén: %s\n", aux->datos.Letra);
printf("Precio del producto por unidad: %3f\n", aux->datos.Precio);
aux = aux->sig;
i = i + 1;
}
}
printf("\n Pulse intro para regresar al menú.\n");
fflush(stdin);
gets(algomas);
}
Función insertar (con punteros)
La función insertar permite añadir un nuevo producto al inventario.
void Insertar() {
int opcion;
char tecla[3];
system("cls");
do {
nuevo = malloc(sizeof(struct nodo));
nuevo->sig = NULL;
if (cabecera == NULL) {
cabecera = nuevo;
ultimo = nuevo;
} else {
ultimo->sig = nuevo;
ultimo = nuevo;
}
printf("Introduce el nombre del producto: \n");
fflush(stdin);
gets(nuevo->datos.Nombre);
printf("Introduce el número de cajas: \n");
scanf("%d", &nuevo->datos.Numero);
printf("Introduce el número de la posición en el almacén: \n");
scanf("%d", &nuevo->datos.Pos);
printf("Introduce la letra de la posición en el almacén: \n");
fflush(stdin);
gets(nuevo->datos.Letra);
printf("Introduce el precio unitario del producto: \n");
scanf("%f", &nuevo->datos.Precio);
printf("\n Si desea introducir otro producto pulse 1, sino 2: \n");
scanf("%d", &opcion);
} while (opcion == 1);
}
Función insertar (sin punteros)
La función insertar sin punteros también permite añadir un nuevo producto, pero utiliza una estructura de datos diferente.
void Insertar() {
system("cls");
char tecla[3];
int opcion;
do {
printf("Introduce el nombre del producto:\n");
fflush(stdin);
gets(Almacen.Bloque[Almacen.cursor].Nombre);
printf("Introduce el número de cajas:\n");
scanf("%d", &Almacen.Bloque[Almacen.cursor].Numero);
printf("Introduce el número de posición en el almacén:\n");
scanf("%d", &Almacen.Bloque[Almacen.cursor].Pos);
printf("Introduce la letra de la posición en el almacén:\n");
fflush(stdin);
gets(Almacen.Bloque[Almacen.cursor].Letra);
printf("Introduce el precio unitario del producto: \n");
scanf("%f", &Almacen.Bloque[Almacen.cursor].Precio);
printf("El producto ha sido introducido de forma correcta. Por favor, pulse cualquier tecla.\n");
Almacen.cursor++;
printf("\n Si desea introducir otro producto pulse 1, sino pulse 2.\n");
scanf("%d", &opcion);
} while (opcion == 1);
}