java SSM教师工作量管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
一、源码特点
java SSM 教师工作量管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,spring+springMVC+mybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。
java SSM教师工作量管理系统
二、功能介绍
(1)管理员管理:对管理员信息进行添加、删除、修改和查看
(2)教师类型管理:对教师类型信息进行添加、删除、修改和查看
(3)教师管理:对教师信息进行添加、删除、修改和查看
(4)学期管理:对学期信息进行添加、删除、修改和查看
(5)课程管理:对课程信息进行添加、删除、修改和查看
(6)课程类别管理:对课程类别信息进行添加、删除、修改和查看
(7)科研类别管理:对科研类别信息进行添加、删除、修改和查看
(8)科研管理:对科研信息进行添加、删除、修改和查看
(9)论文著作管理:对论文著作信息进行添加、删除、修改和查看
(10)项目管理:对项目信息进行添加、删除、修改和查看
(11)专利管理:对专利信息进行添加、删除、修改和查看
(12)科研奖励管理:对科研奖励信息进行添加、删除、修改和查看
(13)工作量管理:对工作量信息进行添加、删除、修改和查看
(14)用户登录、个人信息修改
数据库设计
(1)管理员信息表如表5.1所示:
表5.1 管理员信息表
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | glyid | INTEGER | 11 | 是 | 管理员编号 |
| 2 | yhm | VARCHAR | 40 | 否 | 用户名 |
| 3 | mm | VARCHAR | 40 | 否 | 密码 |
| 4 | xm | VARCHAR | 40 | 否 | 姓名 |
(2)教师类型信息表如表5.2所示:
表5.2 教师类型信息表
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | jslxid | INTEGER | 11 | 是 | 教师类型编号 |
| 2 | lx | VARCHAR | 40 | 否 | 类型 |
| 3 | sl | VARCHAR | 40 | 否 | 数量 |
(3)教师信息表如表5.3所示:
表5.3 教师信息表
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | jsid | INTEGER | 11 | 是 | 教师编号 |
| 2 | yhm | VARCHAR | 40 | 否 | 用户名 |
| 3 | mm | VARCHAR | 40 | 否 | 密码 |
| 4 | xm | VARCHAR | 40 | 否 | 姓名 |
| 5 | jgh | VARCHAR | 40 | 否 | 教工号 |
| 6 | xb | VARCHAR | 40 | 否 | 性别 |
| 7 | xl | VARCHAR | 40 | 否 | 学历 |
| 8 | zzmm | VARCHAR | 40 | 否 | 政治面貌 |
| 9 | lxfs | VARCHAR | 40 | 否 | 联系方式 |
| 10 | lx | VARCHAR | 40 | 否 | 类型 |
(4)学期信息表如表5.4所示:
表5.4 学期信息表
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | xqid | INTEGER | 11 | 是 | 学期编号 |
| 2 | xq | VARCHAR | 40 | 否 | 学期 |
(5)课程表如表5.5所示:
表5.5 课程信息表
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | kcid | INTEGER | 11 | 是 | 课程编号 |
| 2 | kcmc | VARCHAR | 40 | 否 | 课程名称 |
| 3 | kclb | VARCHAR | 40 | 否 | 课程类别 |
| 4 | xs | VARCHAR | 40 | 否 | 学时 |
| 5 | js | VARCHAR | 40 | 否 | 介绍 |
(6)课程类别信息表如表5.6所示:
表5.6 课程类别信息表
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | kclbid | INTEGER | 11 | 是 | 课程类别编号 |
| 2 | lb | VARCHAR | 40 | 否 | 类别 |
科研类别
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | kylbid | INTEGER | 11 | 是 | 科研类别编号 |
| 2 | kylb | VARCHAR | 40 | 否 | 科研类别 |
科研
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | kyid | INTEGER | 11 | 是 | 科研编号 |
| 2 | kymc | VARCHAR | 40 | 否 | 科研名称 |
| 3 | lb | VARCHAR | 40 | 否 | 类别 |
| 4 | js | VARCHAR | 40 | 否 | 介绍 |
| 5 | ktfx | VARCHAR | 40 | 否 | 课题方向 |
| 6 | yh | VARCHAR | 40 | 否 | 用户 |
| 7 | fbsj | VARCHAR | 40 | 否 | 发布时间 |
控制层类
@RequestMapping(value="/add")public String add(gzl gzl,HttpServletRequest request){Map<String,Object> map= new HashMap<String,Object>();//String name=(String)request.getParameter("name");map.put("gzlid", gzl.getGzlid());//工作量编号map.put("xq", gzl.getXq());//学期map.put("xm", gzl.getXm());//姓名map.put("jg", gzl.getJg());//教工map.put("kcmc", gzl.getKcmc());//课程名称map.put("xs", gzl.getXs());//学时map.put("tjrq", gzl.getTjrq());//添加日期map.put("zt", gzl.getZt());//状态String gzlid=(String)gzl.getGzlid();//工作量编号String xq=(String)gzl.getXq();//学期String xm=(String)gzl.getXm();//姓名String jg=(String)gzl.getJg();//教工String kcmc=(String)gzl.getKcmc();//课程名称String xs=(String)gzl.getXs();//学时String tjrq=(String)gzl.getTjrq();//添加日期String zt=(String)gzl.getZt();//状态gzldao.save(map);request.setAttribute("msg", "<script>alert('添加成功');</script>");System.out.println("addok");return "gzl/gzladd";}/**删除 * */@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>");gzldao.del(id);return selectall(null,map,request);}/*** 修改gzl信息*/@RequestMapping(value="/update")public String update(gzl gzl,HttpServletRequest request,Map<String,Object> map1){Map<String,Object> map= new HashMap<String,Object>();map.put("gzlid", gzl.getGzlid());//工作量编号map.put("xq", gzl.getXq());//学期map.put("xm", gzl.getXm());//姓名map.put("jg", gzl.getJg());//教工map.put("kcmc", gzl.getKcmc());//课程名称map.put("xs", gzl.getXs());//学时map.put("tjrq", gzl.getTjrq());//添加日期map.put("zt", gzl.getZt());//状态String gzlid=(String)gzl.getGzlid();//工作量编号String xq=(String)gzl.getXq();//学期String xm=(String)gzl.getXm();//姓名String jg=(String)gzl.getJg();//教工String kcmc=(String)gzl.getKcmc();//课程名称String xs=(String)gzl.getXs();//学时String tjrq=(String)gzl.getTjrq();//添加日期String zt=(String)gzl.getZt();//状态request.setAttribute("msg", "<script>alert('操作成功');</script>");gzldao.update(map);return selectall(null,map1,request);}/*** 查询gzl信息*/@RequestMapping(value="/modify")public String modify(Integer id,Map<String,Object> map,HttpServletRequest request){String keyid=(String)request.getParameter("keyid");List<Map<String,Object>> list= new ArrayList<Map<String,Object>>();list=gzldao.select(Integer.parseInt(keyid));request.setAttribute("gzlid", list.get(0).get("gzlid"));//工作量编号request.setAttribute("xq", list.get(0).get("xq"));//学期request.setAttribute("xm", list.get(0).get("xm"));//姓名request.setAttribute("jg", list.get(0).get("jg"));//教工request.setAttribute("kcmc", list.get(0).get("kcmc"));//课程名称request.setAttribute("xs", list.get(0).get("xs"));//学时request.setAttribute("tjrq", list.get(0).get("tjrq"));//添加日期request.setAttribute("zt", list.get(0).get("zt"));//状态return "gzl/gzlmodify";}@RequestMapping(value="/detail")public String detail(Integer id,Map<String,Object> map,HttpServletRequest request){String keyid=(String)request.getParameter("keyid");List<Map<String,Object>> list= new ArrayList<Map<String,Object>>();list=gzldao.select(Integer.parseInt(keyid));request.setAttribute("gzlid", list.get(0).get("gzlid"));//工作量编号request.setAttribute("xq", list.get(0).get("xq"));//学期request.setAttribute("xm", list.get(0).get("xm"));//姓名request.setAttribute("jg", list.get(0).get("jg"));//教工request.setAttribute("kcmc", list.get(0).get("kcmc"));//课程名称request.setAttribute("xs", list.get(0).get("xs"));//学时request.setAttribute("tjrq", list.get(0).get("tjrq"));//添加日期request.setAttribute("zt", list.get(0).get("zt"));//状态return "gzl/gzldetail";}
持久层
public void save(Map<String, Object> map) {sqlSession.insert("com.gzl.insertgzl", map);}/*** 删除aa* @param id*/public void del(Integer id) {sqlSession.delete("com.gzl.delgzl", id);}/*** 修改gzl信息* @param map*/public void update(Map<String, Object> map) {sqlSession.update("com.gzl.updategzl", map);}/*** 查询gzl信息* @param id* @return */public List<Map<String, Object>> select(Integer id) {return sqlSession.selectList("com.gzl.selectgzl", id) ; }/*** 查询gzl信息* * @return */public List<Map<String, Object>> selectAll(Map<String, Object> map) {return sqlSession.selectList("com.gzl.selectall", map) ; }
三、注意事项
1、管理员账号:admin 密码:admin 数据库配置文件datasource.properties
2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。
3、数据库文件名是jspssmgzl.sql,系统名称ssmgzl
4、系统首页地址:http://127.0.0.1:8080/ssmgzl/login.jsp
四 系统实现




源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
相关文章:
java SSM教师工作量管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
一、源码特点 java SSM 教师工作量管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要…...
大数据技术之Hive(超级详细)
第1章 Hive入门 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序 …...
NVMe over Fabrics with SPDK with iRDMA总结 - 1
1.0 Introduction简介 NVM Express* (NVMe*) drives are high-speed, low-latency, solid-state drives (SSDs), that connect over the server Peripheral Component Interconnect Express* (PCIe*) bus. NVM Express* (NVMe*) 硬盘是高速、低延迟的固态硬盘 (SSD),通过服…...
【PTA刷题】求链式线性表的倒数第K项(代码+详解)
文章目录 题目代码详解 题目 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内&#…...
VSCode 创建工作区,多文件夹终端切换
VSCode 创建工作区的好处有以下几点: 项目结构清晰:每个工作区都有自己的文件夹结构,可以更好地组织和管理项目文件。版本控制:VSCode 支持多种版本控制系统,如Git,可以在工作区内进行代码的版本管理。插件…...
高阶函数(js的问题)
(1)函数可以作为参数被传递 (2)函数可以作为返回值输出 4-1.函数作为参数传递 Array.prototype.sort方法: var array [10,5,12,3];array.sort();//array:[10,12,3,5]//如代码那样,排序的结果并不是我们想要…...
android-android源码目录
android源码目录 Android.bp art bionic bootable bootstrap.bash build build.sh compatibility cts dalvik developers development device external frameworks: Android 系统的核心框架代码av: 该目录包含与音视频相关的框架和库,如音频解码器、视频编码器、多…...
Json格式化
Json格式化 大家好,我是微赚淘客机器人的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! Json格式化:让数据更亮眼,解密Json的奇妙世界 在现代Web开发中,Json(JavaScript Object N…...
数据可视化设计:让数据故事更有说服力
写在开头 在数字化的时代,数据如同一把锁住的宝剑,等待我们挥舞。然而,唯有通过巧妙运用数据可视化的原则和技术,我们才能真正解锁数据的力量,创造出令人信服的数据故事。本文将深入研究数据可视化设计的奥秘,揭示其中的魔法,让你在数据的海洋中游刃有余,用数据的语言…...
java面试题-Spring事务以及@Transactional注解详解
远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 对于这个面试中高频问到…...
ARM流水灯
.text .global _start _start: LED1 1.RCC时钟使能GPIOE RCC_MP_AHB4ENSETR[4]->1 LDR R0,0x50000a28 LDR R1,[R0] ORR R1,R1,#(0x1<<4) STR R1,[R0] 2.设置PE10为输出模式 GPIOE_MODER[21:20]->01 先清0 LDR R0,0x50006000 LDR R1,[R0] BIC R1,R1,#(0x3<&…...
docker-compose单机容器编排
Dockerfile:先配置好文件,然后build,镜像-------->容器。 docker-conpose 既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。 docker-compose核心就是yml文件,可以定义容器的一切。通过yml配置,直接运行…...
matlab信号分选系统算法-完整算法结构
matlab信号分选系统算法 针对得到的脉冲流PDW进行信号分选,包括重频恒定、重频抖动、重频参差和重频滑变四种脉间调制类型。 这里我们先进行数据的仿真,后续边仿真边分享思路:首先根据信号类型,分别产生重频恒定、重频抖动、重…...
十八)Stable Diffusion使用教程:艺术二维码案例
今天说说怎么样使用SD生成艺术二维码。 我们直接上图。 方式有三种,分别如下: 1)方式一:直接 contronet 的tile模型进行控制 使用QRBTF Classic生成你的二维码。 首先输入网址,选择喜欢的二维码样式(推荐第一种就行): 然后选择相应参数,这里推荐最大的容错率,定…...
【LeetCode每日一题】53. 最大子数组和
https://leetcode.cn/problems/maximum-subarray/description/ 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 方式一:暴力…...
机器学习笔记 什么是协方差矩阵?
一、协方差矩阵 协方差矩阵是一种矩阵,用于表示随机向量中给定的元素对之间的协方差值。协方差矩阵也可以称为色散矩阵或方差-协方差矩阵。这是因为每个元素的方差是沿着矩阵的主对角线表示的。 协方差矩阵始终是方阵。此外,它是半正定且对称的。该矩阵在随机建模和主成分分析…...
使用Python监控服务器在线状态
前言 在公司内网有一台服务器,有动态的公网IP,使用DDNS对外提供服务,但是会因为停电、服务器卡死等原因导致服务器离线。服务器离线后无法及时获知,因此需要实现在服务器离线的时候能够发送消息到手机上。 思路梳理 公司办理的…...
【JAVA】黑马MybatisPlus 学习笔记【二】【核心功能】
2.核心功能 刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外,修改、删除、查询的SQL语句都需要指定where条件。因此BaseMapper中提供的相关方法除了以id作为where条件以外&…...
区块链实验室(30) - 区块链期刊:Distributed Ledger Technologies: Research and Practice
区块链涉及多学科及技术,众多期刊接收区块链文章。Distributed Ledger Technologies: Research and Practice是ACM出版集团的一本期刊。 Distributed Ledger Technologies: Research and Practice创刊历史很短,始于2022年,出版期数也不多。 载…...
Nginx【通俗易懂】《中篇》
目录 1.Url重写rewrite 2.防盗链 3.静态资源压缩 4.跨域问题 1.Url重写rewrite 🤩🤩🤩 1.1.rewrite书写格式 rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到rep…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
