基于Java,SpringBoot,Vue和UniApp音乐APP安卓软件设计

news/2024/7/8 6:52:40

摘要

本项目通过结合Java、SpringBoot、Vue和UniApp多种技术栈,设计并实现了一个跨平台的音乐APP。后端服务基于SpringBoot框架构建,利用其快速开发和简便部署的特性,实现了包括用户认证、歌曲管理、播放列表和音乐推荐等核心功能。RESTful API的设计使得服务能够灵活地与前端交互。前端界面采用Vue.js框架开发,它提供了响应式的数据绑定和组件化开发模式,确保了用户界面的流畅性和可维护性。同时,借助UniApp框架,将网页端的应用转换为可以部署Android平台上的原生应用,实现了真正的跨平台体验。整体而言,该音乐APP不仅满足了基本的音乐播放需求,而且提供了高性能、高可用性和良好的用户体验,展示了多技术整合在现代Web应用开发中的强大潜力。

实现的功能

本系统的功能应该包括:用户注册登录、首页、视频、社区、我的、后台管理等六个模块。

注册登录:未注册用户可以填写相关信息后注册,有了账号后可以登录APP;

首页模块:主要实现对歌曲和歌手进行搜索、音乐播放和暂停、音乐收藏等功能;

视频模块:主要实现MV的播放和暂停、对MV进行评论和收藏等功能;

社区模块:主要实现一个社交功能,用户可以发表图文,并且可以对图文进行评论等功能;

我的模块:主要实现更改个人信息、查看收藏的歌曲、查看关注列表等功能。

后台管理模块:主要实现对歌曲、歌手、用户、评论、轮播图、社区动态等内容进行管理,实现数据的可操作化。

用到的技术

后端:Java语言的SpringBoot框架、MySql数据库、Maven依赖管理等;

前端:Vue.js语法的UniApp框架,可编译成安卓APP。

部分代码展示

<template>
	<view>
		<view class="warp">
			<u-form labelPosition="top" label-width="150" :model="form" ref="uForm">
				<u-form-item label-position="top" prop="title" borderBottom label="动态标题">
					<u-input v-model="form.title" placeholder="请输入动态标题"/>
				</u-form-item>
				<u-form-item label-position="top" prop="content" borderBottom label="动态内容">
					<u-input type="textarea" v-model="form.content" placeholder="请输入动态内容"/>
				</u-form-item>
				
				<view class="u-flex u-m-t-25 u-p-b-25 u-border-bottom" style="display: flex;">
					<view class="item">
						<ygy-upload-img title="图片1" :size="200" :num="1" :iconCloseStyle="info.iconCloseStyle"
							@saveImg="getImgList($event,'pic')"></ygy-upload-img>
					</view>
					<view class="item">
						<ygy-upload-img title="图片2" :size="200" :num="1" :iconCloseStyle="info.iconCloseStyle"
							@saveImg="getImgList($event,'pic2')"></ygy-upload-img>
					</view>
					<view class="item">
						<ygy-upload-img title="图片3" :size="200" :num="1" :iconCloseStyle="info.iconCloseStyle"
							@saveImg="getImgList($event,'pic3')"></ygy-upload-img>
					</view>
				</view>

			</u-form>
			<view class="buttonBox">
				<u-button type="primary" text="提交" @tap="sub()">提交</u-button>
				<view style="margin-top: 40rpx;"></view>
				<u-button @tap="back()" :plain="true"  type="primary" text="返回">返回</u-button>
			</view>
		</view>
		
		<!-- <picker @change="radioGroupChange" :value="index" :range="array">
			<view class="uni-input">{{parkInfo[index].name}}({{parkInfo[index].orgName}})</view>
		</picker> -->
		
	</view>
</template>

