Create A Java Program That Uses A

Create A Java Program That Uses A

Create a Java program that utilizes an ArrayList to store student information, including five lab scores, three exam scores, a final exam grade, and first and last names. The program should output a detailed report of each student's scores, calculated averages, and letter grades. The program must include classes that conform to a specified UML diagram, with input handled through a StudentDriver class, and calculations such as class averages and final grades performed in the Student class. The application should present a menu to the user, allowing multiple student entries and searches until the user chooses to exit. Scores must be validated to be integers between 0 and 100, with appropriate error messages for invalid inputs. The percentage score is calculated as total points earned divided by 900, and a standard grading scale is used to assign letter grades. Additional functionalities include finding students by last name, displaying class grades sorted by last name, computing class statistics (average, max, min, range) for each assessment component, and handling multiple student entries dynamically. Name the project mrwJavaProject04. Ensure proper coding standards and zip the entire project for submission.

Paper For Above instruction

The development of a comprehensive Java application for managing student grades entails designing a program that is both functional and adheres to object-oriented principles. The primary goal is to facilitate the entry, storage, analysis, and reporting of student scores and grades, employing an ArrayList to efficiently handle dynamic data sets for multiple students. The architecture should include well-structured classes, particularly a Student class for individual records and a StudentDriver class to manage user interaction. The Student class will contain methods for calculating the class average and assigning letter grades based on standard grading scales. Input validation is crucial to ensure scores are integers within the range 0-100, with error messages guiding correct input. The application must constantly display a menu allowing users to add students, search by last name, display sorted class reports, and exit gracefully.

The Student class must encapsulate student information, including first and last names, five lab scores, three exam scores, a final exam score, and computed attributes such as total points, percentage, and final letter grade. The class should include methods for calculating individual scores, averages, and determining letter grades based on the course grading policy. This approach promotes encapsulation and modularity, facilitating easier maintenance and potential future enhancements.

Input handling will be managed via the StudentDriver class, which prompts for user input, validates data, and populates Student objects. It will manage a collection of Student objects stored in an ArrayList, allowing for flexible data management. When users input scores, the system will check for valid integers between 0 and 100; invalid inputs will trigger error messages, and the user will be prompted again until valid data is provided.

The user interface will repeatedly present a menu with options to input new student data, find students by last name, display class grades sorted alphabetically, or exit. When choosing to display class grades, the program will generate a detailed report showing each student’s scores, the percentage, and the grade. It should also calculate and display class statistics such as average scores, maximum, minimum, and range for each assessment component, providing a comprehensive overview of class performance.

Additional features include handling multiple students with the same last name, returning all matches during searches, and displaying relevant messages. The sorting of class grades by last name will utilize Java's built-in sorting capabilities, ensuring output is in ascending alphabetical order. The program must encapsulate all functionalities following the specified UML diagram while adhering to best coding practices, including proper indentation, meaningful variable names, and clear documentation.

Finally, once developed, all source files should be zipped into a single archive named mrwJavaProject04 and submitted via the designated dropbox before the deadline. This ensures organized, professional, and manageable code submission, reflecting the standards expected in a university-level computer science course.

References

  • Gaddis, T. (2018). Starting Out with Java: From Control Structures through Data Structures. Pearson.
  • Deitel, P. J., & Deitel, H. M. (2014). Java How to Program. Pearson.
  • Lea, D. (2010). Concurrent Programming in Java: Design Principles and Patterns. Addison-Wesley.
  • Horstmann, C. S. (2018). Core Java Volume I--Fundamentals. Pearson.
  • Java Documentation. (n.d.). Oracle. https://docs.oracle.com/javase/tutorial/
  • Baeldung. (2022). A Guide to Java ArrayLists. https://www.baeldung.com/java-arraylist
  • OOP Concepts. (n.d.). GeeksforGeeks. https://www.geeksforgeeks.org/object-oriented-programming-in-java/
  • Java Input Validation. (n.d.). JournalDev. https://www.journaldev.com/21899/java-input-validation
  • Effective Java. (2008). Joshua Bloch. Addison-Wesley.
  • Grading scale standards. (n.d.). CS219 Course Resources. [Placeholder for actual course standards or lecture notes]