From b01a5654a188493ce1d7dab4ef0fc08c8f596608 Mon Sep 17 00:00:00 2001 From: AryanGh-imp Date: Sun, 24 May 2026 06:38:55 +0330 Subject: [PATCH] feat: Set up project skeleton with stub implementations for student tasks --- src/main/java/dev/Main.java | 116 +++++++++++++++++- src/main/java/dev/model/Student.java | 81 ++++++++++++ src/main/java/dev/service/StudentManager.java | 59 +++++++++ src/main/java/dev/thread/StudentLoader.java | 62 ++++++++++ src/main/java/dev/utils/FileManager.java | 39 ++++++ 5 files changed, 356 insertions(+), 1 deletion(-) create mode 100644 src/main/java/dev/model/Student.java create mode 100644 src/main/java/dev/service/StudentManager.java create mode 100644 src/main/java/dev/thread/StudentLoader.java create mode 100644 src/main/java/dev/utils/FileManager.java diff --git a/src/main/java/dev/Main.java b/src/main/java/dev/Main.java index 967f714..039b36e 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -1,8 +1,122 @@ package dev; +import dev.service.StudentManager; +import dev.thread.StudentLoader; +import dev.utils.FileManager; + +import java.util.List; +import java.util.Scanner; public class Main { - public static void main(String[] args) { + + public static void main( + String[] args) + throws Exception { + + Scanner scanner = + new Scanner(System.in); + + StudentManager manager = + new StudentManager(); + + while (true) { + + System.out.println(""" + 1.Load students + 2.Search student + 3.Remove student + 4.Print students + 5.Exit + """); + + int choice = + scanner.nextInt(); + + switch (choice) { + + case 1 -> { + + List data = + FileManager + .loadStudents( + "students.txt"); + + // TODO: + + // Split data into 3 parts + + List part1 = null; + + List part2 = null; + + List part3 = null; + + // TODO: + + StudentLoader t1 = + null; + + StudentLoader t2 = + null; + + StudentLoader t3 = + null; + + // TODO: + + // start() + + // join() + + // merge results + + } + + case 2 -> { + + System.out.print( + "ID: "); + + int id = + scanner.nextInt(); + + System.out.println( + manager + .searchStudent( + id)); + + } + + case 3 -> { + + System.out.print( + "ID: "); + + int id = + scanner.nextInt(); + + boolean removed = + manager + .removeStudent( + id); + + System.out.println( + removed); + + } + + case 4 -> + manager + .printStudents(); + + case 5 -> { + return; + } + + } + + } } + } \ No newline at end of file diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java new file mode 100644 index 0000000..f0484f4 --- /dev/null +++ b/src/main/java/dev/model/Student.java @@ -0,0 +1,81 @@ +package dev.model; + +public class Student { + + private final int id; + + private final String name; + + private final String major; + + private final double gpa; + + public Student( + int id, + String name, + String major, + double gpa) { + + this.id = id; + this.name = name; + this.major = major; + this.gpa = gpa; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public String getMajor() { + return major; + } + + public double getGpa() { + return gpa; + } + + @Override + public int hashCode() { + + // TODO: + // Return custom hash + + // Example: + // return id % 97; + + return 0; + } + + @Override + public boolean equals(Object obj) { + + // TODO: + + // Step 1: + // Check null + + // Step 2: + // Convert obj to Student + + // Step 3: + // Compare IDs + + return false; + } + + @Override + public String toString() { + + return "Student{" + + "id=" + id + + ", name='" + name + '\'' + + ", major='" + major + '\'' + + ", gpa=" + gpa + + '}'; + } + +} \ No newline at end of file diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java new file mode 100644 index 0000000..edad18e --- /dev/null +++ b/src/main/java/dev/service/StudentManager.java @@ -0,0 +1,59 @@ +package dev.service; + +import dev.model.Student; + +import java.util.ArrayList; + + +public class StudentManager { + + private final ArrayList students = + new ArrayList<>(); + + public void addStudents( + ArrayList newStudents) { + + // TODO: + + // Merge students + + // Hint: + // addAll() + + } + + public Student searchStudent( + int id) { + + // TODO: + + // Loop through students + + // Compare IDs + + return null; + } + + public boolean removeStudent( + int id) { + + // TODO: + + // Find student + + // Remove student + + return false; + } + + public void printStudents() { + + for (Student student : students) { + + System.out.println(student); + + } + + } + +} \ No newline at end of file diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java new file mode 100644 index 0000000..1aa9ce7 --- /dev/null +++ b/src/main/java/dev/thread/StudentLoader.java @@ -0,0 +1,62 @@ +package dev.thread; + + + +import dev.model.Student; + +import java.util.ArrayList; +import java.util.List; + +public class StudentLoader extends Thread { + + // Assigned file lines + + private final List lines; + + // Local student storage + + private final ArrayList students = + new ArrayList<>(); + + public StudentLoader( + List lines) { + + this.lines = lines; + } + + @Override + public void run() { + + // TODO: + + /* + Example line: + + 1001,Aryan,Computer Science,3.7 + */ + + for (String line : lines) { + + // TODO: + // split line + + // TODO: + // read values + + // TODO: + // create Student + + // TODO: + // add to students list + + } + + } + + public ArrayList + getStudents() { + + return students; + } + +} \ No newline at end of file diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java new file mode 100644 index 0000000..f239fb3 --- /dev/null +++ b/src/main/java/dev/utils/FileManager.java @@ -0,0 +1,39 @@ +package dev.utils; + +import java.io.BufferedReader; +import java.io.FileReader; + +import java.util.ArrayList; +import java.util.List; + +public class FileManager { + + public static List + loadStudents( + String path) + throws Exception { + + List lines = + new ArrayList<>(); + + BufferedReader reader = + new BufferedReader( + new FileReader(path)); + + String line; + + while ((line = reader.readLine()) + != null) { + + // TODO: + + // Add line to list + + } + + reader.close(); + + return lines; + } + +} \ No newline at end of file