赞
踩
很早之前用C#连接SQL Server数据库做了个简易的图书信息管理系统,但是前几天我看了一下,代码不够完善,于是这次用JAVA重新写了一遍,代码功能更加完善。
同样的,可以参考我上篇文章(JAVA连接SQL数据库实现账号登录注册等功能),这次用的也是IDEA编程软件,java版本openjdk-21,maven3.9.6,SQL Server 2022。话不多说,直接开始,后面会附加源代码文件。
1、配置数据库连接信息,创建“LIMS”图书馆信息管理系统(Library Information Management System),里面有5张表:
“用户信息”表:
“管理员信息”表:
“实名信息”表:
“图书信息”表:
“借阅信息”表:
2、这些数据库表大家可以手动去创建,也可以在源码文件里面还原这个“LIMS.bak”数据库文件,这个要是不会就去百度搜索!或者在IDEA项目里面执行这个“LIMS.sql”脚本文件(源代码里面会有这个文件)。
这个去看我的上一篇文章:目录:二、配置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 (链接文字改为拼音,复制整条链接打开手机百度网盘即可)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。