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()
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()
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()