A desktop application built with JavaFX for managing university data including students, professors, courses, and departments. Developed for DTU (Delta Technological Universty).
- Features
- Tech Stack
- Project Structure
- Prerequisites
- Installation & Setup
- Usage
- Login Credentials
- Data Storage
- Architecture
- Known Issues & Limitations
- Future Improvements
| Module | Operations |
|---|---|
| Students | Add, Edit, Search, Delete student records |
| Professors | Add, Edit, Search, Delete professor records |
| Courses | Add, Edit, Search, Delete course records |
| Departments | Add, Edit, Search, Delete department records |
- π Login authentication system
- π Dashboard with module navigation
- π¨ Custom-styled UI with dark table theme
- π File-based persistent data storage
| Component | Technology |
|---|---|
| Language | Java 17 |
| UI Framework | JavaFX 17 |
| UI Layout | FXML |
| Icons | FontAwesomeFX 8.9 |
| IDE | IntelliJ IDEA |
| Data Storage | Flat text files (.txt) |
Universty Data Management/
βββ src/
β βββ sample/
β βββ Main.java # Application entry point
β βββ LogIn.java # Login controller & authentication
β βββ Controller.java # Central controller (all CRUD operations)
β βββ student.java # Student entity & file operations
β βββ professor.java # Professor entity & file operations
β βββ courses.java # Course entity & file operations
β βββ departments.java # Department entity & file operations
β β
β βββ *.fxml # JavaFX UI layouts
β β βββ sample.fxml # Login page
β β βββ Dashboard.fxml # Main dashboard
β β βββ Students.fxml # Student list view
β β βββ AddStudend.fxml # Add/Edit student form
β β βββ professors.fxml # Professor list view
β β βββ AddProfessor.fxml # Add/Edit professor form
β β βββ courses.fxml # Course list view
β β βββ AddCourse.fxml # Add/Edit course form
β β βββ Department.fxml # Department list view
β β βββ AddDepartment.fxml # Add/Edit department form
β β
β βββ *.css # Stylesheets
β β βββ style.css # General button styles
β β βββ table.css # Table view styles (dark theme)
β β
β βββ img/ # Image assets
β β βββ dtu-logo-en.png # University logo
β β βββ lock.png # Lock icon
β β
β βββ *_in.txt / *_out.txt # Data files
β βββ student_in.txt
β βββ professor_in.txt
β βββ courses_in.txt
β βββ departments_in.txt
β
βββ out/ # Compiled output (IDEA)
βββ .idea/ # IntelliJ IDEA config
βββ untitled7.iml # Module descriptor
βββ .gitignore
- Java Development Kit (JDK) 17 or later
- JavaFX 17 SDK
- IntelliJ IDEA (recommended) or any Java IDE
-
Clone the repository:
git clone <repository-url> cd "Universty Data Management"
-
Open in IntelliJ IDEA:
- File β Open β Select the project directory
-
Configure JavaFX SDK:
- File β Project Structure β Libraries
- Add JavaFX SDK library
-
Add FontAwesomeFX dependency:
- Ensure
fontawesomefx-8.9.jaris in the project classpath - Or add via Maven/Gradle (see below)
- Ensure
-
Run the application:
- Open
src/sample/Main.java - Right-click β Run 'Main.main()'
- Open
# Compile (adjust paths for your system)
javac --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml \
-cp "src" -d out src/sample/*.java
# Run
java --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml \
-cp out sample.Main- Launch the application
- Enter your credentials on the login screen
- Click "Log In"
After login, you'll see the main dashboard with four management modules:
- Manage Students - Student record management
- Manage Departments - Department/category management
- Manage Course - Course record management
- Manage Professors - Professor record management
Each module provides four operations:
- Add - Create new records
- Edit - Update existing records (enter old data in left fields, new data in right fields)
- Search - Find records by entering search criteria
- Delete - Remove records
| Username | Password | Role |
|---|---|---|
dtu |
dtu |
Standard User |
a |
a |
Root/Admin |
youssef |
(empty) | Standard User |
β οΈ Security Note: Credentials are hardcoded for development purposes. Do not use in production.
The application uses flat text files for data persistence:
| Entity | Input File | Output File |
|---|---|---|
| Students | student_in.txt |
student_out.txt |
| Professors | professor_in.txt |
professor_out.txt |
| Courses | courses_in.txt |
courses_out.txt |
| Departments | departments_in.txt |
departments_out.txt |
Student Record:
Name youssef : Dept dtu : Lev 1 : Ph 1
Professor Record:
mohammed:0113131:20000.0:true:false:false:false
Course Record:
112:java programming :400.0:3:150.0
Department Record:
dtu
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β JavaFX UI Layer β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β β Students β β Courses β β Professorsβ βDepts β β
β β FXML β β FXML β β FXML β β FXML β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
β β β β β β
β ββββββΌββββββββββββββΌβββββββββββββΌββββββββββββββΌββββββ β
β β Controller.java β β
β β (Central Event Handler) β β
β ββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ β
β β Entity Classes β β
β β student.java β professor.java β courses.java β ... β β
β ββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ β
β β File I/O Layer β β
β β Flat text files (*_in.txt / *_out.txt) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- MVC (Model-View-Controller):
- Model:
student.java,professor.java,courses.java,departments.java - View: FXML files
- Controller:
Controller.java,LogIn.java
- Model:
| Issue | Description |
|---|---|
| π΄ Hardcoded Paths | File paths are hardcoded to D:\untitled7\src\sample\ β won't work on other machines |
| π΄ No Build System | No Maven/Gradle β manual dependency management |
| π‘ Duplicate Code | CRUD logic is repeated across all entity classes |
| π‘ No Validation | Input validation only checks for empty fields |
| π‘ No Unit Tests | No test coverage |
| π‘ File I/O Race Conditions | Concurrent access could corrupt data |
| π‘ No Data Integrity | No unique constraints or referential integrity |
| π’ Mixed Naming | Some fields use camelCase, others use different conventions |
| π’ Commented Code | Large blocks of commented-out code throughout |
- Database Integration - Replace flat files with SQLite/MySQL
- Build System - Add Maven or Gradle build configuration
- Path Configuration - Use relative paths or configuration file
- Input Validation - Add proper field validation (phone format, score range, etc.)
- Error Handling - Implement proper error dialogs and logging
- Unit Tests - Add JUnit tests for entity classes
- Code Refactoring - Extract common CRUD logic into base class
- Search Functionality - Implement partial/fuzzy search
- Data Export - Add CSV/PDF export capability
- Authentication - Implement secure password hashing
- UI/UX - Add data tables with sorting and filtering
Developed as a university project for DTU (Delta Technological Universty).
This project is for educational purposes only.
Made with β Java & JavaFX