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 namedExplanation / 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]
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.