class Test(unittest.TestCase):
    def setUp(self):
        l=UndoController()
        grd=Grade('FP',1,'arthur',10)
        repo=GradeBase()
        self.ctrl=GradeController(repo,l)
        
        
    def testAddGrade(self):
        grd=Grade('FP',1,'arthur',10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        self.assertEqual(len(self.ctrl.getAll()), 1)
        
        e=self.ctrl.getAll()
        self.assertEqual(e[0].getId(), 1)
        self.assertEqual(e[0].getDiscipline(), 'FP')
        self.assertEqual(e[0].getTeacher(), 'arthur')
        self.assertEqual(e[0].getGrade(), 10)
    def testRemoveGrade(self):
        grd=Grade('FP',1,'arthur',10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        self.assertEqual(len(self.ctrl.getAll()), 1)
        self.ctrl.removeStudent(1, 'FP')
        self.assertEqual(len(self.ctrl.getAll()), 0)
    

    def testUpdateGrade(self):
        grd=Grade('FP',1,'arthur',10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        e=self.ctrl.getAll()
        self.assertEqual(e[0].getId(), 1)
        self.assertEqual(e[0].getDiscipline(), 'FP')
        self.assertEqual(e[0].getTeacher(), 'arthur')
        self.assertEqual(e[0].getGrade(), 10)
        self.ctrl.updateStudent(1, 9, 'art', 'FP')
        l=self.ctrl.getAll()
        self.assertEqual(l[0].getId(), 1)
        self.assertEqual(l[0].getDiscipline(), 'FP')
        self.assertEqual(l[0].getTeacher(), 'art')
        self.assertEqual(l[0].getGrade(), 9)
    def testAverageGrade(self):
        grd=Grade('FP',1,'arthur',10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        grd2=Grade('FPcurs',1,'art',9)
        self.ctrl.addGrade(grd2)
        self.assertEqual(self.ctrl.averageGrade(1), 9.5)
 def setUp(self):
     l=UndoController()
     grd=Grade('FP',1,'arthur',10)
     repo=GradeBase()
     self.ctrl=GradeController(repo,l)
예제 #3
0
fgb = FileGradeBase()
fsb = FileStudentBase()
sb = StudentBase()
db.add(Discipline("FPcurs"))
db.add(Discipline("FPlab"))
db.add(Discipline("FPseminar"))
db.add(Discipline("Logica"))
db.add(Discipline("ASC"))
db.add(Discipline("Algebra"))
db.add(Discipline("Analiza"))
a = input("Press 1 for nonfile or 2 for file.")
if int(a) == 2:
    undoCtrl = UndoController()
    sc = StudentController(fsb, undoCtrl)

    gc = GradeController(fgb, undoCtrl)
    dc = DisciplineController(db)
    sts = StatisticsController(gc, sc, dc)
    ui = UI(gc, sc, dc, undoCtrl, sts)
    ui.mainMenu()

elif int(a) == 1:
    sb.add(Student(1, "Darius"))
    sb.add(Student(2, "Paul"))
    sb.add(Student(3, "Mark"))
    gb.add(Grade("FPcurs", 1, "arthur", 10))

    gb.add(Grade("FPseminar", 2, "iuliana", 10))
    gb.add(Grade("FPlab", 3, "arthur", 10))
    undoCtrl = UndoController()
    sc = StudentController(sb, undoCtrl)
예제 #4
0
 def setUp(self):
     l = UndoController()
     grd = Grade('FP', 1, 'arthur', 10)
     repo = GradeBase()
     self.ctrl = GradeController(repo, l)
예제 #5
0
class Test(unittest.TestCase):
    def setUp(self):
        l = UndoController()
        grd = Grade('FP', 1, 'arthur', 10)
        repo = GradeBase()
        self.ctrl = GradeController(repo, l)

    def testAddGrade(self):
        grd = Grade('FP', 1, 'arthur', 10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        self.assertEqual(len(self.ctrl.getAll()), 1)

        e = self.ctrl.getAll()
        self.assertEqual(e[0].getId(), 1)
        self.assertEqual(e[0].getDiscipline(), 'FP')
        self.assertEqual(e[0].getTeacher(), 'arthur')
        self.assertEqual(e[0].getGrade(), 10)

    def testRemoveGrade(self):
        grd = Grade('FP', 1, 'arthur', 10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        self.assertEqual(len(self.ctrl.getAll()), 1)
        self.ctrl.removeStudent(1, 'FP')
        self.assertEqual(len(self.ctrl.getAll()), 0)

    def testUpdateGrade(self):
        grd = Grade('FP', 1, 'arthur', 10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        e = self.ctrl.getAll()
        self.assertEqual(e[0].getId(), 1)
        self.assertEqual(e[0].getDiscipline(), 'FP')
        self.assertEqual(e[0].getTeacher(), 'arthur')
        self.assertEqual(e[0].getGrade(), 10)
        self.ctrl.updateStudent(1, 9, 'art', 'FP')
        l = self.ctrl.getAll()
        self.assertEqual(l[0].getId(), 1)
        self.assertEqual(l[0].getDiscipline(), 'FP')
        self.assertEqual(l[0].getTeacher(), 'art')
        self.assertEqual(l[0].getGrade(), 9)

    def testAverageGrade(self):
        grd = Grade('FP', 1, 'arthur', 10)
        self.assertEqual(len(self.ctrl.getAll()), 0)
        self.ctrl.addGrade(grd)
        grd2 = Grade('FPcurs', 1, 'art', 9)
        self.ctrl.addGrade(grd2)
        self.assertEqual(self.ctrl.averageGrade(1), 9.5)
예제 #6
0
    def start(self):
        """
        the "main" function
        :return: none
        """
        students_init(l_students)
        discipline_init(l_discipline)
        grade_init(l_grade)
        student_cont = StudentController(l_students, l_grade)
        discipline_cont = DisciplineController(l_discipline, l_grade)
        grade_cont = GradeController(l_students, l_discipline, l_grade)
        while True:
            ok = 1
            Menu()
            try:
                n = int(input("Command:"))
            except ValueError as ve:
                print("Error:", ve)
                break
            if n == 1:
                Menu2()
                try:
                    n2 = int(input())
                except ValueError as ve:
                    print("Error:", ve)
                    break
                if n2 == 1:
                    adding(n2, l_students, l_discipline, l_undo)
                elif n2 == 2:
                    adding(n2, l_students, l_discipline, l_undo)
                elif n2 == 3:
                    adding_gr(l_grade, l_students, l_discipline, l_undo)
            elif n == 2:
                Menu3()
                try:
                    n = int(input())
                except ValueError as ve:
                    print("Error:", ve)
                    break
                if n == 1:
                    print("Remove Student ID:")
                    try:
                        id2 = int(input())
                    except ValueError as ve:
                        print("ID not good")
                        ok = -1
                    if ok == 1:
                        l_undo.register_operation(
                            "removing", "student", id2,
                            l_students.find_student(id2).get_name())
                        student_cont.removing_student(id2)
                if n == 2:
                    print("Remove Discipline ID:")
                    try:
                        id2 = int(input())
                    except ValueError as ve:
                        print("ID not good")
                        ok = -1
                    if ok == 1:
                        l_undo.register_operation(
                            "removing", "discipline", id2,
                            l_discipline.find_discipline(id2).get_name())
                        discipline_cont.removing_discipline(id2)

            elif n == 3:
                Menu3()
                try:
                    n2 = int(input())
                except ValueError as ve:
                    print("Error:", ve)
                    break
                if n2 == 1:
                    try:
                        id2 = int(input("Student ID to be updated: "))
                        new_id = int(input("New Student ID:"))
                    except ValueError as ve:
                        print("ID not good", ve)
                        ok = -1
                    if ok == 1 and l_students.checking_exist_id(id2) == 1:
                        new_name = input("New Student name:")
                        if l_students.checking_exist_id(new_id) == -1:
                            l_undo.register_operation(
                                "updating", "student", id2,
                                l_students.find_student(id2).get_name(),
                                new_id, new_name)
                            l_students.updating(id2, new_id, new_name)
                        else:
                            print("ID already in use")
                elif n2 == 2:
                    try:
                        id2 = int(input("Discipline ID to be updated: "))
                        new_id = int(input("New Discipline ID:"))
                    except ValueError as ve:
                        print("ID not good")
                        ok = -1
                    if ok == 1 and l_discipline.checking_exist_id(id2) == 1:
                        new_name = input("New Discipline name:")
                        if l_discipline.checking_exist_id(new_id) == -1:
                            l_undo.register_operation(
                                "updating", "discipline", id2,
                                l_discipline.find_discipline(id2).get_name(),
                                new_id, new_name)
                            l_discipline.updating(id2, new_id, new_name)
                        else:
                            print("ID already in use")
            elif n == 4:
                Menu2()
                try:
                    n2 = int(input())
                except ValueError as ve:
                    print("Error:", ve)
                    break
                if n2 == 1:
                    l_students.printing()
                elif n2 == 2:
                    l_discipline.printing()
                elif n2 == 3:
                    l_grade.printing()
            elif n == 5:
                Menu3()
                try:
                    n2 = int(input())
                except ValueError as ve:
                    print("Error:", ve)
                    break
                Menu4()
                try:
                    n3 = int(input())
                except ValueError as ve:
                    print("Error:", ve)
                    break
                if n3 == 2:
                    if n2 == 1:
                        name = input("Nume: ")
                        if l_students.search_student(name) != -1:
                            pass
                        else:
                            print("Student not found")
                    elif n2 == 2:
                        name = input("Nume: ")
                        if l_discipline.search_discipline(name) != -1:
                            pass
                        else:
                            print("Discipline not found")
                elif n3 == 1:
                    if n2 == 1:
                        try:
                            id2 = int(input("ID: "))
                        except ValueError as ve:
                            print("Invalid ID", ve)
                            break
                        if l_students.find_student(id2) != -1:
                            st = l_students.find_student(id2)
                            print(st.__str__())
                    if n2 == 2:
                        try:
                            id2 = int(input("ID: "))
                        except ValueError as ve:
                            print("Invalid ID", ve)
                            break
                        if l_discipline.find_discipline(id2) != -1:
                            di = l_discipline.find_discipline(id2)
                            print(di.__str__())

                else:
                    print("Command not found")
                    break
            elif n == 6:
                Menu5()
                try:
                    n2 = int(input("Statistics number:\n"))
                except ValueError as ve:
                    print("Invalid", ve)
                    break
                if n2 == 1:
                    name = input("Name of Discipline:")
                    id2 = l_discipline.find_by_name(name)
                    if id2 == -1:
                        print("Discipline doesn't exists")
                    else:
                        try:
                            n3 = int(
                                input(
                                    "1.Alphabetically\n2.Descending average grades\nOption:"
                                ))
                        except ValueError as ve:
                            print("Invalid", ve)
                            break
                        if n3 == 1:
                            grade_cont.students_at_discipline_alpha(id2, name)
                        elif n3 == 2:
                            grade_cont.students_at_discipline_avg(id2, name)
                if n2 == 2:
                    grade_cont.students_failing()
                if n2 == 3:
                    student_cont.best_students()
                if n2 == 4:
                    discipline_cont.disciplines_in_order()
            elif n == 7:
                l_undo_cont = UndoController(l_undo, l_students, l_discipline,
                                             l_grade, l_redo)
                for i, j in enumerate(l_undo.operations()):
                    print(l_undo.operations()[i].get_method())
                    print(l_undo.operations()[i].get_type())
                    print(l_undo.operations()[i].get_args())
                l_undo_cont.check_emptyness()
                l_undo_cont.undo_add_student()
                l_undo_cont.undo_add_discipline()
                l_undo_cont.undo_add_grade()
                l_undo_cont.undo_remove_student()
                l_undo_cont.undo_remove_discipline()
                l_undo_cont.undo_update_student()
                l_undo_cont.undo_update_discipline()
                if len(l_undo.operations()) > 0:
                    l_undo.operations().pop()

            elif n == 8:
                l_redo_cont = RedoController(l_undo, l_students, l_discipline,
                                             l_grade, l_redo)
                for i, j in enumerate(l_redo.operations()):
                    print(l_redo.operations()[i].get_method())
                    print(l_redo.operations()[i].get_type())
                    print(l_redo.operations()[i].get_args())
                l_redo_cont.check_emptyness()
                l_redo_cont.redo_add_student()
                l_redo_cont.redo_add_discipline()
                l_redo_cont.redo_add_grade()
                l_redo_cont.redo_remove_student()
                l_redo_cont.redo_remove_discipline()
                l_redo_cont.redo_update_student()
                l_redo_cont.redo_update_discipline()
                if len(l_redo.operations()) > 0:
                    l_redo.operations().pop()
            else:
                print("Exiting...")
                break
예제 #7
0
from Domain import Student, Grades
from Repository import StudentRepo, GradeRepo
from Controller import StudentController, GradeController
from Ui import Console

# Create the repositories
studentRepo = StudentRepo('students', Student.write_student,
                          Student.read_student)
gradeRepo = GradeRepo('grades', Grades.write_grades, Grades.read_grades)

# Create the controllers
studenController = StudentController(studentRepo)
gradeController = GradeController(gradeRepo, studentRepo)

# Create the console
console = Console(studenController, gradeController)

console.run()