//Entry point into the program public static void Main(string[] args) { //Initializing the constructor PayrollSystemTest payrollInstance = new PayrollSystemTest(); //Initializing the delegate Comparer cmp = new Comparer(Employee.compareSSNs); bool again = true; //Loop to handle menu options while (again) { Console.WriteLine("\n\n1.) Sort by social security number in ascending order"); Console.WriteLine("2.) Sort by last name in ascending order"); Console.WriteLine("3.) Sort by pay amount in descending order"); Console.WriteLine("4.) Exit"); switch (Console.ReadLine()) { case "1": //Sort by ssn Asc Console.WriteLine("SORTING BY SSN Ascending\n\n"); payrollInstance.sortSSNs(cmp, SortType.Ascending); foreach (var currentPayable in payrollInstance.payableObjects) { Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings()); } break; case "2": //Sort by last name Asc Console.WriteLine("SORTING BY LAST NAME Ascending\n\n"); Array.Sort(payrollInstance.payableObjects, Employee.sortByLNameAsc()); foreach (var currentPayable in payrollInstance.payableObjects) { Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings()); } break; case "3": //Sort by $ Dsc //Using Comparable's default sort order by overriding the CompareTo method Console.WriteLine("SORTING BY PAY Decending\n\n"); int k; Employee[] empCopies = new Employee[payrollInstance.payableObjects.Length]; for(k = 0; k < payrollInstance.payableObjects.Length; k++) { empCopies[k] = (Employee)payrollInstance.payableObjects[k]; } //CompareTo is implemented in the Employee class so the Array of IPayables was casted to Employee //So we can use the default sort on the earnings Array.Sort(empCopies); foreach (var currentPayable in empCopies) { Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings()); } break; //Default case catches when user wants to exit default: again = false; Console.WriteLine("Thank you!"); break; } } } // end Main
//Entry point into the program public static void Main(string[] args) { //Initializing the constructor PayrollSystemTest payrollInstance = new PayrollSystemTest(); //Initializing the delegate Comparer cmp = new Comparer(Employee.compareSSNs); bool again = true; //Loop to handle menu options while (again) { Console.WriteLine("\n\n1.) Sort by social security number in ascending order"); Console.WriteLine("2.) Sort by last name in ascending order"); Console.WriteLine("3.) Sort by pay amount in descending order"); Console.WriteLine("4.) Exit"); switch (Console.ReadLine()) { case "1": //Sort by ssn Asc Console.WriteLine("SORTING BY SSN Ascending\n\n"); payrollInstance.sortSSNs(cmp, SortType.Ascending); foreach (var currentPayable in payrollInstance.payableObjects) { Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings()); } break; case "2": //Sort by last name Asc Console.WriteLine("SORTING BY LAST NAME Ascending\n\n"); Array.Sort(payrollInstance.payableObjects, Employee.sortByLNameAsc()); foreach (var currentPayable in payrollInstance.payableObjects) { Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings()); } break; case "3": //Sort by $ Dsc //Using Comparable's default sort order by overriding the CompareTo method Console.WriteLine("SORTING BY PAY Decending\n\n"); int k; Employee[] empCopies = new Employee[payrollInstance.payableObjects.Length]; for(k = 0; k < payrollInstance.payableObjects.Length; k++) { empCopies[k] = (Employee)payrollInstance.payableObjects[k]; } //CompareTo is implemented in the Employee class so the Array of IPayables was casted to Employee //So we can use the default sort on the earnings Array.Sort(empCopies); foreach (var currentPayable in empCopies) { Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings()); } break; //Default case catches when user wants to exit default: again = false; Console.WriteLine("Thank you!"); break; } } }