当前位置: 首页 > news >正文

网站制作公司咨询工作内容wordpress中文企业模板

网站制作公司咨询工作内容,wordpress中文企业模板,名匠装饰多少钱一平方,工业设计是干啥的接上两篇gpt-4o考场安排-CSDN博客#xff0c;考场分层次安排#xff0c;最终exe版-CSDN博客 当然你也可以只看这一篇。 今天又添加了以下功能#xff0c;程序见后。 1、自动分页#xff0c;每个考场打印一页 2、添加了打印试场单页眉 3、添加了页脚 第X页#xff0c;…        接上两篇gpt-4o考场安排-CSDN博客考场分层次安排最终exe版-CSDN博客 当然你也可以只看这一篇。 今天又添加了以下功能程序见后。 1、自动分页每个考场打印一页 2、添加了打印试场单页眉 3、添加了页脚 第X页其X页 打印时间 表结构 程序运行界面 测试分配考场环境共15个班分为两个层次由字段“层次”指定a, b。a层次9个考场b层次15个从b层开始编号a层次考场号从16开编。 预览结果b层次 层次a预览结果 完整程序 import sysimport pandas as pdimport randomimport openpyxlfrom openpyxl.worksheet.pagebreak import Breakfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidefrom openpyxl.worksheet.page import PageMarginsfrom datetime import datetimefrom PyQt5.QtWidgets import (QApplication, QLabel, QLineEdit, QPushButton, QFileDialog,QVBoxLayout, QWidget, QMessageBox)from PyQt5.QtGui import QFont as QPyQtFontdef load_data(filename):return pd.read_excel(filename)def save_data(df, filename, exam_name):df.to_excel(filename, indexFalse)format_excel(filename, df, exam_name)def assign_seats(df, total_halls, start_hall1):grouped df.groupby(班级)groups [group.sample(frac1).reset_index(dropTrue) for _, group in grouped]groups.sort(keylambda x: len(x), reverseTrue)iterators [iter(group.iterrows()) for group in groups]arranged_data []hall_number start_hallseat_number 1total_students len(df)students_per_hall total_students // total_hallsextra_students total_students % total_hallswhile iterators:random.shuffle(iterators)for it in iterators[:]:try:_, student next(it)student_data student.to_dict()student_data[考场] hall_numberstudent_data[考号] f{seat_number:02d}arranged_data.append(student_data)seat_number 1if seat_number students_per_hall (1 if hall_number - start_hall 1 extra_students else 0):hall_number 1seat_number 1if hall_number start_hall total_halls:hall_number start_hallexcept StopIteration:iterators.remove(it)return arranged_datadef check_and_adjust_seating(arranged_data):def has_adjacent_same_class(data):for i in range(len(data) - 1):if data[i][班级] data[i 1][班级]:return ireturn -1def find_valid_swap(index, data):current_class data[index][班级]for j in range(len(data)):if j ! index and data[j][班级] ! current_class:if (j 0 or data[j - 1][班级] ! current_class) and (j len(data) - 1 or data[j 1][班级] ! current_class):return jreturn -1swap_operations []while True:index has_adjacent_same_class(arranged_data)if index -1:breakswap_index find_valid_swap(index 1, arranged_data)if swap_index -1:raise ValueError(Cannot find a valid swap to adjust the seating arrangement.)swap_operations.append((index 1, swap_index))arranged_data[index 1], arranged_data[swap_index] arranged_data[swap_index], arranged_data[index 1]return arranged_data, swap_operationsdef reassign_seats(arranged_data, total_halls, start_hall1):hall_number start_hallseat_number 1total_students len(arranged_data)students_per_hall total_students // total_hallsextra_students total_students % total_hallsfor i, student in enumerate(arranged_data):student[考场] hall_numberstudent[考号] f{seat_number:02d}seat_number 1if seat_number students_per_hall (1 if hall_number - start_hall 1 extra_students else 0):hall_number 1seat_number 1if hall_number start_hall total_halls:hall_number start_hallreturn arranged_datadef format_excel(filename, df, exam_name):if 层次 in df.columns:df df.drop(columns[层次])wb openpyxl.Workbook()ws wb.activews.title 考场安排结果# 将标题从第一行开始写入for col_num, column_title in enumerate(df.columns, 1):cell ws.cell(row1, columncol_num, valuecolumn_title)cell.font Font(boldTrue, colorFFFFFF, size16)cell.fill PatternFill(start_color4F81BD, end_color4F81BD, fill_typesolid)cell.alignment Alignment(horizontalcenter, verticalcenter)for row_num, row_data in enumerate(df.itertuples(indexFalse, nameNone), 2):for col_num, cell_value in enumerate(row_data, 1):ws.cell(rowrow_num, columncol_num, valuecell_value)for col in ws.columns:max_length 0column col[0].column_letter# Check if the column header is 考号if ws.cell(row1, columncol[0].col_idx).value 考号:adjusted_width 20 # 设置考号列的宽度为20else:for cell in col:if cell.value is not None:max_length max(max_length, len(str(cell.value)))adjusted_width max_length 10ws.column_dimensions[column].width adjusted_width# 调整页面边距ws.page_margins PageMargins(left1.5, right0.75, top1.2, bottom0.5)ws.print_title_rows 1:1 # 标题行在第一行开始ws.page_setup.orientation portraitws.page_setup.paperSize ws.PAPERSIZE_A4ws.page_setup.fitToPage Truews.page_setup.fitToWidth 1ws.page_setup.fitToHeight Falsews.page_setup.horizontalCentered Truews.page_setup.verticalCentered Truepage_height_in_inches 11.69 - ws.page_margins.top - ws.page_margins.bottompage_height_in_points page_height_in_inches * 72header_height_in_points 50available_row_height_in_points page_height_in_points - header_height_in_pointshall_groups df.groupby(考场)previous_max_row 1 # 前一个最大行号调整为1以考虑空行thin_border Border(leftSide(stylethin), rightSide(stylethin), topSide(stylethin), bottomSide(stylethin))for hall_number, (hall_id, hall_df) in enumerate(hall_groups):row_count len(hall_df) 1max_row hall_df.index[-1] 2 # 从第二行开始每个考场的数据row_height available_row_height_in_points / row_countrow_height max(row_height, 15)for row in range(previous_max_row, max_row 1):ws.row_dimensions[row].height row_heightfor cell in ws[row]:cell.border thin_bordercell.font Font(size15)cell.alignment Alignment(horizontalcenter, verticalcenter)if max_row ws.max_row:ws.row_breaks.append(Break(max_row))previous_max_row max_row 1# 添加页眉和页脚并使用制表符来向左移动页眉ws.oddHeader.center.text f\微软雅黑,Bold\20\t{exam_name} # 添加制表符以向左移动ws.oddFooter.center.text 第 P 页共 N 页ws.oddFooter.right.text fD Twb.save(filename)def dataframe_to_rows(df, indexTrue, headerTrue):if header:rows [list(df.columns)]else:rows [[]]for row in df.itertuples(indexindex, nameNone):rows.append(list(row)[1:])return rowsdef run_allocation(input_filename, a_total_halls, b_total_halls, start_level, exam_name):df load_data(input_filename)if start_level b:other_level afirst_total_halls b_total_hallssecond_total_halls a_total_hallselse:other_level bfirst_total_halls a_total_hallssecond_total_halls b_total_hallsfirst_level_students df[df[层次] start_level]arranged_first_students assign_seats(first_level_students, first_total_halls, start_hall1)adjusted_first_students, _ check_and_adjust_seating(arranged_first_students)final_first_students reassign_seats(adjusted_first_students, first_total_halls, start_hall1)second_level_students df[df[层次] other_level]arranged_second_students assign_seats(second_level_students, second_total_halls, start_hallfirst_total_halls 1)adjusted_second_students, _ check_and_adjust_seating(arranged_second_students)final_second_students reassign_seats(adjusted_second_students, second_total_halls,start_hallfirst_total_halls 1)combined_students final_first_students final_second_studentsarranged_df pd.DataFrame(combined_students)current_time datetime.now().strftime(%Y%m%d_%H%M%S)output_filename f考场安排结果_{current_time}.xlsxsave_data(arranged_df, output_filename, exam_name)return output_filenameclass ExamArrangementApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):layout QVBoxLayout()font QPyQtFont(Arial, 14)self.file_label QLabel(选择文件:)self.file_label.setFont(font)layout.addWidget(self.file_label)self.file_btn QPushButton(选择文件)self.file_btn.setFont(font)self.file_btn.clicked.connect(self.select_file)layout.addWidget(self.file_btn)self.exam_name_label QLabel(考试名称:)self.exam_name_label.setFont(font)layout.addWidget(self.exam_name_label)self.exam_name_input QLineEdit()self.exam_name_input.setFont(font)layout.addWidget(self.exam_name_input)self.a_halls_label QLabel(A层次考场数:)self.a_halls_label.setFont(font)layout.addWidget(self.a_halls_label)self.a_halls_input QLineEdit()self.a_halls_input.setFont(font)layout.addWidget(self.a_halls_input)self.b_halls_label QLabel(B层次考场数:)self.b_halls_label.setFont(font)layout.addWidget(self.b_halls_label)self.b_halls_input QLineEdit()self.b_halls_input.setFont(font)layout.addWidget(self.b_halls_input)self.start_level_label QLabel(首先开始编号的层次 (a/b):)self.start_level_label.setFont(font)layout.addWidget(self.start_level_label)self.start_level_input QLineEdit()self.start_level_input.setFont(font)layout.addWidget(self.start_level_input)self.run_btn QPushButton(运行)self.run_btn.setFont(font)self.run_btn.clicked.connect(self.run)layout.addWidget(self.run_btn)self.setLayout(layout)self.setWindowTitle(考场安排工具,By Bobo googaobogmail.com)self.resize(900, 630)self.center()def select_file(self):options QFileDialog.Options()options | QFileDialog.DontUseNativeDialogfile_name, _ QFileDialog.getOpenFileName(self, 选择Excel文件, , Excel Files (*.xlsx);;All Files (*),optionsoptions)if file_name:self.file_label.setText(f文件: {file_name})self.input_filename file_namedef run(self):try:a_total_halls int(self.a_halls_input.text())b_total_halls int(self.b_halls_input.text())start_level self.start_level_input.text()exam_name self.exam_name_input.text()output_filename run_allocation(self.input_filename, a_total_halls, b_total_halls, start_level, exam_name)QMessageBox.information(self, 成功, f已成功生成文件{output_filename}, QMessageBox.Ok)except Exception as e:QMessageBox.critical(self, 错误, str(e), QMessageBox.Ok)def center(self):qr self.frameGeometry()cp self.screen().availableGeometry().center()qr.moveCenter(cp)self.move(qr.topLeft())if __name__ __main__:app QApplication(sys.argv)ex ExamArrangementApp()ex.show()sys.exit(app.exec_()) 程序已打包exe,点赞留言QQ发送程序。程序运行中有问题请评论区留言交流
http://www.w-s-a.com/news/615792/

相关文章:

  • 学校响应式网站模板下载仙居住房和城乡建设规划局网站
  • 推广网站的方法有拍卖网站建设
  • 网站建设网站排名优化中国网站服务器哪个好
  • asp网站应用程序网站建设需要提供的资料
  • 网站开发与设计.net微信小程序设计制作
  • 怎样做网站排名优化展馆设计费取费标准一览表
  • 网站建设去哪可接单网站建设与设计大作业
  • 休闲咖啡厅网站开发目标韩国小清新网站模板
  • 做微景观的网站制作网页模板适应不同分辨率
  • 最简单的网站系统昨天军事新闻最新消息
  • 做ps网页设计的网站有哪些wordpress内容付费
  • 有没有免费注册域名的网站科技小制作 手工 简单
  • 网站支付端口win10优化大师怎么样
  • 怎么做云购网站吗网站流量监测
  • 网站被恶意刷流量可以翻外墙的浏览器
  • 网站做直链下载存储解决方案怎么把网站设置为主页面
  • 西安做网站招聘深圳网站见
  • 网站怎么做优化百度能搜索到wordpress 子分类
  • 六安网站建设培训制作网站需要多少时间
  • 电子商务专业网站建设什么软件可以做动画视频网站
  • wordpress 分享主题做网站优化有必要
  • ftp 网站管理电商网站设计图片
  • 惠州免费建站模板营销型旅游网站建设
  • 南宁cms建站wordpress 开启缩略图
  • 网站模板软件网站admin密码
  • 网站信息做参考文献射阳做企业网站多少钱
  • 网站外部优化的4大重点外贸站外推广
  • 宁波网站建设活动德州乐陵德州seo公司
  • 网站网址相对路径如何设置wordpress怎么加快网站打开速度
  • 有没有能帮人快速网站备案的机构网站建设与制作总结