大学的第一个项目,JDBC实现图书管理系统

这是我大学期间做的第一个项目,用JDBC连接数据库实现图书管理系统,不是什么大项目,也上不了什么台面。刚起步,能力水平属实有限,之前无任何项目经历,做的不是很好,我也在不断学习中,如果哪里有需要改正或者写的不好的地方,欢迎大家评论区留言进行指正,我虚心接受各位大佬的批评。

在这里插入图片描述
以后几期的项目我也会以写博客的形式,跟大家分享我的学习经历和我的所学所得。

先给大家放一手我的构建目录
在这里插入图片描述
一共14个java文件,也是写了2天的代码了,差点去世。。。。。。。。。
在这里插入图片描述
对项目的简单介绍:
数据库中一共有4个表:管理员表、存放书的表、借还记录表、用户表。在eclipse控制台通过输入来增删查改数据库中表的数据,如图:
在这里插入图片描述
因为数据中有4个表所以我在项目里建了4个接口分别为:AdministratorDao、BookDao、RecordDao、UserDao。
以及这4个接口的实现类:AdministratorDaoImpl、BookDaoImpl、RecordDaoImpl、UserDaoImpl。
最后是4个封装类对应4个表,每个表的属性和数据库对应表的字段是一样的,分别是:Administrator、Book、Record、User。

数据库情况如图所示:
在这里插入图片描述
里面的 id字段我设置的是自增字段类型,但是在数据库里先删除再增加,id的值就会变,不是按顺序的,我也不知道这个问题如何解决~~,
比较头疼,好在对我整个功能实现并无太大影响。
在这里插入图片描述
BaseDao的话是一个关键的接口,里面说简单点存放的就是我上面说的4个接口的一些公共操作。
Test就是最终的实现类,运行这个类就能执行这个项目。

下面我将我的代码放给大家,比较多,大家按照我说的理解,我Test类写的注释还是相当良心的,不说了,下面放代码:

在这里插入图片描述

里面有些代码冗余比较多,可能比较乱,有些方法写的不是很好,肯定是有更好的解决方法,但总算基本功能是可以实现的,说到底还是我水平太低,我也一直在学习中~~,大家多担待担待。

在这里插入图片描述

com.etc.dao

BaseDao

package com.etc.dao;
 //将增删改查这4个操作的共有语句整理进来
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
    
    
		private static final String DRIVER="com.mysql.jdbc.Driver";
		//如果使用的是jdbc:mysql://127.0.0.1:3306/myschool;那么我们要注意必须将配置里面的远程访问打开
		private static final String URL="jdbc:mysql://localhost:3306/xiangmu";
		private static final String USERNAME="root";
		private static final String USERPWD="root";
		
		//获取连接对象
		public static Connection getConnection() {
    
    
			try {
    
    
				Class.forName(DRIVER);
			} catch (ClassNotFoundException e1) {
    
    
				e1.printStackTrace();
			}
			Connection conn=null;
			try {
    
    
				conn = DriverManager.getConnection(URL, USERNAME, USERPWD);
			} catch (SQLException e) {
    
    
				e.printStackTrace();
			}
			return conn;
		}
		                                                                      //代表多个Object对象
		public static PreparedStatement setParam(Connection conn,String sql,Object...param) throws SQLException{
    
    
			PreparedStatement pstmt=null;
			pstmt=conn.prepareStatement(sql);
			for(int i=0;i<param.length;i++) {
    
    
				pstmt.setObject(i+1, param[i]);
			}
			return pstmt;
		}
		
		
		//增删改的通用方法
		public static int exeUpdate(PreparedStatement pstmt) throws SQLException  {
    
    
			int result=0;
				//增删改都是对数据库的记录进行更改,他们都是使用executeUpdate这个方法来完成,返回值都是受影响行数
			result=pstmt.executeUpdate();
			return result;
			
		}
		
		
		public static void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs) {
    
    
			try {
    
    
				if(pstmt!=null) {
    
    
					pstmt.close();
				}
				if(conn!=null) {
    
    
					conn.close();
				}
				if(rs!=null) {
    
    
					rs.close();
				}
			} catch (SQLException e) {
    
    
				e.printStackTrace();
			}
		}
		
		
	
	
	
}