<script>
	import ygyUploadImg from '@/components/ygy-upload-img/ygy-upload-img.vue'
	import appRequest from "@/common/appRequestUrl.js"
	import base64 from "@/common/base64.js"
	export default {
		components: {
			ygyUploadImg
		},
		data() {
			return {
				array: [],
				index:0,
				parkInfo:[],
				selItem:{},
				form:{
					title:"",
					content:"",
					pic:"",
					pic2:"",
					pic3:""
				},
				show:true,
				info: {
					iconCloseStyle: { //关闭图标样式
						fontSize: '60rpx',
						color: "#f40"
					}
				}
			};
		},
		onLoad(){
			
		},
		methods:{
			back(){
				uni.redirectTo({
					url:"/pages/index/index"
				})
			},
			getImgList(arr, name) {
				this.form[name] = arr[0];
			},
			radioGroupChange(e){
				this.form.sex = e;
			},
			sub(){
				let _this = this;
				
				if(_this.form.title =="" || _this.form.content ==""){
					uni.showToast({
						title:"请填写完整",
						icon:"none"
					})
					
					return;
				}
				
				appRequest.request({
					method: "POST",
					data: _this.form,
					url: appRequest.urlMap.addNmArticle,
					success: function(res) {
						if(res.data.code == 200){
							uni.showModal({
								title:"信息",
								content:"发布成功!",
								showCancel:false,
								success:function(){
									uni.reLaunch({
										url:"/pages/index/index"
									})
								}
							})
						}else{
							uni.showModal({
								title:"信息",
								content:res.data.msg,
								showCancel:false,
								success:function(){
									
								}
							})
						}
						
					},
					fail: function(res) {
						console.log(res)
						_this.$api.msg("请求异常");
						// _this.logining = false;
						// _this.data.pass = "";
					}
				})
				
			},
			
		},onReady() {
			
		}
	}
</script>

演示视频

基于Java,Vue和UniApp安卓音乐APP管理系统软件


http://lihuaxi.xjx100.cn/news/2139370.html

相关文章

golang语言系列:SOLID、YAGNI、KISS等设计原则

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 golang语言系列 文章&#xff0c;主要对编程通用技能 SOLID、YAGNI、KISS等设计原则 进行学习 1.SOLID设计原则 S&#xff1a;SRP&#xff0c;单一职责原则O&#xff1a;OCP&#xff0c;开闭原则L&#xff1a;…

WPF学习笔记-FlowDocument实现表格单元格垂直居中以及边框设置

文章目录 概述一、基本方案1.1 添加Grid1.2 添加列1.3 添加行1.4 添加Grid的时候同时添加行和列1.5 添加元素1.6 获取指定单元格的元素1.7 添加TextBlock元素1.7.1 直接添加字符串1.7.2 添加Paragraph1.8 获取文本内容1.9 获取元素二、其他操作2.1 设置边框2.2 设置隔行颜色2.3…

php反序列化漏洞——phar反序列化漏洞

一.什么是phar文件 类比java语言 JAR是开发Java程序一个应用&#xff0c;包括所有的可执行、可访问的文件&#xff0c;都打包进了一个JAR文件里使得部署过程十分简单。 PHAR("Php ARchive")是PHP里类似于JAR的一种打包文件 对于PHP 5.3 或更高版本&#xff0c;Ph…

【ELK+Kafka+filebeat分布式日志收集】部署filebeat和Kibana(三)

filebeat下载 官网:https://www.elastic.co/cn/downloads/beats/filebeat 或者 cd /opt wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.1-linux-x86_64.tar.gz依次执行如下命令

【问题处理】银河麒麟操作系统实例分享,鲲鹏服务器GaussDB测试ping延迟过高问题

1.问题环境 系统环境 物理机 网络环境 私有网络 硬件环境 机型 TaiShan 200 (Model 2280) (VD) 处理器 HUAWEI Kunpeng 920 5250 内存 32GB*16 显卡 无 主板型号 BC82AMDDRE 架构 ARM 固件版本 iBMC固件版本 3.03.00.31 (U82) 单板ID 0x00a9 BIOS版本 1.8…

Windows基线安全检测-安全配置检测

Windows基线安全检测-安全配置检测 前言 Windows在生产环境中是使用最多的一个系统&#xff0c;大部分为客户端&#xff0c;少部分为服务端&#xff1b; 然而其实很多用户对windows系统不是很了解&#xff0c;安全配置更是如此&#xff1b; 因此我们安全人员要定期对员工的主…

医疗器械测试面试准备—质量部总监二面

今天要去参加一个医疗器械公司的二面&#xff0c;面试官职责是质量部总监&#xff0c;尝试从质量总监的角度去准备面试。 1、医疗器械相关法规&#xff1a; 医疗器械产品测试需要了解的主要法规包括以下几个&#xff1a; &#xff08;1&#xff09;FDA&#xff08;美国食品药品…

os模块篇(七)

文章目录 os.grantpt(fd, /)os.isatty(fd, /)os.lockf(fd, cmd, len, /)os.login_tty(fd, /)os.lseek(fd, pos, whence, /)os.open(path, flags, mode0o777, *, dir_fdNone) os.grantpt(fd, /) os.grantpt(fd) 是 Python 中的一个函数&#xff0c;用于在 POSIX 系统上启用伪终…