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

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

ssm图书管理系统


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

二、功能介绍
本系统模块实现功能如下:
前台功能:

首页浏览
图书浏览
公告浏览
图书借阅、查看借阅信息
用户信息注册、登录、个人信息修改
后台功能:
(1)用户管理:对用户信息进行添加、删除、修改和查看
(2)管理员管理:对管理员信息进行添加、删除、修改和查看
(3)图书分类管理:对图书分类信息进行添加、删除、修改和查看
(4)图书管理:对图书信息进行添加、删除、修改和查看
(5)借阅管理:对借阅信息进行删除、修改和查看
(6)消息管理:对消息信息进行删除、修改和查看
(7)公告管理:对公告信息进行添加、删除、修改和查看
(8)个人信息修改、登录

数据库设计

	CREATE TABLE `yonghu` (
	`yhid` int(11) NOT NULL auto_increment,
	`yhm` VARCHAR(40) default NULL COMMENT '用户名',
	`mm` VARCHAR(40) default NULL COMMENT '密码',
	`xm` VARCHAR(40) default NULL COMMENT '姓名',
	`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
	`lxdz` VARCHAR(40) default NULL COMMENT '联系地址',
	`zt` VARCHAR(40) default NULL COMMENT '状态',  PRIMARY KEY  (`yhid`)
	) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
	CREATE TABLE `gly` (
	`glyid` int(11) NOT NULL auto_increment,
	`yhm` VARCHAR(40) default NULL COMMENT '用户名',
	`mm` VARCHAR(40) default NULL COMMENT '密码',
	`xm` VARCHAR(40) default NULL COMMENT '姓名',  PRIMARY KEY  (`glyid`)
	) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
	CREATE TABLE `tsfl` (
	`tsflid` int(11) NOT NULL auto_increment,
	`fl` VARCHAR(40) default NULL COMMENT '分类',
	`zt` VARCHAR(40) default NULL COMMENT '状态',  PRIMARY KEY  (`tsflid`)
	) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
	CREATE TABLE `tushu` (
	`tsid` int(11) NOT NULL auto_increment,
	`tsmc` VARCHAR(40) default NULL COMMENT '图书名称',
	`fl` VARCHAR(40) default NULL COMMENT '分类',
	`js` VARCHAR(40) default NULL COMMENT '介绍',
	`zt` VARCHAR(40) default NULL COMMENT '状态',
	`tp` VARCHAR(40) default NULL COMMENT '图片',
	`sm` VARCHAR(40) default NULL COMMENT '说明',
	`jyts` VARCHAR(40) default NULL COMMENT '借阅天数',  PRIMARY KEY  (`tsid`)
	) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
	CREATE TABLE `jieyue` (
	`jyid` int(11) NOT NULL auto_increment,
	`ls` VARCHAR(40) default NULL COMMENT '流水',
	`ts` VARCHAR(40) default NULL COMMENT '图书',
	`yh` VARCHAR(40) default NULL COMMENT '用户',
	`jysj` VARCHAR(40) default NULL COMMENT '借阅时间',
	`ghsj` VARCHAR(40) default NULL COMMENT '归还时间',
	`zt` VARCHAR(40) default NULL COMMENT '状态',  PRIMARY KEY  (`jyid`)
	) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
	CREATE TABLE `xiaoxi` (
	`xxid` int(11) NOT NULL auto_increment,
	`bt` VARCHAR(40) default NULL COMMENT '标题',
	`nr` VARCHAR(40) default NULL COMMENT '内容',
	`fbsj` VARCHAR(40) default NULL COMMENT '发布时间',
	`jsyh` VARCHAR(40) default NULL COMMENT '接收用户',  PRIMARY KEY  (`xxid`)
	) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
	CREATE TABLE `gonggao` (
	`ggid` int(11) NOT NULL auto_increment,
	`bt` VARCHAR(40) default NULL COMMENT '标题',
	`nr` VARCHAR(40) default NULL COMMENT '内容',
	`fbsj` VARCHAR(40) default NULL COMMENT '发布时间',  PRIMARY KEY  (`ggid`)
	) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
	

控制类

 */

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

		map.put("ggid", gonggao.getGgid());//公告编号

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

		map.put("nr", gonggao.getNr());//内容

		map.put("fbsj", gonggao.getFbsj());//发布时间



		String ggid=(String)gonggao.getGgid();//公告编号

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

		String nr=(String)gonggao.getNr();//内容

		String fbsj=(String)gonggao.getFbsj();//发布时间

		gonggaodao.save(map);
		
		
		request.setAttribute("msg", "<script>alert('添加成功');</script>");
		System.out.println("addok");
		return "gonggao/gonggaoadd";
	}
	
	/**删除 
	 * 
	 */
	@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>");
		gonggaodao.del(id);
		return selectall(null,map,request);
	}
	/**
	 * 修改gonggao信息
	 */
	@RequestMapping(value="/update")
	public String update(gonggao gonggao,HttpServletRequest request,Map<String,Object> map1){
		Map<String,Object> map= new HashMap<String,Object>();
		map.put("ggid", gonggao.getGgid());//公告编号

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

		map.put("nr", gonggao.getNr());//内容

		map.put("fbsj", gonggao.getFbsj());//发布时间



		String ggid=(String)gonggao.getGgid();//公告编号

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

		String nr=(String)gonggao.getNr();//内容

		String fbsj=(String)gonggao.getFbsj();//发布时间

		request.setAttribute("msg", "<script>alert('修改成功');</script>");
		gonggaodao.update(map);
		return selectall(null,map1,request);
	}
	/**
	 * 查询gonggao信息
	 */
	@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=gonggaodao.select(Integer.parseInt(keyid));
		request.setAttribute("ggid", list.get(0).get("ggid"));//公告编号

		request.setAttribute("bt", list.get(0).get("bt"));//标题

		request.setAttribute("nr", list.get(0).get("nr"));//内容

		request.setAttribute("fbsj", list.get(0).get("fbsj"));//发布时间

		
		return "gonggao/gonggaomodify";
	}
	
	@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=gonggaodao.select(Integer.parseInt(keyid));
		request.setAttribute("ggid", list.get(0).get("ggid"));//公告编号

		request.setAttribute("bt", list.get(0).get("bt"));//标题

		request.setAttribute("nr", list.get(0).get("nr"));//内容

		request.setAttribute("fbsj", list.get(0).get("fbsj"));//发布时间

		return "gonggao/gonggaodetail";
	}
	
	/**
	 * 查询gonggao信息
	 */
	@RequestMapping(value="/selectall")
	public String selectall(Integer id,Map<String,Object> map,HttpServletRequest request){
		List<Map<String,Object>> list= new  ArrayList<Map<String,Object>>();
	Map<String,Object> map1= new HashMap<String,Object>();

	String ggid=(String)request.getParameter("ggid");//公告编号
	if(ggid!=null&&!ggid.equals("")){
	map1.put("ggid",ggid);//公告编号
	}
	String bt=(String)request.getParameter("bt");//标题
	if(bt!=null&&!bt.equals("")){
	map1.put("bt",bt);//标题
	}
	String nr=(String)request.getParameter("nr");//内容

mybatis

<!-- 添加用户信息 -->
<insert id="insertgonggao"  parameterType="java.util.Map">
 insert  into  gonggao(bt,nr,fbsj)  values(#{bt},#{nr},#{fbsj})
</insert>

<delete id="delgonggao" parameterType="int">
 delete  from  gonggao where ggid=#{ggid}
</delete>

<update id="updategonggao" parameterType="java.util.Map">
update gonggao set bt=#{bt},nr=#{nr},fbsj=#{fbsj} where ggid=#{ggid}
</update>

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

<!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean  -->
<select  id="selectall"  parameterType="java.util.Map" resultType="java.util.Map">
  select  * from gonggao where 1=1
        <if test=" null != bt and bt!=''" >
        and bt like concat(concat('%',#{bt}),'%')
        </if>
        <if test=" null != nr and nr!=''" >
        and nr like concat(concat('%',#{nr}),'%')
        </if>
        <if test=" null != fbsj and fbsj!=''" >
        and fbsj like concat(concat('%',#{fbsj}),'%')
        </if>

</select>

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

四 系统实现

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

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

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

相关文章

STM32 蜂鸣器介绍 配置 播放音节

蜂鸣器一般被分为两类&#xff1a;有源蜂鸣器和无源蜂鸣器。其中源是振荡源。有源蜂鸣器内部有振荡电路&#xff0c;可以把直流电源转换为一定频率的脉冲信号。因为它一直输出一定的频率&#xff0c;我们无法改变频率&#xff0c;所以声音只有一种&#xff0c;我们只能通过电源…

AJAX 入门笔记

课程地址 AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09; AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容 XML…

NSSCTF第11页(3)

[羊城杯 2020]easyphp 源码 发现会在写入文件之前会删除目录下的除了index.php的文件。写入文件的文件名和文件内容也是可控的&#xff0c;只不过存在过滤 stristr函数对文件内容进行过滤&#xff0c;该函数绕过还是简单的&#xff0c;只需要添加一些特殊字符就可以了&#…

微服务-开篇-个人对微服务的理解

从吃饭说起 个人理解新事物的时候喜欢将天上飞的理念转换成平常生活中的实践&#xff0c;对比理解这些高大上的名词&#xff0c;才能让我们减少恐慌的同时加深理解。废话不多说&#xff0c;我们从吃饭开始说起&#xff0c;逐渐类比出微服务的思想。 &#xff08;个人见解&…

【Git系列】Github指令搜索

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

已解决:KeyError: ‘The truth value of a Series is ambiguous‘ 问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

「帝国风暴兵」加入 The Sandbox,推出真实的全新人物化身系列和体验!

我们很高兴宣布与流行文化中最具标志性的娱乐品牌 Shepperton 设计工作室的「帝国风暴兵」达成合作伙伴关系。这一合作标志着该科幻品牌首次进入元宇宙&#xff0c;让风暴兵的粉丝们以全新的方式体验「帝国风暴兵」。 在这个体验中&#xff0c;玩家将置身于帝国风暴兵的营地&am…

开发知识点-人工智能-深度学习Tensorflow2.0

Tensorflow 常用的参数有&#xff1a;快捷配置 做得多环境 环境问题 一、 简单 概述二、Tensorflow2版本简介与心得三、深度学习框架安装 Tensorflow2版本安装方法四 、 TF 基础操作So tensor flow 矩阵 在 这个 大框架 流动 五 深度学习要解决的问题六 深度学习应用领域#1下载…

【Mac开发环境搭建】安装HomeBrew、HomeBrew安装Docker、Docker安装Mysql5.7和8

文章目录 HomeBrew安装相关命令安装包卸载包查询可用的包更新所有包更新指定包查看已经安装的包查看包的信息清理包查看brew的版本更新brew获取brew的帮助信息 Brew安装DockerDocker常用命令镜像相关查看已经拉取的所有镜像删除镜像 容器相关停止运行容器启动容器重启容器删除容…

【算法设计】回溯法算法设计——骑士游历问题(C++实现)

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法分析与设计知识专栏&#xff1a;算法分析&#x1f525; 给大家跳…

Guli商城-商品服务-API-三级分类-配置网关路由与路径重写

启动人人fast服务&#xff1a; 打开本地的前端项目&#xff0c;启动&#xff1a; 命令&#xff1a;npm run dev 账号密码&#xff1a;admin/admin 对应的数据库&#xff1a; 接下来在商品系统目录中添加子菜单&#xff1a; 数据库中可以看到记录 退出账号&#xff0c;重新登录…

Unity中Shader光照探针的支持

文章目录 前言一、光照探针用在哪怎么用1、光照探针的应用场景2、我们按照以上条件&#xff0c;在Unity中搭建一个相同的环境3、创建光照探针 二、在我们自己的Shader中&#xff0c;实现支持光照探针1、使用常用的 cginc2、在 v2f 中&#xff0c;准备如下变量3、在顶点着色器中…

四川芸鹰蓬飞商务信息咨询有限公司电商服务引领潮流

在今天的数字时代&#xff0c;抖音带货已成为一种新型的、高效的营销方式。许多公司都在寻找可靠的抖音带货服务&#xff0c;以扩大其品牌影响力并增加销售额。在这方面&#xff0c;四川芸鹰蓬飞商务信息咨询有限公司以其专业的知识和经验&#xff0c;成为行业内的佼佼者。 四…

19.12 Boost Asio 获取远程进程

远程进程遍历功能实现原理与远程目录传输完全一致&#xff0c;唯一的区别在于远程进程枚举中使用EnumProcess函数枚举当前系统下所有活动进程&#xff0c;枚举结束后函数返回一个PROCESSENTRY32类型的容器&#xff0c;其中的每一个成员都是一个进程信息&#xff0c;只需要对该容…

STM32笔记—EXTI外部中断

一、简介 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行&#xff1b; 中断优先级&…

AI:74-基于深度学习的宠物品种识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

【已解决】ChatGPT报错“Unable to load history Retry“等问题

解决ChatGPT历史加载错误&#xff1a;“Unable to load history Retry”问题指南 引言 在使用ChatGPT时&#xff0c;您可能遇到过一个常见的错误提示&#xff1a;“Unable to load history Retry”。这可能会阻止您查看以前的对话历史。本文将为您提供一个详细的教程&#xf…

c语言刷题第10周(16~20)

规律&#xff1a; 若多个次数最多按ASCII码顺序输出。 用for循环i取&#xff08;0~26&#xff09; 则输出满足条件的字符串中位置最靠前的那个。 用while循环遍历&#xff08;while&#xff08;a[i]!\0&#xff09;&#xff09; 从键盘输入任意只含有大小写字母的串s&…

node插件MongoDB(一)——MongoDB的下载和安装

文章目录 前言一、MongoDB的下载和安装1. 下载(1) 打开官网(2) 选择版本(3) 选择电脑系统和安装格式后点击下载(4) 将文件解压放到C:\Program Files文件目录下(5) 在c盘下创建文件夹(6) 启动服务端程序(7) 服务端程序启动成功效果(8) 在浏览器中输入127.0.0.1:27017查看效果&am…

拍摄视频的时候相机断电导致视频文件损坏,怎么修复

3-4 现在好多人都有自己的相机&#xff0c;但是专业用来录像的机器应该是不太可能都有的&#xff0c;相机的稳定性会比专业的机器差一些&#xff0c;如果用于比较重要的场景&#xff0c;比如婚庆、会议录像、家庭录像使用等&#xff0c;有较少的概率会出现一些奇怪的情况&…