首页 > 编程语言 >Java课程设计:基于Javaweb的图书管理系统(内附源码)

Java课程设计:基于Javaweb的图书管理系统(内附源码)

时间:2024-04-03 18:58:46浏览次数:35  
标签:username 课程设计 Java String request num 源码 public 图书

一、项目介绍

本系统由读者端和管理员端,读者端主要有主要有三大功能,借阅图书、归还图书和查看自己的借阅信息,管理员端主要有四个大的功能,对图书进行管理,对用户进行管理、对借阅信息进行管理、对图书分类进行管理。

整体功能模块图,如图所示:
在这里插入图片描述

  • 借还图书:读者对图书进行借阅与归还
  • 查看借阅信息:读者对自己借阅信息的查看,可以根据借阅信息归还图书
  • 图书管理:管理员对图书的管理,可以对图书进行增删改查。
  • 图书分类管理:管理员对图书类别的管理,可以对图书类别进行增删改查。
  • 借阅信息管理:管理员对所有读者用户的借阅信息可以进行查看,并且可以帮助读者点击归还。
  • 读者管理:管理员对所有读者用户进行管理,可以对读者信息进行增删改查。

二、项目技术栈

  • 后端:javaweb+jdk+tomcat8+mvc
  • 前端:jsp+css+js
  • 数据库:mysql

三、核心代码

用户实体类

public class AdminBean {
	public AdminBean() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	private int aid;//用户管理员id
	private int status;//用来判断是管理员还是读者,读者的值为1,管理员为2
	private String username;//账号,
	private String name;//读者的姓名
	private String password;//密码
	private String email;//邮箱
	private String phone;//手机号
	private int lend_num;//可借阅天数
	private int max_num;//最大可借数
	public int getAid() {
		return aid;
	}
	public void setAid(int aid) {
		this.aid = aid;
	}
	public int getStatus() {
		return status;
	}
	public void setStatus(int status) {
		this.status = status;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public int getLend_num() {
		return lend_num;
	}
	public void setLend_num(int lend_num) {
		this.lend_num = lend_num;
	}
	public int getMax_num() {
		return max_num;
	}
	public void setMax_num(int max_num) {
		this.max_num = max_num;
	}

}

用户登录

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	AdminDao userdao = new AdminDao();
	AdminDao admindao = new AdminDao();
	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

   
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//登录的判断
		//编码格式
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		//获取账号和密码
//		PrintWriter out = response.getWriter();
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println(username);
		
		//对账号和密码进行判断
		boolean result = userdao.Login_verify(username, password);
		System.out.println(result);
		HttpSession session = request.getSession();
		//判断输入正确
		if(result){
			AdminBean adminbean = new AdminBean();
			//更加账号和密码查找出读者的信息
			adminbean = admindao.getAdminInfo(username,password);
			//将aid存入session中
			session.setAttribute("aid", ""+adminbean.getAid());
			//设置session的失效时间
			session.setMaxInactiveInterval(6000);
			//根据status的值来判断是管理员,还是读者,status=1为读者
			System.out.println(adminbean.getStatus());
			if(adminbean.getStatus()==1){
				response.sendRedirect("index2.jsp");
			}else{
				response.sendRedirect("admin.jsp");
			}
		}else{
			//没有找到对应的账号和密码,返回重新登录
			session.setAttribute("state", "密码错误");
			response.sendRedirect("login.jsp");
		}
	
	}

}

数据库连接配置


public class DbUtil {

	public static String username = "root";
	public static String pwd = "abc123456";
	public static String url = "jdbc:mysql://localhost:3307/books?serverTimezone=UTC";
	
	static{
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch(ClassNotFoundException e){
			e.printStackTrace();
		}
	}
	
	public static Connection getConn(){
		Connection conn = null;
		try{
			conn = DriverManager.getConnection(url,username,pwd);
		
		} catch (SQLException e){
			e.printStackTrace();
		}
		return conn;
	}
	
