代写C语言、C++、Java、Python、HTML、JavaScript、vue、MySQL相关编程项目,
长期接单,信誉有保证,如有任何问题或需要请加文章末尾推广QQ。
在售模板目录:https://blog.csdn.net/weixin_47040861/article/details/143454337

本文资源:Java 斯诺克网站 (SpringBoot框架/vue3框架/MySQL数据库/IDEA项目)


1.题目要求

题目描述
编写一个斯诺克网站,要求前后端分离,前端分为用户与管理员两个端口,管理员端可以管理页面数据,使用MySQL数据库存储数据
编程软件
后端
在这里插入图片描述
前端
在这里插入图片描述

2.视频演示

【Java期末/毕业设计】斯诺克网站(SpringBoot框架/vue3/MySQL数据库/IDEA项目)

3.项目介绍

斯诺克网站项目说明文档

1. 项目概述

本项目旨在构建一个斯诺克网站,采用前后端分离的架构,后端使用 SpringBoot 框架,前端使用 Vue3 框架。该架构能够提供高效的数据交互和丰富的用户界面体验。

2. 后端说明 (SpringBoot)

2. 1. 项目概述

斯诺克 Spring Boot 应用程序提供了一个后端系统,用于管理斯诺克相关信息,包括球员数据、比赛结果、新闻和用户认证。它使用 Spring Boot 构建,并与 MySQL 数据库交互。

2. 2. 使用的技术

  • Spring Boot: 2.6.13
  • Java: 8
  • Maven: 用于依赖管理和项目构建
  • MySQL: 数据库
  • Spring JDBC: 用于数据库交互

2. 3. 项目结构

项目遵循标准的 Spring Boot 应用程序结构:

  • com.example.spring_demo.controller: 包含处理 API 请求的 REST 控制器。
  • com.example.spring_demo.repository: 包含用于数据库交互的 DatabaseRepository。
  • com.example.spring_demo.config: 包含像 CorsConfig 这样的配置类。

2. 4. 数据库 Schema

schema.sql 文件定义了数据库结构:

user 表 (用户表)

该表用于存储应用程序的用户账户信息,支持用户注册、登录及身份验证。

字段名 类型 约束 描述
id BIGINT PRIMARY KEY, AUTO_INCREMENT 自增 ID,主键
name VARCHAR(100) NOT NULL 用户名
username VARCHAR(50) NOT NULL, UNIQUE 账号,唯一
password VARCHAR(255) NOT NULL 密码

snooker_player 表 (斯诺克选手信息表)

该表用于存储斯诺克球员的详细信息,包括个人资料、排名和成就。

字段名 类型 约束 描述
id INT PRIMARY KEY, AUTO_INCREMENT 自增编号
name VARCHAR(50) NOT NULL 姓名
avatar_url VARCHAR(255) 头像URL地址
birth_date VARCHAR(20) 出生日期(字符串)
nationality VARCHAR(50) 国籍
worth DECIMAL(15,2) 身价(单位自定)
world_rank INT 世界排名
biography VARCHAR(300) 生平介绍(500字以内)
achievements VARCHAR(100) 成就(300字以内)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间

champions_history 表 (历届冠军信息表)

该表用于记录斯诺克历届赛事的冠军信息,包括年份、赛事名称、冠亚军详情及奖金。

字段名 类型 约束 描述
id INT PRIMARY KEY, AUTO_INCREMENT 自增编号
year INT NOT NULL 年份
event_name VARCHAR(100) NOT NULL 赛事名称
champion_name VARCHAR(100) NOT NULL 冠军名称
champion_nationality VARCHAR(100) NOT NULL 冠军国籍
runner_up_name VARCHAR(100) NOT NULL 亚军名称
champion_score VARCHAR(50) NOT NULL 冠军得分
runner_up_score VARCHAR(50) NOT NULL 亚军得分
total_prize DECIMAL(15,2) NOT NULL 赛事总奖金金额
champion_prize DECIMAL(15,2) NOT NULL 冠军奖金金额
notes TEXT DEFAULT NULL 备注(可为空)

recent_matches 表 (近期赛事信息表)

