Esempio n. 1
0
 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))
Esempio n. 2
0
 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))
Esempio n. 3
0
    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
Esempio n. 4
0
 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")
Esempio n. 5
0
 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)
Esempio n. 6
0
 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
Esempio n. 7
0
    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)
Esempio n. 8
0
 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)
Esempio n. 9
0
 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])