Skip to content

Commit 96352c1

Browse files
authored
Merge pull request mouredev#6773 from caterinarodriguezdev/11---javascript
#11 - javascript
2 parents b9d49b9 + 4c79630 commit 96352c1

File tree

1 file changed

+225
-0
lines changed

1 file changed

+225
-0
lines changed
Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
/*
2+
* IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio.
3+
*
4+
* EJERCICIO:
5+
* Desarrolla un programa capaz de crear un archivo que se llame como
6+
* tu usuario de GitHub y tenga la extensión .txt.
7+
* Añade varias líneas en ese fichero:
8+
* - Tu nombre.
9+
* - Edad.
10+
* - Lenguaje de programación favorito.
11+
* Imprime el contenido.
12+
* Borra el fichero.
13+
*
14+
* DIFICULTAD EXTRA (opcional):
15+
* Desarrolla un programa de gestión de ventas que almacena sus datos en un
16+
* archivo .txt.
17+
* - Cada producto se guarda en una línea del archivo de la siguiente manera:
18+
* [nombre_producto], [cantidad_vendida], [precio].
19+
* - Siguiendo ese formato, y mediante terminal, debe permitir añadir, consultar,
20+
* actualizar, eliminar productos y salir.
21+
* - También debe poseer opciones para calcular la venta total y por producto.
22+
* - La opción salir borra el .txt.
23+
*/
24+
25+
const fs = require('fs');
26+
27+
const crearArchivoTexto = (nombre, edad, lenguaje) => {
28+
const contenido = `Mi nombre es ${nombre}, tengo ${edad} años y mi lenguaje de programación favorito es ${lenguaje}`;
29+
fs.writeFile(nombre + '.txt', contenido, (error) => {
30+
if (error) {
31+
console.error('Error al crear el archivo:', error);
32+
}
33+
});
34+
}
35+
36+
const readline = require('readline');
37+
const rl = readline.createInterface(process.stdin, process.stdout );
38+
39+
let productos = [];
40+
41+
const gestionDeVentas = () => {
42+
43+
console.log(`
44+
45+
----------------------------------------------
46+
BIENVENIDO AL PROGRAMA DE GESTIÓN DE VENTAS:
47+
1. Añadir producto
48+
2. Eliminar producto
49+
3. Ver productos
50+
4. Actualizar producto`);
51+
52+
rl.question('Elija una opción -> ', (term) => {
53+
switch(term) {
54+
case '1':
55+
addProduct();
56+
break;
57+
case '2':
58+
deleteProduct();
59+
break;
60+
case '3':
61+
listProducts();
62+
break;
63+
case '4':
64+
updateProduct();
65+
break;
66+
default:
67+
gestionDeVentas();
68+
break;
69+
}
70+
})
71+
}
72+
73+
const addProduct = () => {
74+
rl.question('Nombre del producto -> ', (term) => {
75+
const nombre = term;
76+
77+
rl.question('Cantidad vendida -> ', (term) => {
78+
const cantidadVendida = term;
79+
80+
rl.question('Precio -> ', (term) => {
81+
const precio = term;
82+
83+
const producto = {
84+
nombre,
85+
cantidadVendida,
86+
precio
87+
}
88+
89+
productos.push(producto);
90+
91+
updateFromProductos();
92+
93+
console.log('Producto añadido!');
94+
95+
gestionDeVentas();
96+
})
97+
})
98+
})
99+
}
100+
101+
const deleteProduct = () => {
102+
rl.question('Nombre del producto que quiere eliminar -> ', (term) => {
103+
productos = productos.filter(prod => prod.nombre !== term);
104+
105+
updateFromProductos();
106+
107+
console.log('Producto eliminado!');
108+
109+
gestionDeVentas();
110+
})
111+
}
112+
113+
const listProducts = () => {
114+
productos.forEach(prod =>
115+
console.log(`Nombre: ${prod.nombre}, Cantidad Vendida: ${prod.cantidadVendida}, Precio: ${prod.precio}`)
116+
);
117+
rl.question('Seguir? -> ', (term) => {
118+
if (term === 'Si') {
119+
gestionDeVentas();
120+
} else {
121+
rl.close();
122+
}
123+
})
124+
}
125+
126+
const updateProduct = () => {
127+
rl.question('¿Qué producto desea actualizar? -> ', (term) => {
128+
let prodToUpdate = productos.find(prod => prod.nombre === term);
129+
130+
if (!prodToUpdate) {
131+
console.log('Producto no encontrado.');
132+
return gestionDeVentas();
133+
}
134+
135+
let prodIndex = productos.indexOf(prodToUpdate);
136+
137+
rl.question('¿Qué desea actualizar? -> ', (term) => {
138+
139+
switch(term) {
140+
case 'nombre':
141+
rl.question('¿Qué nombre desea ponerle? -> ', (term) => {
142+
prodToUpdate.nombre = term;
143+
productos[prodIndex] = prodToUpdate;
144+
145+
updateFromProductos();
146+
console.log('Producto actualizado!');
147+
gestionDeVentas();
148+
});
149+
break;
150+
case 'cantidad vendida':
151+
rl.question('¿Qué cantidad se ha vendido? -> ', (term) => {
152+
prodToUpdate.cantidadVendida = term;
153+
productos[prodIndex] = prodToUpdate;
154+
155+
updateFromProductos();
156+
console.log('Producto actualizado!');
157+
gestionDeVentas();
158+
});
159+
break;
160+
case 'precio':
161+
rl.question('¿Qué precio tiene? -> ', (term) => {
162+
prodToUpdate.cantidadVendida = term;
163+
productos[prodIndex] = prodToUpdate;
164+
165+
updateFromProductos();
166+
console.log('Producto actualizado!');
167+
gestionDeVentas();
168+
});
169+
break;
170+
}
171+
})
172+
})
173+
}
174+
175+
const updateFromProductos = () => {
176+
let content = '';
177+
productos.forEach(prod => content += `\n${prod.nombre}, ${prod.cantidadVendida}, ${prod.precio}`);
178+
fs.writeFile('gestionProductos.txt', content, (error) => {
179+
if (error) {
180+
console.error('Error al crear el archivo:', error);
181+
}
182+
});
183+
}
184+
185+
const crearArchivoTextoWithReadline = () => {
186+
rl.question('Nombre -> ', (term) => {
187+
const nombre = term;
188+
189+
rl.question('Edad -> ', (term) => {
190+
const edad = term;
191+
192+
rl.question('Lenguaje de programación favorito -> ', (term) => {
193+
const lenguaje = term;
194+
195+
crearArchivoTexto(nombre, edad, lenguaje);
196+
197+
console.log('Archivo Creado :)');
198+
199+
entryPoint();
200+
})
201+
})
202+
})
203+
}
204+
205+
const entryPoint = () => {
206+
207+
console.log(` PROGRAMAS
208+
1. Crea un archivo de texto
209+
2. Controla tus ventas`);
210+
211+
rl.question('¿Qué programa quiere iniciar? -> ', (term) => {
212+
switch(term) {
213+
case '1':
214+
crearArchivoTextoWithReadline();
215+
break;
216+
case '2':
217+
gestionDeVentas();
218+
break;
219+
default:
220+
'Por favor, elije un programa existente :,('
221+
}
222+
})
223+
}
224+
225+
entryPoint();

0 commit comments

Comments
 (0)