该表用于存储近期斯诺克比赛的详细信息,包括比赛时间、参赛选手及比赛链接。

字段名 类型 约束 描述
id INT PRIMARY KEY, AUTO_INCREMENT 自增编号
event_name VARCHAR(100) NOT NULL 赛事名称
event_datetime DATETIME NOT NULL 赛事日期(年月日时分)
player1_id INT NOT NULL 选手1编号
player2_id INT NOT NULL 选手2编号
match_link VARCHAR(255) NOT NULL 赛事链接

news_info 表 (新闻信息表)

该表用于存储斯诺克新闻文章,包括标题、封面图、发布日期和内容链接。

字段名 类型 约束 描述
id INT PRIMARY KEY, AUTO_INCREMENT 自增编号
title VARCHAR(200) NOT NULL 新闻标题
cover_image_url VARCHAR(255) 头图URL链接
publish_date DATETIME NOT NULL 发布日期
type VARCHAR(50) 新闻类型
content_url VARCHAR(255) 内容URL链接

2. 5. 核心组件

2. 5.1 DatabaseRepository.java

该类作为所有数据库操作的集中存储库,利用 JdbcTemplate 直接执行 SQL。

  • insertData(String tableName, HashMap<String, Object> data): 向指定表插入新记录。
    • 返回一个包含 “result” (布尔值) 和 “message” (字符串) 的 Map。
  • queryData(String tableName, String selectColumns, String whereCondition): 从指定表检索数据。
    • 返回一个包含 “result” (布尔值) 和 “message” (Map 列表,表示行) 的 Map。
  • updateData(String tableName, HashMap<String, Object> updateData, HashMap<String, Object> whereConditions): 更新指定表中的现有记录。
    • 返回一个包含 “result” (布尔值) 和 “message” (字符串) 的 Map。
  • deleteData(String tableName, HashMap<String, Object> conditions): 从指定表删除记录。
    • 返回一个包含 “result” (布尔值) 和 “message” (字符串) 的 Map。

5.2 控制器

5.2.1 LoginController.java

处理用户认证操作。

  • /login/user_register (POST): 注册新用户。
    • 请求体中需要 username 和 password。
    • 在插入前检查是否存在相同的用户名。
  • /login/user_login (POST): 认证用户。
    • 请求体中需要 username 和 password。
    • 根据 user 表验证凭据。
5.2.2 UserController.java

为前端显示提供各种数据检索功能。

  • /index/get_nationality (POST): 从 snooker_player 中检索不重复的国籍列表。

  • /index/get_player (POST): 根据姓名和/或国籍查询球员信息。

    • 请求参数:
      • name (String, 可选): 球员姓名,支持模糊匹配。
      • nationality (String, 可选): 球员国籍,精确匹配。
    • 示例请求体:
      {
      “name”: “丁”,
      “nationality”: “中国”
      }
  • /index/get_player_by_id (POST): 根据 ID 检索单个球员的数据。

  • /index/query_champions (POST): 使用动态表、列和 WHERE 条件查询历史冠军数据。

  • /index/recent_matches_detail (POST): 检索近期比赛的详细信息,通过 recent_matches 与 snooker_player 连接以获取球员详细信息。

  • /index/query_news (POST): 查询新闻信息。

  • /index/all_stats (POST): 获取聚合统计数据,包括身价排名、国家排名、冠军排名和奖金数据。

5.2.3 AdminController.java

