def report(self):
        r = Report()
        r.student = self.student
        r.type_analysis = self.type_analysis
        r.period = self.period
        r.session = self.stud_session
        r.header_table = self.table_header
        r.body_table = self.result
        r.group = self.group
        name = "Студент: " + self.student + "/" + self.type_analysis + "/" + self.group

        if self.type_analysis == "Средняя оценка по итогам сессии":
            control = Control()
            proportional_result: np.ndarray = control.analysis_student_proportional(self.session, self.student, self.stud_session,
                                                                       self.period)
            r.proportional_result = proportional_result

        r.name = name
        list_of_report_object.append(r)
        list_of_report_name.append(name)

        msg = QMessageBox()
        msg.setIcon(QMessageBox.Critical)
        msg.setText("Отчет сформирован")
        msg.setInformativeText('Ваш отчет сформирован.')
        msg.setWindowTitle("Отчет сформирован")
        msg.exec_()
    def analysis(self):
        type_analysis = self.comboBox_2.currentText()

        grade = Grade()
        control = Control()
        if type_analysis == 'Средняя оценка за работы в семестре':
            result: np.ndarray = grade.analysis_group_average_rating_discipline(self.session, self.discipline)
        elif type_analysis == 'Максимальная оценка по итогам работы в семестре':
            result: np.ndarray = grade.analysis_group_rating_semester_discipline(self.session, self.discipline, max=True)
        elif type_analysis == 'Минимальная оценка по итогам работы в семестре':
            result: np.ndarray = grade.analysis_group_rating_semester_discipline(self.session, self.discipline, max=False)
        elif type_analysis == 'Средняя оценка по итогам сессии':
            result: np.ndarray = control.analysis_group_average_rating_discipline(self.session, self.discipline)
        elif type_analysis == 'Максимальная оценка по итогам сессии':
            result: np.ndarray = control.analysis_group_maxmin_discipline(self.session, self.discipline, max=True)
        else:
            result: np.ndarray = control.analysis_group_maxmin_discipline(self.session, self.discipline,max=False)

        self.analytics_table_discipline_group_ui.tableWidget.setColumnCount(2)

        if type_analysis == 'Средняя оценка за работы в семестре':
            table_header = ['Учебная группа', 'Средняя оценка']
        elif type_analysis == 'Максимальная оценка по итогам работы в семестре':
            table_header = ['Учебная группа', 'Максимальная оценка']
        elif type_analysis == 'Минимальная оценка по итогам работы в семестре':
            table_header = ['Учебная группа', 'Минимальная оценка']
        elif type_analysis == 'Средняя оценка по итогам сессии':
            table_header = ['Учебная группа', 'Средняя оценка']
        elif type_analysis == 'Максимальная оценка по итогам сессии':
            table_header = ['Учебная группа', 'Максимальная оценка']
        else:
            table_header = ['Учебная группа', 'Минимальная оценка']

        self.analytics_table_discipline_group_ui.tableWidget.setHorizontalHeaderLabels(table_header)
        self.analytics_table_discipline_group_ui.tableWidget = set_items_to_table(
            self.analytics_table_discipline_group_ui.tableWidget,
            result, DARK_THEME=self.dark_theme)
        self.analytics_table_discipline_group_ui.update(self.dark_theme)
        self.analytics_table_discipline_group_ui.tableWidget.resizeColumnsToContents()

        self.analytics_table_discipline_group_ui.label_6.setText(self.discipline)
        self.analytics_table_discipline_group_ui.label_2.setText(type_analysis)
        self.analytics_table_discipline_group_ui.result = result
        self.analytics_table_discipline_group_ui.discipline = self.discipline
        self.analytics_table_discipline_group_ui.table_header = table_header
        self.analytics_table_discipline_group_ui.type_analysis = type_analysis

        self.choice_discipline_group_window.hide()
        self.analytics_table_discipline_group_window.show()
