From adb8a07e9d6d140a8266341364f7c71e8b69d2ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Milena=20=C3=9Cnal?=
<114659482+fearlessturtle@users.noreply.github.com>
Date: Mon, 15 Dec 2025 19:48:32 +0300
Subject: [PATCH] Created database schema SQL scripts. Created tables:
schedules, exam_assignments. Implemented DAO classes for database operations.
---
.idea/uiDesigner.xml | 124 ++++++++++++++++++
src/main/java/module-info.java | 1 +
.../example/se302/data/DatabaseManager.java | 67 ++++++++++
.../example/se302/data/ExamAssignmentDAO.java | 19 +++
.../org/example/se302/data/ScheduleDAO.java | 22 ++++
src/main/resources/db/exam_scheduler.db | Bin 0 -> 16384 bytes
6 files changed, 233 insertions(+)
create mode 100644 .idea/uiDesigner.xml
create mode 100644 src/main/java/org/example/se302/data/DatabaseManager.java
create mode 100644 src/main/java/org/example/se302/data/ExamAssignmentDAO.java
create mode 100644 src/main/java/org/example/se302/data/ScheduleDAO.java
create mode 100644 src/main/resources/db/exam_scheduler.db
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 589fd39..e6a47f2 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -1,6 +1,7 @@
module org.example.se302 {
requires javafx.controls;
requires javafx.fxml;
+ requires java.sql;
// Export all packages
exports org.example.se302;
diff --git a/src/main/java/org/example/se302/data/DatabaseManager.java b/src/main/java/org/example/se302/data/DatabaseManager.java
new file mode 100644
index 0000000..bffce4a
--- /dev/null
+++ b/src/main/java/org/example/se302/data/DatabaseManager.java
@@ -0,0 +1,67 @@
+package org.example.se302.data;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class DatabaseManager {
+
+ private static final String JDBC_URL = "jdbc:sqlite:src/main/resources/db/exam_scheduler.db";
+
+ private static final String CREATE_SCHEDULES_TABLE =
+ "CREATE TABLE IF NOT EXISTS schedules (" +
+ " schedule_id INTEGER PRIMARY KEY AUTOINCREMENT," +
+ " name TEXT NOT NULL," +
+ " description TEXT," +
+ " created_at DATETIME NOT NULL," +
+ " last_modified DATETIME NOT NULL," +
+ " is_finalized BOOLEAN NOT NULL DEFAULT 0," +
+ " config_num_days INTEGER," +
+ " config_slots_per_day INTEGER," +
+ " config_start_date TEXT" +
+ ");";
+
+ private static final String CREATE_EXAM_ASSIGNMENTS_TABLE =
+ "CREATE TABLE IF NOT EXISTS exam_assignments (" +
+ " assignment_id INTEGER PRIMARY KEY AUTOINCREMENT," +
+ " schedule_id INTEGER NOT NULL," +
+ " course_code TEXT NOT NULL," +
+ " student_count INTEGER NOT NULL," +
+ " is_locked BOOLEAN NOT NULL DEFAULT 0," +
+ " day_index INTEGER," +
+ " timeslot_index INTEGER," +
+ " classroom_id TEXT," +
+ " FOREIGN KEY (schedule_id) REFERENCES schedules(schedule_id) ON DELETE CASCADE" +
+ ");";
+
+ public static Connection getConnection() throws SQLException {
+ return DriverManager.getConnection(JDBC_URL);
+ }
+
+ public static void CreateTable() throws SQLException
+ {
+ try (Connection conn = getConnection();
+ Statement stmt = conn.createStatement()) {
+
+ // 1. Schedules tablosunu oluştur
+ stmt.execute(CREATE_SCHEDULES_TABLE);
+
+ // 2. Exam Assignments tablosunu oluştur
+ stmt.execute(CREATE_EXAM_ASSIGNMENTS_TABLE);
+
+ System.out.println("Veritabanı tabloları başarıyla oluşturuldu veya kontrol edildi.");
+
+ } catch (SQLException e) {
+ System.err.println("Veritabanı başlatılırken hata oluştu: " + e.getMessage());
+ e.printStackTrace();
+ throw new RuntimeException("Veritabanı başlatma başarısız.", e);
+ }
+
+ }
+
+
+
+
+
+}
diff --git a/src/main/java/org/example/se302/data/ExamAssignmentDAO.java b/src/main/java/org/example/se302/data/ExamAssignmentDAO.java
new file mode 100644
index 0000000..7be5064
--- /dev/null
+++ b/src/main/java/org/example/se302/data/ExamAssignmentDAO.java
@@ -0,0 +1,19 @@
+package org.example.se302.data;
+
+import org.example.se302.model.ExamAssignment;
+
+public class ExamAssignmentDAO {
+
+ public static void SaveExamAssignment(ExamAssignment examAssignment)
+ {
+
+ }
+
+ public static void DeleteExamAssignment(ExamAssignment examAssignment)
+ {
+
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/example/se302/data/ScheduleDAO.java b/src/main/java/org/example/se302/data/ScheduleDAO.java
new file mode 100644
index 0000000..a92ef6f
--- /dev/null
+++ b/src/main/java/org/example/se302/data/ScheduleDAO.java
@@ -0,0 +1,22 @@
+package org.example.se302.data;
+
+import org.example.se302.model.ExamSchedule;
+
+public class ScheduleDAO {
+
+
+ public static void SaveSchedule(ExamSchedule examSchedule)
+ {
+
+ }
+
+ public static void DeleteSchedule(ExamSchedule examSchedule)
+ {
+
+ }
+
+
+
+
+
+}
diff --git a/src/main/resources/db/exam_scheduler.db b/src/main/resources/db/exam_scheduler.db
new file mode 100644
index 0000000000000000000000000000000000000000..89954055b7a4a6477bb7c71adf62a947e0c1c714
GIT binary patch
literal 16384
zcmeI#PjA{V7zXeJs`ap~+Kpp<=mFGrnzS#l6ikH{k}d>kToz@C>8#}sjUB1$Zkzf!
zcH8INo0L#Mh~3c>DMI0W?byF37f(LfQVTZEi!{{iz468{P2&S&hGDemKBBw1wx7+W
zu;;gBynR@_riS*bzsAX*lQI3^f&c^{009U<00Izz00bbgN8tBa`?zy?X+Hkc;nzfn
z`!EecrQ~gvicG8R=cB&IEuS;ry0SUjuCgwp>v?z}V>WVpe$730L|i6feT3us%$eGD-4Nwvp+penv0y&`OqKPj(q&A`rE;0+)hjnz
zqzaNe`YvL2<+?VvoYf3$z=zh<_Sw7oO>y`mkXbD5n|bPgwM>Oda=oJzCA8xr&(mu0
z)!OO-L)YV@Yp33CcWrw;=J6r-xYOs8)wb1UhwIRqY);O7Ytpv{ym!-j(K$aiXLU&G
zE}@fUpu}A%vPf(_wl^Z$Dt5Cl6&EzJ_v?#!+&MipA74JrxeP!xOI5ASd7AoD#!c6H
zUi%ZSUc4i@Sg5Fw3oY~P*)A$Xs6`ymxp_cen?D-!Ra!MJiR&QEV>y=;=