基于java的少儿编程网上报名系统+vue

news2024/11/16 2:49:05

@TOC

ssm006基于java的少儿编程网上报名系统+vue

研究背景

近年来,随着网络技术的不断发展,越来越多人在网站查询各种信息,少儿编程网上报名系统对用户和管理员都有很大帮助,少儿编程网上报名系统通过和数据库管理系软件协作来实现用户与管理员之间的一个很好的操作平台,基于这一点,设计了一个少儿编程网上报名系统。

经过对以上的情况进行分析,我们对用户的实际需求进行了详细的分析,指定出了相应的开发计划,为了方便用户在线进行查看首页、课程信息、课程资讯、留言反馈、个人中心、后台管理操作,帮助管理员节省很多的管理时间以及可以减少工作量,使得管理工作更加快捷顺利的进行,因此开发设计了该系统。

随着计算机的不断发展,已经融入到我们生活工作的每一个领域中,给我们的生活工作带来了很多的便利,因此,希望可以通过该系统的开发也能使少儿编程网上报名系统实现信息化管理,减轻人的负担,提高工作效率。

1.2 研究现状

与其他国家相比,我国的软件产业相对落后,在信息化建设方面起步也比较晚,但是随着我国经济的不断发展,以及网络技术的不断提高,我国也在不断的进行软件行业的摸索,也得到了一些成果,我国的软件产业得到了快速的发展,越来越多的软件系统出现在人们的视线中,也逐渐改变着人们生活工作的方式。但是,对于信息化,与很多发达国家相比,由于信息化程度的落后以及经费的不足,我国的少儿编程网上报名系统开发方面还是相对落后的,因此,要不断的努力探索,争取开发出一个实用信息化的少儿编程网上报名系统,来实现少儿编程网上报名系统的信息化。因此本课题以课程为例,目的是开发一个实用的少儿编程网上报名系统。

少儿编程网上报名系统的开发运用java语言,以及MYSQL、SSM框架等技术的支持下共同完成了该网站系统的开发,实现了少儿编程网上报名系统的信息化,用户可以有一个非常好的平台体验,管理员也可以通过该系统进行更加方便的管理操作,实现了之前指定好的计划。

1.3 研究内容

通过对管理员和用户的需求分析,我们将该少儿编程网上报名系统的功能逐步进行了添加,然后进行功能分析和检测,而且针对这两方面进行了深入研究探讨,该少儿编程网上报名系统主要对开发背景、市场需求、数据库分析、功能模块以及开发技术进行了着重介绍和分析。最后对系统中的功能信息进行测试和分析。本次毕业实现的少儿编程网上报名系统,不管是可行性分析、系统整体框架设计还是编码,都需要严格遵守软件开发的三个周期八个阶段,在该系统的开发过程中,要保证系统具有良好的时效性、易安装性以及稳定性。在代码编写时一定要按照要求进行,让代码编写看起来更美观,开发出一个便于用户的使用的少儿编程网上报名系统是本次开发的主要目标。在系统完成之后,利用电脑来将系统进行安置,并且用户可以通过电脑随时进行查看自己需求的信息。此次在少儿编程网上报名系统的开发中,对系统要进行可行性分析、系统需求分析等基本分析,并且完成系统的部署和测试,在这些功能都实现之后,通过电脑进行操作系统。系统规划分析中,需要按照以下所示的技术路线。

第二章 开发技术介绍

此次B/S结构、Java技术以及mysql数据库是该少儿编程网上报名系统的主要开发技术,然后对系统的整体设计、数据库设计、功能模块设计、系统页面设计以及系统程序设计进行了详细的研究与规划。

2.1 系统开发平台

