图书馆志愿者值班管理系统:Python 实现值班、换班、调班和请假功能
图书馆志愿者值班管理系统:Python 实现值班、换班、调班和请假功能
本系统使用 Python 语言构建,利用 MySQL 数据库存储值班信息,并使用 Pandas 库导入和处理值班表格。系统功能包括:
- 值班功能: 添加志愿者值班信息,可以指定日期和班次。
- 换班功能: 允许志愿者之间相互换班,需管理员审批。
- 调班功能: 允许志愿者调整自己的值班时间,需管理员审批。
- 请假功能: 允许志愿者请假,需管理员审批。
1. 环境配置
首先,我们需要安装 Python 数据库驱动程序,这里选择 PyMySQL。
pip install PyMySQL
接下来,安装 Pandas 库用于导入和处理值班表格。
pip install pandas
2. 代码实现
import pymysql
import pandas as pd
import datetime
# 连接数据库
host = 'localhost' # 数据库主机地址
port = 3306 # 数据库端口号
user = 'root' # 数据库用户名
password = 'password' # 数据库密码
database = 'Library' # 数据库名称
# 连接数据库
db = pymysql.connect(host=host, port=port, user=user, password=password, database=database)
# 创建游标
cursor = db.cursor()
# 读取 Excel 文件
df = pd.read_excel('DutySchedule.xlsx')
# 将 Excel 文件中的数据导入到 Volunteers 表格中
for index, row in df.iterrows():
name = row['姓名']
date = row['日期']
shift = row['班次']
query = f'INSERT INTO Volunteers (name, date, shift) VALUES ('{name}', '{date}', '{shift}')'
cursor.execute(query)
db.commit()
# 值班功能
def sign_up(name, date, shift):
# 查询该日期该班次是否已经有人值班
query = f'SELECT * FROM Volunteers WHERE date='{date}' AND shift='{shift}''
cursor.execute(query)
results = cursor.fetchall()
if len(results) > 0:
return '该日期该班次已经有人值班'
# 将值班信息插入 Volunteers 表格中
query = f'INSERT INTO Volunteers (name, date, shift) VALUES ('{name}', '{date}', '{shift}')'
cursor.execute(query)
db.commit()
return '值班成功'
# 换班功能
def swap(name1, name2, date1, date2, shift):
# 查询原来的值班信息
query1 = f'SELECT * FROM Volunteers WHERE name='{name1}' AND date='{date1}' AND shift='{shift}''
cursor.execute(query1)
result1 = cursor.fetchone()
if result1 is None:
return '找不到原来的值班信息'
# 查询新的值班信息
query2 = f'SELECT * FROM Volunteers WHERE name='{name2}' AND date='{date2}' AND shift='{shift}''
cursor.execute(query2)
result2 = cursor.fetchone()
if result2 is not None:
return '新的值班信息已经存在'
# 审批换班申请
# TODO: 添加审批代码
# 删除原来的值班信息
query3 = f'DELETE FROM Volunteers WHERE name='{name1}' AND date='{date1}' AND shift='{shift}''
cursor.execute(query3)
db.commit()
# 插入新的值班信息
query4 = f'INSERT INTO Volunteers (name, date, shift) VALUES ('{name2}', '{date2}', '{shift}')'
cursor.execute(query4)
db.commit()
return '换班成功'
# 调班功能
def change(name1, name2, date1, date2, shift1, shift2):
# 查询原来的值班信息和新的值班信息
query1 = f'SELECT * FROM Volunteers WHERE name='{name1}' AND date='{date1}' AND shift='{shift1}''
cursor.execute(query1)
result1 = cursor.fetchone()
if result1 is None:
return '找不到原来的值班信息'
query2 = f'SELECT * FROM Volunteers WHERE name='{name2}' AND date='{date2}' AND shift='{shift2}''
cursor.execute(query2)
result2 = cursor.fetchone()
if result2 is None:
return '找不到新的值班信息'
# 审批调班申请
# TODO: 添加审批代码
# 删除原来的值班信息和新的值班信息
query3 = f'DELETE FROM Volunteers WHERE name='{name1}' AND date='{date1}' AND shift='{shift1}''
cursor.execute(query3)
db.commit()
query4 = f'DELETE FROM Volunteers WHERE name='{name2}' AND date='{date2}' AND shift='{shift2}''
cursor.execute(query4)
db.commit()
# 插入新的值班信息
query5 = f'INSERT INTO Volunteers (name, date, shift) VALUES ('{name1}', '{date2}', '{shift2}')'
cursor.execute(query5)
db.commit()
query6 = f'INSERT INTO Volunteers (name, date, shift) VALUES ('{name2}', '{date1}', '{shift1}')'
cursor.execute(query6)
db.commit()
return '调班成功'
# 请假功能
def take_leave(name, date, shift):
# 查询该日期该班次是否有人值班
query = f'SELECT * FROM Volunteers WHERE name='{name}' AND date='{date}' AND shift='{shift}''
cursor.execute(query)
result = cursor.fetchone()
if result is None:
return '找不到该日期该班次的值班信息'
# 审批请假申请
# TODO: 添加审批代码
# 删除值班信息
query2 = f'DELETE FROM Volunteers WHERE name='{name}' AND date='{date}' AND shift='{shift}''
cursor.execute(query2)
db.commit()
return '请假成功'
# 关闭数据库连接
cursor.close()
db.close()
3. 审批功能实现
系统中的换班、调班和请假功能都需要管理员审批。可以添加一个管理员账号,并使用 if 语句判断用户身份,只有管理员才能进行审批操作。例如:
def approve_swap(name1, name2, date1, date2, shift):
# 判断当前用户是否为管理员
if current_user.is_admin():
# 审批通过
# ...
else:
return '您没有权限审批'
4. 联网功能
可以使用 Flask 或 Django 等 Web 框架将代码部署到 Web 服务器上,并使用 HTML 和 JavaScript 创建用户界面,实现联网功能。
总结
本代码是一个简单的图书馆志愿者值班管理系统示例,可以根据实际需求进行扩展和完善,例如:
- 添加用户角色管理,例如管理员、志愿者等。
- 使用 Flask 或 Django 构建 Web 界面,实现更友好的用户交互。
- 使用其他数据库或文件格式存储值班信息。
- 添加其他功能,例如自动提醒值班人员等。
本系统可以帮助图书馆管理者更方便地管理志愿者值班,提高效率和管理水平。
原文地址: https://www.cveoy.top/t/topic/npvK 著作权归作者所有。请勿转载和采集!