智慧校园系统开发(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: TK智慧校园管理系统主要用来管理校内学生、老师、班级、年级的相关信息,进行老师和学生信息记录和统计的功能,而这些信息是校园信息化建设的核心基础业务数据。

项目简介

TK智慧校园管理系统主要用来管理校内学生、老师、班级、年级的相关信息,进行老师和学生信息记录和统计的功能,而这些信息是校园信息化建设的核心基础业务数据。项目采用前后端分离架构思想,前端采用HTML+CSS+VUE来实现页面效果展示,后端采用SpringBoot+MybatisPlus框架实现数据存储等服务。存储层使用高性能的MySQL,服务器使用SpringBoot内置的Tomcat9.x,项目构建工具使用Maven来管理jar包和项目构建。

智慧校园指的是信息化为基础构建起来的校园信息化教育管理的一种新的模式,智慧校园能够实现校园工作,学习和生活的一体化发展,在各种信息系统应用的基础上,能实现教学,科研管理和校园生活的有效融合。智慧校园建设所包括的内容很丰富,通过云计算,互联网技术将校园运行中的所有数据有效的联系在一起,通过相关软件系统的有效应用,实现学校智能监控和智能识别的综合信息服务平台的有效构建。

智慧校园有三个基本特征,第一,智慧校园能够提供个性化的服务,通过智能化服务平台及智能感知功能,实现教育管理工作的个性化服务。第二,智慧校园是建立在互联网基础上的, 通过互联网实现信息服务与校园各种应用领域的结合。第三,智慧校园在个性化定制服务的基础上,能够为学校与外部世界的联系提供有效的平台和接口,促进学校资源与外部资源的有效融合。智慧校园是校园信息化的一种高级形式,通过智慧校园可以把学校的物理空间和数字空间结合起来,为师生学习生活,提供智能化的学习生活环境,为师生提供个性化的智能服务。

项目技术栈

项目功能

TK智慧校园系统的使用者主要包含三种用户角色,其一是管理员角色,其二是老师角色,其三是学生角色。这三个角色的具体功能如下:

  • 管理员角色:管理员登录智慧校园系统后可以进行相应的管理操作,主要包含:学生信息管理、老师信息管理、年级信息管理、班级信息管理、个人信息管理、账户密码重置等操作。
  • 老师用户角色:老师用户登录智慧校园系统后可以进行参与相关学生、班级信息管理的相关操作以及个人信息管理等操作。
  • 学生用户角色:学生进入系统后,主要查看自己的班级,同学信息以及个人信息管理等操作。

项目开发

项目搭建

使用idea的springboot脚手架搭建一个maven项目

项目创建完成后,更改一下maven的配置,改成自己的本地maven仓库。

修改pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <!--继承方式 使用spring-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.13</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.project</groupId>
  <artifactId>smart_campus</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>smart_campus</name>
  <description>smart_campus</description>
  <properties>
    <java.version>11</java.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--单元测试启动器-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- thymeleaf支持-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!--  mybatis-plus-->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.3.1</version>
    </dependency>
    <!-- 依赖MyBatis核心包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
    </dependency>
    <!-- 简化POJO实体类开发 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>
    </dependency>
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-generator</artifactId>
      <version>3.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.31</version>
    </dependency>
    <!--swagger-->
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>2.7.0</version>
    </dependency>
    <!--swagger ui-->
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.7.0</version>
    </dependency>
    <!--swagger2  增强版接口文档-->
    <dependency>
      <groupId>com.github.xiaoymin</groupId>
      <artifactId>knife4j-spring-boot-starter</artifactId>
      <version>2.0.4</version>
    </dependency>
    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <version>2.3.0</version>
    </dependency>
    <!--开发者工具-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.29</version>
    </dependency>
    <!-- JWT生成Token-->
    <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.7.0</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <!--spring boot maven插件 , 可以将项目运行依赖的jar包打到我们的项目中-->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.0</version>
        <!-- 插件的依赖 -->
        <dependencies>
          <!-- 逆向工程的核心依赖 -->
          <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
          </dependency>
          <!-- 数据库连接池 -->
          <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.2</version>
          </dependency>
          <!-- MySQL驱动 -->
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

项目包结构

  1. java目录下
  • config : 项目的配置类
  • controller: 控制层
  • mapper : 持久层接口
  • pojo :  实体类
  • service: 服务层
  • util: 工具类包
  • SmartCampusApplication : 启动类
  1. resources目录下
  • mapper :持久层映射文件
  • public/upload:文件上传目录
  • static: 静态资源目录
  • application.yml :SpringBoot核心配置文

这里注意一下:public/upload

设置该目录时,如果为public.upload,那么在本地文件夹,并不会创建一个public下的新文件夹upload ,默认为该文件的文件名。

但是如果设置时,按照这种 public/upload 格式,虽然在目录中显示为public.upload (这是因为public目录下目前只有一个文件夹),但是实际上upload是public文件夹下的一个文件。

配置application.yml文件

server:
  port: 9000
spring:
  #解决SpringBoot2.6.0与swagger冲突问题【原因是在springboot2.6.0中将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser,导致出错,解决办法是切换回原先的AntPathMatcher】
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  #配置数据源
  datasource:
    #配置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    #配置数据库连接属性
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/sgg_zhxy_db?characterEncoding=utf-8&serverTimezone=GMT%2B8&userSSL=false
    username: root
    password: root
    #mybatis-plus内置连接池
    hikari:
      connection-test-query: SELECT 1
      connection-timeout: 60000
      idle-timeout: 500000
      max-lifetime: 540000
      maximum-pool-size: 12
      minimum-idle: 10
      pool-name: GuliHikariPool
  thymeleaf:
    #模板的模式,支持 HTML, XML TEXT JAVASCRIPT
    mode: HTML5
    #编码 可不用配置
    encoding: UTF-8
    #开发配置为false,避免修改模板还要重启服务器
    cache: false
    #配置模板路径,默认是templates,可以不用配置
    prefix: classpath:/static/
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  servlet:
    #设置文件上传上限
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB
mybatis-plus:
  configuration:
    #添加日志支持
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:/mapper/**/*.xml
Hikari

hikari使用

<dependency>
   <groupId>com.zaxxer</groupId>
   <artifactId>HikariCP</artifactId>
   <version>5.0.0</version>
</dependency>

初始化

HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/test");
ds.setUsername("root");
ds.setPassword("123456");

基于配置文件的初始化

HikariConfig config = new HikariConfig("/../hikari.properties");
HikariDataSource ds = new HikariDataSource(config);
// properties file
dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
dataSource.user=test
dataSource.password=test
dataSource.databaseName=mydb
dataSource.portNumber=5432
dataSource.serverName=localhost

常用参数

 hikari:
      connection-test-query: SELECT 1
      connection-timeout: 60000
      idle-timeout: 500000
      max-lifetime: 540000
      maximum-pool-size: 12
      minimum-idle: 10
      pool-name: GuliHikariPool

根据 less is more 的设计哲学,以 Hikari 开头的配置都是可选的配置,都有默认的值,不配也行的。

name

描述

构造器默认值

默认配置validate之后的值

validate重置

autoCommit

自动提交从池中返回的连接

true

true

-

connectionTimeout

等待来自池的连接的最大毫秒数

SECONDS.toMillis(30) = 30000

30000

如果小于250毫秒,则被重置回30秒

idleTimeout

连接允许在池中闲置的最长时间

MINUTES.toMillis(10) = 600000

600000

如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,则会被重置为0(代表永远不会退出);如果idleTimeout!=0且小于10秒,则会被重置为10秒

maxLifetime

池中连接最长生命周期

MINUTES.toMillis(30) = 1800000

1800000

如果不等于0且小于30秒则会被重置回30分钟

connectionTestQuery

如果您的驱动程序支持JDBC4,我们强烈建议您不要设置此属性

null

null

-

minimumIdle

池中维护的最小空闲连接数

-1

10

minIdle<0或者minIdle>maxPoolSize,则被重置为maxPoolSize

maximumPoolSize

池中最大连接数,包括闲置和使用中的连接

-1

10

如果maxPoolSize小于1,则会被重置。当minIdle<=0被重置为DEFAULT_POOL_SIZE则为10;如果minIdle>0则重置为minIdle的值

metricRegistry

该属性允许您指定一个 Codahale / DropwizardMetricRegistry的实例,供池使用以记录各种指标

null

null

-

healthCheckRegistry

该属性允许您指定池使用的Codahale / Dropwizard HealthCheckRegistry的实例来报告当前健康信息

null

null

-

poolName

连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置

null

HikariPool-1

-

initializationFailTimeout

如果池无法成功初始化连接,则此属性控制池是否将fail fast

1

1

-

isolateInternalQueries

是否在其自己的事务中隔离内部池查询,例如连接活动测试

false

false

-

allowPoolSuspension

控制池是否可以通过JMX暂停和恢复

false

false

-

readOnly

从池中获取的连接是否默认处于只读模式

false

false

-

registerMbeans

是否注册JMX管理Bean(MBeans

false

false

-

catalog

为支持catalog概念的数据库设置默认catalog

driver default

null

-

connectionInitSql

该属性设置一个SQL语句,在将每个新连接创建后,将其添加到池中之前执行该语句。

null

null

-

driverClassName

HikariCP将尝试通过仅基于jdbcUrl的DriverManager解析驱动程序,但对于一些较旧的驱动程序,还必须指定driverClassName

null

null

-

transactionIsolation

控制从池返回的连接的默认事务隔离级别

null

null

-

validationTimeout

连接将被测试活动的最大时间量

SECONDS.toMillis(5) = 5000

5000

如果小于250毫秒,则会被重置回5秒

leakDetectionThreshold

记录消息之前连接可能离开池的时间量,表示可能的连接泄漏

0

0

如果大于0且不是单元测试,则进一步判断:(leakDetectionThreshold < SECONDS.toMillis(2) or (leakDetectionThreshold > maxLifetime && maxLifetime > 0),会被重置为0 . 即如果要生效则必须>0,而且不能小于2秒,而且当maxLifetime > 0时不能大于maxLifetime

dataSource

这个属性允许你直接设置数据源的实例被池包装,而不是让HikariCP通过反射来构造它

null

null

-

schema

该属性为支持模式概念的数据库设置默认模式

driver default

null

-

threadFactory

此属性允许您设置将用于创建池使用的所有线程的java.util.concurrent.ThreadFactory的实例。

null

null

-

scheduledExecutor

此属性允许您设置将用于各种内部计划任务的java.util.concurrent.ScheduledExecutorService实例

null

null

-

jackson

Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架.

优点:

  • Jackson 解析大的 json 文件速度比较快;
  • Jackson 运行时占用内存比较低,性能比较好;
  • Jackson 有灵活的 API,可以很容易进行扩展和定制。
    <!-- springboot-json -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
    </dependency>

按照这种格式去解析日期和时区

  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
mybatis-plus
mybatis-plus:
  configuration:
    #添加日志支持
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:/mapper/**/*.xml

mapper-locations: classpath*:/mapper/**/*.xml

设置映射文件位置:
















































相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11月前
|
Java 数据库连接 数据库
智慧校园系统开发(二)
TK智慧校园管理系统主要用来管理校内学生、老师、班级、年级的相关信息,进行老师和学生信息记录和统计的功能,而这些信息是校园信息化建设的核心基础业务数据。
73 1
|
运维 小程序 数据可视化
智慧校园-中小学校建设方案 (智慧校园管理平台源码)
智慧校园电子班牌系统源码包括教师微信端小程序和家长端微信小程序(PC+原生微信小程序)
258 0
智慧校园-中小学校建设方案 (智慧校园管理平台源码)
家政小程序开发、家政系统开发的解决方案
小程序分八大版块:家政保洁、家电清洁、家庭收纳、管道疏通、驾照学车、花卉绿植、商城好货、自定义板块
家政小程序开发、家政系统开发的解决方案
|
大数据 数据挖掘 数据库
智慧党建系统开发,组织部干部管理任免平台建设
智慧党建系统顺应时代号召,运用互联网、大数据等新一代信息技术,实现党建信息资源的融合与共享,稳步提升新时代党建工作的科学化水平。“互联网+党建”是当今时代不可或缺的趋势,而智慧党建就是“互联网+党建”的有机结合,是党建信息化的重要特征,也是新时代党建工作转型的必然趋势。
225 0
|
数据可视化 大数据
智慧党建平台建设,组织部干部人事任免系统开发方案
智慧党建平台是运用信息化新技术,整合各方资源,更有效的加强组织管理,提高服务群众水平,扩大党在网络世界存在感和数字化影响力,提高党的执政能力,巩固党的执政基础的新平台、新模式、新形态。
182 0
|
大数据 数据处理
智慧党建平台建设,组织部党员信息管理系统开发方案
智慧党建平台是新时期、新形势下运用“互联网+” 思维。以提高党的建设科学化水平为主线。突出党群服务的全面要盖,建设以“大数据处理中心”为核心,将分散的、重复的、难于访问的党员、党组织等数据转换成集中统-的、有价值的数据处理中心,搭建以服务党员、服务群众为主要任务的综合性的智慧化党建平台。
371 0
|
数据采集 BI
智慧党建系统开发解决方案,党建积分信息化管理平台建设
智慧党建解决方案针对传统党建各个部门、系统的多源数据标准规范不统一、数据质量参差不齐等情况,进行数据统一、标准汇聚。打破数据孤岛,按照市、县、镇、乡、街道、社区模式进行统一管理,完善基层党建模块功能。
217 0
智慧党建系统开发解决方案,组织部干部信息管理平台建设
智慧党建解决方案,以改革创新精神加强和改进基层党建工作,从而提高党建工作水平。
158 0
|
数据可视化 数据库
智慧党建管理平台建设方案,组织部干部信息管理系统开发
智慧党建管理平台系统是为满足当下基层党建工作的现状,解决传统基层党建工作存在的难点难题,比如党员流动大、流程繁琐复杂、人工审核繁琐等多方面问题。通过智慧党建APP,可以轻松实现在线完成组织活动、党务管理、党员学习教育、党员考评等功能,助力党组织打造特色党建标杆。
165 0
|
大数据 BI 云计算
智慧党建云平台建设方案,组织部党员信息化系统开发
智慧党建云平台是以党的十九大指出的“新时代党的建设总要求”为指引,结合当前党建工作现状,运用互联网、云计算、大数据等信息化技术,所打造的集党的“政治建设、思想建设、组织建设、作风建设、纪律建设、制度建设”于一体的综合性党建工作平台。
559 0