Skip to content

Amir Hossein Roosta-Academic System #17

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions AcademicSystem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
import java.util.ArrayList;
interface EducationalInstitution {
String displayInfo();
}

abstract class University implements EducationalInstitution {
public String name;
public int studentCount;
public double tuitionFee;
public ArrayList<Student> students;




public boolean transferStudent(Student student, University toUniversity) {
if (this.students.contains(student)) {
this.students.remove(student);
this.studentCount--;
toUniversity.students.add(student);
toUniversity.studentCount++;
student.setUniversity(toUniversity);
return true;
}
return false;
}

University(String name, double tuitionFee) {
this.name = name;
this.tuitionFee = tuitionFee;
this.students = new ArrayList<>();
this.studentCount = 0;
}
}

class Student implements EducationalInstitution {
private String name;
public University university;
private double balance;

public Student(String name, double balance, University university) {
setName(name);
this.balance=balance;
if(balance >= university.tuitionFee){
this.university=university;
university.students.add(this);
university.studentCount++;
this.balance -= university.tuitionFee;


} else {System.out.println("Not enough balance");}

}

@Override
public String displayInfo() {
if (getUniversity() == null){return "Name: " + getName() + "\nUniversity: " + "Not Enrolled" + "\nBalance: " + getBalance();}
else return "Name: " + this.name + "\nUniversity: " + getUniversity().name + "\nBalance: " + getBalance();
}


public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public University getUniversity() {
return university;
}
public void setUniversity(University toUniversity) {
this.university=toUniversity;

}
public double getBalance() {
return balance;
}


}

class SbuUniversity extends University {
public SbuUniversity(String name, double tuitionFee) {
super(name,tuitionFee);
}


@Override
public String displayInfo() {
return "SBU University\nTuition Fee: " + String.format("%.1f", this.tuitionFee) + "\nStudent Count: " + this.studentCount; }
}

class SutUniversity extends University {

SutUniversity(String name, double tuitionFee) {
super(name,tuitionFee);
}



@Override
public String displayInfo() {
return "SUT University\nTuition Fee: " + String.format("%.1f", this.tuitionFee) + "\nStudent Count: " + this.studentCount;

}
}
public class AcademicSystem {
public static void main(String[] args) {
SbuUniversity sbu = new SbuUniversity("Shahid Beheshti University", 1500.0);
SutUniversity sut = new SutUniversity("Sharif University of Technology", 2000.0);

Student s1 = new Student("Ali", 3000.0, sbu);
Student s2 = new Student("Sara", 1000.0, sut);

System.out.println(s1.displayInfo());
System.out.println(s2.displayInfo());

System.out.println(sbu.displayInfo());
System.out.println(sut.displayInfo());

boolean transferred = sbu.transferStudent(s1, sut);
if (transferred) {
System.out.println("Student transferred successfully.");
} else {
System.out.println("Student transfer failed.");
}

System.out.println(s1.displayInfo());
System.out.println(sbu.displayInfo());
System.out.println(sut.displayInfo());

}
}
78 changes: 75 additions & 3 deletions EducationSystem.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import java.util.ArrayList;
interface EducationalInstitution {
String displayInfo();
String displayInfo();
}

abstract class University implements EducationalInstitution {
Expand All @@ -9,10 +9,26 @@ abstract class University implements EducationalInstitution {
public double tuitionFee;
public ArrayList<Student> students;

public boolean transferStudent(Student student, University university) {



public boolean transferStudent(Student student, University toUniversity) {
if (this.students.contains(student)) {
this.students.remove(student);
this.studentCount--;
toUniversity.students.add(student);
toUniversity.studentCount++;
student.setUniversity(toUniversity);
return true;
}
return false;
}

University(String name, double tuitionFee) {
this.name = name;
this.tuitionFee = tuitionFee;
this.students = new ArrayList<>();
this.studentCount = 0;
}
}

Expand All @@ -22,41 +38,97 @@ class Student implements EducationalInstitution {
private double balance;

public Student(String name, double balance, University university) {
setName(name);
this.balance=balance;
if(balance >= university.tuitionFee){
this.university=university;
university.students.add(this);
university.studentCount++;
this.balance -= university.tuitionFee;


} else {System.out.println("Not enough balance");}

}

@Override
public String displayInfo() {
if (getUniversity() == null){return "Name: " + getName() + "\nUniversity: " + "Not Enrolled" + "\nBalance: " + getBalance();}
else return "Name: " + this.name + "\nUniversity: " + getUniversity().name + "\nBalance: " + getBalance();
}


public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public University getUniversity() {
return university;
}
public void setUniversity(University toUniversity) {
this.university=toUniversity;

}
public double getBalance() {
return balance;
}


}

class SbuUniversity extends University {
public SbuUniversity(String name, double tuitionFee) {
super(name,tuitionFee);
}


@Override
public String displayInfo() {
}
return "SBU University\nTuition Fee: " + String.format("%.1f", this.tuitionFee) + "\nStudent Count: " + this.studentCount; }
}

class SutUniversity extends University {

SutUniversity(String name, double tuitionFee) {
super(name,tuitionFee);
}



@Override
public String displayInfo() {
return "SUT University\nTuition Fee: " + String.format("%.1f", this.tuitionFee) + "\nStudent Count: " + this.studentCount;

}
}
public class EducationSystem {
public static void main(String[] args) {
SbuUniversity sbu = new SbuUniversity("Shahid Beheshti University", 1500.0);
SutUniversity sut = new SutUniversity("Sharif University of Technology", 2000.0);

Student s1 = new Student("Ali", 3000.0, sbu);
Student s2 = new Student("Sara", 1000.0, sut);

System.out.println(s1.displayInfo());
System.out.println(s2.displayInfo());

System.out.println(sbu.displayInfo());
System.out.println(sut.displayInfo());

boolean transferred = sbu.transferStudent(s1, sut);
if (transferred) {
System.out.println("Student transferred successfully.");
} else {
System.out.println("Student transfer failed.");
}

System.out.println(s1.displayInfo());
System.out.println(sbu.displayInfo());
System.out.println(sut.displayInfo());

}
}