diff --git a/工具v4/Ui_tool_panel.py b/工具v4/Ui_tool_panel.py index 200ea689..7a495d49 100644 --- a/工具v4/Ui_tool_panel.py +++ b/工具v4/Ui_tool_panel.py @@ -114,6 +114,9 @@ class Ui_MainWindow(object): self.tab_jysc = QWidget() self.tab_jysc.setObjectName(u"tab_jysc") self.tabWidget_beikezu.addTab(self.tab_jysc, "") + self.tab_fnsc = QWidget() + self.tab_fnsc.setObjectName(u"tab_fnsc") + self.tabWidget_beikezu.addTab(self.tab_fnsc, "") self.tabWidget_main.addTab(self.tab_beikezu, "") self.tab_latex = QWidget() self.tab_latex.setObjectName(u"tab_latex") @@ -205,11 +208,11 @@ class Ui_MainWindow(object): self.retranslateUi(MainWindow) - self.tabWidget_main.setCurrentIndex(2) + self.tabWidget_main.setCurrentIndex(3) self.tabWidget_luru.setCurrentIndex(0) self.tabWidget_weihu.setCurrentIndex(0) self.tabWidget_shiyong.setCurrentIndex(5) - self.tabWidget_beikezu.setCurrentIndex(0) + self.tabWidget_beikezu.setCurrentIndex(3) self.tabWidget_latex.setCurrentIndex(0) self.tabWidget_mubiaojichu.setCurrentIndex(0) self.tabWidget_syjl.setCurrentIndex(0) @@ -239,6 +242,7 @@ class Ui_MainWindow(object): self.tabWidget_beikezu.setTabText(self.tabWidget_beikezu.indexOf(self.tab_jglr), QCoreApplication.translate("MainWindow", u"\u8bb2\u4e49\u7ed3\u6784\u7f16\u53f7\u5f55\u5165", None)) self.tabWidget_beikezu.setTabText(self.tabWidget_beikezu.indexOf(self.tab_dtlr), QCoreApplication.translate("MainWindow", u"\u7b54\u9898\u7eb8\u5bf9\u5e94\u4fe1\u606f\u5f55\u5165", None)) self.tabWidget_beikezu.setTabText(self.tabWidget_beikezu.indexOf(self.tab_jysc), QCoreApplication.translate("MainWindow", u"\u7cfb\u5217\u8bb2\u4e49\u751f\u6210", None)) + self.tabWidget_beikezu.setTabText(self.tabWidget_beikezu.indexOf(self.tab_fnsc), QCoreApplication.translate("MainWindow", u"\u8d4b\u80fd\u5377\u751f\u6210", None)) self.tabWidget_main.setTabText(self.tabWidget_main.indexOf(self.tab_beikezu), QCoreApplication.translate("MainWindow", u"\u5907\u8bfe\u7ec4", None)) self.tabWidget_latex.setTabText(self.tabWidget_latex.indexOf(self.tab_wbzh), QCoreApplication.translate("MainWindow", u"\u6587\u672c\u8f6c\u6362\u5904\u7406", None)) self.tabWidget_latex.setTabText(self.tabWidget_latex.indexOf(self.tab_hist), QCoreApplication.translate("MainWindow", u"\u76f4\u65b9\u56fe\u4ee3\u7801\u751f\u6210", None)) diff --git a/工具v4/Ui_赋能卷生成.py b/工具v4/Ui_赋能卷生成.py new file mode 100644 index 00000000..c65a2e21 --- /dev/null +++ b/工具v4/Ui_赋能卷生成.py @@ -0,0 +1,252 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file '赋能卷生成.ui' +## +## Created by: Qt User Interface Compiler version 6.6.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QApplication, QCheckBox, QHBoxLayout, QLabel, + QLineEdit, QPlainTextEdit, QPushButton, QRadioButton, + QSizePolicy, QVBoxLayout, QWidget) + +class Ui_Form(object): + def setupUi(self, Form): + if not Form.objectName(): + Form.setObjectName(u"Form") + Form.resize(760, 490) + self.verticalLayoutWidget = QWidget(Form) + self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget") + self.verticalLayoutWidget.setGeometry(QRect(20, 70, 161, 301)) + self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget) + self.verticalLayout.setObjectName(u"verticalLayout") + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.checkBox_unit1 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit1.setObjectName(u"checkBox_unit1") + + self.verticalLayout.addWidget(self.checkBox_unit1) + + self.checkBox_unit2 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit2.setObjectName(u"checkBox_unit2") + + self.verticalLayout.addWidget(self.checkBox_unit2) + + self.checkBox_unit3 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit3.setObjectName(u"checkBox_unit3") + + self.verticalLayout.addWidget(self.checkBox_unit3) + + self.checkBox_unit4 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit4.setObjectName(u"checkBox_unit4") + + self.verticalLayout.addWidget(self.checkBox_unit4) + + self.checkBox_unit5 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit5.setObjectName(u"checkBox_unit5") + + self.verticalLayout.addWidget(self.checkBox_unit5) + + self.checkBox_unit6 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit6.setObjectName(u"checkBox_unit6") + + self.verticalLayout.addWidget(self.checkBox_unit6) + + self.checkBox_unit7 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit7.setObjectName(u"checkBox_unit7") + + self.verticalLayout.addWidget(self.checkBox_unit7) + + self.checkBox_unit8 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit8.setObjectName(u"checkBox_unit8") + + self.verticalLayout.addWidget(self.checkBox_unit8) + + self.checkBox_unit9 = QCheckBox(self.verticalLayoutWidget) + self.checkBox_unit9.setObjectName(u"checkBox_unit9") + + self.verticalLayout.addWidget(self.checkBox_unit9) + + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.pushButton_sel_all = QPushButton(self.verticalLayoutWidget) + self.pushButton_sel_all.setObjectName(u"pushButton_sel_all") + + self.horizontalLayout.addWidget(self.pushButton_sel_all) + + self.pushButton_sel_rev = QPushButton(self.verticalLayoutWidget) + self.pushButton_sel_rev.setObjectName(u"pushButton_sel_rev") + + self.horizontalLayout.addWidget(self.pushButton_sel_rev) + + + self.verticalLayout.addLayout(self.horizontalLayout) + + self.verticalLayoutWidget_2 = QWidget(Form) + self.verticalLayoutWidget_2.setObjectName(u"verticalLayoutWidget_2") + self.verticalLayoutWidget_2.setGeometry(QRect(210, 70, 121, 251)) + self.verticalLayout_2 = QVBoxLayout(self.verticalLayoutWidget_2) + self.verticalLayout_2.setObjectName(u"verticalLayout_2") + self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) + self.label = QLabel(self.verticalLayoutWidget_2) + self.label.setObjectName(u"label") + + self.verticalLayout_2.addWidget(self.label) + + self.lineEdit_tiankongcount = QLineEdit(self.verticalLayoutWidget_2) + self.lineEdit_tiankongcount.setObjectName(u"lineEdit_tiankongcount") + + self.verticalLayout_2.addWidget(self.lineEdit_tiankongcount) + + self.label_2 = QLabel(self.verticalLayoutWidget_2) + self.label_2.setObjectName(u"label_2") + + self.verticalLayout_2.addWidget(self.label_2) + + self.lineEdit_xuanzecount = QLineEdit(self.verticalLayoutWidget_2) + self.lineEdit_xuanzecount.setObjectName(u"lineEdit_xuanzecount") + + self.verticalLayout_2.addWidget(self.lineEdit_xuanzecount) + + self.label_3 = QLabel(self.verticalLayoutWidget_2) + self.label_3.setObjectName(u"label_3") + + self.verticalLayout_2.addWidget(self.label_3) + + self.lineEdit_diff_lowerbound = QLineEdit(self.verticalLayoutWidget_2) + self.lineEdit_diff_lowerbound.setObjectName(u"lineEdit_diff_lowerbound") + + self.verticalLayout_2.addWidget(self.lineEdit_diff_lowerbound) + + self.label_4 = QLabel(self.verticalLayoutWidget_2) + self.label_4.setObjectName(u"label_4") + + self.verticalLayout_2.addWidget(self.label_4) + + self.lineEdit_diff_upperbound = QLineEdit(self.verticalLayoutWidget_2) + self.lineEdit_diff_upperbound.setObjectName(u"lineEdit_diff_upperbound") + + self.verticalLayout_2.addWidget(self.lineEdit_diff_upperbound) + + self.verticalLayoutWidget_3 = QWidget(Form) + self.verticalLayoutWidget_3.setObjectName(u"verticalLayoutWidget_3") + self.verticalLayoutWidget_3.setGeometry(QRect(360, 70, 131, 171)) + self.verticalLayout_3 = QVBoxLayout(self.verticalLayoutWidget_3) + self.verticalLayout_3.setObjectName(u"verticalLayout_3") + self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) + self.label_5 = QLabel(self.verticalLayoutWidget_3) + self.label_5.setObjectName(u"label_5") + sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth()) + self.label_5.setSizePolicy(sizePolicy) + self.label_5.setMaximumSize(QSize(16777215, 16777215)) + + self.verticalLayout_3.addWidget(self.label_5) + + self.radioButton_min = QRadioButton(self.verticalLayoutWidget_3) + self.radioButton_min.setObjectName(u"radioButton_min") + sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) + sizePolicy1.setHeightForWidth(self.radioButton_min.sizePolicy().hasHeightForWidth()) + self.radioButton_min.setSizePolicy(sizePolicy1) + + self.verticalLayout_3.addWidget(self.radioButton_min) + + self.radioButton_max = QRadioButton(self.verticalLayoutWidget_3) + self.radioButton_max.setObjectName(u"radioButton_max") + + self.verticalLayout_3.addWidget(self.radioButton_max) + + self.radioButton_average = QRadioButton(self.verticalLayoutWidget_3) + self.radioButton_average.setObjectName(u"radioButton_average") + + self.verticalLayout_3.addWidget(self.radioButton_average) + + self.radioButton_median = QRadioButton(self.verticalLayoutWidget_3) + self.radioButton_median.setObjectName(u"radioButton_median") + + self.verticalLayout_3.addWidget(self.radioButton_median) + + self.pushButton_exec = QPushButton(Form) + self.pushButton_exec.setObjectName(u"pushButton_exec") + self.pushButton_exec.setGeometry(QRect(520, 70, 201, 41)) + font = QFont() + font.setBold(True) + self.pushButton_exec.setFont(font) + self.label_6 = QLabel(Form) + self.label_6.setObjectName(u"label_6") + self.label_6.setGeometry(QRect(360, 260, 54, 16)) + self.lineEdit_papercount = QLineEdit(Form) + self.lineEdit_papercount.setObjectName(u"lineEdit_papercount") + self.lineEdit_papercount.setGeometry(QRect(420, 260, 71, 20)) + self.plainTextEdit_output = QPlainTextEdit(Form) + self.plainTextEdit_output.setObjectName(u"plainTextEdit_output") + self.plainTextEdit_output.setGeometry(QRect(520, 140, 201, 221)) + self.label_7 = QLabel(Form) + self.label_7.setObjectName(u"label_7") + self.label_7.setGeometry(QRect(360, 290, 81, 16)) + self.lineEdit_threshold = QLineEdit(Form) + self.lineEdit_threshold.setObjectName(u"lineEdit_threshold") + self.lineEdit_threshold.setGeometry(QRect(450, 290, 41, 20)) + self.label_8 = QLabel(Form) + self.label_8.setObjectName(u"label_8") + self.label_8.setGeometry(QRect(520, 120, 54, 16)) + self.label_9 = QLabel(Form) + self.label_9.setObjectName(u"label_9") + self.label_9.setGeometry(QRect(360, 320, 54, 16)) + self.lineEdit_grade = QLineEdit(Form) + self.lineEdit_grade.setObjectName(u"lineEdit_grade") + self.lineEdit_grade.setGeometry(QRect(420, 320, 71, 20)) + self.lineEdit_grade.setMaxLength(4) + + self.retranslateUi(Form) + + QMetaObject.connectSlotsByName(Form) + # setupUi + + def retranslateUi(self, Form): + Form.setWindowTitle(QCoreApplication.translate("Form", u"\u8d4b\u80fd\u5377\u751f\u6210", None)) + self.checkBox_unit1.setText(QCoreApplication.translate("Form", u"\u7b2c\u4e00\u5355\u5143 \u57fa\u672c\u77e5\u8bc6", None)) + self.checkBox_unit2.setText(QCoreApplication.translate("Form", u"\u7b2c\u4e8c\u5355\u5143 \u51fd\u6570", None)) + self.checkBox_unit3.setText(QCoreApplication.translate("Form", u"\u7b2c\u4e09\u5355\u5143 \u4e09\u89d2", None)) + self.checkBox_unit4.setText(QCoreApplication.translate("Form", u"\u7b2c\u56db\u5355\u5143 \u6570\u5217", None)) + self.checkBox_unit5.setText(QCoreApplication.translate("Form", u"\u7b2c\u4e94\u5355\u5143 \u5e73\u9762\u5411\u91cf\u4e0e\u590d\u6570", None)) + self.checkBox_unit6.setText(QCoreApplication.translate("Form", u"\u7b2c\u516d\u5355\u5143 \u7acb\u4f53\u51e0\u4f55", None)) + self.checkBox_unit7.setText(QCoreApplication.translate("Form", u"\u7b2c\u4e03\u5355\u5143 \u89e3\u6790\u51e0\u4f55", None)) + self.checkBox_unit8.setText(QCoreApplication.translate("Form", u"\u7b2c\u516b\u5355\u5143 \u8ba1\u6570\u4e0e\u6982\u7387", None)) + self.checkBox_unit9.setText(QCoreApplication.translate("Form", u"\u7b2c\u4e5d\u5355\u5143 \u7edf\u8ba1", None)) + self.pushButton_sel_all.setText(QCoreApplication.translate("Form", u"\u5168\u9009", None)) + self.pushButton_sel_rev.setText(QCoreApplication.translate("Form", u"\u53cd\u9009", None)) + self.label.setText(QCoreApplication.translate("Form", u"\u586b\u7a7a\u9898\u6570\u91cf", None)) + self.label_2.setText(QCoreApplication.translate("Form", u"\u9009\u62e9\u9898\u6570\u91cf", None)) + self.label_3.setText(QCoreApplication.translate("Form", u"\u96be\u5ea6\u4e0b\u754c", None)) + self.label_4.setText(QCoreApplication.translate("Form", u"\u96be\u5ea6\u4e0a\u754c", None)) + self.label_5.setText(QCoreApplication.translate("Form", u"\u4f7f\u7528\u96be\u5ea6\u7684\u54ea\u4e2a\u6570\u636e", None)) + self.radioButton_min.setText(QCoreApplication.translate("Form", u"\u96be\u5ea6\u6700\u5c0f\u503c", None)) + self.radioButton_max.setText(QCoreApplication.translate("Form", u"\u96be\u5ea6\u6700\u5927\u503c", None)) + self.radioButton_average.setText(QCoreApplication.translate("Form", u"\u96be\u5ea6\u5e73\u5747\u6570", None)) + self.radioButton_median.setText(QCoreApplication.translate("Form", u"\u96be\u5ea6\u4e2d\u4f4d\u6570", None)) + self.pushButton_exec.setText(QCoreApplication.translate("Form", u"\u751f\u6210", None)) + self.label_6.setText(QCoreApplication.translate("Form", u"\u751f\u6210\u5f20\u6570", None)) + self.lineEdit_papercount.setInputMask("") + self.lineEdit_papercount.setText(QCoreApplication.translate("Form", u"1", None)) + self.label_7.setText(QCoreApplication.translate("Form", u"\u76f8\u4f3c\u9608\u503c\u4e0a\u9650", None)) + self.lineEdit_threshold.setText(QCoreApplication.translate("Form", u"0.65", None)) + self.label_8.setText(QCoreApplication.translate("Form", u"\u8bd5\u5377\u4ee3\u7801", None)) + self.label_9.setText(QCoreApplication.translate("Form", u"\u6392\u9664\u5e74\u7ea7", None)) + self.lineEdit_grade.setInputMask("") + self.lineEdit_grade.setText("") + self.lineEdit_grade.setPlaceholderText(QCoreApplication.translate("Form", u"20xx", None)) + # retranslateUi + diff --git a/工具v4/database_tools_2.py b/工具v4/database_tools_2.py index 21265e25..9784cc80 100644 --- a/工具v4/database_tools_2.py +++ b/工具v4/database_tools_2.py @@ -3095,7 +3095,7 @@ def generate_diff_dict(pro_dict): #根据pro_dict的使用数据生成diff_dict -def generate_adaptive_problemIDs(pro_dict,units_list,genre_tuple,diffinterval,method="min",excludeids = None,multianswers = False, sim_threshold = 0.8): #生成弗能题组, genre_tuple是二元组(填空题数, 选择题数), diffinterval是二元组(难度最小值,难度最大值) +def generate_adaptive_problemIDs(pro_dict,units_list,genre_tuple,diffinterval,method="min",excludeids = None,multianswers = False, sim_threshold = 0.8): #生成赋能题组, genre_tuple是二元组(填空题数, 选择题数), diffinterval是二元组(难度最小值,难度最大值) diff_dict = generate_diff_dict(pro_dict) treated_dict = {id:pre_treating(pro_dict[id]["content"]) for id in pro_dict} if excludeids is None: diff --git a/工具v4/tool_panel.py b/工具v4/tool_panel.py index 3c07e7bc..4b638292 100644 --- a/工具v4/tool_panel.py +++ b/工具v4/tool_panel.py @@ -30,6 +30,7 @@ from 删除使用记录 import MyWindow_scjl from 删除课时目标关系 import MyWindow_scgx from 新增目标关系 import MyWindow_xzgx from 试卷列表 import MyWindow_sjlb +from 赋能卷生成 import MyWindow_fnsc from database_tools_2 import * class MyWindow(QMainWindow,Ui_MainWindow): @@ -162,6 +163,9 @@ class MyWindow(QMainWindow,Ui_MainWindow): self.sjlb = MyWindow_sjlb(self.database) self.layout_sjlb.addWidget(self.sjlb) #以上三行为初始化"试卷列表"tab + self.layout_fnsc = QVBoxLayout(self.tab_fnsc) + self.fnsc = MyWindow_fnsc(self.database) + self.layout_fnsc.addWidget(self.fnsc) #以上三行为初始化"赋能卷生成"tab for func in [ @@ -184,7 +188,8 @@ class MyWindow(QMainWindow,Ui_MainWindow): self.scjl.setdbname, self.scgx.setdbname, self.xzgx.setdbname, - self.sjlb.setdbname + self.sjlb.setdbname, + self.fnsc.setdbname ]: #在列表中的tab里传送数据库名的连接 self.sendDBname.connect(func) def sendValue(self): diff --git a/工具v4/tool_panel.ui b/工具v4/tool_panel.ui index db68b431..a3168122 100644 --- a/工具v4/tool_panel.ui +++ b/工具v4/tool_panel.ui @@ -27,7 +27,7 @@ QTabWidget::Triangular - 2 + 3 @@ -192,7 +192,7 @@ QTabWidget::Triangular - 0 + 3 @@ -209,6 +209,11 @@ 系列讲义生成 + + + 赋能卷生成 + + diff --git a/工具v4/赋能卷生成.py b/工具v4/赋能卷生成.py new file mode 100644 index 00000000..7aeb55aa --- /dev/null +++ b/工具v4/赋能卷生成.py @@ -0,0 +1,69 @@ +from PySide6.QtWidgets import QWidget, QApplication, QLineEdit, QCheckBox +from Ui_赋能卷生成 import Ui_Form +from database_tools_2 import * + +class MyWindow_fnsc(QWidget,Ui_Form): + def __init__(self,database_name): + super().__init__() + self.database_name = database_name + self.setupUi(self) + self.bind() + def setdbname(self,string): + self.database_name = string + # print(self.database_name) + def bind(self): + self.radioButton_min.setChecked(True) + self.pushButton_exec.clicked.connect(self.exec) + self.pushButton_sel_all.clicked.connect(self.selectall) + self.pushButton_sel_rev.clicked.connect(self.selectrev) + + def selectall(self): + for self.checkbox in self.findChildren(QCheckBox): + self.checkbox.setChecked(True) + + def selectrev(self): + for self.checkbox in self.findChildren(QCheckBox): + self.checkbox.setChecked(not self.checkbox.isChecked()) + + + + + def exec(self): + mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = self.database_name) + mycursor = mydb.cursor() + pro_dict,obj_dict,bn_dict,unit_obj_dict = generateDictsfromMariaDB(mycursor) + mydb.close() + units_list = [] + for self.checkbox in self.findChildren(QCheckBox): + if self.checkbox.isChecked(): + units_list.append(self.checkbox.text()[:4]) + genre_tuple = (int(self.lineEdit_tiankongcount.text()),int(self.lineEdit_xuanzecount.text())) + diffinterval = (float(self.lineEdit_diff_lowerbound.text()),float(self.lineEdit_diff_upperbound.text())) + if self.radioButton_min.isChecked(): + method = "min" + elif self.radioButton_max.isChecked(): + method = "max" + elif self.radioButton_average.isChecked(): + method = "average" + elif self.radioButton_median.isChecked(): + method = "median" + sim_threshold = float(self.lineEdit_threshold.text()) + excludeids = findxiaobenIDs("../备课组",grade = self.lineEdit_grade.text()) + papercount = int(self.lineEdit_papercount.text()) + output = "" + for i in range(papercount): + tiankongids, xuanzeids = generate_adaptive_problemIDs(pro_dict=pro_dict,units_list=units_list,genre_tuple=genre_tuple,diffinterval=diffinterval,method=method,excludeids=excludeids,sim_threshold=sim_threshold) + idstr = ",".join(tiankongids+xuanzeids) + output += f"赋能{(i+1):2d}: {idstr}\n" + self.plainTextEdit_output.setPlainText(output) + + + + + +if __name__ == '__main__': + app = QApplication([]) + windows = MyWindow_fnsc("tikutest") + windows.show() + app.exec() + diff --git a/工具v4/赋能卷生成.ui b/工具v4/赋能卷生成.ui new file mode 100644 index 00000000..81187d8c --- /dev/null +++ b/工具v4/赋能卷生成.ui @@ -0,0 +1,360 @@ + + + Form + + + + 0 + 0 + 760 + 490 + + + + 赋能卷生成 + + + + + 20 + 70 + 161 + 301 + + + + + + + 第一单元 基本知识 + + + + + + + 第二单元 函数 + + + + + + + 第三单元 三角 + + + + + + + 第四单元 数列 + + + + + + + 第五单元 平面向量与复数 + + + + + + + 第六单元 立体几何 + + + + + + + 第七单元 解析几何 + + + + + + + 第八单元 计数与概率 + + + + + + + 第九单元 统计 + + + + + + + + + 全选 + + + + + + + 反选 + + + + + + + + + + + 210 + 70 + 121 + 251 + + + + + + + 填空题数量 + + + + + + + + + + 选择题数量 + + + + + + + + + + 难度下界 + + + + + + + + + + 难度上界 + + + + + + + + + + + + 360 + 70 + 131 + 171 + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + 使用难度的哪个数据 + + + + + + + + 0 + 0 + + + + 难度最小值 + + + + + + + 难度最大值 + + + + + + + 难度平均数 + + + + + + + 难度中位数 + + + + + + + + + 520 + 70 + 201 + 41 + + + + + true + + + + 生成 + + + + + + 360 + 260 + 54 + 16 + + + + 生成张数 + + + + + + 420 + 260 + 71 + 20 + + + + + + + 1 + + + + + + 520 + 140 + 201 + 221 + + + + + + + 360 + 290 + 81 + 16 + + + + 相似阈值上限 + + + + + + 450 + 290 + 41 + 20 + + + + 0.65 + + + + + + 520 + 120 + 54 + 16 + + + + 试卷代码 + + + + + + 360 + 320 + 54 + 16 + + + + 排除年级 + + + + + + 420 + 320 + 71 + 20 + + + + + + + + + + 4 + + + 20xx + + + + + +