管理管理操作,包括球员、冠军、近期比赛和新闻的数据操作,以及图片上传。

  • /admin/upload_image (POST): 将图片文件上传到服务器上的 /images 目录。
    • 支持最大 10MB 的文件。
    • 返回上传图片的相对路径。
  • /admin/query_user (POST): 根据提供的表、列和条件查询用户数据。
  • /admin/update_user (POST): 更新用户数据。
  • /admin/delete_user (POST): 删除用户数据。
  • /admin/insert_player (POST): 插入新的斯诺克球员数据。
  • /admin/get_all_players (POST): 检索所有斯诺克球员数据。
  • /admin/update_player (POST): 根据 ID 更新现有斯诺克球员数据。
  • /admin/delete_player (POST): 根据 ID 删除斯诺克球员数据。
  • /admin/add_champion (POST): 添加新的历史冠军信息。
  • /admin/query_champion (GET): 检索所有历史冠军信息。
  • /admin/update_champion (POST): 更新历史冠军信息。
  • /admin/delete_champion (POST): 删除历史冠军信息。
  • /admin/add_recent_match (POST): 添加新的近期比赛信息。
  • /admin/query_recent_matches (GET): 检索所有近期比赛信息。
  • /admin/update_recent_match (POST): 更新近期比赛信息。
  • /admin/delete_recent_match (POST): 删除近期比赛信息。
  • /admin/insert_news (POST): 插入新的新闻文章。
  • /admin/query_news (POST): 查询新闻文章。
  • /admin/delete_news (POST): 删除新闻文章。
  • /admin/update_news (POST): 更新新闻文章。

5.3 CorsConfig.java

