Content1 Final
Content1 Final
Introduction.................................................................................................................................................. 1
Objectives..................................................................................................................................................... 2
Functional Requirements................................................................................................................. 3
Project Schedule........................................................................................................................................... 4
Class Design.................................................................................................................................................. 5
Code Snippets............................................................................................................................................... 6
File Handling Documentation....................................................................................................................... 9
Known Issues or Limitations....................................................................................................................... 11
Future Improvements................................................................................................................................... 12
Contributors..................................................................................................................................................14
License......................................................................................................................................................... 14
Introduction
This project is a Java-based application that manages student grading and user authentication
through a graphical user interface (GUI). The project showcases the use of Object-Oriented
Programming (OOP) principles, including encapsulation, inheritance, and polymorphism.
Objectives
● To develop a student grading system with a user-friendly GUI.
● To implement user authentication using the Singleton design pattern.
● To practice file handling for storing and retrieving student data.
● To demonstrate the use of Java Swing for creating interactive GUI
Functional Requirements
● User can sign up and log in using their credentials.
● User can add, update, and delete student records.
● Student records are displayed in a table format within the GUI.
● Student data can be saved to and loaded from a file.
1
Project Schedule
2
Class Design
3
Code Snippets
Student Java
4
GradingApp.java
5
GradingGUI.java
In the GradingApp class, we handle file operations to save and load student data. Here's a
detailed explanation of each step involved in file handling:
1. File Opening:
○ To save student data to a file, we create a BufferedWriter wrapped
around a FileWriter.
6
○ To load student data from a file, we create a BufferedReader wrapped
around a FileReader.
File Reading:
● We read each line from the file using the readLine() method of the
BufferedReader.
● Each line is then split using a comma , to extract the student details.
File Writing:
● We write each student's data to the file using the write() method of the
BufferedWriter.
● Each student's details are converted to a string using the toString() method of the
Student class.
File Closing:
● After reading or writing, we close the file using the close() method of the
BufferedReader and BufferedWriter. This is automatically handled by the
try-with-resources statement.
7
Error Handling:
● We handle IOException to catch any errors that may occur during file operations.
● In the loadDataIntoTable() method of the GradingGUI class, if an error occurs
while loading data, a dialog box displays the error message.
3. The current implementation does not support concurrent access by multiple users.
If multiple users attempt to use the system simultaneously, it may lead to data
inconsistencies.
4. Data Validation:
5. There is limited validation for user input. For example, the system does not check
for valid email formats or enforce strong password policies.
6. Error Messages:
7. Error messages are minimal and may not provide sufficient information for
troubleshooting. Enhancing error messages could improve user experience.
8
8. File Handling:
9. The system relies on a text file for data storage, which may not be secure or efficient
for larger datasets. Using a database could improve performance and security.
11. The GUI may become unresponsive during long file operations. Implementing
background threads or a loading indicator could enhance the user experience.
13. Passwords are stored in plain text, which is not secure. Implementing encryption or
hashing for passwords would enhance security.
15. The current version of the application supports only basic CRUD (Create, Read,
Update, Delete) operations. Additional features like sorting, searching, and filtering
could improve usability.
17. The user credentials are hardcoded and shared across all instances. Implementing
a proper authentication mechanism with unique user accounts would provide better
security and flexibility.
18. By addressing these known issues and limitations, the application can be made
more robust, secure, and user-friendly.
Future Improvements
- Implement encryption for sensitive user data, such as passwords, to protect user information.
- Add search and filter functionalities to quickly find specific student records.
9
- Implement pagination or infinite scrolling to handle large datasets more efficiently.
- Allow multiple users to log in and manage their own set of student data independently.
- Implement role-based access control to provide different levels of access and permissions.
4. Database Integration:
- Replace the text file storage with a relational database (e.g., MySQL, SQLite) for better data
management and scalability.
- Implement connection pooling and optimized queries for efficient database interactions.
- Improve input validation to ensure data integrity and prevent invalid data entries.
- Provide more informative error messages and implement comprehensive logging for
debugging purposes.
- Add animations and visual enhancements to improve the overall look and feel of the
application.
7. Automated Testing:
- Implement unit tests, integration tests, and GUI tests to ensure the reliability and stability of
the application.
10
8. Localization and Internationalization:
- Ensure that the application can handle different date, time, and number formats based on user
preferences.
9. Additional Features:
- Implement reporting features to generate various statistical reports and charts for student
performance analysis.
By incorporating these improvements, the application can be made more secure, user-friendly,
and robust, catering to a broader range of users and use cases.
Contributors
● Vince V. Emberador
License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
11
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
12