Untitled
unknown
java
a year ago
17 kB
9
Indexable
import java.util.Scanner;
import java.util.ArrayList;
import java.time.format.DateTimeFormatter;
import java.time.LocalDate;
import java.time.format.DateTimeParseException;
public class ClassroomBookingApp {
// Create new Scanner object to obtain input
private static final Scanner INPUT = new Scanner(System.in);
// Define the ArrayLists as static fields (so can be accessed by all methods instead of just main method)
private static final ArrayList<Classroom> CLASSROOMS = new ArrayList<>();
private static final ArrayList<Lecturer> LECTURERS = new ArrayList<>();
private static final ArrayList<Booking> BOOKINGS = new ArrayList<>();
//===============================================================
// PRINTING OUTPUT
//===============================================================
private static void printMainMenu() {
System.out.println("*".repeat(50));
System.out.println("Welcome to Classroom Booking Application");
System.out.println("*** Main Menu ***");
System.out.println("1. Manage Classrooms");
System.out.println("2. Manage Lecturers");
System.out.println("3. Manage Bookings");
System.out.println("4. Generate Reports");
System.out.println("0. Exit");
System.out.println("*".repeat(50));
}
private static void printClassroomsMenu() {
System.out.println("*".repeat(50));
System.out.println("*** Classrooms Menu ***");
System.out.println("1. Create Classroom");
System.out.println("2. Update Classroom");
System.out.println("3. Delete Classroom");
System.out.println("4. View All Classrooms");
System.out.println("0. Back to Main Menu");
System.out.println("*".repeat(50));
}
private static void printLecturersMenu() {
System.out.println("*".repeat(50));
System.out.println("*** Lecturers Menu ***");
System.out.println("1. Add Lecturer");
System.out.println("2. Edit Lecturer");
System.out.println("3. Remove Lecturer");
System.out.println("4. View All Lecturers");
System.out.println("0. Back to Main Menu");
System.out.println("*".repeat(50));
}
private static void printBookingsMenu() {
System.out.println("*".repeat(50));
System.out.println("*** Bookings Menu ***");
System.out.println("1. Make a Booking");
System.out.println("2. Cancel a Booking");
System.out.println("3. View All Bookings");
System.out.println("0. Back to Main Menu");
System.out.println("*".repeat(50));
}
private static void printReportsMenu() {
System.out.println("*".repeat(50));
System.out.println("*** Reports Menu ***");
System.out.println("1. Generate Bookings Report by Date");
System.out.println("2. Generate Bookings Report by Classroom");
System.out.println("3. Generate Bookings Report by Lecturer");
System.out.println("4. Generate Total Number of Bookings");
System.out.println("0. Back to Main Menu");
System.out.println("*".repeat(50));
}
private static void printClassrooms() {
System.out.println("*".repeat(50));
System.out.println("** Classroom List **");
// Print rooms
for (Classroom eachRoom : CLASSROOMS) {
System.out.printf("Classroom Number: %d, Name: %s, Location: %s%n"
, eachRoom.getClassroomNum(), eachRoom.getClassroomName(), eachRoom.getClassroomLocation());
}
System.out.println("*".repeat(50));
}
private static void printLecturers() {
System.out.println("*".repeat(50));
System.out.println("** Lecturer List **");
// Print lecturers
for (Lecturer eachLecturer : LECTURERS) {
System.out.printf("Lecturer ID: %d, Name: %s, Contact: %d, Email: %s%n"
, eachLecturer.getLecturerId(), eachLecturer.getFullName(), eachLecturer.getContactNumber(), eachLecturer.getEmailAddress());
}
System.out.println("*".repeat(50));
}
private static void printMsg(String prompt) {
System.out.println("*".repeat(50));
System.out.println(prompt);
System.out.println("*".repeat(50));
}
//===============================================================
// FORMAT CHECKING
//===============================================================
private static boolean isValidEmailFormat(String email) {
// Email doesn't contains "0"
if (!email.contains("@")) {
return false;
}
// Split email into 2 parts
String[] parts = email.split("@");
// "@" more than 1
if (parts.length != 2) {
return false;
}
// Get 2 parts value
String username = parts[0];
String domain = parts[1];
// Is first part empty or second part has wrong format
return (!username.isEmpty()) && (domain.equals("sim.edu.sg"));
}
//===============================================================
// GET VALID INPUT
//===============================================================
private static String getNonEmptyInput(String prompt) {
String input = "";
while (true) {
// Get input
System.out.print(prompt);
input = INPUT.nextLine().trim();
// Is input empty
if (!input.isEmpty()) {
break;
} else {
printMsg("Error: Input can't be EMPTY! Please try again");
}
}
return input;
}
private static int getValidOption(String typeOfMenu) {
int input = 0;
int maxOption = typeOfMenu.equals("Bookings") ? 3 : 4;
while (true) {
try {
// Get input
input = Integer.parseInt(getNonEmptyInput("Please select an option to continue: "));
// Is input in range
if (0 <= input && input <= maxOption) {
break;
} else {
printMsg("Error: Invalid Option!");
}
// Is input Integer
} catch (NumberFormatException e) {
printMsg("Error: Invalid Option!");
}
}
return input; // Return Valid Input
}
private static int getValidInfo(String prompt) {
int input = 0;
while (true) {
try {
// Get input
input = Integer.parseInt(getNonEmptyInput(prompt));
break;
// Is input Integer
} catch (NumberFormatException e) {
printMsg("Error: That is not a NUMBER!");
}
}
return input;
}
private static String getValidEmail(String prompt) {
while (true) {
// Get email
String email = getNonEmptyInput(prompt);
// Invalid email format
if (!isValidEmailFormat(email)) {
printMsg("Error: Invalid email format! Please try again!");
// Valid email format
} else {
return email;
}
}
}
private static Classroom getValidRoom() {
while (true) {
// Get room number
int roomInput = getValidInfo("Enter classroom number: ");
// Find room
for (Classroom existingRoom : CLASSROOMS) {
// Is room found
if (existingRoom.getClassroomNum() == roomInput) {
return existingRoom;
}
}
// Room not found
printMsg("Error: The room is not existing!");
}
}
private static Lecturer getValidLecturer() {
while (true) {
// Get room number
int lecturerInput = getValidInfo("Enter lecturer ID: ");
// Find room
for (Lecturer existingLecturer : LECTURERS) {
// Is room found
if (existingLecturer.getLecturerId() == lecturerInput) {
return existingLecturer;
}
}
// Room not found
printMsg("Error: The lecturer is not existing!");
}
}
//===============================================================
// CLASSROOM
//===============================================================
private static void createClassroom() {
// Get classroom info
int classroomNum = getValidInfo("Enter classroom number: ");
String classroomName = getNonEmptyInput("Enter classroom name: ");
String classroomLocation = getNonEmptyInput("Enter classroom location: ");
// Create classroom
Classroom newRoom = new Classroom(classroomNum, classroomName, classroomLocation);
CLASSROOMS.add(newRoom);
// Display success msg
printMsg("New classroom created!");
}
private static void updateClassroom() {
// Get room number
Classroom roomToUpdate = getValidRoom();
// Get new classroom info
String newName = getNonEmptyInput("Update classroom name: ");
String newLocation = getNonEmptyInput("Update classroom location: ");
// Update classroom info
roomToUpdate.setClassroomName(newName);
roomToUpdate.setClassroomLocation(newLocation);
// Display success msg
printMsg("Classroom '" + roomToUpdate.getClassroomNum() + "' updated!");
}
private static void deleteClassroom() {
// Get room number
Classroom roomToDelete = getValidRoom();
// Remove room
CLASSROOMS.remove(roomToDelete);
// Display success msg
printMsg("Classroom '" + roomToDelete.getClassroomNum() + "' deleted!");
}
private static void viewClassrooms() {
// 0 room
if (CLASSROOMS.isEmpty()) {
printMsg("No classrooms created!");
// Has room
} else {
printClassrooms();
}
}
//===============================================================
// LECTURERS
//===============================================================
private static void addLecturer() {
// Get lecturer info
int lecturerId = getValidInfo("Enter lecturer ID: ");
String lecturerName = getNonEmptyInput("Enter lecturer full name: ");
int lecturerContact = getValidInfo("Enter lecturer contact number: ");
String lecturerEmail = getValidEmail("Enter lecturer email: ");
// Add lecturer
Lecturer newLecturer = new Lecturer(lecturerId, lecturerName, lecturerContact, lecturerEmail);
LECTURERS.add(newLecturer);
// Display success msg
printMsg("New lecturer added!");
}
private static void editLecturer() {
// Get lecturer ID
Lecturer lecturerToUpdate = getValidLecturer();
// Get new lecturer info
String newName = getNonEmptyInput("Edit lecturer full name: ");
int newContact = getValidInfo("Edit lecturer contact number: ");
String newEmail = getValidEmail("Edit lecturer email: ");
// Update lecturer info
lecturerToUpdate.setFullName(newName); //update lecturer details
lecturerToUpdate.setContactNumber(newContact);
lecturerToUpdate.setEmailAddress(newEmail);
// Display success msg
printMsg("Lecturer '" + lecturerToUpdate.getLecturerId() + "' edited!");
}
private static void removeLecturer() {
// Get lecturer ID
Lecturer lecturerToRemove = getValidLecturer();
// Remove lecturer
LECTURERS.remove(lecturerToRemove);
// Display success msg
printMsg("Lecturer '" + lecturerToRemove.getLecturerId() + "' removed!");
}
private static void viewLecturers() {
// 0 lecturer
if (LECTURERS.isEmpty()) {
printMsg("No lecturers added!");
// Has lecturer
} else {
printLecturers();
}
}
//===============================================================
// BOOKINGS
//===============================================================
private static void makeBooking() {}
private static void cancelBooking() {}
private static void viewBookings() {}
//===============================================================
// MAIN METHOD
//===============================================================
public static void main(String[] args) {
int optionInput = 0; // Variable to store user's option input
boolean toMainMenu = true;
boolean toClassroomsMenu = true;
boolean toLecturersMenu = true;
boolean toBookingsMenu = true;
boolean toReportsMenu = true;
while (toMainMenu) {
toMainMenu = false;
// Display main menu
printMainMenu();
// Get option choice
optionInput = getValidOption("Main");
switch (optionInput) {
// Manage Classrooms
case 1:
while (toClassroomsMenu) {
// Display classrooms menu
printClassroomsMenu();
// Get option choice
optionInput = getValidOption("Classrooms");
switch (optionInput) {
case 1:
createClassroom();
break;
case 2:
updateClassroom();
break;
case 3:
deleteClassroom();
break;
case 4:
viewClassrooms();
break;
case 0:
toClassroomsMenu = false;
toMainMenu = true;
break;
}
}
break;
// Manage Lecturers
case 2:
while (toLecturersMenu) {
// Display lecturers menu
printLecturersMenu();
optionInput = getValidOption("Lecturers");
switch (optionInput) {
case 1:
addLecturer();
break;
case 2:
editLecturer();
break;
case 3:
removeLecturer();
break;
case 4:
viewLecturers();
break;
case 0:
toLecturersMenu = false;
toMainMenu = true;
break;
}
}
break;
// Manage Bookings
case 3:
while (toBookingsMenu) {
// Display bookings menu
printBookingsMenu();
optionInput = getValidOption("Bookings");
switch (optionInput) {
case 1:
makeBooking();
break;
case 2:
cancelBooking();
break;
case 3:
viewBookings();
break;
case 0:
toBookingsMenu = false;
toMainMenu = true;
break;
}
}
break;
// Manage Reports
case 4:
while (toReportsMenu) {
printReportsMenu();
optionInput = getValidOption("Reports");
}
break;
// Exit
case 0:
printMsg("Thank you for using the Classroom Booking Application!");
break;
}
}
}
}Editor is loading...
Leave a Comment