140 lines
3.4 KiB
TypeScript
140 lines
3.4 KiB
TypeScript
type Serie = {
|
|
id: number;
|
|
titulo: string;
|
|
ano: number;
|
|
finalizada: boolean;
|
|
};
|
|
|
|
let series: Serie[] = [];
|
|
let contadorId = 1;
|
|
|
|
function mostrarMenu(): void {
|
|
console.log(`
|
|
Sistema Gerenciador de Séries
|
|
|
|
1. Criar
|
|
2. Listar
|
|
3. Atualizar
|
|
4. Excluir
|
|
5. Sair
|
|
`);
|
|
}
|
|
|
|
function obterEntradaTexto(mensagem: string): string {
|
|
let entrada = prompt(mensagem) || "";
|
|
while (!entrada.trim()) {
|
|
console.log("Entrada inválida. Por favor, tente novamente.");
|
|
entrada = prompt(mensagem) || "";
|
|
}
|
|
return entrada.trim();
|
|
}
|
|
|
|
function obterEntradaNumero(mensagem: string): number {
|
|
let entrada = parseInt(prompt(mensagem) || "", 10);
|
|
while (!entrada || entrada <= 0) {
|
|
console.log("Por favor, insira um número válido.");
|
|
entrada = parseInt(prompt(mensagem) || "", 10);
|
|
}
|
|
return entrada;
|
|
}
|
|
|
|
function obterEntradaBooleano(mensagem: string): boolean {
|
|
let entrada = prompt(mensagem + " (s/n):") || "";
|
|
while (entrada !== "s" && entrada !== "n") {
|
|
console.log("Por favor, digite 's' para sim ou 'n' para não.");
|
|
entrada = prompt(mensagem + " (s/n):") || "";
|
|
}
|
|
return entrada === "s";
|
|
}
|
|
|
|
function criarSerie(): void {
|
|
const titulo = obterEntradaTexto("Digite o título da série:");
|
|
const ano = obterEntradaNumero("Digite o ano de lançamento da série:");
|
|
const finalizada = obterEntradaBooleano("A série foi finalizada");
|
|
|
|
const novaSerie: Serie = { id: contadorId, titulo, ano, finalizada };
|
|
series.push(novaSerie);
|
|
contadorId++;
|
|
console.log("Série cadastrada com sucesso!");
|
|
}
|
|
|
|
function listarSeries(): void {
|
|
if (series.length === 0) {
|
|
console.log("Nenhuma série cadastrada.");
|
|
return;
|
|
}
|
|
|
|
console.log("Listagem de séries:");
|
|
for (const serie of series) {
|
|
console.log(
|
|
`ID: ${serie.id} | Título: ${serie.titulo} | Ano: ${serie.ano} | Finalizada: ${
|
|
serie.finalizada ? "Sim" : "Não"
|
|
}`
|
|
);
|
|
}
|
|
}
|
|
|
|
function atualizarSerie(): void {
|
|
if (series.length === 0) {
|
|
console.log("Nenhuma série cadastrada.");
|
|
return;
|
|
}
|
|
|
|
const id = obterEntradaNumero("Digite o ID da série a ser atualizada:");
|
|
const serie = series.find((s) => s.id === id);
|
|
|
|
if (!serie) {
|
|
console.log("Série não encontrada.");
|
|
return;
|
|
}
|
|
|
|
console.log("Informe os novos dados da série:");
|
|
serie.titulo = obterEntradaTexto("Novo título:");
|
|
serie.ano = obterEntradaNumero("Novo ano de lançamento:");
|
|
serie.finalizada = obterEntradaBooleano("A série foi finalizada");
|
|
|
|
console.log("Série atualizada com sucesso!");
|
|
}
|
|
|
|
function excluirSerie(): void {
|
|
if (series.length === 0) {
|
|
console.log("Nenhuma série cadastrada.");
|
|
return;
|
|
}
|
|
|
|
const id = obterEntradaNumero("Digite o ID da série a ser excluída:");
|
|
const index = series.findIndex((s) => s.id === id);
|
|
|
|
if (index === -1) {
|
|
console.log("Série não encontrada.");
|
|
return;
|
|
}
|
|
|
|
series.splice(index, 1);
|
|
console.log("Série excluída com sucesso!");
|
|
}
|
|
|
|
function main(): void {
|
|
let opcao = 0;
|
|
|
|
while (opcao !== 5) {
|
|
mostrarMenu();
|
|
opcao = obterEntradaNumero("Escolha uma opção:");
|
|
|
|
if (opcao === 1) {
|
|
criarSerie();
|
|
} else if (opcao === 2) {
|
|
listarSeries();
|
|
} else if (opcao === 3) {
|
|
atualizarSerie();
|
|
} else if (opcao === 4) {
|
|
excluirSerie();
|
|
} else if (opcao === 5) {
|
|
console.log("Encerrando o sistema. Até mais!");
|
|
} else {
|
|
console.log("Opção inválida! Tente novamente.");
|
|
}
|
|
}
|
|
}
|
|
|
|
main(); |