Skip to content

Latest commit

Β 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ DTU University Data Management System

A desktop application built with JavaFX for managing university data including students, professors, courses, and departments. Developed for DTU (Delta Technological Universty).


πŸ“‹ Table of Contents


✨ Features

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

πŸ›  Tech Stack

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)

πŸ“ Project Structure

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

βš™οΈ Prerequisites

  • Java Development Kit (JDK) 17 or later
  • JavaFX 17 SDK
  • IntelliJ IDEA (recommended) or any Java IDE

πŸš€ Installation & Setup

Option 1: IntelliJ IDEA (Recommended)

  1. Clone the repository:

    git clone <repository-url>
    cd "Universty Data Management"
  2. Open in IntelliJ IDEA:

    • File β†’ Open β†’ Select the project directory
  3. Configure JavaFX SDK:

    • File β†’ Project Structure β†’ Libraries
    • Add JavaFX SDK library
  4. Add FontAwesomeFX dependency:

    • Ensure fontawesomefx-8.9.jar is in the project classpath
    • Or add via Maven/Gradle (see below)
  5. Run the application:

    • Open src/sample/Main.java
    • Right-click β†’ Run 'Main.main()'

Option 2: Command Line

# 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

πŸ“– Usage

1. Login

  • Launch the application
  • Enter your credentials on the login screen
  • Click "Log In"

2. Dashboard

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

3. CRUD Operations

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

πŸ”‘ Login Credentials

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.


πŸ’Ύ Data Storage

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

Data Format Examples

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

πŸ— Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    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)          β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Design Pattern

  • MVC (Model-View-Controller):
    • Model: student.java, professor.java, courses.java, departments.java
    • View: FXML files
    • Controller: Controller.java, LogIn.java

⚠️ Known Issues & Limitations

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

πŸš€ Future Improvements

  • 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

πŸ‘₯ Authors

Developed as a university project for DTU (Delta Technological Universty).


πŸ“„ License

This project is for educational purposes only.


Made with β˜• Java & JavaFX

About

A desktop application built with JavaFX for managing university data including students, professors, courses, and departments. Developed for DTU (Delta Technological Universty).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages