// CLASS: Main (Main.java)
//
// DESCRIPTION
// The Main class for Project 2.
//
// COURSE AND PROJECT INFO
// CSE205 Object Oriented Programming and Data Structures, Fall 2021
// Project Number: 2
//
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
new Main().run();
}
private void run() {
ArrayList<Student> studentList = new ArrayList<>();
try {
studentList = readFile();
} catch (FileNotFoundException e) {
System.out.println("Sorry, could not open \'p02-students.txt\' for
reading. Stopping.");
System.exit(-1);
}
calcTuition(studentList);
Sorter.insertionSort(studentList, Sorter.SORT_ASCENDING);
try {
writeFile(studentList);
} catch (FileNotFoundException e) {
System.out.println("Sorry, could not open \'p02-tuition.txt\' for
writing. Stopping.");
System.exit(-1);
}
}
private void calcTuition(ArrayList<Student> pStudentList) {
for (Student s : pStudentList) {
s.calcTuition();
}
}
private ArrayList<Student> readFile() throws FileNotFoundException {
ArrayList<Student> studentList = new ArrayList<>();
Scanner in = new Scanner(new File("p02-students.txt"));
while (in.hasNext()) {
String studentType = in.next();
if (studentType.equals("C")) {
studentList.add(readOnCampusStudent(in));
} else {
studentList.add(readOnlineStudent(in));
}
}
in.close();
return studentList;
}
private OnCampusStudent readOnCampusStudent(Scanner pIn) {
String id = pIn.next();
String lastName = pIn.next();
String firstName = pIn.next();
OnCampusStudent student = new OnCampusStudent(id, firstName, lastName);
String res = pIn.next();
double fee = pIn.nextDouble();
int credits = pIn.nextInt();
if (res.equals("R")) {
student.setResidency(OnCampusStudent.RESIDENT);
} else {
student.setResidency(OnCampusStudent.NON_RESIDENT);
}
student.setProgramFee(fee);
student.setCredits(credits);
return student;
}
private OnlineStudent readOnlineStudent(Scanner pIn) {
String id = pIn.next();
String lastName = pIn.next();
String firstName = pIn.next();
OnlineStudent student = new OnlineStudent(id, firstName, lastName);
String fee = pIn.next();
int credits = pIn.nextInt();
if (fee.equals("T")) {
student.setTechFee(true);
} else {
student.setTechFee(false);
}
student.setCredits(credits);
return student;
}
private void writeFile(ArrayList<Student> pStudentList) throws
FileNotFoundException {
PrintWriter out = new PrintWriter("p02-tuition.txt");
for (Student s : pStudentList) {
out.printf("%-15s %-19s %-14s %8.2f", s.getId(), s.getLastName(),
s.getFirstName(), s.getTuition());
out.print("\n");
out.flush();