Пример #3
0
    def show_proportional_chart(self):
        type_diagram = self.pushButton_3.text()
        self.group_diagram_window.hide()
        if type_diagram == "Отобразить диаграмму в пропорциях":

            group = self.label_4.text()
            session = self.label_7.text()
            period = self.label_8.text()

            control = Control()
            result: np.ndarray = control.analysis_group_proportional(
                self.session, group, session, period)

            r_len = len(result)
            set0 = QBarSet('0-24')
            set1 = QBarSet('25-49')
            set2 = QBarSet('50-74')
            set3 = QBarSet('75-100')

            if r_len == 4:
                set0 << int(result[0][1]) << int(result[1][1]) << int(
                    result[2][1]) << int(result[3][1])
                set1 << int(result[0][2]) << int(result[1][2]) << int(
                    result[2][2]) << int(result[3][2])
                set2 << int(result[0][3]) << int(result[1][3]) << int(
                    result[2][3]) << int(result[3][3])
                set3 << int(result[0][4]) << int(result[1][4]) << int(
                    result[2][4]) << int(result[3][4])

            elif r_len == 3:
                set0 << int(result[0][1]) << int(result[1][1]) << int(
                    result[2][1])
                set1 << int(result[0][2]) << int(result[1][2]) << int(
                    result[2][2])
                set2 << int(result[0][3]) << int(result[1][3]) << int(
                    result[2][3])
                set3 << int(result[0][4]) << int(result[1][4]) << int(
                    result[2][4])

            elif r_len == 2:
                set0 << int(result[0][1]) << int(result[1][1])
                set1 << int(result[0][2]) << int(result[1][2])
                set2 << int(result[0][3]) << int(result[1][3])
                set3 << int(result[0][4]) << int(result[1][4])

            else:
                set0 << int(result[0][1])
                set1 << int(result[0][2])
                set2 << int(result[0][3])
                set3 << int(result[0][4])

            cat = []
            for i in result:
                cat.append(i[0])

            series = QPercentBarSeries()
            series.append(set0)
            series.append(set1)
            series.append(set2)
            series.append(set3)

            chart = QChart()
            chart.addSeries(series)
            chart.setAnimationOptions(QChart.SeriesAnimations)

            axis = QBarCategoryAxis()
            axis.append(cat)
            chart.createDefaultAxes()
            chart.setAxisX(axis, series)

            chart.legend().setVisible(True)
            chart.legend().setAlignment(Qt.AlignBottom)
            centralwidget = self.centralwidget
            self.chartview = QChartView(chart, centralwidget)
            self.chartview.setGeometry(QtCore.QRect(10, 110, 880, 371))

        else:
            series = QPieSeries()
            for i in self.data:
                value = str(i[0]) + " / " + str(i[1])
                series.append(value, int(i[1]))

            # adding slice
            slice = QPieSlice()
            slice = series.slices()[0]
            slice.setExploded(True)
            slice.setLabelVisible(True)
            slice.setPen(QPen(Qt.darkGreen, 2))
            slice.setBrush(Qt.green)

            chart = QChart()
            chart.legend().hide()
            chart.addSeries(series)
            chart.createDefaultAxes()
            chart.setAnimationOptions(QChart.SeriesAnimations)

            chart.legend().setVisible(True)
            chart.legend().setAlignment(Qt.AlignBottom)
            centralwidget = self.centralwidget
            self.chartview = QChartView(chart, centralwidget)
            self.chartview.setGeometry(QtCore.QRect(10, 110, 880, 371))

        self.pushButton_3.hide()
        self.group_diagram_window.show()
    def analysis(self):
        group = self.comboBox.currentText()
        type_analysis = self.comboBox_4.currentText()
        period = self.comboBox_3.currentText()
        session = self.comboBox_2.currentText()

        self.analytics_table_group_ui.label_2.setText(group)
        self.analytics_table_group_ui.label_4.setText(type_analysis)
        self.analytics_table_group_ui.label_6.setText(period)
        self.analytics_table_group_ui.label_8.setText(session)

        control = Control()
        if type_analysis == 'Средняя оценка по итогам сессии':
            result: np.ndarray = control.analysis_group(
                self.session, group, session, period)
        elif type_analysis == 'Максимальная оценка по итогам сессии':
            result: np.ndarray = control.analysis_group_maximin(self.session,
                                                                group,
                                                                session,
                                                                period,
                                                                max=True)
        else:
            result: np.ndarray = control.analysis_group_maximin(self.session,
                                                                group,
                                                                session,
                                                                period,
                                                                max=False)

        self.analytics_table_group_ui.result = result
        self.analytics_table_group_ui.tableWidget.setColumnCount(2)

        if type_analysis == 'Средняя оценка по итогам сессии':
            self.analytics_table_group_ui.group_diagram_ui.pushButton_3.setText(
                "Отобразить диаграмму в пропорциях")
        elif type_analysis == 'Максимальная оценка по итогам сессии':
            self.analytics_table_group_ui.group_diagram_ui.pushButton_3.setText(
                "Отобразить диаграмму в круговом виде")
            self.analytics_table_group_ui.group_diagram_ui.pushButton_3.hide()
            self.analytics_table_group_ui.group_diagram_ui.data = result
        else:
            self.analytics_table_group_ui.group_diagram_ui.pushButton_3.setText(
                "Отобразить диаграмму в круговом виде")
            self.analytics_table_group_ui.group_diagram_ui.pushButton_3.hide()
            self.analytics_table_group_ui.group_diagram_ui.data = result

        if type_analysis == 'Средняя оценка по итогам сессии':
            table_header = ['Учебный год', 'Средняя оценка']
        elif type_analysis == 'Максимальная оценка по итогам сессии':
            table_header = ['Учебный год', 'Максимальная оценка']
        else:
            table_header = ['Учебный год', 'Минимальная оценка']

        self.analytics_table_group_ui.tableWidget.setHorizontalHeaderLabels(
            table_header)
        self.analytics_table_group_ui.tableWidget = set_items_to_table(
            self.analytics_table_group_ui.tableWidget,
            result,
            DARK_THEME=self.dark_theme)
        self.analytics_table_group_ui.update(self.dark_theme)
        self.analytics_table_group_ui.tableWidget.resizeColumnsToContents()

        self.analytics_table_group_ui.group = group
        self.analytics_table_group_ui.type_analysis = type_analysis
        self.analytics_table_group_ui.period = period
        self.analytics_table_group_ui.stud_session = session
        self.analytics_table_group_ui.table_header = table_header

        self.group_analytics_window.hide()
        self.analytics_table_group_window.show()