在该少儿编程网上报名系统中,Eclipse 技术可以给用户带来极大方便,其主要特点就是可以使用户学习起来方便、快捷,另一方面就是信息储存量也是非常大的,该功能主要被应用为数据库中进行查询和编程。并且该功能的数据应用比较灵活,通过我们现在的发展可以得知,只要利用一小部分代码就可以来实现非常强大的功能。因此,该系统数据库开发主要是由Eclipse 技术进行系统代码管理。

2.2 平台开发相关技术

2.2.1 B/S架构

B/S结构的特点也非常多,例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量,通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量,这些功能的操作主要是由服务器来进行控制的,由于该软件的技术不断成熟,最主要的特点就是与浏览器相互配合为软件开发带来了极大的便利,不仅能够减少开发成本,还能够不断加强系统的软件功能,层层相互独立和展现层是该B/S结构完成相互连接的主要特性。

2.2.2 Java简介

Java语言擅长开发互联网类应用和企业级应用,现在已经相当的成熟,而且也是目前使用最多的编程语言之一。Java语言具有很好的面向对象性,可以符合人的思维模式进行设计,封装是将对象的属性和方法尽可能地隐藏起来,使得外界并不知道是如何实现的,外界能通过接口进行访问,继承是指每个类都会有一个父类,所有的子类都有父类的方法,可以进行继承,但是只有final修饰的类不能被继承,通过继承可以使得代码得到重新利用,能够提高软件的开发效率,也是多态的前提。

Java就像C语言、C#语言等,也是一种程序开发语言,而它的特点就是面向对象。作为一种程序开发与设计的语言,它有很多特性,主要特性就是面向对象、夸平台以及可以分布式运行。Java语言项目不但安全性高、稳定性强,而且可以并发运行。

为了提高开发的速度及效率,必须做到代码的重复使用和简化程序的复杂度,要达到上述的要求java语言通过封装、继承与多态等方式实现,这样可以很大程度上达到信息的封装,提高代码复用率,减少冗余度,提高效率。在Java中难能可贵的一点就是它的垃圾回收机制,它使得以往程序中大量存在的内存泄漏的问题得到了较好的缓解。所谓的内存泄漏就是程序向操作系统申请了一块存储空间,比如定义了一个变量,但是由于某种原因,这个变量一直没有使用,但是仍然占用着系统的内存空间,可能一两个这样的变量对程序和操作系统造不成什么大的影响,但是试想如果这样的变量定义的多了系统的内存空间就会一步步减少,从而造成机器的性能降低甚至宕机。但是在Java中有垃圾回收机制的存在,这种机制极大地避免了内存泄漏的出现,在Java虚拟机中,垃圾回收机制会对长时间没有引用变量指向的对象实施垃圾回收,简单的说就是将这个对象销毁,以避免内存泄漏的情况出现。

2.2.3 mysql数据库介绍

MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实课程环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

本系统使用了MySQL数据库,建立了多张数据库表来存储课程以及少儿编程网上报名系统相关数据。系统中主要应用查询(select),修改(update),删除(delete)以及增加(insert)等语句来实现系统功能。

2.2.4 SSM三大框架

1.Spring的优势: 通过Spring的IOC特性,将对象之间的依赖关系交给了Spring控制,方便解耦,简化了开发。

2.Spring MVC的优势: SpringMVC是使用了MVC设计思想的轻量级web框架,对web层进行解耦,使我们的开发更简洁。

3.Mybatis的优势:

数据库的操作(sql)采用xml文件配置,解除了sql和代码的耦合,提供映射标签,支持对象和和数据库orm字段关系的映射,支持对象关系映射标签,支持对象关系的组建提供了xml标签,支持动态的sql。

第三章 系统分析

通过对系统功能模块分析可以得知,主要是对项目元素组合、分解和更换做出相应的单元,再通过系统模块来规划出一个原则,系统的设计首先是围绕管理员需求进行开发设计的,主要是为了能够更好的管理信息和服务于用户,其次就是围绕课程信息进行设计,最终的设计必须要满足管理员和用户的需求,这样才能够实现系统的最大意义和价值,并且在设计的时候一定要避免代码相互重复的情况发生。

3.1 可行性分析

可行性分析是每开发一个项目必不可少的一部分,可行性分析可以直接影响一个系统的存活问题,针对开发意义进行分析,还有就是是否可以通过所开发的系统来弥补传统少儿编程网上报名系统模式的不足,是否能够更好的解决课程信息问题等,通过对该少儿编程网上报名系统的开发设计,不仅能够逐步减少工作人员的工作量,而且还可以进行高效工作和管理。所以该系统的开发实现了最大的意义和价值,在系统完成后,利益是否大过于成本,是否能够达到预期效果,这些方面都要进行可行性分析,再通过分析之后,就可以决定是否开发此系统。该少儿编程网上报名系统的开发设计中,以下几点进行了可行性分析:技术可行性:通过Java技术的采用,由于该技术不断成熟,所以使用该技术设计少儿编程网上报名系统是具有可行性的。经济可行性:在开发过程中,系统完成后的利益是否大过于开发成本。操作可行性:少儿编程网上报名系统的开发设计中,方便用户的可操作性和实用性。

3.1.1 技术可行性

由于Java技术的不断成熟,所以它在本次少儿编程网上报名系统中是非常重要的,该系统的开发主要是基于服务端采用Java 、B/S结构和mysql数据库进行开发设计的。通过对这些技术进行使用,从而保证了系统的完整性和简单性。并且在数据库中保证数据的安全性和稳定性。在校时间我们对Java语言技术和mysql数据库技术进行了学习和交流,并且对软件测试也是简单的了解,然后根据这些少儿编程网上报名系统方式我们可以做出一个简单的系统开发、检验和辨别。通过Java技术和Mysql数据库的相互配合开发出一个高效、稳定的少儿编程网上报名系统。

(1)轻量级系统,使用灵活:少儿编程网上报名系统,设计时,考虑到不同使用者的习惯,让系统比较轻量级,便于安装,也完成了系统所具备的所有功能,在以上基础上,通过系统测试与优化,让操作更加灵活。

(2)系统开发0成本:该少儿编程网上报名系统,以开源的Windows 7 操作系统为基础,采用Java技术编码开发,并使用MySQL轻量级数据库,没有多余的开发成本。

(3)覆盖范围:任何城市,都能安装使用本次设计的少儿编程网上报名系统,对系统使用方没有严格的规定,平台搭建好了就能使用。

3.1.2 经济可行性

通过经济效益和社会价值来决定一个系统的存活问题,是否通过开发少儿编程网上报名系统来帮助管理员减少工作,是否能够方便用户的使用,假如开发的软件不能够实现成本节约和资源节约,并且还要投入大量的时间、经济和精力,那么这个系统的开发设计是没有意义和价值的,就不具备开发设计的条件。

3.1.3 操作可行性

此次开发的少儿编程网上报名系统登录界面是我们最常见的一种登录窗口进行登录的,只需通过电脑就可以登录访问,没有那些复杂的登录过程。该少儿编程网上报名系统主要是采用B/S结构、Java语言技术以及mysql数据库进行开发设计的,使得系统的开发更高效和稳定,也体现出来该系统的的现代化和规范化。用户可以轻松的进行学习,其系统主要特点就是易操作和易管理。

3.2 系统性能分析

1.系统功能完整性:根据系统每一个功能模块,都能够设计出当初的算法和代码,用户信息主要是以文字和表格的模式进行介绍。

2.系统运行分析:系统中的每一个功能都要有相应的代码和编写数据的关系。系统的物理的数据主要是通过需求分析和可行性分析进行分析和显示的。

3.界面设计:系统中的软件都是由不同的代码来进行处理和分析的,并且保证了系统界面的易操作性能。

4.安全分析:不同的角色要有不同的信息,所以我们登录系统时必须要使用自己的账号和密码进行登录,不能随意进行操作,这样才可以保证系统的安全性。

