Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Specification When your program starts, it should print the program title and yo

ID: 3834905 • Letter: S

Question

Specification When your program starts, it should print the program title and your name, then load the file given as a command line argument (similar to the sorting assignment). If no file is given, or if the file does not exist, the program should print a usage message and exit. After loading the input file, the program should go into "command" mode, which allows the user to type in various commands and get results from the system. This is similar to the calculator assignment. You should show some kind of a prompt, such as to the user, and wait for commands. The commands that your system must process are as follows: l. exit Causes the program to exit. 2. help Causes the program to print a list of commands accepted by the system. This same message should be printed if the user types an unrecognized command. The program must not crash in this case. 3. roll Prints out a list of students from the class (first and last name), along with total points, and final grades (A, B, C, D, F) for each student. These should be properly aligned in columns, so that the grades line up above one another, and the student first name and student last name are left aligned. 4. search [partial named

Explanation / Answer

Hi,

Please see beow the class.

Thanks,

ClassStats.java

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.StringTokenizer;


public class ClassStats {

   static Student [] studentArray = new Student[4];
   static int arrayCounter =0;
   static double maximumMarksTotal =0;
   static String dept ="";
   static String section="";
   static String [] maxmarksArray = new String [5];
   static String [] assignmentArray = new String [5];
   public static void main(String [] args){
       Scanner scan = new Scanner(System.in);
       String inputCmd ="";
       boolean proceed = true;

       System.out.println("ClassStats program by <>");
       System.out.println("loaded 'philosophy101.txt'");
       //Read the file
       readFile(args[0]);
       while(proceed){
           if(args.length >0){
               //Displaying command options
               System.out.println("> help");
               System.out.println("   Accepted commands:");
               System.out.println("   exit");
               System.out.println("   help");
               System.out.println("   students");
               System.out.println("   search [partial name]");
               System.out.println("   assignments");
               System.out.println("   report");
               System.out.println("   student [Student name]");
               System.out.println("   assignment [assignment name]");

               //Reading the command from user
               inputCmd = scan.nextLine();
               String [] inptparams = inputCmd.split(" ");
               String param1="";
               if(inputCmd.contains("search")){
                   inptparams = inputCmd.split(" ");
                   inputCmd = "search";
               }
               else if(inputCmd.contains("student [")){
                   inptparams = inputCmd.split(" ");
                   inputCmd = "studentreport";
               }
               else if(inputCmd.contains("assignment [")){
                   inptparams = inputCmd.split(" ");
                   inputCmd = "assignmentreport";
               }

               switch(inputCmd){
               case "exit" :    System.exit(0);
               break;  
               case "help" :    continue;
               case "students" :    roll();
               break;  
               case "search" :    search(param1);
               break;  
               case "assignments" :    assignments();
               break;
               case "studentreport" :    studentreport(param1);
               break;
               case "assignmentreport" :    assignmentreport(param1);
               break;
               case "report" :    report();
               break;
              
              

               }
           }


           else{
               //If no commandline arg present -->Exit
               System.out.println("No file present !");
               System.exit(0);
           }

       }
   }

   public static void readFile(String fileName){
       BufferedReader br = null;
       FileReader fr = null;
       int lineCounter =1;

       try {

           fr = new FileReader(fileName);
           br = new BufferedReader(fr);

           String sCurrentLine;


           while ((sCurrentLine = br.readLine()) != null) {
               String[] token= sCurrentLine.split(",");
               if(lineCounter == 1){
                  
                   dept = token[0];
                   section = token[1];
                   assignmentArray[0] = token[2];
                   assignmentArray[1] = token[3];
                   assignmentArray[2] = token[4];
                   assignmentArray[3] = token[5];
                   assignmentArray[4] = token[6];
               }
               if(lineCounter == 2){
                   maxmarksArray[0] = token[2];
                   maxmarksArray[1] = token[3];
                   maxmarksArray[2] = token[4];
                   maxmarksArray[3] = token[5];
                   maxmarksArray[4] = token[6];
                   maximumMarksTotal = Double.valueOf(token[2])+ Double.valueOf(token[3])+ Double.valueOf(token[4])
                           + Double.valueOf(token[5])+ Double.valueOf(token[6]);
               }
               if(lineCounter >= 3){

                   Student s= new Student(token[0], token[1], token[2], token[3], token[4], token[5], token[6]);
                   studentArray[arrayCounter] =s;
                   arrayCounter++;
               }
               lineCounter++;
           }

       } catch (IOException e) {

           e.printStackTrace();

       }
   }

   public static void search(String pname){
       System.out.println("FirstName   LastName   Points   Grade");
       for(Student st : studentArray){

           if(st.getFirstName().equalsIgnoreCase(pname) || st.getLastName().equalsIgnoreCase(pname)){
               System.out.println(st.getFirstName()+" "
                       +st.getLastName()+" "+st.getLastName()+" "
                       +st.getMark1()+" "+st.getMark2()+" "
                       +st.getMark3()+" "+st.getMark3()+" "
                       +st.getMark4()+" "+st.getMark5()+" ");
           }
       }
   }

   public static void roll(){
       System.out.println("FirstName   LastName   Points   Grade");
       for(Student st : studentArray){
           System.out.println(st.getFirstName()+" "
                   +st.getLastName()+" "+st.getLastName()+" "
                   +st.getMark1()+" "+st.getMark2()+" "
                   +st.getMark3()+" "+st.getMark3()+" "
                   +st.getMark4()+" "+st.getMark5()+" ");
       }
   }
  
   public static void assignments(){
       System.out.println("Assignments for "+dept+", "+section);
       System.out.println("Assignmnets       Points");
       for(int i=0;i<assignmentArray.length;i++){
           System.out.println(assignmentArray[i]+" "+maxmarksArray[i]);
       }
   }
  
   public static void studentreport(String stName){
       System.out.println("FirstName   LastName   Points   Grade");
       for(Student st : studentArray){
           if(st.getFirstName().equalsIgnoreCase(stName)){
           System.out.println(st.getFirstName()+" "
                   +st.getLastName()+" "+st.getLastName()+" "
                   +st.getMark1()+" "+st.getMark2()+" "
                   +st.getMark3()+" "+st.getMark3()+" "
                   +st.getMark4()+" "+st.getMark5()+" ");
       }
       }
   }
  
   public static void assignmentreport(String assgName){
       System.out.println("Name    Points");
       for(int i=0;i<assignmentArray.length;i++){
           if(assignmentArray[i].equalsIgnoreCase(assgName)){
              
               System.out.println(assignmentArray[i]+" "+maxmarksArray[i]);
           }
       }
   }
  
   public static void report(){
       int countA=0;
       int countB=0;
       int countC=0;
       int countD=0;
       int countF=0;
       for(Student st : studentArray){
           if(st.grade() .equalsIgnoreCase("A")){
               countA++;
           }
           else if(st.grade() .equalsIgnoreCase("B")){
               countB++;
           }
           if(st.grade() .equalsIgnoreCase("C")){
               countC++;
           }
           if(st.grade() .equalsIgnoreCase("D")){
               countD++;
           }
           if(st.grade() .equalsIgnoreCase("F")){
               countF++;
           }
       }
       System.out.println("A : "+countA);
       System.out.println("B : "+countB);
       System.out.println("C : "+countC);
       System.out.println("D : "+countD);
       System.out.println("E : "+countF);
   }

}


class Student{
   private String firstName;
   private String lastName;
   private double mark1;
   private double mark2;
   private double mark3;
   private double mark4;
   private double mark5;
   private double maximumMarksTotal=0;
   private String grade;
   public Student(String firstName, String lastName, String mark1,
           String mark2, String mark3, String mark4, String mark5) {
       super();
       this.firstName = firstName;
       this.lastName = lastName;
       this.mark1 = Double.valueOf(mark1);
       this.mark2 = Double.valueOf(mark2);
       this.mark3 = Double.valueOf(mark3);
       this.mark4 = Double.valueOf(mark4);
       this.mark5 = Double.valueOf(mark5);
       this.grade = grade();
   }
   public double totalPoints(){
       return mark1+mark2+mark3+mark4+mark5;
   }
   public String grade(){
       double total = totalPoints();
       String grade ="";
       if(total >= (maximumMarksTotal *.9) ){
           grade = "A";
       }
       else if(total >= (maximumMarksTotal *.8) || total < (maximumMarksTotal *.9)){
           grade = "B";
       }
       else if(total >= (maximumMarksTotal *.7) || total < (maximumMarksTotal *.8)){
           grade = "C";
       }
       else if(total >= (maximumMarksTotal *.6) || total < (maximumMarksTotal *.7)){
           grade = "D";
       }
       else if( total < (maximumMarksTotal *.6)){
           grade = "F";
       }


       return grade;
   }
   public String getFirstName() {
       return firstName;
   }
   public void setFirstName(String firstName) {
       this.firstName = firstName;
   }
   public String getLastName() {
       return lastName;
   }
   public void setLastName(String lastName) {
       this.lastName = lastName;
   }
   public double getMark1() {
       return mark1;
   }
   public void setMark1(double mark1) {
       this.mark1 = mark1;
   }
   public double getMark2() {
       return mark2;
   }
   public void setMark2(double mark2) {
       this.mark2 = mark2;
   }
   public double getMark3() {
       return mark3;
   }
   public void setMark3(double mark3) {
       this.mark3 = mark3;
   }
   public double getMark4() {
       return mark4;
   }
   public void setMark4(double mark4) {
       this.mark4 = mark4;
   }
   public double getMark5() {
       return mark5;
   }
   public void setMark5(double mark5) {
       this.mark5 = mark5;
   }
   public String getGrade() {
       return grade;
   }
   public void setGrade(String grade) {
       this.grade = grade;
   }

}

philosophy101.txt

Philosophy 101,Section 1,essay 1, test 1,essay 2,test 2,final
firstName,lastName,5,20,5,20,50
Aristotle,Ofathens,4,18.3,3,15,40
Euclid,Elemnets,3,15,2,10,35
Immanuel,Kant,4.5,18,4,20,48
Benjamin,Franklin,5,20,4,19,49

Sample output:

ClassStats program by <>
loaded 'philosophy101.txt'
> help
   Accepted commands:
   exit
   help
   students
   search [partial name]
   assignments
   report
   student [Student name]
   assignment [assignment name]
students
FirstName   LastName   Points   Grade
Aristotle   Ofathens   Ofathens   4.0   18.3   3.0   3.0   15.0   40.0  
Euclid   Elemnets   Elemnets   3.0   15.0   2.0   2.0   10.0   35.0  
Immanuel   Kant   Kant   4.5   18.0   4.0   4.0   20.0   48.0  
Benjamin   Franklin   Franklin   5.0   20.0   4.0   4.0   19.0   49.0  
> help
   Accepted commands:
   exit
   help
   students
   search [partial name]
   assignments
   report
   student [Student name]
   assignment [assignment name]

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote