SSM实践基地管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点
  SSM  实践基地管理系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库
,系统主要采用B/S模式开发。

ssm实践基地系统


前段主要技术 html.css jquery
后端主要技术 SSM
数据库 mysql
开发工具 eclipse  JDK1.8 TOMCAT 8.5

二、功能介绍

(1)用户管理:对用户信息进行添加、删除、修改和查看
(2)实践基地管理:对实践基地信息进行添加、删除、修改和查看
(3)实践形式管理:对实践形式信息进行添加、删除、修改和查看
(4)实践申请管理:对实践申请信息进行添加、删除、教务人员审核和查看
(5)实践报告管理:对实践报告信息进行添加、删除、教务人员审核和查看
(6)评价单位管理:对评价单位信息进行添加、删除、修改和查看
(7)评价学生管理:对评价学生信息进行添加、删除、修改和查看
(8)实践信息管理:对实践信息信息进行添加、删除、修改和查看、导入
(9)个人信息修改以及密码修改。

数据库设计

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

表5.1 用户信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

qx

VARCHAR

40

权限

6

lxdh

VARCHAR

40

联系电话

7

lxdz

VARCHAR

40

联系地址

(2)实践基地如表5.2所示:

表5.2 实践基地表

序号

字段名称

数据类型

长度

主键

描述

1

sjjdid

INTEGER

11

实践基地编号

2

sjjdmc

VARCHAR

40

实践基地名称

3

js

VARCHAR

40

介绍

4

fbr

VARCHAR

40

发布人

(3)实践形式表如表5.3所示:

表5.3 实践形式表

序号

字段名称

数据类型

长度

主键

描述

1

sjxsid

INTEGER

11

实践形式编号

2

xs

VARCHAR

40

形式

(4)实践申请信息表如表5.4所示:

表5.4 实践申请信息表

序号

字段名称

数据类型

长度

主键

描述

1

sjsqid

INTEGER

11

实践申请编号

2

ls

VARCHAR

40

流水

3

bt

VARCHAR

40

标题

4

xs

VARCHAR

40

形式

5

nr

VARCHAR

40

内容

6

sjjd

VARCHAR

40

实践基地

7

tjr

VARCHAR

40

提交人

8

tjsj

VARCHAR

40

提交时间

9

zt

VARCHAR

40

状态

10

yj

VARCHAR

40

意见

(5)实践报告表如表5.5所示:

表5.5 实践报告表

序号

字段名称

数据类型

长度

主键

描述

1

sjbgid

INTEGER

11

实践报告编号

2

sj

VARCHAR

40

实践

3

bgmc

VARCHAR

40

报告名称

4

fj

VARCHAR

40

附件

5

sm

VARCHAR

40

说明

6

tjr

VARCHAR

40

提交人

7

zt

VARCHAR

40

状态

(6)评价单位表如表5.6所示:

表5.6 评价单位表

序号

字段名称

数据类型

长度

主键

描述

1

pjdwid

INTEGER

11

评价单位编号

2

sj

VARCHAR

40

实践

3

bt

VARCHAR

40

标题

4

pjnr

VARCHAR

40

评价内容

5

sjjd

VARCHAR

40

实践基地

6

pjr

VARCHAR

40

评价人

7

pjsj

VARCHAR

40

评价时间

系统ER 图

控制层代码

@Resource pjxsDao pjxsdao;
	@RequestMapping(value="/addPage")
	public String addPage(pjxs pjxs,HttpServletRequest request){
		Map<String,Object> map= new HashMap<String,Object>();
		
		System.out.println("addPageok");
		return "pjxs/pjxsadd";
	}
	
	@RequestMapping(value="/add")
	public String add(pjxs pjxs,HttpServletRequest request){
		Map<String,Object> map= new HashMap<String,Object>();
		//String name=(String)request.getParameter("name");

		map.put("pjxsid", pjxs.getPjxsid());//评价学生编号

		map.put("sj", pjxs.getSj());//实践

		map.put("bt", pjxs.getBt());//标题

		map.put("pjnr", pjxs.getPjnr());//评价内容

		map.put("pjxs", pjxs.getPjxs());//评价学生

		map.put("pjr", pjxs.getPjr());//评价人

		map.put("pjsj", pjxs.getPjsj());//评价时间

		String pjxsid=(String)pjxs.getPjxsid();//评价学生编号

		String sj=(String)pjxs.getSj();//实践

		String bt=(String)pjxs.getBt();//标题

		String pjnr=(String)pjxs.getPjnr();//评价内容

		String pjxs1=(String)pjxs.getPjxs();//评价学生

		String pjr=(String)pjxs.getPjr();//评价人

		String pjsj=(String)pjxs.getPjsj();//评价时间

		
		int num=0;
		ResultSet rs=null;
		String sql="";
		DBO db=new DBO();
		try{
			sql="select count(1) as num from pjxs where sj='"+sj+"' and pjr='"+pjr+"'";
			rs=db.query(sql);
			if(rs.next()){
				
				num=rs.getInt("num");
			}
			if(num==0){
				
				
				sql="select * from sjsq where ls='"+sj+"'";
				rs=db.query(sql);
				if(rs.next()){
					
					pjxs1=rs.getString("tjr");
				}
				map.put("pjxs", pjxs1);//实践基地
				
				pjxsdao.save(map);
				
				
				request.setAttribute("msg", "<script>alert('添加成功');</script>");
				
			}else{
				
				request.setAttribute("msg", "<script>alert('添加失败、数据重复');</script>");
			}
		}catch(Exception e){
			
			e.printStackTrace();
		}
		
		request.setAttribute("msg", "<script>alert('添加成功');</script>");
		System.out.println("addok");
		return "pjxs/pjxsadd";
	}
	
	/**删除 
	 * 
	 */
	@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>");
		pjxsdao.del(id);
		return selectall(null,map,request);
	}
	/**
	 * 修改pjxs信息
	 */
	@RequestMapping(value="/update")
	public String update(pjxs pjxs,HttpServletRequest request,Map<String,Object> map1){
		Map<String,Object> map= new HashMap<String,Object>();
		map.put("pjxsid", pjxs.getPjxsid());//评价学生编号

		map.put("sj", pjxs.getSj());//实践

		map.put("bt", pjxs.getBt());//标题

		map.put("pjnr", pjxs.getPjnr());//评价内容

		map.put("pjxs", pjxs.getPjxs());//评价学生

		map.put("pjr", pjxs.getPjr());//评价人

		map.put("pjsj", pjxs.getPjsj());//评价时间

		String pjxsid=(String)pjxs.getPjxsid();//评价学生编号

		String sj=(String)pjxs.getSj();//实践

		String bt=(String)pjxs.getBt();//标题

		String pjnr=(String)pjxs.getPjnr();//评价内容

		String pjxs1=(String)pjxs.getPjxs();//评价学生

		String pjr=(String)pjxs.getPjr();//评价人

		String pjsj=(String)pjxs.getPjsj();//评价时间

		request.setAttribute("msg", "<script>alert('修改成功');</script>");
		pjxsdao.update(map);
		return selectall(null,map1,request);
	}

持久层代码

public void save(Map<String, Object> map) {
		sqlSession.insert("com.sjbg.insertsjbg", map);
		
	}
	/**
	 * 删除aa
	 * @param id
	 */
	public void del(Integer id) {
		sqlSession.delete("com.sjbg.delsjbg", id);
	}

	/**
	 * 修改sjbg信息
	 * @param map
	 */
	public void update(Map<String, Object> map) {
		sqlSession.update("com.sjbg.updatesjbg", map);
	}

	/**
	 * 查询sjbg信息
	 * @param id
	 * @return 
	 */
	public List<Map<String, Object>> select(Integer id) {
		return sqlSession.selectList("com.sjbg.selectsjbg", id) ; 
	}

mybatis 配置文件

