Skip to content

Commit 1c3b0eb

Browse files
committed
#11 - TypeScript
1 parent e1402e2 commit 1c3b0eb

File tree

1 file changed

+213
-0
lines changed
  • Roadmap/11 - MANEJO DE FICHEROS/typescript

1 file changed

+213
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
// 1º Ejercicio
2+
import * as fs from 'fs/promises';
3+
import { writeFile, readFile, unlink } from 'fs/promises'; //Utilizamos esto para poder manejar ficheros.
4+
5+
let nickname : string = 'Igledev'; //Ponemos nuestro nombre de GitHub
6+
7+
// Creamos el contenido de nuestro archivo
8+
let msg : string = `
9+
Nombre : Adrián
10+
Edad : 19
11+
Lenguaje de programación favorito : TypeScript
12+
`
13+
14+
let nombre_archivo = `${nickname}.txt` // Llamamos al archivo como nuestro nombre de Github
15+
16+
writeFile(nombre_archivo, msg)
17+
.then(() => {
18+
// Leemos el contenido de nuestro archivo.
19+
return readFile(nombre_archivo, 'utf8');
20+
})
21+
.then(msg => {
22+
// Mostramos el archivo
23+
console.log(`Contenido del archivo ${msg}`)
24+
25+
// Borramos el archivo
26+
return unlink(nombre_archivo);
27+
})
28+
.then(() => {
29+
console.log(`Archivo borrado ${nombre_archivo}`)
30+
})
31+
.catch((error) => {
32+
throw new Error(`Fallo en el archivo: ${error}`);
33+
});
34+
35+
// Ejercicio Extra
36+
let nombreArchivo = 'ventas.txt';
37+
38+
// Función para mostrar el menú
39+
function mostrarMenu() {
40+
console.log('\n--- Menú ---');
41+
console.log('1. Añadir producto');
42+
console.log('2. Consultar producto');
43+
console.log('3. Actualizar producto');
44+
console.log('4. Eliminar producto');
45+
console.log('5. Calcular venta total');
46+
console.log('6. Calcular venta por producto');
47+
console.log('7. Salir');
48+
}
49+
50+
// Función para añadir un producto
51+
async function agregarProducto() {
52+
let nombreProducto = await obtenerInput('Nombre del producto:');
53+
let cantidadVendida = parseFloat(await obtenerInput('Cantidad vendida:'));
54+
let precio = parseFloat(await obtenerInput('Precio:'));
55+
let linea = `${nombreProducto}, ${cantidadVendida}, ${precio}\n`;
56+
57+
await fs.appendFile(nombreArchivo, linea);
58+
console.log('Producto agregado correctamente.');
59+
}
60+
61+
// Función para consultar un producto
62+
async function consultarProducto() {
63+
let nombreProducto = await obtenerInput('Nombre del producto:');
64+
try {
65+
let contenido = await fs.readFile(nombreArchivo, 'utf-8');
66+
let lineas = contenido.split('\n');
67+
let producto = lineas.find(linea => linea.startsWith(nombreProducto));
68+
if (producto) {
69+
console.log('Datos del producto:', producto);
70+
} else {
71+
console.log('Producto no encontrado.');
72+
}
73+
} catch (error) {
74+
console.error('Error al leer el archivo:', error);
75+
}
76+
}
77+
78+
// Función para actualizar un producto
79+
async function actualizarProducto() {
80+
let nombreProducto = await obtenerInput('Nombre del producto:');
81+
let nuevaCantidad = parseFloat(await obtenerInput('Nueva cantidad vendida:'));
82+
let nuevoPrecio = parseFloat(await obtenerInput('Nuevo precio:'));
83+
84+
try {
85+
let contenido = await fs.readFile(nombreArchivo, 'utf-8');
86+
let lineas = contenido.split('\n');
87+
let indice = lineas.findIndex(linea => linea.startsWith(nombreProducto));
88+
if (indice !== -1) {
89+
lineas[indice] = `${nombreProducto}, ${nuevaCantidad}, ${nuevoPrecio}`;
90+
await fs.writeFile(nombreArchivo, lineas.join('\n'));
91+
console.log('Producto actualizado correctamente.');
92+
} else {
93+
console.log('Producto no encontrado.');
94+
}
95+
} catch (error) {
96+
console.error('Error al leer/escribir el archivo:', error);
97+
}
98+
}
99+
100+
// Función para eliminar un producto
101+
async function eliminarProducto() {
102+
let nombreProducto = await obtenerInput('Nombre del producto a eliminar:');
103+
try {
104+
let contenido = await fs.readFile(nombreArchivo, 'utf-8');
105+
let lineas = contenido.split('\n');
106+
let filtradas = lineas.filter(linea => !linea.startsWith(nombreProducto));
107+
await fs.writeFile(nombreArchivo, filtradas.join('\n'));
108+
console.log('Producto eliminado correctamente.');
109+
} catch (error) {
110+
console.error('Error al leer/escribir el archivo:', error);
111+
}
112+
}
113+
114+
// Función para calcular la venta total
115+
async function calcularVentaTotal() {
116+
try {
117+
let contenido = await fs.readFile(nombreArchivo, 'utf-8');
118+
let lineas = contenido.split('\n');
119+
let ventaTotal = 0;
120+
for (let linea of lineas) {
121+
let [, cantidadVendida, precio] = linea.split(',').map(parseFloat);
122+
ventaTotal += cantidadVendida * precio;
123+
}
124+
console.log('Venta total:', ventaTotal.toFixed(2));
125+
} catch (error) {
126+
console.error('Error al leer el archivo:', error);
127+
}
128+
}
129+
130+
// Función para calcular la venta por producto
131+
async function calcularVentaPorProducto() {
132+
let nombreProducto = await obtenerInput('Nombre del producto:');
133+
try {
134+
let contenido = await fs.readFile(nombreArchivo, 'utf-8');
135+
let lineas = contenido.split('\n');
136+
let producto = lineas.find(linea => linea.startsWith(nombreProducto));
137+
if (producto) {
138+
let [, cantidadVendida, precio] = producto.split(',').map(parseFloat);
139+
console.log('Venta por producto:', (cantidadVendida * precio).toFixed(2));
140+
} else {
141+
console.log('Producto no encontrado.');
142+
}
143+
} catch (error) {
144+
console.error('Error al leer el archivo:', error);
145+
}
146+
}
147+
148+
// Función para obtener input del usuario
149+
async function obtenerInput(mensaje: string): Promise<string> {
150+
process.stdout.write(`${mensaje} `);
151+
return new Promise(resolve => {
152+
process.stdin.once('data', data => {
153+
resolve(data.toString().trim());
154+
});
155+
});
156+
}
157+
158+
// Función para salir y borrar el archivo
159+
async function salir() {
160+
try {
161+
await fs.unlink(nombreArchivo);
162+
console.log('Archivo borrado. Saliendo del programa.');
163+
process.exit();
164+
} catch (error) {
165+
console.error('Error al borrar el archivo:', error);
166+
}
167+
}
168+
169+
// Función principal
170+
async function main() {
171+
try {
172+
// Mostrar el menú
173+
mostrarMenu();
174+
175+
// Esperar la selección del usuario
176+
let opcion = parseInt(await obtenerInput('Selecciona una opción:'));
177+
178+
// Realizar la operación correspondiente
179+
switch (opcion) {
180+
case 1:
181+
await agregarProducto();
182+
break;
183+
case 2:
184+
await consultarProducto();
185+
break;
186+
case 3:
187+
await actualizarProducto();
188+
break;
189+
case 4:
190+
await eliminarProducto();
191+
break;
192+
case 5:
193+
await calcularVentaTotal();
194+
break;
195+
case 6:
196+
await calcularVentaPorProducto();
197+
break;
198+
case 7:
199+
await salir();
200+
break;
201+
default:
202+
console.log('Opción inválida.');
203+
}
204+
205+
// Volver a mostrar el menú
206+
main();
207+
} catch (error) {
208+
console.error('Error en el programa:', error);
209+
}
210+
}
211+
212+
// Iniciar el programa
213+
main();

0 commit comments

Comments
 (0)