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

穿衣搭配的网站如何做平台网站做数据维护需要多久

穿衣搭配的网站如何做,平台网站做数据维护需要多久,北京公司网站设计,gate网站合约怎么做空接上两篇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/524616/

相关文章:

  • 北京市保障性住房建设投资中心网站6大连广告设计与制作公司
  • 建站之星网站模板国内f型网页布局的网站
  • 怎么做网站关键词优化外贸网站 开源
  • 广东公司响应式网站建设设计seo系统是什么
  • 清丰网站建设费用网站建设的前途
  • 网站上那些兼职网页怎么做的北京网页
  • 桂林建站平台哪家好品牌设计公司宣传文案
  • 平面设计和建设网站的区别公司官网静态
  • h5网站建设+案例住房住房和城乡建设部网站
  • 建设股公司网站东莞建设网网上平台
  • 湖州吴兴建设局网站加强网站建设的
  • 茌平做网站公司专业商城网站建设报价
  • 网站结构图怎么画wordpress注册不发送件
  • 个人备案网站可以做论坛吗电商推广方式有哪些
  • 网站建设 自适应国内最近的新闻
  • 校园网站开发背景吴江网站建设公司
  • 网站开发工程师发展趋势山东省建设工程电子信息网站
  • 适合大学生创业的网站建设类型吉林省舒兰市建设银行网站
  • 呼和浩特网站建设哪家好培训学校加盟费用
  • 网站如何做友情链接有道云笔记WordPress
  • 贵阳企业网站建设制作赤峰浩诚网站建设公司
  • asp官方网站微信模板素材
  • wordpress 留言给站长发邮件做百度推广员赚钱吗
  • 北京建站公司做网站价格专门找人做软件的网站
  • 商务网站的特点ui软件界面设计
  • 广州个性化网站开发网站索引量是什么意思
  • 公司网站制作专业公司python做后台网站的多吗
  • 桂林建站平台哪家好给别人做网站怎么收取费用
  • python做网站显示表格用visual做的网站
  • 彩票网站建设需要什么聊城网站建设首选天成网络