Java+MySQL基于ssm的图书馆图书借阅管理系统

news2024/11/16 3:33:47

本文介绍了图书馆管理设计方案,该网站采用目前JSP中最流行的SSM框架和Eclipse编辑器、MySQL数据库设计并实现的。网站功能包含系统用户管理、图书管理、用户管理、借书管理、续借管理、违章缴款管理等模块。概述了整个系统的设计框架,介绍了系统软件开发编译环境的搭建,阐述了各模块的功能及程序调用关系设计过程。

请添加图片描述
本系统主要包含了图书管理、用户管理、续借等多个功能模块。下面分别简单阐述一下这几个功能模块需求。不同的权限对应相应的功能模块的需求,管理员权限的级别是最高的,所以所对应的需求是最多的,下面根据不同的权限分别简单阐述一下各个权限的需求。

管理员对应的功能需求如下:

管理员的权限是最高的,可以对系统的图书,用户信息,续借等信息进行统一管理。

管理员可添加管理员,添加更多的管理人员,并且能修改和删除管理员的信息资料。

有关图书,管理员可添加图书,添加有关图书的出版社、借阅次数、库存、类别、图片、图书编号、图书简介、图书名称、作者等信息,添加的图书都会显示在系统中,还可以通过关键字进行搜索查询,管理员也可以修改和删除相关的图书。

有关续借管理,管理员可添加续借,添加有关续借的出版社、借书单号、借书人、借书日期、库存、类别、图书编号、图书名称、续借天数、作者等信息,添加的续借都会显示在系统中,还可以通过关键字进行搜索查询,管理员也可以修改和删除相关的续借。

有关违章缴款管理,管理员添加违章缴款,添加有关违章缴款的罚款金额、罚款类型、罚款详情、借书单号、借书人、借书日期、类别、流水号、是否缴款、图书等信息,添加的违章缴款都会显示在系统中,还可以通过关键字进行搜索查询,管理员也可以修改和删除相关的用户。

有关借书管理模块,管理员可添加借书,比如可添加有关借书的出版社、借书单号、借书人、借书日期、库存、类别、图书编号、图书名称、作者等信息,添加的借书都会显示在系统中,还可以通过关键字进行搜索查询,管理员也可以修改和删除相关的借书。

用户对应的功能需求如下:

用户可以通过系统进行注册,注册完成并通过系统审核的用户可查询,修改自己的基础信息,比如修改登录密码等功能。

用户可通过网站在线浏览,查询网站的用户,借书,图书,还可以在网站在线续借。
请添加图片描述
package com.controller;

import java.io.File;
import java.io.IOException;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.entity.Allusers;
//import com.chengxusheji.po.News;
import com.server.AllusersServer;
import com.util.PageBean;
import net.sf.json.JSONObject;

@Controller
public class AllusersController {
@Resource
private AllusersServer allusersService;

//
@RequestMapping(“showAllusers.do”)
public String showAllusers(int id,ModelMap map,HttpSession session){
/* Map<String,Object> bmap=new HashMap<String,Object>();
bmap.put(“uid”, id);*/
// map.put(“blist”, allusersService.getAll(bmap));
map.put(“allusers”, allusersService.getById(id));
return “read”;
}

@RequestMapping("addAllusers.do")
public String addAllusers(HttpServletRequest request,Allusers allusers,HttpSession session){
	Timestamp time=new Timestamp(System.currentTimeMillis());
	//Users u=(Users)session.getAttribute("user");
	/*if(u==null||u.equals("")){
		return "redirect:showIndex.do";
	}else{*/
		//bbs.setUid(u.getId());
		/*bbs.setPubtime(time.toString());
		bbs.setIsdel("1");*/
	    allusers.setAddtime(time.toString().substring(0, 19));
		allusersService.add(allusers);
		return "redirect:allusersList.do";
	/*}*/
	
	
}

// 处理编辑
@RequestMapping(“doUpdateAllusers.do”)
public String doUpdateAllusers(int id,ModelMap map,Allusers allusers){
allusers=allusersService.getById(id);
map.put(“allusers”, allusers);
return “allusers_updt”;
}
//
@RequestMapping(“updateAllusers.do”)
public String updateAllusers(int id,ModelMap map,Allusers allusers){
allusersService.update(allusers);
return “redirect:allusersList.do”;
}
// 所有List
// @RequestMapping(“allusersList.do”)
// public String allusersList(ModelMap map,HttpSession session){
// map.put(“list”, allusersService.getAll(null));
// map.put(“clist”, allusersService.getAll(null));
// return “allusers”;
// }
// 分页查询
@RequestMapping(“allusersList.do”)
public String goodList(@RequestParam(value=“page”,required=false)String page,
ModelMap map,HttpSession session,Allusers allusers, String username, String pwd, String cx){
/if(session.getAttribute(“user”)==null){
return “login”;
}
/
if(pagenull||page.equals(“”)){
page=“1”;
}
PageBean pageBean=new PageBean(Integer.parseInt(page), 15);
Map<String, Object> pmap=new HashMap<String,Object>();
pmap.put(“pageno”, pageBean.getStart());
pmap.put(“pageSize”, 15);
Map<String, Object> bmap=new HashMap<String, Object>();
Map<String,Object> cmap=new HashMap<String,Object>();
/pmap.put(“uid”, ((Users)session.getAttribute(“user”)).getId());
bmap.put(“uid”, ((Users)session.getAttribute(“user”)).getId());
/
if(username
null||username.equals(“”)){pmap.put(“username”, null);cmap.put(“username”, null);}else{pmap.put(“username”, username);cmap.put(“username”, username);}
if(pwdnull||pwd.equals(“”)){pmap.put(“pwd”, null);cmap.put(“pwd”, null);}else{pmap.put(“pwd”, pwd);cmap.put(“pwd”, pwd);}
if(cx
null||cx.equals(“”)){pmap.put(“cx”, null);cmap.put(“cx”, null);}else{pmap.put(“cx”, cx);cmap.put(“cx”, cx);}

	int total=allusersService.getCount(bmap);
	pageBean.setTotal(total);
	List<Allusers> list=allusersService.getByPage(pmap);
	map.put("page", pageBean);
	map.put("list", list);
	session.setAttribute("p", 1);
	return "allusers_list";
}

// 分页模糊查询
@RequestMapping(“vagueAllusersList.do”)
public String vagueAllusersList(@RequestParam(value=“page”,required=false)String page,
ModelMap map,HttpSession session){
if(page==null||page.equals(“”)){
page=“1”;
}
PageBean pageBean=new PageBean(Integer.parseInt(page),PageBean.PAGESIZE);
Map<String, Object> pmap=new HashMap<String,Object>();
pmap.put(“pageno”, pageBean.getStart());
pmap.put(“pageSize”, pageBean.getPageSize());
Map<String, Object> bmap=new HashMap<String, Object>();
/pmap.put(“uid”, ((Users)session.getAttribute(“user”)).getId());
bmap.put(“uid”, ((Users)session.getAttribute(“user”)).getId());
/
int total=allusersService.getCount(bmap);
pageBean.setTotal(total);
List list=allusersService.getByPage(pmap);
map.put(“page”, pageBean);
map.put(“list”, list);
session.setAttribute(“p”, 2);
return “queryallusers”;
}
@RequestMapping(“deleteAllusers.do”)
public String deleteAllusers(int id){
allusersService.delete(id);
return “redirect:allusersList.do”;
}

@RequestMapping("quchongAllusers.do")
public void quchongAllusers(Allusers allusers,HttpServletResponse response){
	   Map<String,Object> map=new HashMap<String,Object>();
	   map.put("username", allusers.getUsername());
	   System.out.println("username==="+allusers.getUsername());
	   System.out.println("username222==="+allusersService.quchongAllusers(map));
	   JSONObject obj=new JSONObject();
	   if(allusersService.quchongAllusers(map)!=null){
			 obj.put("info", "ng");
		   }else{
			   obj.put("info", "username可以用!");
			  
		   }
	   response.setContentType("text/html;charset=utf-8");
	   PrintWriter out=null;
	   try {
		out=response.getWriter();
		out.print(obj);
		out.flush();
	} catch (IOException e) {
		e.printStackTrace();
	}finally{
		out.close();
	}
}

@RequestMapping("Alluserslogin.do")
public String checkAllusersLogin(Allusers allusers, HttpSession session) {
	Map<String,Object> u=new HashMap<String,Object>();
	System.out.println("name===" + allusers.getUsername());
	u.put("username",allusers.getUsername());
	//u.put("utype", "用户");
	//Md5.MD5HexEncode(user.getPassword())
	u.put("pwd",allusers.getPwd());
	allusers = allusersService.allusersLogin(u);
	if (allusers != null) {
		session.setAttribute("username", allusers);
		System.out.println("username=" + allusers);
		session.removeAttribute("suc");
		return "redirect:index.do";
	} else {
		System.out.println("usernafwfwwme=");
		session.setAttribute("suc", "登录失败!用户名或密码错误!");
		return "login";
	}

}

}

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

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

相关文章

leetcodeSQL:1445. 苹果和桔子【case when + if】

目录题目截图题目分析case when写法if写法总结题目截图 题目分析 groupby的肯定是日期怎么根据fruit类型分类呢苹果就是&#xff0c;orange就是-可以用case when或者if然后来一个sum就可以了注意&#xff0c;这里直接在select后面跟着查就可以了 case when写法 # Write your…

艾美捷硝酸盐/亚硝酸盐荧光法检测试剂盒基本参数说明

一氧化氮&#xff08;NO&#xff09;由神经元、内皮细胞、血小板和中性粒细胞响应于稳态刺激产生微量。这种NO被迅速清除&#xff08;t4 s&#xff09;&#xff0c;并以旁分泌的方式传递细胞信号。NO与鸟苷酸环化酶的HEME辅基相互作用&#xff0c;激活酶并导致cGMP水平升高。其…

【十分钟学懂Linux操作系统】

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

成本降幅达20%,效率增幅达3成,解读宝洁的供应链转型策略

从家里一部电话用N年&#xff0c;到手上的智能手机年年换&#xff1b;从单一的线下商场、超市&#xff0c;到随时随地的线上线下购物&#xff1b;从一个包裹等一个星期&#xff0c;到如今恨不得即买即达……短短的十年间&#xff0c;人们的消费习惯发生了翻天覆地的变化。数字化…

15基于峰谷分时电价引导下的电动汽车充电负荷优化(matlab程序)

参考文献 基于峰谷分时电价引导下的电动汽车充电负荷优化_欧名勇2020 主要内容 利用蒙特卡洛方法对&#xff12;种不同充电方式进行模拟并对其进行分析&#xff1b;分析用户响应度对电动汽车有序充电的影响&#xff0c;建立峰谷分时电价对电动汽车负荷影响的模型&#xff0c…

Hadoop学习----MapReduceYARN

Map Reduce 1、Map Reduce的思想核心是"先分再合&#xff0c;分而治之" 所谓"分而治之"就是把一个复杂的问题&#xff0c;按照一定的"分解"方法分为等价的规模较小的若干部分&#xff0c;然后逐个解决&#xff0c;分别找出各部分的结果&#xf…

SimpleFOC移植STM32(七)—— 移植STM32F405RGT6

目录说明一、点亮LED1.1、原理图1.2、硬件准备1.3、烧写二、开环控制2.1、硬件准备2.2、硬件连接2.3、打开工程2.4、修改参数2.5、编译下载&#xff0c;观察运行三、角度读取3.1、硬件准备3.2、硬件连接3.3、接线说明3.4、打开工程3.5、修改代码3.6、编译下载&#xff0c;观察运…

超1800万累计观看,多次占据热榜前列……“无障碍字幕直播间”带来的远不止这些!

截至12月6日&#xff0c;世界杯无障碍字幕直播间已累计观看超1800万&#xff0c;多次占据热榜前列……但TA带来的远不止这些。 “过去觉得世界杯距离我太远了&#xff0c;熬夜看球却听不懂、听不清只能紧紧盯着屏幕&#xff1b;但今年无障碍字幕直播间一出&#xff0c;似乎一下…

Talk预告 | 腾讯AI Lab研究员童湛南京大学谈婧:基于注意力机制的视频自监督表示学习和时序动作检测

本期为TechBeat人工智能社区第465期线上Talk&#xff01; 北京时间12月22日(周四)20:00&#xff0c;腾讯AI Lab研究员——童湛&南京大学计算机科学与技术系硕士研究生——谈婧的Talk将准时在TechBeat人工智能社区开播&#xff01; 他们与大家分享的主题是: “基于注意力机制…

在华为云桌面Workspace上,启泰智能工业设计效率翻倍

