From 21553fe0733340347c84be1515213ffb53d8fe05 Mon Sep 17 00:00:00 2001 From: Leonardo Souza Date: Mon, 24 Feb 2020 19:16:25 -0300 Subject: [PATCH 1/5] First version of commit --- index.js | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index c687602..702291f 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,106 @@ // Base a ser utilizada -const alunosDaEscola=[{nome:"Henrique",notas:[],cursos:[],faltas:5},{nome:"Edson",notas:[],cursos:[],faltas:2},{nome:"Bruno",notas:[10,9.8,9.6],cursos:[],faltas:0},{nome:"Guilherme",notas:[10,9.8,9.6],cursos:[{nomeDoCurso:"Full Stack",dataMatricula:new Date}],faltas:0},{nome:"Carlos",notas:[],cursos:[],faltas:0},{nome:"Lucca",notas:[10,9.8,9.6],cursos:[{nomeDoCurso:"UX",dataMatricula:new Date}],faltas:0}]; +const alunosDaEscola=[ + { + nome:"Henrique", + notas:[], + cursos:[], + faltas:5 + }, + { + nome:"Edson", + notas:[], + cursos:[], + faltas:2 + }, + { + nome:"Bruno", + notas:[10,9.8,9.6], + cursos:[], + faltas:0 + }, + { + nome:"Guilherme", + notas:[10,9.8,9.6], + cursos:[{nomeDoCurso:"Full Stack",dataMatricula:new Date}], + faltas:0}, + { + nome:"Carlos", + notas:[], + cursos:[], + faltas:0 + }, + { + nome:"Lucca", + notas:[10,9.8,9.6], + cursos:[{nomeDoCurso:"UX",dataMatricula:new Date}], + faltas:0 + } +]; -// implementação \ No newline at end of file +// implementação + +function adicionarAluno(nome){ + + /*Essa função irá receber uma *string* que é nome do aluno a ser criado. + E seguindo o modelo de aluno, o mesmo deverá ser inserido na lista de alunos. + A função deve devolver um feedback de sucesso, caso o aluno seja inserido corretamente.*/ + + function addAluno(nome = '',curso=[],notas=[],faltas=0){ + this.nome = nome; + this.cursos = curso; + this.notas = notas; + this.faltas = faltas; + return {nome,cursos,notas,faltas} + } + if(alunosDaEscola.push(addAluno(nome))) { + console.log(`Aluno ${nome} adicionado com sucesso!`) + } else { + console.log(`Ocorreu um erro ao adicionar o aluno ${nome}`) + } +} +adicionarAluno('Xpto') +// -- +function listarAlunos(){ + /*Com essa função o usuário poderá ver todos os alunos cadastrados atualmente no sistema. + Vale dizer que As informações deverão ser exibidas em um formato amigável.*/ + for(aluno of alunosDaEscola){ + console.log('-'.repeat(15)) + console.log(`Aluno: ${aluno.nome}`); + if(aluno.cursos.length > 0){ + console.log(' - Cursando: ') + for(curso of aluno.cursos){ + console.log(" * " + curso.nomeDoCurso + " - matriculado em "+curso.dataMatricula) + } + }else { + console.log(" - Aluno não está matriculado em nenhum curso.") + } + if(aluno.notas.length > 0 ){ + console.log(" - Notas recebidas: " + + aluno.notas.slice(0,-1).join(', ') + ' e ' + aluno.notas.slice(-1) + ) + } else { + console.log(' - Aluno não recebeu nenhuma nota ainda') + } + console.log(` - Total de faltas no periodo: ${aluno.faltas}`) + } +} + +listarAlunos() + +function buscarAluno(nome){ +// /* Por meio dessa função, podemos pesquisar um aluno por nome na lista de aluno. +// Ela deverá exibir um feedback, tanto para quando encontrar o aluno, tanto quando não +// encontrar. E deverá devolver um aluno em seu retorno. */ + + const resultado = alunosDaEscola.filter(aluno => aluno.nome.includes(nome)) + if(resultado) { + console.log(`Aluno ${nome} encontrado...`) + return resultado[0] + } else{ + console.log(`Aluno ${nome} não encontrado...`) + return false + } +} + +console.log(buscarAluno('Xpto')) From a226222277c2bcad715045ba69085d0c459ddb9b Mon Sep 17 00:00:00 2001 From: Leonardo Souza Date: Tue, 25 Feb 2020 20:44:26 -0300 Subject: [PATCH 2/5] add new functions --- index.js | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 82 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index 702291f..b0acd31 100644 --- a/index.js +++ b/index.js @@ -46,43 +46,54 @@ function adicionarAluno(nome){ E seguindo o modelo de aluno, o mesmo deverá ser inserido na lista de alunos. A função deve devolver um feedback de sucesso, caso o aluno seja inserido corretamente.*/ - function addAluno(nome = '',curso=[],notas=[],faltas=0){ + function addAluno(nome,curso=[],notas=[],faltas=0){ this.nome = nome; this.cursos = curso; this.notas = notas; this.faltas = faltas; return {nome,cursos,notas,faltas} } - if(alunosDaEscola.push(addAluno(nome))) { + + if(alunosDaEscola.filter( aluno => aluno.nome === nome).length > 0 ){ + console.log(`Já existe cadastro para o aluno ${nome}`) + } else if(alunosDaEscola.push(addAluno(nome))) { console.log(`Aluno ${nome} adicionado com sucesso!`) } else { console.log(`Ocorreu um erro ao adicionar o aluno ${nome}`) } } -adicionarAluno('Xpto') -// -- +adicionarAluno('Xpto'); +adicionarAluno('Xpto'); + function listarAlunos(){ /*Com essa função o usuário poderá ver todos os alunos cadastrados atualmente no sistema. Vale dizer que As informações deverão ser exibidas em um formato amigável.*/ + for(aluno of alunosDaEscola){ console.log('-'.repeat(15)) console.log(`Aluno: ${aluno.nome}`); if(aluno.cursos.length > 0){ - console.log(' - Cursando: ') + console.log(' * Cursando: ') for(curso of aluno.cursos){ - console.log(" * " + curso.nomeDoCurso + " - matriculado em "+curso.dataMatricula) + console.log(" - " + curso.nomeDoCurso + " - matriculado em "+ + curso.dataMatricula.toLocaleString('pt-BR', { timeZone: 'UTC' }) + ) } }else { - console.log(" - Aluno não está matriculado em nenhum curso.") + console.log(" * Aluno não está matriculado em nenhum curso.") } + + // Printa notas if(aluno.notas.length > 0 ){ - console.log(" - Notas recebidas: " + + console.log(" * Notas recebidas: " + aluno.notas.slice(0,-1).join(', ') + ' e ' + aluno.notas.slice(-1) ) } else { - console.log(' - Aluno não recebeu nenhuma nota ainda') + console.log(' * Aluno não recebeu nenhuma nota ainda') } - console.log(` - Total de faltas no periodo: ${aluno.faltas}`) + + // Lista total de faltas + console.log(` * Total de faltas no periodo: ${aluno.faltas}`) } } @@ -104,3 +115,64 @@ function buscarAluno(nome){ } console.log(buscarAluno('Xpto')) + +function matricularAluno(aluno, curso){ + /* Essa funcionalidade irá permitir, cadastrar um aluno em um curso. + Essa função só poderá ser executada em um aluno já devidamente cadastrado no sistema, + e deverá armazenar a data atual no momento da matricula + Lembre-se de exibir o feedback para o usuário. */ + + if(typeof aluno === 'object' && typeof curso === 'string'){ + + if(aluno.cursos.filter(c => c.nomeDoCurso == curso).length > 0) { + console.log(`Aluno ${aluno.nome} já está matriculado no curso ${curso}.`) + return false + } else if (aluno.cursos.push({ + nomeDoCurso: curso, + dataMatricula: new Date + })) { + console.log(`Aluno ${aluno.nome} matriculado no curso ${curso}.`) + return true + } else { + console.log(`Ocorreu um erro para matricular o aluno ${aluno.nome}`) + return false + } + } else { + console.log("Dados informaos incorretos") + return false + } +} + +console.log(matricularAluno(buscarAluno('Xpto'),"UX")) +console.log(matricularAluno(buscarAluno('Xpto'),"UX")) +console.log(listarAlunos()) + +function aplicarFalta(aluno){ + // aluno:object + /* + Ao receber um aluno devidamente cadastrado em nossa lista. Você deverá + incrementar uma falta ao aluno. Você deverá dar um feedback ao concluir + a tarefa. Só poderá aplicar falta em aluno se o mesmo tiver matriculado + em um curso. + */ +} + +function aplicarNota(aluno){ + // aluno:object + /* + Ao receber um aluno devidamente cadastrado em nossa lista. Você deverá + adicionar uma nota ao aluno na sua lista de notas. Você deverá dar um + feedback ao concluir a tarefa. Só poderá aplicar nota em aluno se o mesmo + tiver matriculado em um curso. + */ +} + +function aprovarAluno(aluno){ + // aluno:object + /* + Ao receber um aluno devidamente cadastrado em nossa lista, deverá dizer se + o mesmo está aprovado ou não. Os critérios de aprovação são: ter no máximo + 3 faltas e média 7 em notas. + Só o aluno só poderá ser aprovado se o mesmo tiver matriculado em um curso. + */ +} \ No newline at end of file From f35f00db94d45fcddcdd250144c32ac0905a4d1c Mon Sep 17 00:00:00 2001 From: Leonardo Souza Date: Tue, 25 Feb 2020 20:57:37 -0300 Subject: [PATCH 3/5] data in local time zone --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index b0acd31..ef1b625 100644 --- a/index.js +++ b/index.js @@ -76,7 +76,7 @@ function listarAlunos(){ console.log(' * Cursando: ') for(curso of aluno.cursos){ console.log(" - " + curso.nomeDoCurso + " - matriculado em "+ - curso.dataMatricula.toLocaleString('pt-BR', { timeZone: 'UTC' }) + curso.dataMatricula.toLocaleString('pt-BR') ) } }else { From 66051e0b0036fcee3556b55290dc29a4255a49b6 Mon Sep 17 00:00:00 2001 From: Leonardo Souza Date: Thu, 27 Feb 2020 13:51:37 -0300 Subject: [PATCH 4/5] Aplicar faltas --- index.js | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index ef1b625..401bdcb 100644 --- a/index.js +++ b/index.js @@ -63,7 +63,7 @@ function adicionarAluno(nome){ } } adicionarAluno('Xpto'); -adicionarAluno('Xpto'); +// adicionarAluno('Xpto'); function listarAlunos(){ /*Com essa função o usuário poderá ver todos os alunos cadastrados atualmente no sistema. @@ -97,7 +97,7 @@ function listarAlunos(){ } } -listarAlunos() +// listarAlunos() function buscarAluno(nome){ // /* Por meio dessa função, podemos pesquisar um aluno por nome na lista de aluno. @@ -105,7 +105,8 @@ function buscarAluno(nome){ // encontrar. E deverá devolver um aluno em seu retorno. */ const resultado = alunosDaEscola.filter(aluno => aluno.nome.includes(nome)) - if(resultado) { + console.log(resultado) + if(resultado.length>0) { console.log(`Aluno ${nome} encontrado...`) return resultado[0] } else{ @@ -114,7 +115,9 @@ function buscarAluno(nome){ } } -console.log(buscarAluno('Xpto')) +console.log(buscarAluno('ximbo')) + + function matricularAluno(aluno, curso){ /* Essa funcionalidade irá permitir, cadastrar um aluno em um curso. @@ -137,15 +140,17 @@ function matricularAluno(aluno, curso){ console.log(`Ocorreu um erro para matricular o aluno ${aluno.nome}`) return false } + } else if (!aluno) { + console.log("Aluno não encontrado") } else { - console.log("Dados informaos incorretos") + console.log("Dados informados incorretos") return false } } console.log(matricularAluno(buscarAluno('Xpto'),"UX")) -console.log(matricularAluno(buscarAluno('Xpto'),"UX")) -console.log(listarAlunos()) +console.log(matricularAluno(buscarAluno('Xpto'),"DataAnalytics")) + function aplicarFalta(aluno){ // aluno:object @@ -155,8 +160,19 @@ function aplicarFalta(aluno){ a tarefa. Só poderá aplicar falta em aluno se o mesmo tiver matriculado em um curso. */ + if(typeof aluno === 'object' && aluno.cursos.length>0){ + console.log('Aplicando Falta') + aluno.faltas++ + console.log(`Registrada falta para o aluno ${aluno.nome}. Agora possui ${aluno.faltas} faltas `) + return true + } else { + console.log("Dados informados incorretos") + return false + } } +aplicarFalta(buscarAluno('Xpto')) + function aplicarNota(aluno){ // aluno:object /* @@ -175,4 +191,6 @@ function aprovarAluno(aluno){ 3 faltas e média 7 em notas. Só o aluno só poderá ser aprovado se o mesmo tiver matriculado em um curso. */ -} \ No newline at end of file +} + +console.log(listarAlunos()) \ No newline at end of file From 21eae4dcaa84b0f66a1c63931724be97b2ecec6e Mon Sep 17 00:00:00 2001 From: Leonardo Souza Date: Tue, 10 Mar 2020 13:48:20 -0300 Subject: [PATCH 5/5] Final Version --- index.js | 64 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/index.js b/index.js index 401bdcb..275c8cc 100644 --- a/index.js +++ b/index.js @@ -62,8 +62,7 @@ function adicionarAluno(nome){ console.log(`Ocorreu um erro ao adicionar o aluno ${nome}`) } } -adicionarAluno('Xpto'); -// adicionarAluno('Xpto'); + function listarAlunos(){ /*Com essa função o usuário poderá ver todos os alunos cadastrados atualmente no sistema. @@ -97,15 +96,13 @@ function listarAlunos(){ } } -// listarAlunos() - function buscarAluno(nome){ // /* Por meio dessa função, podemos pesquisar um aluno por nome na lista de aluno. // Ela deverá exibir um feedback, tanto para quando encontrar o aluno, tanto quando não // encontrar. E deverá devolver um aluno em seu retorno. */ const resultado = alunosDaEscola.filter(aluno => aluno.nome.includes(nome)) - console.log(resultado) + // console.log(resultado) if(resultado.length>0) { console.log(`Aluno ${nome} encontrado...`) return resultado[0] @@ -115,10 +112,6 @@ function buscarAluno(nome){ } } -console.log(buscarAluno('ximbo')) - - - function matricularAluno(aluno, curso){ /* Essa funcionalidade irá permitir, cadastrar um aluno em um curso. Essa função só poderá ser executada em um aluno já devidamente cadastrado no sistema, @@ -148,10 +141,6 @@ function matricularAluno(aluno, curso){ } } -console.log(matricularAluno(buscarAluno('Xpto'),"UX")) -console.log(matricularAluno(buscarAluno('Xpto'),"DataAnalytics")) - - function aplicarFalta(aluno){ // aluno:object /* @@ -161,19 +150,17 @@ function aplicarFalta(aluno){ em um curso. */ if(typeof aluno === 'object' && aluno.cursos.length>0){ - console.log('Aplicando Falta') - aluno.faltas++ - console.log(`Registrada falta para o aluno ${aluno.nome}. Agora possui ${aluno.faltas} faltas `) + // console.log('Aplicando Falta') + aluno.faltas++; + console.log(`Registrada falta para o aluno ${aluno.nome}. Agora possui ${aluno.faltas} faltas `); return true } else { - console.log("Dados informados incorretos") + console.log("Dados informados incorretos"); return false } } -aplicarFalta(buscarAluno('Xpto')) - -function aplicarNota(aluno){ +function aplicarNota(aluno, nota){ // aluno:object /* Ao receber um aluno devidamente cadastrado em nossa lista. Você deverá @@ -181,6 +168,15 @@ function aplicarNota(aluno){ feedback ao concluir a tarefa. Só poderá aplicar nota em aluno se o mesmo tiver matriculado em um curso. */ + if(typeof aluno === 'object' && aluno.cursos.length>0){ + // console.log('Aplicando Falta') + aluno.notas.push(nota); + console.log(`Registrada nota para o aluno ${aluno.nome}`) + return true + } else { + console.log("Dados informados incorretos") + return false + } } function aprovarAluno(aluno){ @@ -191,6 +187,32 @@ function aprovarAluno(aluno){ 3 faltas e média 7 em notas. Só o aluno só poderá ser aprovado se o mesmo tiver matriculado em um curso. */ + if(typeof aluno === 'object' && aluno.cursos.length>0){ + if(aluno.notas.length === 0){ + console.log(`aluno ${aluno.nome} não tem notas a serem processadas`) + } else if (aluno.faltas < 3 && aluno.notas.reduce((soma,nota,idx,arr) => + soma+nota/arr.length,0) >= 7){ + console.log(`Aluno ${aluno.nome} aprovado!`) + aluno.aprovado = true; + return true + } else { + console.log(`Aluno ${aluno.nome} reprovado`) + aluno.aprovado = false; + return false + + } + } } -console.log(listarAlunos()) \ No newline at end of file +// execução +adicionarAluno('Xpto'); +listarAlunos(); +buscarAluno('ximbo'); + +const dadosAluno=buscarAluno('Xpto'); +matricularAluno(dadosAluno,"UX"); +matricularAluno(dadosAluno,"DataAnalytics"); +aplicarNota(dadosAluno, 9.6); +aplicarFalta(dadosAluno); +aprovarAluno(dadosAluno); +// listarAlunos('Guilherme')) \ No newline at end of file