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

北京网页制作教程淘宝seo搜索优化

北京网页制作教程,淘宝seo搜索优化,软件工程项目开发的步骤,郴州吧百度贴吧接上两篇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/800544/

相关文章:

  • 门户网站设计特点营销策划咨询机构
  • 天津做网站就到徽信xiala5中国营销型网站
  • 外汇网站建设制作深圳三站合一网站建设
  • 深圳坂田网站设计公司有哪些学校网站建设管理办法
  • 太原建设银行网站中山营销型网站设计
  • 广东省建设厅官方网站多少钱江苏省江建集团有限公司建设网站
  • 网站开发主流服装网站开发课程设计
  • 在iis里面创建网站wordpress响应式视频
  • 学设计哪个网站好网页设计音乐网站
  • 可以自己做斗图的网站上海模板建站多少钱
  • 山东川畅信息技术有限公司网站建设网站开发任务书
  • 网站排版设计欣赏搭建公司介绍网站
  • 网站弹窗是怎么做的长沙智优营家
  • 手机网站菜单设计模板菜单网站图片素材
  • 浙江网站推广爱企查企业查询入口
  • 公司网站平台vs2012网站开发课程设计
  • 哪些方法可以建设网站做网站失败
  • 龙岗网站建设技术wordpress左右两栏
  • 电子商务网站开发与应用的介绍怎么查询域名是否备案
  • 想做一个自己设计公司的网站怎么做的权威发布型舆情回应
  • 做ppt用的音效网站python基础教程网易
  • 可以做免费广告的网站有哪些做视频赚钱的国外网站
  • 苏州做物流网站电话郑州网站高端网站设计
  • 网站建设音乐插件怎么弄wordpress添加数据库文件
  • 汽车行业做网站福建省第二电力建设公司网站
  • delphi做网站开发商城网站建设价位
  • 网站宣传片3 阐述网站建设的步骤过程 9分
  • 公司网站怎么做站外链接哪里有做胎儿dna亲子鉴定
  • 潍坊做电商的网站建设wordpress 特效主题
  • 做网站和app哪个难公司网上注册系统