碳中和城市绿色出行积分系统,支持用户注册、登录、行程上报、积分累积与商品兑换。
- Python 3.8+(推荐 3.9 或更高版本)
- 现代浏览器(Chrome / Edge / Firefox 最新版)
打开 PowerShell 或命令提示符,执行:
python --version应显示 Python 3.8.x 或更高版本。
在 PowerShell 中进入项目文件夹:
cd C:\Users\LYT\Desktop\软件工程python -m venv .venv这会在当前目录创建 .venv 文件夹,用于隔离项目依赖。
.venv\Scripts\Activate.ps1注意:如果遇到"无法加载文件"错误,执行以下命令后重试:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser激活成功后,命令行前会显示 (.venv)。
pip install -r backend\requirements.txt安装 Flask 和 Flask-CORS 库,大约需要 10-30 秒。
在虚拟环境激活状态下,执行:
python backend\app.py成功标志:看到以下输出表示后端已启动
* Running on http://127.0.0.1:5000
* Restarting with stat
保持此窗口运行,不要关闭。
- 用文件资源管理器打开项目目录
C:\Users\LYT\Desktop\软件工程 - 找到
1.html文件 - 右键点击 → 选择"打开方式" → 选择你的浏览器(Chrome / Edge / Firefox)
或直接双击 1.html(会用默认浏览器打开)。
首次使用需要先注册账号:
- 页面打开后,点击"注册"标签
- 填写注册信息:
- 用户名:6-16 位字母或数字(例如:
zhangsan123) - 密码:至少 8 位(例如:
mypassword123) - 手机号:11 位手机号码(例如:
13800138000)
- 用户名:6-16 位字母或数字(例如:
- 点击"注册"按钮
- 看到"注册成功!欢迎加入绿色出行大家庭"提示表示成功
- 注册成功后会自动跳转到登录页面,右上角显示你的用户名
注意:注册成功后会自动登录并保存登录状态。
已有账号直接登录:
- 在"登录"标签下输入:
- 用户名
- 密码
- 点击"登录"按钮
- 看到"欢迎回来,xxx!"提示表示登录成功
- 右上角会显示"当前用户:你的用户名"
登录状态持久化:
- 关闭浏览器后再次打开页面,会自动恢复登录状态
- 无需重复登录
登录后即可上报绿色出行行程:
- 向下滚动到"🚗 行程上报"卡片
- 填写行程信息:
- 起点:例如"人民广场"(仅作说明,不影响计分)
- 终点:例如"徐家汇地铁站"(仅作说明,不影响计分)
- 交通方式:选择以下之一
- 共享单车
- 步行
- 公交
- 地铁
- 新能源车
- 距离(km):输入行程距离,如
3.5
- 点击"提交行程"按钮
- 看到"行程上报成功!获得 X 积分 🌟"提示
- 积分会自动更新到"当前总积分"和"可用积分"
积分规则:
- 骑行 / 步行:3 积分/公里
- 公交 / 地铁:1.5 积分/公里
- 新能源车:1 积分/公里
示例:
- 骑行 5 公里 → 获得 15 积分
- 地铁 8 公里 → 获得 12 积分
在"📊 积分明细"卡片中:
- 显示当前总积分
- 表格展示最近的行程记录(日期、行为、获得积分)
- 每次上报后会自动添加新记录到表格顶部
用积分兑换奖励:
- 向下滚动到"🎁 积分商城"卡片
- 查看"可用积分"(与总积分一致)
- 浏览商品:
- 共享单车月卡(200 积分,价值 30 元)
- 环保咖啡券(150 积分,价值 25 元)
- 绿植盆栽(80 积分,价值 15 元)
- 点击想兑换商品的"立即兑换"按钮
- 积分足够会提示"🎉 兑换成功!"
- 积分不足会提示"❌ 积分不足!还需要 X 积分"
- 兑换成功后积分会自动扣减
注意:兑换会立即扣除对应积分。
点击右上角"退出登录"按钮:
- 会清除本地登录状态
- 提示"已退出登录"
- 右上角变为"当前用户:未登录"
- 需要重新登录才能使用行程上报和兑换功能
软件工程/
├── 1.html # 前端页面
├── style.css # 页面样式
├── script.js # 前端逻辑(已接入后端 API)
├── backend/
│ ├── app.py # Flask 后端服务
│ └── requirements.txt # Python 依赖
└── README.md # 本文档
POST /api/register— 用户注册POST /api/login— 用户登录GET /api/me— 获取当前用户信息POST /api/trips— 提交行程(需登录)POST /api/redeem— 兑换商品(需登录)POST /api/logout— 退出登录
- 注意:用户初始积分(
user.sum_ji)为 0。
说明:这是正常现象。退出后积分显示为默认值(0),实际积分已保存在后端,重新登录后会从后端同步恢复。
2. 创建数据库(可选,亦可由程序自动创建,见环境变量):
sql CREATE DATABASE IF NOT EXISTS `greenpoints` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 配置后端环境变量(PowerShell 示例):
powershell setx DB_HOST "127.0.0.1" setx DB_PORT "3306" setx DB_USER "root" setx DB_PASSWORD "你的MySQL密码" setx DB_NAME "greenpoints" # 若需由程序自动创建数据库,设置为 1(需要有创建库权限) setx DB_CREATE_DB "1"
重新打开一个新的终端窗口后生效。
- 安装依赖并启动后端:
.venv\Scripts\Activate.ps1 pip install -r backend\requirements.txt python backend\app.py
程序启动时会自动创建以下表(如不存在):
CREATE TABLE `user` (
uid CHAR(10) PRIMARY KEY,
`password` CHAR(20),
phone_num CHAR(20),
sum_ji INT
);
CREATE TABLE `shop` (
sid CHAR(10) PRIMARY KEY,
sname CHAR(50),
`password` CHAR(20),
phone_num CHAR(20)
);
CREATE TABLE `points` (
uid CHAR(10) PRIMARY KEY,
date_time DATETIME,
movement ENUM('骑行','地铁出行','公交出行','步行','兑换'),
`distance` DOUBLE,
ji INT,
FOREIGN KEY (uid) REFERENCES `user`(uid)
);
CREATE TABLE `goods` (
gid INT PRIMARY KEY,
gname CHAR(50),
sid CHAR(10),
`count` INT,
`value` INT,
FOREIGN KEY (sid) REFERENCES `shop`(sid)
);- 使用浏览器
localStorage保存登录令牌 - 关闭浏览器后再打开会自动恢复登录
- 清除浏览器缓存会清空登录状态
解决:确保已激活虚拟环境并安装依赖
.venv\Scripts\Activate.ps1
pip install -r backend\requirements.txt原因:后端服务未启动或已关闭 解决:检查运行后端的 PowerShell 窗口是否还在运行,如果关闭了需要重新启动:
python backend\app.py原因:该用户名已被注册过 解决:换一个用户名重新注册
说明:这是正常现象。退出后积分显示为默认演示值(245),实际积分已保存在后端,重新登录后会恢复。
说明:行程记录表格只展示初始示例数据 + 本次会话新增记录,未持久化到后端历史记录。积分已正确累积。
说明:当前版本使用内存存储,重启后端会清空所有用户和积分数据。如需持久化,请自行扩展数据库存储。
Q7: 浏览器提示"无法连接到 http://127.0.0.1:5000"
检查:
- 后端服务是否正在运行
- 防火墙是否阻止了本地端口 5000
- 端口 5000 是否被其他程序占用
步骤:
- 修改
backend/app.py最后一行为:app.run(host="0.0.0.0", port=5000, debug=True)
- 修改
script.js第 5 行,将127.0.0.1改为你的电脑 IP 地址 - 确保手机和电脑在同一局域网
完整测试(5 分钟):
- 启动后端 → 打开前端页面
- 注册账号
testuser/ 密码12345678/ 手机13800138000 - 登录成功,右上角显示
testuser - 上报行程:骑行 10 公里 → 获得 30 积分 → 总积分变为 275
- 再上报:地铁 20 公里 → 获得 30 积分 → 总积分变为 305
- 兑换商品:共享单车月卡(200 积分)→ 剩余 105 积分
- 尝试兑换环保咖啡券(150 积分)→ 提示积分不足
- 点击"退出登录" → 右上角变为"未登录"
- 重新登录 → 积分恢复为 105
如有问题,请检查:
- Python 版本是否符合要求(3.8+)
- 虚拟环境是否正确激活
- 后端服务是否正在运行
- 浏览器控制台是否有错误信息(按 F12 打开开发者工具)
祝你使用愉快!为绿色出行贡献力量 🌱