3.3 系统功能需求分析

任务需求分析是每个系统开发设计必不可少的一部分,系统质量的好坏可以直接影响系统的存活问题,所以我们必须要将任务需求分析做到位,少儿编程网上报名系统的设计在初期的分析是尤为重要的,通过任务分析可以更顺利的进行系统设计,并且保证了用户的满意度。

(1)前台首页功能需求

前台首页进入系统可以查看首页、课程信息、课程资讯、留言反馈、个人中心、后台管理等操作。前台首页用例图如图3-1所示。 ######### 图3-1 前台首页用例图

(2)管理员功能需求

管理员登陆后,主要功能模块包括首页、个人中心、用户管理、课程类型管理、课程信息管理、课程购买管理、退课管理、课程评价管理、留言板管理、系统管理等功能。管理员用例图如图3-2所示。

图3-2 管理员用例图

(3)用户功能需求

用户登陆后,主要功能模块包括首页、个人中心、课程购买管理、退课管理、课程评价管理、我的收藏管理等功能。用户用例图如图3-3所示。

图3-3 用户用例图

第四章 系统设计

4.1 系统的功能结构图

过系统需求分析,该少儿编程网上报名系统功能结构图如图4-1所示: #########

图4-1 系统功能结构图

4.2 数据库概念结构设计

4.2.1 数据库E-R图

概念设计主要是通过数据库的概念结构和模式进行建立数据库嗯逻辑结构,然后利用数据库的DBMS进行完成,它不需要计算机系统的支持。通过系统的整体来看,主要是对数据库进行管理、整理、更新等操作。数据库的功能是非常强大的,每个系统的开发肯定离不开数据库,通过数据库可以看得出整个系统的质量和效率,根据以上的系统分析,对系统中的主要实体进行规划。以下是几个关键实体的实体关系图:

(1) 课程信息管理实体E-R图如图4-2所示:

图4-2课程信息管理实体属性图 ######### (2) 课程评价管理实体E-R图如图4-3所示:

图4-3课程评价管理实体图 ######### (3) 退课管理实体E-R图如图4-4所示:

图4-4退课管理实体图 ######### (4) 课程购买管理实体E-R图如图4-5所示:

图4-5课程购买管理实体图

#########

4.2.2 数据库逻辑结构设计

数据库的主要功能就是对相关信息就行存储,通过某种计算进行数据储存,其数据库的数据存储是井井有条的。并且其中的数据具有一定的独立性和安全性。通过对系统功能设计的要求和功能模块的规划,该少儿编程网上报名系统的设计与实现设计到了多个数据表。以下信息是介绍数据库表的设计结构以及功能建立数据库表:

表名:kechenggoumai

功能:课程购买

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
dingdanbianhaovarchar200订单编号
kechengbianhaoint课程编号
kechengmingchengint课程名称0
kechengleixingint课程类型
jiageint价格
shuliangint数量
zongjineint总价格
goumairiqiint购买日期
beizhuint备注
yonghumingint用户名
xingmingint姓名

表名:config

功能:配置文件

字段名称类型长度字段说明主键默认值
idbigint主键主键
namevarchar100配置参数名称
valuevarchar100配置参数值

表名:kechengleixing

功能:课程类型

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
kechengleixingvarchar200课程类型

表名:kechengpingjia

功能:课程评价

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
dingdanbianhaovarchar200订单编号
kechengbianhaovarchar200课程编号
kechengmingchengvarchar200课程名称
yonghupingfenlongtext4294967295用户评分
pingjianeirongint评价内容
shaituint晒图
pingjiariqiint评价日期
yonghumingint用户名

表名:kechengxinxi

功能:课程信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
kechengbianhaovarchar200课程编号
kechengmingchengvarchar200课程名称
kechengleixingvarchar200课程类型
keshivarchar200课时
tupianvarchar200图片
jiagevarchar200价格
kechengxiangqingvarchar200课程详情

表名:users

功能:用户表

字段名称类型长度字段说明主键默认值
idbigint主键主键
usernamevarchar100用户名
passwordvarchar100密码
rolevarchar100角色管理员
addtimetimestamp新增时间CURRENT_TIMESTAMP

表名:token

功能:token表

字段名称类型长度字段说明主键默认值
idbigint主键主键
useridbigint用户id
usernamevarchar100用户名
tablenamevarchar100表名
rolevarchar100角色
tokenvarchar200密码
addtimetimestamp新增时间CURRENT_TIMESTAMP
expiratedtimetimestamp过期时间CURRENT_TIMESTAMP

表名:yonghu

功能:用户

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yonghumingvarchar200用户名
mimavarchar200密码
xingmingvarchar200姓名
xingbielongtext4294967295性别
touxiangdate图片
lianxidianhuavarchar200联系电话

第五章 系统功能实现

5.1管理员功能模块

管理员登录,通过填写注册时输入的用户名、密码、角色进行登录,如图5-1所示。

图5-1管理员登录界面图

管理员登录进入少儿编程网上报名系统可以查看管理员:首页、个人中心、用户管理、课程类型管理、课程信息管理、课程购买管理、退课管理、课程评价管理、留言板管理、系统管理等信息,如图5-2所示。

图5-2管理员功能界面图

用户管理,在用户管理列表可以查看用户名、密码、姓名、性别、头像、联系电话

等内容,还可以根据需要修改或删除等操作,如图5-3所示。

图5-3用户管理界面图

课程信息管理,在课程信息管理列表可以查看课程编号、课程名称、课程类型、课时、图片、价格等信息,并可根据需要进行修改或删除等操作,如图5-4所示。

图5-4课程信息管理界面图

轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作,如图5-5所示。

图5-5轮播图管理界面图

课程购买管理,在课程购买管理列表可以查看订单编号、课程编号、课程名称、价格、数量、总金额、购买日期、备注、用户名、姓名、是否支付等内容,并且根据需要进行修改或删除等操作,如图5-6所示。

图5-6课程购买管理界面图

退课管理,在退课管理列表可以查看订单编号、课程名称、课程类型、价格、数量、总金额、退课日期、退课说明、用户名、姓名、审核回复、审核等内容,并且根据需要进行修改、删除操作,如图5-7所示。

图5-7退课管理界面图

课程评价管理,在课程评价管理列表可以查看订单编号、课程名称、用户评分、评价内容、晒图、评价日期、用户名等内容,并且根据需要进行修改或删除等操作,如图5-8所示。

图5-8课程评价管理界面图

5.2用户功能模块

用户登录进入少儿编程网上报名系统可以查看首页、个人中心、课程购买管理、退课管理、课程评价管理、我的收藏管理等内容,如图5-9所示。

图5-9用户功能界面图

课程购买管理,在课程购买管理列表可以查看用订单编号、课程编号、课程名称、价格、数量、总金额、购买日期、备注、用户名、姓名、是否支付等内容,并且根据需要进行查看、删除等操作,如图5-10所示。

图5-10课程购买管理界面图

课程评价管理,在课程评价管理列表可以查看订单编号、课程名称、用户评分、评价内容、晒图、评价日期、用户名等内容,并且根据需要进行查看、删除等操作,如图5-11所示。

图5-11课程评价管理界面图

我的收藏管理,在我的收藏管理列表可以查看收藏ID、表名、收藏名称、收藏图片等内容,并且根据需要进行查看、删除等操作,如图5-12所示。

图5-12我的收藏管理界面图

5.3前台首页功能模块

少儿编程网上报名系统在前台首页可以查看首页、课程信息、课程资讯、留言反馈、个人中心、后台管理等内容,如图5-13所示。

