同城拼车小程序
这是一个完整的同城拼车服务平台,包含微信小程序端和PC管理后台。系统实现了拼车信息发布、拼车搜索、订单管理、收藏、问题反馈等核心功能,支持乘客找车和司机找人两种模式,采用前后端分离架构,适合作为微信小程序全栈开发学习项目或计算机设计参考。
评分:4.8/5.0
销量:53
发布:2025/12/2
难度:L2 进阶级
项目封面

项目说明
同城拼车小程序
项目简介
这是一个完整的同城拼车服务平台,包含微信小程序端和PC管理后台。系统实现了拼车信息发布、拼车搜索、订单管理、收藏、问题反馈等核心功能,支持乘客找车和司机找人两种模式,采用前后端分离架构,适合作为微信小程序全栈开发学习项目或计算机设计参考。
技术栈
后端技术
| 技术 | 版本/说明 |
|---|---|
| 运行环境 | Node.js |
| Web框架 | Express 4.16.1 |
| 数据库 | MySQL 5.7+ |
| 数据库驱动 | mysql 2.18.1 |
| 身份认证 | jsonwebtoken (JWT) |
| 文件上传 | multer |
| 跨域处理 | cors |
| HTTP请求 | axios |
| UUID生成 | uuid |
| 热重载 | nodemon |
管理后台技术
| 技术 | 版本/说明 |
|---|---|
| 前端框架 | Vue 2.6.11 |
| UI组件库 | Element UI 2.15.6 |
| 路由管理 | Vue Router 3.0.7 |
| 状态管理 | Vuex 3.4.0 |
| HTTP请求 | Axios 0.24.0 |
| 图表库 | ECharts 5.3.1 |
| 富文本编辑器 | Quill 1.3.7 |
| CSS预处理器 | Less |
| 粒子效果 | vue-particles |
小程序端技术
| 技术 | 版本/说明 |
|---|---|
| 开发框架 | 微信小程序原生框架 |
| 开发语言 | JavaScript (ES6+) |
| 样式语言 | WXSS |
| 模板语言 | WXML |
| 富文本解析 | wxParse |
项目特点
- 前后端分离:后端提供RESTful API,前端独立开发部署
- 双向拼车模式:支持乘客找车和司机找人两种发布模式
- 完整拼车流程:涵盖发布拼车、搜索拼车、收藏、订单管理全流程
- 多角色支持:支持管理员、乘客、司机多种角色
- 订单状态管理:完整的订单状态流转(未接单→已接单→完成/取消/拒接)
- 数据可视化:管理后台集成ECharts图表展示
- 富文本支持:支持富文本资讯内容编辑和展示
- 问题反馈:用户可提交问题反馈,管理员可回复处理
功能模块
小程序端功能
1. 首页模块 (pages/index)
- 拼车信息列表展示
- 按类型筛选(乘客/司机)
- 搜索功能
- 拼车详情查看
2. 发布拼车模块 (pages/add)
- 选择发布类型(乘客找车/司机找人)
- 填写出发地和目的地
- 设置出发时间
- 填写同行人数
- 设置价格
- 填写车辆信息
- 添加途径地点
- 补充说明
3. 资讯模块
- 资讯列表 (
pages/newsList) - 资讯详情 (
pages/newsDetail) - 富文本内容展示
4. 订单管理模块
- 我的订单 (
pages/myorder) - 订单详情 (
pages/orderDetail) - 订单状态查看
- 订单操作(取消等)
5. 收藏模块 (pages/star)
- 我的收藏列表
- 取消收藏
- 快速查看收藏的拼车信息
6. 问题反馈模块 (pages/question)
- 提交问题反馈
- 上传图片
- 填写联系邮箱
- 查看回复
7. 个人中心模块 (pages/my)
- 用户信息展示
- 我的订单入口
- 我的收藏入口
- 问题反馈入口
- 用户信息编辑 (
pages/userInfo)
管理后台功能
1. 首页仪表盘 (Welcome.vue)
- 数据统计概览
- 图表展示
2. 用户管理 (User.vue)
- 用户列表
- 用户信息查看
- 用户角色管理(管理员/乘客/司机)
- 用户状态管理
3. 订单管理 (Orders/)
- 拼车订单列表
- 订单详情查看
- 订单状态管理
- 订单筛选
4. 资讯管理 (News/)
- 资讯列表
- 新增/编辑/删除资讯
- 富文本内容编辑
5. 收藏管理 (Star.vue)
- 收藏记录列表
- 收藏统计
6. 问题反馈 (Question.vue)
- 用户反馈列表
- 回复处理
- 查看反馈详情
项目结构
pingche/
├── admin/ # 管理后台(Vue2 + Element UI)
│ ├── public/ # 静态资源
│ │ └── index.html # HTML模板
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── filters/ # 过滤器
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Vuex状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面视图
│ │ │ ├── News/ # 资讯管理
│ │ │ ├── Orders/ # 订单管理
│ │ │ ├── Home.vue # 主布局
│ │ │ ├── Login.vue # 登录页
│ │ │ ├── Question.vue # 问题反馈
│ │ │ ├── Star.vue # 收藏管理
│ │ │ ├── User.vue # 用户管理
│ │ │ └── Welcome.vue # 首页仪表盘
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── package.json
│ └── vue.config.js # Vue配置
│
├── express/ # 后端服务(Express + MySQL)
│ ├── bin/
│ │ └── www # 启动入口
│ ├── config/
│ │ ├── db.js # 数据库配置
│ │ └── index.js # 全局配置
│ ├── public/
│ │ └── images/ # 上传图片存储
│ ├── routes/
│ │ ├── admin/ # 管理端API
│ │ │ ├── index.js # 路由入口
│ │ │ ├── news.js # 资讯接口
│ │ │ ├── orders.js # 订单接口
│ │ │ ├── question.js # 问题反馈接口
│ │ │ ├── star.js # 收藏接口
│ │ │ └── user.js # 用户接口
│ │ ├── web/ # 小程序端API
│ │ │ ├── index.js # 路由入口
│ │ │ ├── news.js # 资讯接口
│ │ │ ├── orders.js # 订单接口
│ │ │ ├── question.js # 问题反馈接口
│ │ │ ├── star.js # 收藏接口
│ │ │ └── user.js # 用户接口
│ │ ├── index.js # 路由入口
│ │ └── upload.js # 文件上传
│ ├── util/
│ │ ├── index.js # 工具函数
│ │ └── wechat.js # 微信相关工具
│ ├── app.js # Express应用配置
│ └── package.json
│
├── min/ # 微信小程序
│ ├── components/ # 自定义组件
│ │ └── wxParse/ # 富文本解析组件
│ ├── images/ # 图片资源
│ │ └── tabbar/ # TabBar图标
│ ├── pages/ # 页面目录
│ │ ├── index/ # 首页
│ │ ├── add/ # 发布拼车
│ │ ├── my/ # 个人中心
│ │ ├── userInfo/ # 用户信息
│ │ ├── newsList/ # 资讯列表
│ │ ├── newsDetail/ # 资讯详情
│ │ ├── question/ # 问题反馈
│ │ ├── myorder/ # 我的订单
│ │ ├── star/ # 我的收藏
│ │ └── orderDetail/ # 订单详情
│ ├── utils/
│ │ ├── api.js # API接口封装
│ │ ├── request.js # 请求封装
│ │ ├── feedback.js # 反馈工具
│ │ └── util.js # 工具函数
│ ├── app.js # 小程序入口
│ ├── app.json # 小程序配置
│ ├── app.wxss # 全局样式
│ └── project.config.json # 项目配置
│
├── 截图/ # 项目截图
├── pingche.sql # 数据库SQL文件
├── mysql.sh # MySQL脚本
├── mysql操作手册.md # MySQL操作说明
├── 运行必读.docx # 运行说明文档
├── 同城拼车.xmind # 项目思维导图
├── 小程序视频.mp4 # 小程序演示视频
└── 后台管理系统.mp4 # 管理后台演示视频
数据模型
用户表 (users)
{
id: int, // 用户ID
phone: varchar(255), // 手机号
password: varchar(255), // 密码
username: varchar(255), // 姓名
sex: varchar(255), // 性别
nickname: varchar(255), // 昵称
active: varchar(255), // 是否有效 (0有效)
openId: varchar(1100), // 微信OpenID
avatar: varchar(255), // 头像
role: varchar(100) // 角色 (99管理员, 1乘客, 2司机,可多角色如"99,1,2")
}
订单表 (orders)
{
id: int, // 订单ID
user_id: int, // 发布者ID
type: int, // 类型 (1=乘客找车, 2=司机找人)
from: varchar(1000), // 出发地
to: varchar(1000), // 目的地
price: varchar(1000), // 金额
count: int, // 同行人数
phone: varchar(1000), // 联系方式
status: int, // 状态 (1=未接单, 2=已接单, 3=取消订单, 4=拒接订单, 5=订单完成)
username: varchar(1000), // 联系姓名
date: varchar(1000), // 出发日期
time: varchar(1000), // 出发时间
car: varchar(1000), // 车辆信息
remark: varchar(1000), // 补充说明
path: varchar(1000), // 途径地点
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
资讯表 (news)
{
id: int, // 资讯ID
title: varchar(255), // 标题
content: longtext, // 内容(富文本)
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
收藏表 (star)
{
id: int, // 收藏ID
user_id: int, // 用户ID
link_id: int, // 收藏的订单ID
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
问题反馈表 (question)
{
id: int, // 反馈ID
user_id: int, // 用户ID
cover: varchar(2000), // 图片
remark: varchar(1000), // 反馈内容
email: varchar(100), // 邮箱
reply: varchar(1000), // 回复内容
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
拼车类型说明
| 类型 | 说明 |
|---|---|
| 乘客找车 (type=1) | 乘客发布拼车需求,寻找顺路司机 |
| 司机找人 (type=2) | 司机发布行程信息,寻找同行乘客 |
订单状态说明
| 状态码 | 状态名称 | 说明 |
|---|---|---|
| 1 | 未接单 | 拼车信息已发布,等待匹配 |
| 2 | 已接单 | 已有人接单,等待出行 |
| 3 | 取消订单 | 发布者取消了订单 |
| 4 | 拒接订单 | 订单被拒绝 |
| 5 | 订单完成 | 拼车行程已完成 |
用户角色说明
| 角色码 | 角色名称 | 说明 |
|---|---|---|
| 99 | 管理员 | 系统管理员,可登录后台管理 |
| 1 | 乘客 | 普通乘客用户 |
| 2 | 司机 | 司机用户 |
注:用户可同时拥有多个角色,如 "99,1,2" 表示同时是管理员、乘客和司机。
运行环境要求
后端环境
- Node.js 14.0+
- MySQL 5.7+
- npm 或 yarn 或 pnpm
管理后台
- Node.js 14.0+
- npm 或 yarn
- 现代浏览器(Chrome、Firefox、Edge等)
小程序端
- 微信开发者工具(最新稳定版)
- 基础库版本 2.19.0+
- 需要有效的AppID
快速开始
1. 数据库配置
- 创建MySQL数据库
CREATE DATABASE pingche CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 导入数据库文件
mysql -u root -p pingche < pingche.sql
- 修改数据库配置
编辑
express/config/db.js:
var db = mysql.createConnection({
database: 'pingche', // 数据库名称
port: '3306', // 端口号
host: 'localhost', // 主机地址
user: 'root', // 用户名
password: 'root', // 密码(修改为你的密码)
});
2. 启动后端服务
# 进入后端目录
cd express
# 安装依赖
npm install
# 启动服务(开发模式)
npm run dev
后端服务默认运行在 http://localhost:1164(请根据实际配置确认端口)
3. 启动管理后台
# 进入管理后台目录
cd admin
# 安装依赖
npm install
# 启动开发服务器
npm run dev
管理后台默认运行在 http://localhost:8080
4. 运行小程序
- 打开微信开发者工具
- 选择"导入项目"
- 选择
min目录 - 填入AppID(可使用测试号)
- 点击"导入"
5. 配置小程序API地址
编辑 min/utils/request.js,修改API基础地址:
const baseUrl = 'http://localhost:1164'; // 修改为你的后端地址
默认账号
管理后台
- 手机号:1871502XXXX
- 密码:123456
小程序端
- 支持微信授权登录
- 或使用手机号登录
界面预览
项目包含演示视频文件:
小程序视频.mp4- 小程序端完整功能演示后台管理系统.mp4- 管理后台完整功能演示
项目截图位于 截图/ 目录下。
扩展建议
如需进一步完善项目,可考虑以下扩展:
- 地图集成:集成腾讯地图或高德地图,显示路线规划
- 实时通讯:添加即时聊天功能,方便乘客和司机沟通
- 支付功能:集成微信支付,支持在线付款
- 评价系统:添加用户互评功能,建立信用体系
- 推送通知:订单状态变更时推送消息通知
- 智能匹配:根据路线和时间智能推荐拼车信息
- 实名认证:增加身份证认证,提高安全性
- 保险服务:接入出行保险服务
- 常用路线:保存用户常用路线,快速发布
- 拼车群组:创建固定路线拼车群组
注意事项
- 本项目为学习演示项目,部分数据为模拟数据
- 生产环境部署需要配置HTTPS
- 小程序上线需要完成微信认证
- 涉及出行服务需符合相关法规要求
- 建议定期备份数据库数据
- 注意保护用户隐私信息
常见问题
Q: 数据库连接失败?
A: 检查MySQL服务是否启动,数据库配置是否正确
Q: 图片无法显示?
A: 检查后端服务是否启动,图片路径配置是否正确
Q: 小程序无法请求后端?
A: 检查request.js中的baseUrl配置,开发时需在微信开发者工具中关闭"不校验合法域名"
Q: 管理后台登录失败?
A: 确认数据库中users表有管理员账号(role包含99)
Q: 发布拼车失败?
A: 检查必填字段是否完整,确认用户已登录
许可证
本项目仅供学习交流使用,请勿用于商业用途。
技术分类
包含内容
✓完整源码
✓项目说明文档
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
•QQ: 861077046
•邮箱: 861077046@qq.com
•已服务 53+ 位用户

