文末获取资源,收藏关注不迷路
前言
随着社会多元化的不断发展,气候问题不可被简单的理解为是科学问题,更多的是环境问题,可以直接影响到人民的日常生活,甚至对一个国家的政治经济带来影响,由此可见,气象行业是一项非常重要的行业。
目前生活中,已经有越来越多的领域正在进行或已经完成了由传统纸质资源管理向高效管理系统的转变。例如我们常见的,学生管理系统、图书馆管理系统、事业单位人员管理系统。如今系统开发技术趋于成熟,但是未来细分行业由为重要。
同时由于大数据时代的到来,信息化逐渐改变人们的生活,信息交流和分享越来越自由快捷,所以我选择研究并设计基于Java的气象数据分析系统,运用大数据去解决气象问题。本气象数据分析系统将采用springboot架构,并运用vue等开发技术,使得我们的程序具有良好的可移植性和可阅读性,可高效的实现数据分析,特别适合需求频繁变化的敏捷开发场景。
一、研究背景
伴随着人民群众生活水平的不断提高,人民对精神层面的追求也在不断加强,所以外出旅游、健身的群众不断增多,而这些都会受到天气的影响,因此气象行业对人民群众的日常生活影响很大。近年来,随着计算机技术的不断发展,气象领域也引入了先进的科学技术,这极大地推动了气象领域的开发建设,给我们带来最直接的结果就是对天气的预测准确性得到了极大的提高,对灾害天气的报警能力也得到了极大的改善,极大地减少了国家和群众的财产损失。
但是,随着气象服务领域的不断拓展,气象信息资料的种类越来越多、信息量越来越大、实时性应用要求越来越高,气象信息的综合应用需求不能满足的问题也越来越突出。主要表现在:没有统一的气象信息共享平台,各级气象部门管理、业务、服务等多种应用需求难以满足;缺少经过整理的基本观测资料、业务支撑产品和气象服务产品,各级业务单位难以方便地获取所需的气象信息;各类气象信息的数据格式、表现形式、服务方式各异,造成气象信息共享的集约化程度不高,利用率较低。
因此,根据现代气象业务发展的需要,以满足公共气象服务为目标,需要建立数据收集、分类和存储、监控、数据查询及管理等含有多个功能的气象百事通系统。该系统的建立不仅可以使我们便于查询历史气象数据,还可以对数据进行实时监控,统计和收集,从而提高气象业务数据内在质量,推进气象业务服务能力,使气象现代化建设及防灾减灾的效益得以提升。
二、研究意义
第一,友好界面。气象数据分析系统开发设计,界面的友好性比较重要,满足这一要求才能体现出人性化设计特征,和用户应用系统便捷性相适应,动态的人机交互设计,用户应用系统的时候能感受到操作的便利, 提高用户的体验良好感受,才能有助于将系统开采设计的作用价值充分发挥出来[2]。
第二,稳定性要求。开发设计的气象数据分析系统,需要保持其稳定,系统应用稳定才能有助于各项管理工作高效率完成,提升系统使用体验度。系统运行保障因外部异常造成系统崩溃,系统发生问题后数据能及时备份,第一时间恢复数据信息,保障系统良好运行。
第三,可扩展性。气象数据分析系统的开发设计,需要满足可扩展性的要求,系统的设计需要考虑未来系统业务扩展问题,在测试不断应用下,功能需求会不断扩展,通过良好扩展性作用发挥,满足多样化的需要。
第四,满足需求。为能有效加强对大用户的需求,在开发气象数据分析系统的过程中,要能和实际应用的需求紧密对接,保障系统的实用性 [3]。系统开发要能有前瞻性,由于气象数据分析系统建设是长期工程,不同阶段需要有先导发展蓝图以及行动纲领为指导。系统的开发要能满足灵活性应用的需要,将系统的价值充分发挥出来。
三、主要使用技术
环境需要
1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。
2.IDE环境:IDEA,Eclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat7/Tomcat8/Tomcat9版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
后端:Spring+SpringMVC+Mybatis+Springboot
前端:vue+CSS+JavaScript+jQuery+elementui
使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名
四、研究内容
根据现实需要,此系统我们设计出一下功能,主要有以下功能模板。
(1)气象数据分析主页:首页、天气预报、新闻资讯、个人中心。
(2)管理员功能:首页、个人中心、用户管理、天气预报管理、系统管理。
在系统的功能设计方面,气象数据分析系统的设计目标是便于人们可以查看天气预报,因此抽取了满足管理员、用户基本业务需求的基本用例
设计任务:
1.首先要先收集历史观测数据,可以在百度,CSDN,气象报刊和气象网站等平台进行收集
2.使用java语言对数据进行整理、分析、入库、检索等操作,之后使其构成一个系统,可以进行查询等操作
3.最后再进行对一些漏洞的检测修正和一些细节的完善与修订
设计目标:
能够已定界面上检索历史气象数据,还可以根据临近天气要素查找历史相近数据,进而达到能预测短期天气的效果
主要内容包括:
收集历史气象观测数据,平台包括中国气象报,CSDN等,对历史数据进行整理分析;
2.使用java语言编辑,其中MySQL作为数据库用于数据存储,使用springboot+mybatis框架实现后端业务逻辑功能的设计,前端页面使用VUE+Elementui框架搭建;
3.具体系统功能包含:天气数据的录入、分析和检索,有展示与查询模块、气象信息的修改与订正模块和气象预报模块等组成。
五、核心代码
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);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
六、文章目录
本科生毕业论文独创性声明 I
本科生毕业论文使用授权声明 I
1 绪论 1
1.1 论文背景和意义 1
1.2 研究内容 1
2 系统开发工具 3
2.1相关技术介绍 3
2.2 B/S模式 3
2.3 JAVA语言 4
2.4 MYSQL数据库 4
2.5 SPRINGBOOT框架 5
2.6 VUE开发技术 5
3 系统分析 6
3.1 概述 6
3.2 功能需求 6
3.3 非功能性需求 8
3.4 系统特色 9
3.5 可行性研究 9
3.5.1 经济可行性 9
3.5.2 技术可行性 9
3.5.3 运行可行性 10
3.6系统总体设计 10
3.6.1 系统设计结构 10
3.6.2系统架构设计 10
3.6.3 系统三层模式设计 11
4 系统概要设计 12
4.1系统功能模块设计 12
4.2 系统数据库设计 13
5 系统实现 15
5.1用户登录模块 15
5.2密码修改模块的实现 16
5.3个人中心 16
5.4天气预报模块的实现 17
5.5用户管理 18
5.6天气预报管理模块的实现 18
5.7 系统管理 19
6 系统测试 19
6.1 功能测试 20
7 总结 21
致谢 23