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=;=