X 
微信扫码联系客服
获取报价、解决方案


李经理
13913191678
首页 > 知识库 > 学工管理系统> 人工智能在宿舍管理中的应用与实践
学工管理系统在线试用
学工管理系统
在线试用
学工管理系统解决方案
学工管理系统
解决方案下载
学工管理系统源码
学工管理系统
源码授权
学工管理系统报价
学工管理系统
产品报价

人工智能在宿舍管理中的应用与实践

2026-02-09 10:46

小明:嘿,李老师,我最近在研究人工智能,听说它在学工管理中也有不少应用?

李老师:是的,小明。特别是宿舍管理方面,AI可以发挥很大的作用。比如自动识别学生信息、监控安全情况、优化资源分配等。

小明:听起来很厉害!那具体怎么实现呢?有没有什么例子或者代码可以参考?

李老师:当然有。我们可以用Python来写一个简单的宿舍管理系统,结合人脸识别和数据处理技术。

小明:那我可以试试看。不过我对Python不太熟悉,能给我讲讲基本结构吗?

李老师:好的,我们先从数据库设计开始。宿舍管理需要存储学生信息、宿舍分配、入住状态等。

小明:明白了。那数据库应该用什么工具呢?MySQL还是SQLite?

李老师:两者都可以,但如果你只是做演示或小型项目,SQLite更方便,不需要额外配置。

小明:好的,那我们就用SQLite吧。接下来是不是要写一些Python代码来操作数据库?

李老师:没错。我们可以用Python的sqlite3模块来连接数据库,进行增删改查操作。

小明:那我先写个创建表的代码,看看能不能运行。

李老师:好,下面是创建学生表和宿舍表的代码:

import sqlite3

conn = sqlite3.connect('dormitory.db')

cursor = conn.cursor()

# 创建学生表

cursor.execute('''

CREATE TABLE IF NOT EXISTS students (

id INTEGER PRIMARY KEY AUTOINCREMENT,

name TEXT NOT NULL,

student_id TEXT NOT NULL UNIQUE,

dorm_number TEXT NOT NULL,

check_in_date DATE

)

''')

# 创建宿舍表

cursor.execute('''

CREATE TABLE IF NOT EXISTS dorms (

id INTEGER PRIMARY KEY AUTOINCREMENT,

number TEXT NOT NULL UNIQUE,

capacity INTEGER NOT NULL,

学工管理系统

occupied INTEGER DEFAULT 0

)

''')

conn.commit()

conn.close()

小明:这段代码看起来没问题。那接下来怎么添加学生信息呢?

李老师:我们可以写一个函数来插入学生数据,同时更新宿舍的占用人数。

小明:那我试一下,假设我要添加一个叫张三的学生,学号是2023001,住在301宿舍。

李老师:好的,以下是插入学生的代码:

def add_student(name, student_id, dorm_number):

conn = sqlite3.connect('dormitory.db')

cursor = conn.cursor()

# 检查宿舍是否还有空位

cursor.execute('SELECT capacity, occupied FROM dorms WHERE number = ?', (dorm_number,))

result = cursor.fetchone()

if not result:

print("宿舍不存在")

return

capacity, occupied = result

if occupied >= capacity:

print("宿舍已满")

return

# 插入学生信息

cursor.execute('INSERT INTO students (name, student_id, dorm_number) VALUES (?, ?, ?)',

(name, student_id, dorm_number))

# 更新宿舍占用人数

cursor.execute('UPDATE dorms SET occupied = occupied + 1 WHERE number = ?', (dorm_number,))

conn.commit()

conn.close()

print("学生添加成功")

# 示例调用

add_student("张三", "2023001", "301")

小明:这样就能把学生信息存进去了,还能自动更新宿舍的占用情况。太棒了!

李老师:是的,这样的系统可以大大减少人工操作,提高效率。

小明:那如果我想查询某个宿舍的当前入住情况呢?

李老师:我们可以写一个查询函数,返回宿舍的名称、容量和已住人数。

小明:那我来试试看,比如查询301宿舍的情况。

李老师:下面是查询函数的代码:

def get_dorm_info(dorm_number):

conn = sqlite3.connect('dormitory.db')

cursor = conn.cursor()

cursor.execute('SELECT number, capacity, occupied FROM dorms WHERE number = ?', (dorm_number,))

result = cursor.fetchone()

if not result:

print("宿舍不存在")

return

number, capacity, occupied = result

print(f"宿舍 {number}:总容量 {capacity},已入住 {occupied} 人")

conn.close()

# 示例调用

get_dorm_info("301")

小明:这样就能快速查看宿舍的使用情况了。那如果我要根据学生姓名查找他们住在哪个宿舍呢?

李老师:我们可以写一个查询学生所在宿舍的函数,如下所示:

def find_dorm_by_student(name):

conn = sqlite3.connect('dormitory.db')

cursor = conn.cursor()

cursor.execute('SELECT dorm_number FROM students WHERE name = ?', (name,))

result = cursor.fetchone()

if not result:

print("未找到该学生")

return

