Merge branch 'master' of gitlab.com:shockrahwow/csnotes
This commit is contained in:
commit
1d08a743e4
32
338/homework4/Course.java
Normal file
32
338/homework4/Course.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Class:
|
||||||
|
Course
|
||||||
|
Description:
|
||||||
|
Structure to represent a course in the school system
|
||||||
|
|
||||||
|
*/
|
||||||
|
public class Course {
|
||||||
|
public int id;
|
||||||
|
public String title;
|
||||||
|
public int instructorID;
|
||||||
|
public String location;
|
||||||
|
public int studentCount;
|
||||||
|
|
||||||
|
public Course (int id, String title, int instructorID, String location) {
|
||||||
|
this.id = id;
|
||||||
|
this.title = title;
|
||||||
|
this.instructorID = instructorID;
|
||||||
|
this.location = location;
|
||||||
|
|
||||||
|
this.studentCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// updates the room location of a given course ex. BIT-104 to BIT-110
|
||||||
|
public void updateLocation(String newLocation) {
|
||||||
|
this.location = newLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return this.id + " " + this.title;
|
||||||
|
}
|
||||||
|
}
|
22
338/homework4/Instructor.java
Normal file
22
338/homework4/Instructor.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
Class:
|
||||||
|
Instructor
|
||||||
|
Description:
|
||||||
|
Structure to represent a instructor in the school system
|
||||||
|
|
||||||
|
*/
|
||||||
|
public class Instructor {
|
||||||
|
public int id;
|
||||||
|
public String name;
|
||||||
|
public String email;
|
||||||
|
public String phone;
|
||||||
|
public Instructor(int id , String name, String email, String phone) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.email = email;
|
||||||
|
this.phone = phone;
|
||||||
|
}
|
||||||
|
public String toString() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
}
|
300
338/homework4/School.java
Normal file
300
338/homework4/School.java
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
import java.util.ArrayList;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
// NOTE: there will probably only be one instance of a school object ever
|
||||||
|
public class School {
|
||||||
|
private ArrayList<Instructor> instructorList;
|
||||||
|
private ArrayList<Course> courseList;
|
||||||
|
private ArrayList<Student> studentList;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public School(/*String file,*/ String schoolName) {
|
||||||
|
this.instructorList = new ArrayList<Instructor>();
|
||||||
|
this.courseList = new ArrayList<Course>();
|
||||||
|
this.studentList = new ArrayList<Student>();
|
||||||
|
|
||||||
|
this.name = schoolName;
|
||||||
|
//readData(file);
|
||||||
|
}
|
||||||
|
public void readData(String filename) {
|
||||||
|
try {
|
||||||
|
BufferedReader reader = new BufferedReader(new FileReader(filename));
|
||||||
|
// first line is how many instructors we want to add
|
||||||
|
int inst_count = Integer.parseInt(reader.readLine());
|
||||||
|
for(int i =0;i<inst_count;i++) {
|
||||||
|
// now we shold begin to populate out instructor list
|
||||||
|
String[] data = reader.readLine().split(",");
|
||||||
|
int tmp_id = Integer.parseInt(data[0]);
|
||||||
|
|
||||||
|
// ignoring the return value as those custom messages are in the method itself
|
||||||
|
this.addInstructor(tmp_id, data[1], data[2],data[3]);
|
||||||
|
}
|
||||||
|
// next line should be number of courses to add
|
||||||
|
int course_count = Integer.parseInt(reader.readLine());
|
||||||
|
for(int i =0;i<course_count;i++) {
|
||||||
|
String[] data = reader.readLine().split(",");
|
||||||
|
int tmp_id = Integer.parseInt(data[0]);
|
||||||
|
int inst_id = Integer.parseInt(data[2]);
|
||||||
|
|
||||||
|
this.addCourse(tmp_id, data[1], inst_id, data[3]);
|
||||||
|
}
|
||||||
|
// finally the amount of students we want to add is next
|
||||||
|
int student_count = Integer.parseInt(reader.readLine());
|
||||||
|
for(int i =0;i<student_count;i++) {
|
||||||
|
// parse items from the current line
|
||||||
|
String[] data = reader.readLine().split(",");
|
||||||
|
int stud_id = Integer.parseInt(data[0]);
|
||||||
|
int cour_id = Integer.parseInt(data[2]);
|
||||||
|
float fl_grade = Float.parseFloat(data[3]);
|
||||||
|
|
||||||
|
// attempt to add the student
|
||||||
|
this.addStudent(stud_id, data[1], cour_id, fl_grade, data[4]);
|
||||||
|
}
|
||||||
|
System.out.println("Done.");
|
||||||
|
}
|
||||||
|
catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public boolean addInstructor(int id, String name, String email, String phone) {
|
||||||
|
// make sure that the new instructor isn't already in the system
|
||||||
|
for(Instructor i : this.instructorList) {
|
||||||
|
if(id == i.id) {
|
||||||
|
System.out.println("Instructor ID already in use");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Instructor new_inst = new Instructor(id, name, email, phone);
|
||||||
|
instructorList.add(new_inst);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public boolean addCourse(int id, String title, int instructorID, String location) {
|
||||||
|
// make sure we don't the same course twice
|
||||||
|
for(Course c : this.courseList) {
|
||||||
|
if(c.id == id) {
|
||||||
|
System.out.println("Course addition failed – Course number already used.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// check if the instructor exists
|
||||||
|
boolean instructorExists = false;
|
||||||
|
for(Instructor i : this.instructorList) {
|
||||||
|
if(i.id == instructorID) {
|
||||||
|
instructorExists = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!instructorExists) {System.out.println("Course addition failed – Non-existing instructor.");}
|
||||||
|
// check the instructor
|
||||||
|
Course new_course = new Course(id, title, instructorID, location);
|
||||||
|
courseList.add(new_course);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int courseEnrolled(int id) {
|
||||||
|
// Helper function which simply counts up how many people are enrolled in a given cuorse
|
||||||
|
int count = 0;
|
||||||
|
for(Student s: this.studentList) {
|
||||||
|
if(s.courseID == id) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstructor(int id) {
|
||||||
|
// find the instructor name given an id
|
||||||
|
for(Instructor i : this.instructorList) {
|
||||||
|
if(i.id == id) {
|
||||||
|
return i.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "Not Found";
|
||||||
|
}
|
||||||
|
public float courseAverage(int id) {
|
||||||
|
// gets average of all the students grades for a given course by id
|
||||||
|
float sum = 0;
|
||||||
|
int count = 0;
|
||||||
|
for(Student s : this.studentList) {
|
||||||
|
if(s.courseID == id) {
|
||||||
|
sum += s.floatGrade;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(count == 0) {
|
||||||
|
return 0.00f;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum / (float)count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void courseInfo(int id) {
|
||||||
|
boolean found = false;
|
||||||
|
// look for the course given by the id
|
||||||
|
for(Course i : this.courseList) {
|
||||||
|
found = true;
|
||||||
|
if(i.id == id) {
|
||||||
|
System.out.println("Course number: " + i.id);
|
||||||
|
System.out.println("Instructor: "+ this.getInstructor(i.instructorID));
|
||||||
|
System.out.println("Course title: " + i.title);
|
||||||
|
System.out.println("Room: " + i.location);
|
||||||
|
System.out.println("Total enrolled: " + this.courseEnrolled(id));
|
||||||
|
System.out.println("Course average: " + this.courseAverage(id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!found) {
|
||||||
|
System.out.println("Course not found: [id = " + id + "]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void courseInfo() {
|
||||||
|
System.out.println("Number of courses: " + this.courseList.size());
|
||||||
|
for(Course c : this.courseList) {
|
||||||
|
System.out.println(c.id + ": " + this.courseEnrolled(c.id) + " enrolled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public Course getCourse(int id) {
|
||||||
|
for(int i =0;i<this.courseList.size();i++) {
|
||||||
|
if(this.courseList.get(i).id == id) {
|
||||||
|
return this.courseList.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public boolean courseEmpty(int courseID) {
|
||||||
|
for(Student s : this.studentList) {
|
||||||
|
if(s.courseID == courseID) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public boolean deleteCourse(int id) {
|
||||||
|
for(int i =0;i<this.courseList.size();i++) {
|
||||||
|
if(this.courseEmpty(this.courseList.get(i).id)) {
|
||||||
|
if(this.courseList.get(i).id == id) {
|
||||||
|
this.courseList.remove(i);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public boolean addStudent(int id, String name, int courseID, float floatGrade, String letterGrade) {
|
||||||
|
for(Student i : this.studentList) {
|
||||||
|
if(i.id == id) {
|
||||||
|
// attempt to regitser the student in case they're trying to add a new course
|
||||||
|
// this method should also give us proper error msgs about registering
|
||||||
|
if(this.register(id, courseID, floatGrade, letterGrade)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// check if the course even exists at all
|
||||||
|
boolean cFound = false;
|
||||||
|
for(Course c : this.courseList) {
|
||||||
|
if(c.id == courseID) {
|
||||||
|
cFound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!cFound) {
|
||||||
|
System.out.println("Course does not exist");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally we can add the student into the system
|
||||||
|
// this is assuming we didn't register them earlier
|
||||||
|
Student new_student = new Student(id, name, courseID, floatGrade, letterGrade);
|
||||||
|
studentList.add(new_student);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
private float studentAverage(int id) {
|
||||||
|
float sum = 0.0f;
|
||||||
|
int count = 0;
|
||||||
|
for(Student s : this.studentList) {
|
||||||
|
if(s.id == id) {
|
||||||
|
sum += s.floatGrade;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum/(float)count;
|
||||||
|
}
|
||||||
|
private String studentCourses(int id) {
|
||||||
|
String info = "";
|
||||||
|
for(Student s : studentList) {
|
||||||
|
if(s.id == id) {
|
||||||
|
info += s.courseID + ": " + s.floatGrade +
|
||||||
|
" " + s.letterGrade;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
public Student getStudentInfo(int id) {
|
||||||
|
for(int i =0; i<this.studentList.size(); i++) {
|
||||||
|
if(this.studentList.get(i).id == id) {
|
||||||
|
|
||||||
|
this.studentList.get(i).average = studentAverage(id);
|
||||||
|
this.studentList.get(i).courseInfo = studentCourses(id);
|
||||||
|
|
||||||
|
return this.studentList.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public boolean graduateStudent(int id) {
|
||||||
|
// remove the student from all courses and set their only course id to graduated=0
|
||||||
|
Student tmp = getStudentInfo(id);
|
||||||
|
if(tmp == null) {
|
||||||
|
System.out.println("Student not found");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
tmp.courseID = 0;
|
||||||
|
tmp.status = "Graduated";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean register(int studentID, int courseID, float floatGrade, String letterGrade) {
|
||||||
|
Student tmp = this.getStudentInfo(studentID);
|
||||||
|
if(tmp.courseID == courseID) {
|
||||||
|
System.out.println("Student already enrolled");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// make sure we don't try to regitster for a course that doesn't exist
|
||||||
|
if(this.getCourse(courseID) == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// if the student is there but not enrolled in that course then just create a new student with new data
|
||||||
|
Student new_student = new Student(tmp.id, tmp.name, courseID, floatGrade, letterGrade);
|
||||||
|
studentList.add(new_student);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public void drop(int studentID, int courseID) {
|
||||||
|
}
|
||||||
|
public void assign(int instructorID, int courseID) {
|
||||||
|
}
|
||||||
|
public void unassign(int instructorID, int courseID) {
|
||||||
|
}
|
||||||
|
// basic printout of school infor
|
||||||
|
public void schoolInfo() {
|
||||||
|
System.out.println("School name: " + this.name);
|
||||||
|
// instructors
|
||||||
|
System.out.println("Instructor info");
|
||||||
|
for(Instructor i : this.instructorList) {
|
||||||
|
System.out.println(i.name);
|
||||||
|
}
|
||||||
|
// courses
|
||||||
|
System.out.println("Course Information");
|
||||||
|
for(Course c : this.courseList) {
|
||||||
|
System.out.println(c.title);
|
||||||
|
}
|
||||||
|
// students
|
||||||
|
System.out.println("Student Information");
|
||||||
|
for(Student s : this.studentList) {
|
||||||
|
// grab the course which the student is enrolled in
|
||||||
|
Course c_title = this.getCourse(s.courseID);
|
||||||
|
System.out.println(s.name + ": " + c_title.title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
37
338/homework4/Student.java
Normal file
37
338/homework4/Student.java
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
Class:
|
||||||
|
Student
|
||||||
|
Description:
|
||||||
|
Structure to represent students in the school system
|
||||||
|
*/
|
||||||
|
public class Student {
|
||||||
|
public int id;
|
||||||
|
public String name;
|
||||||
|
public int courseID;
|
||||||
|
public float floatGrade;
|
||||||
|
|
||||||
|
// helper attributes
|
||||||
|
public float average;
|
||||||
|
public String courseInfo;
|
||||||
|
// using a string to allow for + and - grades
|
||||||
|
public String letterGrade;
|
||||||
|
|
||||||
|
public String status;
|
||||||
|
|
||||||
|
public Student(int id, String name, int courseId, float floatGrade, String letterGrade) {
|
||||||
|
this.name = name;
|
||||||
|
this.id = id;
|
||||||
|
this.courseID = courseId;
|
||||||
|
this.floatGrade = floatGrade;
|
||||||
|
this.letterGrade = letterGrade;
|
||||||
|
// default student status
|
||||||
|
this.status = "Enrolled";
|
||||||
|
}
|
||||||
|
public String toString() {
|
||||||
|
return "Student number: " + id + "\n" +
|
||||||
|
"Name: " + name + "\n" +
|
||||||
|
"Status: " + status + "\n" +
|
||||||
|
"Courses Enrolled: " + courseInfo + "\n" +
|
||||||
|
"Average: " + average;
|
||||||
|
}
|
||||||
|
}
|
85
338/homework4/T1.java
Normal file
85
338/homework4/T1.java
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
Author: Alejandro Santillana
|
||||||
|
Date: May 6, 2019
|
||||||
|
Description: Builds a basic school data tracker
|
||||||
|
keeps track of students and what course they are enrolled in as well as what courses
|
||||||
|
are offered by the school.
|
||||||
|
Course information is also available
|
||||||
|
Input is read from file
|
||||||
|
*/
|
||||||
|
public class T1 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String dataFile1 = "data1.txt";
|
||||||
|
String dataFile2 = "data2.txt";
|
||||||
|
|
||||||
|
// course reference for demo purposes
|
||||||
|
Course course1;
|
||||||
|
Student student1;
|
||||||
|
|
||||||
|
// first we'll read in some data
|
||||||
|
System.out.println("===== Read Data 1 =====");
|
||||||
|
School SCD = new School("CSUMB");
|
||||||
|
// get all basic info about the SCD
|
||||||
|
SCD.readData(dataFile1);
|
||||||
|
|
||||||
|
System.out.println("\n===== School Info 1 =====");
|
||||||
|
SCD.schoolInfo();
|
||||||
|
|
||||||
|
// round 2 of adding info to the SCD
|
||||||
|
System.out.println("\n===== Read Data 2 =====");
|
||||||
|
SCD.readData(dataFile2);
|
||||||
|
|
||||||
|
System.out.println("\n===== School Info 2 =====");
|
||||||
|
SCD.schoolInfo();
|
||||||
|
|
||||||
|
// we'll now add some new instructors
|
||||||
|
SCD.addInstructor(700, "E. Tao", "tao@csumb.edu", "777-777-1234");
|
||||||
|
SCD.addCourse(300, "CST300 – ProSem", 700, "BIT110");
|
||||||
|
SCD.addCourse(231, "CST231 – Intro C++", 100, "BIT104");
|
||||||
|
|
||||||
|
// examples of bad courses to add
|
||||||
|
System.out.println("\n===== Failed Course Addition =====");
|
||||||
|
SCD.addCourse(306, "CST306 – GUI Dev", 250, "BIT120");
|
||||||
|
SCD.addCourse(499, "CST499 – iOS Dev", 150, "BIT104");
|
||||||
|
|
||||||
|
System.out.println("\n===== Detailed Course Info =====");
|
||||||
|
SCD.courseInfo(306);
|
||||||
|
|
||||||
|
// updateing a courses location
|
||||||
|
course1 = SCD.getCourse(205);
|
||||||
|
course1.updateLocation("Library 104");
|
||||||
|
|
||||||
|
// checking some courses' information
|
||||||
|
System.out.println("\n===== Detailed Course Info 2 =====");
|
||||||
|
SCD.courseInfo(205);
|
||||||
|
|
||||||
|
System.out.println("\n===== Detailed Course Info 3 =====");
|
||||||
|
SCD.courseInfo();
|
||||||
|
SCD.deleteCourse(231);
|
||||||
|
SCD.deleteCourse(336);
|
||||||
|
SCD.deleteCourse(338);
|
||||||
|
|
||||||
|
System.out.println("\n===== Detailed Course Info 4 =====");
|
||||||
|
SCD.courseInfo();
|
||||||
|
|
||||||
|
// adding a student (valid this time)
|
||||||
|
SCD.addStudent(5555, "Chris Watson", 205, 85.50f, "B");
|
||||||
|
System.out.println("\n===== Detailed Course Info 5 =====");
|
||||||
|
SCD.courseInfo(205);
|
||||||
|
student1 = SCD.getStudentInfo(7777);
|
||||||
|
|
||||||
|
// student info
|
||||||
|
System.out.println("\n===== Detailed Student Info =====");
|
||||||
|
System.out.println(student1);
|
||||||
|
|
||||||
|
System.out.println("\n===== Detailed Student Info 2 =====");
|
||||||
|
System.out.println(SCD.getStudentInfo(7777));
|
||||||
|
SCD.graduateStudent(5555);
|
||||||
|
|
||||||
|
System.out.println("\n===== Detailed Course Info 6 =====");
|
||||||
|
SCD.courseInfo(205);
|
||||||
|
SCD.graduateStudent(5555);
|
||||||
|
|
||||||
|
System.out.println("\n===== Good Job! Bye! =====");
|
||||||
|
}
|
||||||
|
}
|
56
338/homework4/Test.java
Normal file
56
338/homework4/Test.java
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import static org.junit.jupiter.api.Assertion.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertion.assertSame;
|
||||||
|
import static org.junit.jupiter.api.Assertion.assertNull;
|
||||||
|
import static org.junit.jupiter.api.Assertion.assertNotNull;
|
||||||
|
import static org.junit.jupiter.api.Assertion.assertEquals;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class Tester {
|
||||||
|
public static School tester;
|
||||||
|
|
||||||
|
Tester() {
|
||||||
|
testSchool = new School("Test School");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addInstructor() {
|
||||||
|
assertEquals(false, tester.addInstructor(123, "name", "asdf@mail.org", "1123-12-312"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addCourse() {
|
||||||
|
assertEquals(true, tester.addInstructor(999, "School of what", 100, "New build 7"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCourse() {
|
||||||
|
assertNull(test.getCourse(205));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void deleteCourse() {
|
||||||
|
int len = tester.courseList.size();
|
||||||
|
tester.deleteCourse(205);
|
||||||
|
int newLen = test.courseList.size();
|
||||||
|
assertSame(len, newLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addStudent() {
|
||||||
|
// because the course doesn't exist this should return false
|
||||||
|
assertSame(false, test.addStudent(456, "Billy", 717, 89.0f, "B"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getStudentInfo() {
|
||||||
|
assertNotNull(test.getStudentInfo(8888));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void graduateStudent() {
|
||||||
|
// no student should have this id, ergo this should fail
|
||||||
|
assertFalse(tester.graduateStudent(9090));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
13
338/homework4/data1.txt
Normal file
13
338/homework4/data1.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
4
|
||||||
|
100,Y. Byun,ybyun@csumb.edu,111-111-1111
|
||||||
|
200,S. Narayanan,sathya@csumb.edu,222-222-2222
|
||||||
|
300,M. Lara,lara@csumb.edu,333-333-3333
|
||||||
|
250,S. Bude,bude@csumb.edu,444-123-4567
|
||||||
|
3
|
||||||
|
338,CST338 - Software Design,100,BIT 104
|
||||||
|
205,CST205 - Multimedia Design and Programming,200,BIT 118
|
||||||
|
306,CST306 - Game Engine Programming,100,BIT 104
|
||||||
|
3
|
||||||
|
7777,Alice Otter,338,89.50,B
|
||||||
|
8888,Bob Otter,205,75.00,C
|
||||||
|
7777,Alice Otter,306,98.00,A
|
10
338/homework4/data2.txt
Normal file
10
338/homework4/data2.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
2
|
||||||
|
500,G. Bruns,bruns@csumb.edu,555-222-2222
|
||||||
|
300,O. Doe,doe@csumb.edu,444-333-3333
|
||||||
|
1
|
||||||
|
336,CST336 - Internet Programming,300,Library 1010
|
||||||
|
4
|
||||||
|
7777,Alice Otter,205,71.00,C
|
||||||
|
7777,Unknown Otter,205,71.00,C
|
||||||
|
7777,Alice Otter,310,81.55,B
|
||||||
|
9999,John Doe,338,89.50,B
|
8
338/homework4/makefile
Normal file
8
338/homework4/makefile
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
all:
|
||||||
|
javac T1.java Course.java Instructor.java School.java Student.java
|
||||||
|
|
||||||
|
run: all
|
||||||
|
@java T1
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *class
|
31
370/homework/huff.py
Normal file
31
370/homework/huff.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
class Node():
|
||||||
|
def __init__(self, c, weight):
|
||||||
|
self.c = c
|
||||||
|
self.freq = weight
|
||||||
|
self.left = None
|
||||||
|
self.right = None
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'{self.c}|{self.freq}'
|
||||||
|
|
||||||
|
class Huffman:
|
||||||
|
def __init__(self, string):
|
||||||
|
self.heap = []
|
||||||
|
self.charMap = self.charFrequencies(string)
|
||||||
|
|
||||||
|
def charFrequencies(self, string):
|
||||||
|
ret = []
|
||||||
|
for i in string:
|
||||||
|
if i in ret:
|
||||||
|
ret[i] += 1
|
||||||
|
else:
|
||||||
|
ret[i] = 1
|
||||||
|
return ret.sort()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
text = input()
|
||||||
|
binary = input()
|
||||||
|
|
||||||
|
# encode the first given string to build a tree from it
|
||||||
|
huff = Huffman(text)
|
||||||
|
print(huff.charMap)
|
@ -4,14 +4,14 @@ import heapq
|
|||||||
class Node:
|
class Node:
|
||||||
def __init__(self, c, weight):
|
def __init__(self, c, weight):
|
||||||
self.c = c
|
self.c = c
|
||||||
self.weight = weight
|
self.freq = weight
|
||||||
self.left = None
|
self.left = None
|
||||||
self.right = None
|
self.right = None
|
||||||
|
|
||||||
self.code = ''
|
self.code = ''
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f'{self.c}|{self.weight}'
|
return f'{self.c}|{self.freq}'
|
||||||
|
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
return self.weight < other.weight
|
return self.weight < other.weight
|
||||||
@ -27,7 +27,7 @@ def frequencyMap(string):
|
|||||||
# otherwise increment the frequency of that node
|
# otherwise increment the frequency of that node
|
||||||
for k in ret:
|
for k in ret:
|
||||||
if k.c == i:
|
if k.c == i:
|
||||||
k.weight += 1
|
k.freq += 1
|
||||||
|
|
||||||
# Sort the charmap alphabetically
|
# Sort the charmap alphabetically
|
||||||
ret.sort(key=lambda x: x.c)
|
ret.sort(key=lambda x: x.c)
|
||||||
|
Loading…
Reference in New Issue
Block a user