|
|
|
@ -0,0 +1,258 @@
|
|
|
|
|
from openpyxl import load_workbook
|
|
|
|
|
from openpyxl.styles import *
|
|
|
|
|
import time
|
|
|
|
|
import warnings
|
|
|
|
|
warnings.filterwarnings('ignore')
|
|
|
|
|
|
|
|
|
|
#判断是否在校
|
|
|
|
|
#此处为入校申请
|
|
|
|
|
def inschool (u,a):
|
|
|
|
|
wb = load_workbook('Student.xlsx')
|
|
|
|
|
ws = wb.active
|
|
|
|
|
u_inschool = u+1
|
|
|
|
|
state = ws.cell(row=u_inschool, column=3).value
|
|
|
|
|
|
|
|
|
|
if state == 'y' and a == 1:
|
|
|
|
|
print("您已在学校,不能提交入校申请")
|
|
|
|
|
#在校状态不能申请入校
|
|
|
|
|
elif state == 'n' and a == 1:
|
|
|
|
|
print("您可以正常申请入校")
|
|
|
|
|
#离校状态可以正常申请入校
|
|
|
|
|
return 1
|
|
|
|
|
|
|
|
|
|
#填写表格
|
|
|
|
|
def write_form (a,c,p):
|
|
|
|
|
print("=============================================")
|
|
|
|
|
print("开始填表")
|
|
|
|
|
#申请类型
|
|
|
|
|
application = int(a)
|
|
|
|
|
|
|
|
|
|
#姓名
|
|
|
|
|
name = input("请输入姓名:")
|
|
|
|
|
|
|
|
|
|
#学号
|
|
|
|
|
id = input("请输入学号:")
|
|
|
|
|
|
|
|
|
|
#联系电话
|
|
|
|
|
phone = input("请输入联系电话:")
|
|
|
|
|
|
|
|
|
|
#时间
|
|
|
|
|
Time = ''
|
|
|
|
|
while Time == '':
|
|
|
|
|
t1 = input("请输入入校时间(格式样例:2022-07-22 23:00:00)(要求为当日且不能早于6点晚于22点):")
|
|
|
|
|
# t1 = str('2022-10-23 21:00:00')
|
|
|
|
|
Time = str(time_judge(t1))
|
|
|
|
|
|
|
|
|
|
#校门
|
|
|
|
|
door = ''
|
|
|
|
|
while door == '':
|
|
|
|
|
d = int(input("请选择校门(1.东门 2.南门 3.西门 4.北门):"))
|
|
|
|
|
door = door_choice(d)
|
|
|
|
|
|
|
|
|
|
#以下为前端数据,此处用输入代替
|
|
|
|
|
#地址
|
|
|
|
|
province = input("请输入省市:")
|
|
|
|
|
district = input("请输入区:")
|
|
|
|
|
place = input("请输入详细地址:")
|
|
|
|
|
|
|
|
|
|
#健康码
|
|
|
|
|
health_code = ''
|
|
|
|
|
while health_code == '':
|
|
|
|
|
h = str(input("请输入健康码状态(绿/黄/红):"))
|
|
|
|
|
health_code = health_code_judge(h)
|
|
|
|
|
|
|
|
|
|
#行程码
|
|
|
|
|
Tour_code = input("请输入行程码状态:")
|
|
|
|
|
|
|
|
|
|
#核酸
|
|
|
|
|
NAT = ''
|
|
|
|
|
while NAT == '':
|
|
|
|
|
n = str(input("请输入核酸状态(阴/阳):"))
|
|
|
|
|
NAT = NAT_judge(n)
|
|
|
|
|
|
|
|
|
|
#申请状态
|
|
|
|
|
application_count = int(c + 1)
|
|
|
|
|
|
|
|
|
|
#通过状态
|
|
|
|
|
Pass = int(p)
|
|
|
|
|
|
|
|
|
|
#提交确认
|
|
|
|
|
submit = Submit(name,id,phone,Time,door,province,district,place,health_code,Tour_code,NAT)
|
|
|
|
|
if submit == 'n':
|
|
|
|
|
print("填写取消,返回上级菜单")
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
|
|
#封装
|
|
|
|
|
data = data_set(application,name,id,phone,Time,door,province,district,place,health_code,Tour_code,NAT,application_count,Pass)
|
|
|
|
|
#print(data)
|
|
|
|
|
|
|
|
|
|
#写入excel
|
|
|
|
|
write(data)
|
|
|
|
|
|
|
|
|
|
#调整excel格式
|
|
|
|
|
style('Form.xlsx')
|
|
|
|
|
|
|
|
|
|
#判断时间合理性
|
|
|
|
|
def time_judge(t11):
|
|
|
|
|
t1 = time.strptime(t11, "%Y-%m-%d %H:%M:%S")
|
|
|
|
|
t = time.localtime()
|
|
|
|
|
year = str(t.tm_year)
|
|
|
|
|
mon = str(t.tm_mon)
|
|
|
|
|
day2 = str(t.tm_mday)
|
|
|
|
|
hour = str(t.tm_hour)
|
|
|
|
|
minute = str(t.tm_min)
|
|
|
|
|
sec = str(t.tm_sec)
|
|
|
|
|
t22 = str(year + '-' + mon + '-' + day2 + ' ' + hour + ':' + minute + ':' + sec)
|
|
|
|
|
t2 = time.strptime(t22, "%Y-%m-%d %H:%M:%S")
|
|
|
|
|
|
|
|
|
|
#判断填写时间是否比当前时间早
|
|
|
|
|
tl = (time.mktime(t1)-time.mktime(t2))
|
|
|
|
|
if tl <= 0:
|
|
|
|
|
print("请输入比当前时间晚的时间")
|
|
|
|
|
return ''
|
|
|
|
|
|
|
|
|
|
#判断日期是否为当日
|
|
|
|
|
day1 = str(t1.tm_mday)
|
|
|
|
|
if day1 != day2:
|
|
|
|
|
print("申请只能为当日")
|
|
|
|
|
return ''
|
|
|
|
|
|
|
|
|
|
hour1 = t1.tm_hour
|
|
|
|
|
minute1 = t1.tm_min
|
|
|
|
|
sec1 = t1.tm_sec
|
|
|
|
|
|
|
|
|
|
#判断申请时间是否晚于6点
|
|
|
|
|
if hour1 < 6:
|
|
|
|
|
print("入校必须晚于6点!")
|
|
|
|
|
return ''
|
|
|
|
|
|
|
|
|
|
#判断申请时间是否早于10点
|
|
|
|
|
if hour1 > 22:
|
|
|
|
|
print("入校必须早于22点!")
|
|
|
|
|
return ''
|
|
|
|
|
elif hour1 == 22 and minute1 != 0 and sec1 != 0:
|
|
|
|
|
print("入校必须早于22点!")
|
|
|
|
|
return ''
|
|
|
|
|
|
|
|
|
|
return t11
|
|
|
|
|
|
|
|
|
|
#选择校门
|
|
|
|
|
def door_choice(d):
|
|
|
|
|
if d == 1:
|
|
|
|
|
return 'East'
|
|
|
|
|
elif d == 2:
|
|
|
|
|
return 'South'
|
|
|
|
|
elif d == 3:
|
|
|
|
|
return 'West'
|
|
|
|
|
elif d == 4:
|
|
|
|
|
return 'North'
|
|
|
|
|
else:
|
|
|
|
|
print("请选择正确的校门!")
|
|
|
|
|
return ''
|
|
|
|
|
|
|
|
|
|
#判断健康码信息填写正确性
|
|
|
|
|
def health_code_judge(h):
|
|
|
|
|
if h != "绿" and h != "黄" and h != "红":
|
|
|
|
|
print("请输入正确的健康码信息")
|
|
|
|
|
return ''
|
|
|
|
|
else:
|
|
|
|
|
return h
|
|
|
|
|
|
|
|
|
|
#判断核酸信息填写正确性
|
|
|
|
|
def NAT_judge(n):
|
|
|
|
|
if n != "阴" and n != "阳":
|
|
|
|
|
print("请输入正确的核酸信息")
|
|
|
|
|
return ''
|
|
|
|
|
else:
|
|
|
|
|
return n
|
|
|
|
|
|
|
|
|
|
#提交确认
|
|
|
|
|
def Submit(name,id,phone,Time,door,province,district,place,health_code,Tour_code,NAT):
|
|
|
|
|
print("=============================================")
|
|
|
|
|
print("申请类型为:入校申请")
|
|
|
|
|
print("姓名:" + name)
|
|
|
|
|
print("学号:" + id)
|
|
|
|
|
print("联系电话:" + phone)
|
|
|
|
|
print("时间:" + Time)
|
|
|
|
|
print("校门:" + door)
|
|
|
|
|
print("省市:" + province)
|
|
|
|
|
print("区:" + district)
|
|
|
|
|
print("详细地址:" + place)
|
|
|
|
|
print("健康码信息:" + health_code)
|
|
|
|
|
print("行程码信息:" + Tour_code)
|
|
|
|
|
print("核酸:" + NAT)
|
|
|
|
|
print("申请状态:待审核")
|
|
|
|
|
print("通过状态:待审核")
|
|
|
|
|
submit = input("以上为填写信息,是否提交(y/n)")
|
|
|
|
|
return submit
|
|
|
|
|
|
|
|
|
|
#数据封装
|
|
|
|
|
def data_set(application,name,id,phone,time,door,province,district,place,health_code,Tour_code,NAT,application_count,Pass):
|
|
|
|
|
data_form = {
|
|
|
|
|
"application": application,
|
|
|
|
|
"name": name,
|
|
|
|
|
"id": id,
|
|
|
|
|
"phone": phone,
|
|
|
|
|
"time": time,
|
|
|
|
|
"door": door,
|
|
|
|
|
"province": province,
|
|
|
|
|
"district": district,
|
|
|
|
|
"place": place,
|
|
|
|
|
"health_code": health_code,
|
|
|
|
|
"Tour_code": Tour_code,
|
|
|
|
|
"NAT": NAT,
|
|
|
|
|
"application_count": application_count,
|
|
|
|
|
"Pass": Pass
|
|
|
|
|
}
|
|
|
|
|
return data_form
|
|
|
|
|
|
|
|
|
|
#数据写入excel
|
|
|
|
|
def write(data):
|
|
|
|
|
wb = load_workbook('Form.xlsx')
|
|
|
|
|
ws = wb.active
|
|
|
|
|
d = (
|
|
|
|
|
data["application"],
|
|
|
|
|
data["name"],
|
|
|
|
|
data["id"],
|
|
|
|
|
data["phone"],
|
|
|
|
|
data["time"],
|
|
|
|
|
data["door"],
|
|
|
|
|
data["province"],
|
|
|
|
|
data["district"],
|
|
|
|
|
data["place"],
|
|
|
|
|
data["health_code"],
|
|
|
|
|
data["Tour_code"],
|
|
|
|
|
data["NAT"],
|
|
|
|
|
data["application_count"],
|
|
|
|
|
data["Pass"]
|
|
|
|
|
)
|
|
|
|
|
ws.append(d)
|
|
|
|
|
wb.save('Form.xlsx')
|
|
|
|
|
print("提交成功!")
|
|
|
|
|
|
|
|
|
|
#调整excel格式
|
|
|
|
|
def style(file):
|
|
|
|
|
wb = load_workbook(file)
|
|
|
|
|
ws = wb.active
|
|
|
|
|
for row in ws.iter_rows():
|
|
|
|
|
for cell in row:
|
|
|
|
|
if cell is not None:
|
|
|
|
|
cell.alignment = Alignment(horizontal='center',vertical='center')
|
|
|
|
|
wb.save(file)
|
|
|
|
|
|
|
|
|
|
#代码运行主体
|
|
|
|
|
x = 1
|
|
|
|
|
while x:
|
|
|
|
|
user = int(input("请选择用户(1.张三 2.李四 3.王五):"))
|
|
|
|
|
print("您选择的是入校申请")
|
|
|
|
|
#申请类型:1为入校申请 2为出校申请 此处默认为1
|
|
|
|
|
application = 1
|
|
|
|
|
#申请状态(0无1有)
|
|
|
|
|
application_count = 0
|
|
|
|
|
#通过状态默认为0
|
|
|
|
|
Pass = 0
|
|
|
|
|
if inschool(user,application):
|
|
|
|
|
write_form(application,application_count,Pass)
|
|
|
|
|
x = 0
|
|
|
|
|
else:
|
|
|
|
|
print("请返回上级菜单,提交申请请选择出校申请")
|