HW2_SUMMER

py

School

Pennsylvania State University *

*We aren’t endorsed by this school

Course

132

Subject

Computer Science

Date

Feb 20, 2024

Type

py

Pages

10

Uploaded by MateWasp883

Report
import random class Course: ''' >>> c1 = Course('CMPSC132', 'Programming in Python II', 3) >>> c2 = Course('CMPSC360', 'Discrete Mathematics', 3) >>> c1 == c2 False >>> c3 = Course('CMPSC132', 'Programming in Python II', 3) >>> c1 == c3 True >>> c1 CMPSC132(3): Programming in Python II >>> c2 CMPSC360(3): Discrete Mathematics >>> c3 CMPSC132(3): Programming in Python II >>> c1 == None False >>> print(c1) CMPSC132(3): Programming in Python II ''' #Constructor def __init__(self, cid, cname, credits): self.cid = cid self.cname = cname self.credits = credits pass # Method to return string display def __str__(self): return f"{self.cid}({self.credits}): {self.cname}" pass __repr__ = __str__ #To see for equality def __eq__(self, other): if(other is None): return False if(self.cid==other.cid): return True else: return False def isValid(self): if(type(self.cid)==str and type(self.cname)==str and type(self.credits)==int): return True else: return False class Catalog: ''' >>> C = Catalog() >>> C.courseOfferings {} >>> C._loadCatalog("cmpsc_catalog_small.csv") >>> C.courseOfferings {'CMPSC 132': CMPSC 132(3): Programming and Computation II, 'MATH 230':
MATH 230(4): Calculus and Vector Analysis, 'PHYS 213': PHYS 213(2): General Physics, 'CMPEN 270': CMPEN 270(4): Digital Design, 'CMPSC 311': CMPSC 311(3): Introduction to Systems Programming, 'CMPSC 360': CMPSC 360(3): Discrete Mathematics for Computer Science} >>> C.removeCourse('CMPSC 360') 'Course removed successfully' >>> C.courseOfferings {'CMPSC 132': CMPSC 132(3): Programming and Computation II, 'MATH 230': MATH 230(4): Calculus and Vector Analysis, 'PHYS 213': PHYS 213(2): General Physics, 'CMPEN 270': CMPEN 270(4): Digital Design, 'CMPSC 311': CMPSC 311(3): Introduction to Systems Programming} >>> isinstance(C.courseOfferings['CMPSC 132'], Course) True ''' def __init__(self): self.courseOfferings = {} pass def addCourse(self, cid, cname, credits): if cid not in self.courseOfferings: self.courseOfferings[cid] = (Course(cid,cname,credits)) return "Course added successfully" else: return "Course already added" pass def removeCourse(self, cid): if cid not in self.courseOfferings: return "Course not found" else: del self.courseOfferings[cid] return "Course removed successfully" pass def _loadCatalog(self, file): with open(file, "r") as f: course_info = f.read() lst=course_info.split("\n") for i in lst: i = i.split(',') self.cid = i[0] self.cname = i[1] self.credits = i[2] self.courseOfferings[i[0]] = (Course(self.cid,self.cname,self.credits)) class Semester: ''' >>> cmpsc131 = Course('CMPSC 131', 'Programming in Python I', 3) >>> cmpsc132 = Course('CMPSC 132', 'Programming in Python II', 3) >>> math230 = Course("MATH 230", 'Calculus', 4) >>> phys213 = Course("PHYS 213", 'General Physics', 2) >>> econ102 = Course("ECON 102", 'Intro to Economics', 3) >>> phil119 = Course("PHIL 119", 'Ethical Leadership', 3) >>> spr22 = Semester() >>> spr22 No courses >>> spr22.addCourse(cmpsc132) >>> isinstance(spr22.courses['CMPSC 132'], Course) True
>>> spr22.addCourse(math230) >>> spr22 CMPSC 132; MATH 230 >>> spr22.isFullTime False >>> spr22.totalCredits 7 >>> spr22.addCourse(phys213) >>> spr22.addCourse(econ102) >>> spr22.addCourse(econ102) 'Course already added' >>> spr22.addCourse(phil119) >>> spr22.isFullTime True >>> spr22.dropCourse(phil119) >>> spr22.addCourse(Course("JAPNS 001", 'Japanese I', 4)) >>> spr22.totalCredits 16 >>> spr22.dropCourse(cmpsc131) 'No such course' >>> spr22.courses {'CMPSC 132': CMPSC 132(3): Programming in Python II, 'MATH 230': MATH 230(4): Calculus, 'PHYS 213': PHYS 213(2): General Physics, 'ECON 102': ECON 102(3): Intro to Economics, 'JAPNS 001': JAPNS 001(4): Japanese I} ''' def __init__(self): self.courses = {} pass #To convert into string def __str__(self): if len(self.courses)!=0: self.l1=list(self.courses.keys()) return ('; '.join(self.l1)) else: return "No courses" pass __repr__ = __str__ def addCourse(self, course): if course.cid not in self.courses: self.courses[course.cid]=(course) else: return "Course already added" pass def dropCourse(self, course): if course.cid in self.courses: self.courses.pop(course.cid) else: return "No such course" pass @property def totalCredits(self): totalcredits = 0
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help
for course in self.courses: totalcredits += self.courses[course].credits return totalcredits pass @property def isFullTime(self): return (self.totalCredits>=12) pass class Loan: ''' >>> import random >>> random.seed(2) # Setting seed to a fixed value, so you can predict what numbers the random module will generate >>> first_loan = Loan(4000) >>> first_loan Balance: $4000 >>> first_loan.loan_id 17412 >>> second_loan = Loan(6000) >>> second_loan.amount 6000 >>> second_loan.loan_id 22004 >>> third_loan = Loan(1000) >>> third_loan.loan_id 21124 ''' def __init__(self, amount): self.amount = amount self.loan_id = self.__getloanID pass def __str__(self): return f"Balance: ${self.amount}" pass __repr__ = __str__ @property def __getloanID(self): return random.randint(10000, 99999) pass class Person: ''' >>> p1 = Person('Jason Lee', '204-99-2890') >>> p2 = Person('Karen Lee', '247-01-2670') >>> p1 Person(Jason Lee, ***-**-2890) >>> p2
Person(Karen Lee, ***-**-2670) >>> p3 = Person('Karen Smith', '247-01-2670') >>> p3 Person(Karen Smith, ***-**-2670) >>> p2 == p3 True >>> p1 == p2 False ''' def __init__(self, name, ssn): self.name = name self.ssn = ssn pass def __str__(self): return f"Person({self.name}, ***-**-{self.ssn[7:]})" pass __repr__ = __str__ def get_ssn(self): return self.ssn pass def __eq__(self, other): if(self.get_ssn()!=other.get_ssn()): return False else: return True pass class Staff(Person): ''' >>> C = Catalog() >>> C._loadCatalog("cmpsc_catalog_small.csv") >>> s1 = Staff('Jane Doe', '214-49-2890') >>> s1.getSupervisor >>> s2 = Staff('John Doe', '614-49-6590', s1) >>> s2.getSupervisor Staff(Jane Doe, 905jd2890) >>> s1 == s2 False >>> s2.id '905jd6590' >>> p = Person('Jason Smith', '221-11-2629') >>> st1 = s1.createStudent(p) >>> isinstance(st1, Student) True >>> s2.applyHold(st1) 'Completed!' >>> st1.registerSemester() 'Unsuccessful operation' >>> s2.removeHold(st1) 'Completed!' >>> st1.registerSemester() >>> st1.enrollCourse('CMPSC 132', C) 'Course added successfully' >>> st1.semesters
{1: CMPSC 132} >>> s1.applyHold(st1) 'Completed!' >>> st1.enrollCourse('CMPSC 360', C) 'Unsuccessful operation' >>> st1.semesters {1: CMPSC 132} ''' def __init__(self, name, ssn, supervisor=None): self.supervisor = supervisor super().__init__(name, ssn) a = Person(name, ssn) self.ssn = a.get_ssn() pass def __str__(self): return f"Staff({self.name}, {self.id})" pass __repr__ = __str__ @property def id(self): return "905" + self.name.split()[0][0].lower() + self.name.split()[1] [0].lower() + self.get_ssn()[-4:] @property def getSupervisor(self): return self.supervisor pass def setSupervisor(self, new_supervisor): if(type(new_supervisor)!="Staff"): return None else: self.supervisor = new_supervisor return "Completed!" pass def applyHold(self, student): if(not isinstance(student,Student)): return None else: student.hold = True return "Completed!" pass def removeHold(self, student): if(not isinstance(student,Student)): return None else: student.hold = False return "Completed!" pass def unenrollStudent(self, student):
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help
if(not isinstance(student,Student)): return None else: student.active = False return "Completed!" def createStudent(self, person): return Student(person.name, person.get_ssn(), "Freshman") pass class Student(Person): ''' >>> C = Catalog() >>> C._loadCatalog("cmpsc_catalog_small.csv") >>> s1 = Student('Jason Lee', '204-99-2890', 'Freshman') >>> s1 Student(Jason Lee, jl2890, Freshman) >>> s2 = Student('Karen Lee', '247-01-2670', 'Freshman') >>> s2 Student(Karen Lee, kl2670, Freshman) >>> s1 == s2 False >>> s1.id 'jl2890' >>> s2.id 'kl2670' >>> s1.registerSemester() >>> s1.enrollCourse('CMPSC 132', C) 'Course added successfully' >>> s1.semesters {1: CMPSC 132} >>> s1.enrollCourse('CMPSC 360', C) 'Course added successfully' >>> s1.enrollCourse('CMPSC 465', C) 'Course not found' >>> s1.semesters {1: CMPSC 132; CMPSC 360} >>> s2.semesters {} >>> s1.enrollCourse('CMPSC 132', C) 'Course already enrolled' >>> s1.dropCourse('CMPSC 360') 'Course dropped successfully' >>> s1.dropCourse('CMPSC 360') 'Course not found' >>> s1.semesters {1: CMPSC 132} >>> s1.registerSemester() >>> s1.semesters {1: CMPSC 132, 2: No courses} >>> s1.enrollCourse('CMPSC 360', C) 'Course added successfully' >>> s1.semesters {1: CMPSC 132, 2: CMPSC 360} >>> s1.registerSemester() >>> s1.semesters {1: CMPSC 132, 2: CMPSC 360, 3: No courses} >>> s1 Student(Jason Lee, jl2890, Sophomore)
''' def __init__(self, name, ssn, year): random.seed(1) super().__init__(name, ssn) a = Person(name, ssn) self.ssn = a.get_ssn() self.year = year self.semesters = {} self.hold = False self.active = True self.account = self.__createStudentAccount() pass def __str__(self): return f"Student({self.name}, {self.id}, {self.year})" pass __repr__ = __str__ def __createStudentAccount(self): if self.active==False: return None return StudentAccount(self) pass @property def id(self): return self.name.split()[0][0].lower() + self.name.split()[1][0].lower() + self.get_ssn()[-4:] pass def registerSemester(self): # YOUR CODE STARTS HERE pass def enrollCourse(self, cid, catalog): # YOUR CODE STARTS HERE pass def dropCourse(self, cid): # YOUR CODE STARTS HERE pass def getLoan(self, amount): # YOUR CODE STARTS HERE pass class StudentAccount: ''' >>> C = Catalog() >>> C._loadCatalog("cmpsc_catalog_small.csv") >>> s1 = Student('Jason Lee', '204-99-2890', 'Freshman') >>> s1.registerSemester() >>> s1.enrollCourse('CMPSC 132', C)
'Course added successfully' >>> s1.account.balance 3000 >>> s1.enrollCourse('CMPSC 360', C) 'Course added successfully' >>> s1.account.balance 6000 >>> s1.enrollCourse('MATH 230', C) 'Course added successfully' >>> s1.enrollCourse('PHYS 213', C) 'Course added successfully' >>> print(s1.account) Name: Jason Lee ID: jl2890 Balance: $12000 >>> s1.account.chargeAccount(100) 12100 >>> s1.account.balance 12100 >>> s1.account.makePayment(200) 11900 >>> s1.getLoan(4000) >>> s1.account.balance 7900 >>> s1.getLoan(8000) >>> s1.account.balance -100 >>> s1.enrollCourse('CMPEN 270', C) 'Course added successfully' >>> s1.account.balance 3900 >>> s1.dropCourse('CMPEN 270') 'Course dropped successfully' >>> s1.account.balance 1900.0 >>> s1.account.loans {27611: Balance: $4000, 84606: Balance: $8000} >>> StudentAccount.CREDIT_PRICE = 1500 >>> s2 = Student('Thomas Wang', '123-45-6789', 'Freshman') >>> s2.registerSemester() >>> s2.enrollCourse('CMPSC 132', C) 'Course added successfully' >>> s2.account.balance 4500 >>> s1.enrollCourse('CMPEN 270', C) 'Course added successfully' >>> s1.account.balance 7900.0 ''' # Constructor CREDIT_PRICE = 1000 def __init__(self, student): self.student = student self.balance = 0 self.loans = {} pass # Method to return string display def __str__(self):
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help
return "Name: "+self.student.name+"\n"+"ID: "+self.student.id+"\ n"+"Balance: $"+str(self.balance) pass __repr__ = __str__ def makePayment(self, amount): self.balance-=amount return self.balance pass def chargeAccount(self, amount): self.balance+=amount return self.balance pass if __name__=='__main__': import doctest doctest.testmod()