java Swing实现图书管理系统

学习swing实现图书管理系统,本文实现该系统的功能截图,和数据库设计SQL语句供大家参考

1.图书管理系统技术架构

主要技术
Java Swing
开发工具和环境
Eclipse
JDK 1.7
Mysql 5.6
Win10 操作系统

2.图书管理系统数据库设计

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `role` int(255) DEFAULT NULL COMMENT '角色  1学生 2管理员',
  `sex` varchar(1) DEFAULT NULL,
  `phone` char(11) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT

CREATE TABLE `book_type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type_name` varchar(255) DEFAULT NULL,
  `remark` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT

CREATE TABLE `book` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `book_name` varchar(255) DEFAULT NULL,
  `type_id` int(11) DEFAULT NULL,
  `author` varchar(255) DEFAULT NULL,
  `publish` varchar(255) DEFAULT NULL,
  `price` double(10,2) DEFAULT NULL,
  `number` int(11) DEFAULT NULL,
  `status` int(11) DEFAULT '1' COMMENT '状态 1上架0下架',
  `remark` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT

CREATE TABLE `borrowdetail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `book_id` int(11) NOT NULL,
  `status` int(11) NOT NULL COMMENT '状态  1在借2已还',
  `borrow_time` bigint(20) DEFAULT NULL,
  `return_time` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT
public class UserDao {
	
	public User login(Connection con,User user)throws Exception {
		User resultUser = null;
		String sql = "select * from user where username=? and password=? and role = ?";
	    PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
		pstmt.setString(1,user.getUserName());
		pstmt.setString(2,user.getPassword());
		pstmt.setInt(3,user.getRole());
	    ResultSet rs = pstmt.executeQuery();
	    if(rs.next()){
	    	resultUser = new User();
	    	resultUser.setUserId(rs.getInt("id"));
	    	resultUser.setUserName(rs.getString("username"));
	    	resultUser.setSex(rs.getString("sex"));
	    	resultUser.setPhone(rs.getString("phone"));
	    }
		return resultUser;
	}
	
	public int addUser(Connection con,User user) throws Exception{
		//查询注册用户名是否存在
		String sql = "select * from user where userName=? ";
	    PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
		pstmt.setString(1,user.getUserName());
	    ResultSet rs = pstmt.executeQuery();
	    if(rs.next()){
	    	return 2;
	    }
	    
	    sql="insert into user (username,password,role,sex,phone) values (?,?,?,?,?)";
	    PreparedStatement pstmt2=(PreparedStatement) con.prepareStatement(sql);
		pstmt2.setString(1, user.getUserName());
		pstmt2.setString(2, user.getPassword());
		pstmt2.setInt(3, user.getRole());
		pstmt2.setString(4,user.getSex());
		pstmt2.setString(5,user.getPhone());
		return pstmt2.executeUpdate();
	}
	
	
	public ResultSet list(Connection con,User user)throws Exception{
		StringBuffer sb=new StringBuffer("select * from user where role = 1");
		if(!toolUtil.isEmpty(user.getUserName())){
			sb.append(" and username like '%"+user.getUserName()+"%'");
		}
		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sb.toString());
		return pstmt.executeQuery();
	}
	
	public int update(Connection con,User user)throws Exception{
		String sql="update user set username=?,password=?,sex=?,phone=? where id=?";
		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sql);
		pstmt.setString(1, user.getUserName());
		pstmt.setString(2, user.getPassword());
		pstmt.setString(3, user.getSex());
		pstmt.setString(4, user.getPhone());
		pstmt.setInt(5, user.getUserId());
		return pstmt.executeUpdate();
	}
}

public class BookDao {
	
	// 图书添加
	public int add(Connection con,Book book)throws Exception{
		String sql="insert into book (book_name,type_id,author,publish,price,number,status,remark) values(?,?,?,?,?,?,?,?)";
		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sql);
		pstmt.setString(1, book.getBookName());
		pstmt.setInt(2, book.getBookTypeId());
		pstmt.setString(3, book.getAuthor());
		pstmt.setString(4, book.getPublish());
		pstmt.setDouble(5, book.getPrice());
		pstmt.setInt(6, book.getNumber());
		pstmt.setInt(7, book.getStatus());
		pstmt.setString(8, book.getRemark());
		return pstmt.executeUpdate();
	}
	
	// 图书信息查询
	public ResultSet list(Connection con,Book book)throws Exception{
		StringBuffer sb=new StringBuffer("select b.*,bt.type_name from book b,book_type bt where b.type_id=bt.id");
		if(!toolUtil.isEmpty(book.getBookName())){
			sb.append(" and b.book_name like '%"+book.getBookName()+"%'");
		}
		if(!toolUtil.isEmpty(book.getAuthor())){
			sb.append(" and b.author like '%"+book.getAuthor()+"%'");
		}
		if(book.getBookTypeId()!=null && book.getBookTypeId()!=0){
			sb.append(" and b.type_id="+book.getBookTypeId());
		}
		if(book.getStatus()!=null){
			sb.append(" and b.status="+book.getStatus());
		}
		if(book.getBookId() != null){
			sb.append(" and b.id="+book.getBookId());
		}
		sb.append(" ORDER BY b.status");
		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sb.toString());
		return pstmt.executeQuery();
		
		
	}
	
	// 图书信息查询(学生)
	public ResultSet listCan(Connection con,Book book)throws Exception{
		StringBuffer sb=new StringBuffer("select b.*,bt.type_name from book b,book_type bt where type_id=bt.id and b.status = 1");
		if(!toolUtil.isEmpty(book.getBookName())){
			sb.append(" and b.book_name like '%"+book.getBookName()+"%'");
		}
		if(book.getBookId() != null){
			sb.append(" and b.id="+book.getBookId());
		}
		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sb.toString());
		return pstmt.executeQuery();
	}
	
	//图书信息删除
	public int delete(Connection con,String id)throws Exception{
		String sql="delete from book where id=?";
		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sql);
		pstmt.setString(1, id);
		return pstmt.executeUpdate();
	}
	
	//图书信息修改
	public int update(Connection con,Book book)throws Exception{
		String sql="update book set book_name=?,type_id=?,author=?,publish=?,price=?,number=?,status=?,remark=? where id=?";
		PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sql);
		pstmt.setString(1, book.getBookName());
		pstmt.setInt(2, book.getBookTypeId());
		pstmt.setString(3, book.getAuthor());
		pstmt.setString(4, book.getPublish());
		pstmt.setDouble(5, book.getPrice());
		pstmt.setInt(6, book.getNumber());
		pstmt.setInt(7, book.getStatus());
		pstmt.setString(8, book.getRemark());
		pstmt.setInt(9, book.getBookId());
		return pstmt.executeUpdate();
	}
	
}


3.图书管理系统管理员功能

3.1图书管理系统登录页面,登录者可根据不同角色进行登录

在这里插入图片描述
3.2图书管理系统注册页面,用户可以通过注册后登录该系统
在这里插入图片描述
3.3图书管理系统管理员添加书目类别页面
管理员可以添加图书属于哪种类型的,并对该类别做详细说明
在这里插入图片描述
3.4图书管理系统管理员查看、修改、删除书目类别页面
在这里插入图片描述
3.5图书管理系统管理员添加书籍页面
在这里插入图片描述
3.6图书管理系统管理员查看、修改、删除书籍页面
在这里插入图片描述
3.7图书管理系统管理员查看、修改用户页面
在这里插入图片描述
3.8图书管理系统管理员查看用户借阅信息页面
在这里插入图片描述

4.图书管理系统用户功能

用户可以查看历史借阅信息,也可以借书还书。
在这里插入图片描述

  • 41
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java Swing是一种基于JavaGUI工具包,可以用来实现图书管理系统的界面设计和交互功能。在实现图书管理系统时,可以使用Java Swing来创建各种控件,如按钮、文本框、下拉框等,以及布局管理器来控制它们的位置和大小。同时,可以使用Java Swing提供的事件处理机制来实现用户与系统的交互,如点击按钮、输入文本等操作。通过这些功能的组合,可以实现一个功能完善、易于使用的图书管理系统。 ### 回答2: Java SwingJava 提供的 GUI 工具包,用于创建 Java Desktop 应用程序。图书管理系统是一个常见的应用程序场景,因此我们可以考虑使用 Java Swing 实现一个图书管理系统。 下面是 Java Swing 实现图书管理系统的一些步骤: 1. 设计 GUI 界面。首先需要设计程序的界面,包括主界面、登录界面、添加图书界面、查询图书界面等等。可以使用 Swing 提供的窗口、文本框、标签等组件进行设计。 2. 数据库设计。因为是图书管理系统,需要根据一些特定的需求设计数据库。数据可以存储在关系型数据库中,如 MySQL 或 Oracle。需要设计表、字段、索引等等,并确保表之间的连接合理。 3. 实现业务逻辑。实现添加图书、查询图书、借阅归还等一些业务逻辑。可以使用 Java 连接数据库,执行 SQL 语句进行数据的插入、查询和更新。 4. 实现登录验证。为了保护数据的安全性,需要在程序中实现用户登录验证。可以将用户信息存储在数据库中,每次用户登录时验证用户名和密码是否正确。 5. 实现界面和业务逻辑的交互。将界面和业务逻辑集成起来,实现各种操作的响应。可以使用 Swing 提供的事件监听机制,响应用户的点击事件。 总体来说,Java Swing 实现图书管理系统的过程需要对 Java 编程语言和 Swing GUI 工具包都有一定的掌握程度。需要了解如何设计 GUI 界面,连接数据库,执行 SQL 语句等等。同时还需要具备编程的技能,能够实现程序中的各种逻辑。 ### 回答3: Java SwingJava语言的GUI(图形用户界面)工具包,能够帮助开发者简单、快速地创建各种应用程序的用户界面。使用Java Swing实现图书管理系统,可以创建一个美观、易用的界面,方便用户进行各种操作。 图书管理系统需要实现的功能包括图书的添加、删除、修改、查询,以及用户的注册、登录、借阅、归还等功能。利用Java Swing可以方便地实现这些功能,创建窗口、标签、文本框、按钮等控件,并在控件上绑定事件,从而实现各种操作。 在实现图书库存管理方面,可以使用Java Swing提供的JTable控件来实现表格数据的展示和编辑。或者也可以引入第三方外部库,比如Apache POI,在程序中操作Excel表格,实现图书库存数据的导入和导出。 此外,为了确保数据的安全性,图书管理系统还需要实现账户管理和权限控制功能。使用Java Swing可以方便地创建注册和登录界面,并在后台实现用户身份验证。开发者还可以引入第三方库,比如Apache Shiro,实现更为细致的权限控制。 总之,使用Java Swing实现图书管理系统,开发者可以依靠其丰富的控件和事件库,快速实现图书管理系统的各种功能,简化开发流程,提升开发效率。同时,Java语言本身也具有跨平台性,可以保证图书管理系统可以在不同的操作系统和设备上顺利运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值