AdministratorDao

package com.etc.dao;

import java.util.List;

import com.etc.entity.Administrator;

import com.etc.entity.User;

public interface AdministratorDao {
    
    

	void administratorAdd(Administrator administrator);
	
	void administratorDel(int  id);
	
	void administratorUpdate(Administrator administrator);
	
	List<Administrator> administratorQuery();
	
	
	
}


BookDao

package com.etc.dao;

import java.util.List;

import com.etc.entity.Book;
import com.etc.entity.User;

public interface BookDao {
    
    

	void bookAdd(Book book);
	
	void bookDel(String  name);
	
	void bookUpdate(Book book);
	
	List<Book> bookQuery();
	
	
	
}

RecordDao

package com.etc.dao;

import java.util.List;

import com.etc.entity.Book;
import com.etc.entity.Record;
import com.etc.entity.User;

public interface RecordDao {
    
    

	void recordAdd(Record record);
	
	void recordDel(String  name);
	
	void recordUpdate(Record record);
	
	List<Record> recordQuery();
	
	
	
}

UserDao

package com.etc.dao;

import java.util.List;

import com.etc.entity.User;

public interface UserDao {
    
    

	void userAdd(User user);
	
	void userDel(String  name);
	
	void userUpdate(User user);
	
	List<User> userQuery();
	
	
	
}

com.etc.dao.impl

AdministratorDaoImpl

package com.etc.dao.impl;
import com.etc.dao.*;
import com.etc.entity.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.etc.dao.BaseDao;
import com.etc.dao.UserDao;
import com.etc.test.*;
public class AdministratorDaoImpl implements AdministratorDao {
    
    
	Administrator administrator=new Administrator();
	public void administratorAdd(Administrator administrator) {
    
    
	
		String sql="INSERT INTO administrator(id,account,password) VALUES(?,?,?)";
		Connection conn=null;
		PreparedStatement pstmt=null;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt=BaseDao.setParam(conn,sql,administrator.getId(),administrator.getAccount(),administrator.getPassword());
			int result=BaseDao.exeUpdate(pstmt);
			if(result>0) {
    
    
				System.out.println("插入成功!");
			}else {
    
    
				System.out.println("插入失败!");
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			BaseDao.closeAll(conn,pstmt,null);
		}
		

}

@Override
public void administratorDel(int  id) {
    
    
String sql="delete from user where id=?";
Connection conn=null;
PreparedStatement pstmt=null;
try {
    
    
	conn = BaseDao.getConnection();
	pstmt=BaseDao.setParam(conn,sql,administrator.getId());
	int result=BaseDao.exeUpdate(pstmt);
	if(result>0) {
    
    
		System.out.println("删除成功!");
	}else {
    
    
		System.out.println("删除失败!");
	}
} catch (SQLException e) {
    
    
	e.printStackTrace();
}finally {
    
    
	BaseDao.closeAll(conn,pstmt,null);
}

}

@Override
public void administratorUpdate(Administrator administrator) {
    
    
String sql="UPDATE administrator SET  account=? ,password=? WHERE id=?";
Connection conn=null;
PreparedStatement pstmt=null;
try {
    
    
	conn = BaseDao.getConnection();
	pstmt=BaseDao.setParam(conn,sql,administrator.getAccount(),administrator.getPassword(),administrator.getId());
	int result=BaseDao.exeUpdate(pstmt);
	if(result>0) {
    
    
		System.out.println("修改成功!");
	}else {
    
    
		System.out.println("修改失败!");
	}
} catch (SQLException e) {
    
    
	e.printStackTrace();
}finally {
    
    
	BaseDao.closeAll(conn,pstmt,null);
}

}

@Override
public List<Administrator> administratorQuery() {
    
    
		String sql="SELECT * from administrator";
		Connection conn=null;
		PreparedStatement pstmt=null;
		ResultSet rs=null;
		List<Administrator> list=new ArrayList<Administrator>();
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt=BaseDao.setParam(conn,sql);
			rs=pstmt.executeQuery();
			while(rs.next()) {
    
    
				int id=rs.getInt("id");
				String account=rs.getString("account");
				String password=rs.getString("password");
		
					list.add(new Administrator(id,account,password));

				
			}
			
				
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			try {
    
    
				if(rs!=null) {
    
    
					rs.close();
				}
				if(pstmt!=null) {
    
    
					pstmt.close();
				}
				if(conn!=null) {
    
    
					conn.close();
				}
			} catch (SQLException e) {
    
    
				e.printStackTrace();
			}
		}

return list;
}
}

BookDaoImpl

package com.etc.dao.impl;

import com.etc.dao.*;
import com.etc.entity.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.etc.dao.BaseDao;
import com.etc.dao.UserDao;
import com.etc.entity.Book;

public class BookDaoImpl implements BookDao {
    
    
	Book book = new Book();

	@Override
	public void bookAdd(Book book) {
    
    
		String sql = "INSERT INTO book(name,author,price) VALUES(?,?,?)";
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt = BaseDao.setParam(conn, sql, book.getName(), book.getAuthor(), book.getPrice());
			int result = BaseDao.exeUpdate(pstmt);
			if (result > 0) {
    
    
				System.out.println("插入成功!");
			} else {
    
    
				System.out.println("插入失败!");
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		} finally {
    
    
			BaseDao.closeAll(conn, pstmt, null);
		}

	}

	@Override
	public void bookDel(String name) {
    
    
		String sql = "delete from book where name=?";
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt = BaseDao.setParam(conn, sql, name);
			int result = BaseDao.exeUpdate(pstmt);
			if (result > 0) {
    
    
				System.out.println("删除成功!");
			} else {
    
    
				System.out.println("删除失败!");
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		} finally {
    
    
			BaseDao.closeAll(conn, pstmt, null);
		}

	}

	@Override
	public void bookUpdate(Book book) {
    
    
		String sql = "UPDATE book SET  name=? ,author=?,price=?	WHERE id=?";
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt = BaseDao.setParam(conn, sql, book.getName(), book.getAuthor(), book.getPrice(), book.getId());
			int result = BaseDao.exeUpdate(pstmt);
			if (result > 0) {
    
    
				System.out.println("更新成功!");
			} else {
    
    
				System.out.println("更新失败!");
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		} finally {
    
    
			BaseDao.closeAll(conn, pstmt, null);
		}

	}

	@Override
	public List<Book> bookQuery() {
    
    
		String sql = "SELECT * from book";
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		List<Book> list = new ArrayList<Book>();
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt = BaseDao.setParam(conn, sql);
			rs = pstmt.executeQuery();
			while (rs.next()) {
    
    
				int id = rs.getInt("id");
				String name = rs.getString("name");
				String author = rs.getString("author");
				int price = rs.getInt("price");
				list.add(new Book(id, name, author, price));
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		} finally {
    
    
			try {
    
    
				if (rs != null) {
    
    
					rs.close();
				}
				if (pstmt != null) {
    
    
					pstmt.close();
				}
				if (conn != null) {
    
    
					conn.close();
				}
			} catch (SQLException e) {
    
    
				e.printStackTrace();
			}
		}

		return list;

	}
 
	public void bookSelect(String name) {
    
         //图书模糊查询
		String sql = "SELECT * FROM book WHERE name LIKE ? ";
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		boolean flag=false;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt = BaseDao.setParam(conn, sql, "%" + name + "%");
			rs = pstmt.executeQuery();
			while(rs.next()) {
    
    
				flag=true;
				
				String bookname = rs.getString("name");
				System.out.println("《" + bookname + "》");
			} 
		if(!flag)	{
    
    
				System.out.println("书库中暂无该书信息!");  //如果书库中没有要查找的是
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		} finally {
    
    
			BaseDao.closeAll(conn, pstmt, null);
		}

	}
}

RecordDaoImpl

package com.etc.dao.impl;
import  com.etc.dao.*;
import com.etc.entity.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.etc.dao.BaseDao;
import com.etc.dao.UserDao;


public class RecordDaoImpl implements RecordDao {
    
    
        Record  record=new Record();
	@Override
	public void recordAdd(Record record) {
    
    
		String sql="INSERT INTO record(bookname,user) VALUES(?,?)";
		Connection conn=null;
		PreparedStatement pstmt=null;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt=BaseDao.setParam(conn,sql,record.getBookname(),record.getUser());
			int result=BaseDao.exeUpdate(pstmt);
			if(result>0) {
    
    
				System.out.println("借书成功!");
			}else {
    
    
				System.out.println("借书失败!");
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			BaseDao.closeAll(conn,pstmt,null);
		}
		

}

@Override
public void recordDel(String  name) {
    
    
String sql="delete from record where bookname=?";
Connection conn=null;
PreparedStatement pstmt=null;
try {
    
    
	conn = BaseDao.getConnection();
	pstmt=BaseDao.setParam(conn,sql,name);
	int result=BaseDao.exeUpdate(pstmt);
	if(result>0) {
    
    
		System.out.println("还书成功!");
	}else {
    
    
		System.out.println("还书失败!");
	}
} catch (SQLException e) {
    
    
	e.printStackTrace();
}finally {
    
    
	BaseDao.closeAll(conn,pstmt,null);
}

}

@Override
public void recordUpdate(Record record) {
    
    
String sql="UPDATE record SET bookname=?  WHERE user=?";
Connection conn=null;
PreparedStatement pstmt=null;
try {
    
    
	conn = BaseDao.getConnection();
	pstmt=BaseDao.setParam(conn,sql,record.getBookname(),record.getUser());
	int result=BaseDao.exeUpdate(pstmt);
	if(result>0) {
    
    
		System.out.println("更新成功!");
	}else {
    
    
		System.out.println("更新失败!");
	}
} catch (SQLException e) {
    
    
	e.printStackTrace();
}finally {
    
    
	BaseDao.closeAll(conn,pstmt,null);
}

}

@Override
public List<Record> recordQuery() {
    
    
		String sql="SELECT * from record";
		Connection conn=null;
		PreparedStatement pstmt=null;
		ResultSet rs=null;
		List<Record> list=new ArrayList<Record>();
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt=BaseDao.setParam(conn,sql);
			rs=pstmt.executeQuery();
			while(rs.next()) {
    
    
				int id=rs.getInt("id");
				String bookname=rs.getString("bookname");
				String user=rs.getString("user");
				System.out.println("id:"+id+" bookname: "+bookname+" user: "+user);
				list.add(new Record(id,bookname,user));
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			try {
    
    
				if(rs!=null) {
    
    
					rs.close();
				}
				if(pstmt!=null) {
    
    
					pstmt.close();
				}
				if(conn!=null) {
    
    
					conn.close();
				}
			} catch (SQLException e) {
    
    
				e.printStackTrace();
			}
		}

return list;
}

}

UserDaoImpl

package com.etc.dao.impl;
import com.etc.dao.*;
import com.etc.entity.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.etc.dao.BaseDao;
import com.etc.dao.UserDao;
import com.etc.entity.Book;
public class UserDaoImpl implements UserDao {
    
    
	User user=new User();
	@Override
	public void userAdd(User user) {
    
    
				String sql="INSERT INTO user(account,password) VALUES(?,?)";
				String sql1="SELECT * FROM  user WHERE account=?";
				Connection conn=null;
				PreparedStatement pstmt=null;
				PreparedStatement pstmt1=null;
				ResultSet rs=null;
				try {
    
    
					conn = BaseDao.getConnection();
					pstmt1=BaseDao.setParam(conn,sql1,user.getAccount()); //判断用户名是否已经存在
					rs=pstmt1.executeQuery();
					if(rs.next()) {
    
    
						System.out.println("对不起您要注册的用户已经存在!,请重新输入");
					}
					else 
					{
    
    
						
					pstmt=BaseDao.setParam(conn,sql,user.getAccount(),user.getPassword());
					int result=BaseDao.exeUpdate(pstmt);
					if(result>0) {
    
    
						System.out.println("插入成功!");
					}else {
    
    
						System.out.println("插入失败!");
					}
					}
				} catch (SQLException e) {
    
    
					e.printStackTrace();
				}finally {
    
    
					BaseDao.closeAll(conn,pstmt,null);
				}
				
		
	}

	@Override
	public void userDel(String  name) {
    
    
		String sql="delete from user where account=?";
		Connection conn=null;
		PreparedStatement pstmt=null;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt=BaseDao.setParam(conn,sql,name);
			int result=BaseDao.exeUpdate(pstmt);
			if(result>0) {
    
    
				System.out.println("删除成功!");
			}else {
    
    
				System.out.println("删除失败!");
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			BaseDao.closeAll(conn,pstmt,null);
		}

	}

	@Override
	public void userUpdate(User user) {
    
    
		String sql="UPDATE user SET  account=? ,password=? WHERE id=?";
		Connection conn=null;
		PreparedStatement pstmt=null;
		try {
    
    
			conn = BaseDao.getConnection();
			pstmt=BaseDao.setParam(conn,sql,user.getAccount(),user.getPassword(),user.getId());
			int result=BaseDao.exeUpdate(pstmt);
			if(result>0) {
    
    
				System.out.println("修改成功!");
			}else {
    
    
				System.out.println("修改失败!");
			}
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}finally {
    
    
			BaseDao.closeAll(conn,pstmt,null);
		}

	}

	@Override
	public List<User> userQuery() {
    
    
				String sql="SELECT * from user  ";
				Connection conn=null;
				PreparedStatement pstmt=null;
				ResultSet rs=null;
				List<User> list=new ArrayList<User>();
				try {
    
    
					conn = BaseDao.getConnection();
					pstmt=BaseDao.setParam(conn,sql);
					rs=pstmt.executeQuery();
					while(rs.next()) {
    
    
						int id=rs.getInt("id");
						String account=rs.getString("account");
						String password=rs.getString("password");
						list.add(new User(id,account,password));
					}
				} catch (SQLException e) {
    
    
					e.printStackTrace();
				}finally {
    
    
					try {
    
    
						if(rs!=null) {
    
    
							rs.close();
						}
						if(pstmt!=null) {
    
    
							pstmt.close();
						}
						if(conn!=null) {
    
    
							conn.close();
						}
					} catch (SQLException e) {
    
    
						e.printStackTrace();
					}
				}

		return list;
	}

}

com.etc.entity

Administrator

package com.etc.entity;

public class Administrator {
    
    
	private  int  id;//用户编号
	private String account;  //用户名
	private String password;  //密码
	public Administrator() {
    
    
		super();
	}
	public Administrator(int id, String account, String password) {
    
    
		super();
		this.id = id;
		this.account = account;
		this.password = password;
	}
	public int getId() {
    
    
		return id;
	}
	public void setId(int id) {
    
    
		this.id = id;
	}
	public String getAccount() {
    
    
		return account;
	}
	public void setAccount(String account) {
    
    
		this.account = account;
	}
	public String getPassword() {
    
    
		return password;
	}
	public void setPassword(String password) {
    
    
		this.password = password;
	}
	@Override
	public String toString() {
    
    
		return "Administrator [id=" + id + ", account=" + account + ", password=" + password + "]";
	}
	

}

Book

package com.etc.entity;

public class Book {
    
    
	private int id;//书名编号
	private String name;//书名
	private String author;//作者
	private int price;//价格
	public Book() {
    
    
		super();
	}
	public Book(int id, String name, String author, int price) {
    
    
		super();
		this.id = id;
		this.name = name;
		this.author = author;
		this.price = price;
	}
	
	public Book(String name, String author, int price) {
    
    
		super();
		this.name = name;
		this.author = author;
		this.price = price;
	}
	public int getId() {
    
    
		return id;
	}
	public void setId(int id) {
    
    
		this.id = id;
	}
	public String getName() {
    
    
		return name;
	}
	public void setName(String name) {
    
    
		this.name = name;
	}
	public String getAuthor() {
    
    
		return author;
	}
	public void setAuthor(String author) {
    
    
		this.author = author;
	}
	public int getPrice() {
    
    
		return price;
	}
	public void setPrice(int price) {
    
    
		this.price = price;
	}
	@Override
	public String toString() {
    
    
		return "Book [id=" + id + ", name=" + name + ", author=" + author + ", price=" + price + "]";
	}
	

}

Record

package com.etc.entity;

public class Record {
    
    
	private  int  id; //记录编号
	private  String bookname; //书名编号
	private String user; //用户名
	public Record() {
    
    
		super();
	}
	public Record(String bookname, String user) {
    
    
		super();
		this.bookname = bookname;
		this.user = user;
	}
	public Record(int id, String bookname, String user) {
    
    
		super();
		this.id = id;
		this.bookname = bookname;
		this.user = user;
	}
	@Override
	public String toString() {
    
    
		return "Record [id=" + id + ", bookname=" + bookname + ", user=" + user + "]";
	}
	public int getId() {
    
    
		return id;
	}
	public void setId(int id) {
    
    
		this.id = id;
	}
	public String getBookname() {
    
    
		return bookname;
	}
	public void setBookname(String bookname) {
    
    
		this.bookname = bookname;
	}
	public String getUser() {
    
    
		return user;
	}
	public void setUser(String user) {
    
    
		this.user = user;
	}
	
	

}

User

package com.etc.entity;

public class User {
    
    
	private int  id;//用户编号
	private String account;  //用户名
	private String password;  //密码
	public User() {
    
    
		super();
	}
	
	public User(String account, String password) {
    
    
		super();
		this.account = account;
		this.password = password;
	}

	public User(int id, String account, String password) {
    
    
		super();
		this.id = id;
		this.account = account;
		this.password = password;
	}
	public int getId() {
    
    
		return id;
	}
	public void setId(int id) {
    
    
		this.id = id;
	}
	public String getAccount() {
    
    
		return account;
	}
	public void setAccount(String account) {
    
    
		this.account = account;
	}
	public String getPassword() {
    
    
		return password;
	}
	public void setPassword(String password) {
    
    
		this.password = password;
	}
	@Override
	public String toString() {
    
    
		return "User [id=" + id + ", account=" + account + ", password=" + password + "]";
	}
	
	
	

}

com.etc.test

Test

package com.etc.test;

import com.etc.dao.impl.*;
import com.etc.entity.*;
import java.util.ArrayList;
import java.util.Scanner;

//图书管理系统
public class Test {
    
    
	public static void main(String[] args) throws Exception {
    
    
		boolean flag1 = false; // 判断用户名和密码是否正确
		boolean flag2 = true; // 判断是否回到主菜单
		ArrayList<Administrator> listAdministrator = new ArrayList(); // 存放管理员
		ArrayList<User> listUser = new ArrayList();// 存放用户
		ArrayList<Book> listBook = new ArrayList(); // 存放书
		BookDaoImpl bdi = new BookDaoImpl(); // 实现方法的对象
		UserDaoImpl udi = new UserDaoImpl();
		AdministratorDaoImpl adi = new AdministratorDaoImpl();
		RecordDaoImpl rdi = new RecordDaoImpl();
		User user = new User(); // 新建用户对象
		Administrator administrator = new Administrator();// 新建管理员对象
		Scanner sc = new Scanner(System.in);
		do {
    
     // 如果flag2=true就回到主菜单
			flag2 = false;// 重设flag2
			System.out.println("****************欢迎来到图书管理系统*************");
			System.out.println("\t\t(请输入1到6范围的整数)");
			System.out.println(
					"1.以管理员方式登录\t2.以普通用户方式登录" + "\n" + "3.展示书库内的所有书籍\t4.注册用户" + "\n" + "5.检索图书(模糊查询) \t6.退出系统");
			int num = sc.nextInt(); // 获取操作指令
			if (num > 6) {
    
     // 判断输入是否为1到6的数字
				System.out.println("请输入1到6的数字!");
				flag2 = true;

			}

			switch (num) {
    
    
			case 1:
				do {
    
      //管理员名或者密码输入错误返回此处
					System.out.print("管理员名:");
					String administratorname = sc.next();
					System.out.print("管理员密码:");
					String administratorpassword = sc.next();
					administrator.setAccount(administratorname); // 设置管理员名和管理员密码
					administrator.setPassword(administratorpassword);
					listAdministrator = (ArrayList<Administrator>) adi.administratorQuery();
					for (Administrator administrator1 : listAdministrator) {
    
    

						if ((administrator1.getAccount()).equals(administrator.getAccount()) // 判断数据库中是否存在输入的管理员名和密码
								&& (administrator1.getPassword()).equals(administrator.getPassword())) {
    
    
							System.out.println("登录成功!");
							System.out.println("当前管理员id为:" + administrator1.getId());
							flag1 = true;
							break;
						}

					}
					if (!flag1) {
    
              // 如果管理名或者密码输入错误
						System.out.println("管理名或者管理密码输入错误!请重新输入");

					}
				} while (!flag1);   //判定条件
				while (flag1) {
    
     // 如果登录成功
					System.out.println("请输入要进行的操作:\n1.添加用户\t2.删除用户\n3.添加书籍\t4.删除书籍\n5.修改管理员信息\t6.退出\n7.回到主菜单 ");
					int operate = sc.nextInt(); // 获取操作指令
					switch (operate) {
    
    
					case 1: // 添加用户
						System.out.println("请输入要添加的用户信息:");
						System.out.println("用户名:");
						String userName = sc.next();
						System.out.println("用户密码:");
						String userPassword = sc.next();
						User user1 = new User(userName, userPassword);
						udi.userAdd(user1); // 用户添加方法
						break;

					case 2:// 删除用户
						System.out.println("请输入要删除的用户名:");
						String delUserName = sc.next();
						udi.userDel(delUserName); // 用户删除方法
						break;
					case 3:// 添加书
						System.out.println("请输入要添加书的信息:(书名,作者,价格)");
						System.out.println("书名:");
						String bookName = sc.next();
						System.out.println("作者:");
						String bookAuthor = sc.next();
						System.out.println("价格:");
						int bookPrice = sc.nextInt();
						Book book1 = new Book(bookName, bookAuthor, bookPrice);
						bdi.bookAdd(book1); // 添加书方法
						break;
					case 4:// 删除书
						System.out.println("请输入要删除书的书名:");
						String delBookName = sc.next();
						bdi.bookDel(delBookName); // 删除书方法
						break;
					case 5:// 修改管理员信息
						System.out.println("请输入你要修改的管理员的id:");
						int updateAdministratorId = sc.nextInt();
						System.out.println("请输入修改后的管理员用户名:");
						String updateAdministratorName = sc.next();
						System.out.println("请输入修改后的管理员密码:");
						String updateAdministratorPassword = sc.next();
						Administrator administrator2 = new Administrator(updateAdministratorId, updateAdministratorName,
								updateAdministratorPassword);
						adi.administratorUpdate(administrator2);// 修改管理员信息方法
						break;
					case 6:
						System.out.println("退出成功!");
						System.exit(0);// 退出
						break;
					case 7: // 设置boolean条件,回到主菜单
						flag1 = false;
						flag2 = true;
						break;
					}

				}
				break;

			case 2: // 用户名登录
				do {
    
                                //用户员名或者密码输入错误返回此处
					System.out.print("用户名:");
					String username = sc.next();
					System.out.print("用户密码:");
					String userpassword = sc.next();
					user.setAccount(username); // 设置用户名和密码
					user.setPassword(userpassword);
					listUser = (ArrayList<User>) udi.userQuery();
					for (User user1 : listUser) {
    
    

						if ((user1.getAccount()).equals(user.getAccount()) // 判断数据库中是否存在输入的用户名和密码
								&& (user1.getPassword()).equals(user.getPassword())) {
    
    
							System.out.println("登录成功!");
							System.out.println("当前用户id为:" + user1.getId());
							flag1 = true;
							break;
						}

					}
					if (!flag1) {
    
     // 如果用户名或者密码输入错误
						System.out.println("用户名或者密码输入错误!请重新输入");

					}

				} while (!flag1);    //判定条件
				while (flag1) {
    
     // 如果成功登录
					System.out.println("请输入您需要的操作:\n1.借书\t2.还书\n3.修改用户信息\t4.退出系统\n5.回到主菜单");
					int operation = sc.nextInt();
					switch (operation) {
    
    
					case 1:// 借书
						System.out.println("请输入要借书的书名:");
						String bookName = sc.next();

						System.out.println("借书者:");
						String personName = sc.next();
						Record record1 = new Record(bookName, personName); // 书名和借书者
						rdi.recordAdd(record1);// 借书方法
						break;

					case 2:// 还书
						System.out.println("请输入要还书的图书书名:");
						String delBookName = sc.next();
						rdi.recordDel(delBookName);
						break;
					case 3:// 修改用户信息
						System.out.println("请输入要修改账户的id");
						int updateUserId = sc.nextInt();
						System.out.println("请输入修改后的用户名");
						String updateUserName = sc.next();
						System.out.println("请输入修改后的密码");
						String updateUserPassword = sc.next();
						User user2 = new User(updateUserId, updateUserName, updateUserPassword);
						udi.userUpdate(user2);
						break;
					case 4: // 退出系统
						System.out.println("退出系统成功!");
						System.exit(0);
						break;
					case 5:// 回到主菜单
						flag1 = false;
						flag2 = true;
						break;
					}
				}

				break;
			case 3: // 展示书库所有书籍
				listBook = (ArrayList<Book>) bdi.bookQuery();
				for (Book book1 : listBook) {
    
     // 遍历输出
					System.out.println("图书编号:" + book1.getId() + "," + " 书名:" + "《" + book1.getName() + "》" + ","
							+ " 作者:" + book1.getAuthor() + "," + "  价格:" + book1.getPrice() + "元");
				}
				flag2 = true; // 回到主菜单
				break;
			case 4: // 注册用户
				System.out.println("请输入要注册的用户信息:");
				System.out.println("用户名:");
				String userName = sc.next();
				System.out.println("用户密码:");
				String userPassword = sc.next();
				User user2 = new User(userName, userPassword);
				udi.userAdd(user2); // 用户注册
				flag2 = true; // 回到主菜单
				break;
			case 5: // 检索图书
				System.out.println("请输入要查询图书的书名:");
				String bookName = sc.next();
				bdi.bookSelect(bookName); // 检索图书方法
				System.out.println("是否回到主菜单?   1.回到主菜单    2.退出系统");
				int operation1 = sc.nextInt();
				if (operation1 == 1) {
    
    
					flag2 = true;
				} else {
    
    
					System.out.println("退出系统成功!");
					System.exit(0);
				}
				break;
			case 6:
				System.out.println("退出系统成功!期待您的下次使用");
				System.exit(0);
				break;
			}
		} while (flag2 == true);// 判断是否回到主菜单

	}

}