图5-13前台首页功能界面图 ######### 登录、注册,在注册列表中通过填写用户名、密码、姓名、联系电话等信息进行注册、登录,如图5-14所示。

图5-14登录、注册界面图

课程信息,在课程信息可以填写课程名称、课程编号、课程类型、课时、价格等信息内容,并且根据需要进行购买操作,如图5-15所示。

图5-15课程信息界面图 ######### 课程资讯,在课程资讯列表中通过填写新课程上线等信息进行查看,如图5-16所示。

图5-16课程资讯界面图

留言反馈,在留言反馈列表中通过填写留言内容等信息立即提交,如图5-17所示。

图5-17留言反馈界面图

系统测

UserController.java

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.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();
    }
}

StoreupServiceImpl.java
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;


import com.dao.StoreupDao;
import com.entity.StoreupEntity;
import com.service.StoreupService;
import com.entity.vo.StoreupVO;
import com.entity.view.StoreupView;

@Service("storeupService")
public class StoreupServiceImpl extends ServiceImpl<StoreupDao, StoreupEntity> implements StoreupService {
	

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<StoreupEntity> page = this.selectPage(
                new Query<StoreupEntity>(params).getPage(),
                new EntityWrapper<StoreupEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<StoreupEntity> wrapper) {
		  Page<StoreupView> page =new Query<StoreupView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<StoreupVO> selectListVO(Wrapper<StoreupEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public StoreupVO selectVO(Wrapper<StoreupEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<StoreupView> selectListView(Wrapper<StoreupEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public StoreupView selectView(Wrapper<StoreupEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

FileUtil.java
package com.utils;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
* @author yangliyuan
* @version 创建时间:2020年2月7日 下午8:01:14
* 类说明 : 
*/

public class FileUtil {
	public static byte[] FileToByte(File file) throws IOException {
		// 将数据转为流
		@SuppressWarnings("resource")
		InputStream content = new FileInputStream(file);
		ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
		byte[] buff = new byte[100];
		int rc = 0;
		while ((rc = content.read(buff, 0, 100)) > 0) {
			swapStream.write(buff, 0, rc);
		}
		// 获得二进制数组
		return swapStream.toByteArray();
	}
}

HomeChart.vue
<template>
  <div id="home-chart" style="width:100%;height:400px;"></div>
</template>
<script>
export default {
  mounted() {
    this.homeChart();
  },
  methods: {
    homeChart() {
      // 基于准备好的dom,初始化echarts实例
      var myChart = this.$echarts.init(document.getElementById("home-chart"));
      // 指定图表的配置项和数据
      var option = {
        tooltip: {
          trigger: "axis"
        },
        legend: {
          data: ["访问量", "用户量", "收入"]
        },
        grid: {
          left: "3%",
          right: "4%",
          bottom: "3%",
          containLabel: true
        },
        xAxis: {
          type: "category",
          boundaryGap: false,
          data: [
            "1月",
            "2月",
            "3月",
            "4月",
            "5月",
            "6月",
            "7月",
            "8月",
            "9月",
            "10月",
            "11月",
            "12月"
          ]
        },
        yAxis: {
          type: "value"
        },
        series: [
          {
            name: "访问量",
            type: "line",
            stack: "总量",
            data: [
              120,
              132,
              101,
              134,
              90,
              230,
              210,
              120,
              132,
              101,
              134,
              90,
              230
            ]
          },
          {
            name: "用户量",
            type: "line",
            stack: "总量",
            data: [
              220,
              182,
              191,
              234,
              290,
              330,
              310,
              182,
              191,
              234,
              290,
              330,
              310
            ]
          },
          {
            name: "收入",
            type: "line",
            stack: "总量",
            data: [
              150,
              232,
              201,
              154,
              190,
              330,
              410,
              232,
              201,
              154,
              190,
              330,
              410
            ]
          }
        ]
      };
      // // 使用刚指定的配置项和数据显示图表。
      myChart.setOption(option);
      //根据窗口的大小变动图表
      window.onresize = function() {
        myChart.resize();
      };
    }
  }
};
</script>
<style lang="scss" scoped>
#home-chart {
  background: #ffffff;
  padding: 20px 0;
}
</style>

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

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

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

相关文章

基于STM32开发的智能安防报警系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化传感器数据采集与处理报警控制与通知Wi-Fi通信与远程监控应用场景 家庭安防管理商铺和办公室的智能安防常见问题及解决方案 常见问题解决方案结论 1. 引言 随着智能家居和物联网技…

拟合的置信区间

目标图: 图片来源:Fig. 4e from Arwani, Ruth Theresia, et al. "Stretchable ionic–electronic bilayer hydrogel electronics enable in situ detection of solid-state epidermal biomarkers." Nature Materials (2024): 1-8. 1. 数据输入 假设原始数据如下:…

书生大模型实战营第三期基础岛第二课——8G 显存玩转书生大模型 Demo

8G 显存玩转书生大模型 Demo 基础任务进阶作业一&#xff1a;进阶作业二&#xff1a; 基础任务 使用 Cli Demo 完成 InternLM2-Chat-1.8B 模型的部署&#xff0c;并生成 300 字小故事&#xff0c;记录复现过程并截图。 创建conda环境 # 创建环境 conda create -n demo pytho…

协作新选择:即时白板在线白板软件分享

在团队合作中&#xff0c;产品经理扮演着至关重要的角色&#xff0c;他们不仅是产品与用户之间的纽带&#xff0c;更是产品性能和用户需求的桥梁。他们需要深入参与产品的研发过程&#xff0c;并与研发团队保持紧密的沟通。因此&#xff0c;产品经理需要一款高效的协作工具来提…

纯电SUV挑花眼了?看看这两款十多万的家用SUV谁更香

文/王俣祺 导语&#xff1a;随着新能源技术的日益成熟&#xff0c;现如今纯电汽车已经在市场上卖得风生水起。早些时候人们可能还会对纯电汽车抱有“续航焦虑”&#xff0c;但随着各个车型在电池容量以及能耗方面都迎来了进步&#xff0c;充电网络也日渐完善&#xff0c;选择一…

多商户多套部署需修改注意事项

同一台服务器上部署多个多商户项目&#xff0c;需要修改和调整的地方等。 一、修改代码中的端口号&#xff0c;需要两个项目不能使用同一个端口号&#xff0c;例如&#xff1a;A项目用&#xff1a;8324&#xff0c;B项目用&#xff1a;8325&#xff1b; 二、修改反向代理&…

认识泛型VS包装类

1.包装类 在 Java 中&#xff0c;由于基本类型不是继承自 Object &#xff0c;为了在泛型代码中可以支持基本类型&#xff0c; Java 给每个基本类型都对应了 一个包装类型。 ps:为什么需要包装类&#xff1f;说白了java就是面向对象编程的 比如&#xff1a;Java 的集合框架&am…

笔记整理—uboot启动过程(3)栈的二次设置以及常用名词解析,BL1部分完

前文说到了uboot的lowlevel_init都干了些什么&#xff0c;也就是经过了这项初期的低级启动&#xff0c;使得我们能在串口监视器上看见机器打印出的第一句话“OK”。当lowlevel_init结束后&#xff0c;uboot去做了另一件事情&#xff0c;那就是栈的再次设置。 第一次栈设置发生在…

昂科烧录器支持Analogix硅谷数模的USB-C端口控制器ANX7406

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Analogix硅谷数模的USB-C端口控制器ANX7406已经被昂科的通用烧录平台AP8000所支持。 ANX7406是一款USB Type-C™&#xff08;USB-C&#xff09;端口控制器&#xff0c;符合最新…

网络 通信

一、客户端接收(也可以bind) 1. socket socket 函数 用于创建一个套接字&#xff08;socket&#xff09;&#xff0c;这是网络通信的基础。 它的原型如下&#xff1a;int socket(int domain, int type, int protocol); 参数&#xff1a; domain&#xff1a;指定协议族&…

go-zero接入skywalking链路追踪

文章目录 Skywalking本地测试搭建项目引入dockerfile打包引入最后效果图 Skywalking本地测试搭建 这里用Docker搭建 #数据存储用ES&#xff0c;搭建ES docker run -d -p 9200:9200 -p 9300:9300 --name es -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-X…

【C++】12.智能指针

在上一篇博客【C】11.异常中我们知道有些时候会造成内存空间的未释放从而导致内存泄漏&#xff0c;因此本篇博客的内容就是如何减少内存泄漏——智能指针。 一、RAII RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种利用对象生命周期来控制程序资…

基于单片机的指纹识别考勤系统设计

本设计基于STC89C52为主控的指纹考勤系统&#xff0c;主要分为光学AS608指纹识别模块、LCD12864液晶模块、AT24C02存储芯片、DS1302时钟芯片模块、矩阵按键模块。AS608指纹模块进行指纹的采集&#xff1b;矩阵按键能实现对指纹的录入、删除、编号&#xff1b;AT24C02存储模块对…

如何使用ssm实现网上服装销售系统

TOC ssm047网上服装销售系统jsp 第一章 绪 论 1.1背景及意义 系统管理也都将通过计算机进行整体智能化操作&#xff0c;对于网上服装销售系统系统所牵扯的管理及数据保存都是非常多的&#xff0c;例如管理员&#xff1b;主页、个人中心、用户管理、商品分类管理、商品信息管…

[Meachines] [Easy] Optimum HFS文件管理2.3.x-RCE+MS16-032

信息收集 IP AddressOpening Ports10.10.10.8TCP:80 $ nmap -p- 10.10.10.8 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 80/tcp open http HttpFileServer httpd 2.3 |_http-server-header: HFS 2.3 |_http-title: HFS / Service Info: OS: Windows; CP…

Python计算机视觉 第2章-局部图像描述子

Python计算机视觉 第2章-局部图像描述子 2.1 Harris角点检测器 Harris角点检测算法&#xff08;也称Harris & Stephens角点检测器&#xff09;是一个极为简单的角点检测算法。该算法的主要思想是&#xff0c;如果像素周围显示存在多于一个方向的边&#xff0c;我们认为该…

滥用 DHCP 管理员组来提升 Windows 域中的权限

介绍 从 Google Docs 到 Active Directory,访问管理几乎影响到组织中的每个角色。在讨论权限和访问控制时,如何最大限度地减少员工的挫败感而不增加不必要的风险是一个微妙的平衡——安全团队痛苦地意识到了这一点。 因此,“刚好足够的访问权限”是任何访问策略的关键要素…

鸿蒙内核源码分析(用户态锁篇) | 如何使用快锁Futex(上)

快锁上下篇 鸿蒙内核实现了Futex&#xff0c;系列篇将用两篇来介绍快锁&#xff0c;主要两个原因: 网上介绍Futex的文章很少&#xff0c;全面深入内核介绍的就更少&#xff0c;所以来一次详细整理和挖透。涉及用户态和内核态打配合&#xff0c;共同作用&#xff0c;既要说用户…

日志文件切割:以分隔割tomcat 的 catalina.out 文件为例子

文章目录 引言I 日志文件切割使用用crontab工具,定时执行任务通过Linux系统自带的切割工具logrotate来进行切割【推荐】基于其他日志框架进行分隔II 扩展logrotate 简介logrotate 用法引言 问题:tomcat 的 catalina.out 文件不会进行日志切割,当这个文件大于2G 时,会影响to…

归并排序、计数排序及排序大总结

一、归并排序 1.基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#x…