From 57c21729b15be31c3dbe4e93c2caa7020866eb1c Mon Sep 17 00:00:00 2001 From: Brian Patterson Date: Sun, 3 Nov 2019 07:13:30 -0500 Subject: [PATCH 1/2] updated student tests --- src/main/java/io/zipcoder/Classroom.java | 69 +++++++++++- src/main/java/io/zipcoder/Student.java | 77 +++++++++++++ src/test/java/io/zipcoder/ClassroomTest.java | 29 +++++ src/test/java/io/zipcoder/StudentTest.java | 105 ++++++++++++++++++ target/classes/io/zipcoder/Classroom.class | Bin 0 -> 1826 bytes target/classes/io/zipcoder/Student.class | Bin 0 -> 2669 bytes .../io/zipcoder/ClassroomTest.class | Bin 0 -> 1288 bytes .../io/zipcoder/StudentTest.class | Bin 0 -> 3372 bytes 8 files changed, 279 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..daf9698 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -1,4 +1,71 @@ package io.zipcoder; +import javax.sound.midi.Soundbank; +import java.lang.reflect.Array; +import java.util.ArrayList; + public class Classroom { -} + public Student[] students; + + public Classroom(int maxNumberOfStudents) { + + } + + public Classroom(Student[] students) { + + } + + public Classroom() { + Student[] students = new Student[30]; + + } + + public Student[] getStudents() { + return students; + } + + public double getAverageExamScores() { + double avgScore = 0; + double summ = 0; + for (int i = 0; i < students.length; i++) { + summ += students[i].getAverageExamScore(); + avgScore = summ / students.length; + + } + return avgScore; + } + + public void addStudent(Student student) { + Student[] temp = new Student[students.length + 1]; + for (int i = 0; i < students.length; i++) { + if (students[i].getFirstName().length() > 0) { + temp[i] = students[i]; + } else { + temp[i] = student; + break; + } + } + Student[]students = new Student[temp.length]; + for (int i = 0; i < students.length; i++){ + students[i] = temp[i]; + } + System.out.println(students); + } + + public int getNumberOfStudents () { + int count = 0; + for (int i = 0; i < students.length; i++) { + if (students[i] != null && students[i].getFirstName().length() > 0) { + count++; + + } + } + return count; + } + } + + + + + + diff --git a/src/main/java/io/zipcoder/Student.java b/src/main/java/io/zipcoder/Student.java index b543e36..1954654 100644 --- a/src/main/java/io/zipcoder/Student.java +++ b/src/main/java/io/zipcoder/Student.java @@ -1,4 +1,81 @@ package io.zipcoder; +import java.util.ArrayList; +import java.util.Arrays; + public class Student { + + private String firstName; + private String lastName; + ArrayListexamScores; + + public Student(String firstName, String lastName, Double[] testScores) { + this.firstName=firstName; + this.lastName=lastName; + this.examScores = new ArrayList(Arrays.asList(testScores)); + + } + + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public ArrayList getTestScores() { + return examScores; + } + + public int getNumberOfTestsTaken() { + return examScores.size(); + } + + public String getExamScores() { + String scoreReport = ""; + for (int i = 0; i < examScores.size(); i++) { + scoreReport += "Exam " + i + 1 + " --> " + examScores.get(i) + "\n"; + } + return scoreReport; + } + + public void addExamScore(double examScore) { + examScores.add(examScore); + } + + public Double getAverageExamScore() { + double sum = 0; + double avgReport = 0; + for (int i = 0; i < examScores.size(); i++) { + sum += examScores.get(i); + avgReport = sum/examScores.size(); + } + return avgReport; + } + +@Override + public String toString(){ + return "'''\n" + "Student Name: " + firstName + " " + lastName + "\n" + getExamScores()+ "\n" + getAverageExamScore()+"\n'''"; + } + + + +/* @Override + public String toString() { + return "Student{" + + "firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", testScores=" + examScores + + '}'; + }*/ } + diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 7bac1ff..97edbea 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -1,4 +1,33 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class ClassroomTest { + @Test + public void getStudents() { + } + + @Test + public void getAverageExamScores() { + } + + @Test + public void addStudent() { + int maxNumberOfStudents = 1; + Classroom classroom = new Classroom(maxNumberOfStudents); + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Leon", "Hunter", examScores); + + + classroom.addStudent(student); + int postEnrollment = classroom.getNumberOfStudents(); + + Assert.assertEquals(1, postEnrollment); + + + + } } + + diff --git a/src/test/java/io/zipcoder/StudentTest.java b/src/test/java/io/zipcoder/StudentTest.java index a9fedec..5045750 100644 --- a/src/test/java/io/zipcoder/StudentTest.java +++ b/src/test/java/io/zipcoder/StudentTest.java @@ -1,5 +1,110 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; + public class StudentTest { + @Test + public void getFirstName() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + + String actual = student.getFirstName(); + String expected = "Jim"; + Assert.assertEquals(expected, actual); + } + + @Test + public void setFirstName() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + student.setFirstName("Gum"); + String actual = student.getFirstName(); + String expected = "Gum"; + Assert.assertEquals(expected, actual); + } + + @Test + public void getLastName() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + + String actual = student.getLastName(); + String expected = "Bo"; + Assert.assertEquals(expected, actual); + } + + @Test + public void setLastName() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + student.setLastName("Bobo"); + String actual = student.getLastName(); + String expected = "Bobo"; + Assert.assertEquals(expected, actual); + } + + @Test + public void getTestScores() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + ArrayList actual = student.getTestScores(); + Double expected = 150.0; + Assert.assertEquals(actual.get(1),expected); + } + + @Test + public void getNumberOfTestsTaken() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + int actual = student.getNumberOfTestsTaken(); + int expected = 4; + Assert.assertEquals(expected, actual); + } + + @Test + public void getExamScores() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + String actual = student.getExamScores(); + } + + @Test + public void addExamScore() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + int actual = student.getNumberOfTestsTaken()+1; + student.addExamScore(100.0); + int expected = student.getNumberOfTestsTaken(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getAverageExamScore() { + Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Student student = new Student("Jim", "Bo", examScores); + Double actual = student.getAverageExamScore(); + Double expected = 125.0; + Assert.assertEquals(expected,actual); + } + + @Test + public void toStingTest() { + Double[] examScores = {100.0, 150.0, 250.0, 0.0}; + Student student = new Student("Jim", "Bo", examScores); + String actual = student.toString(); + String expected = "'''\n" + + "Student Name: Jim Bo\n" + + "Exam 01 --> 100.0\n" + + "Exam 11 --> 150.0\n" + + "Exam 21 --> 250.0\n" + + "Exam 31 --> 0.0\n" + + "\n" + + "125.0\n" + + "'''"; + 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..7dfbdd7df75a9cefb8c868bbc482fb98980214ef GIT binary patch literal 1826 zcma)6O>Y}j6g|%~_9XV$Ns~_MwsDd+h1iK5r-p{6`6wl6l16TdWMm1!f{8u2Q*2LU zkE6oc5kzpmh9k1@B<>HaNf-1!w@7k^X|LvzH`sH_rCe{)lWSD zZ(=8k7;+ls2N6X+iVzl}xQ&9e-iR{b&L9@?Rup%!q~V^1Wr2aV+o@Vjw=FRCLD6>d zpV|8rr)stGCI5gikrlgXyK4e!`cbCLWt{;6Lq)r3?RFY_R_i@;uTIZM(W#jAve~lb zK5(k;Q=8~l`oP!gX1m>ToCe`X8|HH#=E=uFQpSr%0$0-)Q<5Zw|XvyicD%Peg%bYl^ z-uyH3z|@gIk}wxEPlt}UjuotGSkrMI<2v5P0}b!!SVu;~hK`5W)Uc&v8_Z{%2RTh6 zFf0@0>t?f-f3o+?s*sYT{m+WB&go3?EOx``a1hwzbN788TUYfC%VxbpO*+vw?N-~} zH5=Ua!<5{X-K_P)_&yG2-D=j{r+q0(pSD?DcGu~UsNoZ$vUdr?acNnmH+LS-em6U} zFN5k$-bM*hm-v;BP<~Zj z8lg4j2VoSKxnnpC`Xp!qSN;!Ff>6W%0VR3)P{{yli>o9MldOg(enzNx#w`JbMjgK zsP-Eb z8LsKLZeSUo7>MFiIk_RLl>}CGd}hGFRT;yJ+6m;BG=-Y6rHTSx;Wh*4Jo7T29U9?Jt=@qx?lnNPzMA2&A z8}@x`Yb95%+BJn?-?;8N#pw&xs`Vi2)Lh#4tvH2}<<_eNoakk9F63pQTwgERnOVMz zpL0r%JF7603K;}6UO%}LItoxG))b=i0S0XK;5a2)Q$dX05|&xJQIS zzMo*(R<`^3sJ$ED-D-%=o~EbQ3NYFG<_&2dCa#~T*L8F0EEvD|hdjRq@iQgGQ#6&$k}3EU5(vu&*T`!Yn8Z5&puqU9}2! z$hb3!L2=2bR^K9owOwfXO}J%WA1u{Mxn9lLi;mRV3`%%RA|4&2m$ND<^e^ zX_&Z-<0iK8or(K+ps=$I=m%%wA-<E*h85w7mIZ1luH?} z4{OdtRw8ayDt0NaFx5-)p%(Vp1({{*ji#1f@1*v%M&a-i)M*qj?Q+)1Kh&3PG=1AD z*6rmDL0kyCZEKHmmfH~HChl!^L*Dz0tqF?PISW+Uety^i4H1zZR}oPkXNbBet3zBx za2WkuAHg`s6i>GK*^Y8PkbVx8o_vN#`sg!g>6eJ!ntFlQbHtxP|HXSd!EppJjwas> zpbvxm?V#sfNb@x9BViIpxg(~>gqr3`xJ10w6poRl!ZeNt9Hu#oRV@80B0qBxfw+o$ zhr2y!(>Dm972d}OJdprqX)VBUk9?b`;hpX!-F+Uyh;P**7Z1oOeAttS)=gxzCy^7q ziD=zK#z^Gg8;D45Bm*aLiX^SGl;N`(9+Ns#EC{r<3-vy*hHKyo1cmI>&|n?;Xa6sMW7c}6PP=ttxgbWLM2 zj*&CJ{{iz&x)BY`1vN|V^-C1tl-%d9HCaok(ha;7TE8tNWGSVD-5Q(^X=kpboh5pT G;L86%xfP)R 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..2374517a1cba01bef82a9f8991b389b73e51ad47 GIT binary patch literal 1288 zcmah|TTc@~7(LVOcFVFrY0FK#Al_PTtB9z8*a{^=R!Asm()hG(hq`3Di+dr&cYlyC zKqMNUjlaqG?Y2S-P1uK-`M#NRzVn@#{r&g*PXG%j$Vg*G!mNx4<|L@GT$wiLlOf<~ zELZszMzNfo3l|ce#W5epa~TR20@RCOSd{S+uOz&du*48sF)YJdWr$|7B?e*5u5pF| z&9L~k->7hBPp_DiNosagH%q!>1aT`Vc%KZHVO%q8^^0*>C9I>anY!ybw%yp{uD8t4 zTjyTU^K0Dl=P2H-i>$XoC z>4@Yu8(lG}=Hq8cgN~}fOcdC5D2;J*2WiF_oUz?~r(g~1bOY_+4qY7ucPaNL30%KkdaiWAiOUC* zcU|s~UWHyCEefA~-K3WyX12DnCEQ1f{+{3yKrLXH#u18CniuRCP7%Xx0!KpdbQn|aDzK*w$XdWVE!w*w=-$mFeK(R!T#)>MNSc8?VdWf= z^7tvDAEX};%F#5$Gf2g?sD8gqbnn1c{jw3@(cD zkoffs$;;*@5vLl1)O`}YWavCunjk1DuBVwj{f!gC<|f>q=moo`7lo+$ z`kY-c%e#CVGTy#63bwIBVGnC%+bkKIX4T~8>2le!b=$Pcbl#b5LGh}?7eq&VhUBhQ>x2>E_da)T}oU>|`g0W93Nb%FokUm)7aB+2d^{~#WFJ%i-kS4QBf_)D7{AKtgs-BCPt&f z!!yy*L}Dc2T1Gv~gtUygma)3!hHDWs!lPpoywQt--Xkd8;Q8XRmfvF?u^`{*#hS79 zf(1FSaLre8GNH)LLr*&3>JT2@w0+sey^_B zDW6x*B3$(NXL=rlz4y>{L)~^c4^ZB7(1I(x1{`AuS2@<)35a2UPYSEDpR>f` zU(m*1U?KPyTDDrd(RzTk+?LvnfHP?8M#vciPKsORBf?ve_K0@<15Vr@+Q-Rkq&=zj zslx~8sQW%k@4{;gCs^qntmjVF?=3%8^SQP-6rG+(OS7K zhy+I}M!Bb;8slAI8yzzI;W4Z>#SrP-$0?VjvytQ?y#uGIw3q76Ac;QA;w(wd@#Asc zN3$wv`X$Y2k7icV%zuGqT+$pjBav)GYvgb<5~apV1NE8Y?H>A^HD zb$;}Mz22nGUiJCR5Rc@2oMk)o9u;`E8}3tPmh#v5|H1=?e4QW)C5@f!o>7me^D$Yrn2IMXp{GpDGatvY Date: Fri, 29 Nov 2019 11:32:10 -0500 Subject: [PATCH 2/2] Completed Lab --- src/main/java/io/zipcoder/Classroom.java | 57 +++++++++++++----- src/test/java/io/zipcoder/ClassroomTest.java | 36 +++++++++-- target/classes/io/zipcoder/Classroom.class | Bin 1826 -> 2752 bytes .../io/zipcoder/ClassroomTest.class | Bin 1288 -> 2272 bytes 4 files changed, 73 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/zipcoder/Classroom.java b/src/main/java/io/zipcoder/Classroom.java index daf9698..f31cfaa 100644 --- a/src/main/java/io/zipcoder/Classroom.java +++ b/src/main/java/io/zipcoder/Classroom.java @@ -3,25 +3,36 @@ import javax.sound.midi.Soundbank; import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.List; public class Classroom { public Student[] students; + private Integer maxNumberOfStudents; - public Classroom(int maxNumberOfStudents) { + public Classroom(Integer maxNumberOfStudents) { + this.students = new Student[maxNumberOfStudents]; + this.maxNumberOfStudents = maxNumberOfStudents; } - public Classroom(Student[] students) { + public Classroom(Student[]students) { + this.students = students; } public Classroom() { - Student[] students = new Student[30]; + this.students = new Student[30]; } public Student[] getStudents() { - return students; + List studentList = new ArrayList<>(); + for (Student student: students) { + if (student != null) + studentList.add(student); + } + return studentList.toArray(new Student[studentList.size()]); + } public double getAverageExamScores() { @@ -36,20 +47,12 @@ public double getAverageExamScores() { } public void addStudent(Student student) { - Student[] temp = new Student[students.length + 1]; for (int i = 0; i < students.length; i++) { - if (students[i].getFirstName().length() > 0) { - temp[i] = students[i]; - } else { - temp[i] = student; - break; + if (students[i] == null) { + students[i] = student; } + i++; } - Student[]students = new Student[temp.length]; - for (int i = 0; i < students.length; i++){ - students[i] = temp[i]; - } - System.out.println(students); } public int getNumberOfStudents () { @@ -62,6 +65,30 @@ public int getNumberOfStudents () { } return count; } + + public void removeStudent(String firstName, String lastName) { + + + List studentList = new ArrayList<>(); + for (int i = 0; i < students.length; i++) { + studentList.add(students[i]); + } + for (Student i : getStudents()) { + if (i.getFirstName().equals(firstName) && (i.getLastName().equals(lastName))) { + studentList.remove(i); + } + } + students = studentList.toArray(new Student[0]); + } + + + + + + public String getGradeBook(){ + + return null; + } } diff --git a/src/test/java/io/zipcoder/ClassroomTest.java b/src/test/java/io/zipcoder/ClassroomTest.java index 97edbea..d0aed5c 100644 --- a/src/test/java/io/zipcoder/ClassroomTest.java +++ b/src/test/java/io/zipcoder/ClassroomTest.java @@ -6,28 +6,54 @@ public class ClassroomTest { @Test public void getStudents() { + 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 = new Student[]{s1, s2}; + Classroom classroom = new Classroom(students); } @Test public void getAverageExamScores() { + 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 = new Student[]{s1, s2}; + Classroom classroom = new Classroom(students); } @Test - public void addStudent() { + public void addStudentTest() { int maxNumberOfStudents = 1; Classroom classroom = new Classroom(maxNumberOfStudents); - Double[] examScores = { 100.0, 150.0, 250.0, 0.0 }; + Double[] examScores = {100.0, 150.0, 250.0, 0.0}; Student student = new Student("Leon", "Hunter", examScores); - - classroom.addStudent(student); int postEnrollment = classroom.getNumberOfStudents(); Assert.assertEquals(1, postEnrollment); + } + + @Test + public void removeStudentTest() { + int maxNumberOfStudents = 1; + Classroom classroom = new Classroom(maxNumberOfStudents); + Double[] examScores = {100.0, 150.0, 250.0, 0.0}; + Student student = new Student("Leon", "Hunter", examScores); + classroom.addStudent(student); + int expected = classroom.getNumberOfStudents(); + classroom.removeStudent("Leon","Hunter"); + int actual = classroom.getNumberOfStudents(); + Assert.assertEquals(expected-1,actual); } } - diff --git a/target/classes/io/zipcoder/Classroom.class b/target/classes/io/zipcoder/Classroom.class index 7dfbdd7df75a9cefb8c868bbc482fb98980214ef..a7123f2a1959e80deaa5253cc45409faf7e062f7 100644 GIT binary patch literal 2752 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 literal 1288 zcmah|TTc@~7(LVOcFVFrY0FK#Al_PTtB9z8*a{^=R!Asm()hG(hq`3Di+dr&cYlyC zKqMNUjlaqG?Y2S-P1uK-`M#NRzVn@#{r&g*PXG%j$Vg*G!mNx4<|L@GT$wiLlOf<~ zELZszMzNfo3l|ce#W5epa~TR20@RCOSd{S+uOz&du*48sF)YJdWr$|7B?e*5u5pF| z&9L~k->7hBPp_DiNosagH%q!>1aT`Vc%KZHVO%q8^^0*>C9I>anY!ybw%yp{uD8t4 zTjyTU^K0Dl=P2H-i>$XoC z>4@Yu8(lG}=Hq8cgN~}fOcdC5D2;J*2WiF_oUz?~r(g~1bOY_+4qY7ucPaNL30%KkdaiWAiOUC* zcU|s~UWHyCEefA~-K3WyX12DnCEQ1f{+{3yKrLXH#u18CniuRCP7%Xx0!KpdbQn|aDzK*w$XdWVE!w*w=-$mFeK(R!T#)>MNSc8?VdWf= z^7tvDAEX};%F#5$Gf2g?sD8gqbnn1c{jw3@(cD zkoffs$;;*@5vLl1)O`}YWavCunj