图书管理系统
百度云盘链接
代码和数据库就在这里哦
链接: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系统用作服务器,也是主流。