From b1cd0b330ed9ad8ce310d8c09f02977057cfee6f Mon Sep 17 00:00:00 2001 From: Zachary Kitto Date: Sun, 11 Jul 2021 14:29:32 -0400 Subject: [PATCH 1/2] Added everything except unit tests --- src/main/java/io/zipcoder/Classroom.java | 88 ++++++++++++++++++ src/main/java/io/zipcoder/Student.java | 85 ++++++++++++++++- src/test/java/io/zipcoder/StudentTest.java | 56 +++++++++++ target/classes/io/zipcoder/Classroom.class | Bin 0 -> 4129 bytes target/classes/io/zipcoder/Student.class | Bin 0 -> 3616 bytes .../io/zipcoder/ClassroomTest.class | Bin 0 -> 288 bytes .../io/zipcoder/StudentTest.class | Bin 0 -> 2172 bytes 7 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 target/classes/io/zipcoder/Classroom.class create mode 100644 target/classes/io/zipcoder/Student.class create mode 100644 target/test-classes/io/zipcoder/ClassroomTest.class create mode 100644 target/test-classes/io/zipcoder/StudentTest.class diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index 64566f0..34131d5 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -1,4 +1,92 @@ package io.zipcoder; +import java.util.*; + public class Classroom { + + Student[] students; + + public Classroom(int maxNumberOfStudents) { + students = new Student[maxNumberOfStudents]; + } + + public Classroom(Student[] student) { + students = student; + } + + public Classroom() { + students = new Student[30]; + } + + public Student[] getStudents() { + return students; + } + + public Double getAverageExamScore() { + Double sumOfExamScores = 0.0; + for (Student student : students) { + sumOfExamScores += student.getAverageExamScore(); + + } + return sumOfExamScores / students.length; + } + + public void addStudent(Student student) { + List arrayList = new ArrayList<>(Arrays.asList(students)); + arrayList.add(student); + students = arrayList.toArray(new Student[arrayList.size()]); + } + + public Student[] removeStudent(String firstName, String lastName) { + List arrayList = new ArrayList<>(Arrays.asList(students)); + for (Student student : students) { + if (student.getFirstName().equals(firstName) && student.getLastName().equals(lastName)) { + arrayList.remove(student); + } + } + return arrayList.toArray(new Student[arrayList.size()]); + } + + public Student[] getStudentByScore() { + Arrays.sort(students); + return students; + } + + public Map getGradeBook() { + Map map = new LinkedHashMap<>(); + Integer studentsInClass = students.length; + getStudentByScore(); + for (int i = 0; i < studentsInClass; i++) { + if ((((i + 1) / studentsInClass) * 100) <= 10) { + map.put(students[i], 'A'); + } + else if ((((i + 1) / studentsInClass) * 100) >= 11 && + (((i + 1) / studentsInClass) * 100) <= 29) { + map.put(students[i], 'B'); + } + else if ((((i + 1) / studentsInClass) * 100) >= 30 && + (((i + 1) / studentsInClass) * 100) <= 50) { + map.put(students[i], 'C'); + } + else if ((((i + 1) / studentsInClass) * 100) >= 51 && + (((i + 1) / studentsInClass) * 100) <= 89) { + map.put(students[i], 'D'); + } + else { + map.put(students[i], 'F'); + } + } + return map; + } + + public static void main(String[] args) { + Student student1 = new Student("Zach", "Kitto", new Double[]{100.0}); + Student student2 = new Student("Leon", "Hunter", new Double[]{90.0}); + Student student3 = new Student("Nick", "Wolak", new Double[]{80.0}); + Student student4 = new Student("Zach", "Singer", new Double[]{70.0}); + Student student5 = new Student("Jeremy", "Sabina", new Double[]{60.0}); + Student[] array = new Student[]{student1, student2, student3, student4, student5}; + Classroom classroom = new Classroom(array); + System.out.println(classroom.getGradeBook()); + } } diff --git a/src/main/java/io/zipcoder/Student.java b/src/main/java/io/zipcoder/Student.java index b543e36..e9f0618 100644 --- a/src/main/java/io/zipcoder/Student.java +++ b/src/main/java/io/zipcoder/Student.java @@ -1,4 +1,87 @@ package io.zipcoder; -public class Student { +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +public class Student implements Comparable{ + + String firstName; + String lastName; + List examScores; + + public Student(String firstName, String lastName, Double[] testScores) { + this.firstName = firstName; + this.lastName = lastName; + examScores = new ArrayList(Arrays.asList(testScores)); + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getExamScores() { + Integer count = 1; + StringBuilder builder = new StringBuilder(); + builder.append("> Exam Scores:\n"); + Iterator iterator = examScores.iterator(); + while (iterator.hasNext()) { + builder.append("\tExam ").append(count).append(" -> ").append(iterator.next()).append("\n"); + count++; + } + return builder.toString(); + } + + public Integer getNumberOfExamsTaken() { + return examScores.size(); + } + + public void addExamScore(double examScore) { + examScores.add(examScore); + } + + public void setExamScore(int examNumber, double newScore) { + examScores.set(examNumber, newScore); + } + + public Double getAverageExamScore() { + Double sum = 0.0; + Iterator iterator = examScores.iterator(); + while (iterator.hasNext()) { + sum += (Double)iterator.next(); + } + return sum / examScores.size(); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Student Name: ").append(firstName).append(" ").append(lastName).append("\n") + .append("> Average Score: ").append(getAverageExamScore()).append("\n") + .append(getExamScores()); + return builder.toString(); + } + + @Override + public int compareTo(Student student) { + if (Double.compare(getAverageExamScore(), student.getAverageExamScore()) != 0) { + return Double.compare(student.getAverageExamScore(), getAverageExamScore()); + } + else { + return this.lastName.compareTo(student.getLastName()); + } + } } diff --git a/src/test/java/io/zipcoder/StudentTest.java b/src/test/java/io/zipcoder/StudentTest.java index a9fedec..62b3399 100644 --- a/src/test/java/io/zipcoder/StudentTest.java +++ b/src/test/java/io/zipcoder/StudentTest.java @@ -1,5 +1,61 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class StudentTest { + @Test + public void constructorTest() { + // Given + String expectedFirstName = "Zach"; + String expectedLastName = "Kitto"; + Double[] expectedExamScores = new Double[]{95.0, 84.0, 78.0, 82.0}; + + // When + Student student = new Student(expectedFirstName, expectedLastName, expectedExamScores); + String actualFirstName = student.getFirstName(); + String actualLastName = student.getLastName(); + Double[] actualExamScores = student.examScores.toArray(new Double[0]); + + // Then + Assert.assertEquals(expectedFirstName, actualFirstName); + Assert.assertEquals(expectedLastName, actualLastName); + Assert.assertEquals(expectedExamScores, actualExamScores); + } + + @Test + public void addExamScoreTest() { + // : Given + String firstName = "Leon"; + String lastName = "Hunter"; + Double[] examScores = { }; + Student student = new Student(firstName, lastName, examScores); + + // When + Double expectedScore = 100.0; + student.addExamScore(expectedScore); + Double actualScore = student.examScores.get(0); + + // Then + Assert.assertEquals(expectedScore, actualScore); + } + + @Test + public void setExamScoreTest() { + // : Given + String firstName = "Leon"; + String lastName = "Hunter"; + Double[] examScores = { 100.0 }; + Student student = new Student(firstName, lastName, examScores); + + // When + Double newExpectedScore = 150.0; + student.setExamScore(0, newExpectedScore); + Double newActualScore = student.examScores.get(0); + + // Then + Assert.assertEquals(newExpectedScore, newActualScore); + } + } \ No newline at end of file diff --git a/target/classes/io/zipcoder/Classroom.class b/target/classes/io/zipcoder/Classroom.class new file mode 100644 index 0000000000000000000000000000000000000000..78d22418a0a1dc95cbc7b27a2a8ff9dd26142299 GIT binary patch literal 4129 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 Owi(hB`Y3FrJ@q>aas>PU literal 0 HcmV?d00001 diff --git a/target/test-classes/io/zipcoder/ClassroomTest.class b/target/test-classes/io/zipcoder/ClassroomTest.class new file mode 100644 index 0000000000000000000000000000000000000000..94b5da55a312f0b8571ebb6b1f3763ffdf71058d GIT binary patch literal 288 zcmZ`!yKcfj5S%rBfN=oPAu2kc;F@$nG)SqeP=M&q<^+d~FFKnP`75eO6np?56|uHx zQe;;e?ac0swD;fZ4ZtgUAsToI&azSW}CtHHMG&@D;#yVFY=ToBWMkX06 z{n(^3+e)h|{uJHvpbNq<)<%5m&y>AZEHhaY)|k^q73CWtT${5^)w`}^{%mJQ`6VN` z@Cbu{GYGxvPGmCQi&b(|X^9aW{-P@4<^V>YnW#D7O@BZa790eOKFeT3lQF7i4=seu J2yI3O(F2lmKNkQ1 literal 0 HcmV?d00001 diff --git a/target/test-classes/io/zipcoder/StudentTest.class b/target/test-classes/io/zipcoder/StudentTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5293e77b8a7ac76c0f2cf87570271d3514fe62cd GIT binary patch literal 2172 zcma)+TXWN95QbmbvgFtzIF2EB+CrcZ9C9!eT8cwcJEtZ@N!mDs2IxVy6-TKfrLs(E zulkod(+P)8JGtvj@A`)r-cM3&k@}+Jnf0gDo}S(P^v|2ue*w6I!xXMyK8b}S7F8@M z&^Eo!p5Q#V@MhHHuEP$_$RR$D?|x18cH)?uB#Zn5fh8m8@SnQd=|k?M}!_S{b0 zb6la4Fl0VIH0z$(ShC!~t|2 z9^(lo(Ps}tgr^$5!M7T|6QYFgRWNW3brlT_CU%8rGK+3HHdk_)9X4GJd$2U@;|C2b z9B8n?)FXXT1Z|BJwNcyWhH(d;8Lf`FvCADOER6SSVW|+&hMV_aO`io5mqlxuUSxZ6 zg=mWI8mDO$*{C3T$Fo{R-SV%Dl<2`X}U_cn*n|P^&v~4oUxz$RXt)lpHj1SpNfqI}?*r zFL1Ub=j9`0N(u2dR8sQt@5sg(=M{!yI7Y6dPUIQy++<#%oXV>&alTjPG}26;Mw~?| zI76BYW-x>~WU+!_JjHolj}cyg3*7p=kFyz+9OA@zB_=RQECm*(c#1Jf8Pk+;#=3)> zxW(`P9N&G!w+Y4_!)=}vMjz(;B2;|LDn!dZ@f&paq(S(b_9}Ii?1-MduqMFXfzKh& zh6wt6;t1~@;r*ZiukeAOm)Ven58gu_!vF(bWO0|6a+L6w33!!H*EpXs+@maWMq+Zy zLGmu@EItiUXJ{u-(=55 Date: Mon, 12 Jul 2021 01:22:19 -0400 Subject: [PATCH 2/2] added some tests --- src/main/java/io/zipcoder/Classroom.java | 11 --- src/test/java/io/zipcoder/ClassroomTest.java | 73 ++++++++++++++++++ src/test/java/io/zipcoder/StudentTest.java | 1 - target/classes/io/zipcoder/Classroom.class | Bin 4129 -> 3290 bytes .../io/zipcoder/ClassroomTest.class | Bin 288 -> 3186 bytes 5 files changed, 73 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index 34131d5..c237ebb 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -78,15 +78,4 @@ else if ((((i + 1) / studentsInClass) * 100) >= 51 && } return map; } - - public static void main(String[] args) { - Student student1 = new Student("Zach", "Kitto", new Double[]{100.0}); - Student student2 = new Student("Leon", "Hunter", new Double[]{90.0}); - Student student3 = new Student("Nick", "Wolak", new Double[]{80.0}); - Student student4 = new Student("Zach", "Singer", new Double[]{70.0}); - Student student5 = new Student("Jeremy", "Sabina", new Double[]{60.0}); - Student[] array = new Student[]{student1, student2, student3, student4, student5}; - Classroom classroom = new Classroom(array); - System.out.println(classroom.getGradeBook()); - } } diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 7bac1ff..bd31f8c 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -1,4 +1,77 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class ClassroomTest { + + @Test + public void getAverageExamScoreTest() { + // Given + Student student1 = new Student("Allen", "Shup", new Double[]{100.0, 88.0, 95.0}); + Student student2 = new Student("Ben", "Alpit", new Double[]{100.0, 90.0, 84.0}); + Student student3 = new Student("Charles", "Compton", new Double[]{100.0, 60.0, 70.0}); + Double expectedAverageScore = 88.0; + + // When + Student[] students = new Student[]{student1, student2, student3}; + Classroom classroom = new Classroom(students); + Double actualAverageScore = Math.ceil(classroom.getAverageExamScore()); + + // Then + Assert.assertEquals(expectedAverageScore, actualAverageScore); + } + + @Test + public void addStudentTest() { + // Given + Student student1 = new Student("Allen", "Shup", new Double[]{100.0, 88.0, 95.0}); + Student student2 = new Student("Ben", "Alpit", new Double[]{100.0, 90.0, 84.0}); + Student student3 = new Student("Charles", "Compton", new Double[]{100.0, 60.0, 70.0}); + Student expectedStudent = student3; + + // When + Student[] students = new Student[]{student1, student2}; + Classroom classroom = new Classroom(students); + classroom.addStudent(student3); + Student actualStudent = classroom.students[2]; + + // Then + Assert.assertEquals(expectedStudent, actualStudent); + } + + @Test + public void removeStudentTest() { + // Given + Student student1 = new Student("Allen", "Shup", new Double[]{100.0, 88.0, 95.0}); + Student student2 = new Student("Ben", "Alpit", new Double[]{100.0, 90.0, 84.0}); + Student student3 = new Student("Charles", "Compton", new Double[]{100.0, 60.0, 70.0}); + Integer expectedLength = 2; + + // When + Student[] students = new Student[]{student1, student2, student3}; + Classroom classroom = new Classroom(students); + Student[] newArray = classroom.removeStudent(student3.getFirstName(), student3.getLastName()); + Integer actualLength = newArray.length; + + // Then + Assert.assertEquals(expectedLength, actualLength); + } + + @Test + public void getStudentByScoreTest() { + // Given + Student student1 = new Student("Allen", "Shup", new Double[]{60.0, 88.0, 95.0}); + Student student2 = new Student("Ben", "Alpit", new Double[]{100.0, 90.0, 84.0}); + Student student3 = new Student("Charles", "Compton", new Double[]{100.0, 100.0, 90.0}); + Student[] expectedArray = new Student[]{student3, student2, student1}; + + // When + Student[] students = new Student[]{student1, student2, student3}; + Classroom classroom = new Classroom(students); + Student[] actualArray = classroom.getStudentByScore(); + + // Then + Assert.assertArrayEquals(expectedArray, actualArray); + } } diff --git a/src/test/java/io/zipcoder/StudentTest.java b/src/test/java/io/zipcoder/StudentTest.java index 62b3399..d910bba 100644 --- a/src/test/java/io/zipcoder/StudentTest.java +++ b/src/test/java/io/zipcoder/StudentTest.java @@ -57,5 +57,4 @@ public void setExamScoreTest() { // Then Assert.assertEquals(newExpectedScore, newActualScore); } - } \ No newline at end of file diff --git a/target/classes/io/zipcoder/Classroom.class b/target/classes/io/zipcoder/Classroom.class index 78d22418a0a1dc95cbc7b27a2a8ff9dd26142299..576b499bbc9093d7445c049bf5e4c176c90d085e 100644 GIT binary patch delta 1158 zcmY+D$#R=j5QV?1>7rj(4vxV#u`J7si5y!%6cU>ui4*1wjA2Y5gTN*Za_q!FfEdC& zZvH3W0Vqg0KnkjO0Cwys)@)d?rBW2-aQc_55>-;GZ{P0Ir%zvfRr&q8f(YeM-EjN`aGpbRCB&*X`Y-RKE%Z$iY;_-ZWc~r3; z(#cJRh(Lksb?TRZP~-+~)USCrakHwd`WCBJ>^|jKR#g1~R~`F~^aY(#>bizmBqQ`Z z>$)(b4rav09+7H+ZZgpLxBN&KrCybcw~|+Bst*^plm{AUh=SN-7v)i=;DoDw3>3FB_Ri zvZmX>S?;FBt%ANySp%f5a5Y)a?Vc^3qSFMI1>p41w_5+WT-f18E(+PO6ZCqmg|CeI_ zOr)b1L8IB)YUnIxn%xGpQY@}>nr67?K*Q3i+R`9@ut%@ZUh8VR;41#+UcE%8W&Fkc lJkX_4>+V6_*$mgMq5;{{TR_hgSdq delta 1957 zcmY*ZS#%Rs82)aSxs&Oz6=(?sT9DP!MrbGyL`p$KNXrr|gt|@Bu>{hjCMgOosr!ms z6a`!WabHVik;>xk@!2QeIL9}SuO9RP{O%-aV@`7O-+%f3?_Xwq_aCdv{d)D>1pq<( zV(>^yWPAu9YhW7s)v?!r3-?LfZ(twx8<2RQ0uSOLbv&$&oJ6zo88Gk&9#zs~O8vO< ze?sC(0~3)p@D!dl2>gtao;C0sp0B_GypYrJqK=m&Ue;QofTS|J{z&ki9aZEtZWc$1AWHuvE z)ftYb0{i2GhdYJmFw+nHBc$*gmv}etaSsPhNW3TD>9yiXI?wM6@3!_@frORp2}H8# zc(P~3f)3iPbPvHMcIGd;Cg+Oii$)VI9u=EL#o(y8M8IpM)7Cx#Uo2r|GU-&RSHOs* z`qMFcT|8k6j9pVQG%6A%mZFt89r}H-RJWZbCDxToW=$+Xvx)cdfr$_Ck%^nJj;;>( z{%kxESgmq}7k^krEqLV2N2tWnua>J*PcHi0!*>v#q9s(Ff` z=Gdzo?1Ha%#Fu;M_$KrS5ijXAVTD-7nxItY??dj!?SZRlWx(ru^YB3g%o?=Hhv znyuucN}B=qHB5(eO4}j9Z?sro;}zx+>N!#z=o^B_|7KLzt2)&y5@_PfI9S$hbEMte zcNH~MRWVMG`do99L;ZTTXA1tn9o!PtkgLT29e?9a+{KUy_zQQ#Dr-o=)#7O#Gu1l;wJsApj$>diGo zqMF|miAujW64Hhdi2AiNxFIA@Vv%2-#^Tdx8YFKQ8x5|Fk7opauE1iBbt4CCuRgf)@EO3qcFk61G9@lhz5F@p%L)CWZf;cua`}O*}3M zyS$8P8M=hfA-$wqhb1(}domINBgT{_p(CZ2wDC%DQZvt}lLgL1Q$|iLWK>fZ@9t#4 zn%2t_Hl%bTab2Iyaj%&eDX8VLX&A*bTG<+uur{w*Lvxy`=CvbN)nYnln3`CU5H4Gl zDXnDfm(bndBJIp`bIs&Heb_IdOS?L&{%80VVv zFFBSkL@Dr0Wlp;f$QwtSs;u1rPkM{V=;VE$-?wd_pre4YqE}uE?n{u~`#*D>R z7Oz-ay+VhvN#ZL;(K=;!Mn*(ycm1e@_IfQ&szOeIoTjr30cOJG&bo|;%4N-DwhDWk zgCm#O5Uk5Ce`*d9e`@ZGh&57g014~j4bA3CWl-3ys)yw2nf)6-?oX+%bAh!E!1;)Fqp+tHwH+T5iT~>qG!xGoCcA2d( z)sw*%#Q94jK0!#L>G<5kw*F}r&n((fEJp^wjyJsHAYjupp%ru+CNVLvxFiOteD zTKJO#EIvb1HrgBwgq|aqZSF#70pWBu(1jLz5bQ#$7|f$BWt+A~JC>Pt)=Z$$WrT=BFToHnw&pbF8(goOUvIsr2G54xpcOGMMJ? zdOr!>#QQkNQ8RrU#M^iW0eaddE)y2vA=Y64gCt$0r$bzoY44CfY;*p=<9y8J{PeYR z?i&aMeTbLf?W^L=Sm-IX1P`o0cQ^l~0X8zLO{DY&`E155Y{idcav$6AD|X-!W%`6d z6}oc>KlKRT@d#h^2=}{$Z&8~`vJTMOR+sR7R>~p#h=hl@x|Hy+M_46cQTxANJK^90 zw!Tuw1ig)a+pE|?(DI_#6Q-QQ4RUsX?`4t+0^djA`*EA-?h)Dp3i1g>_l$`Cq6`J_ z3l0Jg_|G2jq6d7~1%8{79lHvR&P8^}kW%>_ejCSEA;y&u3pK!(f zVkvs3%m24a#JQt*HQ5&rucmS5^5}CfkKXhv%TUG6n$CAEy+x8taERE4iG75(!x(GE48Ti;4_$Tg4nf#JTiH(JUm61Vm@_9zl$#0m& zgBcVVn1G5vfDs6RvOtmz$kPY&85mf#wlgqp1PU-QumedppfCea0|$`g0kc^dI2pKr NJVpj?Aj!nQ0|2}%4#EHc