基于springboot3 VUE3 火车订票系统前后端分离项目适合新手学习的项目包含 智能客服 换乘算法

发布于:2025-05-21 ⋅ 阅读:(12) ⋅ 点赞:(0)


博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 

springbootvue前后端分离火车订票系统适合初学者学习的项目包含亮点 智能客服、换乘算法

项目基本信息介绍
springboot3 VUE3 火车订票系统是一套完善的完整电子商务类型系统,结合springboot框架和VUE完成本系统,对理解springboot3编程以及vue3前端开发有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
技术栈
前端主要技术 vue 3.2
后端主要技术 Springboot 3.x java
数据库 mysql 8.0 客户端工具 Navicat for Mysql
开发工具 IDEA  JDK17
运行环境

1.运行环境:最好是java jdk 17,我们在这个平台上运行的。其他版本理论上也可以 不建议。

2.IDE环境:推荐IDEA;

3.硬件环境:windows 7/8/10 8G内存以上;;

5.数据库:mysql8.0等版本均可  如 MySql 5.0 到 5.5  需要修改数据连接配置,以及maven中的mysql 驱动包;

6.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目


使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA导入项目;
3. 将项目中train\src\main\resources 下的 application.properties 配置文件中的数据库配置改为自己的配置;
数据库支持 mysql8.0 ,如果需要5.0 到5.5需要二次转换升级
4.vscode 开vue项目工程
5.vue 项目启动  npm run dev
vue 版本 3.2
node 版本 20
功能介绍

用户管理

功能描述:管理员可以管理系统中的普通用户信息,包括用户的个人信息(如姓名、联系方式、账户状态等)的查看、注册、修改个人信息。
操作界面:展示所有用户的列表,并提供操作按钮来管理用户信息。

车站管理

功能描述:管理员对车站信息进行管理,确保车站信息更新准确。包括车站的详细信息、站点的安排等。
操作界面:展示车站的列表,管理员可以修改站点信息,或删除不需要的车站。
票务管理

功能描述:管理员管理车票信息,包括票的种类、票价、发售时间、余票数量等。
操作界面:提供一个管理票务的页面,可以修改票价、查看余票、更新售票状态等。
座位管理

功能描述:管理员可以管理座位的具体信息,包括每个座位是否已被占用,是否已售出,座位的所属车次等。
操作界面:展示每个车次的座位分布情况,管理员可以修改座位的状态或删除无效座位。
订单管理

功能描述:管理员可以查看所有订单的详情,进行订单的提交、删除、修改或查看状态等操作。
操作界面:展示所有订单的列表,可以通过筛选条件(如订单状态、乘客姓名等)查询并管理订单。
支持换乘、退票、智能客服

后端功能描述
管理员管理

功能描述:后端提供管理员信息的增、删、改、查接口。包括对管理员信息(如用户名、密码、权限等)的操作。
数据库操作:对管理员数据表进行增、删、改、查操作,确保管理员信息安全和权限管理。
用户管理

功能描述:后端提供用户信息的增、删、改、查接口,管理员可以通过这些接口对用户信息进行管理。
数据库操作:管理用户数据表,包括用户的注册信息、登录状态等。
座位类别管理

功能描述:后端提供座位类别的增、删、改、查接口,支持对座位类别进行管理。
数据库操作:座位类别数据表的操作,确保座位类别的准确性。
站点管理

功能描述:后端提供车站信息的增、删、改、查接口。
数据库操作:车站信息数据表的操作,确保车站信息及时更新。
车次管理

功能描述:后端提供车次的增、删、改、查接口,管理车次的时间、站点、票价等信息。
数据库操作:车次数据表的操作,确保车次信息准确。
车站管理

功能描述:后端提供车站管理接口,确保车站的所有相关信息可以被有效增、删、改、查。
数据库操作:车站信息表的增删改查操作,确保车站信息准确。
票务管理

功能描述:后端提供票务管理的接口,包含票的添加、修改、删除等操作。
数据库操作:票务表的增删改查操作,确保票务信息的准确。
座位管理

功能描述:后端提供座位信息的增、删、改、查接口,包括座位的占用状态、车次分配等。
数据库操作:座位表的操作,确保座位的状态和车次分配正确。
订单管理

功能描述:后端提供订单的增、删、改、查接口,处理用户的购票、退票等订单请求。
数据库操作:订单数据表的操作,确保订单信息的准确性和订单状态的实时更新。
订单量管理

功能描述:后端提供查询和统计订单量的接口,供管理员查看订单量的变化。
数据库操作:订单数据表的统计操作,按车次、区间等进行统计。
车次统计管理

功能描述:后端提供车次销售统计接口,管理员可以查看车次的销售数据。
数据库操作:对车次销售数据进行统计和展示。
区间统计管理

功能描述:后端提供区间的销售统计接口,管理员可以查看不同区间的销售情况。
数据库操作:区间销售数据统计,帮助管理员进行数据分析。

数据库设计

[表gly] 管理员列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 glyid INTEGER 11 管理员编号
2 yhm VARCHAR 40 用户名
3 mm VARCHAR 40 密码
4 xm VARCHAR 40 姓名

[表yonghu] 用户列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 yhid INTEGER 11 用户编号
2 yhm VARCHAR 40 用户名
3 mm VARCHAR 40 密码
4 xm VARCHAR 40 姓名
5 sfz VARCHAR 40 身份证
6 mz VARCHAR 40 民族
7 dz VARCHAR 40 地址
8 lxdh VARCHAR 40 联系电话
9 yj VARCHAR 40 邮件
10 cwcs VARCHAR 40 错误次数
11 cwsj VARCHAR 40 错误时间

[表zwlb] 座位类别列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 zwlbid INTEGER 11 座位类别编号
2 lb VARCHAR 40 类别
3 jg VARCHAR 40 价格

[表zhandian] 站点列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 zdid INTEGER 11 站点编号
2 zdmc VARCHAR 40 站点名称
3 fzr VARCHAR 40 负责人
4 fzrxm VARCHAR 40 负责人姓名
5 lxdh VARCHAR 40 联系电话

[表checi] 车次列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 ccid INTEGER 11 车次编号
2 ccmc VARCHAR 40 车次名称
3 sfz VARCHAR 40 始发站
4 zdz VARCHAR 40 终点站
5 fcsj VARCHAR 40 发车时间
6 dzsj VARCHAR 40 到站时间
7 cxsl VARCHAR 40 车厢数量

[表chezhan] 车站列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 czid INTEGER 11 车站编号
2 cc VARCHAR 40 车次
3 cz VARCHAR 40 车站
4 lc VARCHAR 40 里程
5 yssj VARCHAR 40 用时时间
6 xh VARCHAR 40 序号
7 tksj VARCHAR 40 停靠时间
8 dzsj VARCHAR 40 到站时间
9 kcsj VARCHAR 40 开车时间

[表piaowu] 票务列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 pwid INTEGER 11 票务编号
2 pwh VARCHAR 40 票务号
3 rq VARCHAR 40 日期
4 cc VARCHAR 40 车次
5 zj VARCHAR 40 总价
6 sfz VARCHAR 40 始发站
7 zdz VARCHAR 40 终点站
8 fcsj VARCHAR 40 发车时间
9 dzsj VARCHAR 40 到站时间
10 rwsl VARCHAR 40 软卧数量
11 rwsy VARCHAR 40 软卧剩余
12 ywsl VARCHAR 40 硬卧数量
13 ywsy VARCHAR 40 硬卧剩余
14 yzsl VARCHAR 40 硬座数量
15 yzsy VARCHAR 40 硬座剩余
16 ydzsl VARCHAR 40 一等座数量
17 ydzsy VARCHAR 40 一等座剩余
18 edzsl VARCHAR 40 二等座数量
19 edzsy VARCHAR 40 二等座剩余
20 zt VARCHAR 40 状态

[表zuowei] 座位列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 zwid INTEGER 11 座位编号
2 pwh VARCHAR 40 票务号
3 cc VARCHAR 40 车次
4 cx VARCHAR 40 车厢
5 zwh VARCHAR 40 座位号
6 lx VARCHAR 40 类型
7 zt VARCHAR 40 状态

[表dingdan] 订单列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 ddid INTEGER 11 订单编号
2 ddh VARCHAR 40 订单号
3 cc VARCHAR 40 车次
4 ph VARCHAR 40 票号
5 zw VARCHAR 40 座位
6 zwlx VARCHAR 40 座位类型
7 rq VARCHAR 40 日期
8 qsz VARCHAR 40 起始站
9 mdz VARCHAR 40 目的站
10 pj VARCHAR 40 票价
11 yh VARCHAR 40 用户
12 sfz VARCHAR 40 身份证
13 grsj VARCHAR 40 购入时间
14 zt VARCHAR 40 状态
15 bz VARCHAR 40 备注

[表ddl] 订单量列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 ddlid INTEGER 11 订单量编号
2 cc VARCHAR 40 车次
3 rq VARCHAR 40 日期
4 qsz VARCHAR 40 起始站
5 sl VARCHAR 40 数量
6 zfy VARCHAR 40 总费用

[表cctj] 车次统计列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 cctjid INTEGER 11 车次统计编号
2 cc VARCHAR 40 车次
3 rq VARCHAR 40 日期
4 rwsl VARCHAR 40 软卧数量
5 rwsy VARCHAR 40 软卧剩余
6 ywsl VARCHAR 40 硬卧数量
7 ywsy VARCHAR 40 硬卧剩余
8 yzsl VARCHAR 40 硬座数量
9 yzsy VARCHAR 40 硬座剩余
10 ydzsl VARCHAR 40 一等座数量
11 ydzsy VARCHAR 40 一等座剩余
12 edzsl VARCHAR 40 二等座数量
13 edzsy VARCHAR 40 二等座剩余
14 zsl VARCHAR 40 总数量
15 zsy VARCHAR 40 总剩余
16 csl VARCHAR 40 出售量
17 szl VARCHAR 40 上座率

[表qjtj] 区间统计列属性表格

序号 字段名称 数据类型 长度 主键 描述
1 qjtjid INTEGER 11 区间统计编号
2 cc VARCHAR 40 车次
3 lx VARCHAR 40 类型
4 qsz VARCHAR 40 起始站
5 mdz VARCHAR 40 目的站
6 rq VARCHAR 40 日期
7 zpj VARCHAR 40 总票价
8 tjrq VARCHAR 40 统计日期
9 zsl VARCHAR 40 总数量

注意事项
1、管理员账号:admin密码:admin 数据库配置文件 application.properties
2、开发环境为IDEA开发,数据库为mysql,使用java语言开发。
3、数据库文件名是javatrain.sql 系统名称train
4、地址:http://127.0.0.1:8080/

四系统实现

package com.main.service;


import com.main.dao.dingdanDao;
import com.main.dao.piaowuDao;
import com.main.dao.zuoweiDao;
import com.main.model.dingdan;
import com.main.model.piaowu;
import com.main.model.zuowei;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class piaowuService {
    @Autowired
    private piaowuDao piaowudao;
    @Autowired
    private zuoweiDao zuoweidao;
    @Autowired
    private dingdanDao dingdandao;
    public void reducepiaowu(zuowei bean){
       piaowu pwbean=new piaowu();
        String lb=bean.getLx();
        String pwh=bean.getPwh();//

        Map map=new HashMap();
        map.put("pwh",pwh);
        pwbean=piaowudao.getpiaowuByName(map);

        map.put("ph",pwh);
        map.put("zta","zta");
        map.put("zw",bean.getZwid());

        List list=dingdandao.getAll(map);//如果有值 就是 有订单  区间售票



        int a=0;
        if(!lb.equals("站票")&&list.size()==0) {//如果是有值就是区间售票 不用更新票务剩余座位了

            if (lb.equals("软卧")) {
                a = Integer.parseInt(pwbean.getRwsl()) - 1;


                pwbean.setRwsy(String.valueOf(a));
            } else if (lb.equals("硬卧")) {
                a = Integer.parseInt(pwbean.getYwsl()) - 1;


                pwbean.setYwsy(String.valueOf(a));
            } else if (lb.equals("硬座")) {
                a = Integer.parseInt(pwbean.getYzsl()) - 1;


                pwbean.setYzsy(String.valueOf(a));
            } else if (lb.equals("一等座")) {
                a = Integer.parseInt(pwbean.getYdzsl()) - 1;


                pwbean.setYdzsy(String.valueOf(a));
            } else if (lb.equals("二等座")) {
                a = Integer.parseInt(pwbean.getEdzsl()) - 1;


                pwbean.setEdzsy(String.valueOf(a));
            }


            piaowudao.update(pwbean);


        }



    }


    public void addpiaowu(zuowei bean){
        piaowu pwbean=new piaowu();
        String lb=bean.getLx();
        String pwh=bean.getPwh();//

        Map map=new HashMap();
        map.put("pwh",pwh);
        pwbean=piaowudao.getpiaowuByName(map);

        int a=0;

        map.put("ph",pwh);
        map.put("zta","zta");
        map.put("zw",bean.getZwid());

        List list=dingdandao.getAll(map);//如果有值 就是 有订单  区间售票

        if(!lb.equals("站票")&&list.size()==0) {//如果是有值就是区间售票 不用更新票务剩余座位了


            if (lb.equals("软卧")) {
                a = Integer.parseInt(pwbean.getRwsl()) + 1;


                pwbean.setRwsy(String.valueOf(a));
            } else if (lb.equals("硬卧")) {
                a = Integer.parseInt(pwbean.getYwsl()) + 1;


                pwbean.setYwsy(String.valueOf(a));
            } else if (lb.equals("硬座")) {
                a = Integer.parseInt(pwbean.getYzsl()) + 1;


                pwbean.setYzsy(String.valueOf(a));
            } else if (lb.equals("一等座")) {
                a = Integer.parseInt(pwbean.getYdzsl()) + 1;


                pwbean.setYdzsy(String.valueOf(a));
            } else if (lb.equals("二等座")) {
                a = Integer.parseInt(pwbean.getEdzsl()) + 1;


                pwbean.setEdzsy(String.valueOf(a));
            }


            piaowudao.update(pwbean);

        }




    }




}

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者
 


网站公告

今日签到

点亮在社区的每一天
去签到