Skip to content

victorzhu30/CS3331-Software-Engineering-Project1

Repository files navigation

物品复活平台 🔄

项目简介

物品复活平台是一个帮助大学生处理闲置物品的 Web 应用。许多大学生拥有一些觉得扔掉可惜、不处理又占地方的物品,通过这个平台,用户可以方便地发布、查找和交易闲置物品,让它们"复活"并找到新主人。

功能特性

✅ 已实现功能

  1. � 用户认证系统

    • 用户登录功能
    • 基于用户名密码的身份认证
    • 用户数据存储(users.json)
    • 登录后显示个性化欢迎信息
    • 退出登录功能
    • 默认账号:admin/admin123、user1/password1
  2. �📝 添加物品

    • 支持输入物品名称、分类、描述和联系方式
    • 支持上传物品图片
    • 自动生成物品 ID 和创建时间
    • 13 种物品分类:书籍、数码、居家、食品、美妆、票券、衣饰、鞋包、运动、文具、玩具、乐器、其他
    • 物品名称和联系方式必填验证
  3. 🗑️ 删除物品

    • 通过物品 ID 删除物品信息
    • 自动删除关联的物品图片
    • 删除操作带有验证和错误提示
    • 输入验证(ID 必须为数字)
  4. 📋 显示物品列表

    • 卡片式展示所有物品
    • 显示物品图片、分类、描述、联系方式等完整信息
    • 响应式布局,自适应不同屏幕尺寸
    • 支持实时刷新
    • 图片懒加载和优化显示
  5. 🔍 查找物品

    • 支持关键词搜索(物品名称和描述)
    • 支持多标签分类筛选
    • 支持组合查询(关键词 + 多个分类)
    • 搜索结果以卡片形式展示
    • 显示搜索结果数量
  6. 📧 智能联系方式识别

    • 自动识别邮箱地址并生成 mailto 链接
    • 自动识别手机号码并生成 tel 链接
    • 自动识别 QQ 号并生成临时会话链接
    • 点击即可直接联系卖家
  7. 🎨 用户界面

    • 基于 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

安装步骤

  1. 克隆项目
git clone https://github.com/victorzhu30/CS3331-Software-Engineering-Project1.git
cd CS3331-Software-Engineering-Project1
  1. 安装依赖
conda create -n item_revival python=3.13.5 -y
conda activate item_revival
pip install -r requirements.txt
  1. 运行程序
python main.py
  1. 访问应用

程序启动后会显示登录页面,使用默认账号登录:

  • 用户名: admin 密码: admin123
  • 用户名: user1 密码: password1

访问地址通常是 http://127.0.0.1:7860

使用指南

登录系统

  1. 打开浏览器访问应用地址
  2. 输入用户名和密码
  3. 点击登录进入系统
  4. 登录成功后会显示个性化欢迎信息

添加物品

  1. 切换到"📝 添加物品"标签页
  2. 填写物品名称(必填)
  3. 选择物品分类
  4. 填写物品描述
  5. 填写联系方式(必填,支持邮箱、手机号、QQ号)
  6. 上传物品图片(可选)
  7. 点击"添加物品"按钮
  8. 添加成功后输入框自动清空

删除物品

  1. 切换到"🗑️ 删除物品"标签页
  2. 在物品列表中找到要删除的物品 ID
  3. 输入物品 ID
  4. 点击"删除物品"按钮

查看物品列表

  1. 切换到"📋 物品列表"标签页
  2. 查看所有已发布的物品
  3. 点击"🔄 刷新列表"获取最新数据

搜索物品

  1. 切换到"🔍 查找物品"标签页
  2. 输入搜索关键词(可选)
  3. 选择一个或多个物品分类(支持多选,可选)
  4. 点击"搜索"按钮
  5. 查看搜索结果数量和匹配的物品

联系卖家

  • 点击邮箱地址:自动打开邮件客户端
  • 点击手机号码:自动拨打电话(移动设备)
  • 点击 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 框架

项目亮点

  1. 🔐 用户认证系统: 完整的登录功能,支持多用户管理
  2. 🎨 现代化 UI: 采用卡片式布局,响应式设计,视觉美观
  3. 🔍 智能搜索: 支持多标签筛选和关键词组合查询
  4. 📧 智能识别: 自动识别并格式化邮箱、手机号、QQ号等联系方式
  5. 🖼️ 图片支持: 完整的图片上传、存储、展示和删除功能
  6. ✅ 完整闭环: 实现了用户登录、物品添加、删除、查看、搜索的完整流程
  7. 🚀 易于部署: 基于 Gradio 框架,无需复杂配置即可运行
  8. 📦 模块化设计: 代码结构清晰,便于维护和扩展

开发建议

  1. Fork 本仓库
  2. 创建新的功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

许可证

本项目采用 Apache License 2.0 开源协议。详见 LICENSE 文件。

联系方式

如有问题或建议,请通过以下方式联系:

让闲置物品找到新主人,让资源得到更好的利用! 🌟

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors