"""
-*- coding: utf-8 -*-
@Time : 2021/11/6 15:37
@Author : jagger
@File : 考试监考系统.py
@Software: PyCharm
-*- 功能说明 -*-
"""
import webbrowser
from tkinter import *
from tkinter import messagebox
import xlrd
import xlwt
from PIL import Image, ImageTk # PIL图像处理库
from xlutils.copy import copy
resoultFile = '2021齐大期末考试监考名单.xls'
sourceFile = '监考人员-科目-教师名单.xls'
# 每个列表的第0行存的是提示信息
# 内容是字典对象
teacherList = [] # 监考人员名单 74个
subjectList = [] # 考试科目 53门 规格为30、|60、70、|120、200|
classroomList = [] # 空闲教室 规格为30、90、200
resoultList = [] # 监考结果集 存放的是字典对象
# 监考时间表
time = ['2022/01/03 8:30-11:00', '2022/01/03 14:30-16:00',
'2022/01/04 8:30-11:00', '2022/01/04 14:30-16:00',
'2022/01/05 8:30-11:00', '2022/01/05 14:30-16:00',
'2022/01/06 8:30-11:00', '2022/01/06 14:30-16:00',
'2022/01/07 8:30-11:00', '2022/01/07 14:30-16:00',
'2022/01/10 8:30-11:00', '2022/01/10 14:30-16:00']
def createExcel():
'''
用于创建和初始化excel表格的风格和基本信息
样式:
r1 2021齐大期末考试监考名单
r2 监考日期 考试科目 考试人数 监考教室 教室容纳人数 监考老师
@return:
@rtype:
'''
# 创建表格
workBook = xlwt.Workbook(encoding='utf-8')
# cell_overwrite_ok=True 允许重载
workBook_1 = workBook.add_sheet('监考名单', cell_overwrite_ok=True)
# 合并单元格
workBook_1.write_merge(0, 1, 0, 5, '2021齐大期末考试监考名单', get_style_01(True))
# "merge(self, r1, r2, c1, c2, style=Style.default_style):"
# 形参说明:r1 起始行,r2 合并终止行,c1 起始列 c2 合并终止列
workBook_1.write(2, 0, '监考日期', get_style_02())
workBook_1.write(2, 1, '考试科目', get_style_02())
workBook_1.write(2, 2, '考试人数', get_style_02())
workBook_1.write(2, 3, '监考教室', get_style_02())
workBook_1.write(2, 4, '教室容纳人数', get_style_02())
workBook_1.write(2, 5, '监考老师', get_style_02())
# 设置单元格宽度
workBook_1.col(0).width = 400 * 20
workBook_1.col(1).width = 350 * 20
workBook_1.col(2).width = 120 * 20
workBook_1.col(3).width = 120 * 20
workBook_1.col(4).width = 200 * 20
workBook_1.col(5).width = 350 * 20
# workBook_1.write(3,0,'我是第三行',get_style_02())
# 保存
workBook.save(resoultFile)
# # 写入上午日期
# def write_data_morning():
# morning = ['2022/01/03 8:30-11:00', '2022/01/04 8:30-11:00', '2022/01/05 8:30-11:00', '2022/01/06 8:30-11:00',
# '2022/01/07 8:30-11:00', '2022/01/10 8:30-11:00']
# old_excel = xlrd.open_workbook(resoultFile, formatting_info=True)
# new_excel = copy(old_excel)
# rws = new_excel.get_sheet(0)
# t = 0
# for i in range(3, 55, 9):
# for j in range(5):
# rws.write(i + j, 0, morning[t], get_style_02())
# t = t + 1
#
# new_excel.save(resoultFile)
#
#
# # 写入下午日期
# def write_data_afternoon():
# old_excel = xlrd.open_workbook(resoultFile, formatting_info=True)
# new_excel = copy(old_excel)
# rws = new_excel.get_sheet(0)
# morning = ['2022/01/03 14:30-16:00', '2022/01/04 14:30-16:00', '2022/01/05 14:30-16:00', '2022/01/06 14:30-16:00',
# '2022/01/07 8:30-11:00', '2022/01/10 14:30-16:00']
# t = 0
# for i in range(8, 47, 9):
# for j in range(4):
# rws.write(i + j, 0, morning[t], get_style_02())
# t = t + 1
#
# for i in range(53, 56):
# rws.write(i, 0, morning[5], get_style_02())
# new_excel.save(resoultFile)
# 写入考试科目以及考试科目人数
def reader():
'''
读取信息文件
Returns:
'''
work_book = xlrd.open_workbook(sourceFile)
teacher_table = work_book.sheet_by_name('监考人员名单')
subject_table = work_book.sheet_by_name('考试科目')
classroom_table = work_book.sheet_by_name('空闲教室')
for i in teacher_table:
__teacher = {'id': i[0].value, 'dept': i[1].value, 'name': i[2].value, 'sex': i[3].value}
teacherList.append(__teacher)
for i in subject_table:
__subject = {'id': i[0].value, 'subject': i[1].value, 'amount': i[2].value}
subjectList.append(__subject)
for i in classroom_table:
__classroom = {'id': i[0].value, 'classroom': i[1].value, 'amount': i[2].value}
classroomList.append(__classroom)
# print('teacherList')
# print(teacherList)
# print('subjectList')
# print(subjectList)
# print('classroomList')
# print(classroomList)
def bubbleSortR(sourceList):
'''
升序的冒泡排序的python实现
@param sourceList:传入一个列表
@type sourceList:列表
@return: arr 经过排序后的新list 从上到下越来越大
@rtype:
'''
arr = sourceList
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already in place
for j in range(0, n - i - 1):
if arr[j]['amount'] > arr[j + 1]['amount']:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# print(arr)
return arr
def bubbleSortD(sourceList):
'''
降序的冒泡排序的python实现
@param sourceList:传入一个列表
@type sourceList:列表
@return: arr 经过排序后的新list 从上到下越来越小
@rtype:
'''
arr = sourceList
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already in place
for j in range(0, n - i - 1):
if arr[j]['amount'] < arr[j + 1]['amount']:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# print(arr)
return arr
def quickSort(arr, left=None, right=None):
'''
快速排序的递归实现
Parameters
----------
arr : 待排序数组
left : 首个元素
right : 最后一个元素
Returns
-------
arr 结果数组
'''
left = 0 if not isinstance(left, (int, float)) else left
right = len(arr) - 1 if not isinstance(right, (int, float)) else right
if left < right:
partitionIndex = partition(arr, left, right)
# 根据枢轴划分为两个小的无序区间
quickSort(arr, left, partitionIndex - 1)
quickSort(arr, partitionIndex + 1, right)
return arr
def partition(arr, left, right):
'''
一趟划分
Parameters
----------
arr : 待排序数组
left : 首个元素
right : 最后一个元素
Returns
-------
'''
pivot = left # 枢轴
index = pivot + 1
i = index
while i <= right:
if arr[i] < arr[pivot]:
swap(arr, i, index)
index += 1
i += 1
swap(arr, pivot, index - 1) # 讲枢轴与最后一个比他小的元素换位置,此时枢轴左边的元素都比他小
return index - 1 # 返回此时枢轴位置
def swap(arr, i, j):
'''
交换函数
Parameters
----------
arr : 目标数组
i : 元素下标
j : 元素下标
Returns
-------
'''
arr[i], arr[j] = arr[j], arr[i]
def allocate():
'''
监考分配逻辑的具体实现
@return:
@rtype:
'''
_subjectList = bubbleSortD(subjectList)
_classroomList = bubbleSortD(classroomList)
_teacherListMan = []
_teacherListWoman = []
for i i
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
<项目介绍> 基于python实现的监考老师分配系统源码.zip 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 基于python的监考老师分配 较阳光分班来说添加了更多排序、查找算法。 难点仍是分配算法。这里单个对象的属性更多,而且限制因素也更多。因此算法复杂程度较阳光分班更高 基于python实现的监考老师分配系统源码.zip 基于python实现的监考老师分配系统源码.zip 基于python实现的监考老师分配系统源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于python实现的监考老师分配系统源码.zip (8个子文件)
项目说明.md 236B
专业综合实践
监考人员-科目-教师名单.xls 51KB
考试监考系统V2.py 14KB
logo.png 26KB
监考人员-科目-教师名单.xlsx 19KB
考试监考系统.py 6KB
2021齐大期末考试监考名单.xls 14KB
test.py 2KB
共 8 条
- 1
资源评论
- 2301_768884392024-03-17这个资源值得下载,资源内容详细全面,与描述一致,受益匪浅。
Make程序设计
- 粉丝: 5776
- 资源: 3570
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 桥架一点通.v桥架一点通.桥架一点通.桥架一点通
- <2024年5月软考高项极限冲刺>《1 考试简介》
- 7607p移动固件V2.0.6P1N2
- HCIE 实验拓扑 整理归类 HCIE 实验拓扑 整理归类
- 7607p联通固件V2.0.5P1N4
- Por工具合集.zip
- Java毕业设计:SpringBoot Vue工作考勤管理系统源码(代码可直接运行)
- 论文复刻中国式融资融券与企业金融化-双重差分模型(Stata代码附数据)PSM+DID
- 夜间灯光数据“合成DMSP(1992-2020)”(年度数据)
- 基于springboot的网上花店系统,包含后端springboot项目、前台(用户角色)和后台管理(管理员/卖家角色)两个前端
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功