<insert id="insertpjxs"  parameterType="java.util.Map">
 insert  into  pjxs(sj,bt,pjnr,pjxs,pjr,pjsj)  values(#{sj},#{bt},#{pjnr},#{pjxs},#{pjr},#{pjsj})
</insert>

<delete id="delpjxs" parameterType="int">
 delete  from  pjxs where pjxsid=#{pjxsid}
</delete>

<update id="updatepjxs" parameterType="java.util.Map">
update pjxs set sj=#{sj},bt=#{bt},pjnr=#{pjnr},pjxs=#{pjxs},pjr=#{pjr},pjsj=#{pjsj} where pjxsid=#{pjxsid}
</update>

<!--  查询返回的是 list<map> -->
<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectpjxs"  parameterType="int" resultType="java.util.Map">
  select  * from pjxs where pjxsid=#{pjxsid}
</select>

<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectall"  parameterType="java.util.Map" resultType="java.util.Map">
  select  * from pjxs where 1=1
<if test=" null != sj and sj!=''" >
 and sj = #{sj}
</if>
<if test=" null != bt and bt!=''" >
 and bt = #{bt}
</if>
<if test=" null != pjnr and pjnr!=''" >
 and pjnr = #{pjnr}
</if>
<if test=" null != pjxs and pjxs!=''" >
 and pjxs = #{pjxs}
</if>
<if test=" null != pjr and pjr!=''" >
 and pjr = #{pjr}
</if>
<if test=" null != pjsj and pjsj!=''" >
 and pjsj = #{pjsj}
</if>
 
</select>

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

四系统实现

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/193770.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小白备战蓝桥杯:Java基础语法

一、注释 IDEA注释快捷键&#xff1a;Ctrl / 单行注释&#xff1a; //注释信息 多行注释&#xff1a; /* 注释信息 */ 二、字面量 常用数据&#xff1a;整数、小数、字符串&#xff08;双引号&#xff09;、字符&#xff08;单引号&#xff09;、布尔值&#xff08;tr…

理解Android无埋点技术

首先什么是无埋点呢&#xff0c;其实所谓无埋点就是开发者无需再对追踪点进行埋码&#xff0c;而是脱离代码&#xff0c;只需面对应用界面圈圈点点即可追加随时生效的事件数据点。 无埋点的好处 其实无埋点并不是完全不用写代码&#xff0c;而是尽可能的少写代码。开发者将SDK集…

springboot+vue智能企业设备管理系统05k50

智能设备管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性&#xff0c;遵循开发的系统优化的原则&#xf…

线性分类器--分类模型

记录学习 北京邮电大学计算机学院 鲁鹏 为什么从线性分类器开始&#xff1f;  形式简单、易于理解  通过层级结构&#xff08;神经网络&#xff09;或者高维映射&#xff08;支撑向量机&#xff09;可以 形成功能强大的非线性模型 什么是线性分类器&#xff1f; 线性分…

Linux基础项目开发1:量产工具——程序框架(一)

前言&#xff1a; 前面已经将Linux应用开发基础知识学习完了&#xff0c;现在让我们来做个小项目练练手&#xff0c;对之前的一些知识点进行一个更加具体详细的认识与了解&#xff0c;我们要进行的项目名称为&#xff1a;电子产品量产测试与烧写工具&#xff0c;这是一套软件&a…

Clion+Ubuntu(WSL)+MySQL8.0开发环境搭建

1. 下载 MySQL 源码 访问 MySQL 官方网站&#xff08;MySQL :: Download MySQL Community Server&#xff09;并下载 MySQL 8.0 的源码包&#xff08;mysql-boost-8.0.31.tar.gz&#xff09;。 2. 安装编译依赖 1&#xff09;更换镜像源 参考&#xff1a;Linux Ubuntu 修改…

实在智能荣获36氪消费新势力榜单“优选品牌服务商”

近日&#xff0c;36氪未来消费正式公布「FUTURE 2023」消费新势力名单&#xff0c;实在智能凭借专业的数字化产品力、卓越的服务力和深远的行业影响力&#xff0c;成功入选榜单并获评“优选品牌服务商”。 据悉&#xff0c;此次名单是由36氪未来消费特邀消费领域的行业专家、投…

MySQL--InnoDB引擎

InnoDB引擎 逻辑存储引擎 表空间→段→区→页→行 Tablespace 表空间&#xff08;ibd文件&#xff09;&#xff1a;一个mysql实例可以对应多个表空间&#xff0c;用于存储记录、索引等数据Segment 段&#xff1a;段分为数据段、索引段、回滚段&#xff0c;InnoDB是索引组织表…

UI自动化测试详解

1、about自动化测试 定义&#xff1a;把人为驱动的测试转化为机器执行的一种过程&#xff0c;重点在于持续集成这个概念&#xff1b; 优势&#xff1a;节约人力和时间成本&#xff1b; 测试金字塔&#xff1a; 如上图所示&#xff0c;敏捷大师Mike Cohn提出该概念&#xff0…

linux 磁盘管理、分区管理常用命令

文章目录 基础命令挂载新硬盘/分区添加内存交换分区swaplvm分区管理模式 基础命令 查看目录文件大小 du -sh /backup du -sh /backup/* du -sh *查看磁盘挂载信息 df -lhT查看某个目录挂载在哪个分区&#xff0c;以及分区的磁盘使用情况 df [目录] #例如&#xff1a;df /ho…

C# 使用PanGu分词

写在前面 这是官方介绍&#xff1a;盘古分词是一个中英文分词组件。作者eaglet 曾经开发过KTDictSeg 中文分词组件&#xff0c;拥有大量用户。作者基于之前分词组件的开发经验&#xff0c;结合最新的开发技术重新编写了盘古分词组件。 盘古分词组件需要配合其字典文件使用&am…

【斗破年番】萧炎斩杀蝎山,活捉魂殿铁护法,救小医仙身中魔斑毒

Hello,小伙伴们&#xff0c;我是拾荒君。 《斗破苍穹年番》第72集的国漫已经更新了。这一集中&#xff0c;蝎毕岩靠着秘术的加成暂时压制住了小医仙。在激烈的交战中&#xff0c;小医仙不得不解开自身的厄难毒体&#xff0c;而每解开一次&#xff0c;她就离死亡更近一步。 萧炎…

中文编程开发工具高级版全部构件工具箱列表,中文编程自由版下载

中文编程开发工具高级版全部构件工具箱列表&#xff0c;中文编程自由版下载 附&#xff1a;中文编程工具构件工具箱总共22组305个构件&#xff0c;构件明细如下&#xff1a;文本件16个&#xff1a; &#xff08;普通标签&#xff0c;连接标签&#xff0c;闪动标签&#xff0c;立…

艾森股份将上市在即:募资约6亿元,张兵、蔡卡敦夫妇为实控人

11月27日&#xff0c;江苏艾森半导体材料股份有限公司&#xff08;下称“艾森股份”&#xff0c;SH:688720&#xff09;开启申购&#xff0c;将在科创板上市。本次上市&#xff0c;艾森股份的发行价为28.03元/股&#xff0c;发行数量约2203万股&#xff0c;预计募资总额约6.18亿…

QMap key()和value(const Key key, const T defaultValue = T()) const第二个参数作用

value()函数介绍 返回与键key关联的值。 如果map不包含键为key的项&#xff0c;则该函数返回defaultValue。 如果没有指定defaultValue&#xff0c;该函数返回一个默认构造的值。 如果映射中有多个key项&#xff0c;则返回最近插入的项的值。 示例 定义自定义类型&#xff…

距离向量路由协议——RIP

目录 动态路由动态路由简介为什么需要动态路由动态路由基本原理路由协议的分类 距离向量路由协议RIPv1 VS RIPv2RIP简介RIPv1的主要特征RIPv1的基本配置 VS RIPv2的基本配置RIP配置案例被动接口单播更新使用子网地址 动态路由 动态路由简介 为什么需要动态路由 如果采用静态…

串口数据包收发的思路和流程-stm32入门

本节主要内容&#xff1a; 如何去规定一个合理的数据包格式如何收发数据包 1. 数据包格式规定/定义 1.1 HEX 数据包定义 固定包长&#xff0c;含包头包尾 可变包长&#xff0c;含包头包尾 首先数据包的作用是把一个个单独的数据给打包起来&#xff0c;方便我们进行多字节…

126. 单词接龙 II

126. 单词接龙 II 需要注意的是&#xff0c;由于要找最短路径&#xff0c;连接 dot 与 lot 之间的边就不可以被记录下来&#xff0c;同理连接 dog 与 log 之间的边也不可以被记录。这是因为经过它们的边一定不会是最短路径。因此在广度优先遍历的时候&#xff0c;需要记录的图…

运维01:云计算

云计算的类型 分类&#xff1a;公有云、私有云、混合云 云计算的服务模式 服务模式分3种&#xff1a; ①IaaS&#xff08;Infrastructure as a Service&#xff09;&#xff1a;基础设施即服务 ②PaaS&#xff08;Platform as a Service&#xff09;&#xff1a;平台即服务…

第一节HarmonyOS DevEcoStudio工具下载以及环境搭建

一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前&#xff0c;需要进行一些准备工作&#xff0c;首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio 工具下载官网&#xff1a;https://developer.harmonyos.com/cn/develop/deveco-stu…