物品复活平台是一个帮助大学生处理闲置物品的 Web 应用。许多大学生拥有一些觉得扔掉可惜、不处理又占地方的物品,通过这个平台,用户可以方便地发布、查找和交易闲置物品,让它们"复活"并找到新主人。
-
� 用户认证系统
- 用户登录功能
- 基于用户名密码的身份认证
- 用户数据存储(users.json)
- 登录后显示个性化欢迎信息
- 退出登录功能
- 默认账号:admin/admin123、user1/password1
-
�📝 添加物品
- 支持输入物品名称、分类、描述和联系方式
- 支持上传物品图片
- 自动生成物品 ID 和创建时间
- 13 种物品分类:书籍、数码、居家、食品、美妆、票券、衣饰、鞋包、运动、文具、玩具、乐器、其他
- 物品名称和联系方式必填验证
-
🗑️ 删除物品
- 通过物品 ID 删除物品信息
- 自动删除关联的物品图片
- 删除操作带有验证和错误提示
- 输入验证(ID 必须为数字)
-
📋 显示物品列表
- 卡片式展示所有物品
- 显示物品图片、分类、描述、联系方式等完整信息
- 响应式布局,自适应不同屏幕尺寸
- 支持实时刷新
- 图片懒加载和优化显示
-
🔍 查找物品
- 支持关键词搜索(物品名称和描述)
- 支持多标签分类筛选
- 支持组合查询(关键词 + 多个分类)
- 搜索结果以卡片形式展示
- 显示搜索结果数量
-
📧 智能联系方式识别
- 自动识别邮箱地址并生成 mailto 链接
- 自动识别手机号码并生成 tel 链接
- 自动识别 QQ 号并生成临时会话链接
- 点击即可直接联系卖家
-
🎨 用户界面
- 基于 Gradio 框架的现代化 Web 界面
- 响应式卡片布局
- 自定义 CSS 样式(style.css)
- Tab 页面分离不同功能
- 友好的交互提示和错误处理
- 个性化欢迎信息
- 后端框架: Gradio
- 数据存储: JSON 文件(items.json、users.json)
- 图片处理: shutil, os
- 样式: 自定义 CSS (style.css)
- 配置管理: python-dotenv
- 身份认证: Gradio auth 模块
- 联系方式识别: 正则表达式
- Windows
- Python 3.13
- 克隆项目
git clone https://github.com/victorzhu30/CS3331-Software-Engineering-Project1.git
cd CS3331-Software-Engineering-Project1- 安装依赖
conda create -n item_revival python=3.13.5 -y
conda activate item_revival
pip install -r requirements.txt- 运行程序
python main.py- 访问应用
程序启动后会显示登录页面,使用默认账号登录:
- 用户名:
admin密码:admin123 - 用户名:
user1密码:password1
访问地址通常是 http://127.0.0.1:7860。
- 打开浏览器访问应用地址
- 输入用户名和密码
- 点击登录进入系统
- 登录成功后会显示个性化欢迎信息
- 切换到"📝 添加物品"标签页
- 填写物品名称(必填)
- 选择物品分类
- 填写物品描述
- 填写联系方式(必填,支持邮箱、手机号、QQ号)
- 上传物品图片(可选)
- 点击"添加物品"按钮
- 添加成功后输入框自动清空
- 切换到"🗑️ 删除物品"标签页
- 在物品列表中找到要删除的物品 ID
- 输入物品 ID
- 点击"删除物品"按钮
- 切换到"📋 物品列表"标签页
- 查看所有已发布的物品
- 点击"🔄 刷新列表"获取最新数据
- 切换到"🔍 查找物品"标签页
- 输入搜索关键词(可选)
- 选择一个或多个物品分类(支持多选,可选)
- 点击"搜索"按钮
- 查看搜索结果数量和匹配的物品
- 点击邮箱地址:自动打开邮件客户端
- 点击手机号码:自动拨打电话(移动设备)
- 点击 QQ 号:打开 QQ 临时会话
点击"🚪 退出登录"按钮即可退出系统
- 使用 Gradio 的
auth参数实现登录功能 - 用户数据存储在
users.json文件中 - 通过
gr.Request对象获取当前登录用户信息 - 支持自定义认证函数验证用户名密码
使用 JSON 文件存储物品信息,每个物品包含以下字段:
{
"id": 1,
"name": "二手自行车",
"category": "运动",
"description": "Specialized 品牌",
"contact": "18952050888",
"image": "images/item_1_20251016_201104.jpg",
"create_time": "2025-10-16 20:11:04"
}- 上传的图片自动保存到
images/目录 - 文件名格式:
item_{id}_{timestamp}{ext} - 删除物品时自动清理关联图片
- 使用 Gradio 的
allowed_paths机制安全展示图片 - 支持图片缺失时显示占位符
-
多标签检索✅ -
登录功能✅ -
邮箱/手机号/QQ号自动识别并生成链接✅ - 用户注册功能
- 用户能够查看自己上传的物品
- 物品编辑功能
- 物品状态管理(已售出/已赠送)
- 使用 MySQL 数据库替代 JSON 文件
- 迁移到 Flask/FastAPI 框架
- 🔐 用户认证系统: 完整的登录功能,支持多用户管理
- 🎨 现代化 UI: 采用卡片式布局,响应式设计,视觉美观
- 🔍 智能搜索: 支持多标签筛选和关键词组合查询
- 📧 智能识别: 自动识别并格式化邮箱、手机号、QQ号等联系方式
- 🖼️ 图片支持: 完整的图片上传、存储、展示和删除功能
- ✅ 完整闭环: 实现了用户登录、物品添加、删除、查看、搜索的完整流程
- 🚀 易于部署: 基于 Gradio 框架,无需复杂配置即可运行
- 📦 模块化设计: 代码结构清晰,便于维护和扩展
- Fork 本仓库
- 创建新的功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目采用 Apache License 2.0 开源协议。详见 LICENSE 文件。
如有问题或建议,请通过以下方式联系:
- GitHub Issues: 项目 Issues 页面
- GitHub: @victorzhu30
让闲置物品找到新主人,让资源得到更好的利用! 🌟