0
respostas

[Projeto] Exercício final - Dart trabalhando com sintaxe...

Exercício final - Dart trabalhando com sintaxe

import 'dart:io';

void cadastroAlunosNotas(List<String> nomes, List<List<double>> notas) {
  String? nome;
  String? entrada;
  double? nota;
  //double? notaNegativa;
  List<double> notasDoAluno = [];

  print('Digite o nome do aluno:');
  nome = stdin.readLineSync();

  if (nome != null && nome.isNotEmpty && nome.length > 2) {
    nomes.add(nome);

    do {
      print('Digite uma nota para o aluno (ou "fim" para terminar):');
      entrada = stdin.readLineSync();
      //notaNegativa = double.parse(entrada!);

      if (entrada == 'fim') {
        notas.add(notasDoAluno);
        break;
      } else if (entrada == null) {
        print('Nota inválida. Tente novamente. null');
      } else if (entrada.isEmpty) {
        print('Nota inválida. Tente novamente. isEmpty');
      } else if (double.parse(entrada).isNegative) {
        print('Nota inválida. Tente novamente. Int');
      } else {
        try {
          nota = double.parse(entrada);
          notasDoAluno.add(nota);
        } catch (e) {
          print('Nota invalida. Tente novamente.');
        }


      }
    } while (true);
  } else {
    print('Nome inválido');
  }
}

double calcularMedia(List<double> notas) {
  double somar = 0.0;

  for (double elemento in notas) {
    somar = somar + elemento;
  }

  return somar / notas.length;
}

void listarAlunosENotas (List<String> nomes, List<List<double>> notas) {
  print('Lista de Alunos e Méidas');

  for (int i = 0; i < nomes.length; i++) {
    double media = calcularMedia(notas[i]);
    print('${nomes[i]}: ${media.toStringAsFixed(2)}');
  }
}

void menu(List<String> nomes, List<List<double>> notas) {
  String? opcao;

  print('1 - Registrar, 2 - Listar, 3 - Sair');
  opcao = stdin.readLineSync();

  do {
    switch (opcao) {
      case '1':
        opcao = '';
        cadastroAlunosNotas(nomes, notas);
        menu(nomes, notas);
        break;
      case '2':
        opcao = '';
      // Listando os alunos e notas
        listarAlunosENotas(nomes, notas);
        menu(nomes, notas);
        break;
      case'3':
        opcao = '';
        print('Fechando o programa');
        break;
    }
  } while (opcao != '3');
}

void cabecalho () {
print('┌─┐─┐ ┬┌─┐┬─┐┌─┐┬┌─┐┬┌─┐       ┌┐┌┌─┐┌┬┐┌─┐┌─┐  ┌┬┐┌─┐┌┬┐┬┌─┐┌─┐');
print('├┤ ┌┴┬┘├┤ ├┬┘│  ││  ││ │  ───  ││││ │ │ ├─┤└─┐  │││├┤  │││├─┤└─┐');
print('└─┘┴ └─└─┘┴└─└─┘┴└─┘┴└─┘       ┘└┘└─┘ ┴ ┴ ┴└─┘  ┴ ┴└─┘─┴┘┴┴ ┴└─┘');
}

void main() {
  List<String> nomes = [];
  List<List<double>> notas = [];

  cabecalho();
  menu(nomes, notas);
  //cadastroAlunosNotas(nomes, notas);
}