Created
June 4, 2015 07:19
-
-
Save rm77/b05651ba2a41d3d37b36 to your computer and use it in GitHub Desktop.
course sequence
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import copy | |
class Course: | |
def __init__(self,course_id,course_title,course_price,course_level_begin,course_level_end): | |
self.course_id = course_id | |
self.course_title = course_title | |
self.course_price = course_price | |
self.reputation = 0 | |
self.school = '' | |
self.course_pre = 0 | |
self.course_post = 0 | |
self.course_level_begin=course_level_begin | |
self.course_level_end=course_level_end | |
def set_course_level(self,course_level_begin,course_level_end): | |
self.course_level_begin = course_level_begin | |
self.course_level_end = course_level_end | |
def get_course_level_begin(self): | |
return self.course_level_begin | |
def get_course_level_end(self): | |
return self.course_level_end | |
def get_id(self): | |
return self.course_id | |
def get_course_title(self): | |
return self.course_title | |
def set_course_title(self,course_title): | |
self.course_title = course_title | |
def set_price(self,price): | |
self.course_price = price | |
def get_price(self): | |
return self.course_price | |
class Seller: | |
def __init__(self, name): | |
self.name = name | |
self.reputation = 0 | |
self.courses = [] | |
def add_course(self, course_instance): | |
self.courses.append(course_instance) | |
def set_reputation(self,rep): | |
self.reputation = rep | |
def get_reputation(self): | |
return self.reputation | |
class Student: | |
def __init__(self,name,initial_level,target_level,initial_budget, condition): | |
self.name = name | |
self.level = initial_level | |
self.target_level = target_level | |
self.budget = initial_budget | |
self.condition = condition | |
self.course_catalog = 0 | |
def get_name(self): | |
return self.name | |
def get_target_level(self): | |
return self.target_level | |
def set_current_level(self,level): | |
self.level = level | |
def get_current_level(self): | |
return self.level | |
def set_budget(self,budget): | |
self.budget = budget | |
def get_current_budget(self): | |
return self.budget | |
class CourseSequence: | |
def __init__(self,course_instance_list,student_instance): | |
self.courses = course_instance_list | |
self.student = student_instance | |
def get_student(self): | |
return self.student | |
def get_total_price(self): | |
total = 0 | |
for x in self.courses: | |
total = total+ x.get_price() | |
return total | |
def is_payable(self): | |
return (self.get_total_price() <= self.student.get_current_budget()) | |
def is_valid(self): | |
#print "---MULAI--" | |
student_target_level = self.student.get_target_level() | |
student_initial_level = self.student.get_current_level() | |
course_initial_level = self.courses[0].get_course_level_begin() | |
rule_1 = (student_initial_level == course_initial_level) | |
#print "---" | |
cl_rev = copy.copy(self.courses) | |
cl_rev.reverse() | |
kondisi = True | |
sebelum = cl_rev[0].get_course_level_end() | |
for x in cl_rev: | |
#print "nama {} kondisi {} sebelum {} ending {}" . format(x.get_course_title(),kondisi, sebelum, x.get_course_level_end()) | |
kondisi = kondisi and (x.get_course_level_end()>=sebelum) | |
#print "beginning {}" . format(x.get_course_level_begin()) | |
sebelum = x.get_course_level_begin() | |
rule_2 = (student_initial_level <= sebelum) and (kondisi==True) | |
kondisi_2 = kondisi | |
#print "----" | |
kondisi = True | |
sesudah = self.courses[0].get_course_level_begin() | |
for x in self.courses: | |
#print "nama {} kondisi{} sesudah{} beginning{}" . format(x.get_course_title(),kondisi, sesudah, x.get_course_level_begin()) | |
kondisi = kondisi and (x.get_course_level_begin()<=sesudah) | |
#print "ending {}" . format(x.get_course_level_end()) | |
sesudah = x.get_course_level_end() | |
rule_3 = (student_target_level >= sesudah) and (kondisi==True) | |
kondisi_3 = kondisi | |
#print "rule 1 {} rule 2 {} rule 3 {} kondisi_2 {} kondisi_3 {}" . format(rule_1, rule_2, rule_3,kondisi_2,kondisi_3) | |
#print "---SELESAI--" | |
return ((rule_1 and rule_2 and rule_3)==True) | |
if __name__=='__main__': | |
A = Course('A','Course A',500,1,3) | |
B = Course('B','Course B',20,3,7) | |
C = Course('C','Course C',400,1,10) | |
D = Course('D','Course D',20,1,5) | |
E = Course('E','Course E',200,5,10) | |
studentB = Student('Student B',1,10,1000,[]) | |
CS1 = CourseSequence([A,B,C],studentB) | |
print "Hi {}" . format(CS1.get_student().get_name()) | |
print "Total Price for this sequence {}" . format(CS1.get_total_price()) | |
print "Student can pay ? {}" . format(CS1.is_payable()) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment