From 94f3a29b1947f7ee55d682ad03987607e9ef09f9 Mon Sep 17 00:00:00 2001 From: CGW406 <13565294+cgw406@user.noreply.gitee.com> Date: Thu, 23 Apr 2026 10:23:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(=E5=80=9F=E4=B9=A6=E7=95=8C=E9=9D=A2):?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0=E4=B9=A6=E7=B1=8D=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在借书信息界面右侧新增推荐书籍面板,根据用户借阅记录智能推荐相关书籍。当无借阅记录时,随机推荐热门书籍。推荐面板包含书籍名称、分类、编号和状态等信息,并优化了界面布局和滚动条显示。 --- src/com/littleheap/DataBase/TableOperate.java | 542 ++++++++++++------ .../User/BorrowBook_Information.java | 124 +++- 2 files changed, 464 insertions(+), 202 deletions(-) diff --git a/src/com/littleheap/DataBase/TableOperate.java b/src/com/littleheap/DataBase/TableOperate.java index 3568f1d..e12c441 100644 --- a/src/com/littleheap/DataBase/TableOperate.java +++ b/src/com/littleheap/DataBase/TableOperate.java @@ -8,23 +8,23 @@ public class TableOperate { - //ݿѯģ + //���ݿ��ѯ����ģ�� public TableOperate() { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL"); + System.out.println("�ɹ�����MySQL������"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ⣡"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ⣡"); - String sql = "select * from temp"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ - System.out.println(""+"\t"+""+"\t"+""); + String sql = "select * from temp"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� + System.out.println("���"+"\t"+"����"+"\t"+"����"); while (rs.next()){ System.out.print(rs.getInt(1) + "\t"); System.out.print(rs.getString(2) + "\t"); @@ -40,23 +40,23 @@ public TableOperate() { } } - //Ƿڸû + //�Ƿ���ڸ��û� public static boolean isExist_Customer(String user,String password) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-isExist_Customer"); + System.out.println("�ɹ�����MySQL����-isExist_Customer"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-isExist_Customer"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-isExist_Customer"); - String sql = "select * from Customer"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ - System.out.println("û"+"\t"+"\t"+"\t"+""); + String sql = "select * from Customer"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� + System.out.println("�û���"+"\t"+"\t"+"\t"+"����"); while (rs.next()){ System.out.print(rs.getString(1) + "\t"); System.out.print(rs.getString(2) + "\t"); @@ -78,23 +78,23 @@ public static boolean isExist_Customer(String user,String password) { return false; } - //ǷڸùԱ + //�Ƿ���ڸù���Ա public static boolean isExist_Manager(String user,String password) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-isExist_Manager"); + System.out.println("�ɹ�����MySQL����-isExist_Manager"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-isExist_Manager"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-isExist_Manager"); - String sql = "select * from Manager"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ - System.out.println("û"+"\t"+"\t"+"\t"+""); + String sql = "select * from Manager"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� + System.out.println("�û���"+"\t"+"\t"+"\t"+"����"); while (rs.next()){ System.out.print(rs.getString(1) + "\t"); System.out.print(rs.getString(2) + "\t"); @@ -116,21 +116,21 @@ public static boolean isExist_Manager(String user,String password) { return false; } - //עû + //ע�����û� public static void regist_Customer(String user,String password) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-regist_Customer"); + System.out.println("�ɹ�����MySQL����-regist_Customer"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-regist_Customer"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-regist_Customer"); - String sql = "insert into Customer values('"+user+"','"+password+"');"; //ҪִеSQL + String sql = "insert into Customer values('"+user+"','"+password+"');"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -144,21 +144,21 @@ public static void regist_Customer(String user,String password) { } } - //ע¹Ա + //ע���¹���Ա public static void regist_Manager(String user,String password) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-regist_Manager"); + System.out.println("�ɹ�����MySQL����-regist_Manager"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-regist_Manager"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-regist_Manager"); - String sql = "insert into Manager values('"+user+"','"+password+"');"; //ҪִеSQL + String sql = "insert into Manager values('"+user+"','"+password+"');"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -172,21 +172,21 @@ public static void regist_Manager(String user,String password) { } } - //ıû + //�ı��û������� public static void changePassword_Customer(String user,String password,String newPassword) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-changePassword"); + System.out.println("�ɹ�����MySQL����-changePassword"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-changePassword"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-changePassword"); - String sql = "update Customer set customer_password = '"+newPassword+"' where customer_user = '"+user+"';"; //ҪִеSQL + String sql = "update Customer set customer_password = '"+newPassword+"' where customer_user = '"+user+"';"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -200,21 +200,21 @@ public static void changePassword_Customer(String user,String password,String ne } } - //ıԱ + //�ı����Ա������ public static void changePassword_Manager(String user,String password,String newPassword) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-changePassword"); + System.out.println("�ɹ�����MySQL����-changePassword"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-changePassword"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-changePassword"); - String sql = "update Manager set manager_password = '"+newPassword+"' where manager_user = '"+user+"';"; //ҪִеSQL + String sql = "update Manager set manager_password = '"+newPassword+"' where manager_user = '"+user+"';"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -228,23 +228,23 @@ public static void changePassword_Manager(String user,String password,String new } } - //Ƿڸû + //�Ƿ���ڸ��û��� public static boolean isExist_Customer_user(String user,String password) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-isExist_Customer"); + System.out.println("�ɹ�����MySQL����-isExist_Customer"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-isExist_Customer"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-isExist_Customer"); - String sql = "select * from Customer"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ - System.out.println("û"+"\t"+"\t"+"\t"+""); + String sql = "select * from Customer"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� + System.out.println("�û���"+"\t"+"\t"+"\t"+"����"); while (rs.next()){ System.out.print(rs.getString(1) + "\t"); System.out.print(rs.getString(2) + "\t"); @@ -266,23 +266,23 @@ public static boolean isExist_Customer_user(String user,String password) { return false; } - //ǷڸùԱ + //�Ƿ���ڸù���Ա���� public static boolean isExist_Manager_user(String user,String password) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-isExist_Manager"); + System.out.println("�ɹ�����MySQL����-isExist_Manager"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-isExist_Manager"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-isExist_Manager"); - String sql = "select * from Manager"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ - System.out.println("û"+"\t"+"\t"+"\t"+""); + String sql = "select * from Manager"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� + System.out.println("�û���"+"\t"+"\t"+"\t"+"����"); while (rs.next()){ System.out.print(rs.getString(1) + "\t"); System.out.print(rs.getString(2) + "\t"); @@ -304,21 +304,21 @@ public static boolean isExist_Manager_user(String user,String password) { return false; } - // + //�������� public static void insertBook(String number,String classnumber,String name,String classname,String price,String state,String total) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-insertBook"); + System.out.println("�ɹ�����MySQL����-insertBook"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-insertBook"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-insertBook"); - String sql = "insert into "+classname+"Book"+" values('"+number+"','"+classnumber+"','"+name+"','"+classname+"','"+price+"','"+state+"','"+total+"','null','null','null');"; //ҪִеSQL + String sql = "insert into "+classname+"Book"+" values('"+number+"','"+classnumber+"','"+name+"','"+classname+"','"+price+"','"+state+"','"+total+"','null','null','null');"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -332,21 +332,21 @@ public static void insertBook(String number,String classnumber,String name,Strin } } - //½ + //�½���� public static void newClass(String classnumber, String classname) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-newClass"); + System.out.println("�ɹ�����MySQL����-newClass"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-newClass"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-newClass"); - String sql = "CREATE TABLE "+classname+"Book(number VARCHAR(255) primary key,classnumber VARCHAR(255),name VARCHAR(255),classname VARCHAR(255),price VARCHAR(255),state VARCHAR(255),total VARCHAR(255),current VARCHAR(255),dateon VARCHAR(255),dateoff VARCHAR(255));"; //ҪִеSQL + String sql = "CREATE TABLE "+classname+"Book(number VARCHAR(255) primary key,classnumber VARCHAR(255),name VARCHAR(255),classname VARCHAR(255),price VARCHAR(255),state VARCHAR(255),total VARCHAR(255),current VARCHAR(255),dateon VARCHAR(255),dateoff VARCHAR(255));"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -360,21 +360,21 @@ public static void newClass(String classnumber, String classname) { } } - //ɾ鼮Ϣ + //ɾ���鼮��Ϣ public static void deleteBook(String number, String classname) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-deleteBook"); + System.out.println("�ɹ�����MySQL����-deleteBook"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-deleteBook"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-deleteBook"); - String sql = "delete from "+classname+"Book where number = '"+number+"';"; //ҪִеSQL + String sql = "delete from "+classname+"Book where number = '"+number+"';"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -388,24 +388,24 @@ public static void deleteBook(String number, String classname) { } } - //ѯijͼϢ + //��ѯij��ͼ����Ϣ public static void search_classname(String classname) { Information.bookarray.clear(); try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-search_classname"); + System.out.println("�ɹ�����MySQL����-search_classname"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-search_classname"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-search_classname"); - String sql = "select * from "+classname+"Book;"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ + String sql = "select * from "+classname+"Book;"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� while (rs.next()){ Book book = new Book(); book.number = rs.getString(1); @@ -429,21 +429,21 @@ public static void search_classname(String classname) { } } - //Ϣ + //���������Ϣ public static void borrowBook_Update(String classname,String number,String user,String dateoff) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-borrowBook_Customer"); + System.out.println("�ɹ�����MySQL����-borrowBook_Customer"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-borrowBook_Customer"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-borrowBook_Customer"); - String sql = "update "+classname+"Book set state = 'out' where number = '"+number+"';\n"; //ҪִеSQL + String sql = "update "+classname+"Book set state = 'out' where number = '"+number+"';\n"; //Ҫִ�е�SQL PreparedStatement stmts_state = conn.prepareStatement(sql); stmts_state.executeUpdate(); stmts_state.close(); @@ -466,21 +466,21 @@ public static void borrowBook_Update(String classname,String number,String user, } } - //ûݿ + //�����û����ݿ� public static void newCustomer(String user) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-newCustomer"); + System.out.println("�ɹ�����MySQL����-newCustomer"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-newCustomer"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-newCustomer"); - String sql = "CREATE TABLE "+user+"Customer (number VARCHAR(255) primary key,classname VARCHAR(255),name VARCHAR(255),dateoff VARCHAR(255));"; //ҪִеSQL + String sql = "CREATE TABLE "+user+"Customer (number VARCHAR(255) primary key,classname VARCHAR(255),name VARCHAR(255),dateoff VARCHAR(255));"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -494,21 +494,21 @@ public static void newCustomer(String user) { } } - //ע䵽ûϢ + //����ע�䵽�û���Ϣ public static void borrowBook_Insert(String classname,String number,String user,String dateoff) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-borrowBook_Insert"); + System.out.println("�ɹ�����MySQL����-borrowBook_Insert"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-borrowBook_Insert"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-borrowBook_Insert"); - String sql = "insert into "+user+"Customer values('"+number+"','"+classname+"','"+search_bookname(classname, number)+"','"+dateoff+"');"; //ҪִеSQL + String sql = "insert into "+user+"Customer values('"+number+"','"+classname+"','"+search_bookname(classname, number)+"','"+dateoff+"');"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -522,21 +522,21 @@ public static void borrowBook_Insert(String classname,String number,String user, } } - //鼮ݿϢ + //��������鼮���ݿ���Ϣ public static void returnBook_Update(String classname,String number,String user,String dateoff) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-returnBook_Update"); + System.out.println("�ɹ�����MySQL����-returnBook_Update"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-returnBook_Update"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-returnBook_Update"); - String sql = "update "+classname+"Book set state = 'in' where number = '"+number+"';\n"; //ҪִеSQL + String sql = "update "+classname+"Book set state = 'in' where number = '"+number+"';\n"; //Ҫִ�е�SQL PreparedStatement stmts_state = conn.prepareStatement(sql); stmts_state.executeUpdate(); stmts_state.close(); @@ -558,21 +558,21 @@ public static void returnBook_Update(String classname,String number,String user, e.printStackTrace(); } } - //ûݿϢ + //��������û������ݿ���Ϣ public static void returnBook_Delete(String number,String user) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-returnBook_Delete"); + System.out.println("�ɹ�����MySQL����-returnBook_Delete"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-returnBook_Delete"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-returnBook_Delete"); - String sql = "delete from "+user+"Customer where number = '"+number+"';"; //ҪִеSQL + String sql = "delete from "+user+"Customer where number = '"+number+"';"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -585,21 +585,21 @@ public static void returnBook_Delete(String number,String user) { e.printStackTrace(); } } - //ݿϢ + //��������������ݿ���Ϣ public static void prolongBook_Update(String classname,String number,String dateoff,String user) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-prolongBook_Update"); + System.out.println("�ɹ�����MySQL����-prolongBook_Update"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-prolongBook_Update"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-prolongBook_Update"); - String sql = "update "+classname+"Book set dateoff = '"+dateoff+"' where number = '"+number+"';\n"; //ҪִеSQL + String sql = "update "+classname+"Book set dateoff = '"+dateoff+"' where number = '"+number+"';\n"; //Ҫִ�е�SQL PreparedStatement stmts_state = conn.prepareStatement(sql); stmts_state.executeUpdate(); stmts_state.close(); @@ -617,24 +617,24 @@ public static void prolongBook_Update(String classname,String number,String date } } - //ѯͼϢ + //��ѯ����ͼ����Ϣ public static void search_personal(String user) { Information.bookarray.clear(); try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-search_personal"); + System.out.println("�ɹ�����MySQL����-search_personal"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-search_personal"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-search_personal"); - String sql = "select * from "+user+"Customer;"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ + String sql = "select * from "+user+"Customer;"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� while (rs.next()){ Book book = new Book(); book.number = rs.getString(1); @@ -651,22 +651,22 @@ public static void search_personal(String user) { e.printStackTrace(); } } - //ǷڸTable + //�Ƿ���ڸ�Table�� public static boolean isExist_Table(String table) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-isExist_Table"); + System.out.println("�ɹ�����MySQL����-isExist_Table"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-isExist_Table"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-isExist_Table"); - String sql = "show tables"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ + String sql = "show tables"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� while (rs.next()){ if(table.equals(rs.getString(1))) { return true; @@ -681,22 +681,22 @@ public static boolean isExist_Table(String table) { } return false; } - // + //�������� public static String search_bookname(String classname,String number) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-search_bookname"); + System.out.println("�ɹ�����MySQL����-search_bookname"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-search_bookname"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-search_bookname"); - String sql = "select * from "+classname+"book where number='"+number+"';"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ + String sql = "select * from "+classname+"book where number='"+number+"';"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� while (rs.next()){ return rs.getString(3); } @@ -710,22 +710,22 @@ public static String search_bookname(String classname,String number) { return "null"; } - //鼮״̬ + //�����鼮״̬ public static String search_bookstate(String classname,String number) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-search_bookstate"); + System.out.println("�ɹ�����MySQL����-search_bookstate"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-search_bookstate"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-search_bookstate"); - String sql = "select * from "+classname+"book where number='"+number+"';"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ + String sql = "select * from "+classname+"book where number='"+number+"';"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� while (rs.next()){ return rs.getString(6); } @@ -739,22 +739,22 @@ public static String search_bookstate(String classname,String number) { return "null"; } - //鼮 + //�����鼮�������� public static int search_bookdateoff(String classname,String number) { try{ - //Class.forName() + //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); - System.out.println("ɹMySQL-search_bookdateoff"); + System.out.println("�ɹ�����MySQL����-search_bookdateoff"); - String url=Information.JDBC_URL; //JDBCURL + String url=Information.JDBC_URL; //JDBC��URL Connection conn; conn = DriverManager.getConnection(url,Information.username,Information.password); - Statement stmt = conn.createStatement(); //Statement - System.out.println("ɹӵݿ-search_bookdateoff"); + Statement stmt = conn.createStatement(); //����Statement���� + System.out.println("�ɹ����ӵ����ݿ�-search_bookdateoff"); - String sql = "select * from "+classname+"book where number='"+number+"';"; //ҪִеSQL - ResultSet rs = stmt.executeQuery(sql);//ݶ + String sql = "select * from "+classname+"book where number='"+number+"';"; //Ҫִ�е�SQL + ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� while (rs.next()){ return Integer.parseInt(rs.getString(10)); } @@ -767,4 +767,178 @@ public static int search_bookdateoff(String classname,String number) { } return 0; } + + //��ȡ�û��Ľ�鼮���� + public static ArrayList getUserBorrowedClasses(String user) { + ArrayList classes = new ArrayList(); + try{ + Class.forName("com.mysql.jdbc.Driver"); + System.out.println("�ɹ�����MySQL����-getUserBorrowedClasses"); + + String url=Information.JDBC_URL; + Connection conn; + + conn = DriverManager.getConnection(url,Information.username,Information.password); + Statement stmt = conn.createStatement(); + System.out.println("�ɹ����ӵ����ݿ�-getUserBorrowedClasses"); + + String sql = "select distinct classname from "+user+"Customer;"; + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()){ + String className = rs.getString(1); + if(!classes.contains(className)) { + classes.add(className); + } + } + rs.close(); + stmt.close(); + conn.close(); + }catch(Exception e) + { + e.printStackTrace(); + } + return classes; + } + + //��ݶ�鼮����Ƽ�����ͼ�� + public static ArrayList getRecommendBooks(String user) { + ArrayList recommendBooks = new ArrayList(); + ArrayList borrowedClasses = getUserBorrowedClasses(user); + + //����û�н�鼮��¼�����Ƽ� + if(borrowedClasses.isEmpty()) { + return recommendBooks; + } + + //��ÿ�����e���в�ѯ�ɽ���ͼ�� + for(String className : borrowedClasses) { + try{ + Class.forName("com.mysql.jdbc.Driver"); + System.out.println("�ɹ�����MySQL����-getRecommendBooks"); + + String url=Information.JDBC_URL; + Connection conn; + + conn = DriverManager.getConnection(url,Information.username,Information.password); + Statement stmt = conn.createStatement(); + System.out.println("�ɹ����ӵ����ݿ�-getRecommendBooks"); + + //��ѯ���ø÷���еĿɽ���ͼ�� + String sql = "select * from "+className+"Book where state='in';"; + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()){ + Book book = new Book(); + book.number = rs.getString(1); + book.classnumber = rs.getString(2); + book.name = rs.getString(3); + book.classname = rs.getString(4); + book.price = rs.getString(5); + book.state = rs.getString(6); + book.total = rs.getString(7); + book.current = rs.getString(8); + book.dateon = rs.getString(9); + book.dateoff = rs.getString(10); + recommendBooks.add(book); + } + rs.close(); + stmt.close(); + conn.close(); + }catch(Exception e) + { + e.printStackTrace(); + } + } + + return recommendBooks; + } + + //��ȡ���н�鼮���� + public static ArrayList getAllBookClasses() { + ArrayList classes = new ArrayList(); + try{ + Class.forName("com.mysql.jdbc.Driver"); + System.out.println("�ɹ�����MySQL����-getAllBookClasses"); + + String url=Information.JDBC_URL; + Connection conn; + + conn = DriverManager.getConnection(url,Information.username,Information.password); + Statement stmt = conn.createStatement(); + System.out.println("�ɹ����ӵ����ݿ�-getAllBookClasses"); + + //��ѯ�������и�Book��β��� + String sql = "show tables;"; + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()){ + String tableName = rs.getString(1); + //ֻȡ��Book��β�����ⲻ��Customer��� + if(tableName.endsWith("Book") && !tableName.contains("Customer")) { + //ȥ��Book׺ + String className = tableName.substring(0, tableName.length() - 4); + if(!classes.contains(className)) { + classes.add(className); + } + } + } + rs.close(); + stmt.close(); + conn.close(); + }catch(Exception e) + { + e.printStackTrace(); + } + return classes; + } + + //�����г���Ƽ��ͼ�� + public static ArrayList getRandomRecommendBooks() { + ArrayList recommendBooks = new ArrayList(); + ArrayList allClasses = getAllBookClasses(); + + //�����з��� + if(allClasses.isEmpty()) { + return recommendBooks; + } + + //�Ӹ÷����в�ѯһЩ�ɽ���ͼ�� + for(String className : allClasses) { + try{ + Class.forName("com.mysql.jdbc.Driver"); + System.out.println("�ɹ�����MySQL����-getRandomRecommendBooks"); + + String url=Information.JDBC_URL; + Connection conn; + + conn = DriverManager.getConnection(url,Information.username,Information.password); + Statement stmt = conn.createStatement(); + System.out.println("�ɹ����ӵ����ݿ�-getRandomRecommendBooks"); + + //��ѯ���ø÷���еĿɽ���ͼ�� + String sql = "select * from "+className+"Book where state='in' limit 3;"; + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()){ + Book book = new Book(); + book.number = rs.getString(1); + book.classnumber = rs.getString(2); + book.name = rs.getString(3); + book.classname = rs.getString(4); + book.price = rs.getString(5); + book.state = rs.getString(6); + book.total = rs.getString(7); + book.current = rs.getString(8); + book.dateon = rs.getString(9); + book.dateoff = rs.getString(10); + recommendBooks.add(book); + } + rs.close(); + stmt.close(); + conn.close(); + }catch(Exception e) + { + e.printStackTrace(); + } + } + + return recommendBooks; + } } diff --git a/src/com/littleheap/User/BorrowBook_Information.java b/src/com/littleheap/User/BorrowBook_Information.java index a8ef8c7..d16162e 100644 --- a/src/com/littleheap/User/BorrowBook_Information.java +++ b/src/com/littleheap/User/BorrowBook_Information.java @@ -1,7 +1,9 @@ package com.littleheap.User; import javax.swing.JPanel; +import javax.swing.JScrollPane; +import com.littleheap.Book; import com.littleheap.MainInterface; import com.littleheap.DataBase.TableOperate; import com.littleheap.Static.Information; @@ -12,20 +14,27 @@ import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; + import javax.swing.JTextArea; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; +import javax.swing.border.TitledBorder; public class BorrowBook_Information extends JPanel implements ActionListener { private JButton back; private static JTextArea textArea; + private static JTextArea recommendTextArea; private static String info; + private static String recommendInfo; private JTextField tf_number; private JLabel lb_number; private JButton btn_borrow; private JLabel lb_dateoff; private JTextField tf_dateoff; + private JLabel lb_recommend; + private JPanel recommendPanel; /** * Create the panel. @@ -35,52 +44,88 @@ public BorrowBook_Information() { setLayout(null); back = new JButton("\u8FD4\u56DE"); - back.setFont(new Font("", Font.PLAIN, 26)); + back.setFont(new Font("����", Font.PLAIN, 26)); back.setBounds(0, 0, 115, 82); add(back); back.addActionListener(this); + //�����Լ���б��� textArea = new JTextArea(); - textArea.setFont(new Font("Monospaced", Font.PLAIN, 20)); - textArea.setBounds(152, 142, 1111, 782); - add(textArea); - + textArea.setFont(new Font("Monospaced", Font.PLAIN, 18)); + textArea.setBounds(152, 142, 800, 782); textArea.setEditable(false); + //�������ö� + JScrollPane scrollPane = new JScrollPane(textArea); + scrollPane.setBounds(152, 142, 800, 782); + scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + add(scrollPane); + lb_number = new JLabel("\u56FE\u4E66\u7F16\u53F7\uFF1A"); - lb_number.setFont(new Font("", Font.BOLD, 35)); + lb_number.setFont(new Font("����", Font.BOLD, 35)); lb_number.setBounds(152, 39, 185, 55); add(lb_number); tf_number = new JTextField(); - tf_number.setFont(new Font("", Font.BOLD, 35)); + tf_number.setFont(new Font("����", Font.BOLD, 35)); tf_number.setColumns(10); tf_number.setBounds(317, 29, 226, 75); add(tf_number); btn_borrow = new JButton("\u501F\u4E66"); - btn_borrow.setFont(new Font("", Font.BOLD, 35)); + btn_borrow.setFont(new Font("����", Font.BOLD, 35)); btn_borrow.setBounds(926, 26, 251, 80); add(btn_borrow); btn_borrow.addActionListener(this); lb_dateoff = new JLabel("\u671F\u9650\uFF1A"); - lb_dateoff.setFont(new Font("", Font.BOLD, 35)); + lb_dateoff.setFont(new Font("����", Font.BOLD, 35)); lb_dateoff.setBounds(575, 39, 185, 55); add(lb_dateoff); tf_dateoff = new JTextField(); - tf_dateoff.setFont(new Font("", Font.BOLD, 35)); + tf_dateoff.setFont(new Font("����", Font.BOLD, 35)); tf_dateoff.setColumns(10); tf_dateoff.setBounds(679, 29, 226, 75); add(tf_dateoff); - info = "ͼ ͼ ۸ ״̬ ȡ ֹ\n"; + //�����Ƽ������� + lb_recommend = new JLabel("\u4E66\u7C4D\u63A8\u8350"); + lb_recommend.setFont(new Font("����", Font.BOLD, 28)); + lb_recommend.setForeground(new Color(139, 69, 19)); + lb_recommend.setBounds(970, 130, 180, 40); + add(lb_recommend); + + //�����Ƽ������ӱ߿� + recommendPanel = new JPanel(); + recommendPanel.setLayout(null); + recommendPanel.setBackground(new Color(255, 248, 220)); + recommendPanel.setBorder(new TitledBorder(null, "�����Ƽ�", TitledBorder.LEADING, TitledBorder.TOP, new Font("����", Font.BOLD, 20), new Color(139, 69, 19))); + recommendPanel.setBounds(970, 170, 300, 750); + add(recommendPanel); + + //�����Ƽ�������б��� + recommendTextArea = new JTextArea(); + recommendTextArea.setFont(new Font("Monospaced", Font.PLAIN, 16)); + recommendTextArea.setEditable(false); + recommendTextArea.setBackground(new Color(255, 248, 220)); + recommendTextArea.setLineWrap(true); + recommendTextArea.setWrapStyleWord(true); + + //�����Ƽ�������ö� + JScrollPane recommendScrollPane = new JScrollPane(recommendTextArea); + recommendScrollPane.setBounds(10, 25, 280, 715); + recommendScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + recommendScrollPane.setBorder(null); + recommendPanel.add(recommendScrollPane); + + info = "ͼ���� ������ ͼ������ �������� �۸� ״̬ ��ȡ�� ��ֹ����\n"; + recommendInfo = ""; } public static void setTextArea() { - info = "ͼ ͼ ۸ ״̬ ȡ ֹ\n"; + info = "ͼ���� ������ ͼ������ �������� �۸� ״̬ ��ȡ�� ��ֹ����\n"; for(int i=0;i recommendBooks = TableOperate.getRecommendBooks(Information.user); + + //����û�н�鼮��¼�����ṩ�����Ƽ� + if(recommendBooks.isEmpty()) { + recommendBooks = TableOperate.getRandomRecommendBooks(); + } + + recommendInfo = ""; + + if(recommendBooks.isEmpty()) { + recommendInfo = "��ʱû�����Ƽ�����\n\n�����������ֲ���ͼ�飡"; + } else { + recommendInfo = "���������Ľ�鼮��¼��\nΪ���������Ƽ����룺\n\n"; + recommendInfo += "================================\n\n"; + + for(int i=0;i= 9) { //ֻ��ʾǰ10����Ƽ� + recommendInfo += "... ���м�Ƽ� ...\n"; + break; + } + } + + recommendInfo += "\n================================\n"; + recommendInfo += "��ʾ���������Ƽ����ɽ���"; + } + + recommendTextArea.setText(recommendInfo); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource() == back) { - //ذť + //������ذ�ť MainInterface.BorrowInfotoBorrow(); }if(e.getSource() == btn_borrow) { - //鰴ť - //жǷд + //������鰴ť + //���ж��Ƿ��д��� if(TableOperate.search_bookname(Information.search_classname, tf_number.getText()).equals("null")) { - JOptionPane.showMessageDialog(null, "Ϣ", "ʧ", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "���������Ϣ����", "����ʧ��", JOptionPane.ERROR_MESSAGE); tf_number.setText(""); tf_dateoff.setText(""); }else { - //жǷѱ + //�ж������Ƿ��ѱ���� if(TableOperate.search_bookstate(Information.search_classname, tf_number.getText()).equals("in")) { TableOperate.borrowBook_Update(Information.search_classname, tf_number.getText(), Information.user, tf_dateoff.getText().toString()); TableOperate.borrowBook_Insert(Information.search_classname, tf_number.getText(), Information.user, tf_dateoff.getText().toString()); tf_number.setText(""); tf_dateoff.setText(""); + //�������º����µ�Ƽ����� + setRecommendArea(); MainInterface.BorrowInfotoBorrow(); MainInterface.BorrowtoUser(); }else { - JOptionPane.showMessageDialog(null, "ѽ"+TableOperate.search_bookdateoff(Information.search_classname, tf_number.getText()), "ʧ", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "�����ѽ������"+TableOperate.search_bookdateoff(Information.search_classname, tf_number.getText()), "����ʧ��", JOptionPane.ERROR_MESSAGE); tf_number.setText(""); tf_dateoff.setText(""); } From ffad46f2389d52b8a6c2be4eb7930d635a635de9 Mon Sep 17 00:00:00 2001 From: CGW406 <13565294+cgw406@user.noreply.gitee.com> Date: Thu, 23 Apr 2026 10:51:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(=E5=9B=BE=E4=B9=A6=E7=AE=A1=E7=90=86):?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0=E4=BD=9C=E8=80=85=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=B9=B6=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在Book类中添加author字段,修改数据库表结构及相关操作 更新图书信息录入界面,增加作者输入框 修改图书推荐信息显示逻辑,处理空作者情况 --- src/com/littleheap/Book.java | 1 + src/com/littleheap/DataBase/TableOperate.java | 135 +++++-- src/com/littleheap/Manager/InsertBook.java | 365 +++++++++--------- .../User/BorrowBook_Information.java | 7 +- 4 files changed, 290 insertions(+), 218 deletions(-) diff --git a/src/com/littleheap/Book.java b/src/com/littleheap/Book.java index d3703a1..aa22ac9 100644 --- a/src/com/littleheap/Book.java +++ b/src/com/littleheap/Book.java @@ -5,6 +5,7 @@ public class Book { public String classnumber; public String name; public String classname; + public String author; public String price; public String state; public String total; diff --git a/src/com/littleheap/DataBase/TableOperate.java b/src/com/littleheap/DataBase/TableOperate.java index e12c441..a80b7fb 100644 --- a/src/com/littleheap/DataBase/TableOperate.java +++ b/src/com/littleheap/DataBase/TableOperate.java @@ -305,7 +305,7 @@ public static boolean isExist_Manager_user(String user,String password) { } //�������� - public static void insertBook(String number,String classnumber,String name,String classname,String price,String state,String total) { + public static void insertBook(String number,String classnumber,String name,String classname,String author,String price,String state,String total) { try{ //����Class.forName()���������������� Class.forName("com.mysql.jdbc.Driver"); @@ -318,7 +318,7 @@ public static void insertBook(String number,String classnumber,String name,Strin Statement stmt = conn.createStatement(); //����Statement���� System.out.println("�ɹ����ӵ����ݿ�-insertBook"); - String sql = "insert into "+classname+"Book"+" values('"+number+"','"+classnumber+"','"+name+"','"+classname+"','"+price+"','"+state+"','"+total+"','null','null','null');"; //Ҫִ�е�SQL + String sql = "insert into "+classname+"Book"+" values('"+number+"','"+classnumber+"','"+name+"','"+classname+"','"+author+"','"+price+"','"+state+"','"+total+"','null','null','null');"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -346,7 +346,7 @@ public static void newClass(String classnumber, String classname) { Statement stmt = conn.createStatement(); //����Statement���� System.out.println("�ɹ����ӵ����ݿ�-newClass"); - String sql = "CREATE TABLE "+classname+"Book(number VARCHAR(255) primary key,classnumber VARCHAR(255),name VARCHAR(255),classname VARCHAR(255),price VARCHAR(255),state VARCHAR(255),total VARCHAR(255),current VARCHAR(255),dateon VARCHAR(255),dateoff VARCHAR(255));"; //Ҫִ�е�SQL + String sql = "CREATE TABLE "+classname+"Book(number VARCHAR(255) primary key,classnumber VARCHAR(255),name VARCHAR(255),classname VARCHAR(255),author VARCHAR(255),price VARCHAR(255),state VARCHAR(255),total VARCHAR(255),current VARCHAR(255),dateon VARCHAR(255),dateoff VARCHAR(255));"; //Ҫִ�е�SQL PreparedStatement stmts = conn.prepareStatement(sql); stmts.executeUpdate(); @@ -406,27 +406,44 @@ public static void search_classname(String classname) { String sql = "select * from "+classname+"Book;"; //Ҫִ�е�SQL ResultSet rs = stmt.executeQuery(sql);//�������ݶ��� - while (rs.next()){ - Book book = new Book(); - book.number = rs.getString(1); - book.classnumber = rs.getString(2); - book.name = rs.getString(3); - book.classname = rs.getString(4); - book.price = rs.getString(5); - book.state = rs.getString(6); - book.total = rs.getString(7); - book.current = rs.getString(8); - book.dateon = rs.getString(9); - book.dateoff = rs.getString(10); - Information.bookarray.add(book); + ResultSetMetaData rsmd = rs.getMetaData(); + int columnCount = rsmd.getColumnCount(); + + //�����б����Ƿ���author�ֶ� + boolean hasAuthor = false; + for(int i=1; i<=columnCount; i++) { + if("author".equalsIgnoreCase(rsmd.getColumnName(i))) { + hasAuthor = true; + break; + } + } + + while (rs.next()){ + Book book = new Book(); + book.number = rs.getString("number"); + book.classnumber = rs.getString("classnumber"); + book.name = rs.getString("name"); + book.classname = rs.getString("classname"); + if(hasAuthor) { + book.author = rs.getString("author"); + } else { + book.author = "δ֪"; } - rs.close(); - stmt.close(); - conn.close(); - }catch(Exception e) - { - e.printStackTrace(); + book.price = rs.getString("price"); + book.state = rs.getString("state"); + book.total = rs.getString("total"); + book.current = rs.getString("current"); + book.dateon = rs.getString("dateon"); + book.dateoff = rs.getString("dateoff"); + Information.bookarray.add(book); } + rs.close(); + stmt.close(); + conn.close(); + }catch(Exception e) + { + e.printStackTrace(); + } } //���������Ϣ @@ -826,18 +843,35 @@ public static ArrayList getRecommendBooks(String user) { //��ѯ���ø÷���еĿɽ���ͼ�� String sql = "select * from "+className+"Book where state='in';"; ResultSet rs = stmt.executeQuery(sql); + ResultSetMetaData rsmd = rs.getMetaData(); + int columnCount = rsmd.getColumnCount(); + + //�����б����Ƿ���author�ֶ� + boolean hasAuthor = false; + for(int i=1; i<=columnCount; i++) { + if("author".equalsIgnoreCase(rsmd.getColumnName(i))) { + hasAuthor = true; + break; + } + } + while (rs.next()){ Book book = new Book(); - book.number = rs.getString(1); - book.classnumber = rs.getString(2); - book.name = rs.getString(3); - book.classname = rs.getString(4); - book.price = rs.getString(5); - book.state = rs.getString(6); - book.total = rs.getString(7); - book.current = rs.getString(8); - book.dateon = rs.getString(9); - book.dateoff = rs.getString(10); + book.number = rs.getString("number"); + book.classnumber = rs.getString("classnumber"); + book.name = rs.getString("name"); + book.classname = rs.getString("classname"); + if(hasAuthor) { + book.author = rs.getString("author"); + } else { + book.author = "δ֪"; + } + book.price = rs.getString("price"); + book.state = rs.getString("state"); + book.total = rs.getString("total"); + book.current = rs.getString("current"); + book.dateon = rs.getString("dateon"); + book.dateoff = rs.getString("dateoff"); recommendBooks.add(book); } rs.close(); @@ -916,18 +950,35 @@ public static ArrayList getRandomRecommendBooks() { //��ѯ���ø÷���еĿɽ���ͼ�� String sql = "select * from "+className+"Book where state='in' limit 3;"; ResultSet rs = stmt.executeQuery(sql); + ResultSetMetaData rsmd = rs.getMetaData(); + int columnCount = rsmd.getColumnCount(); + + //�����б����Ƿ���author�ֶ� + boolean hasAuthor = false; + for(int i=1; i<=columnCount; i++) { + if("author".equalsIgnoreCase(rsmd.getColumnName(i))) { + hasAuthor = true; + break; + } + } + while (rs.next()){ Book book = new Book(); - book.number = rs.getString(1); - book.classnumber = rs.getString(2); - book.name = rs.getString(3); - book.classname = rs.getString(4); - book.price = rs.getString(5); - book.state = rs.getString(6); - book.total = rs.getString(7); - book.current = rs.getString(8); - book.dateon = rs.getString(9); - book.dateoff = rs.getString(10); + book.number = rs.getString("number"); + book.classnumber = rs.getString("classnumber"); + book.name = rs.getString("name"); + book.classname = rs.getString("classname"); + if(hasAuthor) { + book.author = rs.getString("author"); + } else { + book.author = "δ֪"; + } + book.price = rs.getString("price"); + book.state = rs.getString("state"); + book.total = rs.getString("total"); + book.current = rs.getString("current"); + book.dateon = rs.getString("dateon"); + book.dateoff = rs.getString("dateoff"); recommendBooks.add(book); } rs.close(); diff --git a/src/com/littleheap/Manager/InsertBook.java b/src/com/littleheap/Manager/InsertBook.java index 750d6f8..bb4a13f 100644 --- a/src/com/littleheap/Manager/InsertBook.java +++ b/src/com/littleheap/Manager/InsertBook.java @@ -1,175 +1,190 @@ -package com.littleheap.Manager; - -import javax.swing.JPanel; -import javax.swing.JLabel; -import javax.swing.JOptionPane; - -import java.awt.Font; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.SwingConstants; - -import com.littleheap.MainInterface; -import com.littleheap.DataBase.TableOperate; - -import javax.swing.JTextField; -import javax.swing.JButton; -import java.awt.Color; - -public class InsertBook extends JPanel implements ActionListener{ - private JTextField tf_number; - private JLabel lb_number; - private JLabel lb_classnumber; - private JLabel lb_name; - private JLabel lb_classname; - private JLabel lb_price; - private JLabel lb_state; - private JLabel lb_total; - private JTextField tf_classnumber; - private JTextField tf_name; - private JTextField tf_classname; - private JTextField tf_price; - private JTextField tf_state; - private JTextField tf_total; - private JButton back; - private JButton btn_submit; - - /** - * Create the panel. - */ - public InsertBook() { - setBackground(Color.PINK); - setLayout(null); - - JLabel label = new JLabel("\u65B0\u4E66\u5F55\u5165"); - label.setHorizontalAlignment(SwingConstants.CENTER); - label.setFont(new Font("", Font.BOLD, 40)); - label.setBounds(530, 0, 294, 105); - add(label); - - lb_number = new JLabel("\u7F16\u53F7\uFF1A"); - lb_number.setFont(new Font("", Font.BOLD, 35)); - lb_number.setBounds(293, 137, 194, 55); - add(lb_number); - - tf_number = new JTextField(); - tf_number.setFont(new Font("", Font.BOLD, 35)); - tf_number.setColumns(10); - tf_number.setBounds(486, 127, 526, 75); - add(tf_number); - - lb_classnumber = new JLabel("\u5206\u7C7B\u7F16\u53F7\uFF1A"); - lb_classnumber.setFont(new Font("", Font.BOLD, 35)); - lb_classnumber.setBounds(293, 233, 194, 55); - add(lb_classnumber); - - lb_name = new JLabel("\u4E66\u540D\uFF1A"); - lb_name.setFont(new Font("", Font.BOLD, 35)); - lb_name.setBounds(293, 329, 194, 55); - add(lb_name); - - lb_classname = new JLabel("\u5206\u7C7B\u540D\u79F0\uFF1A"); - lb_classname.setFont(new Font("", Font.BOLD, 35)); - lb_classname.setBounds(293, 435, 194, 55); - add(lb_classname); - - lb_price = new JLabel("\u4EF7\u683C\uFF1A"); - lb_price.setFont(new Font("", Font.BOLD, 35)); - lb_price.setBounds(293, 521, 194, 55); - add(lb_price); - - lb_state = new JLabel("\u5165\u85CF\u72B6\u6001\uFF1A"); - lb_state.setFont(new Font("", Font.BOLD, 35)); - lb_state.setBounds(293, 617, 194, 55); - add(lb_state); - - lb_total = new JLabel("\u6570\u91CF\uFF1A"); - lb_total.setFont(new Font("", Font.BOLD, 35)); - lb_total.setBounds(293, 713, 194, 55); - add(lb_total); - - tf_classnumber = new JTextField(); - tf_classnumber.setFont(new Font("", Font.BOLD, 35)); - tf_classnumber.setColumns(10); - tf_classnumber.setBounds(486, 223, 526, 75); - add(tf_classnumber); - - tf_name = new JTextField(); - tf_name.setFont(new Font("", Font.BOLD, 35)); - tf_name.setColumns(10); - tf_name.setBounds(486, 319, 526, 75); - add(tf_name); - - tf_classname = new JTextField(); - tf_classname.setFont(new Font("", Font.BOLD, 35)); - tf_classname.setColumns(10); - tf_classname.setBounds(486, 415, 526, 75); - add(tf_classname); - - tf_price = new JTextField(); - tf_price.setFont(new Font("", Font.BOLD, 35)); - tf_price.setColumns(10); - tf_price.setBounds(486, 511, 526, 75); - add(tf_price); - - tf_state = new JTextField(); - tf_state.setFont(new Font("", Font.BOLD, 35)); - tf_state.setColumns(10); - tf_state.setBounds(486, 607, 526, 75); - add(tf_state); - - tf_total = new JTextField(); - tf_total.setFont(new Font("", Font.BOLD, 35)); - tf_total.setColumns(10); - tf_total.setBounds(486, 703, 526, 75); - add(tf_total); - - btn_submit = new JButton("\u63D0\u4EA4"); - btn_submit.setFont(new Font("", Font.BOLD, 35)); - btn_submit.setBounds(573, 833, 251, 80); - add(btn_submit); - btn_submit.addActionListener(this); - - back = new JButton("\u8FD4\u56DE"); - back.setFont(new Font("", Font.PLAIN, 26)); - back.setBounds(0, 0, 115, 82); - add(back); - back.addActionListener(this); - - } - - @Override - public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub - if(e.getSource() == back) { - //ذť - MainInterface.InserttoManager(); - }else if(e.getSource() == btn_submit) { - //ύť - //ж¼ϢǷͻ - String number = tf_number.getText(); - String classnumber = tf_classnumber.getText(); - String name = tf_name.getText(); - String classname = tf_classname.getText(); - String price = tf_price.getText(); - String state = tf_state.getText(); - String total = tf_total.getText(); - - if(TableOperate.search_bookstate(classname, number).equals("null")) { - //鼮Ϣ - TableOperate.insertBook(number, classnumber, name, classname, price, state, total); - tf_number.setText(""); - tf_classnumber.setText(""); - tf_name.setText(""); - tf_classname.setText(""); - tf_price.setText(""); - tf_state.setText(""); - tf_total.setText(""); - JOptionPane.showMessageDialog(null, "ϲ", "鼮¼ɹ", JOptionPane.OK_CANCEL_OPTION); - }else { - JOptionPane.showMessageDialog(null, "鼮Ϣͻ", "鼮¼ʧ", JOptionPane.ERROR_MESSAGE); - } - } - } -} +package com.littleheap.Manager; + +import javax.swing.JPanel; +import javax.swing.JLabel; +import javax.swing.JOptionPane; + +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.SwingConstants; + +import com.littleheap.MainInterface; +import com.littleheap.DataBase.TableOperate; + +import javax.swing.JTextField; +import javax.swing.JButton; +import java.awt.Color; + +public class InsertBook extends JPanel implements ActionListener{ + private JTextField tf_number; + private JLabel lb_number; + private JLabel lb_classnumber; + private JLabel lb_name; + private JLabel lb_classname; + private JLabel lb_author; + private JLabel lb_price; + private JLabel lb_state; + private JLabel lb_total; + private JTextField tf_classnumber; + private JTextField tf_name; + private JTextField tf_classname; + private JTextField tf_author; + private JTextField tf_price; + private JTextField tf_state; + private JTextField tf_total; + private JButton back; + private JButton btn_submit; + + /** + * Create the panel. + */ + public InsertBook() { + setBackground(Color.PINK); + setLayout(null); + + JLabel label = new JLabel("\u65B0\u4E66\u5F55\u5165"); + label.setHorizontalAlignment(SwingConstants.CENTER); + label.setFont(new Font("����", Font.BOLD, 40)); + label.setBounds(530, 0, 294, 105); + add(label); + + lb_number = new JLabel("\u7F16\u53F7\uFF1A"); + lb_number.setFont(new Font("����", Font.BOLD, 35)); + lb_number.setBounds(293, 120, 194, 55); + add(lb_number); + + tf_number = new JTextField(); + tf_number.setFont(new Font("����", Font.BOLD, 35)); + tf_number.setColumns(10); + tf_number.setBounds(486, 110, 526, 75); + add(tf_number); + + lb_classnumber = new JLabel("\u5206\u7C7B\u7F16\u53F7\uFF1A"); + lb_classnumber.setFont(new Font("����", Font.BOLD, 35)); + lb_classnumber.setBounds(293, 200, 194, 55); + add(lb_classnumber); + + lb_name = new JLabel("\u4E66\u540D\uFF1A"); + lb_name.setFont(new Font("����", Font.BOLD, 35)); + lb_name.setBounds(293, 280, 194, 55); + add(lb_name); + + lb_classname = new JLabel("\u5206\u7C7B\u540D\u79F0\uFF1A"); + lb_classname.setFont(new Font("����", Font.BOLD, 35)); + lb_classname.setBounds(293, 360, 194, 55); + add(lb_classname); + + lb_author = new JLabel("\u4F5C\u8005\uFF1A"); + lb_author.setFont(new Font("����", Font.BOLD, 35)); + lb_author.setBounds(293, 440, 194, 55); + add(lb_author); + + lb_price = new JLabel("\u4EF7\u683C\uFF1A"); + lb_price.setFont(new Font("����", Font.BOLD, 35)); + lb_price.setBounds(293, 520, 194, 55); + add(lb_price); + + lb_state = new JLabel("\u5165\u85CF\u72B6\u6001\uFF1A"); + lb_state.setFont(new Font("����", Font.BOLD, 35)); + lb_state.setBounds(293, 600, 194, 55); + add(lb_state); + + lb_total = new JLabel("\u6570\u91CF\uFF1A"); + lb_total.setFont(new Font("����", Font.BOLD, 35)); + lb_total.setBounds(293, 680, 194, 55); + add(lb_total); + + tf_classnumber = new JTextField(); + tf_classnumber.setFont(new Font("����", Font.BOLD, 35)); + tf_classnumber.setColumns(10); + tf_classnumber.setBounds(486, 190, 526, 75); + add(tf_classnumber); + + tf_name = new JTextField(); + tf_name.setFont(new Font("����", Font.BOLD, 35)); + tf_name.setColumns(10); + tf_name.setBounds(486, 270, 526, 75); + add(tf_name); + + tf_classname = new JTextField(); + tf_classname.setFont(new Font("����", Font.BOLD, 35)); + tf_classname.setColumns(10); + tf_classname.setBounds(486, 350, 526, 75); + add(tf_classname); + + tf_author = new JTextField(); + tf_author.setFont(new Font("����", Font.BOLD, 35)); + tf_author.setColumns(10); + tf_author.setBounds(486, 430, 526, 75); + add(tf_author); + + tf_price = new JTextField(); + tf_price.setFont(new Font("����", Font.BOLD, 35)); + tf_price.setColumns(10); + tf_price.setBounds(486, 510, 526, 75); + add(tf_price); + + tf_state = new JTextField(); + tf_state.setFont(new Font("����", Font.BOLD, 35)); + tf_state.setColumns(10); + tf_state.setBounds(486, 590, 526, 75); + add(tf_state); + + tf_total = new JTextField(); + tf_total.setFont(new Font("����", Font.BOLD, 35)); + tf_total.setColumns(10); + tf_total.setBounds(486, 670, 526, 75); + add(tf_total); + + btn_submit = new JButton("\u63D0\u4EA4"); + btn_submit.setFont(new Font("����", Font.BOLD, 35)); + btn_submit.setBounds(573, 780, 251, 80); + add(btn_submit); + btn_submit.addActionListener(this); + + back = new JButton("\u8FD4\u56DE"); + back.setFont(new Font("����", Font.PLAIN, 26)); + back.setBounds(0, 0, 115, 82); + add(back); + back.addActionListener(this); + + } + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + if(e.getSource() == back) { + //������ذ�ť + MainInterface.InserttoManager(); + }else if(e.getSource() == btn_submit) { + //����ύ��ť + //�ж�¼����Ϣ�Ƿ��ͻ + String number = tf_number.getText(); + String classnumber = tf_classnumber.getText(); + String name = tf_name.getText(); + String classname = tf_classname.getText(); + String author = tf_author.getText(); + String price = tf_price.getText(); + String state = tf_state.getText(); + String total = tf_total.getText(); + + if(TableOperate.search_bookstate(classname, number).equals("null")) { + //�����鼮��Ϣ + TableOperate.insertBook(number, classnumber, name, classname, author, price, state, total); + tf_number.setText(""); + tf_classnumber.setText(""); + tf_name.setText(""); + tf_classname.setText(""); + tf_author.setText(""); + tf_price.setText(""); + tf_state.setText(""); + tf_total.setText(""); + JOptionPane.showMessageDialog(null, "��ϲ", "�鼮¼��ɹ�", JOptionPane.OK_CANCEL_OPTION); + }else { + JOptionPane.showMessageDialog(null, "�鼮��Ϣ��ͻ", "�鼮¼��ʧ��", JOptionPane.ERROR_MESSAGE); + } + } + } +} diff --git a/src/com/littleheap/User/BorrowBook_Information.java b/src/com/littleheap/User/BorrowBook_Information.java index d16162e..fce8901 100644 --- a/src/com/littleheap/User/BorrowBook_Information.java +++ b/src/com/littleheap/User/BorrowBook_Information.java @@ -174,7 +174,12 @@ public static void setRecommendArea() { Book book = recommendBooks.get(i); recommendInfo += "【"+(i+1)+"】《"+book.name+"》\n"; recommendInfo += " ����ƣ�"+book.classname+"\n"; - recommendInfo += " ���룺����\n"; + //������ʾ������Ϣ���Ϊ�ջ�Ϊnull����ʾ"δ֪" + String author = book.author; + if(author == null || author.equals("") || author.equals("null")) { + author = "δ֪"; + } + recommendInfo += " ���룺"+author+"\n"; recommendInfo += " ״̣�"+(book.state.equals("in") ? "�ɽ���" : "�ѽ���")+"\n"; recommendInfo += " �༶��"+book.number+"\n\n";