KTV点歌系统

收藏关注不迷路!!

🌟文末获取源码+数据库🌟

感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

文章目录
  • 摘要
  • 一、开发技术介绍
  • 二、功能介绍
  • 三、代码展示
  • 四、效果图
  • 五 、源码获取

摘要

本文主要论述了如何使用JAVA语言开发一个KTV点歌系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述KTV点歌系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。

KTV点歌系统的主要使用者分为管理员和用户,实现功能包括管理员:个人中心、用户管理、歌曲库管理、歌曲类型管理、点歌信息管理,用户:个人中心、歌曲库管理、点歌信息管理等功能。由于本网站的功能模块设计比较全面,所以使得整个KTV点歌系统信息管理的过程得以实现。

本系统的使用可以实现本KTV点歌系统管理的信息化,可以方便管理员进行更加方便快捷的管理。

关键词:JSP技术;MYSQL数据库;KTV点歌系统

一、开发技术介绍

  • JSP
  • Java
  • MySQL
  • B/S 架构

二、功能介绍

本KTV点歌系统主要包括二大功能模块,即管理员功能模块和用户功能模块。
(1)管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员功能来管理后台系统。主要功能有:个人中心、用户管理、歌曲库管理、歌曲类型管理、点歌信息管理等功能。管理员用例图如图3-1所示。
在这里插入图片描述
用户:个人中心、歌曲库管理、点歌信息管理等功能,用户如图3-2所示。
在这里插入图片描述

三、代码展示

