基于SSM+Vue的理发店会员管理系统的设计与实现

news2024/11/19 0:46:08

末尾获取源码
开发语言:Java
Java开发工具:JDK1.8
后端框架:SSM
前端:采用JSP技术开发
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是


目录

一、项目简介

二、系统设计

系统目标

功能结构设计

三、系统项目截图

美发信息管理

用户预约管理

用户分享管理

优惠活动管理

商铺信息

美发信息

用户分享

优惠活动

四、核心代码

4.1登录相关

4.2文件上传

4.3封装

五、论文目录与截图


一、项目简介

网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此理发店会员信息的管理计算机化,系统化是必要的。设计开发理发店会员管理系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于理发店会员信息的维护和检索也不需要花费很多时间,非常的便利。

理发店会员管理系统是在MySQL中建立数据表保存信息,运用SSM框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。系统实现的功能包括商铺管理,美发管理,用户预约管理,用户分享管理,留言管理等功能。

理发店会员管理系统在让理发店会员信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升理发店会员管理系统提供的数据的可靠性,让系统数据的错误率降至最低。


二、系统设计

当前,系统的类型有很多,从系统呈现的内容来看,系统的类型有社交类,有商业类,有政府类,有新闻类等。那么,在众多系统类型中,先明确将要设计的系统的类型才是系统设计的首要工作,然后在此基础上明确系统的用户群,功能等,针对这些信息设计出具有独特体验和视觉的系统。如此才能让系统比较具有特色,也能够在众多相似系统中给用户留下深刻印象。

系统目标

本系统在功能制定上,严格参照用户的要求,但是在设计本系统时,也要满足易操作,使用便利的设计要求。由此,设计出一个规范化并且符合用户需求的系统,一定要达到下述系统目标。

第一个系统目标:用户与系统之间的操作方式是基于人机对话,可视化界面的设计除了美观性之外,也具备友好性。可视化界面提供的各类信息符合准确性,可靠性的要求,并能够方便用户灵活查看。

第二个系统目标:用户与系统交互产生的数据,要严格规范的保存在数据库里,无论是后期管理人员查找与管理,都要确保数据安全。

第三个系统目标:实现用户需求的功能。根据对用户的调查得出的功能需求,完成理发店会员管理系统的设计与实现。

第四个系统目标:在必要环节,对用户登记的数据进行检查,包括数据长度,以及数据输入类型等的检查,发现错误及时反馈,引导用户规范登记数据。常见的有密码修改,注册登录,用户资料填写等环节的数据核验。

第五个系统目标:设计开发本系统,需要尽最大努力,在系统具备易操作的特点外,也要求系统于后期使用中,维护方便,让系统具备易维护的特点。

第六个系统目标:本系统在交付用户使用时,可以达到运行稳定的目标,另外,系统具备安全性,也符合可靠性的条件,用户可以放心使用。

功能结构设计

前面所做的功能分析,只是本系统的一个大概功能,这部分需要在此基础上进行各个模块的详细设计。

设计的管理员的详细功能见下图,管理员登录进入本人后台之后,管理美发,商铺,优惠活动,用户分享信息,审核用户预约的美发信息。

设计的用户的详细功能见下图,用户预约美发,查看并评论商铺,优惠活动以及用户分享信息。

 



三、系统项目截图

美发信息管理

管理员权限中的美发信息管理,其运行效果见下图。管理员查看美发相关评论,修改美发信息,查询美发信息。

用户预约管理

管理员权限中的用户预约管理,其运行效果见下图。管理员需要审核用户预约的美发,查看用户是否完成支付。

 

用户分享管理

管理员权限中的用户分享管理,其运行效果见下图。管理员查看用户分享的信息,查询,修改用户的分享信息。

 

优惠活动管理

管理员权限中的优惠活动管理,其运行效果见下图。管理员修改优惠活动信息,查看用户评论优惠活动的信息,删除指定的优惠活动信息。

 

商铺信息

用户权限中的商铺信息,其运行效果见下图。用户查看商铺介绍,评论商铺。

 

美发信息

用户权限中的美发信息,其运行效果见下图。用户收藏美发信息,评论美发信息,预约美发。

 

用户分享

用户权限中的用户分享,其运行效果见下图。用户查看别人发布的分享信息,可以收藏分享信息,评论分享信息。

 

优惠活动

用户权限中的优惠活动,其运行效果见下图。用户查看优惠活动详细信息,评论优惠活动。

 


四、核心代码

4.1登录相关


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

4.2文件上传

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
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 org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

4.3封装

package com.utils;

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