	public static void CloseDB(ResultSet rs, PreparedStatement stm, Connection conn){
		if(rs!=null)
		{
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(stm!=null)
		{
			try {
				stm.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(conn!=null)
		{
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

注册操作

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public RegisterServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		doGet(request, response);
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		
		//获取注册信息
		AdminDao userdao = new AdminDao();
		
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String name = request.getParameter("name");
		String email = request.getParameter("email");
		String phone = request.getParameter("phone");
		
		System.out.println(username);
		//默认设置最大借阅数和借阅天数
		int lend_num = 30;
		int max_num = 5;
	

		//将注册信息存入数据库,再返回登录
		userdao.Register(username,password,name,email,phone,lend_num,max_num);
        response.sendRedirect("login.jsp");
	}
}

四、项目展示

系统主框架
在这里插入图片描述
图书管理主页面
在这里插入图片描述
增加图书页面
在这里插入图片描述
修改图书页面
在这里插入图片描述
读者管理主页面
在这里插入图片描述
添加读者页面
在这里插入图片描述
图书分类管理主页面
在这里插入图片描述
图书借阅信息管理主页面

在这里插入图片描述
帮助读者归还图书页面
在这里插入图片描述
读者借阅图书页面
在这里插入图片描述

五、源代码

打包为压缩包了,后台私我发给你!

标签:username,课程设计,Java,String,request,num,源码,public,图书
From: https://blog.csdn.net/2401_84040513/article/details/137272314

相关文章

  • Java登陆第三十七天——VUE3插值表达式、文本渲染、属性渲染、事件绑定
    插值表达式VUE中最基本的数据绑定形式。语法格式如下:{{数据来源}}插值表达式的特点:不依靠标签。可以调用函数。支持运算符。栗子App.vue<scriptsetup>letmsg="字符串";letnum=10;functionf1(){return"有返回值的方法"}letf2=()=>{......
  • 详解volatile 关键字的作用,Java 中能创建 volatile 数组吗
    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点面试官:volatile关键字的作用可见性:当一个线程修改了volatile变量的值,这个新值对于其他线程是立即可见的。这是因为在多线程环境下,线程在修改volatile变量的值时......
  • Java基础学习: hutool之CollUtil集合操作工具类
    文章目录一、介绍二、Hutool集合操作示例1、判断是否为空:2、判断是否非空3、集合是否包含某个元素4、集合是否包含某些元素5、集合是否不包含某些元素6、两个集合的交集操作7、两个集合的并集操作8、两个集合的差集操作9、集合元素是否相等10、集合转换为字符串,列表转为......
  • Python实现【贪吃蛇大作战】+源码
    文章目录前言:一、游戏概述1.游戏玩法2.游戏特色二、游戏规则三、工具选择四、主要技术pygame库numpy库cocos2d五、源码分享六、项目地址前言:今天的GitHub小游戏分享,我们将聚焦于一个经典而又极富趣味性的游戏——贪吃蛇大作战。这款游戏不仅考验玩家的反应速度......
  • JAVA语言学习-Day2
    参考教学视频:秦疆Java流程控制Scanner工具包(java5新特性)Scanners=newScanner(System.in);//创建对象,接收接盘数据if(s.hasNext()){  Stringa=s.next();}if(s.hasNextLine()){  Stringa=s.nextLine();}s.close();if选择结构if(boolean){  }elseif(bool......
  • Java代码实现带时区时间字符串转为LocalDateTime对象
    不带时区时间字符串可以使用Java8中的DateTimeFormatter类来将字符串转换为LocalDateTime对象。下面是一个示例代码:importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;publicclassDateTimeConversionExample{publicstaticvoidmain(Stri......
  • 如何使用Docker中构建Java jar包,并且实现开启自启
    Docker中构建JavaJAR包要在Docker容器中构建Java应用程序的JAR包,你可以遵循以下步骤:创建一个Dockerfile:在你的项目根目录下创建一个名为Dockerfile的文件,用来定义Docker镜像的构建过程。#使用官方的Java11镜像作为基础镜像FROMopenjdk:11#设置工作目录WORK......
  • 在 Java 中对List进行分区
    1.概述在本文中,我们将说明如何将一个列表拆分为多个给定大小的子列表。对于这个相对简单的操作,标准Java集合API竟然不支持它。幸运的是,Guava和Apache-Commons都提供了对应的API。2.使用Guava对List进行分区Guava通过Lists.partition操作将List划分为指定......
  • zookeeper监听集群节点的实现zkclient组件实现方案(Java版)
    ZooKeeperWatcher机制client向zookeeper注册监听client注册的同时会存储一个WatchManager对象向zookeeper发生改变则notificationclient并发送一个WatchManager对象,然后client再更新该对象packagecom.jacky.zk.demo;importorg.I0Itec.zkclient.IZkChildListen......
  • 基于Spring Cloud + Spring Boot的企业电子招标采购系统源码
     随着企业的快速发展,招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求,建立一个公平、公开、公正的采购环境至关重要。在这个背景下,我们开发了一款电子招标采购软件,以最大限度地控制采购成本,提高招投标工作的公开性和透明性,并确保符合国家电子招投......