-
Notifications
You must be signed in to change notification settings - Fork 0
/
scriptPH.js
176 lines (151 loc) · 5.32 KB
/
scriptPH.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
const prompt = require("prompt-sync")(); // Importa o módulo prompt-sync para entrada de dados no console de forma síncrona
const fs = require("fs"); // Importa o módulo fs para operações de leitura e escrita de arquivos
let library = []; // Declara uma variável para armazenar os livros cadastrados
// Função para cadastrar livros
function registerBooks() {
library = loadBookStore(); // Carrega a biblioteca existente
console.log(`******* Cadastro de Livro *******`);
let title = prompt("Digite o título da obra:");
let author = prompt("Digite o autor da obra:");
let publicationDate = {
day: Number(prompt("Digite o dia da publicação do livro:")),
month: Number(prompt("Digite o mês de publicação do livro:")),
year: Number(prompt("Digite o ano de publicação do livro:")),
};
let dateFormat = `${publicationDate.day}/${publicationDate.month}/${publicationDate.year}`;
let book = { title, author, dateFormat };
library.push(book); // Adiciona o livro à biblioteca
saveBookStore(library); // Salva a biblioteca atualizada
}
// Função para salvar a biblioteca em um arquivo
function saveBookStore(library) {
const jSonLibrary = JSON.stringify(library); // Converte a biblioteca para JSON
const libraryPath = "libraryPath.txt"; // Define o caminho do arquivo de biblioteca
fs.writeFileSync(libraryPath, jSonLibrary, "utf8", (err) => {
if (err) {
console.log(`Erro ao salvar o arquivo: ${err}`);
} else {
console.log(`Biblioteca salva com sucesso!`);
}
});
}
// Função para carregar a biblioteca do arquivo
function loadBookStore() {
try {
const data = JSON.parse(fs.readFileSync("libraryPath.txt")); // Lê os dados do arquivo e converte de JSON para objeto
return data; // Retorna os dados da biblioteca
} catch (erro) {
console.log(`Não há itens cadatrados!`);
return []; // Retorna uma matriz vazia se ocorrer algum erro ou o arquivo não existir
}
}
// Função para listar os livros da biblioteca
function listBooks() {
const library = loadBookStore(); // Carrega a biblioteca existente
if (library.length === 0) {
console.log("A biblioteca está vazia.");
return;
}
const ordination = prompt(
"Ordenar por título (T) ou por data de publicação (D)?"
);
let booksOrdained;
if (ordination.toUpperCase() === "T") {
booksOrdained = library
.slice()
.sort((a, b) => a.dateFormat.localeCompare(b.dateFormat)); // Ordena por título
} else if (ordination.toUpperCase() === "D") {
booksOrdained = library
.slice()
.sort((a, b) => new Date(a.dateFormat) - new Date(b.dateFormat)); // Ordena por data de publicação
} else {
console.log("Opção inválida.");
return;
}
console.log("******** Livros na biblioteca *********");
for (const book of booksOrdained) {
console.log(`Título: ${book.title}`);
console.log(`Autor: ${book.author}`);
console.log(`Data de publicação: ${book.dateFormat}`);
console.log("---");
}
}
// Função para remover um livro da biblioteca
function removeBook(library) {
console.log("********* REMOVER LIVRO **********");
const titulo = prompt("Digite o titulo do livro que ele deseja remover:");
const index = library.findIndex((livro) => livro.title === titulo);
if (index === -1) {
console.log(`Não há livros com esse título!`);
return;
}
library.splice(index, 1); // Remove o livro da biblioteca
saveBookStore(library); // Salva a biblioteca atualizada
console.log("********* LIVRO REMOVIDO ********");
}
// Função para exibir o menu de opções
function menu() {
console.log(`******** GERENCIADOR DE LIVROS ********`);
console.log(`(A) Cadatrar Livro`);
console.log(`(B) Remover Livro`);
console.log(`(C) Listar Livros`);
console.log(`(D) Editar Livro`);
console.log(`(E) Sair`);
console.log(`***************************************`);
}
function openLibrary() {
let operate = true;
do {
menu();
let option = prompt("Digite uma opção:");
switch (option.toUpperCase()) {
case "A":
registerBooks();
break;
case "B":
removeBook(library);
break;
case "C":
listBooks();
break;
case "D":
editBook();
break;
case "E":
operate = false;
console.log(`Obrigado,volte sempre!`);
break;
default:
console.log(`Digite uma opção válida!`);
break;
}
} while (operate);
}
function editBook() {
console.log(`******* Edição de livro *******`);
const titulo = prompt("Digite o título que deseja editar:");
const index = library.findIndex((livro) => livro.titulo === titulo);
if (index === -1) {
console.log(`Livro não encontrado!`);
return;
}
const livro = library[index];
console.log(`Digite o novo título:`);
const newTitle = prompt(`=>`);
console.log(`Digite o novo autor:`);
const newAuthor = prompt(`=>`);
console.log(`Digite a nova data de publicação(DD/MM/AAAA):`);
const newDate = prompt("=>");
if (newTitle.trim() !== "") {
livro.titulo = newTitle;
}
if (newAuthor.trim() !== "") {
livro.author = newAuthor;
}
if (newDate.trim() !== "") {
livro.dateFormat = newDate;
}
saveBookStore(library);
console.log(`******* Livro editado com sucesso! *******`);
}
openLibrary(); // Executa o programa chamando a função openLibrary()