def removeAssignToStudent(self, assignmentID, studentID): ''' A function that removes a certain assignment that has been assigned to a student, to be used in the undo part. ''' assignment = self.__repoAssignments.searchByID(assignmentID) student = self.__repoStudents.searchByID(studentID) self.__repoGrades.remove(Grade(assignment, student))
def unGradeStudent(self, assignmentID, studentID): ''' A function that un-grades a student, to be used in the undo part. ''' assignment = self.__repoAssignments.searchByID(assignmentID) student = self.__repoStudents.searchByID(studentID) self.__repoGrades.update(Grade(assignment, student, -1))
def add_grade(self): while True: if self.school.school_grade: for key in self.school.school_grade: grade_obj = self.school.school_grade[key] grade_obj.cat_grade() if_cont = input('是否创建班级[y/b]:').strip() if if_cont == 'y': grade_name = input('\033[34;1m输入班级名:\033[0m').strip() course_name = input('\033[34;1m输入班级要上的课程:\033[0m').strip() if course_name in self.school.school_course: course_obj = self.school.school_course[course_name] if grade_name not in self.school.school_grade: grade = Grade(grade_name, course_obj) if self.school.school_teacher: for key in self.school.school_teacher: self.teacher = self.school.school_teacher[key] if self.teacher.course_obj.course_name == grade.course_obj.course_name: self.teacher.add_grade(grade_name, grade) data = { self.teacher.teacher_name: self.teacher } file_oper(teacher_db_file, 'wb', data) self.school.create_grade(grade_name, grade) self.school_db[self.school_name] = self.school file_oper(main_db_file, 'wb', self.school_db) else: print('\033[31;1m讲师信息不存在,请先招聘讲师.\033[0m') else: print('\033[31;1m班级信息已存在。\033[0m') else: print('\033[31;1m错误:课程不存在,请先创建课程.\033[0m') elif if_cont == 'b': break
def assign(self, group, assignmentID): for student in self.__repositoryStudent.getList(): if student.getGroup() == group: grade = Grade(student.getID(), assignmentID, "not assigned") if self.checkGradeBool(grade) == False: self.__repositoryGrade.appendToList(grade) print(str(grade) + " added")
def assignToStudent(self, assignmentID, studentID): ''' in: assignmentID - assignmentID studentID - studentID out: - raises: repoError in case the element doesn't exist validError in case the input is invalid ''' students = self.__repoStudents.getAll() for student in students: if student.getID() == studentID: assignment = self.__repoAssignments.searchByID(assignmentID) grade = Grade(assignment, student) self.__validatorGrades.validateGrade(grade) self.__repoGrades.add(grade)
def __readGrades(self): ''' Class method that reads the grades from the text file ''' file = open(self.__fileName, "r") content = file.readlines() grades = IterableStructure() for line in content: line.strip() line = line.replace('\n', '') line = line.split(';') student = self.__fileRepoStudents.searchByID(int(line[1])) assignment = self.__fileRepoAssignments.searchByID(int(line[0])) grades.append(Grade(assignment, student, float(line[2]))) file.close() return grades
def getRandomGrade(self): studentNumber = random.randint( 0, len(self.__repositoryStudent.getList()) - 1) studentID = self.__repositoryStudent.getItemOnPosition( studentNumber).getID() assignmentNumber = random.randint( 0, len(self.__repositoryAssignment.getList()) - 1) assignmentID = self.__repositoryAssignment.getItemOnPosition( assignmentNumber).getID() grade = random.randint(1, 14) if grade > 10: grade = "not assigned" return Grade(studentID, assignmentID, grade)
def assignToGroup(self, assignmentID, group): ''' in: assignmentID - assignmentID group - the group to which we wish to assign out: - raises: repoError in case the element doesn't exist validError in case the input is invalid ''' students = self.__repoStudents.getAll() ok = False for student in students: if student.getGroup() == group: try: assignment = self.__repoAssignments.searchByID( assignmentID) grade = Grade(assignment, student) self.__validatorGrades.validateGrade(grade) self.__repoGrades.add(grade) ok = True except RepoError as re: if ok == False: raise RepoError(re)
def gradeStudent(self, assignmentID, studentID, GradeValue): ''' class function for giving a grade in: assignmentID - assignment id studentID - student id GradeValue - grade to be given out: - raises: repoError in case the element doesn't exist validError in case the input is invalid ''' assignment = self.__repoAssignments.searchByID(assignmentID) student = self.__repoStudents.searchByID(studentID) gradeToAdd = Grade(assignment, student, GradeValue) self.__validatorGrades.validateGrade(gradeToAdd) grades = self.__repoGrades.getAll() if gradeToAdd not in grades: raise RepoError( "The student hasn't been assigned this assignment yet.") for grade in grades: if grade == gradeToAdd and grade.getGrade() == -1: self.__repoGrades.update(gradeToAdd) return raise RepoError("Assignment for the student has already been graded.")
def inputGrade(self): grade = input("Give grade (student ID, assignment ID, grade): ") grade = grade.split(None, 2) if len(grade) != 3: raise ConsoleError return Grade(grade[0], grade[1], grade[2])