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设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主…...
C++推箱子游戏开发
游戏 自动地图生成背景音乐推箱子到目标位置 美工资源 美工资源: 链接:https://pan.baidu.com/s/1MZv8pDBXdNDbXxuAAPSM-A **提取码:**2syq 图形库: www.easyx.cn cpp文件 #include "box_man.h" #include <conio.h> #…...
Kotlin函数式接口
函数式接口 接口只有一个抽象方法的接口,称为 函数式接口 functional interface,也叫做 Single Abstract Method(SAM) interface。 注:函数式接口,只有一个抽象方法,但可以有多个非抽象方法。 一、Kotlin Kotlin支持…...
 
2024年1月9日学习总结
目录 学习目标学习内容联邦学习基础:why, what, howwhy?what?how? 联邦学习的例子——CIFAR-10数据集(分类问题)1、import libararies2、hyper-parameters3、加载并且划分数据4、创建神经网络模型5、helper…...
Nacos使用MySQL8时区问题导致启动失败
文章目录 配置下mysql的时区方式一 (永久)方式二(临时) 由于mysql8需要配置时区,如果不配置时区,nacos就连不上mysql,从而也就无法登录nacos自带的图形化界面 配置下mysql的时区 方式一 (永久) 直接修改配置文件&…...
 
在k8s集群中部署多nginx-ingress
关于ingress的介绍,前面已经详细讲过了,参考ingress-nginx详解和部署方案。本案例ingress的部署使用deploymentLB的方式。 参考链接: 多个ingress部署 文章目录 1. 下载ingress的文件2. 文件资源分析3. 部署ingress3.1 部署第一套ingress3.1…...
 
SLF4J Spring Boot日志框架
JAVA日志框架 JAVA有好多优秀的日志框架,比如log4j、log4j2、logback、JUL(java.util.logging)、JCL(JAVA Common Logging)等等,logback是后起之秀,是Spring Boot默认日志框架。 今天文章的目…...
 
mysql之导入导出远程备份
文章目录 一、navicat导入导出二、mysqldump命令导入导出2.1导出2.1.1 导出表数据和表结构2.1.2 只导出表结构() 2.2 导入(使用mysqldump导入 包含t _log表的整个数据库 共耗时 20s;)方法一:方法二: 三、LOAD DATA INFILE命令导入导出(只针对单表)设置导…...
 
Java虚拟机ART 读书笔记 第2章 深入理解Class文件格式
GitHub - Omooo/Android-Notes: ✨✨✨这有一包小鱼干,确定不要吃嘛?( 逃 深入理解Android:Java虚拟机ART 读书笔记 以下内容均来自书中内容 建议看原书哦 第2章 深入理解Class文件格式 2.1 class文件总览 Class文件格式全貌 u4ÿ…...
 
编程基础 - 初识Linux
编程基础 - 初识Linux 返回序言及专栏目录 文章目录 编程基础 - 初识Linux前言一、Linux发展简介二、现代Linux三、Linux系统各发行版小结 前言 为什么要学习Linux呢?我这Windows用得好好的,简单易用傻瓜式、用的人还超多!但是我要告诉你的…...
c yuv422转yuv420p
思路: yuv422 存储格式为 y u y v y u y v y u y v y u y v yuv420p 存储最简单,先存所以的y,再存u,最后v 所以先把422所有的y存在一起,再提奇数行的u ,偶数行舍弃。提…...
 
计算机网络 - 路由器查表过程模拟 C++(2024)
1.题目描述 参考计算机网络教材 140 页 4.3 节内容,编程模拟路由器查找路由表的过程,用(目的地址 掩码 下一跳) 的 IP 路由表以及目的地址作为输入,为目的地址查找路由表,找出正确的下一跳并输出结果。 1.…...
 
实现pytorch版的mobileNetV1
mobileNet具体细节,在前面已做了分析记录:轻量化网络-MobileNet系列-CSDN博客 这里是根据网络结构,搭建模型,用于图像分类任务。 1. 网络结构和基本组件 2. 搭建组件 (1)普通的卷积组件:CBL …...
vue多tab页面全部关闭后自动退出登录
业务场景:主项目是用vue写的单页面应用,但是有多开页面的需求,现在需要在用户关闭了所有的浏览器标签页面后,自动退出登录。 思路:因为是不同的tab页面,我只能用localStorage来通信,新打开一个…...
记一个集群环境部署不完整导致的BUG
一 背景 产品有三个环境:开发测试环境、验收环境、生产环境。 开发测试环境,保持最新的更新; 验收环境,阶段待发布内容; 生产环境,部署稳定内容。 产品为BS架构,后端采用微服务…...
Go zero copy,复制文件
这里使用零拷贝技术复制文件,从内核态操作源文件和目标文件。避免了在用户态开辟缓冲区,然后从内核态复制文件到用户态的问题。 由内核态完成文件复制操作。 调用的是syscall.Sendfile系统调用函数。 //go:build linuxpackage zero_copyimport ("f…...
http协议九种请求方法介绍及常见状态码
http1.0定义了三种: GET: 向服务器获取资源,比如常见的查询请求POST: 向服务器提交数据而发送的请求Head: 和get类似,返回的响应中没有具体的内容,用于获取报头 http1.1定义了六种 PUT:一般是用于更新请求,…...
 
详解flink exactly-once和两阶段提交
以下是我们常见的三种 flink 处理语义: 最多一次(At-most-Once):用户的数据只会被处理一次,不管成功还是失败,不会重试也不会重发。 至少一次(At-least-Once):系统会保…...
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配置指南
前端项目发布后,有些接口需要在服务器配置反向代理,资源配置gzip压缩,配置跨域允许访问等 配置文件模块概览 配置示例 反向代理 反向代理是Nginx的核心功能之一,是指客户端发送请求到代理服务器,代理服务器再将请求…...
 
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
 
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
 
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
 
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
