• 基于Java swing+mysql+eclipse的【图书管理系统】


    本项目为Java swing项目,在工作环境中基本使用不到,但是很多学校把这个当做编程入门的项目来做,故分享出本项目供初学者参考。

    CSDN赞助下载:https://download.csdn.net/download/weixin_44893902/20367467

    一、效果演示:

    主要功能:

    ①基本数据维护:
    图书类别管理 >> 图书类别添加、图书类别维护
    图书管理 >> 图书添加、图书维护
    ②关于我们
    在这里插入图片描述

    1、登录界面

    在这里插入图片描述

    2、主界面:

    在这里插入图片描述

    3、图书类别维护

    在这里插入图片描述

    4、图书类别添加

    在这里插入图片描述

    5、图书维护

    在这里插入图片描述

    6、图书添加

    在这里插入图片描述

    7、关于我们

    在这里插入图片描述
    可全部缩小到左下角
    在这里插入图片描述

    二、核心代码:

    1、Util包 【存放数据库连接工具】

    ① DBTool(数据库连接工具类)

    package cn.ac.azure.util;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    /**
     * 数据库连接工具类
     * @author 
     *
     */
    public class DBTool {
    	private static String driver;  //数据库驱动
    	private static String url;  //数据库连接地址
    	private static String user; //数据库连接用户
    	private static String password;  //数据库连接密码
    	
    	static{
    		//新建一个properties,用于读取db.properties配置文件
    		Properties p=new Properties();
    		//新建一个字符串,保存配置文件的路径
    		String path="cn//ac//azure//util//db.properties";
    		try {
    			//调用Properties.load通过类加载获得配置文件的输入流
    			p.load(DBTool.class.getClassLoader().getResourceAsStream(path));
    			//读取配置文件中的配置参数
    			driver=p.getProperty("driver");  //获取驱动
    			url=p.getProperty("url");  //获取数据库连接地址
    			user=p.getProperty("user");  //获取数据库用户
    			password=p.getProperty("password");  //获取数据库密码
    			try {
    				//加载数据库驱动类到程序中
    				Class.forName(driver);
    			} catch (ClassNotFoundException e) {
    				e.printStackTrace();
    				throw new RuntimeException("加载驱动失败",e);
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    			throw new RuntimeException("找不到配置文件",e);
    		}
    	}
    	/**
    	 * 获取数据库连接
    	 * @return 数据库连接对象
    	 * @throws SQLException 提醒调用者捕获异常,并在finally中关闭关闭异常
    	 */
    	public static Connection getConnetion() throws SQLException{
    		//通过DriverManager获得数据库连接
    		return DriverManager.getConnection(url, user, password);
    	}
    	/**
    	 * 关闭数据库连接
    	 * @param con
    	 */
    	public static void close(Connection con){
    		if(con!=null){ //如果数据连接不为空
    			try {
    				//关闭数据库连接
    				con.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    				throw new RuntimeException("数据库关闭失败",e);
    			}
    		}
    	}
    //	/**
    //	 * 测试数据库连接工具是否可用
    //	 * @param args
    //	 */
    //	public static void main(String[] args) {
    //		Connection con=null;
    //		try {
    //			con=DBTool.getConnetion();
    //			System.out.println("数据库连接成功!");
    //		} catch (SQLException e) {
    //			System.out.println("数据库连接失败!");
    //			e.printStackTrace();
    //		}finally{
    //			DBTool.close(con);
    //		}
    //	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    ② db.properties(配置文件)

    2、model包 【存放实体类】

    ① Book(图书实体类)

     package cn.ac.azure.model;
    /**
     * 图书实体
     * @author 
     *
     */
    public class Book {
    	private Integer id;  //图书id
    	private String bookName;  //图书名称
    	private String author;  //图书作者
    	private String sex;     //作者性别
    	private Float price;    //图书价格
    	private Integer bookTypeId;  //图书类别ID
    	private String bookTypeName;  //图书类别名称
    	private String bookDesc;  //图书描述
    	public Book() {
    		super();
    	}
    	public Book(Integer id, String bookName, String author, String sex, Float price, Integer bookTypeId,
    			String bookTypeName, String bookDesc) {
    		super();
    		this.id = id;
    		this.bookName = bookName;
    		this.author = author;
    		this.sex = sex;
    		this.price = price;
    		this.bookTypeId = bookTypeId;
    		this.bookTypeName = bookTypeName;
    		this.bookDesc = bookDesc;
    	}
    	
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getBookName() {
    		return bookName;
    	}
    	public void setBookName(String bookName) {
    		this.bookName = bookName;
    	}
    	public String getAuthor() {
    		return author;
    	}
    	public void setAuthor(String author) {
    		this.author = author;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public Float getPrice() {
    		return price;
    	}
    	public void setPrice(Float price) {
    		this.price = price;
    	}
    	public Integer getBookTypeId() {
    		return bookTypeId;
    	}
    	public void setBookTypeId(Integer bookTypeId) {
    		this.bookTypeId = bookTypeId;
    	}
    	public String getBookTypeName() {
    		return bookTypeName;
    	}
    	public void setBookTypeName(String bookTypeName) {
    		this.bookTypeName = bookTypeName;
    	}
    	public String getBookDesc() {
    		return bookDesc;
    	}
    	public void setBookDesc(String bookDesc) {
    		this.bookDesc = bookDesc;
    	}
    	
    	@Override
    	public String toString() {
    		return "Book [测试=" + id + ", bookName=" + bookName + ", author=" + author + ", sex=" + sex + ", price=" + price
    				+ ", bookTypeId=" + bookTypeId + ", bookTypeName=" + bookTypeName + ", bookDesc=" + bookDesc + "]";
    	}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87

    ② BookType(图书类别实体类)

    package cn.ac.azure.model;
    /**
     * 图书类别实体
     * @author 
     *
     */
    public class BookType {
    	private int id;  //定义ID
    	private String bookTypeName;  //定义图书类别名称
    	private String bookTypeDesc;  //定义图书类别描述
    	//无参构造器
    	public BookType() {
    
    	}
    	//有参构造函数
    	public BookType(String bookTypeName, String bookTypeDesc) {
    		super();
    		this.bookTypeName = bookTypeName;
    		this.bookTypeDesc = bookTypeDesc;
    	}
    	
    	public BookType(int id, String bookTypeName, String bookTypeDesc) {
    		super();
    		this.id = id;
    		this.bookTypeName = bookTypeName;
    		this.bookTypeDesc = bookTypeDesc;
    	}
    	
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getBookTypeName() {
    		return bookTypeName;
    	}
    	public void setBookTypeName(String bookTypeName) {
    		this.bookTypeName = bookTypeName;
    	}
    	public String getBookTypeDesc() {
    		return bookTypeDesc;
    	}
    	public void setBookTypeDesc(String bookTypeDesc) {
    		this.bookTypeDesc = bookTypeDesc;
    	}
    	@Override
    	public String toString() {
    		return "BookType [id=" + id + ", bookTypeName=" + bookTypeName + ", bookTypeDesc=" + bookTypeDesc + "]";
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    ③ User(用户实体类)

    package cn.ac.azure.model;
    /**
     * 用户实体
     * @author 
     *
     */
    public class User {
    	private int id;              //用户id
    	private String username;     //用户名称
    	private String password;     //用户密码
    	
    	public User() {
    		
    	}
    	
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
    	}
    
    	public User(String username, String password) {
    		super();
    		this.username = username;
    		this.password = password;
    	}
    
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    3、Dao包 【数据库访问层】

    ① BookDao(图书dao类)

    package cn.ac.azure.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import cn.ac.azure.model.Book;
    
    /**
     * 图书dao类
     * @author 
     *
     */
    public class BookDao {
    	/**
    	 * 图书添加
    	 * @param con 数据库库连接对象
    	 * @param book 添加的图书对象
    	 * @return 返回添加操作的数据库记录数
    	 * @throws SQLException 抛出数据库异常
    	 */
    	public int add(Connection con,Book book) throws SQLException{
    		//拼写sql插入语句
    		String sql="insert into t_book values(null,'"+book.getBookName()+"','"+book.getAuthor()+"','"+book.getSex()+"','"+book.getPrice()+"','"+book.getBookTypeId()+"','"+book.getBookTypeName()+"','"+book.getBookDesc()+"')";
    		System.out.println(sql);
    		//获得预编译对象ps
    		
    		PreparedStatement ps=con.prepareStatement(sql);
    		//设置ps参数
    		/*ps.setString(1,book.getBookName());  //设置图书名称
    		ps.setString(2,book.getAuthor());    //设置图书作者
    		ps.setString(3, book.getSex());      //设置作者性别
    		ps.setFloat(4, book.getPrice());     //设置图书价格
    		ps.setInt(5, book.getBookTypeId());  //设置图书类别ID
    		ps.setString(6, book.getBookDesc()); //设置图书描述
    */		//执行sql语句,并返回插入的记录数
    		return ps.executeUpdate();
    	}
    	/**
    	 * 图书查询
    	 * @param con 数据库连接对象
    	 * @param book 图书对象
    	 * @return 查询的结果集
    	 * @throws SQLException 抛出数据库异常
    	 */
    	public ResultSet search(Connection con,Book book) throws SQLException{
    		//定义图书名称
    		String bookName=null;
    		//定义图书作者
    		String author=null;
    		//定义图书类别名称
    		String bookTypeName=null;
    		//如果图书不为空的话,就为前三个字段赋值,按照条件查询
    		if(book!=null){
    			bookName=book.getBookName();
    			author=book.getAuthor();
    			bookTypeName=book.getBookTypeName();
    		}
    		//定义一个字符串缓冲对象类存储查询添加
    		StringBuilder sb=new StringBuilder("select * from t_book b , t_bookType bt where b.bookTypeId=bt.id ");
    		//查询条件有图书名称
    		if(!(bookName==null || "".equals(bookName.trim()))){
    			sb.append("and b.bookName like '%"+bookName+"%' ");
    		}
    		//查询条件有图书作者
    		if(!(author==null || "".equals(author.trim()))){
    			sb.append("and b.author like '%"+author+"%' ");
    		}
    		//查询条件有图书类别名称
    		if(!(bookTypeName==null || "".equals(bookTypeName.trim()))){
    			sb.append("and bt.bookTypeName like '%"+bookTypeName+"%' ");
    		}
    		//从sb生成sql语句
    		String sql=sb.toString();
    		//获取预处理对象
    		PreparedStatement ps=con.prepareStatement(sql);
    		//执行查询,并返回结果集
    		return ps.executeQuery();
    	}
    	/**
    	 * 图书修改
    	 * @param con 数据库连接对象
    	 * @param book 修改的图书对象
    	 * @return 返回修改改变的记录数
    	 * @throws SQLException 抛出数据库异常,同时提醒调用者关闭数据库
    	 */
    	public int update(Connection con,Book book) throws SQLException{
    		//编写sql语句
    		String sql="update t_book set bookName=?,author=?,sex=?,"
    				+ "price=?,bookTypeId=?,bookDesc=? where id=?";
    		//获取预编译对象ps
    		PreparedStatement ps=con.prepareStatement(sql);
    		//设置ps对象 
    		ps.setString(1, book.getBookName()); //图书名称
    		ps.setString(2, book.getAuthor());   //图书作者
    		ps.setString(3,book.getSex()); //作者性别
    		ps.setFloat(4, book.getPrice()); //图书价格
    		ps.setInt(5, book.getBookTypeId());  //图书类型Id
    		ps.setString(6, book.getBookDesc()); //图书描述
    		ps.setInt(7, book.getId());
    		//执行修改并返回改变的记录数
    		return ps.executeUpdate(); 
    	}
    	
    	/**
    	 * 图书删除
    	 * @param con 数据库连接对象
    	 * @param id 删除图书的id
    	 * @return 返回删除的记录数
    	 * @throws SQLException 抛出数据库异常,同时提醒调用者关闭数据库
    	 */
    	public int delete(Connection con,int id) throws SQLException{
    		//编写sql语句
    		String sql="delete from t_book where id=?";
    		//获取预编译对象ps
    		PreparedStatement ps=con.prepareStatement(sql);
    		//设置ps参数
    		ps.setInt(1, id);
    		//执行DML删除语句并返回删除的记录数
    		return ps.executeUpdate();
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123

    ② BookTypeDao(图书类别dao类)

    package cn.ac.azure.dao;
    
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import cn.ac.azure.model.BookType;
    
    /**
     * 图书类别dao类
     * @author 
     *
     */
    public class BookTypeDao {
    	/**
    	 * 图书类别添加
    	 * @param con 数据库连接对象
    	 * @param bookType 要添加的图书类别
    	 * @return 返回数据库操作的记录数
    	 * @throws SQLException 
    	 */
    	public int add(Connection con,BookType bookType) throws SQLException{
    		//拼写sql插入语句
    		String sql="insert into t_bookType values(null,?,?)";
    		//创建预编译对象ps
    		PreparedStatement ps=con.prepareStatement(sql);
    		//设置ps参数
    		ps.setString(1, bookType.getBookTypeName()); //设置bookTypeName
    		ps.setString(2, bookType.getBookTypeDesc()); //设置bookTypeDesc
    		//返回数据库操作的记录数
    		return ps.executeUpdate();
    	}
    	/**
    	 * 图书类别查询
    	 * @param con 数据库连接对象
    	 * @param bookType 查询的图书类别
    	 * @return 返回查询的结果集
    	 * @throws SQLException 抛出数据库异常 
    	 */
    	public ResultSet search(Connection con,BookType bookType) throws SQLException{
    		/*
    		 * 思路:当jdbc查询数据库有多个条件从外部输入时,这是最好创建一个字符串缓冲类来添加条件到sql语句中。
    		 * 同时,不知道有哪些条件是第一条件,无法确定where关键字的所在,于是添加条件都用(and 条件)
    		 * 最后字符串转换成字符串时在将第一个and替换成where
    		 */
    		//定义一个图书类别名称
    		String bookTypeName=null;
    		if(bookType!=null){ //如果类别对象不为空的话,就获取它的类别名称
    			bookTypeName=bookType.getBookTypeName();
    		}
    		//创建一个字符串缓冲类
    		StringBuilder sb=new StringBuilder("select * from t_bookType");
    		//添加查询语句的条件(and + 条件)
    		if(!(bookTypeName==null || "".equals(bookTypeName.trim()))){
    			//jdbc中,数据库字符串要用单引号括起来
    			sb.append(" and bookTypeName like '%"+bookType.getBookTypeName()+"%'");
    		}
    		//将字符串缓冲对象转换成字符串,同时把第一个and替换成where
    		String sql=sb.toString().replaceFirst("and", "where");   
    		//获取预编译对象
    		PreparedStatement ps=con.prepareStatement(sql);
    		//返回ps执行查询之后的结果集
    		return ps.executeQuery();
    	}
    	/**
    	 * 图书类别修改
    	 * @param con 数据路连接对象
    	 * @param bookType 要修改的图书类别
    	 * @return 返回数据库更新的记录数
    	 * @throws SQLException 抛出数据库异常
    	 */
    	public int update(Connection con,BookType bookType) throws SQLException{
    		//拼写sql更新语句
    		String sql="update t_bookType set bookTypeName=? , bookTypeDesc=? where id=?";
    		//获取预编译对象ps
    		PreparedStatement ps=con.prepareStatement(sql);
    		//设置ps参数
    		ps.setString(1,bookType.getBookTypeName());
    		ps.setString(2,bookType.getBookTypeDesc());
    		ps.setInt(3, bookType.getId());
    		//赶回ps更新数据库的记录数
    		return ps.executeUpdate();
    	}
    	/**
    	 * 删除数据库记录
    	 * @param con 数据库连接对象
    	 * @param id 传入删除记录的id
    	 * @return 返回删除的记录数
    	 * @throws SQLException 抛出数据库异常
    	 */
    	public int delete(Connection con,String id) throws SQLException{
    		//拼写sql删除语句
    		String sql="delete from t_bookType where id=?";
    		//获取预编译对象ps
    		PreparedStatement ps=con.prepareStatement(sql);
    		//设置ps参数
    		ps.setString(1, id);
    		//执行ps更行操作,并返回改变的数据记录条数
    		return ps.executeUpdate();
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103

    ③ UserDao(用户数据访问对象)

    package cn.ac.azure.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import cn.ac.azure.model.User;
    
    /**
     * 用户数据访问对象
     * @author 
     *
     */
    public class UserDao {
    	/**
    	 * 登录验证
    	 * @param con 数据库连接对象
    	 * @param user 登录的账户
    	 * @return 返回一个用户对象,为null,则登录失败;反之,则登录成功
    	 * @throws Exception 让调用者处理异常
    	 */
    	public User login(Connection con,User user) throws SQLException{
    		//定义一个返回用户对象
    		User resultUser=null;
    		//拼写sql查询语句
    		String sql="select * from t_user where username=? and password=?";
    		//获取sql语句预编译对象
    		PreparedStatement ps=con.prepareStatement(sql);
    		//设置ps参数
    		ps.setString(1, user.getUsername());
    		ps.setString(2, user.getPassword());
    		//ps执行sql查询语句返回结果集
    		ResultSet rs=ps.executeQuery();
    		//遍历结果集
    		while(rs.next()){
    			//初始化返回用户对象
    			resultUser=new User(); 
    			resultUser.setId(rs.getInt("id"));    //设置用户id
    			resultUser.setUsername(rs.getString("username"));  //设置用户名称
    			resultUser.setPassword(rs.getString("password"));  //设置用户密码
    		}
    		//返回用户对象
    		return resultUser;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    4、View包 【视图层】

    ① LoginFrame(登录界面)

    package cn.ac.azure.view;
    
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    import javax.swing.LayoutStyle.ComponentPlacement;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.border.EmptyBorder;
    
    import cn.ac.azure.dao.UserDao;
    import cn.ac.azure.model.User;
    import cn.ac.azure.util.DBTool;
    
    public class LoginFrame extends JFrame {
    	static {
    		try {
    			// 这里是皮肤包可以随意切换
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mcwin.McWinLookAndFeel");
    			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.smart.SmartLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.luna.LunaLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.bernstein.BernsteinLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.hifi.HiFiLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.aero.AeroLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mint.MintLookAndFeel");
    		} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
    				| UnsupportedLookAndFeelException e) {
    			e.printStackTrace();
    		}
    	}
    	
    
    	private JPanel contentPane;
    	private JTextField usernameText;
    	private JPasswordField passwordText;
    	private JButton loginBtn;
    	private JButton resetBtn;
    
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					LoginFrame frame = new LoginFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    	/**
    	 * Create the frame.
    	 */
    	public LoginFrame() {
    		//改变系统默认字体
    		Font font = new Font("Dialog", Font.PLAIN, 12);
    		java.util.Enumeration keys = UIManager.getDefaults().keys();
    		while (keys.hasMoreElements()) {
    			Object key = keys.nextElement();
    			Object value = UIManager.get(key);
    			if (value instanceof javax.swing.plaf.FontUIResource) {
    				UIManager.put(key, font);
    			}
    		}
    		setIconImage(Toolkit.getDefaultToolkit().getImage(LoginFrame.class.getResource("/images/logo.png")));
    		setResizable(false);
    		setTitle("管理员登录");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		
    		JLabel lblNewLabel = new JLabel("图书管理系统");
    		lblNewLabel.setFont(new Font("宋体", Font.BOLD, 22));
    		lblNewLabel.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/logo.png")));
    		
    		JLabel lblNewLabel_1 = new JLabel("用户名 :");
    		lblNewLabel_1.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/userName.png")));
    		
    		usernameText = new JTextField();
    		usernameText.setColumns(10);
    		
    		JLabel lblNewLabel_2 = new JLabel("密  码 :");
    		lblNewLabel_2.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/password.png")));
    		
    		passwordText = new JPasswordField();
    		
    		//添加登陆按钮
    		loginBtn = new JButton("登录");
    		loginBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				loginActionPerformed(e);
    			}
    		});
    		loginBtn.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/login.png")));
    		
    		//添加重置按钮
    		resetBtn = new JButton("重置");
    		resetBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				resetActionPerformed(e);
    			}
    		});
    		
    		resetBtn.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/reset.png")));
    		GroupLayout gl_contentPane = new GroupLayout(contentPane);
    		gl_contentPane.setHorizontalGroup(
    			gl_contentPane.createParallelGroup(Alignment.LEADING)
    				.addGroup(gl_contentPane.createSequentialGroup()
    					.addGap(106)
    					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
    						.addComponent(lblNewLabel)
    						.addGroup(gl_contentPane.createSequentialGroup()
    							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
    								.addGroup(gl_contentPane.createSequentialGroup()
    									.addPreferredGap(ComponentPlacement.RELATED)
    									.addComponent(lblNewLabel_1)
    									.addPreferredGap(ComponentPlacement.RELATED)
    									.addComponent(usernameText, GroupLayout.PREFERRED_SIZE, 142, GroupLayout.PREFERRED_SIZE))
    								.addGroup(gl_contentPane.createSequentialGroup()
    									.addComponent(lblNewLabel_2)
    									.addPreferredGap(ComponentPlacement.UNRELATED)
    									.addComponent(passwordText, GroupLayout.PREFERRED_SIZE, 144, GroupLayout.PREFERRED_SIZE))
    								.addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
    									.addGap(16)
    									.addComponent(loginBtn)
    									.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    									.addComponent(resetBtn)))
    							.addPreferredGap(ComponentPlacement.RELATED)))
    					.addContainerGap(105, GroupLayout.PREFERRED_SIZE))
    		);
    		gl_contentPane.setVerticalGroup(
    			gl_contentPane.createParallelGroup(Alignment.LEADING)
    				.addGroup(gl_contentPane.createSequentialGroup()
    					.addGap(25)
    					.addComponent(lblNewLabel)
    					.addGap(18)
    					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
    						.addComponent(lblNewLabel_1)
    						.addComponent(usernameText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    					.addGap(18)
    					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
    						.addComponent(lblNewLabel_2)
    						.addComponent(passwordText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    					.addGap(29)
    					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
    						.addComponent(loginBtn)
    						.addComponent(resetBtn))
    					.addContainerGap())
    		);
    		contentPane.setLayout(gl_contentPane);
    		//设置窗口居中
    		this.setLocationRelativeTo(null);
    	}
    	/**
    	 * 登录事件处理
    	 * @param evt
    	 */
    	private void loginActionPerformed(ActionEvent evt) {
    		//从输入框获取用户名
    		String username=usernameText.getText().trim();
    		//从输入框获取密码
    		String password=passwordText.getText().trim();
    		//用户名不能为空或空字符串,否则结束事件处理
    		if(username==null || "".equals(username)){
    			JOptionPane.showMessageDialog(null, "用户名不能为空");
    			return;
    		}
    		//用户名不能为空或空字符串否则结束事件处理
    		if(password==null || "".equals(password)){
    			JOptionPane.showMessageDialog(null, "密码不能为空");
    			return;
    		}
    		//将从输入框获得信息新建一个对象
    		User user=new User(username, password);
    		//定义数据库连接
    		Connection con=null;
    		try {
    			//利用数据库工具类获取数据库连接
    			con=DBTool.getConnetion();
    			//新建一个用户数据访问对象
    			UserDao userDao=new UserDao();
    			//调用其登录验证方法获取一个用户对象
    			User currUser=userDao.login(con, user);
    			//判断返回的用户对象
    			if(currUser!=null){//不为空,表示登录成功
    				//进入主界面,并设置可见
    				new MainFrame().setVisible(true);
    				//释放当前窗口资源
    				dispose();
    			}else{ //为空,表示登录不成功
    				JOptionPane.showMessageDialog(null, "登录失败(u_u)");
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    			throw new RuntimeException("登录失败",e);
    		}finally{
    			//关闭数据库连接
    			DBTool.close(con);
    		}
    	}
    	/**
    	 * 重置事件处理
    	 * @param evt
    	 */
    	private void resetActionPerformed(ActionEvent evt) {
    		usernameText.setText("");
    		passwordText.setText("");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231

    ② MainFrame(主界面)

    package cn.ac.azure.view;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.EventQueue;
    import java.awt.Font;
    
    import javax.swing.ImageIcon;
    import javax.swing.JDesktopPane;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.border.EmptyBorder;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class MainFrame extends JFrame {
    	static {
    		try {
    			// 这里是皮肤包可以随意切换
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mcwin.McWinLookAndFeel");
    			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.smart.SmartLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.luna.LunaLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.bernstein.BernsteinLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.hifi.HiFiLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.aero.AeroLookAndFeel");
    //			 javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mint.MintLookAndFeel");
    		} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
    				| UnsupportedLookAndFeelException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	private static final long serialVersionUID = 1L;
    	
    	//定义内容窗格
    	private JPanel contentPane;
    	//定义桌面窗格
    	private JDesktopPane table;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					MainFrame frame = new MainFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public MainFrame() {
    		
    		//改变系统默认字体
    		Font font = new Font("Dialog", Font.PLAIN, 12);
    		java.util.Enumeration keys = UIManager.getDefaults().keys();
    		while (keys.hasMoreElements()) {
    			Object key = keys.nextElement();
    			Object value = UIManager.get(key);
    			if (value instanceof javax.swing.plaf.FontUIResource) {
    				UIManager.put(key, font);
    			}
    		}
    		
    		
    		setTitle("图书管理系统主界面");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		
    		JMenuBar menuBar = new JMenuBar();
    		menuBar.setToolTipText("");
    		setJMenuBar(menuBar);
    		
    		JMenu menu = new JMenu("基本数据维护 ");
    		menu.setIcon(new ImageIcon(MainFrame.class.getResource("/images/base.png")));
    		menuBar.add(menu);
    		
    		JMenu mnNewMenu = new JMenu("图书类别管理 ");
    		mnNewMenu.setIcon(new ImageIcon(MainFrame.class.getResource("/images/bookTypeManager.png")));
    		menu.add(mnNewMenu);
    		
    		//图书类别添加
    		JMenuItem menuItem = new JMenuItem("图书类别添加");
    		menuItem.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				BookTypeAddInterFrame bookTypeAddInterFrame=new BookTypeAddInterFrame();
    				bookTypeAddInterFrame.setVisible(true);
    				table.add(bookTypeAddInterFrame);
    			}
    		});
    		menuItem.setIcon(new ImageIcon(MainFrame.class.getResource("/images/add.png")));
    		mnNewMenu.add(menuItem);
    		
    		//图书类别维护
    		JMenuItem menuItem_1 = new JMenuItem("图书类别维护");
    		menuItem_1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				BookTypeManageInterFrame bookTypeManageInterFrame=new BookTypeManageInterFrame();
    				bookTypeManageInterFrame.setVisible(true);
    				table.add(bookTypeManageInterFrame);
    			}
    		});
    		menuItem_1.setIcon(new ImageIcon(MainFrame.class.getResource("/images/edit.png")));
    		mnNewMenu.add(menuItem_1);
    		
    		JMenu menu_1 = new JMenu("图书管理");
    		menu_1.setIcon(new ImageIcon(MainFrame.class.getResource("/images/bookManager.png")));
    		menu.add(menu_1);
    		
    		//图书添加
    		JMenuItem menuItem_2 = new JMenuItem("图书添加");
    		menuItem_2.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				BookAddInterFrame bookAddInterFrame=new BookAddInterFrame();
    				bookAddInterFrame.setVisible(true);
    				table.add(bookAddInterFrame);
    			}
    		});
    		menuItem_2.setIcon(new ImageIcon(MainFrame.class.getResource("/images/add.png")));
    		menu_1.add(menuItem_2);
    		//图书维护
    		JMenuItem menuItem_3 = new JMenuItem("图书维护");
    		menuItem_3.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				BookManageInterFrame bookManageInterFrame=new BookManageInterFrame();
    				bookManageInterFrame.setVisible(true);
    				table.add(bookManageInterFrame);
    			}
    		});
    		menuItem_3.setIcon(new ImageIcon(MainFrame.class.getResource("/images/edit.png")));
    		menu_1.add(menuItem_3);
    		
    		//安全退出
    		JMenuItem menuItem_4 = new JMenuItem("安全退出");
    		menuItem_4.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				//弹出退出确认提示框
    				int res=JOptionPane.showConfirmDialog(null, "确定要退出吗?");
    				//确定退出
    				if(res==JOptionPane.OK_OPTION){
    					dispose();
    				} 
    				//否则继续留在该界面
    			}
    		});
    		menuItem_4.setIcon(new ImageIcon(MainFrame.class.getResource("/images/exit.png")));
    		menu.add(menuItem_4);
    		
    		JMenu menu_2 = new JMenu("关于我们");
    		menu_2.setIcon(new ImageIcon(MainFrame.class.getResource("/images/about.png")));
    		menuBar.add(menu_2);
    		
    		//关于我们
    		JMenuItem menuItem_5 = new JMenuItem("关于我们");
    		menuItem_5.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				//新建一个图书内部窗体
    				LibraryInterFrame libraryInnerFrame=new LibraryInterFrame();
    				//显示图书内部窗体
    				libraryInnerFrame.setVisible(true);
    				//将图书内部窗体显示到主界面桌面窗格中
    				table.add(libraryInnerFrame);
    			}
    		});
    		menuItem_5.setIcon(new ImageIcon(MainFrame.class.getResource("/images/about.png")));
    		menu_2.add(menuItem_5);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		contentPane.setLayout(new BorderLayout(0, 0));
    		setContentPane(contentPane);
    		
    		//定义主界面桌面窗格界面,用于装载内部窗体
    		table = new JDesktopPane();
    		table.setBackground(Color.LIGHT_GRAY);
    		contentPane.add(table, BorderLayout.CENTER);
    		//设置窗口最大化
    		setExtendedState(JFrame.MAXIMIZED_BOTH);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193

    ③ BookTypeManageInterFrame(图书类别管理界面)

    package cn.ac.azure.view;
    
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Vector;
    
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JInternalFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.UIManager;
    import javax.swing.LayoutStyle.ComponentPlacement;
    import javax.swing.table.DefaultTableModel;
    
    import cn.ac.azure.dao.BookTypeDao;
    import cn.ac.azure.model.BookType;
    import cn.ac.azure.util.DBTool;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import javax.swing.JPanel;
    import javax.swing.border.LineBorder;
    import javax.swing.border.TitledBorder;
    import javax.swing.JTextArea;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    public class BookTypeManageInterFrame extends JInternalFrame {
    	private JTextField s_bookTypeNameText;
    	private JTable bookTypeTable;
    	private BookTypeDao bookTypeDao=new BookTypeDao();
    	private JTextField idText;
    	private JTextField bookTypeNameText;
    	private JTextArea bookTypeDescText;
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					BookTypeManageInterFrame frame = new BookTypeManageInterFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public BookTypeManageInterFrame() {
    		
    		//改变系统默认字体
    		Font font = new Font("Dialog", Font.PLAIN, 12);
    		java.util.Enumeration keys = UIManager.getDefaults().keys();
    		while (keys.hasMoreElements()) {
    			Object key = keys.nextElement();
    			Object value = UIManager.get(key);
    			if (value instanceof javax.swing.plaf.FontUIResource) {
    				UIManager.put(key, font);
    			}
    		}
    		setIconifiable(true);
    		setClosable(true);
    		setTitle("图书类别管理");
    		setBounds(400, 100, 535, 489);
    		
    		JScrollPane scrollPane = new JScrollPane();
    		
    		JLabel label = new JLabel("图书类别名称:");
    		
    		s_bookTypeNameText = new JTextField();
    		s_bookTypeNameText.setColumns(10);
    		
    		//查询按钮
    		JButton searchBtn = new JButton("查询");
    		searchBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				searchActionPerformed(e);
    			}
    		});
    		searchBtn.setIcon(new ImageIcon(BookTypeManageInterFrame.class.getResource("/images/search.png")));
    		
    		JPanel panel = new JPanel();
    		panel.setBorder(new TitledBorder(null, "表单操作", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    		GroupLayout groupLayout = new GroupLayout(getContentPane());
    		groupLayout.setHorizontalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup()
    					.addGap(56)
    					.addComponent(label)
    					.addPreferredGap(ComponentPlacement.UNRELATED)
    					.addComponent(s_bookTypeNameText, GroupLayout.PREFERRED_SIZE, 167, GroupLayout.PREFERRED_SIZE)
    					.addPreferredGap(ComponentPlacement.RELATED, 54, Short.MAX_VALUE)
    					.addComponent(searchBtn)
    					.addGap(71))
    				.addGroup(groupLayout.createSequentialGroup()
    					.addGap(36)
    					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING, false)
    						.addComponent(panel, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    						.addComponent(scrollPane, Alignment.LEADING))
    					.addContainerGap(31, Short.MAX_VALUE))
    		);
    		groupLayout.setVerticalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup()
    					.addGap(27)
    					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
    						.addComponent(searchBtn)
    						.addComponent(label)
    						.addComponent(s_bookTypeNameText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    					.addGap(18)
    					.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 167, GroupLayout.PREFERRED_SIZE)
    					.addGap(18)
    					.addComponent(panel, GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)
    					.addContainerGap())
    		);
    		
    		JLabel label_1 = new JLabel("编号:");
    		
    		idText = new JTextField();
    		idText.setEditable(false);
    		idText.setColumns(10);
    		
    		JLabel label_2 = new JLabel("图书类别名称:");
    		
    		bookTypeNameText = new JTextField();
    		bookTypeNameText.setColumns(10);
    		
    		JLabel label_3 = new JLabel("描述:");
    		
    		bookTypeDescText = new JTextArea();
    		
    		//修改按钮
    		JButton modifyBtn = new JButton("修改");
    		modifyBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				bookTypeUpdateActionPerformed(e);
    			}
    		});
    		modifyBtn.setIcon(new ImageIcon(BookTypeManageInterFrame.class.getResource("/images/modify.png")));
    		
    		//删除按钮
    		JButton deleteBtn = new JButton("删除");
    		deleteBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				bookTypeDeleteActionPerformed(e);
    			}
    		});
    		deleteBtn.setIcon(new ImageIcon(BookTypeManageInterFrame.class.getResource("/images/delete.png")));
    		GroupLayout gl_panel = new GroupLayout(panel);
    		gl_panel.setHorizontalGroup(
    			gl_panel.createParallelGroup(Alignment.LEADING)
    				.addGroup(gl_panel.createSequentialGroup()
    					.addGap(19)
    					.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING)
    						.addGroup(Alignment.LEADING, gl_panel.createSequentialGroup()
    							.addComponent(label_1)
    							.addPreferredGap(ComponentPlacement.RELATED)
    							.addComponent(idText, GroupLayout.PREFERRED_SIZE, 47, GroupLayout.PREFERRED_SIZE)
    							.addGap(18)
    							.addComponent(label_2)
    							.addPreferredGap(ComponentPlacement.UNRELATED)
    							.addComponent(bookTypeNameText, GroupLayout.PREFERRED_SIZE, 166, GroupLayout.PREFERRED_SIZE))
    						.addGroup(Alignment.LEADING, gl_panel.createSequentialGroup()
    							.addComponent(label_3)
    							.addPreferredGap(ComponentPlacement.RELATED)
    							.addComponent(bookTypeDescText))
    						.addGroup(gl_panel.createSequentialGroup()
    							.addComponent(modifyBtn)
    							.addGap(54)
    							.addComponent(deleteBtn)
    							.addGap(64)))
    					.addContainerGap(56, GroupLayout.PREFERRED_SIZE))
    		);
    		gl_panel.setVerticalGroup(
    			gl_panel.createParallelGroup(Alignment.LEADING)
    				.addGroup(gl_panel.createSequentialGroup()
    					.addContainerGap()
    					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
    						.addComponent(label_1)
    						.addComponent(idText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(label_2)
    						.addComponent(bookTypeNameText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    					.addGap(27)
    					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
    						.addComponent(label_3)
    						.addComponent(bookTypeDescText, GroupLayout.PREFERRED_SIZE, 51, GroupLayout.PREFERRED_SIZE))
    					.addGap(18)
    					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
    						.addComponent(deleteBtn)
    						.addComponent(modifyBtn))
    					.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    		);
    		panel.setLayout(gl_panel);
    		
    		//表格
    		bookTypeTable = new JTable();
    		//表格鼠标点击事件
    		bookTypeTable.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mousePressed(MouseEvent e) {
    				bookTypeTableMousePressed(e);
    			}
    		});
    		bookTypeTable.setModel(new DefaultTableModel(
    			new Object[][] {
    			},
    			new String[] {
    				"编号", "图书类别名称", "图书类别描述"
    			}
    		) {
    			boolean[] columnEditables = new boolean[] {
    				false, false, false
    			};
    			public boolean isCellEditable(int row, int column) {
    				return columnEditables[column];
    			}
    		});
    		bookTypeTable.getColumnModel().getColumn(1).setPreferredWidth(96);
    		bookTypeTable.getColumnModel().getColumn(2).setPreferredWidth(185);
    		scrollPane.setViewportView(bookTypeTable);
    		getContentPane().setLayout(groupLayout);
    		
    		//设置文本域边框
    		bookTypeDescText.setBorder(new LineBorder(new java.awt.Color(127,157,185), 1, false));
    		//构造函数中调用填充表格数据函数,全部图书类别显示在表格中
    		fillTable(new BookType());
    	}
    	/**
    	 * 图书类别删除事件处理
    	 * @param evt
    	 */
    	private void bookTypeDeleteActionPerformed(ActionEvent evt) {
    		//获得表单中编号的值id
    		String id=idText.getText();
    		//判断表单有没有选中的图书类别记录
    		if(id==null || "".equals(id.trim())){
    			JOptionPane.showMessageDialog(null, "请选择要修改的记录!");
    			return;
    		}
    		//弹出确认框,是否要删除图书类别记录
    		int res=JOptionPane.showConfirmDialog(null, "你确定要删除该条记录吗?");
    		if(res!=0){ //否
    			return; //结束该事件处理函数
    		}
    		//定义数据库连接
    		Connection con=null;
    		try {
    			//获取数据路连接
    			con=DBTool.getConnetion();
    			int row=bookTypeDao.delete(con, id);
    			if(row==1){//删除成功,弹出提示框
    				JOptionPane.showMessageDialog(null, "修改数据成功(n_n)");
    				//清空表单数据
    				resetValue();
    				//刷新表格记录显示
    				fillTable(new BookType());
    			}else{//删除失败,弹出提示框
    				JOptionPane.showMessageDialog(null, "修改数据失败(u_u)");
    			}
    		} catch (SQLException e) {
    			//记录日志
    			e.printStackTrace();
    			throw new RuntimeException("删除记录失败!",e);
    		}finally{
    			//关闭数据库
    			DBTool.close(con);
    		}
    	}
    
    	/**
    	 * 图书类别修改事件处理
    	 * @param evt
    	 */
    	private void bookTypeUpdateActionPerformed(ActionEvent evt) {
    		//获取表单操作各个文本框的值
    		String id=idText.getText();
    		String bookTypeName=bookTypeNameText.getText();
    		String bookTypeDesc=bookTypeDescText.getText();
    		//判断表单有没有选中的图书类别记录
    		if(id==null || "".equals(id.trim())){
    			JOptionPane.showMessageDialog(null, "请选择要修改的记录!");
    			return;
    		}
    		//图书类别名称不能为空
    		if(bookTypeName==null || "".equals(bookTypeName.trim())){
    			JOptionPane.showMessageDialog(null, "图书类别名称不能为空!");
    			return;
    		}
    		//利用表单的数据新建一个图书类别对象
    		BookType bookType=new BookType(Integer.parseInt(id), bookTypeName, bookTypeDesc);
    		//定义数据库连接对象
    		Connection con=null;
    		try {
    			//获取数据库连接
    			con=DBTool.getConnetion();
    			//执行图书类别dao类的修改记录方法
    			int res=bookTypeDao.update(con, bookType);
    			if(res==1){//修改成功,弹出提示框
    				JOptionPane.showMessageDialog(null, "修改数据成功(n_n)");
    				//清空表单数据
    				resetValue();
    				//刷新表格记录显示
    				fillTable(new BookType());
    			}else{//修改失败,弹出提示框
    				JOptionPane.showMessageDialog(null, "修改数据失败(u_u)");
    			}
    		} catch (SQLException e) {
    			//记录日志
    			e.printStackTrace();
    			throw new RuntimeException("修改图书类别失败",e);
    		}finally{
    			//关闭数据路连接
    			DBTool.close(con);
    		}
    	}
    
    	/**
    	 * 表格鼠标点击事件处理
    	 * @param e 
    	 */
    	private void bookTypeTableMousePressed(MouseEvent e) {
    		//获取表格选中的行
    		int row=bookTypeTable.getSelectedRow();
    		//获取表中选中行的第一列的值并显示在idText框中
    		idText.setText(String.valueOf(bookTypeTable.getValueAt(row, 0)));
    		//获取表中选中行的第二列的值并显示在bookTypeNameText框中
    		bookTypeNameText.setText((String)bookTypeTable.getValueAt(row, 1));
    		//获取表中选中行的第三列的值并显示在bookTypeDescText框中
    		bookTypeDescText.setText((String)bookTypeTable.getValueAt(row, 2));
    	}
    
    	/**
    	 * 图书类别查询事件处理
    	 * @param evt
    	 */
    	private void searchActionPerformed(ActionEvent evt) {
    		//获取图书类别输入框里的内容
    		String s_bookTypeName=s_bookTypeNameText.getText();
    		//新建一个图书类别并初始化
    		BookType bookType=new BookType();
    		//将输入框的内容设置成新建图书类别的图书类别名称
    		bookType.setBookTypeName(s_bookTypeName);
    		//根据图书类别查询图书类别
    		fillTable(bookType);
    	}
    
    	/**
    	 * 在表格中填充数据
    	 * @param bookType 传入bookType对象
    	 */
    	private void fillTable(BookType bookType){
    		//获取表格的模型
    		DefaultTableModel dtm=(DefaultTableModel) bookTypeTable.getModel();
    		//清空表格
    		dtm.setRowCount(0); 
    		//定义数据库连接
    		Connection con=null;
    		try {
    			//获取数据库连接
    			con=DBTool.getConnetion();
    			//调用BookTyPeDao的查询方法,并获得其查询的结果集
    			ResultSet rs=bookTypeDao.search(con, bookType);
    			//遍历结果集
    			while(rs.next()){
    				//新建一个vector并初始化
    				Vector v=new Vector(); 
    				v.add(rs.getInt("id"));  //向vector中添加id
    				v.add(rs.getString("bookTypeName")); //向vector中添加bookTypeName
    				v.add(rs.getString("bookTypeDesc"));  //向vector中添加bookTypeDesc
    				//将vector中的数据显示到表格中
    				dtm.addRow(v);
    			}
    		} catch (SQLException e) {
    			//记录日志
    			e.printStackTrace();
    			throw new RuntimeException("查询失败");
    		}finally{
    			//关闭数据库
    			DBTool.close(con);
    		}
    	}
    	/**
    	 * 清空表单数据
    	 */
    	private void resetValue(){
    		idText.setText("");
    		bookTypeNameText.setText("");
    		bookTypeDescText.setText("");
    		s_bookTypeNameText.setText("");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404

    ④ BookTypeAddInterFrame(图书类别添加界面)

    package cn.ac.azure.view;
    
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.JButton;
    import javax.swing.JInternalFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.UIManager;
    import javax.swing.LayoutStyle.ComponentPlacement;
    import javax.swing.border.LineBorder;
    
    import cn.ac.azure.dao.BookTypeDao;
    import cn.ac.azure.model.BookType;
    import cn.ac.azure.util.DBTool;
    /**
     * 图书类别内部添加窗体
     * @author green
     *
     */
    public class BookTypeAddInterFrame extends JInternalFrame {
    	//图书类别名称输入框
    	private JTextField bookTypeNameText;
    	//图书类别描述输入框
    	private JTextArea bookTypeDescText;
    	//重置按钮
    	private JButton resetBtn;
    	//添加按钮
    	private JButton addBtn;
    	//图书类别数据库访问对象
    	private BookTypeDao bookTypeDao;
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					BookTypeAddInterFrame frame = new BookTypeAddInterFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public BookTypeAddInterFrame() {
    		//改变系统默认字体
    		Font font = new Font("Dialog", Font.PLAIN, 12);
    		java.util.Enumeration keys = UIManager.getDefaults().keys();
    		while (keys.hasMoreElements()) {
    			Object key = keys.nextElement();
    			Object value = UIManager.get(key);
    			if (value instanceof javax.swing.plaf.FontUIResource) {
    				UIManager.put(key, font);
    			}
    		}
    		setClosable(true);
    		setIconifiable(true);
    		setTitle("图书类别添加");
    		setBounds(100, 100, 487, 342);
    		
    		JLabel label = new JLabel("图书类别名称:");
    		
    		bookTypeNameText = new JTextField();
    		bookTypeNameText.setColumns(10);
    		
    		JLabel label_1 = new JLabel("图书类别描述:");
    		
    		bookTypeDescText = new JTextArea();
    		
    		//添加按钮
    		addBtn = new JButton("添加");
    		addBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				addActionPerformed(e);
    			}
    		});
    		//重置按钮
    		resetBtn = new JButton("重置");
    		resetBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				resetActionPerformed(e);
    			}
    		});
    		GroupLayout groupLayout = new GroupLayout(getContentPane());
    		groupLayout.setHorizontalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup()
    					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
    						.addGroup(groupLayout.createSequentialGroup()
    							.addGap(128)
    							.addComponent(addBtn)
    							.addGap(91)
    							.addComponent(resetBtn))
    						.addGroup(groupLayout.createSequentialGroup()
    							.addGap(89)
    							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
    								.addComponent(bookTypeDescText)
    								.addGroup(groupLayout.createSequentialGroup()
    									.addComponent(label)
    									.addPreferredGap(ComponentPlacement.RELATED)
    									.addComponent(bookTypeNameText, GroupLayout.PREFERRED_SIZE, 189, GroupLayout.PREFERRED_SIZE))
    								.addComponent(label_1))))
    					.addContainerGap(105, Short.MAX_VALUE))
    		);
    		groupLayout.setVerticalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup()
    					.addGap(49)
    					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
    						.addComponent(label)
    						.addComponent(bookTypeNameText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    					.addGap(18)
    					.addComponent(label_1)
    					.addGap(10)
    					.addComponent(bookTypeDescText, GroupLayout.PREFERRED_SIZE, 87, GroupLayout.PREFERRED_SIZE)
    					.addGap(41)
    					.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
    						.addComponent(resetBtn)
    						.addComponent(addBtn))
    					.addContainerGap())
    		);
    		getContentPane().setLayout(groupLayout);
    		
    		//设置文本域边框
    		bookTypeDescText.setBorder(new LineBorder(new java.awt.Color(127,157,185), 1, false));
    	}
    	/**
    	 * 添加事件处理
    	 * @param evt
    	 */
    	private void addActionPerformed(ActionEvent evt) {
    		//获取输入框的值
    		String bookTypeName=bookTypeNameText.getText();
    		String bookTypeDesc=bookTypeDescText.getText();
    		if(bookTypeName==null || "".equals(bookTypeName.trim())){
    			JOptionPane.showMessageDialog(null,"图书类别不能为空!");
    			return;
    		}
    		//新建图书类别实体对象
    		BookType bookType=new BookType(bookTypeName, bookTypeDesc);
    		//定义数据库连接
    		Connection con=null;
    		try {
    			//获取数据库连接
    			con=DBTool.getConnetion();
    			//初始化图书类别对象BookTypeDao
    			bookTypeDao=new BookTypeDao();
    			//调用图书类别dao对象的添加方法
    			int res=bookTypeDao.add(con, bookType);
    			if(res!=0){
    				//提示添加成功
    				JOptionPane.showMessageDialog(null, "图书添加成功(n_n)");
    				//清空输入框
    				bookTypeNameText.setText("");
    				bookTypeDescText.setText("");
    			}else{
    				//提示添加失败
    				JOptionPane.showMessageDialog(null,"图书添加失败(u_u)");
    			}
    		} catch (SQLException e) {
    			//记录日志
    			e.printStackTrace();
    			throw new RuntimeException("添加图书失败",e);
    		}finally{
    			//关闭数据库
    			DBTool.close(con);
    		}
    	}
    
    	/**
    	 * 重置事件处理
    	 * @param evt
    	 */
    	private void resetActionPerformed(ActionEvent evt) {
    		//置空图书类别名称输入框
    		bookTypeNameText.setText("");
    		//置空图书类别描述输入框
    		bookTypeDescText.setText("");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195

    ⑤ BookManageInterFrame(图书管理界面)

    package cn.ac.azure.view;
    
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Vector;
    
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JInternalFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.LayoutStyle.ComponentPlacement;
    import javax.swing.UIManager;
    import javax.swing.border.TitledBorder;
    import javax.swing.table.DefaultTableModel;
    
    import cn.ac.azure.dao.BookDao;
    import cn.ac.azure.dao.BookTypeDao;
    import cn.ac.azure.model.Book;
    import cn.ac.azure.model.BookType;
    import cn.ac.azure.util.DBTool;
    import javax.swing.JRadioButton;
    import javax.swing.ButtonGroup;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    public class BookManageInterFrame extends JInternalFrame {
    	private JTextField s_bookNameText;
    	private JTextField s_authorText;
    	private JTable bookTable;
    	private JComboBox s_bookTypecomboBox;
    	private BookTypeDao bookTypeDao;
    	private BookDao bookDao;
    	private JTextField idText;
    	private JTextField bookNameText;
    	private JTextField priceText;
    	private JTextField authorText;
    	private JTextField bookDescText;
    	private final ButtonGroup buttonGroup = new ButtonGroup();
    	private JComboBox bookTypeComboBox;
    	private JRadioButton maleBtn;
    	private JRadioButton femaleBtn;
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					BookManageInterFrame frame = new BookManageInterFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public BookManageInterFrame() {
    		
    		//改变系统默认字体
    		Font font = new Font("Dialog", Font.PLAIN, 12);
    		java.util.Enumeration keys = UIManager.getDefaults().keys();
    		while (keys.hasMoreElements()) {
    			Object key = keys.nextElement();
    			Object value = UIManager.get(key);
    			if (value instanceof javax.swing.plaf.FontUIResource) {
    				UIManager.put(key, font);
    			}
    		}
    		
    		setIconifiable(true);
    		setClosable(true);
    		setTitle("图书管理 ");
    		setBounds(100, 100, 767, 528);
    		
    		JPanel panel = new JPanel();
    		panel.setBorder(new TitledBorder(null, "搜索条件", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    		
    		JScrollPane scrollPane = new JScrollPane();
    		
    		JPanel panel_1 = new JPanel();
    		panel_1.setBorder(new TitledBorder(null, "表单操作", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    		GroupLayout groupLayout = new GroupLayout(getContentPane());
    		groupLayout.setHorizontalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(Alignment.TRAILING, groupLayout.createSequentialGroup()
    					.addGap(29)
    					.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
    						.addComponent(panel_1, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    						.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 661, Short.MAX_VALUE)
    						.addComponent(panel, GroupLayout.DEFAULT_SIZE, 661, Short.MAX_VALUE))
    					.addGap(38))
    		);
    		groupLayout.setVerticalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup()
    					.addGap(29)
    					.addComponent(panel, GroupLayout.PREFERRED_SIZE, 75, GroupLayout.PREFERRED_SIZE)
    					.addPreferredGap(ComponentPlacement.UNRELATED)
    					.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 137, GroupLayout.PREFERRED_SIZE)
    					.addPreferredGap(ComponentPlacement.UNRELATED)
    					.addComponent(panel_1, GroupLayout.PREFERRED_SIZE, 217, GroupLayout.PREFERRED_SIZE)
    					.addContainerGap(20, Short.MAX_VALUE))
    		);
    		
    		JLabel label_2 = new JLabel("编号:");
    		
    		idText = new JTextField();
    		idText.setColumns(10);
    		
    		JLabel label_3 = new JLabel("图书名称:");
    		
    		bookNameText = new JTextField();
    		bookNameText.setColumns(10);
    		
    		JLabel label_4 = new JLabel("作者性别:");
    		
    		maleBtn = new JRadioButton("男");
    		buttonGroup.add(maleBtn);
    		
    		femaleBtn = new JRadioButton("女");
    		buttonGroup.add(femaleBtn);
    		
    		JLabel label_5 = new JLabel("价格:");
    		
    		priceText = new JTextField();
    		priceText.setColumns(10);
    		
    		JLabel label_6 = new JLabel("图书作者:");
    		
    		authorText = new JTextField();
    		authorText.setColumns(10);
    		
    		JLabel label_7 = new JLabel("图书类别:");
    		
    		bookTypeComboBox = new JComboBox();
    		
    		JLabel label_8 = new JLabel("图书描述:");
    		
    		bookDescText = new JTextField();
    		bookDescText.setColumns(10);
    		
    		//修改按钮
    		JButton modifyBtn = new JButton("修改");
    		modifyBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				modifyBookActionPerformed(e);
    			}
    		});
    		modifyBtn.setIcon(new ImageIcon(BookManageInterFrame.class.getResource("/images/modify.png")));
    		
    		//删除按钮
    		JButton deleteBtn = new JButton("删除");
    		deleteBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				deleteBookActionPerformed(e);
    			}
    		});
    		deleteBtn.setIcon(new ImageIcon(BookManageInterFrame.class.getResource("/images/delete.png")));
    		GroupLayout gl_panel_1 = new GroupLayout(panel_1);
    		gl_panel_1.setHorizontalGroup(
    			gl_panel_1.createParallelGroup(Alignment.TRAILING)
    				.addGroup(gl_panel_1.createSequentialGroup()
    					.addGap(44)
    					.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
    						.addGroup(gl_panel_1.createSequentialGroup()
    							.addComponent(label_8)
    							.addPreferredGap(ComponentPlacement.RELATED)
    							.addComponent(bookDescText))
    						.addGroup(gl_panel_1.createSequentialGroup()
    							.addGroup(gl_panel_1.createParallelGroup(Alignment.TRAILING)
    								.addComponent(label_2)
    								.addComponent(label_5))
    							.addPreferredGap(ComponentPlacement.UNRELATED)
    							.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
    								.addComponent(priceText)
    								.addComponent(idText, GroupLayout.DEFAULT_SIZE, 86, Short.MAX_VALUE))
    							.addGap(37)
    							.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
    								.addGroup(gl_panel_1.createSequentialGroup()
    									.addComponent(label_3)
    									.addPreferredGap(ComponentPlacement.RELATED)
    									.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, 136, GroupLayout.PREFERRED_SIZE))
    								.addGroup(gl_panel_1.createSequentialGroup()
    									.addComponent(label_6)
    									.addPreferredGap(ComponentPlacement.RELATED)
    									.addComponent(authorText)))
    							.addGap(35)
    							.addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
    								.addGroup(gl_panel_1.createSequentialGroup()
    									.addComponent(label_4)
    									.addPreferredGap(ComponentPlacement.UNRELATED)
    									.addComponent(maleBtn)
    									.addGap(18)
    									.addComponent(femaleBtn))
    								.addGroup(gl_panel_1.createSequentialGroup()
    									.addComponent(label_7)
    									.addPreferredGap(ComponentPlacement.UNRELATED)
    									.addComponent(bookTypeComboBox, GroupLayout.PREFERRED_SIZE, 97, GroupLayout.PREFERRED_SIZE)))))
    					.addContainerGap(34, Short.MAX_VALUE))
    				.addGroup(gl_panel_1.createSequentialGroup()
    					.addContainerGap(201, Short.MAX_VALUE)
    					.addComponent(modifyBtn)
    					.addGap(104)
    					.addComponent(deleteBtn)
    					.addGap(190))
    		);
    		gl_panel_1.setVerticalGroup(
    			gl_panel_1.createParallelGroup(Alignment.LEADING)
    				.addGroup(gl_panel_1.createSequentialGroup()
    					.addContainerGap()
    					.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
    						.addComponent(maleBtn)
    						.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(label_3)
    						.addComponent(label_2)
    						.addComponent(idText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(femaleBtn)
    						.addComponent(label_4))
    					.addGap(18)
    					.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
    						.addComponent(priceText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(label_5)
    						.addComponent(label_6)
    						.addComponent(authorText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(bookTypeComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(label_7))
    					.addGap(18)
    					.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
    						.addComponent(label_8)
    						.addComponent(bookDescText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    					.addGap(27)
    					.addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
    						.addComponent(modifyBtn)
    						.addComponent(deleteBtn))
    					.addContainerGap())
    		);
    		panel_1.setLayout(gl_panel_1);
    		
    		//表格
    		bookTable = new JTable();
    		//表格鼠标按下事件
    		bookTable.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mousePressed(MouseEvent e) {
    				tableMousePressed(e);
    			}
    		});
    		bookTable.setModel(new DefaultTableModel(
    			new Object[][] {
    			},
    			new String[] {
    				"编号", "图书名称", "图书作者", "图书性别", "图书价格", "图书类别", "图书描述"
    			}
    		) {
    			boolean[] columnEditables = new boolean[] {
    				false, false, false, false, false, false, false
    			};
    			public boolean isCellEditable(int row, int column) {
    				return columnEditables[column];
    			}
    		});
    		bookTable.getColumnModel().getColumn(0).setPreferredWidth(56);
    		bookTable.getColumnModel().getColumn(1).setPreferredWidth(100);
    		bookTable.getColumnModel().getColumn(2).setPreferredWidth(63);
    		bookTable.getColumnModel().getColumn(3).setPreferredWidth(63);
    		bookTable.getColumnModel().getColumn(4).setPreferredWidth(61);
    		bookTable.getColumnModel().getColumn(5).setPreferredWidth(94);
    		bookTable.getColumnModel().getColumn(6).setPreferredWidth(163);
    		scrollPane.setViewportView(bookTable);
    		
    		JLabel lblL = new JLabel("图书名称:");
    		
    		s_bookNameText = new JTextField();
    		s_bookNameText.setColumns(10);
    		
    		JLabel label = new JLabel("图书作者:");
    		
    		s_authorText = new JTextField();
    		s_authorText.setColumns(10);
    		
    		JLabel label_1 = new JLabel("图书类别:");
    		
    		s_bookTypecomboBox = new JComboBox();
    		
    		//图书查询按钮
    		JButton s_searchBtn = new JButton("查询");
    		s_searchBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				searchActionPerformed(e);
    			}
    		});
    		s_searchBtn.setIcon(new ImageIcon(BookManageInterFrame.class.getResource("/images/search.png")));
    		GroupLayout gl_panel = new GroupLayout(panel);
    		gl_panel.setHorizontalGroup(
    			gl_panel.createParallelGroup(Alignment.LEADING)
    				.addGroup(gl_panel.createSequentialGroup()
    					.addGap(20)
    					.addComponent(lblL)
    					.addPreferredGap(ComponentPlacement.RELATED)
    					.addComponent(s_bookNameText, GroupLayout.PREFERRED_SIZE, 88, GroupLayout.PREFERRED_SIZE)
    					.addGap(18)
    					.addComponent(label)
    					.addPreferredGap(ComponentPlacement.RELATED)
    					.addComponent(s_authorText, GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)
    					.addGap(18)
    					.addComponent(label_1)
    					.addPreferredGap(ComponentPlacement.UNRELATED)
    					.addComponent(s_bookTypecomboBox, GroupLayout.PREFERRED_SIZE, 94, GroupLayout.PREFERRED_SIZE)
    					.addGap(18)
    					.addComponent(s_searchBtn)
    					.addGap(29))
    		);
    		gl_panel.setVerticalGroup(
    			gl_panel.createParallelGroup(Alignment.LEADING)
    				.addGroup(gl_panel.createSequentialGroup()
    					.addContainerGap()
    					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
    						.addComponent(lblL)
    						.addComponent(s_bookNameText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(label)
    						.addComponent(s_authorText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(label_1)
    						.addComponent(s_bookTypecomboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
    						.addComponent(s_searchBtn))
    					.addContainerGap(19, Short.MAX_VALUE))
    		);
    		panel.setLayout(gl_panel);
    		getContentPane().setLayout(groupLayout);
    		//初始化搜索栏图书类别下拉框
    		fillBookTypeComboBox("search");
    		//初始化操作栏图书类别下拉框
    		fillBookTypeComboBox("modify");
    		//初始化表格显示,显示所有的书籍
    		fillBookTable(new Book());
    	}
    	
    	/**
    	 * 图书修改事件
    	 * @param evt
    	 */
    	private void modifyBookActionPerformed(ActionEvent evt) {
    		//获取图书id
    		String id=idText.getText();
    		//获取图书名称
    		String bookName=bookNameText.getText();
    		//获取图书作者
    		String author=authorText.getText();
    		//或者作者性别
    		String sex="男";
    		if(femaleBtn.isSelected()){
    			sex="女";
    		}
    		//获取图书价格
    		String price=priceText.getText();
    		//获取图书id
    		BookType bookType=(BookType)bookTypeComboBox.getSelectedItem();
    		Integer bookTypeId=bookType.getId();
    		//获取图书描述
    		String bookDesc=bookDescText.getText();
    		
    		//判断是否id是否为空
    		if(id==null || "".equals(id)){ //为空
    			JOptionPane.showMessageDialog(null, "请选中要删除的行!");  //给用户提示
    			return;
    		}
    		//判断图书名称是否为空
    		if(bookName==null || "".equals(bookName)){ //为空
    			JOptionPane.showMessageDialog(null, "图书名称不能为空!");  //给用户提示
    			return;
    		}
    		//判断图书作者是否为空
    		if(author==null || "".equals(author)){ //为空
    			JOptionPane.showMessageDialog(null, "图书作者不能为空!");  //给用户提示
    			return;
    		}
    		//判断图书价格是否为空
    		if(price==null || "".equals(price)){ //为空
    			JOptionPane.showMessageDialog(null, "图书价格不能为空!");  //给用户提示
    			return;
    		}
    		//从获取的图书信息创建图书对象
    		Book book=new Book(Integer.parseInt(id),bookName, author, sex, Float.parseFloat(price), bookTypeId, bookDesc, null);
    		System.out.println("从获取的图书信息创建图书对象:"+book);
    		//定义数据库连接
    		Connection con=null;
    		try {
    			//获取数据库连接
    			con=DBTool.getConnetion();
    			//初始化图书数据访问对象
    			bookDao=new BookDao();
    			//执行图书访问对象的修改方法,并获得修改的记录数
    			int res=bookDao.update(con, book);
    			if(res==1){ //为1
    				JOptionPane.showMessageDialog(null,"图书修改成功n_n");
    				//刷新图书表格显示
    				fillBookTable(new Book());
    				//重置操作栏
    				resetValue();
    			}else{ //为0
    				JOptionPane.showMessageDialog(null,"图书修改失败u_u");
    			}
    		} catch (SQLException e) {
    			//记录日志
    			e.printStackTrace();
    			throw new RuntimeException("修改图书失败",e);
    		}finally{
    			//关闭数据库连接
    			DBTool.close(con);
    		}
    	}
    	/**
    	 * 图书删除事件
    	 * @param evt
    	 */
    	private void deleteBookActionPerformed(ActionEvent evt) {
    		//获取图书id
    		String id=idText.getText();
    		//判断是否id是否为空
    		if(id==null || "".equals(id)){ //为空
    			JOptionPane.showMessageDialog(null, "请选中要删除的行!");  //给用户提示
    			return;
    		}
    		//定义数据库连接对象
    		Connection con=null;
    		try {
    			//初始化数据库连接对象
    			con=DBTool.getConnetion(); 
    			//初始化图书数据访问对象
    			bookDao=new BookDao();
    			//执行图书访问对象的删除方法并返回删除的记录数
    			int res=bookDao.delete(con, Integer.parseInt(id));
    			if(res==1){ //为1
    				JOptionPane.showMessageDialog(null, "图书删除成功n_n");
    				//刷新图书表格显示
    				fillBookTable(new Book());
    				//重置操作栏
    				resetValue();
    			}else{ //为其他
    				JOptionPane.showMessageDialog(null, "图书删除失败u_u");
    			}
    		} catch (SQLException e) {
    			//记录日志
    			e.printStackTrace();
    			throw new RuntimeException("删除图书失败",e);
    		}finally{
    			//记得关闭数据库(******)
    			DBTool.close(con);
    		}
    	}
    	/**
    	 * 重置操作栏的所有值
    	 */
    	private void resetValue(){
    		idText.setText("");
    		bookNameText.setText("");
    		authorText.setText("");
    		maleBtn.setSelected(true);
    		priceText.setText("");
    		fillBookTypeComboBox("modify");
    		bookDescText.setText("");
    	}
    	/**
    	 * 表格鼠标按下事件处理
    	 * @param evt
    	 */
    	private void tableMousePressed(MouseEvent evt) {
    		//获取图书表格选中的行的行号
    		int row=bookTable.getSelectedRow();
    		//获取选中行第一个数据并设置显示在操作栏的id框
    		idText.setText((Integer)bookTable.getValueAt(row,0)+"");
    		//获取选中行第二个数据并设置显示在操作栏的图书名称框
    		bookNameText.setText((String)bookTable.getValueAt(row, 1));
    		//获取选中行第三个数据并设置显示在操作栏的图书作者框
    		authorText.setText((String)bookTable.getValueAt(row, 2));
    		//获取选中行第四个数据并设置显示在操作栏的作者性别单选框
    		String sex=(String)bookTable.getValueAt(row, 3);
    		if("男".equals(sex)){
    			maleBtn.setSelected(true);
    		}else{
    			femaleBtn.setSelected(true);
    		}
    		//获取选中行第五个数据并设置显示在操作栏的图书价格框
    		priceText.setText((Float)bookTable.getValueAt(row, 4)+"");
    		//获取选中行第六个数据并设置显示在操作栏的图书类别下拉框中
    		String bookTypeName=(String)bookTable.getValueAt(row, 5);
    		int rows=bookTypeComboBox.getItemCount();  //获取下拉框总共的选项
    		for(int i=0;i
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404
    • 405
    • 406
    • 407
    • 408
    • 409
    • 410
    • 411
    • 412
    • 413
    • 414
    • 415
    • 416
    • 417
    • 418
    • 419
    • 420
    • 421
    • 422
    • 423
    • 424
    • 425
    • 426
    • 427
    • 428
    • 429
    • 430
    • 431
    • 432
    • 433
    • 434
    • 435
    • 436
    • 437
    • 438
    • 439
    • 440
    • 441
    • 442
    • 443
    • 444
    • 445
    • 446
    • 447
    • 448
    • 449
    • 450
    • 451
    • 452
    • 453
    • 454
    • 455
    • 456
    • 457
    • 458
    • 459
    • 460
    • 461
    • 462
    • 463
    • 464
    • 465
    • 466
    • 467
    • 468
    • 469
    • 470
    • 471
    • 472
    • 473
    • 474
    • 475
    • 476
    • 477
    • 478
    • 479
    • 480
    • 481
    • 482
    • 483
    • 484
    • 485
    • 486
    • 487
    • 488
    • 489
    • 490
    • 491
    • 492
    • 493
    • 494
    • 495
    • 496
    • 497
    • 498
    • 499
    • 500
    • 501
    • 502
    • 503
    • 504
    • 505
    • 506
    • 507
    • 508
    • 509
    • 510
    • 511
    • 512
    • 513
    • 514
    • 515
    • 516
    • 517
    • 518
    • 519
    • 520
    • 521
    • 522
    • 523
    • 524
    • 525
    • 526
    • 527
    • 528
    • 529
    • 530
    • 531
    • 532
    • 533
    • 534
    • 535
    • 536
    • 537
    • 538
    • 539
    • 540
    • 541
    • 542
    • 543
    • 544
    • 545
    • 546
    • 547
    • 548
    • 549
    • 550
    • 551
    • 552
    • 553
    • 554
    • 555
    • 556
    • 557
    • 558
    • 559
    • 560
    • 561
    • 562
    • 563
    • 564
    • 565
    • 566
    • 567
    • 568
    • 569
    • 570
    • 571
    • 572
    • 573
    • 574
    • 575
    • 576
    • 577
    • 578
    • 579
    • 580
    • 581
    • 582
    • 583
    • 584
    • 585
    • 586
    • 587
    • 588
    • 589
    • 590
    • 591
    • 592
    • 593
    • 594
    • 595
    • 596
    • 597
    • 598
    • 599
    • 600
    • 601
    • 602
    • 603
    • 604
    • 605
    • 606
    • 607
    • 608
    • 609
    • 610
    • 611
    • 612
    • 613
    • 614
    • 615
    • 616
    • 617
    • 618
    • 619
    • 620
    • 621
    • 622
    • 623
    • 624
    • 625
    • 626
    • 627

    ⑥ BookAddInterFrame(图书添加界面)

    package cn.ac.azure.view;
    
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import javax.swing.ButtonGroup;
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JInternalFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JRadioButton;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.UIManager;
    import javax.swing.LayoutStyle.ComponentPlacement;
    import javax.swing.border.LineBorder;
    
    import cn.ac.azure.dao.BookDao;
    import cn.ac.azure.dao.BookTypeDao;
    import cn.ac.azure.model.Book;
    import cn.ac.azure.model.BookType;
    import cn.ac.azure.util.DBTool;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class BookAddInterFrame extends JInternalFrame {
    	private JTextField bookNameText;
    	private JTextField authorText;
    	private final ButtonGroup buttonGroup = new ButtonGroup();
    	private JTextField priceText;
    	private JComboBox bookTypeComboBox;
    	private JRadioButton maleBtn;
    	private JRadioButton femaleBtn;
    	private JTextArea bookDescText;
    
    	private BookTypeDao bookTypeDao;
    	private BookDao bookDao;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					BookAddInterFrame frame = new BookAddInterFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public BookAddInterFrame() {
    		setIconifiable(true);
    		setClosable(true);
    
    		// 改变系统默认字体
    		Font font = new Font("Dialog", Font.PLAIN, 12);
    		java.util.Enumeration keys = UIManager.getDefaults().keys();
    		while (keys.hasMoreElements()) {
    			Object key = keys.nextElement();
    			Object value = UIManager.get(key);
    			if (value instanceof javax.swing.plaf.FontUIResource) {
    				UIManager.put(key, font);
    			}
    		}
    		setTitle("图书添加 ");
    		setBounds(100, 100, 699, 449);
    
    		JLabel label = new JLabel("图书名称:");
    
    		bookNameText = new JTextField();
    		bookNameText.setColumns(10);
    
    		JLabel label_1 = new JLabel("图书作者:");
    
    		authorText = new JTextField();
    		authorText.setColumns(10);
    
    		JLabel label_2 = new JLabel("作者性别:");
    
    		maleBtn = new JRadioButton("男");
    		buttonGroup.add(maleBtn);
    
    		femaleBtn = new JRadioButton("女");
    		buttonGroup.add(femaleBtn);
    
    		JLabel label_3 = new JLabel("图书价格:");
    
    		priceText = new JTextField();
    		priceText.setColumns(10);
    
    		JLabel label_4 = new JLabel("图书类别:");
    		// 图书类别下拉框
    		bookTypeComboBox = new JComboBox();
    
    		JLabel label_5 = new JLabel("图书描述:");
    
    		bookDescText = new JTextArea();
    
    		// 图书添加按钮
    		JButton addBtn = new JButton("添加");
    		addBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				// 图书添加按钮事件处理
    				bookAddActionPerformed(e);
    			}
    		});
    		addBtn.setIcon(new ImageIcon(BookAddInterFrame.class.getResource("/images/add.png")));
    
    		// 图书重置按钮
    		JButton resetBtn = new JButton("重置");
    		resetBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				bookResetActionPerformed(e);
    			}
    		});
    		resetBtn.setIcon(new ImageIcon(BookAddInterFrame.class.getResource("/images/reset.png")));
    		GroupLayout groupLayout = new GroupLayout(getContentPane());
    		groupLayout
    				.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING)
    						.addGroup(groupLayout.createSequentialGroup().addGap(38).addGroup(groupLayout
    								.createParallelGroup(
    										Alignment.LEADING)
    								.addGroup(
    										groupLayout.createSequentialGroup().addGap(6).addGroup(groupLayout
    												.createParallelGroup(Alignment.LEADING, false)
    												.addGroup(groupLayout.createSequentialGroup().addGroup(groupLayout
    														.createParallelGroup(Alignment.LEADING, false)
    														.addGroup(groupLayout.createSequentialGroup()
    																.addComponent(label_4).addPreferredGap(
    																		ComponentPlacement.RELATED)
    																.addComponent(bookTypeComboBox, 0,
    																		GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    														.addGroup(groupLayout.createSequentialGroup()
    																.addComponent(label)
    																.addPreferredGap(ComponentPlacement.RELATED)
    																.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE,
    																		116, GroupLayout.PREFERRED_SIZE))
    														.addGroup(groupLayout.createSequentialGroup()
    																.addComponent(label_2)
    																.addPreferredGap(ComponentPlacement.RELATED)
    																.addComponent(maleBtn)
    																.addPreferredGap(ComponentPlacement.UNRELATED)
    																.addComponent(femaleBtn)))
    														.addGap(44)
    														.addGroup(groupLayout
    																.createParallelGroup(Alignment.LEADING, false)
    																.addGroup(groupLayout.createSequentialGroup()
    																		.addComponent(label_3)
    																		.addPreferredGap(ComponentPlacement.UNRELATED)
    																		.addComponent(priceText))
    																.addGroup(groupLayout.createSequentialGroup()
    																		.addComponent(label_1)
    																		.addPreferredGap(ComponentPlacement.RELATED)
    																		.addComponent(authorText,
    																				GroupLayout.PREFERRED_SIZE, 128,
    																				GroupLayout.PREFERRED_SIZE))))
    												.addGroup(groupLayout.createSequentialGroup().addComponent(label_5)
    														.addPreferredGap(ComponentPlacement.RELATED)
    														.addComponent(bookDescText)))
    												.addPreferredGap(ComponentPlacement.RELATED, 164, Short.MAX_VALUE))
    								.addGroup(groupLayout.createSequentialGroup().addGap(94).addComponent(addBtn).addGap(96)
    										.addComponent(resetBtn)))
    								.addContainerGap()));
    		groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup().addGap(32)
    						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(label)
    								.addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
    										GroupLayout.PREFERRED_SIZE)
    								.addComponent(label_1).addComponent(authorText, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    						.addGap(31)
    						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(label_2)
    								.addComponent(maleBtn).addComponent(femaleBtn).addComponent(label_3).addComponent(
    										priceText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
    										GroupLayout.PREFERRED_SIZE))
    						.addGap(37)
    						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
    								.addComponent(label_4).addComponent(bookTypeComboBox, GroupLayout.PREFERRED_SIZE,
    										GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
    						.addGap(30)
    						.addGroup(
    								groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(label_5).addComponent(
    										bookDescText, GroupLayout.PREFERRED_SIZE, 102, GroupLayout.PREFERRED_SIZE))
    						.addGap(38).addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(addBtn)
    								.addComponent(resetBtn))
    						.addContainerGap(45, Short.MAX_VALUE)));
    		getContentPane().setLayout(groupLayout);
    		// 设置文本域边框
    		bookDescText.setBorder(new LineBorder(new java.awt.Color(127, 157, 185), 1, false));
    		// 在构造函数中调用图书类别下拉框初始化方法
    		fillBookTypeName();
    		// 在构造函数中初始化性别。默认为男
    		maleBtn.setSelected(true);
    	}
    
    	/**
    	 * 重置按钮事件处理
    	 * 
    	 * @param evt
    	 *            重置按钮事件对象
    	 */
    	private void bookResetActionPerformed(ActionEvent evt) {
    		reset();
    	}
    
    	/**
    	 * 图书添加界面信息重置
    	 */
    	private void reset() {
    		bookNameText.setText("");
    		authorText.setText("");
    		maleBtn.setSelected(true);
    		priceText.setText("");
    		bookTypeComboBox.setSelectedIndex(0);
    		bookDescText.setText("");
    	}
    
    	/**
    	 * 图书添加按钮事件处理
    	 * 
    	 * @param evt
    	 *            添加事件对象
    	 */
    	private void bookAddActionPerformed(ActionEvent evt) {
    
    		String bookName = bookNameText.getText(); // 获取图书名称
    		if (bookName == null || "".equals(bookName.trim())) {
    			JOptionPane.showMessageDialog(null, "图书名称不能为空!");
    			return;
    		}
    		String author = authorText.getText(); // 获取图书作者
    
    		String sex = null; // 获取图书作者性别
    		if (maleBtn.isSelected()) {
    			sex = "男";
    		} else {
    			sex = "女";
    		}
    
    		String prices = priceText.getText(); // 获取图书价格
    		if (prices == null || "".equals(prices.trim())) {
    			JOptionPane.showMessageDialog(null, "图书价格不能为空!");
    			return;
    		}
    		float price = Float.parseFloat(prices);
    
    		BookType bookType = (BookType) bookTypeComboBox.getSelectedItem(); // 获取图书类别
    		int bookTypeId = bookType.getId(); // 获取图书类别id
    		System.out.println("ID="+bookTypeId);
    
    		String bookDesc = bookDescText.getText(); // 获取图书描述
    		
    		// 根据获取的添加图书界面获取的信息创建图书对象
    		Book book = new Book(null, bookName, author, sex, price, bookTypeId, bookName, bookDesc);
    		System.out.println("实体类:"+book);
    		// 定义数据库连接
    		Connection con = null;
    		try {
    			// 获取数据库连接
    			con = DBTool.getConnetion();
    			// 初始化图书数据访问对象
    			bookDao = new BookDao();
    			// 调用添加方法,向数据库添加书籍
    			System.out.println("5555"+book);
    			int num = bookDao.add(con, book);
    			// 根据返回值判断图书是否添加成功
    			if (num > 0) {
    				JOptionPane.showMessageDialog(null, "图书添加成功n_n");
    				// 添加成功之后重置界面
    				reset();
    			} else {
    				JOptionPane.showMessageDialog(null, "图书添加成功u_u");
    			}
    		} catch (SQLException e) {
    			// 记录日志
    			e.printStackTrace();
    			throw new RuntimeException("添加图书失败", e);
    		} finally {
    			// 关闭数据库连接
    			DBTool.close(con);
    		}
    	}
    
    	// 填充图书类别名称
    	private void fillBookTypeName() {
    		// 定义数据库连接对象
    		Connection con = null;
    		// 定义图书类别,用于查询和储存查询的书籍
    		BookType bookType = null;
    		try {
    			// 获取数据库连接
    			con = DBTool.getConnetion();
    			// 初始化图书类别访问对象
    			bookTypeDao = new BookTypeDao();
    			// 查询t_bookType中含有的图书类别
    			ResultSet rs = bookTypeDao.search(con, bookType);
    			// 遍历查询结果
    			while (rs.next()) {
    				// 出事化图书类别
    				bookType = new BookType();
    				// 设置图书的id
    				bookType.setId(rs.getInt("id"));
    				// 设置图书的名称
    				bookType.setBookTypeName(rs.getString("bookTypeName"));
    				// 将图书类别对象添加到下拉框中(这里添加对象,便于获得id)
    				bookTypeComboBox.addItem(bookType.getBookTypeName());
    			}
    		} catch (SQLException e) {
    			// 记录日志
    			e.printStackTrace();
    			throw new RuntimeException("初始化列表失败", e);
    		} finally {
    			// 关闭数据路连接
    			DBTool.close(con);
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331

    ⑦ LibraryInterFrame(关于我们界面)

    package cn.ac.azure.view;
    
    import java.awt.EventQueue;
    
    import javax.swing.JInternalFrame;
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.JLabel;
    import javax.swing.UIManager;
    import javax.swing.ImageIcon;
    import java.awt.Font;
    import java.awt.Color;
    
    public class LibraryInterFrame extends JInternalFrame {
    	
    	private static final long serialVersionUID = 1L;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					LibraryInterFrame frame = new LibraryInterFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public LibraryInterFrame() {
    		//改变系统默认字体
    		Font font = new Font("Dialog", Font.PLAIN, 12);
    		java.util.Enumeration keys = UIManager.getDefaults().keys();
    		while (keys.hasMoreElements()) {
    			Object key = keys.nextElement();
    			Object value = UIManager.get(key);
    			if (value instanceof javax.swing.plaf.FontUIResource) {
    				UIManager.put(key, font);
    			}
    		}
    		setClosable(true);
    		setIconifiable(true);
    		setBounds(450, 150, 503, 300);
    		
    		JLabel label = new JLabel("");
    		label.setIcon(new ImageIcon(LibraryInterFrame.class.getResource("/images/library.png")));
    		
    		JLabel label_1 = new JLabel("欢迎使用图书管理系统");
    		label_1.setForeground(Color.GREEN);
    		label_1.setBackground(Color.GREEN);
    		label_1.setFont(new Font("宋体", Font.PLAIN, 20));
    		GroupLayout groupLayout = new GroupLayout(getContentPane());
    		groupLayout.setHorizontalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup()
    					.addContainerGap(140, Short.MAX_VALUE)
    					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
    						.addGroup(Alignment.TRAILING, groupLayout.createSequentialGroup()
    							.addComponent(label)
    							.addGap(175))
    						.addGroup(Alignment.TRAILING, groupLayout.createSequentialGroup()
    							.addComponent(label_1)
    							.addGap(137))))
    		);
    		groupLayout.setVerticalGroup(
    			groupLayout.createParallelGroup(Alignment.LEADING)
    				.addGroup(groupLayout.createSequentialGroup()
    					.addGap(39)
    					.addComponent(label)
    					.addGap(28)
    					.addComponent(label_1)
    					.addContainerGap(51, Short.MAX_VALUE))
    		);
    		getContentPane().setLayout(groupLayout);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83

    5、数据库【db_book】

    /*
     Navicat Premium Data Transfer
    
     Source Server         : 127.0.0.1
     Source Server Type    : MySQL
     Source Server Version : 50733
     Source Host           : localhost:3306
     Source Schema         : db_book
    
     Target Server Type    : MySQL
     Target Server Version : 50733
     File Encoding         : 65001
    
     Date: 19/07/2021 17:34:44
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for t_book
    -- ----------------------------
    DROP TABLE IF EXISTS `t_book`;
    CREATE TABLE `t_book`  (
      `id` int(50) NOT NULL AUTO_INCREMENT,
      `bookName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `author` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `sex` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `price` double(50, 2) NULL DEFAULT NULL,
      `bookTypeId` int(50) NULL DEFAULT NULL,
      `bookTypeName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `bookDesc` varchar(5000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `fk_booktype`(`bookTypeId`) USING BTREE,
      CONSTRAINT `fk_booktype` FOREIGN KEY (`bookTypeId`) REFERENCES `t_booktype` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
    ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of t_book
    -- ----------------------------
    INSERT INTO `t_book` VALUES (1, '《人间失格》', '(日)太宰治', '男', 66.00, 1, '小说', '(日本小说家太宰治代表作,一个对村上春树影响至深的绝望凄美故事)');
    INSERT INTO `t_book` VALUES (2, '《三体》', '刘慈欣', '女', 55.80, 1, '小说', '刘慈欣代表作,亚洲首部“雨果奖”获奖作品!
    《三体》第73届世界科幻雨果奖获奖作品,银河奖特别奖,《三体3》轨迹奖长篇科幻小说!2017年世界雨果奖提名作品。');
    INSERT INTO `t_book` VALUES (3, '《人生海海》', '麦家', '男', 55.00, 2, '文化科学', '麦家重磅力作,莫言、董卿盛赞,连续两年高居各大畅销榜,发行量超180万册,罗一舟同款书)
    上校赢了所有的仗,却败给一个不足道的秘密。茅盾文学奖得主麦家暌违8年,打磨5年,挑战常人不敢落笔之处,解密人性的荒唐与高尚。人生海海,何必在意一时沉浮!');
    INSERT INTO `t_book` VALUES (4, '《大国崛起》', '唐晋', '男', 50.40, 2, '历史', '以历史的眼光和全球的视野解读15世纪以来9个世界性大国崛起的历史,中国能否成为第十个崛起的大国?');
    INSERT INTO `t_book` VALUES (5, '《中华人民共和国民法典》', '法律出版社', '男', 8.10, 2, '哲学、社会', '民法典是新中国首部以“法典”命名的法律,是新时代我国社会主义法治建设的重大成果,是为百姓生活量身定制的权利宝典。自2021年1月1日起施行。');
    
    -- ----------------------------
    -- Table structure for t_booktype
    -- ----------------------------
    DROP TABLE IF EXISTS `t_booktype`;
    CREATE TABLE `t_booktype`  (
      `id` int(50) NOT NULL AUTO_INCREMENT,
      `bookTypeName` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `bookTypeDesc` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of t_booktype
    -- ----------------------------
    INSERT INTO `t_booktype` VALUES (1, 'A 马克思主义、列宁主义、毛泽东思想、邓小平理论', 'A 马克思主义、列宁主义、毛泽东思想、邓小平理论');
    INSERT INTO `t_booktype` VALUES (2, 'B 哲学、宗教', 'B 哲学、宗教');
    INSERT INTO `t_booktype` VALUES (3, 'C 社会科学总论', 'C 社会科学总论');
    INSERT INTO `t_booktype` VALUES (4, 'D 政治、法律', 'D 政治、法律');
    INSERT INTO `t_booktype` VALUES (5, 'F 经济', 'F 经济');
    INSERT INTO `t_booktype` VALUES (6, 'G 文化、科学、教育、体育', 'G 文化、科学、教育、体育');
    INSERT INTO `t_booktype` VALUES (7, 'H 语言、文字', 'H 语言、文字');
    INSERT INTO `t_booktype` VALUES (8, 'I 文学', 'I 文学');
    INSERT INTO `t_booktype` VALUES (9, 'J 艺术', 'J 艺术');
    INSERT INTO `t_booktype` VALUES (10, 'K 历史、地理', 'K 历史、地理');
    INSERT INTO `t_booktype` VALUES (11, 'N 自然科学总论', 'N 自然科学总论');
    INSERT INTO `t_booktype` VALUES (12, 'O 数理科学和化学', 'O 数理科学和化学');
    INSERT INTO `t_booktype` VALUES (13, 'Q 生物科学', 'Q 生物科学');
    INSERT INTO `t_booktype` VALUES (14, 'R 医药、卫生  ', 'R 医药、卫生');
    INSERT INTO `t_booktype` VALUES (15, 'S 农业科学', 'S 农业科学');
    INSERT INTO `t_booktype` VALUES (16, 'T-TN 工业技术', 'T-TN 工业技术');
    INSERT INTO `t_booktype` VALUES (17, 'TP 自动化技术、计算机技术', 'TP 自动化技术、计算机技术');
    INSERT INTO `t_booktype` VALUES (18, 'TQ 化学工业', 'TQ 化学工业');
    INSERT INTO `t_booktype` VALUES (19, 'TU 建筑科学', 'TU 建筑科学');
    INSERT INTO `t_booktype` VALUES (20, 'TV 水利工程', 'TV 水利工程');
    INSERT INTO `t_booktype` VALUES (21, 'U 交通运输', 'U 交通运输');
    INSERT INTO `t_booktype` VALUES (22, 'V 航空、航天', 'V 航空、航天');
    INSERT INTO `t_booktype` VALUES (23, 'X 环境科学、安全科学', 'X 环境科学、安全科学');
    INSERT INTO `t_booktype` VALUES (24, 'Z 综合性图书', 'Z 综合性图书');
    
    -- ----------------------------
    -- Table structure for t_user
    -- ----------------------------
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user`  (
      `id` int(50) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of t_user
    -- ----------------------------
    INSERT INTO `t_user` VALUES (1, '11', '123456');
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104

    三、项目地址:

    CSDN赞助下载:

    https://download.csdn.net/download/weixin_44893902/20367467

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    C语言——有一篇文章,共有 3 行文字,每行有 80 个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数
    Endpoint Central自动化软件部署
    铭文是什么?有什么价值?
    深入了解Spring循环依赖本质
    关于博客园绝境求商的一点点感想!
    等保测评有那些流程?为什么要做等保
    JavaScript如何打开和使用JavaScript控制台
    【高效开发工具系列】PlantUML入门使用
    Pr怎么消除人声?三个方法解决!
    拥抱云原生,Java与Python基于gRPC通信
  • 原文地址:https://blog.csdn.net/asdfadafd/article/details/126081055