dorm_number = result[0]

print(f"{name} 住在宿舍 {dorm_number}")

conn.close()

# 示例调用

find_dorm_by_student("张三")

小明:这样就实现了学生到宿舍的映射,很方便。

李老师:是的,这样的功能在实际工作中非常实用,尤其是在新生入学时,可以快速安排宿舍。

小明:那如果我们想加入人脸识别功能,让系统自动识别学生进入宿舍,会不会更智能?

李老师:当然可以。我们可以使用OpenCV库来实现人脸识别,再结合上述的数据库系统。

小明:那具体怎么做呢?有没有示例代码?

李老师:下面是一个简单的人脸识别程序,用于检测并识别进入宿舍的学生,并将信息记录到数据库中。

小明:听起来有点复杂,但我可以尝试。

李老师:好的,首先我们需要训练一个人脸识别模型,这里我们可以使用face_recognition库。

小明:那我得先安装这个库,对吧?

李老师:是的,你可以用pip install face-recognition来安装。

小明:明白了。那现在我应该怎么训练模型呢?

李老师:你需要准备一些学生的人脸照片,然后用这些照片训练模型。以下是一个简单的训练脚本:

import face_recognition

import os

# 存放人脸图片的文件夹

image_folder = 'faces'

# 加载已知人脸

known_face_encodings = []

known_face_names = []

for filename in os.listdir(image_folder):

if filename.endswith(".jpg") or filename.endswith(".png"):

image_path = os.path.join(image_folder, filename)

image = face_recognition.load_image_file(image_path)

face_encoding = face_recognition.face_encodings(image)[0]

known_face_encodings.append(face_encoding)

known_face_names.append(filename.split('.')[0])

# 保存训练好的模型

with open('face_model.pkl', 'wb') as f:

import pickle

pickle.dump((known_face_encodings, known_face_names), f)

小明:这样就训练好了模型,接下来就可以用来识别进入宿舍的学生了。

李老师:是的,下面是一个实时识别的脚本,用于检测摄像头中的人脸,并与数据库匹配。

import face_recognition

import cv2

import sqlite3

import pickle

# 加载训练好的模型

with open('face_model.pkl', 'rb') as f:

known_face_encodings, known_face_names = pickle.load(f)

# 打开摄像头

video_capture = cv2.VideoCapture(0)

学工管理

while True:

ret, frame = video_capture.read()

rgb_frame = frame[:, :, ::-1]

# 检测人脸

face_locations = face_recognition.face_locations(rgb_frame)

face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)

for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):

# 匹配人脸

matches = face_recognition.compare_faces(known_face_encodings, face_encoding)

name = "未知"

if True in matches:

first_match_index = matches.index(True)

name = known_face_names[first_match_index]

# 在图像上标注名字

cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)

cv2.putText(frame, name, (left + 6, bottom - 6), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)

# 如果是已知学生,记录到数据库

if name != "未知":

conn = sqlite3.connect('dormitory.db')

cursor = conn.cursor()

cursor.execute('SELECT dorm_number FROM students WHERE name = ?', (name,))

result = cursor.fetchone()

if result:

dorm_number = result[0]

print(f"{name} 进入宿舍 {dorm_number}")

conn.close()

# 显示画面

cv2.imshow('Video', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

video_capture.release()

cv2.destroyAllWindows()

小明:哇,这太酷了!这样就能自动识别学生并记录他们的进出情况了。

李老师:是的,这就是人工智能在宿舍管理中的实际应用之一。通过这种方式,学校可以更高效地管理学生生活,提高安全性。

小明:那如果我想要扩展功能,比如统计每天的进出人数,或者生成报表呢?

李老师:我们可以写一个定时任务,每天晚上自动生成报告,并发送给管理员。

小明:听起来不错,那我可以试着写一个生成日报的脚本。

李老师:是的,下面是一个简单的例子,用于统计某天的进出记录:

import sqlite3

from datetime import datetime

def generate_daily_report(date):

conn = sqlite3.connect('dormitory.db')

cursor = conn.cursor()

cursor.execute('SELECT name, dorm_number, check_in_date FROM students WHERE check_in_date = ?', (date,))

results = cursor.fetchall()

if not results:

print("当天无记录")

return

print(f"日期: {date}")

for row in results:

name, dorm_number, check_in_date = row

print(f"姓名: {name}, 宿舍: {dorm_number}, 入住时间: {check_in_date}")

conn.close()

# 示例调用

today = datetime.now().strftime('%Y-%m-%d')

generate_daily_report(today)

小明:这样就能生成每日的出入记录了,还可以进一步分析数据,比如哪些宿舍最繁忙。

李老师:没错,这样的系统可以为学校提供数据支持,帮助优化资源配置。

小明:我觉得这个项目很有意义,不仅提升了宿舍管理的智能化水平,也让我对人工智能有了更深的理解。

李老师:是的,科技正在改变我们的生活,而你已经走在了前沿。

小明:谢谢李老师,我会继续努力的!

李老师:加油,期待看到你的成果!

本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!

标签: