SSM框架篮球运动员大数据可视化分析系统-足球运动员大数据可视化分析系统-体育运动项目大数据可视化分析系统(idea开发javaweb-javaee-j2ee-springboot)

本文主要是介绍SSM框架篮球运动员大数据可视化分析系统-足球运动员大数据可视化分析系统-体育运动项目大数据可视化分析系统(idea开发javaweb-javaee-j2ee-springboot),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

0、效果展示

1、概述

2、搭建环境

 

本文以实现一个体育运动项目大数据可视化分析系统为目标,从环境搭建到编码实现全过程讲述

我们使用javaweb、J2EE来构建体育运动项目大数据可视化分析系统,环境使用最新版jdk和tomcat,配合mysql数据库

开发工具使用idea(也可以使用eclipse),数据库管理工具使用Navicat Premium 

开发框架使用JavaBean Servlet MVC结构;

没有使用SSH(Struts+Spring+Hibernate)或SSM(Spring+SpringMVC+MyBatis),这两个框架我们在别的项目中再介绍开发过程

 

在项目中会引入My97DatePicker作为前端日期时间选择工具,使用fckeditor作为富媒体编辑器(也可以使用百度的ueditor)

 

 

使用DWR(Direct Web Remoting)用于改善web页面与Java类交互,实现远程服务器端AJAX读取登录数据。

使用JSTL(Java server pages standarded tag library,即JSP标准标签库),此库是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。

 

echarts百度图表插件

 

3、数据表结构

 

5t_guojia  国家 表  
    
字段名称自动增长字段类型说明
id-int编号
name-varchar名称
jieshao-varchar描述
del-varchar是否删除
    
6t_qiuyuan 球员 表  
    
字段名称自动增长字段类型说明
id-int编号
code-varchar编号
name1-varchar名称
sex-varchar性别
age-varchar年龄
qiudui_id-varchar球队ID
indate-varchar时间
del-varchar是否删除

​4、后端代码示例

 

 

package com.action;import java.io.IOException;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;import com.dao.DB;
import com.orm.TAdmin;
import com.orm.TTongji;
import com.orm.Tgrades;
import com.service.liuService;public class tongji_servlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {String type = req.getParameter("type");if (type.endsWith("tongjiOne")) {tongjiOne(req, res);}if (type.endsWith("tongjiMore")) {tongjiMore(req, res);}}// 单场比赛统计public void tongjiOne(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {String bisaidateinfo = "";bisaidateinfo = req.getParameter("bisaidateinfo");String wheresql = "";String qiyuanList = "";List gradesList = new ArrayList();List chuanqiuList = new ArrayList();List zhugongList = new ArrayList();List shemenList = new ArrayList();List guorenList = new ArrayList();List shiwuList = new ArrayList();List qiangduanList = new ArrayList();List lanjieList = new ArrayList();List yueweiList = new ArrayList();List fanguiList = new ArrayList();List juliList = new ArrayList();if (bisaidateinfo != null) {wheresql = " where bisaidate like '%" + bisaidateinfo + "%'";String sql = "SELECT name1,code, qiuyuan_id,bisaidate,grades, chuanqiu, zhugong, shemen, guoren, shiwu, qiangduan, lanjie, yuewei, fangui, juli "+ " FROM `t_grades` " + " left join t_qiuyuan on t_qiuyuan.id=t_grades.qiuyuan_id" + wheresql+ " group by bisaidate,qiuyuan_id";Object[] params = {};DB mydb = new DB();try {mydb.doPstm(sql, params);ResultSet rs = mydb.getRs();while (rs.next()) {qiyuanList += "\"" + rs.getString("name1") + "\"" + ",";gradesList.add(rs.getString("grades"));chuanqiuList.add(rs.getString("chuanqiu"));zhugongList.add(rs.getString("zhugong"));shemenList.add(rs.getString("shemen"));guorenList.add(rs.getString("guoren"));shiwuList.add(rs.getString("shiwu"));qiangduanList.add(rs.getString("qiangduan"));lanjieList.add(rs.getString("lanjie"));yueweiList.add(rs.getString("yuewei"));fanguiList.add(rs.getString("fangui"));juliList.add(rs.getString("juli"));}rs.close();} catch (Exception e) {e.printStackTrace();}mydb.closed();}if (qiyuanList != "") {qiyuanList = qiyuanList.substring(0, qiyuanList.length() - 1);// 删除多余的逗号req.setAttribute("bisaidateinfo", bisaidateinfo);req.setAttribute("qiyuanList", "[" + qiyuanList + "]");req.setAttribute("gradesList", "[" + listToString(gradesList) + "]");req.setAttribute("chuanqiuList", "[" + listToString(chuanqiuList) + "]");req.setAttribute("zhugongList", "[" + listToString(zhugongList) + "]");req.setAttribute("shemenList", "[" + listToString(shemenList) + "]");req.setAttribute("guorenList", "[" + listToString(guorenList) + "]");req.setAttribute("shiwuList", "[" + listToString(shiwuList) + "]");req.setAttribute("qiangduanList", "[" + listToString(qiangduanList) + "]");req.setAttribute("lanjieList", "[" + listToString(lanjieList) + "]");req.setAttribute("yueweiList", "[" + listToString(yueweiList) + "]");req.setAttribute("fanguiList", "[" + listToString(fanguiList) + "]");req.setAttribute("juliList", "[" + listToString(juliList) + "]");} else {req.setAttribute("bisaidateinfo", "");req.setAttribute("qiyuanList", "[]");req.setAttribute("gradesList", "[]");req.setAttribute("chuanqiuList", "[]");req.setAttribute("zhugongList", "[]");req.setAttribute("shemenList", "[]");req.setAttribute("guorenList", "[]");req.setAttribute("shiwuList", "[]");req.setAttribute("qiangduanList", "[]");req.setAttribute("lanjieList", "[]");req.setAttribute("yueweiList", "[]");req.setAttribute("fanguiList", "[]");req.setAttribute("juliList", "[]");}// 获取比赛日期List bisaiDateList = new ArrayList();String sql1 = "SELECT  bisaidate  FROM `t_grades`   group by bisaidate ";Object[] params1 = {};DB mydb1 = new DB();try {mydb1.doPstm(sql1, params1);ResultSet rs1 = mydb1.getRs();while (rs1.next()) {bisaiDateList.add(rs1.getString("bisaidate"));}rs1.close();} catch (Exception e) {e.printStackTrace();}mydb1.closed();// String ddddd=listToString(qiyuanList);// System.out.println(ddddd);req.setAttribute("bisaiDateList", bisaiDateList);req.getRequestDispatcher("admin/tongji/tongjiOne.jsp").forward(req, res);}//多 场比赛统计public void tongjiMore(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {String bisaidateinfo1 = "";String bisaidateinfo2 = "";bisaidateinfo1 = req.getParameter("bisaidateinfo1");bisaidateinfo2 = req.getParameter("bisaidateinfo2");String wheresql = "";String qiyuanList = "";List gradesList = new ArrayList();List chuanqiuList = new ArrayList();List zhugongList = new ArrayList();List shemenList = new ArrayList();List guorenList = new ArrayList();List shiwuList = new ArrayList();List qiangduanList = new ArrayList();List lanjieList = new ArrayList();List yueweiList = new ArrayList();List fanguiList = new ArrayList();List juliList = new ArrayList();List shoufaList = new ArrayList();if (bisaidateinfo1 != "" && bisaidateinfo2 != "") {wheresql = " where bisaidate >'"+bisaidateinfo1+"' and bisaidate <'"+bisaidateinfo2+"' ";String sql = " SELECT name1,code, qiuyuan_id,bisaidate,"+ " sum(grades) as grades ,sum( chuanqiu) as chuanqiu, sum(zhugong) as zhugong, sum(shemen) as shemen, sum(guoren) as guoren , sum(shiwu) as shiwu, "+ " sum( qiangduan) as qiangduan, sum(lanjie) as lanjie, sum(yuewei) as yuewei, sum(fangui) as fangui, sum(juli) as  juli "+ " , sum( if( shoufa > 0, shoufa, 0)) as shoufa    "+ " FROM `t_grades`  left join t_qiuyuan on t_qiuyuan.id=t_grades.qiuyuan_id " + wheresql+ " group by  qiuyuan_id";Object[] params = {};DB mydb = new DB();try {mydb.doPstm(sql, params);ResultSet rs = mydb.getRs();while (rs.next()) {qiyuanList += "\"" + rs.getString("name1") + "\"" + ",";gradesList.add(rs.getString("grades"));chuanqiuList.add(rs.getString("chuanqiu"));zhugongList.add(rs.getString("zhugong"));shemenList.add(rs.getString("shemen"));guorenList.add(rs.getString("guoren"));shiwuList.add(rs.getString("shiwu"));qiangduanList.add(rs.getString("qiangduan"));lanjieList.add(rs.getString("lanjie"));yueweiList.add(rs.getString("yuewei"));fanguiList.add(rs.getString("fangui"));juliList.add(rs.getString("juli"));shoufaList.add(rs.getString("shoufa"));}rs.close();} catch (Exception e) {e.printStackTrace();}mydb.closed();}if (qiyuanList != "") {qiyuanList = qiyuanList.substring(0, qiyuanList.length() - 1);// 删除多余的逗号req.setAttribute("bisaidateinfo", bisaidateinfo1 +"到"+ bisaidateinfo2);req.setAttribute("qiyuanList", "[" + qiyuanList + "]");req.setAttribute("gradesList", "[" + listToString(gradesList) + "]");req.setAttribute("chuanqiuList", "[" + listToString(chuanqiuList) + "]");req.setAttribute("zhugongList", "[" + listToString(zhugongList) + "]");req.setAttribute("shemenList", "[" + listToString(shemenList) + "]");req.setAttribute("guorenList", "[" + listToString(guorenList) + "]");req.setAttribute("shiwuList", "[" + listToString(shiwuList) + "]");req.setAttribute("qiangduanList", "[" + listToString(qiangduanList) + "]");req.setAttribute("lanjieList", "[" + listToString(lanjieList) + "]");req.setAttribute("yueweiList", "[" + listToString(yueweiList) + "]");req.setAttribute("fanguiList", "[" + listToString(fanguiList) + "]");req.setAttribute("juliList", "[" + listToString(juliList) + "]");req.setAttribute("shoufaList", "[" + listToString(shoufaList) + "]");} else {req.setAttribute("bisaidateinfo", "");req.setAttribute("qiyuanList", "[]");req.setAttribute("gradesList", "[]");req.setAttribute("chuanqiuList", "[]");req.setAttribute("zhugongList", "[]");req.setAttribute("shemenList", "[]");req.setAttribute("guorenList", "[]");req.setAttribute("shiwuList", "[]");req.setAttribute("qiangduanList", "[]");req.setAttribute("lanjieList", "[]");req.setAttribute("yueweiList", "[]");req.setAttribute("fanguiList", "[]");req.setAttribute("juliList", "[]");req.setAttribute("shoufaList", "[]");}// 获取比赛日期List bisaiDateList = new ArrayList();String sql1 = "SELECT  bisaidate  FROM `t_grades`   group by bisaidate ";Object[] params1 = {};DB mydb1 = new DB();try {mydb1.doPstm(sql1, params1);ResultSet rs1 = mydb1.getRs();while (rs1.next()) {bisaiDateList.add(rs1.getString("bisaidate"));}rs1.close();} catch (Exception e) {e.printStackTrace();}mydb1.closed();// String ddddd=listToString(qiyuanList);// System.out.println(ddddd);req.setAttribute("bisaiDateList", bisaiDateList);req.getRequestDispatcher("admin/tongji/tongjiMore.jsp").forward(req, res);}// list使用逗号分切public static String listToString(List<String> stringList) {if (stringList == null) {return null;}StringBuilder result = new StringBuilder();boolean flag = false;for (String string : stringList) {if (flag) {result.append(",");} else {flag = true;}result.append(string);}return result.toString();}public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) {RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);try {dispatch.forward(request, response);return;} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public void init(ServletConfig config) throws ServletException {super.init(config);}public void destroy() {}
}

5、前端代码示例

 

 

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false"%>
<%String path = request.getContextPath();
%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<script type="text/javascript"src="<%=path%>/My97DatePicker/WdatePicker.js"></script>
<script src="<%=path%>/js/echarts.common.min.js"></script><link rel="stylesheet" type="text/css" href="<%=path%>/css/base.css" /><script type="text/javascript" src="<%=path %>/My97DatePicker/WdatePicker.js"></script></head><body leftmargin="2" topmargin="2"background='<%=path%>/images/allbg.gif'><form action="<%=path%>/tongji?type=tongjiMore" name="formAdd"method="post">赛季比赛日期范围:开始<input name="bisaidateinfo1" readonly="readonly" class="Wdate"  type="text" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd'})"/>结束<input name="bisaidateinfo2" readonly="readonly" class="Wdate"  type="text" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd'})"/><input type="submit"value="分析" /></form><div id="main" style="width:98%;height:400px;"></div><script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart2 = echarts.init(document.getElementById('main'));option2 = {title : {text : " 赛季数据图"},tooltip : {trigger : 'axis',axisPointer : {type : 'cross',crossStyle : {color : '#999'}},textStyle : {align : 'right'}},toolbox : {feature : {dataView : {show : true,readOnly : false},magicType : {show : true,type : [ 'line', 'bar' ]},restore : {show : true},saveAsImage : {show : true}}},legend : {data : [ '进球','传球','助攻','射门','过人','失误','抢断','拦截','越位','犯规','跑动','首发' ]},yAxis : [{type : 'value',name : '次数',axisLabel : {formatter : '{value} '}}],xAxis : [{type : 'category',axisPointer : {type : 'shadow'}}],series : [{name : '进球',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '传球',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '助攻',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '射门',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '过人',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '失误',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '抢断',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '拦截',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '越位',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '犯规',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '跑动',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}},{name : '首发',type : 'bar',itemStyle : {normal : {barBorderRadius : 5}},label : {/*每个柱子上面是有数字显示的,而且数字是有千分位符号的:*/normal : {show : true,position : 'top'}},markLine : {symbol : 'none',data : [{type : 'average',name : '平均值'}]}}]};// 使用刚指定的配置项和数据显示图表。myChart2.setOption(option2);myChart2.setOption({title: {text:  '${requestScope.bisaidateinfo} 赛季数据分析'},xAxis : [{data : ${requestScope.qiyuanList}}],series : [{data : ${requestScope.gradesList}},{data : ${requestScope.chuanqiuList}},{data : ${requestScope.zhugongList}},{data : ${requestScope.shemenList}},{data : ${requestScope.guorenList}},{data : ${requestScope.shiwuList}},{data : ${requestScope.qiangduanList}},{data : ${requestScope.lanjieList}},{data : ${requestScope.yueweiList}},{data : ${requestScope.fanguiList}},{data : ${requestScope.juliList}},{data : ${requestScope.shoufaList}}]});</script></body>
</html>

 

 

这篇关于SSM框架篮球运动员大数据可视化分析系统-足球运动员大数据可视化分析系统-体育运动项目大数据可视化分析系统(idea开发javaweb-javaee-j2ee-springboot)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233072

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.