feat: Set up project skeleton with stub implementations for student tasks

This commit is contained in:
2026-05-24 06:38:55 +03:30
parent 68df67ed4d
commit b01a5654a1
5 changed files with 356 additions and 1 deletions
+115 -1
View File
@@ -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<String> data =
FileManager
.loadStudents(
"students.txt");
// TODO:
// Split data into 3 parts
List<String> part1 = null;
List<String> part2 = null;
List<String> 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;
}
}
}
}
}
+81
View File
@@ -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 +
'}';
}
}
@@ -0,0 +1,59 @@
package dev.service;
import dev.model.Student;
import java.util.ArrayList;
public class StudentManager {
private final ArrayList<Student> students =
new ArrayList<>();
public void addStudents(
ArrayList<Student> 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);
}
}
}
@@ -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<String> lines;
// Local student storage
private final ArrayList<Student> students =
new ArrayList<>();
public StudentLoader(
List<String> 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<Student>
getStudents() {
return students;
}
}
+39
View File
@@ -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<String>
loadStudents(
String path)
throws Exception {
List<String> 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;
}
}