Пример #5
0
    def analysis(self):
        student = self.comboBox.currentText()
        type_analysis = self.comboBox_4.currentText()
        period = self.comboBox_3.currentText()
        session = self.comboBox_2.currentText()

        self.analytics_table_student_ui.label_2.setText(student)
        self.analytics_table_student_ui.label_4.setText(type_analysis)
        self.analytics_table_student_ui.label_6.setText(period)
        self.analytics_table_student_ui.label_8.setText(session)

        control = Control()
        grade = Grade()
        if type_analysis == 'Средняя оценка по итогам сессии':
            result: np.ndarray = control.analysis_student_average_rating(
                self.session, student, session, period)
        elif type_analysis == 'Максимальная оценка по итогам сессии':
            result: np.ndarray = control.analysis_student_rating(self.session,
                                                                 student,
                                                                 session,
                                                                 period,
                                                                 max=True)
        elif type_analysis == 'Минимальная оценка по итогам сессии':
            result: np.ndarray = control.analysis_student_rating(self.session,
                                                                 student,
                                                                 session,
                                                                 period,
                                                                 max=False)
        elif type_analysis == 'Средняя оценка за работы в семестре':
            result: np.ndarray = grade.analysis_student_average_rating(
                self.session, student, session, period)
        elif type_analysis == 'Максимальная оценка по итогам работы в семестре':
            result: np.ndarray = grade.analysis_student_rating_semester(
                self.session, student, session, period, max=True)
        elif type_analysis == 'Минимальная оценка по итогам работы в семестре':
            result: np.ndarray = grade.analysis_student_rating_semester(
                self.session, student, session, period, max=False)
        elif type_analysis == 'Количество сданных работ в семестре':
            result: np.ndarray = grade.analysis_student_number_works(
                self.session, student, session, period)

        self.analytics_table_student_ui.result = result
        if type_analysis == 'Количество сданных работ в семестре':
            self.analytics_table_student_ui.tableWidget.setColumnCount(3)
        else:
            self.analytics_table_student_ui.tableWidget.setColumnCount(2)

        if type_analysis == 'Средняя оценка по итогам сессии':
            table_header = ['Учебный год', 'Средняя оценка']
        elif type_analysis == 'Средняя оценка за работы в семестре':
            table_header = ['Учебный год', 'Средняя оценка']
        elif type_analysis == 'Максимальная оценка по итогам сессии':
            table_header = ['Учебный год', 'Максимальная оценка']
        elif type_analysis == 'Минимальная оценка по итогам сессии':
            table_header = ['Учебный год', 'Минимальная оценка']
        elif type_analysis == 'Максимальная оценка по итогам работы в семестре':
            table_header = ['Учебный год', 'Максимальная оценка']
        elif type_analysis == 'Минимальная оценка по итогам работы в семестре':
            table_header = ['Учебный год', 'Минимальная оценка']
        elif type_analysis == 'Количество сданных работ в семестре':
            table_header = [
                'Учебный год', 'Количество сданных работ', 'Количество работ'
            ]

        if type_analysis == 'Средняя оценка по итогам сессии':
            self.analytics_table_student_ui.student_diagram_ui.pushButton_3.setText(
                "Отобразить диаграмму в пропорциях")
        else:
            self.analytics_table_student_ui.student_diagram_ui.pushButton_3.setText(
                "Отобразить диаграмму в круговом виде")
            self.analytics_table_student_ui.student_diagram_ui.pushButton_3.hide(
            )
            self.analytics_table_student_ui.student_diagram_ui.data = result

        self.analytics_table_student_ui.tableWidget.setHorizontalHeaderLabels(
            table_header)
        self.analytics_table_student_ui.tableWidget = set_items_to_table(
            self.analytics_table_student_ui.tableWidget,
            result,
            DARK_THEME=self.dark_theme)
        self.analytics_table_student_ui.update(self.dark_theme)
        self.analytics_table_student_ui.tableWidget.resizeColumnsToContents()

        self.analytics_table_student_ui.student = student
        self.analytics_table_student_ui.type_analysis = type_analysis
        self.analytics_table_student_ui.period = period
        self.analytics_table_student_ui.stud_session = session
        self.analytics_table_student_ui.table_header = table_header
        self.analytics_table_student_ui.group = self.group
        self.analytics_table_student_ui.result = result

        self.student_analytics_window.hide()

        self.analytics_table_student_window.show()