Skip to content

Commit 1576c1f

Browse files
committed
#11 - JavaScript
1 parent fd2d873 commit 1576c1f

File tree

1 file changed

+161
-0
lines changed

1 file changed

+161
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
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 arhivo 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+
26+
/* Soluciones */
27+
28+
29+
const fs = require('fs');
30+
31+
// Nombre del usuario de GitHub
32+
const nombre = "Dan-Corbo";
33+
34+
// Nombre del archivo
35+
const nombreDelArchivo = `${nombre}.txt`;
36+
37+
// Contenido del archivo
38+
const datos = [
39+
"Nombre: Daniel Corbo",
40+
"Edad: 24",
41+
"Lenguaje de programación favorito: JavaScript"
42+
].join("\n");
43+
44+
// Escribir el contenido en el archivo
45+
fs.writeFileSync(nombreDelArchivo, datos);
46+
47+
// Leer el contenido del archivo
48+
console.log("Contenido del archivo:");
49+
console.log(fs.readFileSync(nombreDelArchivo, 'utf8'));
50+
51+
// Borrar el archivo
52+
fs.unlinkSync(nombreDelArchivo);
53+
console.log(`El archivo ${nombreDelArchivo} ha sido eliminado.`);
54+
55+
56+
57+
/* Extra - Opcional */
58+
59+
60+
const readline = require('readline');
61+
62+
const rl = readline.createInterface({
63+
input: process.stdin,
64+
output: process.stdout
65+
});
66+
67+
const fileName = "ventas.txt";
68+
69+
function agregarProductos() {
70+
rl.question('Ingrese el nombre del producto: ', (nombre) => {
71+
rl.question('Ingrese la cantidad vendida: ', (cantidad) => {
72+
rl.question('Ingrese el precio del producto: ', (precio) => {
73+
const data = `${nombre}, ${cantidad}, ${precio}\n`;
74+
fs.appendFileSync(fileName, data);
75+
console.log('Producto agregado correctamente.');
76+
mostrarMenu();
77+
});
78+
});
79+
});
80+
}
81+
82+
function mostrarTotal() {
83+
const data = fs.readFileSync(fileName, 'utf8');
84+
const lines = data.split('\n');
85+
let total = 0;
86+
for (const line of lines) {
87+
const [, cantidad, precio] = line.split(', ');
88+
total += parseInt(cantidad) * parseFloat(precio);
89+
}
90+
console.log(`Venta total: $${total.toFixed(2)}`);
91+
mostrarMenu();
92+
}
93+
94+
function mostrarProductos() {
95+
const data = fs.readFileSync(fileName, 'utf8');
96+
const lines = data.split('\n');
97+
for (const line of lines) {
98+
const [nombre, cantidad, precio] = line.split(', ');
99+
console.log(`${nombre}: ${cantidad} unidades vendidas a $${precio} c/u`);
100+
}
101+
mostrarMenu();
102+
}
103+
104+
function borrarProducto() {
105+
rl.question('Ingrese el nombre del producto a eliminar: ', (nombre) => {
106+
let newData = '';
107+
const data = fs.readFileSync(fileName, 'utf8');
108+
const lines = data.split('\n');
109+
for (const line of lines) {
110+
if (!line.startsWith(nombre)) {
111+
newData += line + '\n';
112+
}
113+
}
114+
fs.writeFileSync(fileName, newData);
115+
console.log('Producto eliminado correctamente.');
116+
mostrarMenu();
117+
});
118+
}
119+
120+
function mostrarMenu() {
121+
console.log("\n--- MENÚ ---");
122+
console.log("1. Añadir producto");
123+
console.log("2. Consultar venta total");
124+
console.log("3. Consultar venta por producto");
125+
console.log("4. Eliminar producto");
126+
console.log("5. Salir");
127+
128+
rl.question('Seleccione una opción: ', (option) => {
129+
switch (option) {
130+
case '1':
131+
agregarProductos();
132+
break;
133+
case '2':
134+
mostrarTotal();
135+
break;
136+
case '3':
137+
mostrarProductos();
138+
break;
139+
case '4':
140+
borrarProducto();
141+
break;
142+
case '5':
143+
fs.unlinkSync(fileName);
144+
console.log(`El archivo ${fileName} ha sido eliminado.`);
145+
rl.close();
146+
break;
147+
default:
148+
console.log('Opción no válida. Por favor, seleccione una opción del menú.');
149+
mostrarMenu();
150+
break;
151+
}
152+
});
153+
}
154+
155+
// Comprobar si el archivo existe
156+
if (!fs.existsSync(fileName)) {
157+
// Si el archivo no existe, crearlo
158+
fs.writeFileSync(fileName, '');
159+
}
160+
161+
mostrarMenu();

0 commit comments

Comments
 (0)