【Intellij IDEA】JAVA代码程序连接SQL Server 2022数据库实现简易的图书信息管理系统(学习交流)

前言

很早之前用C#连接SQL Server数据库做了个简易的图书信息管理系统,但是前几天我看了一下,代码不够完善,于是这次用JAVA重新写了一遍,代码功能更加完善。

同样的,可以参考我上篇文章(JAVA连接SQL数据库实现账号登录注册等功能),这次用的也是IDEA编程软件,java版本openjdk-21,maven3.9.6,SQL Server 2022。话不多说,直接开始,后面会附加源代码文件。

一、配置SQL数据库信息

在这里插入图片描述
1、配置数据库连接信息,创建“LIMS”图书馆信息管理系统(Library Information Management System),里面有5张表:

“用户信息”表:

在这里插入图片描述

“管理员信息”表:

在这里插入图片描述

“实名信息”表:

在这里插入图片描述

“图书信息”表:

在这里插入图片描述

“借阅信息”表:

在这里插入图片描述
2、这些数据库表大家可以手动去创建,也可以在源码文件里面还原这个“LIMS.bak”数据库文件,这个要是不会就去百度搜索!或者在IDEA项目里面执行这个“LIMS.sql”脚本文件(源代码里面会有这个文件)。
在这里插入图片描述

二、配置Maven

这个去看我的上一篇文章:目录:二、配置Maven,里面有。源代码里面也有Maven文件夹,可以直接使用,我不再赘述。

三、编写源代码

1、这个源代码不需要再去修改,但是一定要配置好数据库连接和Maven路径信息。

另外,这个resouurces文件夹里面的appilcation.properties文件里面的数据库连接信息记得修改一下。

在这里插入图片描述
2、这个Java项目里面我创建了7个类,由于代码量太多,不可能一次性发出来,这里只给出部分:

(1) 主类Main1,用户选择功能,可以选择账户登录和账号注册选项;进入程序的时候,会自动判断身份有用户逾期未还书的情况,自动更新数据库信息。

