Skip to content

Instantly share code, notes, and snippets.

@YanchevskayaAnna
Created August 19, 2016 20:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save YanchevskayaAnna/53004443ed937d073e17c1861223cdec to your computer and use it in GitHub Desktop.
Save YanchevskayaAnna/53004443ed937d073e17c1861223cdec to your computer and use it in GitHub Desktop.
package Level_2.week_2.university;
/**
* Created by pc on 09.08.2016.
*/
public class Address {
private String city;
private String street;
private int buildNumber;
private int flatNumber;
public Address(String city, String street, int buildNumber, int flatNumber) {
this.city = city;
this.street = street;
this.buildNumber = buildNumber;
this.flatNumber = flatNumber;
}
public String toString(){
return String.format("city : %s, street : %s, building : %d, flat : %d",
city, street, buildNumber, flatNumber);
}
public void setCity(String city) {
this.city = city;
}
public void setStreet(String street) {
this.street = street;
}
public void setBuildNumber(int buildNumber) {
this.buildNumber = buildNumber;
}
public void setFlatNumber(int flatNumber) {
this.flatNumber = flatNumber;
}
public String getCity() {
return city;
}
public String getStreet() {
return street;
}
public int getBuildNumber() {
return buildNumber;
}
public int getFlatNumber() {
return flatNumber;
}
}
package Level_2.week_2.university;
/**
* Created by pc on 09.08.2016.
*/
public class SemesterHours {
public static final double DOUBLE = 0.3; //todo 0.3 - make constant
private int semester;
private int hours;
private int minHours;
public SemesterHours(int semester, int hours){
this.semester = semester;
this.hours = hours;
this.minHours = (int) (hours * DOUBLE); //todo 0.3 - make constant
}
public String toString(){
return String.format("semester number : %d, hours : %d, min hours : %d", semester, hours, minHours);
}
public int getSemester(){
return semester;
}
public double getHours(){
return hours;
}
public void setSemester(int semester){
this.semester = semester;
}
public void setHours(int hours){
this.hours = hours;
}
public double getMinHours(){
return minHours;
}
}
package Level_2.week_2.university;
/**
* Created by pc on 09.08.2016.
*/
public class Student {
private Subject[] subjectList;
private String name;
private Address address;
private int subjectQuantity;
private static final int SIZE = 10;
public Student(String name, Address address) {
this.name = name;
this.address = address;
subjectList = new Subject[SIZE];
}
public String toString(){
return String.format("name : %s, address : %s", name, address.toString());
}
public String getName() {
return name;
}
public Address getAddress() {
return address;
}
public Subject[] getSubject() {
return subjectList;
}
public void learning(Subject subject){
int hours = (int) subject.getSemesterHours().getHours();
subject.setStudentHours(hours);
subject.setStudentValue(subject.generateStudentValue());
}
public boolean addSubject(Subject subject){
expandSubjectList();
subjectList[subjectQuantity++] = subject;
return true;
}
public boolean removeLastSubject(){
subjectList[subjectQuantity--] = null; //todo check for empty list
return true;
}
public String showAllInfoAboutSubjects(){
StringBuilder st = new StringBuilder();
for (int i = 0; i < subjectQuantity; i++) {
st.append(i + "| " + subjectList[i].toString() + "\n");
}
return st.toString();
}
public double getGPA(){
if (subjectQuantity == 0) {
System.out.println("not available subject");
return -1; //todo Why not 0?
}
double gpa = 0;
for (int i = 0; i < subjectQuantity; i++) {
gpa += subjectList[i].getStudentValue();
}
return gpa / subjectQuantity;
}
public void expandSubjectList(){
if (subjectQuantity >= subjectList.length){
Subject[] newStudentList = new Subject[subjectList.length * 2];
System.arraycopy(subjectList, 0, newStudentList, 0, subjectList.length);
subjectList = newStudentList;;
}
}
}
package Level_2.week_2.university;
/**
* Created by pc on 09.08.2016.
*/
public class Subject {
private String name;
private SemesterHours semesterHours;
private int studentHours;
private int studentValue;
private static final int MIN_RANGE = 2;
private static final int MAX_RANGE = 5;
public Subject(String name, SemesterHours semesterHours){
this.name = name;
this.semesterHours = semesterHours;
this.studentHours = generateStudentHours();
this.studentValue = generateStudentValue();
}
public String toString(){
return String.format("subject : %s, %s , student hours : %d, rating : %d",
name, semesterHours.toString(), studentHours, studentValue);
}
public boolean passExamination(Student student){ //todo Why we need variable student?
if (generateStudentValue() > MIN_RANGE && generateStudentValue() <= MAX_RANGE) {
if (generateStudentHours() >= semesterHours.getMinHours()) {
return true;
}
}
return false;
}
public double getStudentValue(Subject subject){
return subject.getStudentValue();
}
public String getName() {
return name;
}
public SemesterHours getSemesterHours() {
return semesterHours;
}
public int getStudentHours() {
return studentHours;
}
public int getStudentValue() {
return studentValue;
}
public int generateStudentValue(){
return (int)(Math.random() * (MAX_RANGE - 2)) + 2;
}
public int generateStudentHours(){
return (int)(Math.random() * semesterHours.getHours());
}
public void setName(String name) {
this.name = name;
}
public void setSemesterHours(SemesterHours semesterHours) {
this.semesterHours = semesterHours;
}
public void setStudentHours(int studentHours) {
this.studentHours = studentHours;
}
public void setStudentValue(int studentValue) {
this.studentValue = studentValue;
}
}
package Level_2.week_2.university;
/**
* Created by oleksandr.maslovskyj on 12.08.2016.
*/
public class Test {
public static void main(String[] args) {
Address address = new Address("Kyiv", "some street", 10, 123);
SemesterHours semesterHours = new SemesterHours(1, 120);
Subject subject0 = new Subject("math", semesterHours);
Subject subject1 = new Subject("literature", semesterHours);
Subject subject2 = new Subject("philof", semesterHours);
Student student = new Student("student1", address);
student.addSubject(subject0);
student.addSubject(subject1);
student.addSubject(subject2);
student.learning(subject1);
System.out.println(student.showAllInfoAboutSubjects());
student.removeLastSubject();
System.out.println(student.showAllInfoAboutSubjects());
double gpa = student.getGPA();
double expected = 1.5; //todo why 1.5? StudentValue is it random?
System.out.print(gpa == expected);
System.out.println(" = gpa result is: " + gpa);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment