Java项目:ssm图书馆管理系统

news2024/11/15 10:11:10

作者主页:源码空间站2022

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

功能介绍

基于ssm的图书馆管理系统.主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。

用户分为两类:读者、图书馆管理员。图书馆管理员可以修改读者信息,修改书目信息,查看所有借还日志等;读者仅可以修改个人信息、借阅或归还书籍和查看自己的借还日志。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 

6.数据库:MySql 5.7版本;

技术栈

1. 后端:Spring SpringMVC MyBatis

2. 前端:JSP+bootstrap+jQuery

使用说明

1. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

若为maven项目,导入成功后请执行maven clean;maven install命令,下载所需jar包;

2. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
3. 将项目中db.properties配置文件中的数据库配置改为自己的配置
4. 配置tomcat,然后运行项目,输入localhost:8080/ 登录
5. 管理员账户:123456  密码:123456

读者账户:10000 密码:123456

运行截图

  

相关代码 

图书管理控制器

@Controller
public class LendController {
    @Autowired
    private LendService lendService;

    @Autowired
    private BookService bookService;

    @RequestMapping("/deletebook.html")
    public String deleteBook(HttpServletRequest request, RedirectAttributes redirectAttributes) {
        long bookId = Long.parseLong(request.getParameter("bookId"));
        if (bookService.deleteBook(bookId)) {
            redirectAttributes.addFlashAttribute("succ", "图书删除成功!");
        } else {
            redirectAttributes.addFlashAttribute("error", "图书删除失败!");
        }
        return "redirect:/admin_books.html";
    }

    @RequestMapping("/lendlist.html")
    public ModelAndView lendList(HttpServletRequest request) {
        ModelAndView modelAndView = new ModelAndView("admin_lend_list");
        ArrayList<Lend> lends = lendService.lendList();
        ArrayList<LendDate> lendDates = new ArrayList<>();
        for (Lend lend : lends) {
            LendDate lendDate = new LendDate();
            BeanUtils.copyProperties(lend,lendDate);
            if (lend.getLendDate()!=null)
            lendDate.setLendDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getLendDate()));
            if (lend.getBackDate()!=null)
                lendDate.setBackDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getBackDate()));
            lendDates.add(lendDate);
        }
        modelAndView.addObject("list", lendDates);
        return modelAndView;
    }

    @RequestMapping("/mylend.html")
    public ModelAndView myLend(HttpServletRequest request) {
        ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");
        ModelAndView modelAndView = new ModelAndView("reader_lend_list");
        ArrayList<Lend> lends = lendService.myLendList(readerCard.getReaderId());
        ArrayList<LendDate> lendDates = new ArrayList<>();
        for (Lend lend : lends) {
            LendDate lendDate = new LendDate();
            BeanUtils.copyProperties(lend,lendDate);
            if (lend.getLendDate()!=null)
                lendDate.setLendDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getLendDate()));
            if (lend.getBackDate()!=null)
                lendDate.setBackDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getBackDate()));
            lendDates.add(lendDate);
        }
        modelAndView.addObject("list", lendDates);
        return modelAndView;
    }

    @RequestMapping("/deletelend.html")
    public String deleteLend(HttpServletRequest request, RedirectAttributes redirectAttributes) {
        long serNum = Long.parseLong(request.getParameter("serNum"));
        if (lendService.deleteLend(serNum) > 0) {
            redirectAttributes.addFlashAttribute("succ", "记录删除成功!");
        } else {
            redirectAttributes.addFlashAttribute("error", "记录删除失败!");
        }
        return "redirect:/lendlist.html";
    }

    @RequestMapping("/lendbook.html")
    public String bookLend(HttpServletRequest request, RedirectAttributes redirectAttributes) {
        long bookId = Long.parseLong(request.getParameter("bookId"));
        long readerId = ((ReaderCard) request.getSession().getAttribute("readercard")).getReaderId();
        if (lendService.lendBook(bookId, readerId)) {
            redirectAttributes.addFlashAttribute("succ", "图书借阅成功!");
        } else {
            redirectAttributes.addFlashAttribute("succ", "图书借阅成功!");
        }
        return "redirect:/reader_books.html";
    }

    @RequestMapping("/returnbook.html")
    public String bookReturn(HttpServletRequest request, RedirectAttributes redirectAttributes) {
        long bookId = Long.parseLong(request.getParameter("bookId"));
        long readerId = ((ReaderCard) request.getSession().getAttribute("readercard")).getReaderId();
        if (lendService.returnBook(bookId, readerId)) {
            redirectAttributes.addFlashAttribute("succ", "图书归还成功!");
        } else {
            redirectAttributes.addFlashAttribute("error", "图书归还失败!");
        }
        return "redirect:/reader_books.html";
    }
}

如果也想学习本系统,下面领取。关注并回复:051ssm  

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

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

相关文章

ArrayList源码阅读笔记

1. 基础知识 1.1 概念 ArrayList是可以动态增长和缩减的索引序列&#xff0c;它是基于数组实现的List类。该类封装了一个动态再分配的Object[]数组&#xff0c;每个对象都有一个capacity属性&#xff0c;表示它们所封装的Object[]数组长度&#xff0c;当向ArrayList中添加元素…

DAMOYOLO windows 单卡训练

最近达摩院放出了目前最能打的yolo算法&#xff0c;时间和精度都得到了提升 目前代码已经开源&#xff1a; 代码地址&#xff1a;GitHub - tinyvision/DAMO-YOLO: DAMO-YOLO: a fast and accurate object detection method with some new techs, including NAS backbones, effi…

详细的科技特长生路径和成长规划

2021年&#xff0c;教育部印发了《关于进一步加强和改进普通高等学校艺术类专业考试招生工作的指导意见》&#xff0c;在其中规范了艺术类专业的招生政策&#xff0c;包括艺术类考试和高水平艺术团考试&#xff0c;其中明确自2024年起&#xff0c;高校高水平艺术团不再从高校招…

今年双十二值得买的数码好物推荐!双十二数码产品抢购攻略

时间过得真快&#xff0c;一年一度的双十二年终最后的大促即将正式拉开序幕。此刻&#xff0c;不知道大家制定好购物计划了吗&#xff1f;如果你想入手数码好物&#xff0c;那么不妨看一下我刚刚整理的这份清单&#xff0c;涵盖了手机、平板、耳机等多个品类&#xff0c;相信总…

Centos Linux 7 查看网卡

Centos Linux 7 查看网卡 一. 二.

使用 Learner Lab - 使用 CloudWatch 进行排错,搭配 API Gateway 与 Lambda

使用 Learner Lab - 使用 CloudWatch 进行排错&#xff0c;搭配 API Gateway 与 Lambda AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务&#xff0c;让学生可以在 100 USD的金额下&#xff0c;自行练习所要使用的 AWS 服务&#xff0c;如何进入 Learne…

设计模型之单例设计

前言 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被…

3. Exchange 交换机的使用

二八佳人体似酥&#xff0c;腰间仗剑斩愚夫。虽然不见人头落&#xff0c;暗里教君骨髓枯。 在上一节中&#xff0c;我们创建了一个工作队列。我们假设的是工作队列背后&#xff0c;每个任务都恰好交付给一个消 费者(工作进程)。在这一部分中&#xff0c;我们将做一些完全不同的…

孪生神经网络

孪生神经网络 孪生神经网络&#xff08;Siamese network&#xff09;主要用途是比较两图片的相似程度&#xff0c;其核心思想就是权值共享。 卷积神将网络是通过卷积运算提取图像的特征进行训练的&#xff0c;如果想比较两个图像的相似程度&#xff0c;也要对两个图像分别进行…

毛里智慧小学宿舍楼工程量清单编制

目 录 摘 要 I 第1章 前言 1 第2章 招标控制价编制 3 2.1招标控制价 3 2.2建设项目招标控制价汇总表 4 2.3单项工程招标控制价汇总表 5 2.4单项工程招标控制价汇总表 14 2.5分部分项工程和单价措施项目清单与计价表 24 2.6总价措施项目清单与计价表 27 2.7综合单价分析表 28 2.…

C语言学习之路(基础篇)—— 文件操作(上)

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 概述 1) 磁盘文件和设备文件 磁盘文件 指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上&#xff0c;使用时才调入内存。 设备文件 在操作…

亚马逊云科技re:Invent:Serverless是所有构想的核心

12月2日&#xff0c;2022亚马逊云科技re:Invent全球大会上&#xff0c;Amazon.com副总裁兼首席技术官Werner Vogels博士向开发者们展示了另一种可能。在一系列Serverless工具的帮助下&#xff0c;一些代码可以少写&#xff0c;因为未来你可能再也不需要写它们了。这恐怕是自云原…

包装类-Wrapper

包装类的分类 针对八种基本数据类型相应的引用类型-包装类有了类的特点&#xff0c;就可以调用对应的类中的方法 装箱和拆箱 Java是一种面向对象的编程语言&#xff0c;学习Java时就被明确灌输了一个概念&#xff1a;OOP&#xff0c;即面向对象编程。一切皆对象。但是基本…

[附源码]JAVA毕业设计框架的电脑测评系统(系统+LW)

[附源码]JAVA毕业设计框架的电脑测评系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

Win11右键菜单反应慢有延迟解决方法分享

Win11右键菜单反应慢有延迟解决方法分享。有用户发现电脑鼠标点击右键菜单的时候&#xff0c;会出现一些延迟&#xff0c;导致自己在使用的过程中非常难受。那么这个问题如何自己去进行解决呢&#xff1f;我们一起来看看详细的解决方法分享吧。 解决方法&#xff1a; 注意&…

物联网IoT体系结构及核心技术

物联网&#xff0c;英文名为Internet of things&#xff08;IoT&#xff09;&#xff0c;顾名思义&#xff0c;物联网就是物物相连的互联网。 这有两层意思&#xff1a; 1、物联网的核心和基础仍然是互联网&#xff0c;是在互联网基础上的延伸和扩展的网络&#xff1b; 2、从…

超级详细 的 Redis 安装教程

超级详细 的 Redis 安装教程 Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis. 这个版本的 Redis 适合开发人员学习使用&#xff0c;生产环境中使用 Linux 系统上的 Redis, 这里讲解了这两种的安装和下载。按照你们需要的liunx 或window步骤来 就可以了&#xff08;…

智能优化算法:法医调查优化算法 - 附代码

智能优化算法&#xff1a;法医调查优化算法 摘要&#xff1a;法医调查优化算法( Forensic-based investigation algorithm, FBI), 是由 Jui-Sheng Chou 等于2020 年提出的一种群体智能优化算法。其灵感来源于警官调查嫌疑人的过程。 1.法医调查优化算法 警察的大规模案件调查…

Java并发编程—线程详解

文章目录线程简介什么是线程多线程的使用什么时候需要使用多线程&#xff1f;写多少个线程比较合适&#xff1f;线程优先级靠谱的让出CPU的方法&#xff1f;线程的状态线程的状态有哪几种&#xff1f;线程的状态转换Daemon线程启动和终止线程构造线程启动线程理解中断如何安全的…

[附源码]计算机毕业设计基于Springboot的物品交换平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…