This assignment is built on top of Assignment 6 Solved
This assignment is built on top of Assignment 6. Add capability to handle Grade Book for different subjects (Chemistry and Computer Science). We will assume a maximum of five assignments and up to 40 students. Details will be provided in the classFrom Lab 6 - You have a Printable interface - used by Student. Steps for completing Lab 7 -1. Create a new interface for Faculty to use: package adapter; public interface Createable { public void createGradeBook(String fname); public void printGradeBook(); }2. Create a class called InstructorReport package model; public class InstructorReport { private Student s[] = null; private Statistics st = null; public InstructorReport(Student [] s, Statistics st){ this.s = s; this.st = st }public void print() { //call a method that print all student info. //st.print(); } }3. Add methods in Util or FileIO class (Util package) to serialize and deserialize InstructorReport.public void writetodisk(InstructorReport a1, String fname) { try { FileOutputStream p = new FileOutputStream(fname); ObjectOutputStream p1 = new ObjectOutputStream(p); p1.writeObject(a1); } catch(Exception e) { //exception message } }public InstructorReport readfromdisk(String fname) { InstructorReport a= null; try { FileInputStream p = new FileInputStream(fname); ObjectInputStream p1 = new ObjectInputStream(p); a = (InstructorReport)p1.readObject(); } catch(Exception e) { //exception message } return a; }4. Rename your Print class to CreatePrint. package adapter; public abstract class CreatePrint { private Util u = new Util(); private Student arr[] = new Student[40]; private Statistics s = new Statistics(); private StudentReport arr2[] = new StudentReport[40];public void createGradeBook(String fname) { //This method must be called first - before printGradeBook() or getStats() or printStudentScores() //we will call existing methods to: //a. read the file and build a student array - call readFile in Util //b. compute statistics. - call methods in Statistics //c. build StudentReport array [done in lab 6] //d. serialize studentreport - upto 40 files. [done in lab 6] //e. For instructor - write one file (serialized) with Student [] and Statistics[] }public void printGradeBook() { } //use debug flag for printing. if debug = true then print other no printing.public void getStats() { //print stats from any object - read one object from disk and print stats. }public void printstudentscores(int id) { //use the serialized life so your life is easy. //pl. don't use search in studentreport array. long way. no good. }}5. Create a class called GradeBook that extends the abstract class called CreatePrint package adapter; public class GradeBook extends CreatePrint implements Creatable, Printable {}//default package. 6. Testing your code public class Driver7 { public static void main(String [] args) { //Test Instructor interface Creatable p = new GradeBook(); String fname = "c:\path to filename"; p.createGradeBook(fname); p.printGradeBook(); //next three lines should give a compiler error - can you say why? //p.getStats(); //p.printstudentscores(1234); //p.printstudentscores(9111); //invalid student id shld print a friendly message - no such student. //Test Student Interface Printable s = p; s.getStats(); s.printstudentscores(1234); s.printstudentscores(9111); //invalid student id shld print a f } }Extra credit information: 1. If Lab6 submitted by March 12th midnight - you attempt any ec assignment you can earn full points. 2. If Lab6 submitted by March 15th midnight - you attempt any ec assignment you can 50% of earned points.EC1 - Lab 8 [25 points] - You design, develop and test. Using Lab 7 - add capability for student (add to Printable interface) to compute and print grade. If total score is 91 - Print A- Pl. use the following rubric. For Letter Grade: Grade: A+ assigned with 97% or higher Grade: A assigned with 93% or higher Grade: A- assigned with 90% or higher Grade: B+ assigned with 87% or higher Grade: B assigned with 83% or higher Grade: B- assigned with 80% or higher Grade: C+ assigned with 77% or higher Grade: C assigned with 73% or higher Grade: D+ assigned with 70% or higher Grade: D assigned with 63% or higher Grade: D- assigned with 60% or higher Grade: F assigned with 0% or higherEC2 - Lab 7 - if submitted by 3/19 midnight PST (+2 hours) - extra 10 points.EC3 - Still thinking.DEBUG flag - //Just an example of how to implement DEBUG flag public interface GBCons { public final boolean DEBUG = true; }public class Someclass implements GBCons {public void printstats() { //let's say u write code to deserialize a file StudentReport r = .....; if(r!=null) if(DEBUG) r.getStats.print();