我们提供学生信息管理系统招投标所需全套资料,包括学工系统介绍PPT、学生管理系统产品解决方案、
学生管理系统产品技术参数,以及对应的标书参考文件,详请联系客服。
大家好!今天咱们聊聊如何用编程技术解决实际问题。最近有朋友问我:“能不能做个系统帮我们学校管理学生的工时?”我说这事儿不难,用Python就能搞定。特别是如果你在北京,很多高校都有类似的需求,比如清华、北大这些地方,学生们做助教、助研啥的,都需要记录工时呢。
首先,我们要明确需求。这个系统主要干三件事:一是记录学生的基本信息(姓名、学号、联系方式等);二是记录每个学生参与工作的详细情况(工作类型、开始时间、结束时间等);三是能根据这些数据统计出每个学生的工作时长。听起来是不是挺简单?那咱们就动手吧!

先说环境搭建。我用的是Python 3.9,安装了几个必要的库:
- `sqlite3`:用来操作数据库。
- `tkinter`:用来做一个简单的图形界面。
第一步是建数据库。我们创建一个名为 `student_work.db` 的文件,里面包含两个表——一个是学生表,另一个是工作记录表。下面是具体的SQL语句:
import sqlite3
# 连接数据库
conn = sqlite3.connect('student_work.db')
cursor = conn.cursor()
# 创建学生表
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
student_id TEXT UNIQUE NOT NULL,
phone TEXT
)
''')
# 创建工作记录表
cursor.execute('''
CREATE TABLE IF NOT EXISTS work_records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id INTEGER,
work_type TEXT NOT NULL,
start_time TEXT NOT NULL,
end_time TEXT NOT NULL,
FOREIGN KEY(student_id) REFERENCES students(id)
)
''')
conn.commit()
conn.close()
接下来是写界面。这里用 `tkinter` 来做一个窗口,用户可以在界面上输入学生信息并提交。比如添加学生按钮会触发下面这段代码:
from tkinter import *
from datetime import datetime
def add_student():
name = entry_name.get()
student_id = entry_student_id.get()
phone = entry_phone.get()
conn = sqlite3.connect('student_work.db')
cursor = conn.cursor()
try:
cursor.execute("INSERT INTO students (name, student_id, phone) VALUES (?, ?, ?)",
(name, student_id, phone))
conn.commit()
status_label.config(text="学生已成功添加!")
except Exception as e:
status_label.config(text=f"添加失败:{e}")
finally:
conn.close()
root = Tk()
root.title("学工管理系统")
Label(root, text="姓名").grid(row=0, column=0)
entry_name = Entry(root)
entry_name.grid(row=0, column=1)
Label(root, text="学号").grid(row=1, column=0)
entry_student_id = Entry(root)
entry_student_id.grid(row=1, column=1)
Label(root, text="电话").grid(row=2, column=0)
entry_phone = Entry(root)
entry_phone.grid(row=2, column=1)
Button(root, text="添加学生", command=add_student).grid(row=3, column=0, columnspan=2)
status_label = Label(root, text="")
status_label.grid(row=4, column=0, columnspan=2)
root.mainloop()
最后一步就是统计工时啦。我们可以写个函数,根据工作记录表里的开始时间和结束时间计算总时长:
def calculate_total_hours(student_id):
conn = sqlite3.connect('student_work.db')
cursor = conn.cursor()
cursor.execute("SELECT start_time, end_time FROM work_records WHERE student_id = ?", (student_id,))
records = cursor.fetchall()
total_hours = 0
for record in records:
start = datetime.strptime(record[0], "%Y-%m-%d %H:%M:%S")
end = datetime.strptime(record[1], "%Y-%m-%d %H:%M:%S")
total_hours += (end - start).total_seconds() / 3600
return total_hours
这样我们就完成了一个简单的学工管理系统!虽然功能还不算复杂,但已经能满足北京高校的基本需求了。如果有兴趣的话,大家可以继续优化,比如增加导出Excel的功能,或者把界面做得更漂亮一些。
好了,今天的分享就到这里啦。希望大家都能动手试试,用代码解决生活中的小问题!