Java实训项目--小型图书管理系统(ssm框架)
Posted 加辣椒了吗?
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实训项目--小型图书管理系统(ssm框架)相关的知识,希望对你有一定的参考价值。
一、系统功能介绍
本系统后台采用ssm框架编写,前台采用当前主流的layui框架和jquery框架完成页面信息展示功能。
开发环境:
(1)开发工具:eclipse
(2)数据库:mysql-8.0.16-winx64
(3)JDK:1.8.0_202
(4)JDBC:8.0.16
包结构:
数据库结构:
二、系统实现
1.注册模块
注册模块用于管理员或读者注册,通过此模块将用户信息注入到读者表或管理员表。登录者根据自己注册的账号,密码和身份(管理员或读者)进行登录时,将会对读者表或管理员录入的信息表进行查找。如图3.1所示。
图3.1 注册界面图:
2.登录模块
登录模块用于管理员或读者登录,通过此模块进入图书管理系统。登录者根据自己的账号,密码和身份(管理员或读者)进行登录时,将会对读者表或管理员的信息表进行查找对比,当信息匹配时,登录成功。当身份是管理员时,进入管理员界面,管理员可以操作的模块有图书管理,读者管理,借书管理。当身份是读者时,进入读者界面,读者可以操作的模块有借阅图书,归还图书。如图3.2、图3.3、图3.4所示。
图3.2 登录界面图:
图3.3 管理员界面图:
图3.4 读者界面图:
3.图书管理模块
图书管理模块可添加、删除、修改、查询图书,图书主要有图书ID,图书名、作者、数量等信息,图书在管理员界面和读者界面共享,但只有管理员能对图书进行增删查改。借阅表,还书表,借阅记录表都依赖于图书表,如图3.5、图3.6、图3.7、图3.8、图3.9、图3.10所示。
图3.5图书管理界面图:
图3.6添加图书界面图:
图3.7删除图书界面图:
图3.8查询图书界面图:
图3.9查询结果界面图:
图3.10修改图书界面图:
4.读者管理模块
读者管理模块可添加、删除、修改、查询读者,读者主要有读者ID,读者姓名、读者密码、性别等信息,只有管理员能对读者进行增删查改。如图3.11、图3.12、图3.13、图3.14、图3.15、图3.16所示。
图3.11读者管理界面图:
图3.12、图3.13、图3.14、图3.15、图3.16跟上个图书管理模块的增删查改界面类似,怕图太多,就不截出来了。
5.借书管理模块
借书管理模块用于管理员查看读者的借阅记录,可以根据书名,图书ID,读者ID,借阅状态等对借阅记录进行查询。借阅记录表依赖于借书表和还书表,如图3.17、图3.18所示。
图3.17 借书管理界面图:
图3.18 查询结果界面图:
6.借阅图书模块
借阅图书模块是读者选择自己想要的图书借阅的模块,读者选择自己想要借阅的图书并填入自己的学号即可借阅。如图5.19、图5.20所示。
图3.19借阅图书管理界面图:
图3.20借阅图书界面图
7.归还模块
归还模块用于读者归还图书,读者选择自己想要归还的图书并填入自己的学号即可归还图书。图3.21、图3.22跟上个借阅图书模块类似,就不截出来了。
8.访问拦截与权限控制子模块
访问拦截与权限控制子模块是本系统的安全性保证,此模块保证用户不能访问不属于自己身份的界面,管理员接口不能访问读者接口,读者接口不能访问管理员接口,实现接口隔离,防止越权操作。此模块依赖读者表和管理员表,如图3.23所示。
图3.23访问拦截与权限控制界面图:
三、关键代码
Dao层:
UserDao.java:
package com.dao;
import org.apache.ibatis.annotations.Param;
import com.po.Reader;
import com.po.User;
public interface UserDao {
// 查询管理员
public User FindUser(@Param("user_code") String user_code, @Param("user_passwd") String user_passwd);
// 查询读者
public Reader FindReader(@Param("readers_id") String readers_id, @Param("readers_passwd") String readers_passwd);
// 添加管理员
public void AddUser(@Param("user_code") String user_code, @Param("user_name") String user_name,
@Param("user_passwd") String user_passwd, @Param("user_state") Integer user_state);
// 添加读者
public void Addreader(@Param("readers_name") String readers_name, @Param("readers_passwd") String readers_passwd);
}
UserDao.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.UserDao" >
<!-- 查询管理员 -->
<select id="FindUser" parameterType="String" resultType="User">
select *
from sys_user
where user_code = #{user_code}
and user_passwd =#{user_passwd}
and user_state = '1'
</select>
<!-- 查询读者 -->
<select id="FindReader" parameterType="String" resultType="Reader">
select *
from readers
where readers_id = #{readers_id}
and readers_passwd =#{readers_passwd}
and readers_state = '0'
</select>
<!-- 添加管理员 -->
<insert id="AddUser" parameterType="User">
insert into
sys_user(user_code,user_name,user_passwd,user_state)
values(#{user_code},#{user_name},#{user_passwd},#{user_state})
</insert>
<!-- 添加读者 -->
<insert id="Addreader" parameterType="Reader">
insert into
readers(readers_name,readers_passwd,readers_state)
values(#{readers_name},#{readers_passwd},"0")
</insert>
</mapper>
service层:
UserServiceImpl.java:
package com.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.dao.UserDao;
import com.po.Reader;
import com.po.User;
import com.service.UserService;
@Service
@Transactional
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userdao;
// 查询管理员
@Override
public User FindUser(String user_code, String user_passwd) {
User user = userdao.FindUser(user_code, user_passwd);
return user;
}
// 添加管理员
@Override
public void AddUser(String user_code, String user_name, String user_passwd, Integer user_state) {
userdao.AddUser(user_code, user_name, user_passwd, user_state);
}
// 查询读者
@Override
public Reader FindReader(String readers_id, String readers_passwd) {
Reader findReader = userdao.FindReader(readers_id, readers_passwd);
return findReader;
}
// 添加读者
@Override
public void Addreader(String readers_name, String readers_passwd) {
userdao.Addreader(readers_name, readers_passwd);
}
}
controller层:
UserController.java:
package com.controller;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.po.Reader;
import com.po.User;
import com.service.*;
@Controller
public class UserController {
@Autowired
private UserService userservice;
// 登录
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login_get(User user) {
System.out.println("login_get");
return "login";
}
// 管理员登录
@ResponseBody
@RequestMapping(value = "/login1", method = RequestMethod.POST)
public String login1_post(@RequestBody User User, HttpSession session) {
System.out.println("login1_post");
User user = userservice.FindUser(User.getUser_code(), User.getUser_passwd());
if (user != null) {
session.setAttribute("USER_SESSION", user);
return "{\\"state\\":\\"0\\"}";
}
return "{\\"state\\":\\"1\\"}";
}
// 读者登录
@ResponseBody
@RequestMapping(value = "/login2", method = RequestMethod.POST)
public String login2_post(@RequestBody Reader Reader, HttpSession session) {
System.out.println("login2_post");
Reader reader = userservice.FindReader(Reader.getReaders_id(), Reader.getReaders_passwd());
if (reader != null) {
session.setAttribute("USER_SESSION", reader);
return "{\\"state\\":\\"0\\"}";
}
return "{\\"state\\":\\"1\\"}";
}
// 注册
@ResponseBody
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register_get() {
System.out.println("register_get");
return "login";
}
@ResponseBody
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register_post(@RequestBody User User) {
System.out.println("register_post");
User.setUser_state(1);
userservice.AddUser(User.getUser_code(), User.getUser_name(), User.getUser_passwd(), User.getUser_state());
return "{\\"state\\":\\"0\\"}";
}
@ResponseBody
@RequestMapping(value = "/register2", method = RequestMethod.POST)
public String register2_post(@RequestBody Reader Reader) {
System.out.println("register2_post");
userservice.Addreader(Reader.getReaders_name(),Reader.getReaders_passwd());;
return "{\\"state\\":\\"0\\"}";
}
// 管理员界面
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String home_get() {
System.out.println("home_get");
return "home";
}
// 读者借书界面
@RequestMapping(value = "/home2", method = RequestMethod.GET)
public String home2_get() {
System.out.println("home2_get");
return "home2_1";
}
// 读者还书界面
@RequestMapping(value = "/home2_2", method = RequestMethod.GET)
public String home2_2_get() {
System.out.println("home2_2_get");
return "home2_2";
}
// 退出
@RequestMapping(value = "/loginout", method = RequestMethod.GET)
public String loginout_get(HttpSession session) {
System.out.println("loginout_get");
session.invalidate();
return "login";
}
}
总结
实训的代码,适用于应付作业实训练习等。 代码下载链接(附带数据库):以上是关于Java实训项目--小型图书管理系统(ssm框架)的主要内容,如果未能解决你的问题,请参考以下文章
Java项目:图书管理系统设计和实现(java+ssm+mysql)