SpreadsheetWriter Let\'s write a program that will produce a file that can be op
ID: 3913886 • Letter: S
Question
SpreadsheetWriter
Let's write a program that will produce a file that can be opened by Excel or LibreOffice Calc. Go to Course Resources and look up the grading weights used for this course. As an example, we'll use the following table, but you should use the values you find in Course Resources.
Write a class SSRow. Objects of this class should keep track of String name, int score, int weight, String calc. SSRow also has a toString method that returns this data in order, separated by commas.
name + "," + score + "," + weight + "," + calc
Further design of the SSRow class is left to you. Add what you need, but don't get carried away.
Write a class SSWriter that has a main method. For each of the grading categories (Lab, Reading Quizzes, Group Work, Midterm, Project, Final, Instructor Discretion),
query the user for a score, and create the following SSRow objects:
The grading weights to be used is provided ^
Thank you.
The weights for calculating an average based on our graded activities follow: Activity REVEL Assignments Black Board Lab Assignments 20 Micliermin Proji Final weighting % 20 20 20 20Explanation / Answer
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
class SSRow{
String name;
int score;
int weight;
String cal;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public String getCal() {
return cal;
}
public void setCal(String cal) {
this.cal = cal;
}
@Override
public String toString() {
return """ + name + "", "" + score + "", "" + weight + "", "" +
cal + """;
}
}
public class SSWriter {
// Maintain a static map b/w workType and weights
private static final Map<String, Integer>
WORK_TYPE_TO_WEIGHT_MAP = new LinkedHashMap<>();
static {
WORK_TYPE_TO_WEIGHT_MAP.put("REVEL Assignments", 20);
WORK_TYPE_TO_WEIGHT_MAP.put("Black Board Lab Assignments",
20);
WORK_TYPE_TO_WEIGHT_MAP.put("Midterm", 20);
WORK_TYPE_TO_WEIGHT_MAP.put("Project", 20);
WORK_TYPE_TO_WEIGHT_MAP.put("Final", 20);
}
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
ArrayList<SSRow> list = new ArrayList<>(); // List to maintain the
rows
int index = 1;
String avgString = "";
for(String workType : WORK_TYPE_TO_WEIGHT_MAP.keySet()){
System.out.println("Please enter the score for "+workType+": ");
int score = scanner.nextInt();
// Create a SSRow and set the parameters
SSRow ssRow = new SSRow();
ssRow.setName(workType);
ssRow.setScore(score);
ssRow.setWeight(WORK_TYPE_TO_WEIGHT_MAP.get(workType));
ssRow.setCal("=B"+index +"*C"+index+"/100");
list.add(ssRow);
if(index == 1) avgString +="=D"+index;
else avgString+= "+D"+index;
index++;
}
avgString = """+avgString+""";
PrintWriter printer = new PrintWriter(new FileWriter("mygrades.csv"),
true);
for(SSRow ssRow : list){
printer.println(ssRow); // Write one row at a time
}
printer.println(""average", "+avgString); // Append average row
scanner.close(); // close the resources after using
printer.close();
System.out.println("Program execution completed.");
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.