package com.controller;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;import com.entity.DiangexinxiEntity;
import com.entity.view.DiangexinxiView;import com.service.DiangexinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;/*** 点歌信息* 后端接口* @author * @email * @date 2021-02-27 21:18:32*/
@RestController
@RequestMapping("/diangexinxi")
public class DiangexinxiController {@Autowiredprivate DiangexinxiService diangexinxiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,DiangexinxiEntity diangexinxi, HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {diangexinxi.setYonghuzhanghao((String)request.getSession().getAttribute("username"));}EntityWrapper<DiangexinxiEntity> ew = new EntityWrapper<DiangexinxiEntity>();PageUtils page = diangexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, diangexinxi), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 前端列表*/@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,DiangexinxiEntity diangexinxi, HttpServletRequest request){EntityWrapper<DiangexinxiEntity> ew = new EntityWrapper<DiangexinxiEntity>();PageUtils page = diangexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, diangexinxi), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( DiangexinxiEntity diangexinxi){EntityWrapper<DiangexinxiEntity> ew = new EntityWrapper<DiangexinxiEntity>();ew.allEq(MPUtil.allEQMapPre( diangexinxi, "diangexinxi")); return R.ok().put("data", diangexinxiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(DiangexinxiEntity diangexinxi){EntityWrapper< DiangexinxiEntity> ew = new EntityWrapper< DiangexinxiEntity>();ew.allEq(MPUtil.allEQMapPre( diangexinxi, "diangexinxi")); DiangexinxiView diangexinxiView =  diangexinxiService.selectView(ew);return R.ok("查询点歌信息成功").put("data", diangexinxiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){DiangexinxiEntity diangexinxi = diangexinxiService.selectById(id);return R.ok().put("data", diangexinxi);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){DiangexinxiEntity diangexinxi = diangexinxiService.selectById(id);return R.ok().put("data", diangexinxi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody DiangexinxiEntity diangexinxi, HttpServletRequest request){diangexinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(diangexinxi);diangexinxiService.insert(diangexinxi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody DiangexinxiEntity diangexinxi, HttpServletRequest request){diangexinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(diangexinxi);diangexinxiService.insert(diangexinxi);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody DiangexinxiEntity diangexinxi, HttpServletRequest request){//ValidatorUtils.validateEntity(diangexinxi);diangexinxiService.updateById(diangexinxi);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){diangexinxiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<DiangexinxiEntity> wrapper = new EntityWrapper<DiangexinxiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));}int count = diangexinxiService.selectCount(wrapper);return R.ok().put("count", count);}
}

四、效果图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五 、源码获取

下方名片联系我即可!!


大家点赞、收 藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26500.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源绝版经典小游戏合集

随着生活节奏的日益加快&#xff0c;我们常常需要一些小游戏来缓解疲惫的身心。过去&#xff0c;Windows 7自带的扫雷、蜘蛛纸牌等小游戏深受大家喜爱&#xff0c;但随着系统的更新换代&#xff0c;这些经典游戏逐渐淡出了人们的视野。我也曾花费不少时间寻找这些游戏&#xff…

【AI Coding】Windsurf:【Prompt】全局规则与项目规则「可直接使用」

先看效果 这是在windsurf中与ai对话的反馈 为什么要写这个规则&#xff08;Prompt&#xff09; 写的这份针对windsurf的全局规则&#xff0c;详细的涵盖了前端的各个方向&#xff1a;技术栈、测试、工程、性能优化、回答规范 通过提前预设一些关键词&#xff0c;可以提高回答…

传输层协议TCP

TCP全称为 传输控制协议(Transmission Control Protocol)&#xff0c;就是要对数据的传输进行一个详细的控制。 TCP协议段格式 源端口&#xff1a;发送方的端口号&#xff0c;用来标识发送端的应用程序或进程。 目标端口&#xff1a;接收方的端口号&#xff0c;用来标识接收端…

SpringBoot 日志 与 门面模式(外观模式)

日志的使用 先引入日志对象&#xff0c;注意是 引入的是 org.slf4j 这个包下的 Logger 在传参上&#xff1a;可以传入类名&#xff0c;或者一个字符串&#xff0c;该参数表示日志名称 例如如果传入 “aaaa”&#xff0c;那么日志的名称就是 aaaa RequestMapping("/log&…

【MySQL篇】数据类型

目录 前言&#xff1a; 1&#xff0c;数据类型的分类 ​编辑 2 &#xff0c;数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float类型 2.3.2 decimal类型 3&#xff0c;字符串类型 3.1 char 3.2 varchar 3.3 char与varchar的比较 3.4日期和时间类型 3.5 …

网络类型及数据链路层协议

网络类型的分类&#xff1a; p2p----point to point---点到点网络MA---Multi-Access---多点接入网络 BMA--- Broadcast Multi-Access Network ---广播型多点接入网络NBMA--- Non-Broadcast Multi-Access Network ---非广播型多点接入网络 数据链路层协议&#xff1a; MA网络…

序列化选型:字节流抑或字符串

序列化既可以将对象转换为字节流&#xff0c;也可以转换为字符串&#xff0c;具体取决于使用的序列化方式和场景。 转换为字节流 常见工具及原理&#xff1a;在许多编程语言中&#xff0c;都有将对象序列化为字节流的机制。例如 Python 中的 pickle 模块、Java 中的对象序列化…

企业微信里可以使用的企业内刊制作工具,FLBOOK

如何让员工及时了解公司动态、行业资讯、学习专业知识&#xff0c;并有效沉淀企业文化&#xff1f;一份高质量的企业内刊是不可或缺的。现在让我来教你该怎么制作企业内刊吧 1.登录与上传 访问FLBOOK官网&#xff0c;注册账号后上传排版好的文档 2.选择模板 FLBOOK提供了丰富的…

Java 大视界 -- Java 大数据在智能安防入侵检测与行为分析中的应用(108)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

Spring IoC

前言: 我们介绍下Spring. 通过前⾯的学习, 我们知道了Spring是⼀个开源框架, 他让我们的开发更加简单. 他⽀持⼴泛的应⽤场景, 有着活跃⽽庞⼤的社区, 这也是Spring能够⻓久不衰的原因. 这么说可能还是很抽象.用一句话概括就是Spring就是一个包含了众多工具和方法的IoC容器. 所…

如何配置虚拟机的IP上网

一.配置vm虚拟机网段 在虚拟机主页点击编辑->虚拟网络编辑器&#xff0c;选择VMnet8&#xff0c;要改动两个地方&#xff1a; 1.子网IP改成192.168.10.0 2.NAT设置->192.168.10.2 让所有的vm配置的虚拟机使用NAT时&#xff0c;它们的网段都是一致的。注意:这里的第三个部…

Java GC 基础知识快速回顾

目录 一、Java 垃圾回收&#xff08;GC&#xff09;基本概念和重要性分析 &#xff08;一&#xff09; Java 垃圾回收&#xff08;GC&#xff09;基本概念回顾 1.GC 三种常见语义 2.Mutator&#xff1a;应用程序的内存管理角色 3.TLAB&#xff08;线程本地分配缓存&#x…

【Linux】Linux权限

1 Linux权限概念 Linux下有两种用户&#xff1a;超级用户(root)&#xff0c;普通用户 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制。 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户的命令提示符是…

Linux笔记---缓冲区

1. 什么是缓冲区 在计算机系统中&#xff0c;缓冲区&#xff08;Buffer&#xff09; 是一种临时存储数据的区域&#xff0c;主要用于协调不同速度或不同时序的组件之间的数据传输&#xff0c;以提高效率并减少资源冲突。它是系统设计中的重要概念&#xff0c;尤其在I/O操作、网…

Tomcat基础知识及其配置

1.Tomcat简介 Tomcat是Apache软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服…

机器学习数学通关指南

✨ 写在前面 &#x1f4a1; 在代码的世界里沉浸了十余载&#xff0c;我一直自诩逻辑思维敏捷&#xff0c;编程能力不俗。然而&#xff0c;当我初次接触 DeepSeek-R1 并领略其清晰、系统的思考过程时&#xff0c;我不禁为之震撼。那一刻&#xff0c;我深刻意识到&#xff1a;在A…

数据结构之八大排序算法详解

目录 一、冒泡排序&#xff08;Bubble Sort&#xff09;原理代码实现时间复杂度 二、选择排序&#xff08;Selection Sort&#xff09;原理代码实现时间复杂度 三、插入排序&#xff08;Insertion Sort&#xff09;原理代码实现时间复杂度 四、希尔排序&#xff08;Shell Sort&…

RocketMQ的运行架构

目录 1. 核心组件(1) NameServer(2) Broker(3) Producer(4) Consumer 2. 消息流转流程3. 高可用机制4. 扩展性与负载均衡5.容错机制5. 特殊功能支持6. 典型部署架构总结 RocketMQ 是一款高性能、高可靠的分布式消息中间件&#xff0c;其运行架构设计为分布式、可扩展、高可用的…

【AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)

AIGC系列博文&#xff1a; 【AIGC系列】1&#xff1a;自编码器&#xff08;AutoEncoder, AE&#xff09; 【AIGC系列】2&#xff1a;DALLE 2模型介绍&#xff08;内含扩散模型介绍&#xff09; 【AIGC系列】3&#xff1a;Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…

算法日记32:15届蓝桥C++B填空(握手问题+小球反弹)

握手问题 一、题解 1、通过观察我们可以发现&#xff0c;题目属于数论中的蜂巢问题&#xff0c;但是我们这里不使用结论&#xff0c;而是通过分析推出 2、假设我们不考虑特殊情况(也就是那 7 7 7个人的情况)&#xff0c;那么问题的答案应该为 int res0; for(int i49;i>1;i…