当前位置: 首页 > news >正文

java SSM水质历史数据可视化设计myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点
    java SSM水质历史数据可视化设计是一套完善的web设计系统(系统采用SSM框架进行设计开发,spring+springMVC+mybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。

ssm 水质历史数据可视化设计


二、功能介绍
主要内容包括数据的按时间段查询、表格化分页显示、趋势图显示等功能。完成课题的条件需要熟悉Java web开发,以及web前端设计技术。实现检测站点历史数据的表格化分页显示、根据查询时间区间查询历史数据、历史数据折线图显示等功能,不同的用户角色所能浏览的权限不同
(1)用户管理:对用户信息进行添加、删除、修改和查看
(2)管理员管理:对管理员信息进行添加、删除、修改和查看
(3)地区管理:对地区信息进行添加、删除、修改和查看
(4)站点管理:对站点信息进行添加、删除、修改和查看
(5)水质管理:对水质信息进行添加、删除、修改和查看 折线图查看
(6)个人信息修改

数据库设计

(1)用户信息表如表3.1所示:

表3.1 用户信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

lxdh

VARCHAR

40

联系电话

6

lxdz

VARCHAR

40

联系地址

(2)管理员信息表如表3.2所示:

表3.2 管理员信息表

序号

字段名称

数据类型

长度

主键

描述

1

glyid

INTEGER

11

管理员编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

(3)地区信息表如表3.3所示:

表3.3 地区信息表

序号

字段名称

数据类型

长度

主键

描述

1

dqid

INTEGER

11

地区编号

2

dq

VARCHAR

40

地区

(4)站点信息表如表3.4所示:

表3.4 站点信息表

序号

字段名称

数据类型

长度

主键

描述

1

zdid

INTEGER

11

站点编号

2

zdmc

VARCHAR

40

站点名称

3

dq

VARCHAR

40

地区

(5)水质信息表如表3.5所示:

表3.5 水质信息表

序号

字段名称

数据类型

长度

主键

描述

1

szid

INTEGER

11

水质编号

2

zhd

VARCHAR

40

站点

3

sj

VARCHAR

40

时间

4

zd

VARCHAR

40

浊度

5

yd

VARCHAR

40

盐度

6

sjd

VARCHAR

40

酸碱度

7

sw

VARCHAR

40

水温

8

rjy

VARCHAR

40

溶解氧

9

ddl

VARCHAR

40

电导率

系统ER 图

代码设计

	public String addPage(yonghu yonghu,HttpServletRequest request){Map<String,Object> map= new HashMap<String,Object>();System.out.println("addPageok");return "yonghu/yonghuadd";}@RequestMapping(value="/add")public String add(yonghu yonghu,HttpServletRequest request){Map<String,Object> map= new HashMap<String,Object>();//String name=(String)request.getParameter("name");map.put("yhid", yonghu.getYhid());//用户编号map.put("yhm", yonghu.getYhm());//用户名map.put("mm", yonghu.getMm());//密码map.put("xm", yonghu.getXm());//姓名map.put("lxdh", yonghu.getLxdh());//联系电话map.put("lxdz", yonghu.getLxdz());//联系地址map.put("zd", yonghu.getZd());//联系地址String yhid=(String)yonghu.getYhid();//用户编号String yhm=(String)yonghu.getYhm();//用户名String mm=(String)yonghu.getMm();//密码String xm=(String)yonghu.getXm();//姓名String lxdh=(String)yonghu.getLxdh();//联系电话String lxdz=(String)yonghu.getLxdz();//联系地址String sql="select count(1) as num from yonghu where yhm='"+yhm+"'";ResultSet rs=null;int num=0;DBO db=new DBO();try{rs=db.query(sql);if(rs.next()){num=rs.getInt("num");}if(num>0){request.setAttribute("msg", "<script>alert('添加失败、用户名重复');</script>");}else{yonghudao.save(map);request.setAttribute("msg", "<script>alert('添加成功');</script>");}}catch(Exception e){e.printStackTrace();}System.out.println("addok");return "yonghu/yonghuadd";}/**删除 * */@RequestMapping(value="/del")public String  del(Integer id,HttpServletRequest request,Map<String,Object> map){//	Map<String,Object> map= new HashMap<String,Object>();String a=(String)request.getParameter("keyid");id=Integer.parseInt(a);request.setAttribute("msg", "<script>alert('删除成功');</script>");yonghudao.del(id);return selectall(null,map,request);}/*** 修改yonghu信息*/@RequestMapping(value="/update")public String update(yonghu yonghu,HttpServletRequest request,Map<String,Object> map1){Map<String,Object> map= new HashMap<String,Object>();map.put("yhid", yonghu.getYhid());//用户编号map.put("yhm", yonghu.getYhm());//用户名map.put("mm", yonghu.getMm());//密码map.put("xm", yonghu.getXm());//姓名map.put("lxdh", yonghu.getLxdh());//联系电话map.put("lxdz", yonghu.getLxdz());//联系地址String yhid=(String)yonghu.getYhid();//用户编号String yhm=(String)yonghu.getYhm();//用户名String mm=(String)yonghu.getMm();//密码String xm=(String)yonghu.getXm();//姓名String lxdh=(String)yonghu.getLxdh();//联系电话String lxdz=(String)yonghu.getLxdz();//联系地址request.setAttribute("msg", "<script>alert('修改成功');</script>");yonghudao.update(map);return selectall(null,map1,request);}/*** 修改yonghu信息*/@RequestMapping(value="/upd")public String upd(yonghu yonghu,HttpServletRequest request,Map<String,Object> map1){Map<String,Object> map= new HashMap<String,Object>();map.put("yhid", yonghu.getYhid());//用户编号map.put("yhm", yonghu.getYhm());//用户名map.put("mm", yonghu.getMm());//密码map.put("xm", yonghu.getXm());//姓名map.put("lxdh", yonghu.getLxdh());//联系电话map.put("lxdz", yonghu.getLxdz());//联系地址String yhid=(String)yonghu.getYhid();//用户编号String yhm=(String)yonghu.getYhm();//用户名String mm=(String)yonghu.getMm();//密码String xm=(String)yonghu.getXm();//姓名String lxdh=(String)yonghu.getLxdh();//联系电话String lxdz=(String)yonghu.getLxdz();//联系地址request.setAttribute("msg", "<script>alert('修改成功');</script>");yonghudao.update(map);return mod(null,map1,request);}

mybatis配置

<insert id="insertshuizhi"  parameterType="java.util.Map">insert  into  shuizhi(zhd,sj,zd,yd,sjd,sw,rjy,ddl)  values(#{zhd},#{sj},#{zd},#{yd},#{sjd},#{sw},#{rjy},#{ddl})
</insert><delete id="delshuizhi" parameterType="int">delete  from  shuizhi where szid=#{szid}
</delete><update id="updateshuizhi" parameterType="java.util.Map">
update shuizhi set zhd=#{zhd},sj=#{sj},zd=#{zd},yd=#{yd},sjd=#{sjd},sw=#{sw},rjy=#{rjy},ddl=#{ddl} where szid=#{szid}
</update><!--  查询返回的是 list<map> -->
<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectshuizhi"  parameterType="int" resultType="java.util.Map">select  * from shuizhi where szid=#{szid}
</select><!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectall"  parameterType="java.util.Map" resultType="java.util.Map">select  a.*,b.zdmc,b.dq from shuizhi a,zhandian b where 1=1 and a.zhd=b.zdid
<if test=" null != zhd and zhd!=''" >and a.zhd = #{zhd}
</if>
<if test=" null != kssj and kssj!=''" >and a.sj >= #{kssj}
</if>
<if test=" null != jssj and jssj!=''" >and  #{jssj}>=a.sj</if></select>


  
三、注意事项
    1、管理员账号:admin 密码:admin 数据库配置文件datasource.properties
     2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。
    3、数据库文件名是jspssmwater.sql,系统名称ssmwater
    4、系统首页地址:http://127.0.0.1:8080/ssmwater/login.jsp

四 系统实现


源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

相关文章:

java SSM水质历史数据可视化设计myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM水质历史数据可视化设计是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主…...

C++推箱子游戏开发

游戏 自动地图生成背景音乐推箱子到目标位置 美工资源 美工资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1MZv8pDBXdNDbXxuAAPSM-A **提取码&#xff1a;**2syq 图形库: www.easyx.cn cpp文件 #include "box_man.h" #include <conio.h> #…...

Kotlin函数式接口

函数式接口 接口只有一个抽象方法的接口&#xff0c;称为 函数式接口 functional interface&#xff0c;也叫做 Single Abstract Method(SAM) interface。 注&#xff1a;函数式接口&#xff0c;只有一个抽象方法&#xff0c;但可以有多个非抽象方法。 一、Kotlin Kotlin支持…...

2024年1月9日学习总结

目录 学习目标学习内容联邦学习基础&#xff1a;why, what, howwhy&#xff1f;what&#xff1f;how&#xff1f; 联邦学习的例子——CIFAR-10数据集&#xff08;分类问题&#xff09;1、import libararies2、hyper-parameters3、加载并且划分数据4、创建神经网络模型5、helper…...

Nacos使用MySQL8时区问题导致启动失败

文章目录 配置下mysql的时区方式一 (永久)方式二&#xff08;临时&#xff09; 由于mysql8需要配置时区&#xff0c;如果不配置时区&#xff0c;nacos就连不上mysql&#xff0c;从而也就无法登录nacos自带的图形化界面 配置下mysql的时区 方式一 (永久) 直接修改配置文件&…...

在k8s集群中部署多nginx-ingress

关于ingress的介绍&#xff0c;前面已经详细讲过了&#xff0c;参考ingress-nginx详解和部署方案。本案例ingress的部署使用deploymentLB的方式。 参考链接&#xff1a; 多个ingress部署 文章目录 1. 下载ingress的文件2. 文件资源分析3. 部署ingress3.1 部署第一套ingress3.1…...

SLF4J Spring Boot日志框架

JAVA日志框架 JAVA有好多优秀的日志框架&#xff0c;比如log4j、log4j2、logback、JUL&#xff08;java.util.logging&#xff09;、JCL&#xff08;JAVA Common Logging&#xff09;等等&#xff0c;logback是后起之秀&#xff0c;是Spring Boot默认日志框架。 今天文章的目…...

mysql之导入导出远程备份

文章目录 一、navicat导入导出二、mysqldump命令导入导出2.1导出2.1.1 导出表数据和表结构2.1.2 只导出表结构() 2.2 导入(使用mysqldump导入 包含t _log表的整个数据库 共耗时 20s;)方法一&#xff1a;方法二&#xff1a; 三、LOAD DATA INFILE命令导入导出(只针对单表)设置导…...

Java虚拟机ART 读书笔记 第2章 深入理解Class文件格式

GitHub - Omooo/Android-Notes: ✨✨✨这有一包小鱼干&#xff0c;确定不要吃嘛&#xff1f;( 逃 深入理解Android&#xff1a;Java虚拟机ART 读书笔记 以下内容均来自书中内容 建议看原书哦 第2章 深入理解Class文件格式 2.1 class文件总览 Class文件格式全貌 u4&#xff…...

编程基础 - 初识Linux

编程基础 - 初识Linux 返回序言及专栏目录 文章目录 编程基础 - 初识Linux前言一、Linux发展简介二、现代Linux三、Linux系统各发行版小结 前言 为什么要学习Linux呢&#xff1f;我这Windows用得好好的&#xff0c;简单易用傻瓜式、用的人还超多&#xff01;但是我要告诉你的…...

c yuv422转yuv420p

思路&#xff1a; yuv422 存储格式为 y u y v y u y v y u y v y u y v yuv420p 存储最简单&#xff0c;先存所以的y&#xff0c;再存u&#xff0c;最后v 所以先把422所有的y存在一起&#xff0c;再提奇数行的u &#xff0c;偶数行舍弃。提…...

计算机网络 - 路由器查表过程模拟 C++(2024)

1.题目描述 参考计算机网络教材 140 页 4.3 节内容&#xff0c;编程模拟路由器查找路由表的过程&#xff0c;用&#xff08;目的地址 掩码 下一跳&#xff09; 的 IP 路由表以及目的地址作为输入&#xff0c;为目的地址查找路由表&#xff0c;找出正确的下一跳并输出结果。 1.…...

实现pytorch版的mobileNetV1

mobileNet具体细节&#xff0c;在前面已做了分析记录&#xff1a;轻量化网络-MobileNet系列-CSDN博客 这里是根据网络结构&#xff0c;搭建模型&#xff0c;用于图像分类任务。 1. 网络结构和基本组件 2. 搭建组件 &#xff08;1&#xff09;普通的卷积组件&#xff1a;CBL …...

vue多tab页面全部关闭后自动退出登录

业务场景&#xff1a;主项目是用vue写的单页面应用&#xff0c;但是有多开页面的需求&#xff0c;现在需要在用户关闭了所有的浏览器标签页面后&#xff0c;自动退出登录。 思路&#xff1a;因为是不同的tab页面&#xff0c;我只能用localStorage来通信&#xff0c;新打开一个…...

记一个集群环境部署不完整导致的BUG

一 背景 产品有三个环境&#xff1a;开发测试环境、验收环境、生产环境。 开发测试环境&#xff0c;保持最新的更新&#xff1b; 验收环境&#xff0c;阶段待发布内容&#xff1b; 生产环境&#xff0c;部署稳定内容。 产品为BS架构&#xff0c;后端采用微服务&#xf…...

Go zero copy,复制文件

这里使用零拷贝技术复制文件&#xff0c;从内核态操作源文件和目标文件。避免了在用户态开辟缓冲区&#xff0c;然后从内核态复制文件到用户态的问题。 由内核态完成文件复制操作。 调用的是syscall.Sendfile系统调用函数。 //go:build linuxpackage zero_copyimport ("f…...

http协议九种请求方法介绍及常见状态码

http1.0定义了三种&#xff1a; GET: 向服务器获取资源&#xff0c;比如常见的查询请求POST: 向服务器提交数据而发送的请求Head: 和get类似&#xff0c;返回的响应中没有具体的内容&#xff0c;用于获取报头 http1.1定义了六种 PUT&#xff1a;一般是用于更新请求&#xff0c;…...

详解flink exactly-once和两阶段提交

以下是我们常见的三种 flink 处理语义&#xff1a; 最多一次&#xff08;At-most-Once&#xff09;&#xff1a;用户的数据只会被处理一次&#xff0c;不管成功还是失败&#xff0c;不会重试也不会重发。 至少一次&#xff08;At-least-Once&#xff09;&#xff1a;系统会保…...

Qt/QML编程学习之心得:QDbus实现service接口调用(28)

D-Bus协议用于进程间通讯的。 QString value = retrieveValue();QDBusPendingCall pcall = interface->asyncCall(QLatin1String("Process"), value);QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this);QObject::connect(watcher, SI…...

前端nginx配置指南

前端项目发布后&#xff0c;有些接口需要在服务器配置反向代理&#xff0c;资源配置gzip压缩&#xff0c;配置跨域允许访问等 配置文件模块概览 配置示例 反向代理 反向代理是Nginx的核心功能之一&#xff0c;是指客户端发送请求到代理服务器&#xff0c;代理服务器再将请求…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

二维数组 行列混淆区分 js

二维数组定义 行 row&#xff1a;是“横着的一整行” 列 column&#xff1a;是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...

软件工程教学评价

王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中&#xff0c;您通过丰富的实例&#xff0c;将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻&#xff0c;让这些理论不再是停留在纸面的名词&#xff0c;而是可以指导…...