我们提供学生信息管理系统招投标所需全套资料,包括学工系统介绍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的功能,或者把界面做得更漂亮一些。
好了,今天的分享就到这里啦。希望大家都能动手试试,用代码解决生活中的小问题!