中国汽车的产销总量已经连续13年稳居全球第一&#xff0c;在一款新车开发中&#xff0c;大约有2万个汽车零部件&#xff0c;这些零部件的研发与制造&#xff0c;需要大量的工厂与各行业的协作&#xff0c;其中模具的需求量最大。 模具行业是一个非标、离散型的行业&#xff0c…

JavaSE笔记——泛型

文章目录前言一、简单泛型1.一个元组类库2.一个堆栈类二、泛型接口三、泛型方法1.变长参数和泛型方法2.一个泛型的 Supplier3.简化元组的使用4.一个 Set 工具四、构建复杂模型五、泛型擦除1.迁移兼容性2.擦除的问题3.边界处的动作六、补偿擦除1.创建类型的实例七、边界八、通配…

【学习打卡05】可解释机器学习笔记之CAM+Captum代码实战

可解释机器学习笔记之CAMCaptum代码实战 文章目录可解释机器学习笔记之CAMCaptum代码实战代码实战介绍torch-cam工具包可视化CAM类激活热力图预训练ImageNet-1000图像分类-单张图像视频以及摄像头预测pytorch-grad-cam工具包Grad-CAM热力图可解释性分析基于Guided Grad-CAM的高…

MySql 根据中文拼音首字母排序、 分组排序

如地域表信息&#xff1a; 如果我们想根据NAME 字段 的值&#xff0c; 按照中文拼音首字母排序 &#xff1a; sql SELECT CODE, NAME FROM district_info ORDER BY CONVERT(name USING gbk) COLLATE gbk_chinese_ci ASC 效果很OK&#xff1a; 那么如果我要整成想电话簿那样&am…

【正版软件】Navicat for Oracle 数据库数管理和开发工具

前言 Navicat for Oracle 透过精简的工作环境&#xff0c;提高 Oracle 开发人员和管理员的效率和效率。 Navicat for Oracle 透过精简的工作环境&#xff0c;提高 Oracle 开发人员和管理员的效率和效率。专业化 Oracle 的开发&#xff0d;快速安全地创建、组织、访问和共享信息…

微信小程序自定义顶部状态栏

因为工作需要&#xff0c;要在微信小程序中自定义顶部导航栏&#xff0c;通过这篇文章来记录一下自己所得~ 第一步: 需要在json文件中配置"navigation" : "custom"&#xff0c;完成自定义导航栏&#xff0c;只保留胶囊按钮&#xff0c;效果如下图&#x…

养殖废水生化后氨氮400mg/L做到15mg/L,有什么降氨氮的工艺?

水产养殖过程中&#xff0c;鱼的排泄物和没有被消耗的饲料降解均会使水中的氨氮剧增&#xff0c;当氨氮浓度大于0.2mg/L时&#xff0c;鱼类摄食就会受到严重影响&#xff0c;造成生长不良或停止生长;达到 2mg/L时&#xff0c;则会造成生物的死亡&#xff0c;严重影响水产的养殖…

【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

技术推荐 自定义Archetype Maven骨架/以当前项目为模板创建maven骨架&#xff0c;可以参考http://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html&#xff0c;详细介绍了如何快速创建和使用Archetype。 技术背景 在工作过程中必然会遇到创建项目的蛋…

最新版Crack:Xceed Ultimate Suite

Xceed Ultimate Suite 包括 160 多个适用于所有 Windows 平台的自适应、可靠和高性能控件和库的重要集合。程序前端的 UI 控件和后端的数据处理库。经常更新&#xff0c;并得到反应支持和开发人员的认可。 适用于所有 Windows 平台的 160 个自适应、可靠和高性能控件和库的重要…

vue-elementUI后台管理系统,已实现用户管理、菜单管理、角色管理、公司管理、权限管理、支付管理等

vue搭建后台管理界面模版&#xff08;PC端&#xff09; 完整代码下载地址&#xff1a;vue-elementUI后台管理系统 技术栈 vue2 vuex vue-router webpack ES6/7 axios elementUI 阿里图标iconfont 项目预览 http://nmgwap.gitee.io/vueproject/#/login 说明 本项目主…

Python使用pandas导入csv文件内容

使用pandas导入csv文件内容使用pandas导入csv文件内容1. 默认导入2. 指定分隔符3. 指定读取行数4. 指定编码格式5. 列标题与数据对齐使用pandas导入csv文件内容 1. 默认导入 在Python中导入.csv文件用的方法是read_csv()。 使用read_csv()进行导入时&#xff0c;指定文件名即…