A lightweight Java console application for managing users (students, teachers, admins), courses, grades and announcements. The app uses JDBC + Oracle for persistence; the current codebase includes DAO classes and SQL scripts to create and seed the schema.
The application is focused on the administration and usage of a typical university database, at least the subsection that a student would be interested in (such as grades, courses and professors); while also offering a simplified user and authentification system, users being split up into 3 categories: STUDENT, TEACHER, ADMIN.
There is an announcement system that displays on the main terminal page, announcements that can be posted by admins.
There is also a simplel audit log system, where each action taken by the user during their session is catalouged into a CSV that is saved to disk.
The services provided by the application are:
- For Students:
- View the grades received for courses (including grades from previous years)
- For Teachers:
- See which courses you teach, which students are enrolled in them, and what grades those students have
- Update the course information you teach for a specific group
- Grade a student
- For Admins:
- Reset any user's password
- Create new users
- Assign or unassign a teacher to teach a course for a specific group
- Enroll or unenroll a group in a course
- Make a grade permanent (for example at the end of an academic year)
- Create announcements
- Java 21 (project language level is JDK 21)
- Oracle Database (tested with Oracle 19c).
- Oracle JDBC driver (ojdbc.jar).
- Main entry point: com.unibuc.pao.Main
- Database connection parameters: com.unibuc.pao.DatabaseConnection
- Console UI / application flow: com.unibuc.pao.Service
- User service and auth: com.unibuc.pao.UserService
- SQL schema and seed: Creation.sql, SeedData.sql
- Existing README and other info (Romanian, project details): README.md, System Definition
- Create an Oracle database/schema that your local DB server exposes. The default JDBC URL and credentials are stored in com.unibuc.pao.DatabaseConnection. Edit that file if you need different host/port/service/credentials.
- Run the SQL DDL to create tables and triggers: Creation.sql
- Run seed data to populate some initial users/courses: SeedData.sql (ideally modify with your own SeedData first)
- Put the Oracle JDBC driver on disk, e.g. /path/to/ojdbc.jar (or C:\path\to\ojdbc.jar).
- Compile:
mkdir -p out
# Unix / macOS
javac -d out -cp /path/to/ojdbc.jar $(find src -name '*.java')
# Windows (PowerShell)
javac -d out -cp C:\path\to\ojdbc.jar (Get-ChildItem -Recurse -Filter *.java -Name | ForEach-Object { "src\$_" }) - Run:
# Unix / macOS
java -cp out:/path/to/ojdbc.jar com.unibuc.pao.Main
# Windows (cmd)
java -cp out;C:\path\to\ojdbc.jar com.unibuc.pao.Main