吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7253|回复: 133
上一主题 下一主题
收起左侧

[其他原创] 解决中小规模公司会议室预约痛点的小软件:MRS

    [复制链接]
跳转到指定楼层
楼主
popcfan 发表于 2025-8-12 23:52 回帖奖励
本帖最后由 popcfan 于 2025-8-13 09:05 编辑

会议室预约系统(MRS 1.6)项目及使用说明


项目简介
会议室预约系统(Meeting Room Scheduler, MRS)本人用AI开发的、基于 Python Flask 框架开发的轻量级会议室管理工具,采用 SQLite 数据库存储数据,无需复杂部署即可快速使用。系统致力于解决团队中会议室预约混乱、冲突等问题,通过直观的界面展示和便捷的操作流程,帮助用户高效管理会议室资源,提升协作效率。

功能特点核心功能
多角色权限管理:支持普通用户与管理员双角色,管理员拥有系统全权限
完整预约流程:用户可查看、创建、编辑、删除个人预约,实时检测时间冲突
可视化日程展示:以日历视图和列表视图两种形式展示未来 7 天预约情况,支持按日期 / 会议室分组查看
会议室管理:支持添加、编辑、删除会议室信息(名称、容量、位置、描述)
用户管理:管理员可创建、禁用用户账号,分配管理员权限

系统优势
轻量部署:单文件运行,无需复杂配置,支持无internet环境的局域网使用
数据安全:采用密码哈希存储,保护用户信息安全
响应式设计:界面适配不同设备屏幕,兼顾电脑与移动设备使用
操作简洁:直观的视觉布局,减少学习成本,用户上手即用

