Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.InputMismatchException;
- import java.util.Scanner;
- enum ClassStanding{FRESHMAN,SOPHOMORE,JUNIOR,SENIOR,UNKNOWN,MASTERS_STUDIES,PHD_STUDIES};
- enum Major{CS,CEG,EE,ISE,BME,ME,MET,UNKNOWN};
- enum StudentType{UNDERGRADUATE,GRADUATE,UNDECLARED};
- public class Main {
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- Scanner stdin = new Scanner(System.in);
- ArrayList<Student> studentList = new ArrayList<>();
- int counter;
- boolean continueInput;
- int contCounter;
- do {
- do {
- System.out.print("Please enter what you want to do-ADD, REMOVE, LIST, or SAVE: ");
- switch (stdin.next().toLowerCase()) {
- case "add": add(stdin, studentList); counter = 0; break;
- case "remove": counter = 0; break;
- case "list": counter = 0; break;
- case "save": counter = 0; break;
- default: System.out.println("Improper input, please enter only ADD, REMOVE, LIST, or SAVE."); counter = 1;
- }
- } while (counter == 1);
- do {
- System.out.print("nDo you want to continue? Yes or no: ");
- switch (stdin.next().toLowerCase()) {
- case "yes": contCounter = 0; continueInput = true; break;
- case "no": contCounter = 0; continueInput = false; break;
- default: contCounter = 1; continueInput = false; System.out.print("nPlease only enter 'yes' or 'no'.");
- }
- } while (contCounter == 1);
- } while (continueInput);
- } // end main method
- public static void add(Scanner stdin, ArrayList<Student> studentList) { // this is the one
- String firstName;
- String lastName;
- String uid;
- StudentType studentType;
- ClassStanding studentClassStanding;
- Major major;
- double overallGPA;
- double majorGPA;
- String majorProfessor;
- boolean thesisOption;
- System.out.print("Please enter the student's first name: ");
- String tempName = stdin.next();
- firstName = checkName(tempName);
- System.out.print("Please enter the student's last name: ");
- tempName = stdin.next();
- lastName = checkName(tempName);
- System.out.println("Please enter the student's UID in the format 'U####' or 'U#####': ");
- String tempUID = stdin.next();
- uid = checkUID(tempUID).toUpperCase();
- int count;
- do {
- System.out.print("Please enter the student's status as UNDECLARED, UNDERGRADUATE, or GRADUATE: ");
- switch (stdin.next().toUpperCase()) {
- case "UNDECLARED":
- studentType = StudentType.UNDECLARED;
- studentClassStanding = setStudentClassStanding(studentType);
- count = 0;
- Student student = new Student(firstName, lastName,
- uid, studentType, studentClassStanding);
- studentList.add(student);
- break;
- case "UNDERGRADUATE":
- studentType = StudentType.UNDERGRADUATE;
- major = setMajor();
- studentClassStanding = setStudentClassStanding(studentType);
- System.out.println("Enter the student's overall GPA below.");
- overallGPA = setGPA();
- System.out.println("Enter the student's major GPA below.");
- majorGPA = setGPA();
- count = 0;
- UnderGraduate underGraduate = new UnderGraduate(firstName, lastName, uid, studentType,
- studentClassStanding, major, overallGPA, majorGPA);
- studentList.add(underGraduate);
- break;
- case "GRADUATE":
- studentType = StudentType.GRADUATE;
- studentClassStanding = setStudentClassStanding(studentType);
- majorProfessor = setMajorProfessor();
- thesisOption = setThesisOption();
- count = 0;
- Graduate graduate = new Graduate(firstName, lastName, uid, studentType,
- studentClassStanding, majorProfessor, thesisOption);
- studentList.add(graduate);
- break;
- default:
- System.out.println("Please enter either Undeclared, Undergraduate, or Graduate only.");
- count = 1;
- }
- } while (count == 1);
- }
- public static String checkName(String tempName) {
- int a = 1;
- String name1;
- Scanner scanner = new Scanner(System.in);
- do {
- name1 = tempName; // hold the value of firstName in name1
- for (int i = 0; i < tempName.length(); i++) { // loop to check input consists of letters (is a name)
- if (!Character.isLetter(tempName.charAt(i))) { // if non-letters detected, ensure this was intentional
- System.out.println("Please ensure you've entered the correct name. Re-enter the name or enter 'continue' to proceed: ");
- tempName = scanner.nextLine();
- if (tempName.equalsIgnoreCase("continue")) { // if user enters "continue", use original input
- a = 0;
- tempName = name1; // pass name1 value to firstName
- break;
- } else {
- a = 1; // continue prompting for firstName
- }
- } else { // accept input
- a = 0;
- }
- }
- } while (a == 1); // loop to ensure proper input
- return tempName;
- } // end checkName method
- public static String checkUID(String tempUID) {
- Scanner scan = new Scanner(System.in);
- int a;
- do {
- if (tempUID.charAt(0) == 'U' || tempUID.charAt(0) == 'u') {
- if (tempUID.length() == 6 || tempUID.length() == 5) {
- a = 0;
- } else {
- a = 1;
- System.out.print("Please ensure input is in the form of U#### or U#####. Please re-enter the UID: ");
- tempUID = scan.next();
- }
- } else {
- a = 1;
- System.out.print("Please ensure input is in the form of U#### or U#####. Please re-enter the UID: ");
- tempUID = scan.next();
- }
- } while (a == 1);
- return tempUID;
- } // end checkUID method
- public static ClassStanding setStudentClassStanding(StudentType studentType) {
- Scanner scan = new Scanner(System.in);
- int count;
- ClassStanding studentTempClassStanding = null;
- do {
- if (studentType == StudentType.UNDECLARED || studentType == StudentType.UNDERGRADUATE) {
- System.out.print("Please enter the student's class standing as either Freshman, Sophomore, Junior, Senior, or Unknown: ");
- switch (scan.next().toUpperCase()) {
- case "FRESHMAN":
- studentTempClassStanding = ClassStanding.FRESHMAN;
- count = 0;
- break;
- case "SOPHOMORE":
- studentTempClassStanding = ClassStanding.SOPHOMORE;
- count = 0;
- break;
- case "JUNIOR":
- studentTempClassStanding = ClassStanding.JUNIOR;
- count = 0;
- break;
- case "SENIOR":
- studentTempClassStanding = ClassStanding.SENIOR;
- count = 0;
- break;
- case "UNKNOWN":
- studentTempClassStanding = ClassStanding.UNKNOWN;
- count = 0;
- break;
- default:
- System.out.println("Please enter only Freshman, Sophomore, Junior, Senior, or Unknown.");
- count = 1;
- }
- } else {
- System.out.print("Please enter the student's class standing as either 'Masters' for Masters Studies or 'PhD' for PhD Studies: ");
- switch (scan.next().toUpperCase()) {
- case "MASTERS": studentTempClassStanding = ClassStanding.MASTERS_STUDIES; count = 0; break;
- case "PHD": studentTempClassStanding = ClassStanding.PHD_STUDIES; count = 0; break;
- default: System.out.println("Please enter only 'Masters' or 'PhD'.");
- count = 1;
- }
- }
- } while (count == 1);
- return studentTempClassStanding;
- } // end setStudentClassStanding method
- public static Major setMajor() {
- Major tempMaj = null;
- Scanner s = new Scanner(System.in);
- int c;
- do {
- System.out.print("Please enter the student's major as either CS, CEG, EE, ISE, BME, ME, MET, or Unknown: ");
- switch (s.next().toUpperCase()) {
- case "CS":
- tempMaj = Major.CS;
- c = 0;
- break;
- case "CEG":
- tempMaj = Major.CEG;
- c = 0;
- break;
- case "EE":
- tempMaj = Major.EE;
- c = 0;
- break;
- case "ISE":
- tempMaj = Major.ISE;
- c = 0;
- break;
- case "BME":
- tempMaj = Major.BME;
- c = 0;
- break;
- case "ME":
- tempMaj = Major.ME;
- c = 0;
- break;
- case "MET":
- tempMaj = Major.MET;
- c = 0;
- break;
- case "UNKOWN":
- tempMaj = Major.UNKNOWN;
- c = 0;
- break;
- default:
- System.out.println("Please enter only the specified values. ");
- c = 1;
- }
- } while (c == 1);
- return tempMaj;
- } // end setMajor method
- public static double setGPA() {
- Scanner s = new Scanner(System.in);
- double gpa;
- int a;
- do {
- try {
- System.out.print("Please enter the student's GPA: ");
- gpa = s.nextDouble();// read in the gpa
- if (gpa < 0.0 || gpa > 4.0) { // ensure the gpa is in the correct range
- System.out.println("Invalid input, please enter a positive value between 0.0 and 4.0.");
- a = 1;
- } else {
- a = 0;
- }
- } catch (InputMismatchException ex) { //catch any exceptions, prompt for correct input
- a = 1;
- gpa = 0.0;
- System.out.println("Sorry, please enter a double value.");
- s.nextLine(); // skip the last input
- }
- } while (a == 1 || gpa < 0.0 || gpa > 4.0); //loop while gpa is negative or incorrect input is received
- return gpa;
- } // end setGPA method
- private static String setMajorProfessor() {
- Scanner s = new Scanner(System.in);
- String prof;
- System.out.print("Please enter the name of the major professor: ");
- String tempName = s.nextLine();
- prof = checkName(tempName);
- return prof;
- } // end setMajorProfessor method
- private static boolean setThesisOption() {
- Scanner s = new Scanner(System.in);
- boolean thesis = false;
- int a;
- do {
- System.out.print("Please enter 'yes' if a thesis will be written, otherwise enter 'no': ");
- switch (s.next().toUpperCase()) {
- case "YES": thesis = true; a = 0; break;
- case "NO": thesis = false; a = 0; break;
- default: System.out.println("Please enter only 'yes' or 'no'."); a = 1;
- }
- } while (a == 1);
- return thesis;
- } // end setThesisOption method
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement