java连接mysql数据库实现图书馆管理系统,零基础入门到精通,收藏这篇就够了
图书馆管理系统,具体功能包括:1. 用户登录2. 用户注册3. 新图书入库4. 图书信息查询5. 图书更新(修改)6. 旧图书删除7. 办理借阅证登记8. 图书借阅管理管理员表图书表读者表借阅表借阅表的外键关系javaBeanDBDao类Main类。
图书馆管理系统,具体功能包括:
1. 用户登录
2. 用户注册
3. 新图书入库
4. 图书信息查询
5. 图书更新(修改)
6. 旧图书删除
7. 办理借阅证登记
8. 图书借阅管理
完整项目:https://download.csdn.net/download/sger123/12887202
//数据库连接 MySQL:8.0.14
public class DBConnection {
public static final String DRIVER ="com.mysql.cj.jdbc.Driver";
public static final String URL="jdbc:mysql://localhost:3306/library_management_system?serverTimezone=GMT%2B8";
//library_management_system 是自己创建的数据库名字
// public static final String URL="jdbc:mysql://localhost:3306/library_management_system";mysql5.0的
public static final String USER="root";
public static final String PASSWORD="123456";
Connection conn =null;
public DBConnection(){
try{
Class.forName(DRIVER);
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
try{
conn= DriverManager.getConnection(URL,USER,PASSWORD);
}catch (SQLException e) {
e.printStackTrace();
}
}
public Connection getConnection(){
return this.conn;
}
public void close(){
if(this.conn!=null){
try{
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
管理员表
图书表
读者表
借阅表
借阅表的外键关系
javaBean
//图书类
public class Book {
private int book_id; //图书编号
private String book_name; //书名
private String book_author; //作者
private String book_press; //出版社
public Book(int book_id, String book_name, String book_author, String book_press) {
this.book_id = book_id;
this.book_name = book_name;
this.book_author = book_author;
this.book_press = book_press;
}
public int getBook_id() {
return book_id;
}
public void setBook_id(int book_id) {
this.book_id = book_id;
}
public String getBook_name() {
return book_name;
}
public void setBook_name(String book_name) {
this.book_name = book_name;
}
public String getBook_author() {
return book_author;
}
public void setBook_author(String book_author) {
this.book_author = book_author;
}
public String getBook_press() {
return book_press;
}
public void setBook_press(String book_press) {
this.book_press = book_press;
}
//读者类
public class User {
private int user_id; //借阅证
private String user_name;
private int user_age;
private String user_sex;
private String user_phone;
public User(int user_id, String user_name, int user_age, String user_sex, String user_phone) {
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.user_sex = user_sex;
this.user_phone = user_phone;
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public int getUser_age() {
return user_age;
}
public void setUser_age(int user_age) {
this.user_age = user_age;
}
public String getUser_sex() {
return user_sex;
}
public void setUser_sex(String user_sex) {
this.user_sex = user_sex;
}
public String getUser_phone() {
return user_phone;
}
public void setUser_phone(String user_phone) {
this.user_phone = user_phone;
}
}
//借阅类
public class Borrow {
private int user_id;
private int book_id;
public Borrow(int user_id, int book_id) {
this.user_id = user_id;
this.book_id = book_id;
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public int getBook_id() {
return book_id;
}
public void setBook_id(int book_id) {
this.book_id = book_id;
}
}
DBDao类
public class DBDao {
private DBConnection dbConnection = null;
private Connection conn = null;
/* private static String username;
private static String password;*/
static Scanner input = new Scanner(System.in);
public DBDao() {
this.dbConnection =new DBConnection();
this.conn = dbConnection.getConnection();
}
//管理员登陆
public boolean denglu(){
System.out.println("----管理员登录----");
System.out.println("输入用户名:");
String adminName=input.next();
System.out.println("输入密码:");
String adminPwd=input.next();
String sql="SELECT ADMIN_NAME,ADMIN_PWD FROM ADMIN WHERE ADMIN_NAME=? AND ADMIN_PWD=?";
PreparedStatement ptmt= null;
try {
ptmt = conn.prepareStatement(sql);
ptmt.setString(1, adminName);
ptmt.setString(2, adminPwd);
ResultSet rs=ptmt.executeQuery();
if (rs.next()) {
System.out.println("登录成功!");
return true;
} else {
System.out.println("账号或密码不正确,请重新登录!\n");
return false;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
//管理员注册
public boolean zhuce(){
System.out.println("----管理员注册----");
System.out.println("输入用户名:");
String adminName=input.next();
System.out.println("输入密码:");
String adminPwd1=input.next();
System.out.println("再次确认密码");
String adminPwd2=input.next();
if(adminPwd1.equals(adminPwd2)){
String password=adminPwd1;
String sql="INSERT INTO ADMIN(ADMIN_NAME,ADMIN_PWD) VALUES(?,?)";
PreparedStatement ptmt= null;
try {
ptmt = conn.prepareStatement(sql);
ptmt.setString(1, adminName);
ptmt.setString(2, password);
ptmt.execute();
System.out.println("注册成功!");
return true;
} catch (SQLException e) {
e.printStackTrace();
}
}else{
System.out.println("你输入的两次密码不一致,请重新注册!");
return false;
}
return false;
}
//新图书入库
public boolean insertBook(Book book){
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "insert into book(book_id,book_name,book_author,book_press) values(?,?,?,?)";
try {
pstmt = conn.prepareStatement(sql); //模糊查询
pstmt.setInt(1, book.getBook_id());
pstmt.setString(2,book.getBook_name());
pstmt.setString(3, book.getBook_author());
pstmt.setString(4,book.getBook_press());
if (pstmt.executeUpdate() > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
//查询所有图书信息
public boolean bookInof(){
Statement stmt =null;
String sql="select * from book";
try{
stmt=conn.createStatement();
//执行查询数据库的SQL语句 ,返回一个结果集(ResultSet)对象。
ResultSet Book = stmt.executeQuery(sql);
System.out.println("图书编号"+" 书名"+" " +
"作者"+" 出版社");
while(Book.next()){ //如果对象中有数据,就会循环打印出来
System.out.printf("%-10s",Book.getString("book_id"));
System.out.printf("%-30s",Book.getString("book_name"));
System.out.printf("%-20s",Book.getString("book_author"));
System.out.printf("%-20s\n",Book.getString("book_press"));
}
}catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return true;
}
//查询该图书编号图书信息
public boolean searchBook(int id){
PreparedStatement pstmt=null;
String sql="SELECT book_id,book_name,book_author,book_press FROM book WHERE book_id=?";
try{
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
System.out.println("图书编号:"+rs.getInt(1)+"\t"+"书名:"+rs.getString(2)+"\t"+"图书作者:"+rs.getString(3)+"\t"+"出版社:"+rs.getString(4));
}
}catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return true;
}
//用图书编号修改图书信息
public boolean bookUpdate(int id,Book book){
boolean flag=false;
PreparedStatement pstmt = null;
String sql="UPDATE book SET book_name=?,book_author=?,book_press=? WHERE book_id=?";
try{
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, book.getBook_name());
pstmt.setString(2, book.getBook_author());
pstmt.setString(3, book.getBook_press());
pstmt.setInt(4, book.getBook_id());
if (pstmt.executeUpdate() > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
//按编号删除旧图书
public boolean delelteBook(int id){
boolean flag=false;
PreparedStatement pstmt=null;
String sql="DELETE FROM book WHERE book_id=?";
try{
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, id); //接收id传入sql语句
if (pstmt.executeUpdate() > 0) { // 至少已经更新了一行
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
//办理借阅证
public boolean loanCard(User user){
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "insert into user(user_id,user_name,user_age,user_sex,user_phone) values(?,?,?,?,?)";
try {
pstmt = conn.prepareStatement(sql); //模糊查询
pstmt.setInt(1, user.getUser_id());
pstmt.setString(2, user.getUser_name());
pstmt.setInt(3, user.getUser_age());
pstmt.setString(4, String.valueOf(user.getUser_sex()));
pstmt.setString(5, user.getUser_phone());
if (pstmt.executeUpdate() > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
//用借书证搜索读者
public boolean searchUser(int id){
PreparedStatement pstmt=null;
String sql="SELECT user_id,user_name,user_age,user_sex,user_phone FROM user WHERE user_id=?";
try{
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
System.out.println("读者借书证号:"+rs.getInt(1)+"\t"+"读者姓名:"+rs.getString(2)+"\t"+"读者年龄:"+rs.getString(3)+"\t"+"读者性别"+rs.getString(4)+"\t"+"读者联系方式"+rs.getString(5));
}
}catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return true;
}
//搜索所有拥有借书证读者
public boolean userInof(){
Statement stmt =null;
String sql="select * from user";
try{
stmt=conn.createStatement();
//执行查询数据库的SQL语句 ,返回一个结果集(ResultSet)对象。
ResultSet Book = stmt.executeQuery(sql);
System.out.println("借书证号"+" 读者姓名"+" " +
"读者年龄"+" 读者性别"+" 联系方式");
while(Book.next()){ //如果对象中有数据,就会循环打印出来
System.out.printf("%-10s",Book.getString("user_id"));
System.out.printf("%20s",Book.getString("user_name"));
System.out.printf("%20s",Book.getString("user_age"));
System.out.printf("%20s",Book.getString("user_sex"));
System.out.printf("%20s\n",Book.getString("user_phone"));
}
}catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return true;
}
//借书
public boolean borrow(Borrow borrow){
if(serachBorrow(borrow.getBook_id())){
return false;
}
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "insert into borrow(user_id,book_id) values(?,?)";
try {
pstmt = conn.prepareStatement(sql); //模糊查询
pstmt.setInt(1, borrow.getUser_id());
pstmt.setInt(2,borrow.getBook_id());
if (pstmt.executeUpdate() > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
//还书
public boolean return_book(Borrow borrow){
boolean flag=false;
PreparedStatement pstmt=null;
String sql="DELETE FROM borrow WHERE user_id=? and book_id=?";
try{
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, borrow.getUser_id());
pstmt.setInt(2, borrow.getBook_id());
if (pstmt.executeUpdate() > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
//在借阅表中搜索该图书
public boolean serachBorrow(int book_id){
String sql="SELECT book_id FROM borrow WHERE book_id=?";
PreparedStatement ptmt= null;
try {
ptmt = conn.prepareStatement(sql);
ptmt.setInt(1, book_id);
ResultSet rs=ptmt.executeQuery();
if (rs.next()) {
System.out.println("图书已被借走!\n");
return true;
} else {
return false;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
}
Main类
public class Main {
public static Scanner scanner=new Scanner(System.in);
public static DBDao dbDao=new DBDao();
public static void main(String[] args) {
Main main=new Main();
System.out.println("欢迎使用图书馆管理系统");
System.out.println("1.登陆 2.注册");
System.out.println("请选择你要进行的操作:");
int choose1=scanner.nextInt();
switch (choose1){
case 1:
if( dbDao.denglu()){
main.caozuo();
}
break;
case 2:
if(dbDao.zhuce()){
dbDao.denglu();
}else{
System.out.println("注册失败");
}
break;
}
}
//登陆后才能进行操作
public void caozuo(){
int a=-1;
while(a==-1) {
System.out.println();
System.out.println("---------------------管理员操作-----------------------");
System.out.println(" 1.新图书入库\t" +
"2. 图书信息查询\t" +
"3. 图书更新(修改)\t" +
"4. 旧图书删除\t" +
"5. 办理借阅证登记\t" +
"6. 图书借阅管理\t" +
"7.退出操作");
System.out.println("请选择你要进行的操作:");
int choose2 = scanner.nextInt();
switch (choose2) {
case 1:
insertNewbook();
break;
case 2:
dbDao.bookInof();
break;
case 3:
updatebook();
break;
case 4:
deleteBook();
break;
case 5:
loanCard();
break;
case 6:
loanManagement();
break;
case 7:
a=0;
System.out.println("欢迎下次使用本系统");
break;
}
}
}
//新图书入库
public void insertNewbook() {
System.out.println("请输入要插入的图书编号:");
int book_id=scanner.nextInt();
System.out.println("请输入要插入的图书名称:");
String book_name=scanner.next();
System.out.println("请输入要插入的图书作者:");
String book_author=scanner.next();
System.out.println("请输入要插入的图书出版号:");
String book_press=scanner.next();
Book book=new Book(book_id,book_name,book_author,book_press);
if(dbDao.insertBook(book)){
System.out.println("新图书入库成功!");
}else{
System.out.println("新图书入库失败!");
}
}
//修改图书
public void updatebook(){
System.out.println("请输入要修改的图书的编号:");
int book_id=scanner.nextInt();
System.out.println("查询到该图书信息:");
dbDao.searchBook(book_id);
System.out.println("请输入修改后的图书名称:");
String book_name=scanner.next();
System.out.println("请输入修改后的图书作者:");
String book_author=scanner.next();
System.out.println("请输入修改后的图书出版号:");
String book_press=scanner.next();
Book book=new Book(book_id,book_name,book_author,book_press);
if(dbDao.bookUpdate(book_id,book)){
System.out.println("图书信息修改成功!");
}else{
System.out.println("图书信息修改失败!");
}
}
public void deleteBook() {
System.out.println("请输入要删除的图书编号");
int book_id=scanner.nextInt();
if(dbDao.delelteBook(book_id)){
System.out.println("删除成功!");
}else{
System.out.println("删除失败!");
}
}
//办理借阅证
public void loanCard(){
System.out.println("办理借阅证登记:");
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("MMDDmmss");
Date date=new Date();
int user_id = Integer.parseInt(simpleDateFormat.format(date));
System.out.println("请输入该读者的名字:");
String user_name=scanner.next();
System.out.println("请输入该读者的年龄:");
int user_age=scanner.nextInt();
System.out.println("请输入该用户的性别:");
String user_sex=scanner.next();
System.out.println("请输入该读者的联系方式:");
String user_phone=scanner.next();
Pattern p = Pattern.compile("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$");
Matcher m = p.matcher(user_phone);
if(m.matches()){
User user=new User(user_id,user_name,user_age,user_sex,user_phone);
if(dbDao.loanCard(user)){
System.out.println("借阅证登记成功!");
System.out.println("该读者的借书证号为"+user_id);
}else{
System.out.println("借阅证登记失败!");
}
}else{
System.out.println("输入的手机号格式不对");
System.out.println("借阅证登记失败!");
}
}
//图书借阅管理
public void loanManagement() {
System.out.println("1.借书 2.还书 3.读者信息");
System.out.println("请选择操作");
int choose3=scanner.nextInt();
switch (choose3){
case 1:
borrow(); //借书
break;
case 2:
return_book(); //还书
break;
case 3:
user();
break;
}
}
public void borrow() {
System.out.println("请输入该读者的借书证号:");
int user_id=scanner.nextInt();
System.out.println("请输入要借的图书编号:");
int book_id=scanner.nextInt();
Borrow borrow=new Borrow(user_id,book_id);
if(dbDao.borrow(borrow)){
System.out.println("借书成功");
}else{
System.out.println("借书失败");
}
}
public void return_book() {
System.out.println("请输入该读者的借书证号:");
int user_id=scanner.nextInt();
System.out.println("请输入要还的图书编号:");
int book_id=scanner.nextInt();
Borrow borrow=new Borrow(user_id,book_id);
if(dbDao.return_book(borrow)){
System.out.println("还书成功");
}else{
System.out.println("还书失败");
}
}
public void user() {
dbDao.userInof()
;
}
}
Java开发的就业市场正在经历结构性调整,竞争日益激烈
传统纯业务开发岗位(如仅完成增删改查业务的后端工程师)的需求,特别是入门级岗位,正显著萎缩。随着企业技术需求升级,市场对Java人才的要求已从通用技能转向了更深入的领域经验(如云原生、微服务)或前沿的AI集成能力。这也导致岗位竞争加剧,在一、二线城市,求职者不仅面临技术内卷,还需应对学历与项目经验的高门槛。
大模型为核心的AI领域正展现出前所未有的就业热度与人才红利
2025年,AI相关新发岗位数量同比激增543%,单月增幅最高超过11倍,大模型算法工程师位居热门岗位前列。行业顶尖人才的供需严重失衡,议价能力极强,跳槽薪资涨幅可达30%-50%。值得注意的是,市场并非单纯青睐算法研究员,而是急需能将大模型能力落地于复杂业务系统的工程人才。这使得具备企业级架构思维和复杂系统整合经验的Java工程师,在向“Java+大模型”复合人才转型时拥有独特优势,成为企业竞相争夺的对象,其薪资天花板也远高于传统Java岗位。

说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。
结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”
先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。
即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!
如何学习AGI大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**
一、2025最新大模型学习路线
一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场
L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程
L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践
L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
二、大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

三、大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

四、大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
更多推荐


所有评论(0)