Skip to content

Commit 465f0ad

Browse files
committed
Merge branch 'develop/exercise-11'
2 parents 19fcb5a + d01f60a commit 465f0ad

File tree

1 file changed

+174
-0
lines changed

1 file changed

+174
-0
lines changed
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
import fs from 'fs'
2+
const info = ['Pedro', 23, 'JavaScript']
3+
4+
5+
function archivoTxt(operation) {
6+
switch (operation) {
7+
case 'crearEnUnaLinea':
8+
fs.writeFileSync('pedamoci.txt', `Nombre: ${info[0]}\nEdad: ${info[1]}\nLenguaje favorito: ${info[2]}`)
9+
break;
10+
case 'crearEnVariasLineas':
11+
fs.writeFileSync('pedamoci.txt', `Nombre: ${info[0]}`)
12+
fs.appendFileSync('pedamoci.txt', `\nEdad: ${info[1]}`)
13+
fs.appendFileSync('pedamoci.txt', `\nLenguaje favorito: ${info[2]}`)
14+
break;
15+
case 'imprimir':
16+
console.log(fs.readFileSync('pedamoci.txt', 'utf8'))
17+
break;
18+
case 'borrar':
19+
fs.unlinkSync('./pedamoci.txt')
20+
console.log('Archivo borrado')
21+
break;
22+
default:
23+
break;
24+
}
25+
}
26+
27+
archivoTxt('crearEnUnaLinea')
28+
archivoTxt('imprimir')
29+
archivoTxt('borrar')
30+
archivoTxt('crearEnVariasLineas')
31+
archivoTxt('imprimir')
32+
archivoTxt('borrar')
33+
34+
// ---------------------------------------------- DIFICULTAD EXTRA ----------------------------------------------
35+
import readline from 'readline' // importe fs arriba
36+
37+
function preguntar(pregunta) {
38+
const rl = readline.createInterface({
39+
input: process.stdin,
40+
output: process.stdout
41+
})
42+
43+
return new Promise(resolve => {
44+
rl.question(pregunta, (respuesta) => {
45+
rl.close()
46+
resolve(respuesta)
47+
})
48+
})
49+
}
50+
51+
function actualizarDatos(info) { // borra la base de datos y la vuelve a crear con los estos actualizados
52+
let i = 0
53+
while (i < info.length) {
54+
if (i === 0) {
55+
fs.unlinkSync('./productos.txt')
56+
fs.writeFileSync('productos.txt', `[${info[i++]}], [${info[i++]}], [${info[i++]}]`) // lo ordena por nombre,cantidad vendida,precio
57+
} else {
58+
fs.appendFileSync('productos.txt', `\n[${info[i++]}], [${info[i++]}], [${info[i++]}]`)
59+
}
60+
}
61+
}
62+
63+
async function consultar() {
64+
let consultar = await preguntar('Ingrese "todo" o el "nombre de producto" según lo que quiera consultar: ')
65+
if (consultar === 'todo') {
66+
console.log(fs.readFileSync('productos.txt', 'utf8').replaceAll('[', '').replaceAll(']', '')) // imprime toda la base de datos
67+
} else {
68+
let info = fs.readFileSync('productos.txt', 'utf8').replaceAll("\n", ',').replace(/[\[\]\s]/g, '').split(',') // transforma el string de datos en un array con todos ellos separados
69+
console.log(info)
70+
if (info.includes(consultar)) {
71+
index = info.indexOf(consultar) // busca el index del nombre del producto
72+
console.log(`${consultar}, ${info[++index]}, ${info[++index]}`) // al index del producto se le suma 1 para saber la cantidad vendida y 2 para el precio
73+
} else console.log('El producto no existe')
74+
}
75+
}
76+
77+
async function actualizar() {
78+
let producto = await preguntar('Ingrese el nombre del producto que desea actualizar: ')
79+
let info = fs.readFileSync('productos.txt', 'utf8').replaceAll("\n", ',').replace(/[\[\]\s]/g, '').split(',') // transforma el string de datos en un array con todos ellos separados
80+
if (info.includes(producto)) {
81+
let update
82+
do {
83+
update = await preguntar('Que desea actualizar precio o cantidad?' + "\n")
84+
if (update === 'precio') {
85+
let precio = await preguntar('Ingrese el nuevo precio: ')
86+
info.splice(info.indexOf(producto) + 2, 1, precio) // remplaza el precio viejo por el nuevo
87+
} else if (update === 'cantidad') {
88+
let cantidad = await preguntar('Ingrese la nueva cantidad de ventas: ')
89+
info.splice(info.indexOf(producto) + 1, 1, cantidad)// remplaza la cantidad vendida vieja por la nueva
90+
}
91+
} while (update !== 'precio' && update !== 'cantidad')
92+
console.log(info)
93+
actualizarDatos(info)
94+
console.log('Producto actualizado')
95+
} else console.log('El producto no existe')
96+
}
97+
98+
async function borrar() {
99+
let producto = await preguntar('Ingrese el nombre del producto que quiere borrar: ')
100+
let info = fs.readFileSync('productos.txt', 'utf8').replaceAll("\n", ',').replace(/[\[\]\s]/g, '').split(',') // transforma el string de datos en un array con todos ellos separados
101+
if (info.includes(producto)) {
102+
index = info.indexOf(producto)
103+
info = info.slice(0,index).concat(info.slice(index + 3)) // al array de productos los separa en dos dejando fuera el producto que se desea eliminar y une las otras dos partes
104+
actualizarDatos(info)
105+
} else console.log('El producto no existe')
106+
}
107+
108+
async function calcular() {
109+
let calc = await preguntar('Ingresa:' + '\n' + 'total --> si queres calcular el total recaudado' + '\n' + 'producto --> si queres calcular lo recaudado de un producto' + '\n' + 'cantidad --> si queres calcular toda la cantidad vendida' + "\n")
110+
let result = 0
111+
let info = fs.readFileSync('productos.txt', 'utf8').replaceAll("\n", ',').replace(/[\[\]\s]/g, '').split(',') // transforma el string de datos en un array con todos ellos separados
112+
if (calc === 'total') {
113+
for (let i = 4; i < info.length; i++) { // empieza en 4 ya que los primero 3 valores son palabras y el cuarto es el nombre del primer producto
114+
result = result + (parseInt(info[i]) * parseInt(info[++i]))
115+
++i
116+
}
117+
console.log(`El total recaudado es de: $${result}`)
118+
} else if (calc === 'producto') {
119+
let producto = await preguntar('Ingrese el nombre del producto: ')
120+
if (info.includes(producto)) {
121+
let index = info.indexOf(producto)
122+
console.log(`Lo recaudado de ${producto} es $${parseInt(info[++index]) * parseInt(info[++index])}`)
123+
} else {
124+
console.log('El producto no existe')
125+
}
126+
} else if (calc === 'cantidad') {
127+
for (let i = 4; i < info.length; i++) { // empieza en 4 ya que los primero 3 valores son palabras y el cuarto es el nombre del primer producto
128+
result = result + parseInt(info[i])
129+
i = i + 2
130+
}
131+
console.log(`Se han vendido ${result} productos`)
132+
}
133+
}
134+
135+
async function program(operacion) {
136+
switch (operacion) {
137+
case 'añadir':
138+
let addProducto = await preguntar('Ingrese el nombre del producto: ')
139+
let addCantidadVendida = await preguntar('Ingrese la cantidad de ventas del producto: ')
140+
let addPrecio = await preguntar('Ingrese el precio del producto: ')
141+
fs.appendFileSync('productos.txt', `\n[${addProducto}], [${addCantidadVendida}], [${addPrecio}]`)
142+
console.log('El pruducto se ha añadido')
143+
break;
144+
case 'consultar':
145+
await consultar()
146+
break;
147+
case 'actualizar':
148+
await actualizar()
149+
break;
150+
case 'borrar':
151+
await borrar()
152+
break;
153+
case 'calcular':
154+
await calcular()
155+
break;
156+
case 'salir':
157+
fs.unlinkSync('./productos.txt')
158+
break;
159+
default:
160+
console.log('La operacion no existe')
161+
break;
162+
}
163+
}
164+
165+
async function start() {
166+
fs.writeFileSync('productos.txt', `[Producto], [Cantidad-Vendida], [Precio]`)
167+
let operacion
168+
do {
169+
operacion = await preguntar('Que operación desea realizar? (añadir, consultar, actualizar, borrar, calcular, salir)' + "\n")
170+
await program(operacion)
171+
} while (operacion !== 'salir')
172+
}
173+
174+
start()

0 commit comments

Comments
 (0)