基于java+ssm+jsp的图书管理系统

本文介绍了采用Java语言和Mysql数据库开发的图书馆信息化管理系统,该系统包括图书管理、借阅、查询、归还等功能,并扩展了用户参与,允许读者直接进行图书操作。系统采用Div+CSS布局,提供用户和管理员两种权限界面,实现了用户登录、个人信息管理、图书信息浏览、在线借书和还书等功能,同时管理员可进行用户管理、图书信息维护等后台操作。该系统提升了图书馆的管理效率和服务质量。
摘要由CSDN通过智能技术生成

项目介绍

随着科技的快速的发展和网络信息的普及,信息化管理已经融入到了人们的日常生活中,各行各业都开始采用信息化管理系统,通过计算机信息化管理,首先可以减轻人们工作量,而且采用信息化管理数据信息更加的严谨,可以直接实现智能化管理和数据存储。同样这样的技术也可以直接应用到图书馆日常管理中,通过计算机智能化管理可以帮我们推进图书馆的数字化建设。

对图书馆进行了一定的考察和分析后,决定设计一个信息化的图书管理系统,采用Java语言技术进行开发,Mysql数据库进行数据存储,页面技术采用Div+css进行布局设计,通过采用这些技术在功能方面更加的完善,界面方面也更加的美观,符合现代人的审美。经过技术的发展目前的图书馆里一般也采用了计算机图书管理系统,但是这一般都是仅限管理员进行使用,对图书进行管理,有一定的局限性,没有考虑到读者,所以经过一番考研调查后,决定在该基础上额外加上用户,让读者都可以参与进来,这样不单单是方便了管理员,对于读者来说借阅图书也更加的方便,直接通过系统就可以查询到具体的借阅信息。

4.2系统功能设计
根据第三章的功能分析设计出本系统的功能为图书管理、图书借阅、图书查询、图书归还、图书分类等。本系统的权限分为用户和管理员两种。界面分为管理员界面和用户界面。本系统的功能结构图如下图4.1所示:
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net

系统实现

5.2用户身份界面的功能实现
5.2.1用户登录功能的实现界面
  登录功能是识别身份的唯一途径,本系统中的用户为用户、管理员。用户在登录时输入的信息需要流入数据库中进行对比。如管理员输入admin admin,数据库则需要对比管理员信息表中是否有admin admin的数据。存在该条数据才可以登录成功,不存在该条数据时会提示错误。用户登录界面的设计效果如下图5.2所示:
在这里插入图片描述

图5.2系统用户的登录运行界面

5.2.2 首页功能的实现界面
首页是门户,一个好的首页才可以吸引住用户。本首页里含有导航栏、图书信息、公告等信息。首页功能的实现界面如下图5.3所示:
在这里插入图片描述

图5.3首页展示的效果界面

5.2.3个人资料管理功能的实现界面
用户登录后可以管理自己的资料,用户的资料都是在注册时添加的,后期用户可以自己修改个人资料。用户修改个人资料功能的实现界面如下图5.4所示:
在这里插入图片描述

图5.4用户修改个人资料功能的运行界面

5.2.4图书信息功能的实现界面
用户可以浏览图书,图书可以分为不同的类型。图书信息功能的实现界面如下图5.5所示:
在这里插入图片描述

图5.5图书信息功能的实现界面

5.2.5在线借书功能的实现界面
用户选择需要的图书可以在线进行借书,需要登记必要的借书信息才可以完成。在线借书功能的实现界面如下图5.6所示: 
在这里插入图片描述

图5.6在线借书功能的实现界面

5.2.6借书管理功能的实现界面
  我的借书管理功能为核心重点功能,用户可以浏览自己的借阅信息,相当于用户的借阅证,在此功能里会详细登录用户的借阅详情,包括何时借阅的哪本书,需要何时归还的哪本书等。借书管理功能的实现界面如下图5.7所示:
在这里插入图片描述

图5.7借书管理功能的实现界面

5.2.7还书信息管理功能的实现界面
用户可以查询已归还的图书,并修改和删除还书信息。用户查询还书信息的实现界面如下图5.8所示:
在这里插入图片描述

图5.8还书信息管理功能的实现界面

5.3系统后台管理员功能实现
5.3.1用户管理功能的实现界面
  本功能包括用户信息查询、用户信息添加和用户信息的管理。本功能的设计目的是登记用户信息,方便用户可以使用本系统并进行图书的借阅。用户管理功能的实现界面如下图5.9所示:
在这里插入图片描述

图5.9用户管理功能界面的实现

5.3.2图书信息管理功能的实现界面
本功能包括对图书的添加、删除、修改、查询。添加图书时填写图书详情就可以完成,查询图书时填写查询条件即可以查询出来相对应的图书。查询图书信息功能的实现界面如下图5.10所示:
在这里插入图片描述

图5.10查询图书信息功能的实现界面

5.3.3借书管理功能的实现
  用户的借书信息可在本功能里进行管理,可以审核用户的借书申请。本功能还包括删除用户的借书信息。图书借书功能的实现界面如下图5.11所示:
在这里插入图片描述

图5.11图书借书功能的实现界面

5.3.4类型管理功能的实现界面
  管理员可以设置图书的类别,并对类别进行修改的删除等。管理员查询图书类别功能的实现界面如下图5.12所示:
在这里插入图片描述

图5.12管理员查询图书类别功能的实现界面

5.3.5管理员管理功能的实现界面
本功能可以实现对管理员账号进行添加和查询,完成新增管理员,实现界面如下图5.13所示:
在这里插入图片描述

图5.13添加管理员信息的实现界面

5.3.6还书功能的实现界面
管理员也可以审核用户的还书申请,通过申请后用户才可以完成还书。管理员查询还书信息的实现界面如下图5.14所示:
在这里插入图片描述

图5.14查询还书信息的实现界面

5.3.7系统管理功能的实现界面
系统管理包括设置轮播图和公告,实现界面如下图5.15所示:
在这里插入图片描述

图5.15系统管理功能的实现界面

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.JieshuxinxiEntity;
import com.entity.view.JieshuxinxiView;

import com.service.JieshuxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 借书信息
 * 后端接口
 * @author 
 * @email 
 * @date 2022-03-26 16:12:18
 */
@RestController
@RequestMapping("shuxinxi")
public class JieshuxinxiController {
    @Autowired
    private JieshuxinxiService jieshuxinxiService;



    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,JieshuxinxiEntity jieshuxinxi, 
                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date yujiguihaistart,
                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date yujiguihaiend,
		HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			jieshuxinxi.setZhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<JieshuxinxiEntity> ew = new EntityWrapper<JieshuxinxiEntity>();
                if(yujiguihaistart!=null) ew.ge("yujiguihai", yujiguihaistart);
                if(yujiguihaiend!=null) ew.le("yujiguihai", yujiguihaiend);
    	PageUtils page = jieshuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jieshuxinxi), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,JieshuxinxiEntity jieshuxinxi, 
                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date yujiguihaistart,
                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date yujiguihaiend,
		HttpServletRequest request){
        EntityWrapper<JieshuxinxiEntity> ew = new EntityWrapper<JieshuxinxiEntity>();
                if(yujiguihaistart!=null) ew.ge("yujiguihai", yujiguihaistart);
                if(yujiguihaiend!=null) ew.le("yujiguihai", yujiguihaiend);
    	PageUtils page = jieshuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jieshuxinxi), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( JieshuxinxiEntity jieshuxinxi){
       	EntityWrapper<JieshuxinxiEntity> ew = new EntityWrapper<JieshuxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( jieshuxinxi, "jieshuxinxi")); 
        return R.ok().put("data", jieshuxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JieshuxinxiEntity jieshuxinxi){
        EntityWrapper< JieshuxinxiEntity> ew = new EntityWrapper< JieshuxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( jieshuxinxi, "jieshuxinxi")); 
		JieshuxinxiView jieshuxinxiView =  jieshuxinxiService.selectView(ew);
		return R.ok("查询借书信息成功").put("data", jieshuxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JieshuxinxiEntity jieshuxinxi = jieshuxinxiService.selectById(id);
        return R.ok().put("data", jieshuxinxi);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JieshuxinxiEntity jieshuxinxi = jieshuxinxiService.selectById(id);
        return R.ok().put("data", jieshuxinxi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody JieshuxinxiEntity jieshuxinxi, HttpServletRequest request){
    	jieshuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jieshuxinxi);

        jieshuxinxiService.insert(jieshuxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JieshuxinxiEntity jieshuxinxi, HttpServletRequest request){
    	jieshuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jieshuxinxi);

        jieshuxinxiService.insert(jieshuxinxi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody JieshuxinxiEntity jieshuxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(jieshuxinxi);
        jieshuxinxiService.updateById(jieshuxinxi);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jieshuxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<JieshuxinxiEntity> wrapper = new EntityWrapper<JieshuxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = jieshuxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	





}

论文参考

在这里插入图片描述

目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1 课题研究背景 1
1.2课题研究现状 1
1.3课题实现目的和意义 2
1.4课题实现内容 2
1.5论文结构安排 2
第2章 系统实现的相关技术和环境 4
2.1UML建模语言介绍 4
2.2 Html语言介绍 5
2.3Mysql数据库的介绍 5
第3章 系统分析 6
3.1系统需求分析 6
3.2系统可行性分析 6
3.2.1技术可行性 6
3.2.2经济可行性 6
3.2.3法律可行性 6
3.2.4操作可行性 7
3.3系统性能分析 7
3.4系统功能分析 7
3.5系统流程分析 8
第4章 总体设计 12
4.1系统目标 12
4.2系统功能设计 12
4.3数据库设计 13
4.3.1数据库概念模型 13
4.3.2数据库表设计 16
第5章 系统实现 21
5.1 JAVA与Mysql数据库连接 21
5.2用户身份界面的功能实现 21
5.2.1用户登录功能的实现界面 21
5.2.2 首页功能的实现界面 22
5.2.3个人资料管理功能的实现界面 23
5.2.4图书信息功能的实现界面 24
5.2.5在线借书功能的实现界面 25
5.2.6借书管理功能的实现界面 25
5.2.7还书信息管理功能的实现界面 26
5.3系统后台管理员功能实现 26
5.3.1用户管理功能的实现界面 26
5.3.2图书信息管理功能的实现界面 27
5.3.3借书管理功能的实现 27
5.3.4类型管理功能的实现界面 27
5.3.5管理员管理功能的实现界面 28
5.3.6还书功能的实现界面 28
5.3.7系统管理功能的实现界面 29
第6章 系统测试 30
6.1测试的目的 30
6.2测试任务概述 30
6.3测试项目用例 30
6.3.1准备测试的功能用例 30
6.3.2测试说明 30
结 论 34
参考文献 35
致 谢 37

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值