Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Import the Scanner class
- import java.util.Scanner;
- // Import the packages from the java.util library
- import java.util.ArrayList;
- import java.util.Arrays;
- public class Task_3 {
- public static void main(String[] args) {
- // Declare a boolean variable named 'inputStudent' with a value 'true'
- boolean inputStudent = true;
- // Place while loop's condition to check whether user inputs less than 20 students
- while (inputStudent) {
- // Prompt user to enter number of students between 1 to 20
- System.out.print("Enter number of students between 1 to 20: ");
- // Create the first Scanner object
- Scanner firstscan = new Scanner(System.in);
- int numOfStudents = firstscan.nextInt();
- // Display result
- if (numOfStudents > 20) {
- System.out.println("Please enter not more than 20 students.");
- System.out.println();
- } else {
- // Declare an integer variable named 'avg' and 'choice' with zero value
- int avg = 0;
- int choice = 0;
- // Declare a string variable named 'grade' with a value 'null'
- String grade = null;
- // Create arraylist of 'students' and 'average'
- ArrayList<String[]> students = new ArrayList<String[]>();
- ArrayList<Integer> average = new ArrayList<Integer>();
- // Create an array of 'names' and 'averageMark'
- String[] names = new String[numOfStudents];
- int[] averageMark = new int[numOfStudents];
- // Create a two-dimensional array with a given number of rows and 6 columns
- String[][] table = new String[numOfStudents][6];
- // Declare a boolean variable named 'menuLoop' with a value 'true'
- boolean menuLoop = true;
- // Insert a new line
- System.out.println();
- // Display result
- for (int n = 0; n < numOfStudents; n++) {
- // Prompt user to enter student name and 3 marks
- System.out.println("Enter the name and 3 marks for Student " + (n + 1) + ": ");
- // Create the second Scanner object
- Scanner secondscan = new Scanner(System.in);
- String studentName = secondscan.nextLine();
- // Capitalize the first letter of the names given
- studentName = studentName.toUpperCase().charAt(0) + studentName.substring(1, studentName.length());
- String mark1 = secondscan.nextLine();
- String mark2 = secondscan.nextLine();
- String mark3 = secondscan.nextLine();
- // Add elements to the array
- String[] array = {studentName, mark1, mark2, mark3};
- students.add(array);
- }
- // Display result
- System.out.println();
- System.out.println("Student" + " \tAverage" + " \tGrade");
- System.out.println("-------------------------------------");
- for (int n = 0; n < numOfStudents; n++) {
- // Calculate the average mark
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- // Calculate the grade based on average mark
- if (avg >= 90 && avg <= 100) {
- grade = "A";
- } else if (avg >= 80 && avg <= 89) {
- grade = "B";
- } else if (avg >= 70 && avg <= 79) {
- grade = "C";
- } else if (avg >= 60 && avg <= 69) {
- grade = "D";
- } else if (avg >= 0 && avg <= 59) {
- grade = "E";
- }
- // Display result
- System.out.println(students.get(n)[0] + " \t" + " \t" + avg + " \t" + " \t" + grade);
- }
- // Place while loop's condition to display menu
- while (menuLoop) {
- System.out.println();
- System.out.println("====================================================================================");
- System.out.println("1: Print the entire list");
- System.out.println("2: Sort and print the list alphabetically");
- System.out.println("3: Sort and print the list in descending order based on the average.");
- System.out.println("4: Ask the user to enter an average and search for the student who has that average");
- System.out.println("5: Find the student who has the minimum average");
- System.out.println("6: Print the grade distribution");
- System.out.println("0: Exit");
- System.out.println("====================================================================================");
- System.out.println();
- System.out.print("Enter your choice? ");
- // Create the third Scanner object
- Scanner thirdscan = new Scanner(System.in);
- choice = thirdscan.nextInt();
- // Place switch statement
- switch (choice) {
- // Place case statement
- case 1:
- System.out.println();
- System.out.println("Student" + " \t" + "Mark 1" + " \t" + " \t" + "Mark 2" + " \t" + " \t" + "Mark 3" + " \t" + " \t" + "Average" + " \t" + "Grade");
- System.out.println("----------------------------------------------------------------------------------------------");
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- if (avg >= 90 && avg <= 100) {
- grade = "A";
- } else if (avg >= 80 && avg <= 89) {
- grade = "B";
- } else if (avg >= 70 && avg <= 79) {
- grade = "C";
- } else if (avg >= 60 && avg <= 69) {
- grade = "D";
- } else if (avg >= 0 && avg <= 59) {
- grade = "E";
- }
- // Display result
- System.out.println(students.get(n)[0] + "\t" + "\t" + students.get(n)[1] + "\t" + "\t" + students.get(n)[2] + "\t" + "\t" + students.get(n)[3] + "\t" + "\t" + avg + "\t" + "\t" + grade);
- }
- break;
- case 2:
- System.out.println();
- System.out.println("Student" + " \t" + "Mark 1" + " \t" + " \t" + "Mark 2" + " \t" + " \t" + "Mark 3" + " \t" + " \t" + "Average" + " \t" + "Grade");
- System.out.println("----------------------------------------------------------------------------------------------");
- for (int n = 0; n < numOfStudents; n++) {
- names[n] = students.get(n)[0];
- }
- // Implement Selection Sort
- for (int j = 0; j < names.length-1; j++) {
- int min = j;
- for (int k = j+1; k < names.length; k++)
- if (names[k].compareTo(names[min]) < 0 ) min = k;
- String temp = names[j];
- names[j] = names[min];
- names[min] = temp;
- }
- for (String value : names) {
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- if (avg >= 90 && avg <= 100) {
- grade = "A";
- } else if (avg >= 80 && avg <= 89) {
- grade = "B";
- } else if (avg >= 70 && avg <= 79) {
- grade = "C";
- } else if (avg >= 60 && avg <= 69) {
- grade = "D";
- } else if (avg >= 0 && avg <= 59) {
- grade = "E";
- }
- // Display result
- if (students.get(n)[0] == value) {
- System.out.println(students.get(n)[0] + "\t" + "\t" + students.get(n)[1] + "\t" + "\t" + students.get(n)[2] + "\t" + "\t" + students.get(n)[3] + "\t" + "\t" + avg + "\t" + "\t" + grade);
- }
- }
- }
- break;
- case 3:
- System.out.println();
- System.out.println("Student" + " \t" + "Mark 1" + " \t" + " \t" + "Mark 2" + " \t" + " \t" + "Mark 3" + " \t" + " \t" + "Average" + " \t" + "Grade");
- System.out.println("----------------------------------------------------------------------------------------------");
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- if (avg >= 90 && avg <= 100) {
- grade = "A";
- } else if (avg >= 80 && avg <= 89) {
- grade = "B";
- } else if (avg >= 70 && avg <= 79) {
- grade = "C";
- } else if (avg >= 60 && avg <= 69) {
- grade = "D";
- } else if (avg >= 0 && avg <= 59) {
- grade = "E";
- }
- // Fill in the rows and columns of the two-dimensional array with elements
- table[n][0] = students.get(n)[0];
- table[n][1] = students.get(n)[1];
- table[n][2] = students.get(n)[2];
- table[n][3] = students.get(n)[3];
- table[n][4] = Integer.toString(avg);
- table[n][5] = grade;
- }
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- // Adding object in average arraylist
- average.add(avg);
- }
- // Implement Insertion Sort
- InsertionSort is = new InsertionSort(average);
- is.sortGivenArray();
- for (int i : InsertionSort.getInputArray()) {
- for (int n = 0; n < numOfStudents; n++) {
- if (Integer.parseInt(table[n][4]) == i) {
- System.out.println(table[n][0] + "\t" + "\t" + table[n][1] + "\t" + "\t" + table[n][2] + "\t" + "\t" + table[n][3] + "\t" + "\t" + table[n][4] + "\t" + "\t" + table[n][5]);
- }
- }
- }
- break;
- case 4:
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- averageMark[n] = avg;
- }
- // Prompt user to enter an average
- System.out.println();
- System.out.print("Enter an average: ");
- // Create the fourth Scanner object
- Scanner fourthscanner = new Scanner(System.in);
- int key = fourthscanner.nextInt();
- // Perform a Binary Search on the given average
- int result = Arrays.binarySearch(averageMark, key);
- // Display result
- if (result < 0) {
- System.out.println();
- System.out.println("There is no student with that average.");
- } else {
- System.out.println();
- System.out.println("Student" + " \t" + "Average");
- System.out.println("-----------------------");
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- table[n][0] = students.get(n)[0];
- table[n][1] = Integer.toString(avg);
- if (Integer.parseInt(table[n][1]) == key) {
- System.out.println(table[n][0] + "\t" + "\t" + table[n][1]);
- }
- }
- }
- break;
- case 5:
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- averageMark[n] = avg;
- table[n][0] = students.get(n)[0];
- table[n][1] = Integer.toString(avg);
- }
- // Perform a Sequential Search to find the minimum average
- int minvalue = averageMark[0];
- for (int i = 0; i < averageMark.length; i++) {
- if (averageMark[i] < minvalue) {
- minvalue = averageMark[i];
- }
- }
- // Display result
- for (int n = 0; n < numOfStudents; n++) {
- if (Integer.parseInt(table[n][1]) == minvalue) {
- System.out.println();
- System.out.println("Student with the mininum average is: ");
- System.out.println();
- System.out.println("Student" + " \t" + "Average");
- System.out.println("-----------------------");
- System.out.println(table[n][0] + "\t" + "\t" + minvalue);
- }
- }
- break;
- case 6:
- // Declare integer variables with zero value
- int a = 0, b = 0, c = 0, d = 0, e = 0;
- for (int n = 0; n < numOfStudents; n++) {
- avg = (Integer.parseInt(students.get(n)[1]) + Integer.parseInt(students.get(n)[2]) + Integer.parseInt(students.get(n)[3])) / 3;
- if (avg >= 90 && avg <= 100) {
- grade = "A";
- a++;
- } else if (avg >= 80 && avg <= 89) {
- grade = "B";
- b++;
- } else if (avg >= 70 && avg <= 79) {
- grade = "C";
- c++;
- } else if (avg >= 60 && avg <= 69) {
- grade = "D";
- d++;
- } else if (avg >= 0 && avg <= 59) {
- grade = "E";
- e++;
- }
- }
- // Display result
- System.out.println();
- System.out.println("Grade distribution: ");
- System.out.println("A = " + a + "\t B = " + b + " \t C = " + c + "\t D = " + d + " \t E = " + e);
- break;
- case 0:
- System.out.println();
- System.out.println("This is the end of the program. Thank you.");
- // Terminate the program
- System.exit(0);
- break;
- // Set a default statement for when user inputs invalid menu choice
- default:
- System.out.println();
- System.out.println("This is not a valid menu choice. Please select another!");
- break;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement