原创

基于java SpringBoot和Vue民航飞机票在线订票售票系统毕业设计,附源码

摘要
本系统采用Java Spring Boot作为后端框架,结合Vue.js进行前端开发,构建了一个高效、用户友好的民航飞机票在线订票售票平台。系统遵循模块化和微服务架构原则,确保高内聚低耦合,便于维护与扩展。技术栈选型上,Spring Boot简化了后端开发流程,而Vue.js则通过响应式数据绑定和组件化开发模式提升了用户界面的交互性和可维护性。核心功能模块包括航班查询、机票预订、用户管理、订单处理及后台管理等,其中航班查询支持多条件筛选,机票预订流程简洁明了。为优化用户体验,系统注重页面设计的直观性和操作的便捷性,提供实时航班状态更新、价格变动提示等功能。技术实现细节包括数据库设计、API设计与开发、前后端分离、缓存策略以及异步处理等,确保系统的高效运行和良好用户体验。


功能介绍
系统分为管理员和普通用户两种角色;

管理员:个人中心、管理员管理、用户管理、航班信息管理、客服聊天管理、基础数据管理、论坛管理、新闻管理、轮播图管理等;

普通用户:注册登录、论坛交流、新闻浏览、航班信息浏览和在线订票、个人中心、在线客服等。


技术介绍
后端:Java语言的Spring Boot框架、MySQL数据库、Maven依赖管理等;

前端:Vue、element-ui、axios等。


部分代码展示

/**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        CommonUtil.checkMap(params);
        PageUtils page = jipiaoCollectionService.queryPage(params);

        //字典表数据转换
        List<JipiaoCollectionView> list =(List<JipiaoCollectionView>)page.getList();
        for(JipiaoCollectionView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        JipiaoCollectionEntity jipiaoCollection = jipiaoCollectionService.selectById(id);
        if(jipiaoCollection !=null){
            //entity转view
            JipiaoCollectionView view = new JipiaoCollectionView();
            BeanUtils.copyProperties( jipiaoCollection , view );//把实体数据重构到view中
            //级联表 航班信息
            //级联表
            JipiaoEntity jipiao = jipiaoService.selectById(jipiaoCollection.getJipiaoId());
            if(jipiao != null){
            BeanUtils.copyProperties( jipiao , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setJipiaoId(jipiao.getId());
            }
            //级联表 用户
            //级联表
            YonghuEntity yonghu = yonghuService.selectById(jipiaoCollection.getYonghuId());
            if(yonghu != null){
            BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setYonghuId(yonghu.getId());
            }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody JipiaoCollectionEntity jipiaoCollection, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,jipiaoCollection:{}",this.getClass().getName(),jipiaoCollection.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            jipiaoCollection.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<JipiaoCollectionEntity> queryWrapper = new EntityWrapper<JipiaoCollectionEntity>()
            .eq("jipiao_id", jipiaoCollection.getJipiaoId())
            .eq("yonghu_id", jipiaoCollection.getYonghuId())
            .eq("jipiao_collection_types", jipiaoCollection.getJipiaoCollectionTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        JipiaoCollectionEntity jipiaoCollectionEntity = jipiaoCollectionService.selectOne(queryWrapper);
        if(jipiaoCollectionEntity==null){
            jipiaoCollection.setInsertTime(new Date());
            jipiaoCollection.setCreateTime(new Date());
            jipiaoCollectionService.insert(jipiaoCollection);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody JipiaoCollectionEntity jipiaoCollection, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,jipiaoCollection:{}",this.getClass().getName(),jipiaoCollection.toString());
        JipiaoCollectionEntity oldJipiaoCollectionEntity = jipiaoCollectionService.selectById(jipiaoCollection.getId());//查询原先数据

        String role = String.valueOf(request.getSession().getAttribute("role"));

            jipiaoCollectionService.updateById(jipiaoCollection);//根据id更新
            return R.ok();
    }

演示视频链接

源码展示链接

正文到此结束
本文目录