點名程式的業務邏輯封裝
# -*- coding:utf8 -*- #
# -----------------------------------------------------------------------------------
# ProjectName: python3
# FileName: config
# Author: shuxiaying
# Date: 2020/8/27
# Description:
# -----------------------------------------------------------------------------------
import datetime
import json
import random
import openpyxl
class CallNameDriver:
# 花名冊檔案名
excel_file_path = "花名冊.xlsx"
# 作業表名
excel_sheet = "Sheet1"
# 記錄存盤檔案名
file_path = "name_record.json"
# 讀取花名冊
def __init__(self):
wb = openpyxl.load_workbook(self.excel_file_path)
get_sheet = wb[self.excel_sheet]
list_data = https://www.cnblogs.com/ttj57/p/[]
first_row = True
try:
for row in get_sheet:
# 忽略首行
if first_row:
first_row = False
continue
# 讀取第一個單元格資料
for lab in row:
list_data.append(lab.value)
break
except:
list_data = https://www.cnblogs.com/ttj57/p/['空名單?']
self.namelist = list_data
# 初始化記錄
def _re_reset(self):
# 記錄使用日期
dy = str(datetime.datetime.today().date())
# 記錄點名
record = {}
for i in self.namelist:
record[i] = 0
name_record = {"date": [dy], "last_use": dy, "record": record}
return name_record
# 創建記錄
def mk_record(self):
jf_dict = self._re_reset()
with open(file=self.file_path, mode='w', encoding='utf-8') as jf:
json.dump(jf_dict, jf, indent=2, sort_keys=True, ensure_ascii=False)
# 讀取記錄
def read_record(self):
with open(file=self.file_path, mode='r', encoding='utf-8') as jf:
jf_data = https://www.cnblogs.com/ttj57/p/json.load(jf)
return jf_data
# 獲取記錄的key
def get_keys(self):
record = self.read_record()["record"]
keys = []
keys.extend(record.keys())
return keys
# 產生隨機姓名
def call_name(self):
call_name = random.choice(self.namelist)
return call_name
# 獲取記錄次數
def re_times(self):
times_list = []
record = self.read_record()["record"]
times_list.extend(record.values())
return times_list # 回傳記錄次數
# 獲取被點到成員記錄次數
def call_times(self, name):
record = self.read_record()["record"]
return record[name]
# 修改記錄-----warning!!!
def re_mod(self, name=None, re_date=None, new_add=None, new_del=None):
jf_data = https://www.cnblogs.com/ttj57/p/self.read_record()
# 如花名冊有修改,則修改對應記錄,默認次數為最小次數
if new_add:
min_times = min(self.re_times())
for i in new_add:
jf_data["record"][i] = min_times
if new_del:
for i in new_del:
del jf_data["record"][i]
# 有效點名,對應記錄+1
if name:
jf_data["record"][name] += 1
# 更新記錄日期
if re_date:
jf_data["date"].append(re_date)
jf_data["last_use"] = re_date
with open(file=self.file_path, mode='w', encoding='utf-8') as jf:
json.dump(jf_data, jf, indent=2, sort_keys=True, ensure_ascii=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/13986.html
標籤:Python
