diff --git a/工具v4/答题纸对应.py b/工具v4/答题纸对应.py index 72a450cd..e6dc0b51 100644 --- a/工具v4/答题纸对应.py +++ b/工具v4/答题纸对应.py @@ -35,17 +35,20 @@ class MyWindow_dtlr(QWidget,Ui_Form): # print(self.database_name) def setindex(self): + mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = self.database_name) + mycursor = mydb.cursor() self.comboBox_index.clear() self.structure = self.lineEdit_structure.text().upper() self.grade = self.comboBox_grade.currentText() self.semester = self.comboBox_semester.currentText() self.initialstring = f"{self.structure}{self.grade}{self.semester}" - self.indices = getindices(self.initialstring) + self.indices = getindices(self.initialstring,mycursor) self.comboBox_index.addItems(self.indices) if self.indices == []: self.pushButton_exec.setDisabled(True) else: self.pushButton_exec.setEnabled(True) + mydb.close() def activateexec(self): self.pushButton_exec.setEnabled(True) def unvisible(self): @@ -61,20 +64,22 @@ class MyWindow_dtlr(QWidget,Ui_Form): answersheet_dict = load_answersheets_dict_from_mariadb(mycursor) notes_dict = load_notes_dict_from_mariadb(mycursor) + structure_dict = load_structures_dict_from_mariadb(mycursor) new_dict = {} - if not nid in notes_dict["notes"]: + if not nid in notes_dict: print("讲义编号有误.") else: self.label_next.setVisible(True) self.repaint() new_dict["nid"] = nid corresponding_method = input("用何种方式对应? 题号(I)/章节标题(P):") - if corresponding_method[0].upper() == "I": + if corresponding_method.strip() != "" and corresponding_method[0].upper() == "I": new_dict["idlist"] = [] count = 1 id = input(f"输入第 {count} 题的题号(S表示跳过, E表示结束):") + id = RefinePunctuations(id) while len(re.findall(r"[Ss\d,:]",id)) == len(id): if "S" in id.upper(): new_dict["idlist"].append("999999") @@ -84,10 +89,11 @@ class MyWindow_dtlr(QWidget,Ui_Form): new_dict["idlist"] += [i.zfill(6) for i in new_id_list] count += len(new_id_list) id = input(f"输入第 {count} 题的题号(S表示跳过, E表示结束):") + id = RefinePunctuations(id) - elif corresponding_method[0].upper() == "P": - structure = notes_dict["structures"][nid[0]]["structure"] + elif corresponding_method.strip() != "" and corresponding_method[0].upper() == "P": + structure = structure_dict[nid[0:5]]["structure"] count = 1 partslist = [] for key in structure: @@ -95,30 +101,40 @@ class MyWindow_dtlr(QWidget,Ui_Form): count += 1 partslist.append(key) parts_selected_string = input("使用哪些部分(输入数字编号, 用';'分隔):") + parts_selected_string = RefinePunctuations(parts_selected_string).replace(",",";").replace(" ","") parts_selected_index = parts_selected_string.strip().split(";") parts_selected = [] for i in parts_selected_index: parts_selected.append(partslist[int(i)-1]) new_dict["parts"] = parts_selected.copy() if marks_list == []: - marksflag = input("是否为每个结果赋分(Y/N):") - if marksflag[0].upper() == "Y": + marksflag = input("是否为每个结果赋分(Y/[N]):") + if marksflag.strip() != "" and marksflag[0].upper() == "Y": new_dict["marks"] = [] count = 1 - mark = input(f"依次输入分数, 非自然数作为结束(第 {count} 个位置):") + mark = input(f"依次输入分数, 非自然数作为结束(第 {count} 个位置):").strip() while len(re.findall(r"\d",mark)) == len(mark): new_dict["marks"].append(int(mark)) count += 1 - mark = input(f"依次输入分数, 非自然数作为结束(第 {count} 个位置):") + mark = input(f"依次输入分数, 非自然数作为结束(第 {count} 个位置):").strip() else: new_dict["marks"] = marks_list.copy() + sql = "INSERT INTO answersheets (pid,nid,parts,idlist,marks) VALUES (%s,%s,%s,%s,%s);" + parts = None if not "parts" in new_dict else json.dumps(new_dict["parts"],ensure_ascii=False) + idlist = None if not "idlist" in new_dict else json.dumps(new_dict["idlist"],ensure_ascii=False) + marks = None if not "marks" in new_dict else json.dumps(new_dict["marks"],ensure_ascii=False) + val = (self.lineEdit_xiaoxianid.text(),nid,parts,idlist,marks) + mycursor.execute(sql,val) + sql = "INSERT INTO logs (DATE,TIME,username,action,db_content) VALUE (%s,%s,%s,%s,%s);" + val = (GetDate(),GetTime(),get_git_username(),"答题纸挂钩",self.lineEdit_xiaoxianid.text()) + mydb.commit() - answersheet_dict[self.lineEdit_xiaoxianid.text()] = new_dict.copy() - save_dict(answersheet_dict,answersheetjson) + # answersheet_dict[self.lineEdit_xiaoxianid.text()] = new_dict.copy() + # save_dict(answersheet_dict,answersheetjson) self.label_next.setVisible(False) print("设置完成") - + mydb.close()