对总体功能进行描述:
1.数据库中的管理员表是内定的,管理员是无法被添加的,也无法被删除,但是可以修改管理员信息。
2.要借书必须先登录,有管理员登录和普通用户登录2种方式,没有账号的,第一次可以先注册。
3.管理员和用户要是密码或者用户名错误会跳出提示,要求重新输入,注册或者添加用户,是不允许用户名重名的,如果重名,会跳出提示。
4.查询图书的话支持模糊查询,不用输入全名,只需部分名字。要是书库中没有这个图书会显示,书库中无该书。
5.操作完毕可以选择返回主菜单。

其他实现方法没啥好说,无非就是增删改查,和嵌套增删改查,比较值得说的就是这个模糊查询见图:
在这里插入图片描述
还有一个是判断用户名是否存在,存在的话无法注册或者添加用户见图:
在这里插入图片描述
管理员登录成功后具有如下权限:
在这里插入图片描述
用户登录成功后具有如下权限:
在这里插入图片描述
(因为后面修改管理员和用户名是根据id修改的,所以我这里返回一个id

借书或者还书输入相应书名即可借书和还书。

整个项目功能差不多就是这样,我自己感觉比较不足的是,record这张表,也就是借还记录表,我没有创建借书还书日期date字段,应该再设立一个还书提醒时间,比如说规定借书不能超过2个月,当你借书的时候,会提示你应还日期。但是水平有限,这个我实在不会搞~~。
在这里插入图片描述

这篇博客就写到这里,CSDN大佬很多,我还是个新人,写的不好,欢迎大佬们对我指指点点
在这里插入图片描述

最后,博客写的不易,各位的点赞就是我创作的最大动力,我们下篇文章见

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bookssea/article/details/106062031
今日推荐