From 5fd8741eb56f884867f46ea486b0a751967d494f Mon Sep 17 00:00:00 2001 From: John Tokhi <56596400+tokhij@users.noreply.github.com> Date: Sat, 2 Nov 2019 19:46:50 -0400 Subject: [PATCH 1/5] finished Student --- pom.xml | 4 +- src/main/java/io/zipcoder/Classroom.java | 33 ++++ src/main/java/io/zipcoder/Student.java | 80 ++++++++++ src/test/java/io/zipcoder/StudentTest.java | 143 ++++++++++++++++++ target/classes/io/zipcoder/Classroom.class | Bin 0 -> 276 bytes target/classes/io/zipcoder/Student.class | Bin 0 -> 3226 bytes .../io/zipcoder/ClassroomTest.class | Bin 0 -> 288 bytes .../io/zipcoder/StudentTest.class | Bin 0 -> 3803 bytes 8 files changed, 258 insertions(+), 2 deletions(-) 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/pom.xml b/pom.xml index 08123ed..6402c2c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - io.zipcoder - classroom + com.zipcodewilmington + loop_labs 1.0-SNAPSHOT diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index 64566f0..b5835b6 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -1,4 +1,37 @@ package io.zipcoder; public class Classroom { + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } diff --git a/src/main/java/io/zipcoder/Student.java b/src/main/java/io/zipcoder/Student.java index b543e36..18f0202 100644 --- a/src/main/java/io/zipcoder/Student.java +++ b/src/main/java/io/zipcoder/Student.java @@ -1,4 +1,84 @@ package io.zipcoder; +import java.util.ArrayList; +import java.util.Arrays; + +// this is a blueprint in case we want multiple students public class Student { + // declaring variables + String firstName; + String lastName; + ArrayList examScores; + + public Student(String firstName, String lastName, ArrayList examScores){ + // assigning parameter variables to the object "Student" in line 13 + this.firstName = firstName; + this.lastName = lastName; + this.examScores = examScores; + } + + public Student(String firstName, String lastName, Double[] testScores){ + this.firstName = firstName; + this.lastName = lastName; + // this converts an array to an arrayList + this.examScores = new ArrayList<>(Arrays.asList(testScores)); + } + + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public int getNumberOfExamsTaken(){ + return examScores.size(); + } + + public String getExamScores(){ + String output = " Exam Scores:\n"; + for (int i = 0; i < examScores.size(); i++) { + output += " \t" + "Exam " + (i+1) + " -> " + Math.round(examScores.get(i)); + // if i is not equal to the index of last element than make a new line, + // otherwise if its the last index dont go to the next line. + if (i != examScores.size()-1) { + output += "\n"; + } + } + return output; + } + + + public void addExamScore(double newScore) { + examScores.add(newScore); + } + + public void setExamScore(int examNum, double newScoreOnExam){ + examScores.set(examNum, newScoreOnExam); + } + + public Double getAverageExamScore() { + Double totalExams = 0.0; + for (int i = 0; i < getNumberOfExamsTaken(); i++) { + totalExams += examScores.get(i); + } + return totalExams / getNumberOfExamsTaken(); + } + + @Override + public String toString(){ + return "Student Name: " + getFirstName() + " " + getLastName() + "\n" + + "> Average Score: " + getAverageExamScore() + "\n>" + getExamScores(); + } + + } diff --git a/src/test/java/io/zipcoder/StudentTest.java b/src/test/java/io/zipcoder/StudentTest.java index a9fedec..ccfda66 100644 --- a/src/test/java/io/zipcoder/StudentTest.java +++ b/src/test/java/io/zipcoder/StudentTest.java @@ -1,5 +1,148 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; + public class StudentTest { + @Test + public void StudentTest() { + String expectedFirstName = "Johnny"; + String expectedLastName = "Tokhi"; + ArrayList scores = new ArrayList<>(Arrays.asList(100.0, 90.0)); + + Student actualStudent = new Student(expectedFirstName, expectedLastName, scores); + + Assert.assertEquals(expectedFirstName, actualStudent.getFirstName()); + Assert.assertEquals(expectedLastName, actualStudent.getLastName()); + } + + @Test + public void StudentTest2() { + String expectedFirstName = "Johnny"; + String expectedLastName = "Tokhi"; + Double[] scores = {10.0, 20.0}; + + Student actualStudent = new Student(expectedFirstName, expectedLastName, scores); + + Assert.assertEquals(expectedFirstName, actualStudent.getFirstName()); + Assert.assertEquals(expectedLastName, actualStudent.getLastName()); + } + + @Test + public void numberOfExamsTakenTest() { + String expectedFirstName = "Johnny"; + String expectedLastName = "Tokhi"; + ArrayList scores = new ArrayList<>(Arrays.asList(100.0, 90.0)); + + Student actualStudent = new Student(expectedFirstName, expectedLastName, scores); + + Assert.assertEquals(2, actualStudent.getNumberOfExamsTaken()); + } + + @Test //this test copied in from README + public void getExamScoresTest() { + // : Given + String firstName = "Leon"; + String lastName = "Hunter"; + Double[] examScores = {100.0, 95.0, 123.0, 96.0}; + Student student = new Student(firstName, lastName, examScores); + // added this for the test + String expected = " Exam Scores:\n" + + " \tExam 1 -> 100\n" + + " \tExam 2 -> 95\n" + + " \tExam 3 -> 123\n" + + " \tExam 4 -> 96"; + + // When + String output = student.getExamScores(); + + // Then //Only made assert line + Assert.assertEquals(expected, output); + } + + @Test //this test copied in from README + public void addExamScoreTest(){ + // : Given + String firstName = "Leon"; + String lastName = "Hunter"; + Double[] examScores = { }; + Student student = new Student(firstName, lastName, examScores); + // added this for the test + String expected = " Exam Scores:\n" + + " \tExam 1 -> 100"; + + // When + student.addExamScore(100.0); + String output = student.getExamScores(); + + // Then + Assert.assertEquals(expected, output); + + } + + @Test //this test copied in from README + public void setExamScoreTest(){ + // : Given + String firstName = "Leon"; + String lastName = "Hunter"; + Double[] examScores = { 100.0 }; + Student student = new Student(firstName, lastName, examScores); + // added expected for the test + String expected = " Exam Scores:\n" + + " \tExam 1 -> 150"; + + // When + student.setExamScore(0, 150.0); + String output = student.getExamScores(); + + // Then // Only made assert line + Assert.assertEquals(expected, output); + } + + @Test //this test copied in from README + public void getAverageExamScoreTest(){ + // : Given + String firstName = "Leon"; + String lastName = "Hunter"; + ArrayList examScores = new ArrayList<>(Arrays.asList( 100.0, 150.0, 250.0, 0.0 )); + Student student = new Student(firstName, lastName, examScores); + Double expected = 125.0; + + // When + Double output = student.getAverageExamScore(); + + // Then // Only made assert line + Assert.assertEquals(expected, output); + + } + + @Test + public void toStringTest() { + // : Given + String firstName = "Leon"; + String lastName = "Hunter"; + ArrayList examScores = new ArrayList<>(Arrays.asList( 100.0, 150.0, 250.0, 0.0 )); + Student student = new Student(firstName, lastName, examScores); + // added this for the test + String expected = "Student Name: Leon Hunter\n" + + "> Average Score: 125.0\n" + + "> Exam Scores:\n" + + " \tExam 1 -> 100\n" + + " \tExam 2 -> 150\n" + + " \tExam 3 -> 250\n" + + " \tExam 4 -> 0"; + + // When + String actual = student.toString(); + + // Then + Assert.assertEquals(expected, actual); + } + + } \ 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..e3e3105f62ae6cfc0804ea21349da326cbeab864 GIT binary patch literal 276 zcmZvWy>7xl5QJxqf5347MMBhcK*2TX644-0Sx^wUKbsRAGQQ|+Qt(z(ktlco9x7su zA}V&JPdBqWr@j82F96=r4bi}BfOdcm!T;2SuBL>>aFh_-nOQ4BC)R~p9QLWQUoy?v zd5cXZ^F&%*>wnX&wz?$rV{ODye`lPvVwTIYw8rc|2;s^cY^LVA{-XVuOm^}|MsVQ~ zdQY>2ZoMONS!~2I-Kng?01jVX7jbi#>9Z1d4S3^U(1{HP0n=w29B4A5``becAuGZQ H(?N6t{#`mN literal 0 HcmV?d00001 diff --git a/target/classes/io/zipcoder/Student.class b/target/classes/io/zipcoder/Student.class new file mode 100644 index 0000000000000000000000000000000000000000..c6934687aa5ef20f19c2a3de7fade744d8e541d3 GIT binary patch literal 3226 zcmbVOTXz#x6#h<>bGYm$)p6A%ZHqE=A6C1{q5U1`R%Wte*y3a zzKWn5$D6Pj&&qH@hLajjMerO>N6>&XGCUu~Sq(-65geCcHjI?a=`c(=pVKfO!5W;4 zz`}x@oR=XJ#-eOzMJ6Z1QiS*~gprrI5QZ&tF^pxIFNn^?FfPf*WeqQCcuApY&dL|; zqsF4C5Sv&qmW_dok)0oyw)0kYen=slG0Nu=^P;ghoyz6SfL zEfZGOJX&0wHS@;|+7Rz@DI+su3=zkb*vM+N0HEwiVyszT}d?*SZ={SZ##y6tlV|=3HQ+%f5 zb9|v=pF_s;D=rtvAaNgeq`4T9MJ$qxdjWO{i^wFV1o}&bKqRSSzX-P0X}=nNld}tE zipAlhTn;qLipAg_RKv$4H5vuElN7oW{)TX&hWvMvcXh4z%G*I1&Sf$*Y2~s*f*&ea zmzl^$V`<6ErWN|@wSuoVU3Ok7c$0J{#_sO7>T!^z$UC)G$YaX>N;~)DjFBml1080$ zN2|#@V%X;t8uGcKFq7^W7lY&fW>8xeu*o?wI^q|s6nv0PC#OEA%Aq?+66`jGEs3!@ z$9He7h*ufMCs-RVY~mZ$%_lU-9~*@uq*t7o?E-~9t^?Q#o$G#V<9dKQuW$}=ZtJ}P z)!TO+f!?jx5$x^1j?jUWfJGk5H>SHG!<`Iz? zQ35-8DdE0rh%+0p+UTc5z=`W0&LQQl=D1glv3pC5G9-r>rNgYpL+tVK3M-A3TaN9Z z$FG5TcnVLGjl@<*;0`nm)9NazSW}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..5c5eea5f73db5b101e914df107a5bac1a5cae99a GIT binary patch literal 3803 zcmb`JTUQfj6o%g+WD>)m7^4)AQBeYlfdEsS^(G8)C70<7lI!*)YSN*GrNgfAyh&SU^0YiOo@-_5Dd(S(X5)Pw+}*1wabB6 zp7YBwD#Xkb$8QI5Cy0!iy7Zg9r>1U{2AAdGAm+vCY!H_CUI^l@nwpe{#6nI@St`}%x-Ouu7f#dU^l)+mUz zQ9A;1ZNp4Cgu#p(rI6vCQxM2YEffSx@ucEbv9M62)f#9fX)!{N0Uw1Oo?l($u>iGt9mRm@EpXH1byHJ)f35n^gAvktn}Z_Q=14;1*vtUGfi z%As5e1mV_f2gBH!*_V0;d}g`;E@y2sHmxARQMm2-iNxQj(pPpWVAKWaioRI z|C*__!)3Ig66LuKMNeJ|rrI?^?&MWjvEj+v>;TNodwQm549~DmW2c{ zvQ#}Uie15hn74wY%}#IqIz6E-=BepkE0f{dEYeQV>$;phZ|Cu(w9|_`_sh*jT-R6_ zo;DVVc_GS;tlSEE@_8di-!QG)-licgpR<>@@bb#WpJm*_}c(Qv;}@1|>IE`(#SMBm;$15LtxqE`% zsYs!lqYB>IgOi;3cy|kW@Dcxo=%ro3Blk{m?=)8g?HPV6IP0?gNc)1VOR|-?!X>VV z7?g>&tw$u|DT%i8y&ZgQCw5^s8WE)^dl}Dt9-=On=(tOC)FIks6ZO$bqf4~h|8uVY zOO7_F|Da6-wL+A-=S$dLR%JUq2M+S}299F350#pdKPGhQd42;hlqlm6^87mc}2!9($lhuy>V4;r&U!K&wxxb^bagshxFF zqkRa{dV+jy4nQVfB`4-`jECWFHW5XdCtfCTQFp2 z-bv>2Fn9g56~uXt)D^jR!6jXCNE4FON77}P7Cs;-SY)qpa6OuXEOaoRee^@cIaHw^ zwe)WX-`D6vI zT7y7i1Btyx)BD-3lIJ=9lRMK8IEjycrFm<5A&ckHE(l6t_-(J^W@VpEUtjZ(*y z=U3O~MK=zAI&m2PAL0;hkuhjpHwKRxgGKuHgfVzZFP|~jUy$P^F5;CZ2IFoFM%@^k kcVi&xRQy8px^;Tit Date: Sun, 3 Nov 2019 13:52:56 -0500 Subject: [PATCH 2/5] completing Classroom --- src/main/java/io/zipcoder/Classroom.java | 38 ++++++-- src/test/java/io/zipcoder/ClassroomTest.java | 82 ++++++++++++++++++ target/classes/io/zipcoder/Classroom.class | Bin 276 -> 1570 bytes .../io/zipcoder/ClassroomTest.class | Bin 288 -> 2536 bytes 4 files changed, 115 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index b5835b6..243bbbb 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -1,11 +1,39 @@ package io.zipcoder; -public class Classroom { - - - - +import java.util.ArrayList; +public class Classroom { + // Declaring variables + public int maxNumOfStudents; + Student[] students = new Student[30]; + ArrayList studentsList = new ArrayList(); + + public Classroom(int maxNumOfStudents){ + this.maxNumOfStudents = maxNumOfStudents; + } + + public Classroom(Student[] students) { + this.students = students; + } + + public Classroom(){ + } + + public ArrayList getStudents(){ + return studentsList; + } + + public Double getAverageExamScore() { + Double totalExams = 0.0; + for (int i = 0; i < students.length; i++) { + totalExams += students[i].getAverageExamScore(); + } + return totalExams / students.length; + } + + public void addStudent(Student student1) { + studentsList.add(student1); + } diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 7bac1ff..1957fca 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -1,4 +1,86 @@ package io.zipcoder; +import com.sun.xml.internal.fastinfoset.tools.XML_SAX_StAX_FI; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; + public class ClassroomTest { + + + + + + + + + + @Test + public void getAverageExamScore() { + int maxNumOfStudents = 2; + // : Given + Double[] s1Scores = {100.0, 150.0}; + Double[] s2Scores = {225.0, 25.0}; + + Student s1 = new Student("student", "one", s1Scores); + Student s2 = new Student("student", "two", s2Scores); + + Student[] students = {s1, s2}; + Classroom classroom = new Classroom(students); + + Double expected = 125.0; + + // When + Double output = classroom.getAverageExamScore(); + + // Then + Assert.assertEquals(expected, output); + } + + @Test + public void addStudentTest() { + // : Given + int maxNumberOfStudents = 1; + Classroom classroom = new Classroom(maxNumberOfStudents); + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student s1 = new Student("Leon", "Hunter", examScores); + + String expected = " ===========================\n" + + " []\n" + + " ===========================\n" + + " [Student Name: Leon Hunter\n" + + " > Average Score: 125\n" + + " > Exam Scores:\n" + + " Exam 1 -> 100\n" + + " Exam 2 -> 150\n" + + " Exam 3 -> 250\n" + + " Exam 4 -> 0"; + + // When + ArrayList preEnrollment = classroom.getStudents(); + classroom.addStudent(s1); + ArrayList postEnrollment = classroom.getStudents(); + + // Then + String preEnrollmentAsString = preEnrollment.toString(); + String postEnrollmentAsString = postEnrollment.toString(); + + System.out.println("==========================="); + System.out.println(preEnrollmentAsString); + System.out.println("==========================="); + System.out.println(postEnrollmentAsString); + + } + + + + + + + + + + } diff --git a/target/classes/io/zipcoder/Classroom.class b/target/classes/io/zipcoder/Classroom.class index e3e3105f62ae6cfc0804ea21349da326cbeab864..9d8ae0acae1a36c15817e2168c2b9d0849a137a5 100644 GIT binary patch literal 1570 zcma)6+fEZv6kVsK3>^l_{UT67MN2^{h&Mo#izXyh9%?Y^)1e)3uyn|DO3-H$|G`IJ zeAPt2XygO@3ID^y%Q~l13Z^8c$+_;m*4k^I>G$7X4gpMI(L@tc2ChV5VZy+qi8`dz z=BgT|OkBftHQX=}!cBF1%fPgO8G)89x%;rRwX&Y^OF6sX7X`$!Ktu6p+x0B%xT#mp zcGk_=UMh%Vs#S?eJ4IihGrcKyWUAyl`P97U$(QPwVbP4UQILMgvjxU##mv^kpJQtM ztW$9OIf1&w^2jQuMM@BerJaIJ(QCH%NUr61(w26!GQTQ4N9}{dI{&%Da=K5zFXm;j z=(+9|;d>LcOH)+ggc=(+Y`+%iEGD+rgfqa3U#0euReN<&u zx;>$~Si9L~#w~eS`@W;>Za#8xT=m>S7vci#H8L%vChJmTb|)o{A}m9GGBA%0Fx{N}=-35an8RiK_(4Np6`4xtnETz8?HV-HW(m=WR} zPaZ%dTjJjk+Cw<`6?IPz5ZOb0vTqN@N1fZtu?rE7jr>p>$QLDsg#oV4=sS&sKJ;@( zOs#~kgjoas%{NN^fB9m^_*#h7dJ3PaxXc$1_*S$dK<{bwRjJxY0$NoqtwYmTgd#vt zmcUsI(lTXUN|OPRE_R9NQZCt z6D)lA4)M`_MAf=~avvtwS#|$9B;Nn|QMo#NGE48Ti;4_!$}4Y%=pQOY9gKm^CK83!a?IB*)Cc zz&iN>lXftJA_EgpDF`qEAy61dvH^MeU_Ju_tJZb~#*IJ$CI)sO$p#c=0BYa>l00BG SD+4D37m&xuzzrms7-b8{zLxV= zTdtz4;u{qkLi|9yHZ^>UhcSEyUB#A$ZB!H(3LZ(2=gfxb&PxcVr`9Dz7OaXP;ds$( z7^|)NmSNx5w`!Cmiq^JXTi0zEkHZ{Ha8LQYmFca4v2yhSm#-HBJic#lpu5#iR@YZ}|GQ4u8i zge6-ox7l(fB=5Bvu30zMO~+)!g+{}2b=R~S%xI`++11QWi@-BJoI$-(@q-o;X5HpO z@If@1(IH1O!2n9GZ8oY5@L1C}mKwHItJO(UaPgvSxn?a>ux)+6XnLnH*t8tCN3myP z!D(BRFxIOW_@ehF>^D2NVY;8oxgMmQ^OecSdmJC)ETR3E zb{thaCaB<@^X*Dd{1fMWwi<>oVRGs|wMZnmq3cel?8GsR?-kVIsG}hyRF4!5tHJtM z=6M>nguhbP-~MQ+jZN);6#N)dt9sqYrG)iV+qRaPPx%Fs^6qvnHJiO6q@rHhA}6P% z#N$b3Qy1n_vokXRQPvY(35qTWQMN~PS%_xhXyQp6HXH?R94+iBcpAqZ_F2kr&+)o~ zXL0<1=e*>7QMNB|;Jnthc33k!lwG~nGS=8_M$?N^{mLho4oLkw{idW(Ll8YHneJcP z;=7S_Uw=bKg;;PL!)B0ib}depp0xBDi|kx5qIM$J0ulKVuVtoJ#4x}%=N~b*k9YjO zQGnV}#Y;Gu?pq$h-f*A#Wgl{_PJ#BO)@=j<{-u4#HR_@iL}&6l0*~%4dj?~*4ZY4f zY&+@|^URt;sm2Nz4U+KPOs!)Q@AD^3JYh(pRQW!~RfeO)F?#+G(l4BZkmg(Vgc_ze zkGBl z97_yNAL4i};;)7-h*gwZ;^lBMLMzE=DJQ?iiE>gtL?Wk*V3^x;YEn7CXfBpild)GA zJBs=u1{lp4qdSQtKQoxXJWipA_wWFx*@-4$5yLK{f5ALOc8}T__}PW<92anrStel+ z&J1nMU=_1`hiNO1EG{8Ji&_3nxWxP);0&(dV-l-k9G~D*{uQur99NNpN>3`TaTdcI zeF>`9IZCwDVYultd>NS&nNA#H{EpHWW;r^7lO9KT@QC6&i3yKeBylPioj$<3Ie9u6 zIlz0~TuI6YINc_8Iv4vDsl?;~&Tves?XkO#aV=1Wy$dkU6hIUq!WbZkECGn*7a963 ze1^MRtz!Y3lvHp7HQa=YW#U`G&$t~x`?8DnC+-ty2k^`T6{5Wo?Fh7aEO8~!E}}qq y1!B2Hbf43QOivlg7l?L~(Jk>?m0l<5w?MQv8L2q*w*GQgf0_Ed*jK1Yy?+4&GFBb{ delta 115 zcmaDMynspc)W2Q(7#J8#7zDT&m>GE48Ti;4_$Mw%nJmMs#KywF%E%x&c_X9f Date: Sun, 3 Nov 2019 14:57:36 -0500 Subject: [PATCH 3/5] updating --- src/main/java/io/zipcoder/Classroom.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index 243bbbb..d7b9687 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -35,7 +35,14 @@ public void addStudent(Student student1) { studentsList.add(student1); } + public void removeStudent(Student firstName, Student lastName) { + for (int i = 0; i < studentsList.size(); i++) { + if(studentsList.get(i).firstName.equals(firstName) && studentsList.get(i).lastName.equals(lastName)){ + studentsList.remove(i); + } + } + } From 5acbef29a75a5776add4afef17a40dd31f6afe6f Mon Sep 17 00:00:00 2001 From: John Tokhi <56596400+tokhij@users.noreply.github.com> Date: Sun, 3 Nov 2019 18:36:02 -0500 Subject: [PATCH 4/5] almost complete --- src/main/java/io/zipcoder/Classroom.java | 39 +++++-- src/main/java/io/zipcoder/Student.java | 6 +- src/test/java/io/zipcoder/ClassroomTest.java | 101 ++++++++++++++++++ target/classes/io/zipcoder/Classroom.class | Bin 1570 -> 3511 bytes target/classes/io/zipcoder/Student.class | Bin 3226 -> 3582 bytes .../io/zipcoder/ClassroomTest.class | Bin 2536 -> 5226 bytes 6 files changed, 139 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index d7b9687..f82a55c 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -1,6 +1,8 @@ package io.zipcoder; -import java.util.ArrayList; +import com.sun.org.apache.xml.internal.security.encryption.AgreementMethod; + +import java.util.*; public class Classroom { // Declaring variables @@ -40,12 +42,40 @@ public void removeStudent(Student firstName, Student lastName) { if(studentsList.get(i).firstName.equals(firstName) && studentsList.get(i).lastName.equals(lastName)){ studentsList.remove(i); } - + students[students.length-1] = null; + break; } } + public Student[] getStudentsByScore() { + Arrays.sort(students, Collections.reverseOrder()); + return students; + } + public Map getGradeBook() { + Map gradeBook = new TreeMap<>(); + for (int i = 0; i < students.length; i++) { + if(students[i].getAverageExamScore() >= 90){ + gradeBook.put(students[i].firstName, "A"); + } + else if(students[i].getAverageExamScore() >= 80) { + gradeBook.put(students[i].firstName, "B"); + } + else if(students[i].getAverageExamScore() >= 70) { + gradeBook.put(students[i].firstName, "C"); + } + else if(students[i].getAverageExamScore() >= 60) { + gradeBook.put(students[i].firstName, "D"); + } + else {gradeBook.put(students[i].firstName, "F"); + } + } + for (Map.Entry j: gradeBook.entrySet()){ + System.out.println(j); + } + return gradeBook; + } @@ -66,7 +96,4 @@ public void removeStudent(Student firstName, Student lastName) { - - - -} + } diff --git a/src/main/java/io/zipcoder/Student.java b/src/main/java/io/zipcoder/Student.java index 18f0202..f75d4fd 100644 --- a/src/main/java/io/zipcoder/Student.java +++ b/src/main/java/io/zipcoder/Student.java @@ -4,7 +4,7 @@ import java.util.Arrays; // this is a blueprint in case we want multiple students -public class Student { +public class Student implements Comparable{ // declaring variables String firstName; String lastName; @@ -81,4 +81,8 @@ public String toString(){ } + @Override + public int compareTo(Student o) { + return Double.compare(this.getAverageExamScore(), o.getAverageExamScore()); + } } diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 1957fca..5f0c072 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -9,6 +9,29 @@ public class ClassroomTest { + @Test + public void getStudentsTest() { + int maxNumOfStudents = 4; + Classroom class1 = new Classroom(maxNumOfStudents); + ArrayList s1Scores = new ArrayList<>(Arrays.asList(100.0)); + ArrayList s2Scores = new ArrayList<>(Arrays.asList(125.0)); + ArrayList s3Scores = new ArrayList<>(Arrays.asList(150.0)); + ArrayList s4Scores = new ArrayList<>(Arrays.asList(175.0)); + + Student s11 = new Student("student", "one", s1Scores); + Student s12 = new Student("student", "two", s2Scores); + Student s13 = new Student("student", "three", s3Scores); + Student s14 = new Student("student", "four", s4Scores); + + ArrayList expectedStudents = new ArrayList(Arrays.asList(s11, s12, s13, s14)); + class1.studentsList = expectedStudents; + ArrayList actual = class1.getStudents(); + ArrayList expected = expectedStudents; + + Assert.assertEquals(expected, actual); + + } + @@ -74,6 +97,84 @@ public void addStudentTest() { } + @Test + public void removeStudentTest() { + // : Given + int maxNumberOfStudents = 1; + Classroom classroom = new Classroom(maxNumberOfStudents); + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student s1 = new Student("Leon", "Hunter", examScores); + classroom.addStudent(s1); + + int actual = classroom.getStudents().size(); + + // When + ArrayList preEnrollment = classroom.getStudents(); + classroom.removeStudent(s1, s1); + ArrayList postEnrollment = classroom.getStudents(); + + + Assert.assertEquals(maxNumberOfStudents, actual); + System.out.println(maxNumberOfStudents); + + } + + @Test + public void getStudentsByScoreTest() { + + // : Given + ArrayList s1Scores = new ArrayList<>(Arrays.asList(100.0)); + ArrayList s2Scores = new ArrayList<>(Arrays.asList(125.0)); + ArrayList s3Scores = new ArrayList<>(Arrays.asList(150.0)); + ArrayList s4Scores = new ArrayList<>(Arrays.asList(175.0)); + + Student s1 = new Student("student", "one", s1Scores); + Student s2 = new Student("student", "two", s2Scores); + Student s3 = new Student("student", "three", s3Scores); + Student s4 = new Student("student", "four", s4Scores); + + Student[] expectedStudents = {s2, s3, s4, s1}; + Classroom expectedClassroom = new Classroom(expectedStudents); + + // When + Student[] actualStudents = {s3, s4, s1, s2}; + Classroom actualClassroom = new Classroom(actualStudents); + actualClassroom.getStudentsByScore(); + + // When + Assert.assertEquals(actualClassroom.getStudents(), expectedClassroom.getStudents()); + + } + @Test + public void getGradeBookTest() { + + // : Given + ArrayList s1Scores = new ArrayList<>(Arrays.asList(90.0)); + ArrayList s2Scores = new ArrayList<>(Arrays.asList(85.0)); + ArrayList s3Scores = new ArrayList<>(Arrays.asList(77.0)); + ArrayList s4Scores = new ArrayList<>(Arrays.asList(65.0)); + + Student s1 = new Student("student", "one", s1Scores); + Student s2 = new Student("student", "two", s2Scores); + Student s3 = new Student("student", "three", s3Scores); + Student s4 = new Student("student", "four", s4Scores); + + Student[] expectedStudents = {s2, s3, s4, s1}; + Classroom expectedClassroom = new Classroom(expectedStudents); + + // When + Student[] actualStudents = {s3, s4, s1, s2}; + Classroom actualClassroom = new Classroom(actualStudents); + actualClassroom.getStudentsByScore(); + + // When + Assert.assertEquals(actualClassroom.getStudents(), expectedClassroom.getStudents()); + + } + + + + diff --git a/target/classes/io/zipcoder/Classroom.class b/target/classes/io/zipcoder/Classroom.class index 9d8ae0acae1a36c15817e2168c2b9d0849a137a5..56d3d7b645f277d637b30c5ed1eb2bdc2ab2f089 100644 GIT binary patch literal 3511 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 Date: Tue, 5 Nov 2019 17:21:35 -0500 Subject: [PATCH 5/5] done --- src/test/java/io/zipcoder/ClassroomTest.java | 8 -------- .../io/zipcoder/ClassroomTest.class | Bin 5226 -> 5226 bytes 2 files changed, 8 deletions(-) diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 5f0c072..7570df7 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -32,14 +32,6 @@ public void getStudentsTest() { } - - - - - - - - @Test public void getAverageExamScore() { int maxNumOfStudents = 2; diff --git a/target/test-classes/io/zipcoder/ClassroomTest.class b/target/test-classes/io/zipcoder/ClassroomTest.class index 6d0a8be210227cc2e7ca47595d0d68aaddac9055..cbdb2794efc48270cd397fcebfb4f981eb7dd02b 100644 GIT binary patch delta 308 zcmWO0%PT~27{>AM&&J}2X2+6}V;G5|Q?4aRW=7=6OM0ct0|&}3S1hA(m@>q#F(UkB_&%llcoiq zR{L90WxO`k+i_HEqLVJV=^;)(2?j|r$`Dfwv%m=Jx^@{O%Q(kO*kozFiA{^oh|h}8 ziOtAfFro1rB-Vh!6ev;)EYg z2|44BoDCx1#yc0k5Wf`9i(iRf3*U&}iWkK1#2>^T#h=8V#b5G4X;t zN$S{J`xC5Ly=!Ibm(9~TJ?Ha0zvBhH;A@{_0=D1DnwmPwsHd6+)h5~q(@QgBv@nZH zidI%=CriZsR0NFMspnldL}{d(2t9N#q&mz1BRY*TE;gGAV_}z