图书管理系统(spring作业)

300 阅读4分钟

图书管理系统

image.png

百度云盘链接

代码和数据库就在这里哦

链接:https://pan.baidu.com/s/1AcNNbUEjAJ6pFo5s8CFulA?pwd=c6zr 
提取码:c6zr 
--来自百度网盘超级会员V6的分享

创建数据库

# 编码
utf8mb4

# 排序规则
utf8mb4_unicode_ci


# 创建数据库的时候,使用这个命令创建数据库
CREATE DATABASE `springbook` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


导入数据

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `id` int(11) NOT NULL,
  `bookName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `totalPage` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1000, 'MySQL DBA工作笔记', '杨建荣', 324, 1);
INSERT INTO `book` VALUES (1001, '算法(第四版)', '谢陆运', 425, 0);
INSERT INTO `book` VALUES (1002, 'Android第一行代码', '郭霖', 467, 1);
INSERT INTO `book` VALUES (1003, '鸟哥的Linux私房菜', '鸟哥', 721, 1);
INSERT INTO `book` VALUES (1004, 'JavaScript百炼成仙', '杨逸飞', 456, 0);

SET FOREIGN_KEY_CHECKS = 1;

部分代码示例

数据库连接 BaseDao

package com.swjd.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.sql.Connection;
import java.sql.DriverManager;

@Component
public class BaseDao {
    //数据源
    @Value("ncayu")
    private String userName;
    @Value("ncayu@168.com")
    private String password;
    @Value("jdbc:mysql://127.0.0.1:3306/springbook?useUnicode=true&characterEncoding=utf8&useSSL=false")
    private String url;
    @Value("com.mysql.jdbc.Driver")
    private String driverClass;
    
    //获取数据库连接的方法
    public Connection getConnection() throws  Exception{
        //加载数据库驱动
        Class.forName(driverClass);
        //获取连接
        Connection connection= DriverManager.getConnection(url,userName,password);
        
        return connection;
    }
    //关闭数据库连接的方法
    
}

特别注意这一个行参数:jdbc:mysql://127.0.0.1:3306/springbook?useUnicode=true&characterEncoding=utf8&useSSL=false"

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.swjd.yxl</groupId>
    <artifactId>springBook</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <scope>provided</scope>
        </dependency>
        <!--Spring测试模块-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
    </dependencies>
</project>

log4j文件

log4j.rootLogger=DEBUG, Console 
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  

log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG 

book

package com.swjd.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Book {
    private int id;
    private String bookName;
    private String author;
    private int totalPage;
    private int status;
}

BookController

package com.swjd.controller;

import com.swjd.service.BookServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class BookController {
    @Autowired
     BookServiceImpl bookServiceImpl;

    //显示全部书籍
    public void show1() throws Exception {
        bookServiceImpl.getAll();
    }
    //根据编号查询
    public void show2(int id) throws Exception {
        bookServiceImpl.getOneById(id);
    }
    //根据书名查询
    public void show3(String bookName) throws Exception {
        bookServiceImpl.getOneByName(bookName);
    }
    //根据编号查询
    public void show4(int status) throws Exception {
        bookServiceImpl.getMorByStatus(status);
    }
}


BookDao

package com.swjd.dao;

import java.sql.ResultSet;

public interface BookDao {
    //查询全部
    public abstract ResultSet getAllBook() throws Exception;
    //根据id查询
    public abstract ResultSet getBookById(int id) throws Exception;
    //根据书名查询
    public abstract ResultSet getBookByName(String bookName) throws Exception;
    //根据状态查询
    public abstract ResultSet getBookByStatus(int status) throws Exception;
}


BookDaoImpl

package com.swjd.dao;

import com.swjd.util.BaseDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

@Repository
public class BookDaoImpl implements BookDao{
    @Autowired
    private BaseDao baseDao;
    public ResultSet getAllBook() throws Exception {
        //1.获取链接
        Connection connection=baseDao.getConnection();
        //2.编写sql
        String sql="select * from book";
        //3.执行(造船)
        PreparedStatement ps=connection.prepareStatement(sql);
        //4.拿结果
        ResultSet rs=ps.executeQuery();
        return rs;
    }

    public ResultSet getBookById(int id) throws Exception {
        //1.获取链接
        Connection connection=baseDao.getConnection();
        //2.编写sql
        String sql="select * from book where id=?";
        //3.执行(造船)
        PreparedStatement ps=connection.prepareStatement(sql);
        ps.setInt(1,id);
        //4.拿结果
        ResultSet rs=ps.executeQuery();
        return rs;
    }

    public ResultSet getBookByName(String bookName) throws Exception {
        //1.获取链接
        Connection connection=baseDao.getConnection();
        //2.编写sql
        String sql="select * from book where bookName=?";
        //3.执行(造船)
        PreparedStatement ps=connection.prepareStatement(sql);
        ps.setString(1,bookName);
        //4.拿结果
        ResultSet rs=ps.executeQuery();
        return rs;
    }

    public ResultSet getBookByStatus(int status) throws Exception {
        //1.获取链接
        Connection connection=baseDao.getConnection();
        //2.编写sql
        String sql="select * from book where status=?";
        //3.执行(造船)
        PreparedStatement ps=connection.prepareStatement(sql);
        ps.setInt(1,status);
        //4.拿结果
        ResultSet rs=ps.executeQuery();
        return rs;
    }
}


BookService

package com.swjd.service;

import java.sql.ResultSet;

public interface BookService {
    //查询全部
    public abstract void getAll() throws Exception;
    //根据id查询
    public abstract void getOneById(int id) throws Exception;
    //根据书名查询
    public abstract void getOneByName(String bookName) throws Exception;
    //根据状态查询
    public abstract void getMorByStatus(int status) throws Exception;
}


BookServiceImpl

package com.swjd.service;

import com.swjd.dao.BookDaoImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.ResultSet;
import java.sql.SQLException;

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    BookDaoImpl bookDaolImpl;

    //拿全部数据,然后排版
    public void getAll() throws Exception {
        ResultSet rs=bookDaolImpl.getAllBook();
        //设置显示格式
        panBan(rs);
    }

    public void getOneById(int id) throws Exception {
        ResultSet rs=bookDaolImpl.getBookById(id);
        panBan(rs);
    }

    public void getOneByName(String bookName) throws Exception {
        ResultSet rs=bookDaolImpl.getBookByName(bookName);
        panBan(rs);
    }

    public void getMorByStatus(int status) throws Exception {
        ResultSet rs=bookDaolImpl.getBookByStatus(status);
        panBan(rs);
    }

    public void panBan(ResultSet rs) throws SQLException {
        if(rs.getRow()==-1){
            //表示没有查询到结果
            System.out.println("-------无查询结果-------");
        }else{
            System.out.println("编号\t\t\t书名\t\t\t作者\t\t\t总页数\t\t\t状态");
            while(rs.next()){
                if (rs.getRow()==-1){
                    //表示没有查询到结果
                    System.out.println("------无查询结果------");
                }else{
                    System.out.print(rs.getInt("id")+"\t\t\t"
                            +rs.getString("bookName")+"\t\t\t"
                            +rs.getString("author")+"\t\t\t"
                            +rs.getInt("totalPage")+"\t\t\t");
                    if (rs.getInt("status")==0){
                        System.out.println("借出");
                    }else if(rs.getInt("status")==1){
                        System.out.println("在库");
                    }else{
                        System.out.println("未知");
                    }
                }
            }
        }
    }
}


测试用例 MyText

package com.swjd.test;

import com.swjd.controller.BookController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

import java.util.Scanner;
@Component
public class MyTest {
    @Autowired
    BookController bookController;
    public static void main(String[] args) throws Exception {
        //1.启动容器
        ClassPathXmlApplicationContext context=
                new ClassPathXmlApplicationContext("applicationContext.xml");
        MyTest myTest=context.getBean("myTest",MyTest.class);
        myTest.start();
    }

    //图书查询系统的串联逻辑)(进入系统的方法)
    public void start() throws Exception {
        //扫描仪
        Scanner input=new Scanner(System.in);
        System.out.println("-----------------欢迎进入图书查询系统-----------------");
        printMenu();
        while (true){
            //用户输入选项,并且获取用户输入的值
            int userSelect=input.nextInt();
            //判断用户选择的值
            if (userSelect==5){
                System.out.println("成功退出系统,欢迎下次光临");
                break;
            }
            if (userSelect==1){
                bookController.show1();
                printMenu();
            }
            if (userSelect==2){
                System.out.println("请输入书籍编号:");
                int id=input.nextInt();
                bookController.show2(id);
                printMenu();
            }
            if (userSelect==3){
                System.out.println("请输入书籍名称:");
                String name=input.next();
                bookController.show3(name);
                printMenu();
            }
            if (userSelect==4){
                System.out.println("请输入书籍状态:0.借出  1.在库");
                int status=input.nextInt();
                bookController.show4(status);
                printMenu();
            }
        }
    }

    //选项菜单打印的方法
    public void printMenu(){
        System.out.println("请选择查询条件:1.查询全部\t" +
                "2.根据书籍编号查询\t" +
                "3.根据书名查询\t"+
                "4.根据状态查询\t"+
                "5.退出系统");
    }
}


写在最后

  • 时隔多年,jdk8依旧是开发首选
  • Eclipse 是一个开放源代码的、基于Java的可扩展开发平台,但是现在都2022年了,你不用idea这个工具吗?
  • 笔记本的性能越来越好,i7处理器12代,显卡3060,如果可以选择就选好一点的笔记本用作生产力工具。
  • Java语言是很强的,依旧是主流;Linux系统用作服务器,也是主流。