技术架构
开发语言:Python 3.x
Web 框架:Flask
数据库:SQLite(无需额外安装数据库服务)
前端技术:HTML5 + CSS3(原生实现,无额外依赖)
安全机制:密码哈希加密(werkzeug.security

安装说明环境准备
1. 确保已安装 Python 3.6 及以上版本2. 安装依赖库:
pip install flask flask-sqlalchemy werkzeug

部署步骤
1. 下载项目文件 MRS1.6 吾爱发布.zip 并解压到本地目录
2. 进入解压后的文件夹,运行启动命令:
python MSR1.6.py

使用指南
1. 打开浏览器,访问本地服务地址(默认:http://本机IP地址:5001
2. 系统首次运行会自动创建数据库文件 meeting_rooms.db 并初始化数据


初始账号
管理员账号:admin
初始密码:admin123
建议登录后立即修改管理员密码

登录系统
1. 访问系统首页会自动跳转至登录界面
2. 输入用户名和密码,点击 "登录" 按钮
3. 登录成功后进入系统主页,展示近七日会议室预约情况

普通用户操作查看预约
系统主页以日历表格形式展示所有会议室未来 7 天的预约安排
登录前可在登录页查看以日期分组的预约列表
个人预约以绿色背景标注,他人预约以橙色背景标注

预约会议室
1. 点击导航栏中的 "预约会议室"
2. 选择会议室、预约日期和时间段
3. 填写会议用途(可选)
4. 点击 "提交预约",系统会自动检测时间冲突并提示

管理个人预约
1. 点击导航栏中的 "我的预约" 查看所有个人预约记录
2. 可对未开始的预约进行编辑或删除操作
3. 已过期的预约仅支持查看,不支持修改

修改密码
1. 点击导航栏中的 "修改密码"
2. 输入原密码和新密码
3. 确认新密码后提交修改

管理员操作
管理员除拥有普通用户的所有权限外,还可进行以下操作:
管理会议室
1. 点击导航栏中的 "管理会议室"
2. 可查看所有会议室列表,支持添加新会议室
3. 对已有会议室可进行编辑(名称、容量、位置等)或删除操作
管理所有预约
1. 点击导航栏中的 "管理所有预约"
2. 可查看系统中所有预约记录,支持删除任意预约
3. 可按会议室或日期筛选预约记录
管理用户
1. 点击导航栏中的 "管理用户"
2. 可创建新用户账号,设置用户名和初始密码
3. 可编辑用户权限(设置为管理员或普通用户)
4. 支持删除用户账号(关联预约会一并删除)

界面说明登录页
顶部包含系统标题和登录表单
下方展示未来 7 天的预约列表,按日期分组
每条预约记录显示会议室名称、位置、时间段、用途和预约人
系统主页
顶部显示系统标题、当前登录用户和退出按钮
导航栏包含所有功能入口
主体区域以日历表格形式展示预约,左侧为会议室列表,顶部为日期导航

常见问题
1. 忘记密码怎么办?联系管理员重置密码管理员可在 "管理用户" 中修改任意用户的密码
2. 预约时提示冲突怎么办?查看该会议室的已有预约,选择其他时间段或更换其他会议室进行预约
3. 如何备份数据?数据库文件为 meeting_rooms.db,直接复制该文件即可备份恢复时将备份文件放回原目录覆盖即可
4. 能否多人同时使用?修改相关启动配置后,可运行于局域网内供局域网内任何人使用
5. 系统支持哪些浏览器?推荐使用 ChromeEdgeFirefox 等现代浏览器不建议使用 IE 浏览器,可能存在兼容性问题

注意事项
请定期备份数据库文件以防数据丢失
管理员账号拥有最高权限,请妥善保管
请勿随意修改代码中的数据库路径和密钥配置如有其他问题或功能建议,欢迎在本帖留言交流!




以下是关键代码:

1. 用户认证模块(登录与权限验证)

[Python] 纯文本查看 复制代码
from flask import session, redirect, url_for
from werkzeug.security import check_password_hash
from models import User  # 假设User为用户数据模型

def login_user(username, password):
    """用户登录验证函数"""
    user = User.query.filter_by(username=username).first()
    if not user:
        return {"status": False, "msg": "用户不存在"}
    # 验证密码(使用哈希值比对,不存储明文)
    if check_password_hash(user.password_hash, password):
        # 记录登录状态与权限
        session['user_id'] = user.id
        session['is_admin'] = user.is_admin  # 区分普通用户与管理员
        return {"status": True, "msg": "登录成功"}
    return {"status": False, "msg": "密码错误"}

def check_admin_permission():
    """验证管理员权限装饰器"""
    def decorator(func):
        def wrapper(*args, **kwargs):
            if not session.get('is_admin'):
                return redirect(url_for('no_permission'))  # 无权限跳转
            return func(*args, **kwargs)
        return wrapper
    return decorator

功能说明:实现用户登录密码验证(基于哈希加密)和管理员权限控制,是系统安全的核心模块。

2. 会议室预约冲突检测
[Python] 纯文本查看 复制代码
from datetime import datetime
from models import Reservation, MeetingRoom # 预约与会议室数据模型

def check_reservation_conflict(room_id, start_time, end_time, date):
"""检测会议室预约时间冲突"""
# 将日期与时间拼接为完整datetime对象
start = datetime.strptime(f"{date} {start_time}", "%Y-%m-%d %H:%M")
end = datetime.strptime(f"{date} {end_time}", "%Y-%m-%d %H:%M")

# 查询同一会场的已有预约
existing = Reservation.query.filter_by(room_id=room_id, date=date).all()
for res in existing:
res_start = datetime.strptime(f"{date} {res.start_time}", "%Y-%m-%d %H:%M")
res_end = datetime.strptime(f"{date} {res.end_time}", "%Y-%m-%d %H:%M")
# 时间重叠检测逻辑
if not (end <= res_start or start >= res_end):
return True # 存在冲突
return False # 无冲突

def create_reservation(user_id, room_id, date, start_time, end_time, purpose):
"""创建预约(含冲突检测)"""
if check_reservation_conflict(room_id, start_time, end_time, date):
return {"status": False, "msg": "该时间段已被预约,请选择其他时间"}
# 无冲突则创建新预约
new_res = Reservation(
user_id=user_id,
room_id=room_id,
date=date,
start_time=start_time,
end_time=end_time,
purpose=purpose
)
db.session.add(new_res)
db.session.commit()
return {"status": True, "msg": "预约成功"}

功能说明:通过时间重叠算法检测预约冲突,是会议室资源管理的核心逻辑,直接影响系统可用性。

3. 预约数据查询与展示
[Python] 纯文本查看 复制代码
from flask import render_template
from datetime import datetime, timedelta
from models import Reservation, MeetingRoom

def get_weekly_reservations():
    """获取未来7天的所有预约数据"""
    today = datetime.now().date()
    # 生成未来7天日期列表
    dates = [today + timedelta(days=i) for i in range(7)]
    weekly_data = {}
    
    for date in dates:
        # 按日期查询预约,关联会议室信息
        reservations = Reservation.query.filter_by(date=date).join(
            MeetingRoom, Reservation.room_id == MeetingRoom.id
        ).with_entities(
            MeetingRoom.name, MeetingRoom.location,
            Reservation.start_time, Reservation.end_time,
            Reservation.purpose, Reservation.user_id
        ).all()
        # 格式化数据为前端可展示的结构
        weekly_data[str(date)] = [
            {
                "room": res.name,
                "location": res.location,
                "time": f"{res.start_time}-{res.end_time}",
                "purpose": res.purpose,
                "user": res.user_id
            } for res in reservations
        ]
    return weekly_data

功能说明:实现未来 7 天预约数据的查询、关联与格式化,是前端展示预约信息的核心数据来源。

MRS1.6 吾爱发布.zip

109.03 KB, 下载次数: 335, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 23吾爱币 +27 热心值 +18 收起 理由
522060 + 1 谢谢@Thanks!
Gandalf + 1 谢谢@Thanks!
松仔 + 1 谢谢@Thanks!
yec5027 + 1 我很赞同!
jingguojing + 1 + 1 可以增加会议室关联吗,比如我借用1会议室,23会议室也参会,可以勾选23会 ...
精妹 + 1 用心讨论,共获提升!
jaffa + 1 谢谢@Thanks!
vethenc + 1 + 1 谢谢@Thanks!
天之牙2012 + 1 + 1 谢谢@Thanks!
cxb2468 + 1 + 1 我很赞同!
yzy93 + 1 + 1 谢谢@Thanks!
rkd5rkd + 1 我很赞同!
dlz0114 + 1 + 1 谢谢@Thanks!
arphy + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gqdsc + 1 谢谢@Thanks!
anning666 + 1 + 1 我很赞同!
SPYdashuaige + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
mmww0703 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yeek2006 + 1 + 1 我很赞同!
bfgxp + 1 + 1 我很赞同!
suiyuerxi + 1 我很赞同!
jnct + 1 谢谢@Thanks!
hrh123 + 10 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| popcfan 发表于 2025-8-13 11:11 |楼主
cm666zfkj 发表于 2025-8-13 11:10
为啥进不去,一直转圈。

截图和debug窗口的截图发上来看看
推荐
yh21cn 发表于 2025-8-13 07:28
好东西,提2个建议:1,支持批量用户导入功能;2、点我的预约---新增预约后,在下方能不能显示已经预约的列表,这样就不会出现与已有预约会议冲突的情况。
3#
苏紫方璇 发表于 2025-8-13 00:21
代码插入可以参考置顶帖
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thread-713042-1-1.html
(出处: 吾爱破解论坛)
4#
wyesheng 发表于 2025-8-13 00:22
虽用不上,但感谢发布。
5#
HELLOCE 发表于 2025-8-13 01:22
非常完美,但是我们公司绝不使用,比较一年会议费还是够领导吃饱了,对个人而已还是非常棒的
6#
jandyx 发表于 2025-8-13 04:50
好东西,收藏了
7#
andyle 发表于 2025-8-13 07:04
安排来安排去,不都是领导一句话的事情
8#
TangTonT 发表于 2025-8-13 07:15
软件是好软件,初衷也好。奈何我们单位 文山会海,经常会议拖堂……领倒太能说……感谢分享,留存备用
9#
rgtest 发表于 2025-8-13 07:19
挺实用的
10#
zhlezhi 发表于 2025-8-13 07:34
看来是工作中遇见的痛点促使作者开发了这样一个系统,厉害&#128077;&#128077;&#128077;&#128077;&#128077;&#128077;
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-7-21 03:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表