using System; using System.Collections.Generic; namespace GradeBook { class Program { static void Main(string[] args) { // var book = new Book("Scott's Grade Book"); // book.AddGrade(89.1); // book.AddGrade(90.5); // book.AddGrade(87.2); var book = new Book("Jason's Grade Book"); book.GradeAdded += OnGradeAdded; book.GradeAdded += OnGradeAdded; book.GradeAdded -= OnGradeAdded; book.GradeAdded -= OnGradeAdded; string input; while (true) { Console.WriteLine("Give input: "); input = Console.ReadLine(); if (input == "Q" || input == "q") { Console.WriteLine("Receiving termination signal; Termiate program"); break; } else { try { Console.WriteLine($"Received: {input}"); book.AddGrade(Convert.ToDouble(input)); // book.AddGrade('A'); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } catch (FormatException ex) { Console.WriteLine(ex.Message); } finally { // Will always run for all catch scenario Console.WriteLine("Always Done"); } } } var stats = book.GetStatistics(); Console.WriteLine($"The lowest grade is {stats.lowGrade}"); Console.WriteLine($"The highesst grade is {stats.highGrade}"); Console.WriteLine($"The average grade is {stats.Average:N1}"); } static void OnGradeAdded(object sender, EventArgs e) { // Main is static, so it can only call static methods, hence return type is static Console.WriteLine("A line has added"); } } }