此配置类处理跨域资源共享 (CORS) 和资源映射。

  • addCorsMappings: 配置 CORS 以允许所有来源、方法 (GET, POST, PUT, DELETE, OPTIONS) 和所有路径的请求头。
  • addResourceHandlers: 将 /images/** URL 路径映射到项目根目录下的 images 目录,允许静态提供上传的图片。

3. 前端说明 (Vue3)

3. 1. 项目概述

这是一个基于 Vue 3 构建的前端项目,主要用于展示和管理与游戏相关的各种信息,包括玩家、英雄、比赛结果和新闻等。项目分为用户端和管理员端,用户可以通过登录/注册访问主页的各项功能,管理员则拥有额外的管理权限。

3. 2. 技术栈

  • 前端框架: Vue 3 (使用 script setup 语法糖)
  • 路由: Vue Router 4
  • CSS 预处理器: (未明确指出,但根据文件结构可能使用了 CSS 或 SCSS/Less)
  • HTTP 请求: 自定义 request.js 封装 fetch API
  • 图表库: ECharts (在 DataCenter.vue 中使用)
  • HTTP 客户端: Axios (在 AddPlayer.vue 和 NewsManage.vue 中用于文件上传)

3. 3. 文件结构概览

├── public/
├── src/
│ ├── assets/ # 静态资源,如 CSS 样式
│ │ ├── style/
│ │ │ ├── main.css
│ │ │ └── LoginView.css
│ ├── components/ # 可复用组件
│ │ ├── AdminView/ # 管理员页面相关组件
│ │ │ ├── AdminHeader.vue
│ │ │ ├── AdminSidebar.vue
│ │ │ ├── AddChampion.vue
│ │ │ ├── AddPlayer.vue
│ │ │ ├── AddRecentMatch.vue
│ │ │ ├── ChampionManager.vue
│ │ │ ├── ManagePlayer.vue
│ │ │ ├── NewsManage.vue
│ │ │ ├── RecemtMatchManage.vue
│ │ │ └── UserManage.vue
│ │ └── MainView/ # 主页相关组件
│ │ ├── ChampionHistory.vue
│ │ ├── DataCenter.vue
│ │ ├── Introduce.vue
│ │ ├── Main.vue
│ │ ├── MainFooter.vue
│ │ ├── MainNav.vue
│ │ ├── NewsPage.vue
│ │ ├── PlayerIntro.vue
│ │ ├── RecentMatches.vue
│ │ └── SearchPlayer.vue
│ ├── composables/ # 可复用组合式函数
│ │ └── request.js # HTTP 请求封装
│ ├── router/ # 路由配置
│ │ └── index.js
│ ├── views/ # 页面级组件
│ │ ├── AdminView.vue # 管理员布局视图
│ │ ├── LoginView.vue # 登录/注册视图
│ │ └── MainView.vue # 主页布局视图
│ ├── App.vue # 根组件
│ └── main.js # 应用入口文件
├── package.json
├── vite.config.js
└── …

3. 4. 核心功能模块

3. 4.1 认证与用户管理

  • 登录/注册 (LoginView.vue):
    • 提供用户登录和注册功能。
    • 通过 mode 响应式变量切换登录和注册表单。
    • handleSubmit 方法根据当前模式调用后端 /login/user_login 或 /login/user_register 接口。
    • 管理员特殊处理: 如果用户名是 admin 且密码是 111,则直接跳转到管理员页面 /admin。
    • 登录成功后,用户信息会存储在 sessionStorage 中,并跳转到主页。
  • 用户管理 (UserManage.vue - 管理员端):
    • 允许管理员管理用户,例如添加、删除或修改用户信息。
    • 通过表格展示用户列表,支持刷新数据。
    • 用户名的“用户名”、“账号”和“密码”字段支持点击编辑,失焦后自动保存修改。
    • 提供删除用户功能。

3. 4.2 主页功能 (用户端)

  • 主页布局 (MainView.vue):
    • 包含 MainNav (导航栏) 和 MainFooter (页脚) 组件。
    • <router-view> 用于显示子路由对应的页面内容。
  • 主要页面:
    • 首页 (Main.vue):
      • 作为主页的默认内容,内部集成了 NewsPage (新闻页面) 和 RecentMatches (近期赛事) 组件,为用户提供最新的新闻和赛事信息概览。
    • 导航栏 (MainNav.vue):
      • 提供网站的顶部导航,包括“首页”、“介绍”、“选手”、“历届赛事”、“近期赛事”、“新闻”和“数据中心”等链接。
      • 根据当前路由路径高亮显示活动导航项。
      • 显示当前登录用户的用户名,并提供退出登录功能(点击用户名)。
      • 如果用户未登录,显示“登录”链接,点击跳转到登录页面。
    • 页脚 (MainFooter.vue):
      • 提供网站的底部信息,包括网站简介、快速导航链接(如关于我们、隐私政策等)和联系方式。
      • 包含版权信息,年份动态显示。
    • 介绍 (Introduce.vue):
      • 详细介绍了斯诺克运动的基本简介、历史发展、场地器材和比赛规则。
      • 内容通过 section 标签划分,并提供了右侧固定目录导航,方便用户快速跳转到不同章节。
      • 场地器材部分包含了球桌、球袋、底区、开球区、置球点、球、球杆和辅助器械的详细说明,并以表格形式展示了斯诺克球的规格。
    • 玩家搜索 (SearchPlayer.vue):
      • 提供选手查询功能,用户可以根据国籍和姓名关键词进行筛选。
      • 通过下拉菜单展示所有可用的国籍选项。
      • 查询结果以卡片形式展示选手头像、姓名和国籍,点击卡片可跳转到选手详情页面。
      • 如果查询结果为空,显示“暂无数据”提示。
    • 玩家详情 (PlayerIntro.vue):
      • 根据路由参数中的 id 获取并展示特定选手的详细信息。
      • 包含选手头像、姓名、国籍、出生日期、世界排名、身价、生平介绍和主要成就。
      • 在数据加载中或无数据时显示“加载中或无数据…”提示。
    • 英雄历史 (ChampionHistory.vue):
      • 提供历届赛事信息的查询功能,用户可以根据年份、赛事名称、冠军名称和冠军国籍进行组合查询。
      • 查询结果以卡片形式展示,每张卡片包含年份、赛事名称、冠军信息(姓名、国籍)、亚军信息、比分、总奖金、冠军奖金和备注。
    • 近期比赛 (RecentMatches.vue):
      • 展示近期赛事列表,每场比赛卡片包含赛事名称、赛事时间(具体时间、日期、星期几)、选手信息(姓名、国籍、头像)和赛事详情链接。
      • 支持分页功能,每页显示 10 条数据,用户可以切换“上一页”和“下一页”。
      • 选手头像和赛事链接通过后端接口获取。
    • 新闻页面 (NewsPage.vue):
      • 分为“头条区域”和“分类内容卡片”两部分。
      • 头条区域: 显示最新的四条新闻,第一条新闻作为大图头条,其余三条作为小图新闻,点击可跳转到新闻内容链接。
      • 分类标签: 根据新闻类型动态生成分类按钮,用户可以点击切换查看不同类型的新闻。
      • 分类内容卡片: 以网格布局展示新闻列表,每张卡片包含封面图、标题、类型和发布日期,点击可跳转到新闻内容链接。
      • 发布日期会根据时间差显示为“今天”、“X天前”或具体日期。
    • 数据中心 (DataCenter.vue):
      • 展示斯诺克相关的数据统计和排名信息。
      • 排名列表: 分别展示身价排行、选手国别数量和夺冠次数排行前十名的数据。
      • 图表展示: 使用 ECharts 库绘制了多种图表:
        • 身价柱状图: 展示选手身价分布。
        • 各国选手数量饼图: 展示不同国家选手的数量比例。
        • 选手夺冠次数雷达图: 展示选手夺冠次数的雷达图。
        • 历届赛事总奖金折线图: 展示历届赛事总奖金随年份的变化趋势,支持按赛事分组显示。
      • 数据通过后端 /index/all_stats 接口获取。

3. 4.3 管理员功能 (管理员端)

  • 管理员布局 (AdminView.vue):
    • 包含 AdminHeader (管理员头部) 和 AdminSidebar (管理员侧边栏) 组件。
    • min-width: 800px 确保了管理员界面的最小宽度。
    • <router-view> 用于显示管理员子路由对应的管理页面。
  • 管理页面:
    • 管理员头部 (AdminHeader.vue):
      • 显示“管理员端”标题,作为管理员页面的顶部导航。
      • 样式简单,提供统一的视觉标识。
    • 管理员侧边栏 (AdminSidebar.vue):
      • 提供管理员页面的导航链接,包括用户管理、选手管理、赛事管理和新闻管理等。
      • 使用 router-link 实现路由跳转,并有 active-class 样式指示当前选中项。
    • 添加选手 (AddPlayer.vue):
      • 提供表单用于添加新的选手信息,包括姓名、出生日期、国籍、身价、世界排名、生平介绍和主要成就。
      • 支持选手头像上传,并实时预览。
      • 通过 axios 发送图片上传请求,通过 request 发送选手数据添加请求。
    • 管理玩家 (ManagePlayer.vue):
      • 展示选手信息列表,支持刷新数据。
      • 表格中的姓名、出生日期、国籍、身价、世界排名支持点击编辑,失焦后保存修改。
      • “生平介绍”和“成就”字段通过点击“查看”按钮弹出文本编辑器进行编辑。
      • 头像支持“查看”大图和“重传”功能,重传后会更新头像URL。
      • 提供删除选手功能。
    • 添加历届赛事信息 (AddChampion.vue):
      • 提供表单用于添加历届赛事信息,包括年份、赛事名称、冠军名称、冠军国籍、亚军名称、冠军得分、亚军得分、赛事总奖金、冠军奖金和备注。
      • 表单字段支持必填校验。
    • 历届赛事信息管理 (ChampionManager.vue):
      • 展示历届赛事信息列表,支持刷新数据。
      • 表格中的所有字段(除编号和操作外)都支持点击编辑,失焦后保存修改。
      • 提供删除赛事信息功能。
    • 添加近期赛事 (AddRecentMatch.vue):
      • 提供表单用于添加近期赛事信息,包括赛事名称、赛事时间、选手1编号、选手2编号和赛事链接。
      • 赛事时间支持 datetime-local 类型输入。
    • 近期赛事管理 (RecemtMatchManage.vue):
      • 展示近期赛事列表,支持刷新数据。
      • 表格中的所有字段(除编号和操作外)都支持点击编辑,失焦后保存修改。
      • 赛事时间会格式化显示。
      • 提供删除近期赛事功能。
    • 新闻管理 (NewsManage.vue):
      • 提供表单用于添加新闻,包括标题、发布日期、类型和内容URL链接。
      • 支持新闻封面图上传和预览,并支持重传。
      • 表格展示新闻列表,支持刷新数据。
      • 标题、发布日期、类型、内容链接支持点击编辑,失焦后保存修改。
      • 封面图链接和内容链接支持点击“查看”打开新窗口。
      • 提供删除新闻功能。

更多内容请见项目文件内的说明文档

在这里插入图片描述

↓如有任何问题请加下方推广QQ↓
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