In: Computer Science
The application uses Java Object-Oriented features for its implementation. Students select from a menu of courses for which they wish to register. The program then validates the user selection against the registration business rules. If the selection is valid, the program prints out a confirmation message. Otherwise, the program prints out the current list of registered classes along with total registered credit hours. The program terminates when the user does not want to register for classes any more.
There are two Java classes of this application:
Course.java. This Java class is complete and does not need any modification
U10A1_OOConsoleRegisterForCourse.java. This is the class with the two methods that need to be completed
The two methods that need to be completed of the U10A1_OOConsoleRegisterForCourse.java are:
getChoice() method. This method loops over an array of course objects and prints out their attributes, one per line according to this format:
[selection number]Course Code (Course Credit Hours)
WriteCurrentRegistration() method. This method also loops over the array of course objects and prints out a list of registered courses thus far. The list current registered courses are enclosed inside a { } and separated by a ,. The methods also prints out the total credit hours thus far
Use these course codes, in this order, to test your application:
IT2230 IT2249 IT2230 IT3345
Successful completion of this assignment will display a menu of courses from which to select to register in the format of
[selection number]Course Code (Course Credit Hours)
In addition, the application should display and update current list of registered courses and their total credit hours. Your program interaction should look like the sample interaction video, “OO Console Register for Course”
PLEASE COMMENT THROUGHOUT CODE IN BOLD WHAT YOU USED/DID AND EXPLAIN WHY
REGISTER FOR COURSE CODE:
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package u10a1_ooconsoleregisterforcourse;
import java.util.Scanner;
public class U10A1_OOConsoleRegisterForCourse {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Teacher's Copy");
Scanner input = new Scanner(System.in);
//Courses is an array of course objects
//see the Course.java source code for members of Course
Course[] courses = {
new Course("IT1006", 6),
new Course("IT4782", 3),
new Course("IT4789", 3),
new Course("IT4079", 6),
new Course("IT2230", 3),
new Course("IT3345", 3),
new Course("IT2249", 6)
};
//choice is the number selected by the user
int choice;
int totalCredit = 0;
String yesOrNo = "";
do {
choice = getChoice(courses, input);
switch (ValidateChoice(choice, totalCredit, courses)) {
case -1:
System.out.println("**Invalid** - Your selection of " +
choice + " is not a recognized course.");
break;
case -2:
System.out.println("**Invalid** - You have already registerd for
this " +
courses[choice-1].getCode() + " course.");
break;
case -3:
System.out.println("**Invalid** - You can not register for more
than 9 credit hours.");
break;
case 0:
System.out.println("Registration Confirmed for course " +
courses[choice-1].getCode() );
totalCredit += courses[choice-1].getCreditHour();
courses[choice-1].setIsRegisteredFor(true);
break;
}
WriteCurrentRegistration(courses, totalCredit);
System.out.print("\nDo you want to try again? (Y|N)? : ");
yesOrNo = input.next().toUpperCase();
} while (yesOrNo.equals("Y"));
System.out.println("Thank you for registering with us");
}
//This method prints out the selection menu to the user in the
form of
//[selection number]Course Code (Course Credit Hours)
//from the courses array one per line
//and then prompts the user to make a number selection
public static int getChoice(Course[] courses, Scanner input)
{
System.out.println("Please type the number inside the [] to
register for a course");
System.out.println("The number inside the () is the credit hours
for the course");
// TO DO
// loop over the courses array and print out the attributes of
its
//objects in the format of
//[selection number]Course Code (Course Credit Hours)
//one per line
System.out.print("Enter your choice : ");
return (input.nextInt());
}
//This method validates the user menu selection
//against the given registration business rules
//it returns the following code based on the validation
result
// -1 = invalid, unrecognized menu selection
// -2 = invalid, alredy registered for the course
// -3 = invalid, No more than 9 credit hours allowed
// 0 = menu selection is valid
public static int ValidateChoice(int choice, int totalCredit,
Course[] courses) {
if (choice < 1 || choice > 7)
return -1;
else if (IsRegisteredBefore(choice, courses) )
return -2;
else if ( (totalCredit + courses[choice-1].getCreditHour()) >
9)
return -3;
return 0;
}
//This method checks the courses array of course object to
//see if the course has already been registered for or not
public static boolean IsRegisteredBefore(int choice, Course[]
courses) {
for(int i = 0; i < courses.length; i++)
if(courses[choice-1].getIsRegisteredFor() == true)
return true;
return false;
}
//This method prints the current list of registered courses thus
far
//from the courses array separated by , and enclosed inside {
}
//It also prints the total credit registered for thus far
public static void WriteCurrentRegistration(Course[] courses, int
totalCredit) {
System.out.print("Current course registration: { " );
// TO DO
// loop over the courses array, determine which courses are
registered
//for thus and print them out in the format of
//{ list of courses separated by , }
System.out.println(" }" );
System.out.println("Current registration total credit = " +
totalCredit);
}
}
COURSE CLASS CODE:
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package u10a1_ooconsoleregisterforcourse;
public class Course {
private String code = "";
private int creditHour = 0;
private boolean isRegisterdFor = false;
public Course(String code, int creditHour){
this.code = code;
this.creditHour = creditHour;
}
public void setCode(String code){
this.code = code;
}
public String getCode() {
return this.code;
}
public void setCrditHour(int creditHour) {
this.creditHour = creditHour;
}
public int getCreditHour() {
return this.creditHour;
}
public void setIsRegisteredFor(boolean trueOrFalse){
this.isRegisterdFor = trueOrFalse;
}
public boolean getIsRegisteredFor() {
return this.isRegisterdFor;
}
}
// Course.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package u10a1_ooconsoleregisterforcourse;
public class Course {
private String code = "";
private int creditHour = 0;
private boolean isRegisterdFor = false;
public Course(String code, int creditHour){
this.code = code;
this.creditHour = creditHour;
}
public void setCode(String code){
this.code = code;
}
public String getCode() {
return this.code;
}
public void setCrditHour(int creditHour) {
this.creditHour = creditHour;
}
public int getCreditHour() {
return this.creditHour;
}
public void setIsRegisteredFor(boolean trueOrFalse){
this.isRegisterdFor = trueOrFalse;
}
public boolean getIsRegisteredFor() {
return this.isRegisterdFor;
}
}
//end of Course.java
// U10A1_OOConsoleRegisterForCourse .java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package u10a1_ooconsoleregisterforcourse;
import java.util.Scanner;
public class U10A1_OOConsoleRegisterForCourse {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Teacher's Copy");
Scanner input = new Scanner(System.in);
//Courses is an array of course objects
//see the Course.java source code for members of Course
Course[] courses = {
new Course("IT1006", 6),
new Course("IT4782", 3),
new Course("IT4789", 3),
new Course("IT4079", 6),
new Course("IT2230", 3),
new Course("IT3345", 3),
new Course("IT2249", 6)
};
//choice is the number selected by the user
int choice;
int totalCredit = 0;
String yesOrNo = "";
do {
choice = getChoice(courses, input);
switch (ValidateChoice(choice, totalCredit, courses)) {
case -1:
System.out.println("**Invalid** - Your selection of " +
choice + " is not a recognized course.");
break;
case -2:
System.out.println("**Invalid** - You have already registerd for this " +
courses[choice-1].getCode() + " course.");
break;
case -3:
System.out.println("**Invalid** - You can not register for more than 9 credit hours.");
break;
case 0:
System.out.println("Registration Confirmed for course " +
courses[choice-1].getCode() );
totalCredit += courses[choice-1].getCreditHour();
courses[choice-1].setIsRegisteredFor(true);
break;
}
WriteCurrentRegistration(courses, totalCredit);
System.out.print("\nDo you want to try again? (Y|N)? : ");
yesOrNo = input.next().toUpperCase();
} while (yesOrNo.equals("Y"));
System.out.println("Thank you for registering with us");
}
//This method prints out the selection menu to the user in the form of
//[selection number]Course Code (Course Credit Hours)
//from the courses array one per line
//and then prompts the user to make a number selection
public static int getChoice(Course[] courses, Scanner input) {
System.out.println("Please type the number inside the [] to register for a course");
System.out.println("The number inside the () is the credit hours for the course");
// TO DO
// loop over the courses array and print out the attributes of its
//objects in the format of
//[selection number]Course Code (Course Credit Hours)
//one per line
// loop over the courses array
for(int i=0;i<courses.length;i++)
{
// display the selection number using (i+1) since array index starts from 0, get the code and credit hours from the Course's objects methods getCode() and getCreditHour() and display them as required
System.out.println("["+(i+1)+"]"+courses[i].getCode()+" ("+courses[i].getCreditHour()+")");
}
System.out.print("Enter your choice : ");
return (input.nextInt());
}
//This method validates the user menu selection
//against the given registration business rules
//it returns the following code based on the validation result
// -1 = invalid, unrecognized menu selection
// -2 = invalid, already registered for the course
// -3 = invalid, No more than 9 credit hours allowed
// 0 = menu selection is valid
public static int ValidateChoice(int choice, int totalCredit, Course[] courses) {
if (choice < 1 || choice > 7)
return -1;
else if (IsRegisteredBefore(choice, courses) )
return -2;
else if ( (totalCredit + courses[choice-1].getCreditHour()) > 9)
return -3;
return 0;
}
//This method checks the courses array of course object to
//see if the course has already been registered for or not
public static boolean IsRegisteredBefore(int choice, Course[] courses) {
for(int i = 0; i < courses.length; i++)
if(courses[choice-1].getIsRegisteredFor() == true)
return true;
return false;
}
//This method prints the current list of registered courses thus far
//from the courses array separated by , and enclosed inside { }
//It also prints the total credit registered for thus far
public static void WriteCurrentRegistration(Course[] courses, int totalCredit) {
System.out.print("Current course registration: { " );
// TO DO
// loop over the courses array, determine which courses are registered
//for thus and print them out in the format of
//{ list of courses separated by , }
// define a String to hold the courses code registered
String str = "";
for(int i=0;i<courses.length;i++)
{
if(courses[i].getIsRegisteredFor()) // if ith course is registered
{
if(str.length() > 0) // check if string non-empty string, then append this code by separating it with the previous code using , (comma)
str += ", "+courses[i].getCode();
else // if string is empty string then this is the first code to be added
str = courses[i].getCode();
}
}
System.out.print(str); // print the String of course codes separated by ,(comma)
System.out.println(" }" );
System.out.println("Current registration total credit = " + totalCredit);
}
}
//end of U10A1_OOConsoleRegisterForCourse .java
Output: