小明:嘿,小李,我最近在研究学校的学生管理系统,想看看能不能添加一个请假功能。你对这个有经验吗?
小李:哦,你好啊!你说的请假功能,应该是指学生可以在线提交请假申请,然后老师审批对吧?这在学生管理系统里很常见。
小明:对,就是这个意思。不过我还不太清楚具体怎么实现,你能教我吗?
小李:当然可以!我们可以先从数据库设计开始。请假功能需要一个专门的表来存储学生的请假信息。
小明:那表结构应该怎么设计呢?比如有哪些字段?
小李:通常会有这些字段:请假ID、学生ID、姓名、班级、请假类型(事假、病假等)、开始时间、结束时间、请假原因、状态(待审批/已批准/已拒绝)以及审批人等。
小明:明白了。那在Python中,我们怎么操作数据库呢?
小李:我们可以使用SQLite或者MySQL这样的数据库,配合Python的SQLAlchemy或者直接用sqlite3模块。
小明:那我可以写一个简单的示例代码吗?
小李:当然可以!下面是一个用Python和SQLite实现请假功能的例子。
import sqlite3
# 创建数据库连接
conn = sqlite3.connect('student_management.db')
cursor = conn.cursor()
# 创建请假表

cursor.execute('''
CREATE TABLE IF NOT EXISTS leave_requests (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id TEXT NOT NULL,
name TEXT NOT NULL,
class TEXT NOT NULL,
leave_type TEXT NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
reason TEXT NOT NULL,
status TEXT DEFAULT 'pending',
approver TEXT
)
''')
# 提交更改
conn.commit()
小明:这段代码看起来不错。那接下来怎么插入一条请假记录呢?
小李:你可以使用INSERT语句。比如:
cursor.execute('''
INSERT INTO leave_requests
(student_id, name, class, leave_type, start_date, end_date, reason)
VALUES (?, ?, ?, ?, ?, ?, ?)
''', ('S123456', '张三', '高一(3)班', '事假', '2025-04-05', '2025-04-07', '家里有事'))
conn.commit()
小明:这样就插入了一条请假记录。那如何查询呢?
小李:可以用SELECT语句,比如查找所有待审批的请假请求:
cursor.execute('SELECT * FROM leave_requests WHERE status = "pending"')
results = cursor.fetchall()
for row in results:
print(row)
小明:明白了。那如果我要更新请假状态,比如批准或拒绝,怎么做?
小李:可以用UPDATE语句。例如,将某条请假记录的状态改为“已批准”:
cursor.execute('UPDATE leave_requests SET status = "approved", approver = "王老师" WHERE id = ?', (1,))
conn.commit()
小明:这样就可以完成审批操作了。那前端怎么展示这些数据呢?
小李:前端可以用HTML和JavaScript,后端用Flask或Django框架来处理请求。比如,用户点击“提交请假”,前端发送POST请求到后端,后端调用上面的数据库操作函数。
小明:那我们可以用Flask来搭建一个简单的Web界面吗?
小李:是的,下面是一个简单的Flask示例,用于显示请假列表。
from flask import Flask, render_template
import sqlite3
app = Flask(__name__)
@app.route('/leave_requests')
def show_leave_requests():
conn = sqlite3.connect('student_management.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM leave_requests')
requests = cursor.fetchall()
conn.close()
return render_template('leave_list.html', requests=requests)
if __name__ == '__main__':
app.run(debug=True)
小明:这个例子中,我们需要一个模板文件leave_list.html,用来展示请假数据。
小李:没错,下面是一个简单的HTML模板示例:
请假申请列表
| ID | 学生ID | 姓名 | 班级 | 请假类型 | 开始时间 | 结束时间 | 原因 | 状态 | 审批人 |
|---|---|---|---|---|---|---|---|---|---|
| {{ request[0] }} | {{ request[1] }} | {{ request[2] }} | {{ request[3] }} | {{ request[4] }} | {{ request[5] }} | {{ request[6] }} | {{ request[7] }} | {{ request[8] }} | {{ request[9] }} |
小明:这个模板就能把数据库中的数据展示出来了。那如果是昆明地区的学校,有没有什么特别需要注意的地方?
小李:昆明地区的学校可能有不同的学籍管理制度,比如少数民族学生、转学、休学等情况较多,所以请假系统需要支持更复杂的逻辑。
小明:比如,是否需要区分本地学生和外地学生?
小李:是的,可以在请假表中增加一个“来源地”字段,用来记录学生是否来自昆明本地。
小明:那这样的话,审批流程可能也会有所不同,比如外地学生请假需要额外审核。
小李:没错。此外,还可以加入一些自动化提醒功能,比如当请假超过一定天数时,系统自动通知班主任。
小明:听起来挺复杂的,但有了这些基础功能,基本能满足需求。
小李:是的。如果你有兴趣,我们可以一起开发一个完整的请假管理系统,结合昆明本地的教育政策,打造一个更贴近实际的系统。
小明:好主意!那我们现在就开始吧!
小李:那就从数据库设计开始,一步一步来。
本站部分内容及素材来源于互联网,如有侵权,联系必删!



客服经理