Skip to content

Commit 9062a55

Browse files
JoseJose
authored andcommitted
#11 - javaScript
1 parent d29b693 commit 9062a55

File tree

1 file changed

+221
-0
lines changed

1 file changed

+221
-0
lines changed
Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
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+
// Ejercicio 1
26+
const fs = require("fs");
27+
28+
const nombreArchivo = "Glitzypanic.txt";
29+
const contenido = ["José Farías", "25", "javaScript"];
30+
const contenidoFinal = contenido.join("\n");
31+
32+
function errorCrear(err) {
33+
if (err) {
34+
console.log("Error al crear el archivo");
35+
return;
36+
} else {
37+
console.log("Archivo creado");
38+
39+
const datos = fs.readFileSync(nombreArchivo, { encoding: "utf-8" });
40+
console.log(datos);
41+
42+
fs.unlink(nombreArchivo, errorBorrar);
43+
}
44+
}
45+
46+
function errorBorrar(err) {
47+
if (err) {
48+
console.log("Error al borrar el archivo");
49+
return;
50+
} else {
51+
console.log("Archivo eliminado");
52+
}
53+
}
54+
55+
function agregarProducto() {
56+
fs.writeFile(nombreArchivo, contenidoFinal, errorCrear);
57+
}
58+
59+
agregarProducto();
60+
61+
//Ejercicio extra
62+
const fs = require("fs");
63+
const readline = require("readline");
64+
65+
const rl = readline.createInterface({
66+
input: process.stdin,
67+
output: process.stdout,
68+
});
69+
70+
const archivo = "inventario.txt";
71+
72+
function errorCrear(err) {
73+
if (err) {
74+
console.log("Error al crear el archivo");
75+
return;
76+
} else {
77+
console.log("Archivo creado");
78+
}
79+
}
80+
81+
function errorBorrar(err) {
82+
if (err) {
83+
console.log("Error al borrar el archivo");
84+
return;
85+
} else {
86+
console.log("Archivo eliminado");
87+
}
88+
}
89+
90+
function consultarProductos() {
91+
if (!fs.existsSync(archivo)) {
92+
console.log("No hay productos");
93+
menu();
94+
return;
95+
} else {
96+
const datos = fs.readFileSync(archivo, { encoding: "utf-8" });
97+
console.log(datos);
98+
menu();
99+
}
100+
}
101+
102+
function agregarProducto() {
103+
if (!fs.existsSync(archivo)) {
104+
fs.writeFileSync(archivo, "", errorCrear);
105+
}
106+
rl.question("Nombre del producto: ", (nombre) => {
107+
rl.question("Cantidad vendida: ", (cantidad) => {
108+
rl.question("Precio: ", (precio) => {
109+
const cantidadNumero = Number(cantidad);
110+
const precioNumero = Number(precio);
111+
const producto = `${nombre}, ${cantidadNumero}, ${precioNumero}\n`;
112+
fs.appendFileSync(archivo, producto);
113+
menu();
114+
});
115+
});
116+
});
117+
}
118+
119+
function actualizarProducto() {
120+
rl.question("Nombre del producto a actualizar: ", (nombre) => {
121+
const datos = fs.readFileSync(archivo, { encoding: "utf-8" });
122+
const productos = datos.split("\n");
123+
const producto = productos.find((p) => p.includes(nombre));
124+
if (producto) {
125+
rl.question("Nueva cantidad vendida: ", (cantidad) => {
126+
rl.question("Nuevo precio: ", (precio) => {
127+
const nuevoProducto = `${nombre}, ${cantidad}, ${precio}`;
128+
const nuevosProductos = productos.map((p) =>
129+
p.includes(nombre) ? nuevoProducto : p
130+
);
131+
fs.writeFileSync(archivo, nuevosProductos.join("\n"));
132+
menu();
133+
});
134+
});
135+
} else {
136+
console.log("Producto no encontrado");
137+
menu();
138+
}
139+
});
140+
}
141+
142+
function eliminarProducto() {
143+
rl.question("Nombre del producto a eliminar: ", (nombre) => {
144+
const datos = fs.readFileSync(archivo, { encoding: "utf-8" });
145+
const productos = datos.split("\n");
146+
const producto = productos.find((p) => p.includes(nombre));
147+
if (producto) {
148+
const nuevosProductos = productos.filter((p) => !p.includes(nombre));
149+
fs.writeFileSync(archivo, nuevosProductos.join("\n"));
150+
} else {
151+
console.log("Producto no encontrado");
152+
}
153+
menu();
154+
});
155+
}
156+
157+
function ventaTotal() {
158+
if (!fs.existsSync(archivo)) {
159+
console.log("No hay productos para calcular la venta total.");
160+
menu();
161+
return;
162+
}
163+
164+
const datos = fs.readFileSync(archivo, { encoding: "utf-8" });
165+
const productos = datos.split("\n").filter((line) => line.trim() !== ""); // Filtrar líneas vacías
166+
let total = 0;
167+
168+
productos.forEach((producto) => {
169+
const partes = producto.split(", ");
170+
if (partes.length === 3) {
171+
const precio = parseFloat(partes[2]); // Obtener el precio
172+
if (!isNaN(precio)) {
173+
total += precio; // Sumar el precio al total
174+
}
175+
}
176+
});
177+
178+
console.log(`La venta total es: $${total.toFixed(2)}`);
179+
menu();
180+
}
181+
182+
function salir() {
183+
fs.unlink(archivo, errorBorrar);
184+
rl.close();
185+
}
186+
187+
function menu() {
188+
console.log("1. Consultar productos");
189+
console.log("2. Agregar producto");
190+
console.log("3. Actualizar producto");
191+
console.log("4. Eliminar producto");
192+
console.log("5. Venta total");
193+
console.log("6. Salir");
194+
rl.question("Opción: ", (opcion) => {
195+
switch (opcion) {
196+
case "1":
197+
consultarProductos();
198+
break;
199+
case "2":
200+
agregarProducto();
201+
break;
202+
case "3":
203+
actualizarProducto();
204+
break;
205+
case "4":
206+
eliminarProducto();
207+
break;
208+
case "5":
209+
ventaTotal();
210+
break;
211+
case "6":
212+
salir();
213+
break;
214+
default:
215+
console.log("Opción no válida");
216+
break;
217+
}
218+
});
219+
}
220+
221+
menu();

0 commit comments

Comments
 (0)