ideaSSM图书借阅管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

news2024/11/17 16:37:35

一、源码特点
  SSM 图书借阅管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码
和数据库,系统主要采用B/S模式开发。
前段主要技术 bootstrap.css jquery
后端主要技术 SpringMVC spring mybatis 
数据库 mysql
开发工具 IDEA  JDK1.8 TOMCAT 8.5

idea 图书借阅管理系统

二、功能介绍
系统主要角色包括管理员,读者
(1)管理员管理:对管理员信息进行添加、删除、修改和查看
(2)读者管理:对读者信息进行添加、删除、修改和查看
(3)公告管理:对公告信息进行添加、删除、修改和查看
(4)图书类型管理:对图书类型信息进行添加、删除、修改和查看
(5)图书管理:对图书信息进行添加、删除、修改和查看 导入
(6)预约图书管理:对预约图书信息进行添加、删除、修改和查看
(7)还书管理:对还书信息进行添加、删除、修改和查看
(8)异常还书管理:对异常还书信息进行添加、删除、修改和查看
(9)个人信息修改、登录

数据库设计

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 `duzhe` (
`dzid` 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 '联系地址',  PRIMARY KEY  (`dzid`)
) 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;
CREATE TABLE `tslx` (
`tslxid` int(11) NOT NULL auto_increment,
`lx` VARCHAR(40) default NULL COMMENT '类型',  PRIMARY KEY  (`tslxid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `tushu` (
`tsid` int(11) NOT NULL auto_increment,
`tsmc` VARCHAR(40) default NULL COMMENT '图书名称',
`lx` VARCHAR(40) default NULL COMMENT '类型',
`zz` VARCHAR(40) default NULL COMMENT '作者',
`cbs` VARCHAR(40) default NULL COMMENT '出版社',
`js` VARCHAR(40) default NULL COMMENT '介绍',
`kc` VARCHAR(40) default NULL COMMENT '库存',  PRIMARY KEY  (`tsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `yyts` (
`yytsid` int(11) NOT NULL auto_increment,
`lsh` VARCHAR(40) default NULL COMMENT '流水号',
`ts` VARCHAR(40) default NULL COMMENT '图书',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`tjsj` VARCHAR(40) default NULL COMMENT '提交时间',
`yysj` VARCHAR(40) default NULL COMMENT '预约时间',
`ghsj` VARCHAR(40) default NULL COMMENT '归还时间',
`zt` VARCHAR(40) default NULL COMMENT '状态',  PRIMARY KEY  (`yytsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `haishu` (
`hsid` int(11) NOT NULL auto_increment,
`yy` VARCHAR(40) default NULL COMMENT '预约',
`hssj` VARCHAR(40) default NULL COMMENT '还书时间',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`sm` VARCHAR(40) default NULL COMMENT '说明',
`zt` VARCHAR(40) default NULL COMMENT '状态',  PRIMARY KEY  (`hsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `ychs` (
`ychsid` int(11) NOT NULL auto_increment,
`yy` VARCHAR(40) default NULL COMMENT '预约',
`lx` VARCHAR(40) default NULL COMMENT '类型',
`clsm` VARCHAR(40) default NULL COMMENT '处理说明',
`cfsm` VARCHAR(40) default NULL COMMENT '处罚说明',
`czsj` VARCHAR(40) default NULL COMMENT '操作时间',  PRIMARY KEY  (`ychsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;


代码设计

  @Resource
    private haishuDao haishudao;
    @RequestMapping(value="/addpage")
    public String addpage(haishu bean, HttpServletRequest request){
	/**
	还书添加页面
	*/

        Map<String,Object> map= new HashMap<String,Object>();

        System.out.println("addPageok");
        return "haishu/haishuadd";
    }

    @RequestMapping(value="/add")
    public String add(haishu bean, HttpServletRequest request){
        /**
	还书添加处理方法
	**/
        Map<String,Object> map= new HashMap<String,Object>();//初始变量

	

		String hsid=(String)request.getParameter("hsid");//还书编号

		String yy=(String)request.getParameter("yy");//预约

		String hssj=(String)request.getParameter("hssj");//还书时间

		String yh=(String)request.getParameter("yh");//用户

		String sm=(String)request.getParameter("sm");//说明

		String zt=(String)request.getParameter("zt");//状态
		DBO db=new DBO();
		String sql="";
		ResultSet rs=null;
        try{
			sql="update yyts set zt='已归还',ghsj='"+ StaticMethod.getStringDate()+"' where  lsh='"+yy+"'";

			db.update(sql);
			sql="update tushu  set kc=kc+1 where tsid in (select ts from yyts where lsh='"+yy+"')";
			db.update(sql);
			haishudao.add(bean);//调用添加方法
			System.out.println("add");
			request.setAttribute("msg", "<script>alert('操作成功');</script>");//操作提示
		}catch(Exception e){
        	e.printStackTrace();
		}finally {
        	db.close();
		}




        return "haishu/list";
    }


    /**删除 还书
     *
     */
    @RequestMapping(value="/del")
    public String  del(HttpServletRequest request,Map<String,Object> map){
	
        //	Map<String,Object> map= new HashMap<String,Object>();//初始化对象
        String a=(String)request.getParameter("keyid");//request 方式获得主键id
        int id=Integer.parseInt(a);
        request.setAttribute("msg", "<script>alert('删除成功');</script>");
        haishudao.delete(id);//调用 删除方法
        return listpage(map,request);
    }

    /**
     * 查询haishu信息 返回list结果 前台获取
     */
    @RequestMapping(value="/listpage")
    public String listpage(Map<String,Object> map,HttpServletRequest request){
        List<Map> list= new ArrayList<Map>();//初始化对象
        Map  map1= new HashMap();

      
	String hsid=(String)request.getParameter("hsid");//还书编号
	if(hsid!=null&&!hsid.equals("")){
	map1.put("hsid",hsid);//还书编号
	}
	String yy=(String)request.getParameter("yy");//预约
	if(yy!=null&&!yy.equals("")){
	map1.put("yy",yy);//预约
	}
	String hssj=(String)request.getParameter("hssj");//还书时间
	if(hssj!=null&&!hssj.equals("")){
	map1.put("hssj",hssj);//还书时间
	}
	String yh=(String)request.getParameter("yh");//用户
	if(yh!=null&&!yh.equals("")){
	map1.put("yh",yh);//用户
	}
	String sm=(String)request.getParameter("sm");//说明
	if(sm!=null&&!sm.equals("")){
	map1.put("sm",sm);//说明
	}
	String zt=(String)request.getParameter("zt");//状态
	if(zt!=null&&!zt.equals("")){
	map1.put("zt",zt);//状态
	}

        list=haishudao.getAll(map1);//传入 方法参数 返回gly结果集
        System.out.println("listsize="+list.size());

        map.put("list", list);//传递参数
        return "haishu/haishulist";
    }
	/**
	还书详情信息
	*/
    @RequestMapping(value="/detail")
    public String detail(Map<String,Object> map,HttpServletRequest request){

        String keyid=(String)request.getParameter("keyid");//request 方式获得主键id
         haishu bean=new haishu();//初始化对象
        bean=haishudao.gethaishuByID(Integer.parseInt(keyid));//根据id返回 haishu对象数据


		request.setAttribute("hsid", bean.getHsid());//还书编号

		request.setAttribute("yy", bean.getYy());//预约

		request.setAttribute("hssj", bean.getHssj());//还书时间

		request.setAttribute("yh", bean.getYh());//用户

		request.setAttribute("sm", bean.getSm());//说明

		request.setAttribute("zt", bean.getZt());//状态

       


        return "haishu/haishudetail";
    }


三、注意事项
具体功能如视频所示
1、管理员账号:admin密码:admin 数据库配置文件src\main\resources\jdbc.properties
2、开发环境为IDEA开发,数据库为mysql,使用java语言开发。
3、数据库文件名是jspibook.sql 系统名称book
4、地址:login.jsp

四 系统实现

代码下载

https://download.csdn.net/download/qq_41221322/89059197

需要源码 其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS-11A/11时间继电器 板前接线 JOSEF约瑟

系列型号&#xff1a; JS-11A/11集成电路时间继电器&#xff1b;JS-11A/12集成电路时间继电器&#xff1b; JS-11A/13集成电路时间继电器&#xff1b;JS-11A/136集成电路时间继电器&#xff1b; JS-11A/137集成电路时间继电器&#xff1b;JS-11A/22集成电路时间继电器&#…

一点点金融 4

一点点金融 4 第一性原理&#xff1a;关键事件前后&#xff0c;市场会从不确定性转变为确定性弹簧板、天花板&#xff1a;作为止损、换策略的依据怎么判断弹簧板、天花板&#xff1f; 第一性原理&#xff1a;关键事件前后&#xff0c;市场会从不确定性转变为确定性 在关键事件…

74LVC04六角逆变器-国产兼容MS9113

MS9113S 是一款 S/PDIF 信号接收器。当输入信号频率为 0.1MHz 至 40MHz 时&#xff0c;芯片放大该输入信号至电源电压。最小输入信号幅度的典型值为 80mV。MS9113S 包含一个信号标识位管脚&#xff0c;有输入信号则为高电平&#xff0c;无输入信号则为低电平。MS9113S 还包含一…

LeetCode-94. 二叉树的中序遍历【栈 树 深度优先搜索 二叉树】

LeetCode-94. 二叉树的中序遍历【栈 树 深度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;递归解题思路二&#xff1a;迭代解题思路三&#xff1a;0 题目描述&#xff1a; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1…

调用飞书获取用户Id接口成功,但是没有返回相应数据

原因&#xff1a; 该自建应用没有开放相应的数据权限。 解决办法&#xff1a; 在此处配置即可。

Redis高可用主从复制与哨兵模式

前言 在生产环境中&#xff0c;除了采用持久化方式实现 Redis 的高可用性&#xff0c;还可以采用主从复制、哨兵模式和 Cluster 集群的方法确保数据的持久性和可靠性。 目录 一、主从复制 1. 概述 2. 作用 3. 主从复制流程 4. 部署 4.1 安装 redis 4.2 编辑 master 节…

基于深度学习的条形码二维码检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5的条形码二维码检测系统。核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Streamlit的交互…

年少不知EFCore好,错把SqlSugar当成宝

背景&#xff1a;依然记得我的第一份WebApi项目使用得是SqlSugar&#xff0c;当时还没有系统学习b/s这边的知识&#xff0c;跟着别人做项目用SqlSugar觉得非常方便&#xff0c;减少了自己手写ADO.Net的痛苦。但是今天发现这个EFCore也是巨好用啊&#xff0c;下面写一下他的简单…

C语言——内存函数

前言&#xff1a; C语言中除了字符串函数和字符函数外&#xff0c;还有一些函数可以直接对内存进行操作&#xff0c;这些函数被称为内存函数&#xff0c;这些函数与字符串函数都属于<string.h>这个头文件中。 一.memcpy&#xff08;&#xff09;函数 memcpy是C语言中的…

LlamaIndex——RAG概述

文章目录 一、使用LLM1. 模型2. 词嵌入3. Prompt 二、加载1. 加载2. 转换&#xff08;1&#xff09;高级API&#xff08;2&#xff09;低级API 三、索引/EmbeddingTop K Retrieval 四、存储五、查询六、评估1. 生成结果质量评估2. 检索结果评估 RAG&#xff08;检索增强生成&am…

【javaScript】DOM编程入门

一、什么是DOM编程 概念&#xff1a;DOM(Document Object Model)编程就是使用document对象的API完成对网页HTML文档进行动态修改&#xff0c;以实现网页数据和样式动态变化的编程 为什么要由DOM编程来动态修改呢&#xff1f;我们就得先理解网页的运行原理&#xff1a; 如上图&a…

回溯算法|491.递增子序列

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {if (path.size() > 1) {result.push_back(path);// 注意这里不要加return&#xff0c;要取树上…

vlookup跨表使用

VLOOKUP&#xff08;查找值&#xff0c;数据表&#xff0c;列序数&#xff0c;匹配条件&#xff09;。打开两表格&#xff0c;输入查找值和表格数据格式一致&#xff0c;查找表格或数据范围是连续的。 跨表VLOOKUP使用步骤&#xff1a; 插函数单元格&#xff0c;输“VLOOKUP()…

各类系统业务功能架构图整理

一、前言 很多软件系统一直经久不衰&#xff0c;主要这些系统都是一些生产工作经营不可或缺的系统。比如财务系统&#xff0c;商城系统&#xff0c;支付系统&#xff0c;供应链系统&#xff0c;人力资源管理系统&#xff0c;ERP系统等等。这些系统不管大公司还是小公司往往都需…

Fastjson 1.2.47 远程命令执行漏洞复现分析环境

Fastjson 1.2.47 远程命令执行漏洞 1、靶机环境安装 1.1、虚机机linux环境参数 1、操作系统&#xff1a;CentOS Linux release 7.4.1708 (Core) 2、IP&#xff1a;192.168.127.1321.1、docker与docker compose安装 1.2、下载https://github.com/vulhub/vulhub/tree/master/…

moment.js 产出未知格式的时间,可能的原因

moment.js 产出未知格式的时间&#xff0c;可能的原因 有个问题困扰我好久了&#xff0c;在项目中使用格式化时间的时候会产出一些千奇百怪的格式&#xff0c;产出的文字我都不认识。 百思不得其解&#xff0c;终于今天在看代码的时候发现了这个问题。 它的表现是这样的&…

Redis中的复制功能(四)

复制的实现 步骤2:建立套接字连接 在SLAVEOF命令执行之后&#xff0c;从服务器将根据命令所设置的IP地址和端口&#xff0c;创建连向主服务器的套接字连接&#xff0c;如图所示。如果从服务器创建的套接字能成功连接(connect)到主服务器&#xff0c;那么从服务器将为这个套接…

第二十一章 RabbitMQ

一、RabbitMQ 介绍 在介绍 RabbitMQ 之前&#xff0c;我们先来看下面一个电商项目的场景&#xff1a; - 商品的原始数据保存在数据库中&#xff0c;增删改查都在数据库中完成。 - 搜索服务数据来源是索引库&#xff08;Elasticsearch&#xff09;&#xff0c;如果数据库商品…

【Redis】Redis的使用

登录redis [roottest2 ~]# redis-cli 127.0.0.1:6379> 或[roottest2 ~]# redis-cli -h 192.168.67.12 -p 6379 192.168.67.12:6379> redis-benchmark 测试工具 redis-benchmark 是官方自带的Redis性能测试工具&#xff0c;可以有效的测试Redis服务的性能 基本的测试语…

稀疏矩阵的三元组表表示法及其转置

1. 什么是稀疏矩阵 稀疏矩阵是指矩阵中大多数元素为零的矩阵。 从直观上讲&#xff0c;当元素个数低于总元素的30%时&#xff0c;这样的矩阵被称为稀疏矩阵。 由于该种矩阵的特点&#xff0c;我们在存储这种矩阵时&#xff0c;如果直接采用二维数组&#xff0c;就会十分浪费…