import java.sql.*;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class Main1 {
    
    
    public static Scanner scanner = new Scanner(System.in);
    public static UserAccount st = new UserAccount();
    public static AdminAccount sd = new AdminAccount();
    public static UserOperate sr = new UserOperate();
    public static AdminOperate se = new AdminOperate();

    //用户操作中心
    public static void UserCenter() throws SQLException {
    
    
        System.out.println("\n***************************** 用户操作中心 *******************************");
        System.out.println("***************************** 1、查询图书 ********************************");
        System.out.println("***************************** 2、借阅图书 ********************************");
        System.out.println("***************************** 3、归还图书 ********************************");
        System.out.println("***************************** 4、借阅记录 ********************************");
        System.out.println("***************************** 5、修改密码 ********************************");
        System.out.println("***************************** 6、注销用户 ********************************");
        System.out.println("***************************** 7、实名认证 ********************************");
        System.out.println("***************************** 8、退出登录 ********************************");
        System.out.println("***************************** 0、退出程序 ********************************");
        System.out.println("***************************************************************************");
        System.out.print("请输入选择:");
        String n5 = scanner.nextLine();
        switch (n5) {
    
    
            case "1": sr.UserLookupBook();
                break;
            case "2": sr.IsUserRealName();
                break;
            case "3": sr.IsBorrowedBook();
                break;
            case "4": sr.UserBorrowRecord();
                break;
            case "5": st.UserChange();
                break;
            case "6": st.IsBorrowBooks();
                break;
            case "7": st.IsUserRealName();
                break;
            case "8": Main1.Main2();
                break;
            case "0": System.exit(0);
                break;
            default:
                System.out.println("请重新输入选择!");
                UserCenter();
                break;
        }
    }

    //管理员操作中心
    public static void AdminCenter() throws SQLException {
    
    
        System.out.println("\n***************************** 管理员操作中心 *******************************");
        System.out.println("****************************** 1、查询图书 *********************************");
        System.out.println("****************************** 2、添加图书 *********************************");
        System.out.println("****************************** 3、修改图书 *********************************");
        System.out.println("****************************** 4、借阅信息 *********************************");
        System.out.println("****************************** 5、修改密码 *********************************");
        System.out.println("****************************** 6、注销账号 *********************************");
        System.out.println("****************************** 7、退出登录 *********************************");
        System.out.println("****************************** 0、退出程序 *********************************");
        System.out.println("****************************************************************************");
        System.out.print("请输入选择:");
        String n4 = scanner.nextLine();
        switch (n4) {
    
    
            case "1": se.AdminLookupBook();
                break;
            case "2": se.AdminAddBooks();
                break;
            case "3": se.IsExitsBooks();
                break;
            case "4": se.IsUserBorrowBooks();
                break;
            case "5": sd.AdminChange();
                break;
            case "6": sd.AdminDelete();
                break;
            case "7": Main2();
                break;
            case "0": System.exit(0);
                break;
            default: System.out.println("请重新输入选择!");
                AdminCenter();
                break;
        }
    }

    //首页
    public static void Main2() throws SQLException {
    
    
        System.out.println("\n*************************** 图书信息管理系统 *****************************");
        System.out.println("**************************** 1、账号登录 *********************************");
        System.out.println("**************************** 2、账号注册 *********************************");
        System.out.println("**************************** 0、退出程序 *********************************");
        System.out.println("***************************************************************************");
        System.out.print("请输入选择:");
        String n1 = scanner.nextLine();
        switch (n1) {
    
    
            case "1": SelectLogin();
                break;
            case "2": SelectRegister();
                break;
            case "0": System.exit(0);
                break;
            default: System.out.println("重新选择!");
                Main2();
                break;
        }
    }


(2) UserAccount类:用户账号管理,包括账号登录、账号注册、修改密码、注销账号、实名认证等功能;管理员用户和普通用户名不能一样;如果存在逾期未还图书的情况,则用户账号不可注销。


public class UserAccount {
    
    
    public Scanner scanner = new Scanner(System.in);
    public static String Comuser;//用来接收登录成功后的用户名,方便各种操作验证
    private static int count2 = 0;//定义一个计时器

    //用户登录功能
    public void UserLogin() throws SQLException {
    
    
        System.out.println("\n****************************** 用户登录 ***********************************");
        System.out.print("请输入用户名:");
        String username = scanner.next().trim();
        System.out.print("请输入用户密码:");
        String password = scanner.next().trim();
        try (Connection conn = ConnectString.ConnectionString()) {
    
    
            String sql = "SELECT * FROM 用户信息 WHERE 用户名 = ?";
            PreparedStatement stmt = conn.prepareStatement(sql);
            stmt.setString(1, username);
            ResultSet rs = stmt.executeQuery();
            if (rs.next()) {
    
    
                // 账号存在,继续判断密码是否正确
                IsUserPwd(username, password);
            }
            else {
    
    
                // 账号不存在
                IsUserRegister();
            }
        }
        catch (SQLException e) {
    
    
            e.printStackTrace();
        }
    }

(3) AdminAccount类:管理员账户操作功能,账号登录、账号注册、修改密码、注销账户。


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class AdminAccount {
    
    
    public Scanner scanner = new Scanner(System.in);
    public static String Adminuser;//用来接收登录成功后的管理员账号
    private static int count3 = 0;//定义一个计时器

    //管理员账户登录功能
    public void AdminLogin() {
    
    
        System.out.println("\n****************************** 管理员登录 ***********************************");
        System.out.print("请输入管理员账号:");
        String user = scanner.next();
        System.out.print("请输入管理员密码:");
        String pwd = scanner.next();
        try (Connection conn = ConnectString.ConnectionString()) {
    
    
            String sql = "SELECT * FROM 管理员信息 WHERE 管理员用户 = ?";
            PreparedStatement stmt = conn.prepareStatement(sql);
            stmt.setString(1, user);
            ResultSet rs = stmt.executeQuery();
            if (rs.next()) {
    
    
                // 账号存在,继续判断密码是否正确
                IsAdminPwd(user, pwd);
            }
            else {
    
    
                // 账号不存在
                IsAdminRegister();
            }
        }
        catch (SQLException e) {
    
    
            e.printStackTrace();
        }
    }
    

(4) UserOperate类:用户可操作功能,查询图书信息,用户可以根据不同方式查询相关图书的信息;借阅图书,借阅图书之前,要输入借书证号;然后要实名认证才可以借阅;然后会判断是否存在逾期未还图书的情况,如果存在,则不可借阅,必须要先归还后,方可继续正常借阅;用户借阅图书之前,如果用户已经借阅A图书,再未归还之前,不可再借阅A图书,其他图书可以正常借阅;归还图书,用户可以归还借阅的图书;查询借阅信息,用户可以查看直接的借阅信息记录。


import java.sql.*;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class UserOperate {
    
    

    public static Scanner scanner = new Scanner(System.in);
    private static int count1 = 0;//计时器
    private static String BookNum = "";     //图书编号
    private static String BookCard1 = "";       //借书证号
    private static final String NowDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));        //获取当前时间
    private static int BorrowBookCounts = 0;        //已借阅册数
    private static final int BackBookCounts = 0;            //已归还册数,默认为0
    private static final String OverDate = "否";        //是否逾期归还,默认为0
    private static final String IsBackAll = "否";       //是否全部归还借阅书籍,默认为0

    public void UserLookupBook() throws SQLException {
    
    
        System.out.println("\n****************************** 1、查询图书 *********************************");
        System.out.println("1、查询全部;2、按图书编号;3、按图书名称;4、按出版社;0、取消");
        System.out.print("请选择查询方式:");
        String ways = scanner.next();
        switch (ways) {
    
    
            case "1": LookBookAll();
                break;
            case "2": LookBookNum();
                break;
            case "3": LookBookName();
                break;
            case "4": LookBookPublish();
                break;
            case "0": Main1.UserCenter();
                break;
            default: System.out.println("请重新输入选择!");
                UserLookupBook();
                break;
        }
    }

(5) AdminOperate类:管理员对图书进行操作,查询图书;修改图书信息;添加图书信息;查看用户借阅记录。

import java.sql.*;
import java.util.Scanner;

public class AdminOperate {
    
    
    public static Scanner scanner = new Scanner(System.in);

    //管理员选择查询图书信息方式
    public void AdminLookupBook() throws SQLException {
    
    
        System.out.println("\n****************************** 1、查询图书 *********************************");
        System.out.println("1、查询全部;2、按图书编号;3、按图书名称;4、按出版社;0、取消");
        System.out.print("请选择查询方式:");
        String ways = scanner.next();
        switch (ways) {
    
    
            case "1": LookBookAll();
                break;
            case "2": LookBookNum();
                break;
            case "3": LookBookName();
                break;
            case "4": LookBookPublish();
                break;
            case "0": Main1.AdminCenter();
                break;
            default: System.out.println("请重新输入选择!");
                AdminLookupBook();
                break;
        }
    }

四、总结(附源码文件)

以上就是今天的全部内容了,花了一个星期左右完成的,功能相对比较简单。
感兴趣的小伙伴可以来看看,自己上手试一试,写一写
因为源代码比较长,所以没有全部发出来,感兴趣的小伙伴可以在下方链接领取。
链接:https://盘.百度.com/s/1mz4Av-aJ6m1AYOhwNk4ybw?pwd=YGJI
提取码:YGJI (链接文字改为拼音,复制整条链接打开手机百度网盘即可)

猜你喜欢

转载自blog.csdn.net/qq_60423778/article/details/135453905
今日推荐