/**
 * 返回数据
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
	}
	
	public static R error() {
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

五、论文目录与截图

1 绪论........................................... 1

1.1 选题背景......................................................................................................... 1

1.2 选题意义......................................................................................................... 1

1.3 研究内容......................................................................................................... 2

2 系统开发技术.................................... 3

2.1 Java语言......................................................................................................... 3

2.2 SSM框架......................................................................................................... 3

2.3 MYSQL数据库............................................................................................... 4

3 系统分析....................................... 5

3.1可行性研究...................................................................................................... 5

3.1.1经济可行性........................................................................................... 5

3.1.2时间可行性........................................................................................... 5

3.1.3操作可行性........................................................................................... 5

3.2系统性能分析.................................................................................................. 6

3.2.1系统易用性........................................................................................... 6

3.2.2系统健壮性........................................................................................... 6

3.2.3系统安全性........................................................................................... 6

3.3 系统流程分析................................................................................................. 6

3.4系统功能分析.................................................................................................. 9

4 系统设计...................................... 12

4.1系统目标........................................................................................................ 12

4.2功能结构设计................................................................................................ 13

4.3数据库设计.................................................................................................... 14

4.3.1数据库E-R图.................................................................................... 14

4.3.2 数据库表结构.................................................................................... 17

5 系统实现...................................... 23

5.1 管理员功能实现........................................................................................... 23

5.1.1 美发信息管理.................................................................................... 23

5.1.2 用户预约管理.................................................................................... 23

5.1.3 用户分享管理.................................................................................... 24

5.1.4 优惠活动管理.................................................................................... 24

5.2 用户功能实现............................................................................................... 25

5.2.1 商铺信息............................................................................................ 25

5.2.2 美发信息............................................................................................ 25

5.2.3 用户分享............................................................................................ 26

5.2.4 优惠活动............................................................................................ 26

6系统测试....................................... 28

6.1 系统测试的类型........................................................................................... 28

6.2 功能测试....................................................................................................... 29

6.3 可用性测试................................................................................................... 29

6.4 测试结果分析............................................................................................... 29

结  论.......................................... 30

参考文献........................................ 32

致  谢.......................................... 33

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

普中51-数码管实验

文章目录 数码管实验**静态数码管实验**动态数码管实验多位数码管简介数码管动态显示原理74HC245 和74HC138芯片介绍74HC245 芯片简介74HC138 芯片简介 代码如下&#xff1a; 数码管实验 如图所示&#xff1a; 从上图可看出&#xff0c;一位数码管的引脚是 10 个&#xff0c;…

path环境变量设置

path是一个包含多个路径的变量&#xff0c;用于指定系统可执行文件的搜索路径。主要作用是能够让系统快速启动一个应用程序。当用户输入一个命令时&#xff0c;系统会在path指定的路径中搜索可执行文件&#xff0c;以确定命令所对应的可执行文件位置。 如运行txt&#xff0c;tx…

VMware虚拟化基础操作实战(基于ESXi6.7 操作系统安装CentOS7.5)

任务要求 环境要求 1、PC终端一台&#xff08;CPU 大于 8 核&#xff0c;内存大于8GB&#xff0c;Windows10 操作系统&#xff09; 2、VM虚拟机&#xff08;VMware workstation14 起&#xff09; 3、安装在虚拟机上的操作系统&#xff08;ESXi6.7 操作系统&#xff09; 4、在…

Sleuth--链路追踪(二)

1 Zipkin的集成 1.1 1 ZipKin介绍 Zipkin 是 Twitter 的一个开源项目&#xff0c;它基于Google Dapper实现&#xff0c;它致力于收集服务的定时数据&#xff0c;以解决微服务架构中的延迟问题&#xff0c;包括数据的收集、存储、查找和展现。 我们可以使用它来收集各个…

InnoDB的页分裂与页合并

数据组织方式 在 InnoDB 存储引擎中&#xff0c;表数据都是根据主键顺序组织存放的&#xff0c;这种存储方式的表称为索引组织表 行数据&#xff0c;都是存储在聚集索引的叶子节点上的。 在 InnoDB 引擎中&#xff0c;数据行是记录在逻辑结构 page 页中的&#xff0c;而每一…

每日一博 - 闲聊 API GateWay

文章目录 概念图解小结 概念 API Gateway&#xff08;API 网关&#xff09;是一个在现代应用程序和服务架构中起关键作用的组件&#xff0c;它具有多种功能和作用&#xff0c;主要包括以下方面&#xff1a; 路由和请求分发&#xff1a;API 网关充当前端入口&#xff0c;根据请…

css中BFC外边距塌陷解决办法

什么是BFC 块级格式化上下文&#xff0c;独立的渲染区域&#xff0c;与外部毫不相干&#xff0c;上下两个元素都设置了外边距&#xff0c;结果会出现重叠的部分合并 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /&…

2020-2023中国高等级自动驾驶产业发展趋势研究-中国高等级自动驾驶发展近况

1.2 中国高等级自动驾驶发展近况 通过对中国高等级自动驾驶行业的观察和分析&#xff0c;亿欧汽车认为&#xff0c;除技术解决方案提供商外&#xff0c;如今的车企、政府、资本同样在产业链中扮演重要角色。此外&#xff0c;车路协同技术的发展也为高等级自动驾驶的发展提供了更…

解密(2023寒假每日一题 20)

给定一个正整数 k k k &#xff0c;有 k k k 次询问&#xff0c;每次给定三个正整数 n i , e i , d i n_i,e_i,d_i ni​,ei​,di​ &#xff0c;求两个正整数 p i , q i p_i,q_i pi​,qi​ &#xff0c;使 n i p i q i &#xff0c; e i d i ( p i − 1 ) ( q i − 1 …

肖sir__mysql之三表__008

mysql之三表 create table student( stu_no int, stu_name varchar(10), sex char(1), age int(3), edit varchar(20) ) DEFAULT charsetutf8; insert into student values (1,‘wang’,‘男’,21,‘hello’), (2,‘小明’,‘女’,22,‘haha2’), (3,‘hu’,‘女’,23,‘haha3…

数据结构基础8:二叉树oj+层序遍历。

二叉树oj层序遍历 题目一&#xff1a;二叉树的销毁&#xff1a;方法一&#xff1a;前序遍历&#xff1a;方法二&#xff1a;后序遍历&#xff1a; 题目二&#xff1a;二叉树查找值为x的节点方法一&#xff1a;方法二&#xff1a;方法三&#xff1a; 题目三&#xff1a;层序遍历…

全球与中国双壳鼻夹板市场:增长趋势、竞争格局与前景展望

双壳鼻夹板是一种医疗器械&#xff0c;用于鼻部手术后的支撑和稳定&#xff0c;以及减轻手术区域的肿胀和出血。它是由柔软的材料制成&#xff0c;通常是塑料或硅胶。双壳鼻夹板的设计呈现类似于两个壳体或半壳体&#xff0c;可以覆盖整个鼻部或其一侧。它的形状和大小可以根据…

网络基础-应用层协议-HTTP/HTTPS

HTTP/HTTPS HTTP基本概念协议格式请求报文请求方法请求资源地址协议版本 应答报文 常见Header常见状态码与状态描述Cookie&Sessionhttp协议特点 HTTPS基本概念对称加密与非对称加密数据摘要&数据指纹HTTPS工作过程探究只采用对称加密只采用非对称加密双方都采用非对称加…

酷开系统音乐频道,用音乐治愈你!

音乐作为娱乐生活中的一部分&#xff0c;它可以起到调节心情让身体放松的作用&#xff0c;同时还可以舒缓压力&#xff0c;给大脑一个休息的时间。有句话说得好&#xff1a;“耳机是人类的避难所&#xff0c;音乐是心脏的救命丸”。音乐是一种疗愈身心的存在&#xff0c;耳机线…

strncpy

strncpy&#xff1a; 函数介绍&#xff1a; 函数原型&#xff1a; char *strncpy(char *dest, const char *src, int n) 返回值&#xff1a;dest字符串起始地址 说明&#xff1a; 1、当src字符串长度小于n时&#xff0c;则拷贝完字符串后&#xff0c;剩余部分将用空字节填…

【PHP图片托管】CFimagehost搭建私人图床 - 无需数据库支持

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

Bigemap在土地规划行业是怎么应用的?

选择Bigemap的原因&#xff1a; 获取途径&#xff1a;国土部门内部使用的是arcgis专用的系统&#xff0c;也安装不来arcgis软件&#xff0c;所以在网上找的我们软件软件上有影像地图&#xff0c;可以看高程海拔,有测量画图工具&#xff0c;可以导入和导出SHP和CAD文件&#xf…

远程ssh连接manjaro无法使用系统剪切板

文章目录 背景本机环境 vim的复制粘贴查看vim寄存器各种寄存器的含义 使用系统剪切板ssh访问系统剪切板安装配置X11再次查看vim寄存器 后记 背景 使用vim打开文件&#xff0c;把a文件中的内容&#xff0c;复制一部分到b文件中去。 大概步骤如下&#xff1a; 1、搜索要复制的…

SD系列——图像高清化算法方法

图像高清化算法方法 文章目录 图像高清化算法方法一、通过 Extras 选项卡执行放大算法二、通过 SD upscale 脚本增强细节三、txt2img 页面下的 Hires Fix四、扩展插件 Ultimate SD upscale ControlNet Tile参数调整单用 Ultimate SD Upscale小结 五、Tiled Diffusion & VA…

怎么把两首歌曲拼接在一起?

怎么把两首歌曲拼接在一起&#xff1f;音乐的美妙旋律能够陶冶人们的心灵&#xff0c;在日常生活和工作中&#xff0c;许多用户会使用各种歌曲来进行剪辑和制作。尤其在媒体行业工作的用户&#xff0c;每天都需要使用大量不同歌曲的片段&#xff0c;进行拼接和剪辑来进行视频制…