目录

运行效果:

注册登陆界面

登陆之后主界面如下

图书列表

项目说明:

关键代码:

源码获取:

如何运行:


运行效果:

注册登陆界面

注册存在的账户时

登陆之后主界面如下

点击图书管理-图书更新界面如下

图书列表

项目说明:

由于平时工作比较忙,也没时间写,可是我在公众号后台看见好多小伙伴讨论,我就抽时间写个当作参考。本系统界面我个人就从简设计了,本来打算使用windowbuilder插件设计的,可想到使用windowbuilder插件之后导致代码冗余,会影响到代码可读性,可能对小白不友好。虽然界面设计简单,但是功能上我会尽量想着写全,当然对于页面你可以增加自己的设计,比如增加一个背景图片等,网上都有指导,对于界面美观度从简了。

关键代码:

用户登陆

package bookmanage.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import bookmanage.model.User;
import bookmanage.utils.DbUtil;/*** @Description 连接数据库工具类* @author com.javayihao.top*/
public class UserDao {/*** 根据用户账号查询用户* * @param accout*            入参:用户账号* @return 查找的用户*/public User getUserByAccout(String accout) {Connection connection = DbUtil.getConnection();String sql = "select accout,pass from t_user where accout=?";try {PreparedStatement ps = connection.prepareStatement(sql);ps.setString(1, accout);ResultSet rs = ps.executeQuery();if (rs.next()) {// 存在用户,封装用户返回User user = new User(rs.getString("accout"), rs.getString("pass"));DbUtil.close(connection, ps);// 关闭连接return user;}} catch (SQLException e) {e.printStackTrace();}return null;}public boolean insertUser(User user) {Connection connection = DbUtil.getConnection();// 获得数据库连接对象String sql = "insert into t_user(accout,pass)values(?,?)";try {PreparedStatement ps = connection.prepareStatement(sql);ps.setString(1, user.getAccout());ps.setString(2, user.getPass());if (!ps.execute()) {// 成功DbUtil.close(connection, ps);// 关闭连接return true;}} catch (SQLException e) {e.printStackTrace();}return false;// 失败}
}

图书更新

package bookmanage.view;import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;import bookmanage.dao.BookDao;
import bookmanage.model.Book;/*** @Description 用于图书增删改查面板* @author com.javayihao.top*/
public class CrudBookPanel extends JPanel implements ActionListener {// 定义首页按钮、图书列表按钮、 其他功能按钮,增加图书、删除图书、修改图书、查询图书private JButton addBtn, deleteBtn, updateBtn, findBtn;// 定义标签 底部信息标签、 图书编号、 图书名称、 图书数量、 图书价格private JLabel idLabel, nameLabel, numLabel, priceLabel;// 定义图书编号、 名称、 数量、 价格文本框private JTextField idJTextField, nameJTextField, numJTextField, priceJTextField;// 定义文本对象private String bookIdText;private String bookNameText;private String bookNumText;private String bookPriceText;// 图书数量和价格private Integer numBook;private Float priceBook;// 定义对象BookDaoprivate BookDao bookDao;public CrudBookPanel() {bookDao = new BookDao();//实例化图书操作对象// 实例化增删改查按钮addBtn = new JButton("增加图书");addBtn.addActionListener(this);// 设置图书增加按钮监听addBtn.setActionCommand("addbook");deleteBtn = new JButton("删除图书");deleteBtn.addActionListener(this);// 设置图书删除按钮监听deleteBtn.setActionCommand("deletebook");updateBtn = new JButton("修改图书");updateBtn.addActionListener(this);// 设置图书修改按钮监听updateBtn.setActionCommand("updatebook");findBtn = new JButton("查询图书");findBtn.addActionListener(this);// 设置图书查询按钮监听findBtn.setActionCommand("findbook");// 实例化图书编号 名称 数量 价格标签idLabel = new JLabel("图书编号");nameLabel = new JLabel("图书名称");priceLabel = new JLabel("图书价格");numLabel = new JLabel("图书数量");// 实例化文本框idJTextField = new JTextField(12);nameJTextField = new JTextField(12);numJTextField = new JTextField(12);priceJTextField = new JTextField(12);this.setLayout(new GridLayout(6, 2, 2, 2));// 给增删改查面板添加图书编号 名称 数量 价格标签以及文本框this.add(idLabel);this.add(idJTextField);this.add(nameLabel);this.add(nameJTextField);this.add(priceLabel);this.add(priceJTextField);this.add(numLabel);this.add(numJTextField);// 给增删改查面板添加图书编号 名称 数量 价格按钮this.add(addBtn);this.add(deleteBtn);this.add(updateBtn);this.add(findBtn);}@Overridepublic void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("addbook")) {// 添加图书addbook();} else if (e.getActionCommand().equals("deletebook")) {// 删除图书deleteBook();} else if (e.getActionCommand().equals("updatebook")) {// 修改图书updateBook();} else if (e.getActionCommand().equals("findbook")) {// 查询图书findBook();}}/*** 查询图书*/private void findBook() {bookIdText = idJTextField.getText().trim().toString();Book book = bookDao.getBookById(bookIdText);if (bookIdText.equals("")) {JOptionPane.showMessageDialog(this, "图书编号不能为空");} else if (book != null) {// 当前输入的图书编号存在try {nameJTextField.setText(book.getName());// 填充图书名称文本框numJTextField.setText(book.getNum() + "");// 将数字类型转成字符串并填充文本框priceJTextField.setText(book.getPrice() + "");// 将数字类型转成字符串并填充文本框} catch (Exception e) {JOptionPane.showMessageDialog(this, "图书查询异常  请联系管理员");}} else {JOptionPane.showMessageDialog(this, "图书不存在");}}/*** 修改图书*/private void updateBook() {bookIdText = idJTextField.getText().trim().toString();bookNameText = nameJTextField.getText().trim().toString();bookNumText = numJTextField.getText().trim().toString();bookPriceText = priceJTextField.getText().trim().toString();if (bookIdText.equals("")) {JOptionPane.showMessageDialog(this, "图书编号不能为空");} else if (bookNameText.equals("")) {JOptionPane.showMessageDialog(this, "图书名称不能为空");} else if (bookNumText.equals("")) {JOptionPane.showMessageDialog(this, "图书数量不能为空");} else if (bookPriceText.equals("")) {JOptionPane.showMessageDialog(this, "图书价格不能为空");} else {// 将图书数量和图书价格转成对应的数字类型if (bookDao.getBookById(bookIdText) == null) {// 图书不存在JOptionPane.showMessageDialog(this, "输入正确的图书编号");} else {try {numBook = Integer.parseInt(bookNumText);priceBook = Float.parseFloat(bookPriceText);bookDao.updateBook(new Book(bookIdText, bookNameText, numBook, priceBook));JOptionPane.showMessageDialog(this, "图书修改成功");} catch (Exception e) {JOptionPane.showMessageDialog(this, "输入正确的图书数量和价格");e.printStackTrace();}}}}/*** 删除图书*/private void deleteBook() {bookIdText = idJTextField.getText().trim().toString();if (bookIdText.equals("")) {JOptionPane.showMessageDialog(this, "图书编号不能为空");} else if (bookDao.getBookById(bookIdText) != null) {// 当前输入的图书编号是否存在try {bookDao.deleteBootByid(bookIdText);JOptionPane.showMessageDialog(this, "图书删除成功");} catch (Exception e) {JOptionPane.showMessageDialog(this, "图书删除异常  请联系管理员");}} else {JOptionPane.showMessageDialog(this, "图书不存在");}}/*** 增加图书*/private void addbook() {bookIdText = idJTextField.getText().trim().toString();bookNameText = nameJTextField.getText().trim().toString();bookNumText = numJTextField.getText().trim().toString();bookPriceText = priceJTextField.getText().trim().toString();if (bookIdText.equals("")) {JOptionPane.showMessageDialog(this, "图书编号不能为空");} else if (bookNameText.equals("")) {JOptionPane.showMessageDialog(this, "图书名称不能为空");} else if (bookNumText.equals("")) {JOptionPane.showMessageDialog(this, "图书数量不能为空");} else if (bookPriceText.equals("")) {JOptionPane.showMessageDialog(this, "图书价格不能为空");} else {// 将图书数量和图书价格转成对应的数字类型if (bookDao.getBookById(bookIdText) != null) {// 编号重复JOptionPane.showMessageDialog(this, "图书编号重复");} else {try {numBook = Integer.parseInt(bookNumText);priceBook = Float.parseFloat(bookPriceText);bookDao.insertBoot(new Book(bookIdText, bookNameText, numBook, priceBook));JOptionPane.showMessageDialog(this, "图书增加成功");} catch (Exception e) {JOptionPane.showMessageDialog(this, "输入正确的图书数量和价格");e.printStackTrace();}}}}
}

图书列表

package bookmanage.view;import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.Vector;import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;import bookmanage.dao.BookDao;
import bookmanage.model.Book;/*** 自定义图书列表面板* @author com.javayihao.top*/
public class ListPanel extends JPanel {// 从数据库中取出信息// rowData用来存放行数据// columnNames存放列名Vector rowData, columnNames;JTable jt = null;JScrollPane jsp = null;// 构造函数public ListPanel() {ArrayList<Book> books = new BookDao().getBookList();columnNames = new Vector();// 设置列名columnNames.add("图书编号");columnNames.add("图书名称");columnNames.add("图书价格");columnNames.add("图书数量");rowData = new Vector();for (int i = 0; i < books.size(); i++) {//实例化每一行数据Vector hang = new Vector();hang.add(books.get(i).getId());hang.add(books.get(i).getName());hang.add(books.get(i).getPrice());hang.add(books.get(i).getNum());// 加入到rowDatarowData.add(hang);}// 初始化Jtablejt = new JTable(rowData, columnNames);// 初始化 jspjsp = new JScrollPane(jt);this.add(jsp);}
}

数据库

/*
Navicat MySQL Data TransferSource Server         : localhost
Source Server Version : 50527
Source Host           : localhost:3306
Source Database       : db_bookTarget Server Type    : MYSQL
Target Server Version : 50527
File Encoding         : 65001Date: 2019-12-23 13:01:43
*/SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for t_book
-- ----------------------------
DROP TABLE IF EXISTS `t_book`;
CREATE TABLE `t_book` (`id` varchar(20) NOT NULL,`name` varchar(255) NOT NULL,`num` int(11) NOT NULL,`price` float(10,2) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of t_book
-- ----------------------------
INSERT INTO `t_book` VALUES ('123456', 'java入门到精通', '100', '22.00');
INSERT INTO `t_book` VALUES ('123457', 'c++实战', '100', '50.00');
INSERT INTO `t_book` VALUES ('123458', '微服务电商实战', '22', '1.00');-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (`accout` varchar(255) NOT NULL,`pass` varchar(255) NOT NULL,PRIMARY KEY (`accout`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('123', '123');
INSERT INTO `t_user` VALUES ('123456', '123456');
INSERT INTO `t_user` VALUES ('1234567', '123456');
INSERT INTO `t_user` VALUES ('admin', 'admin');
INSERT INTO `t_user` VALUES ('dsfasdfa', 'afasdf');
INSERT INTO `t_user` VALUES ('fdsaf', 'adfas');

源码获取:

本来打算放在github上的,考虑到许多小伙伴不会用github,就放在我个人公众号:程序三两行  回复 “图书” 即可

如何运行:

1. 先说下运行环境吧,java+eclipse+mysql,所以首先java环境得有,本地安装了mysql数据库,关于数据库图形化界面工具我用得是navicat;

2. 创建数据库db_book,在获取代码文件中有个db_book.sql文件,记事本打开复制到刚才创建得db_book数据库直接查询运行即可

3. 打开eclipse

点击运行

友情提示

项目主要是用来练习java的面向对象思想,至于java中的swing编程知识,也就是界面编程建议不要花过多时间美化设计,完全没有必要,市场上很少会使用java Swing去编cs软件。

有问题可以联系  公众号   程序三两行

java图书管理系统(界面版本)相关推荐

  1. [附源码]计算机毕业设计JAVA图书管理系统

    [附源码]计算机毕业设计JAVA图书管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Intell ...

  2. java图书管理系统技术难度_Java图书管理系统练习程序(一)

    Java图书管理系统练习程序 第一部分 该部分主要实现命令行方式的界面与无数据库访问的练习,通过本练习.主要掌握Java的基础知识与面向对象程序设计思想.面向接口编程技术的知识与运用. 一.练习程序功 ...

  3. 视频教程-手把手实现Java图书管理系统(附源码)-Java

    手把手实现Java图书管理系统(附源码) 南京大学软件工程硕士,曾就职于擎天科技.中软国际.华为等上市公司,擅长Java开发.Web前端.Python爬虫.大数据等领域技术. 全栈工程师,从事软件开发 ...

  4. java图书管理系统源码

    java图书管理系统源码 系统主要功能 读者:登录注册,借阅还书,查询书籍,查看当前借阅信息以及历史借阅信息,查看.查询读者借阅榜以及借阅书籍借阅榜,问题反馈以及查询反馈结果等功能. 管理员:对图书. ...

  5. Java图书管理系统练习程序(四)

    2019独角兽企业重金招聘Python工程师标准>>> Java图书管理系统练习程序(四) 本部分主要介绍List的基本操作与Java中泛型的使用. 一.Java中泛型的使用 泛型, ...

  6. java设置图书管理系统界面设计_java 图书管理系统 界面漂亮 绝对好用

    [实例简介] 图书管理系统,界面美观漂亮,绝对可以运行 [实例截图] [核心代码] 图书管理系统 └── 图书管理系统 ├── Database │   ├── db_librarySys │   │ ...

  7. 我的第一个项目----Java图书管理系统

    项目参考自:http://www.java1234.com/a/yuanchuang/swing2/ 项目视频及代码下载地址:链接:http://pan.baidu.com/s/1pLpQw2J 密码 ...

  8. java图书管理系统目的_java_图书管理系统java版,本文的目的就是通过图书管理 - phpStudy...

    图书管理系统java版 本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出 ...

  9. 基于JSP(java)图书管理系统的设计和实现(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 摘 要 伴随着互联网的蓬勃发展,人们已经不再满足于信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利.掌握计算机知识和应用 ...

最新文章

  1. IBM中国研究院被曝已全面关闭
  2. 20线程测试cpu性能软件,CPU常用跑分软件 你知道那些?
  3. htmlspecialchars() improvements in PHP 5.4
  4. spring MVC配置详解
  5. python 爬虫爬不出来_爬虫爬不进下一页了,怎么办
  6. vc mysql query_我要使用mysql_query()这个函数,在VC中需要做什么工作?
  7. c语言指针慕课,C语言-指针
  8. Self Host WebApi服务传输层SSL加密(服务器端+客户端调用)
  9. 来电通java版_Java 程序员常用的 11 款免费 IDE 编辑器
  10. 《深入浅出WPF》学习笔记之一
  11. 系统服务器iis如何启动不了,win7系统iis启动不了的详细解决步骤
  12. Windows7旗舰版SP1_64位2018.10(装机版)
  13. DASCTF X GFCTF 2022十月挑战赛 WriteUp
  14. 17-chan原理1-创建
  15. 一招破解外网访问公司内网svn服务器
  16. ueditor 前后端分离+图片上传
  17. Linux input子系统上报键值失败问题
  18. 蓝牙进阶之路 (003) - AT指令(转)
  19. 关于matlab中矩阵的运算
  20. 为什么要使用代理IP,使用代理IP有什么好处?

热门文章

  1. “35岁转管理,不写代码感觉心里发虚!” “难道继续写就不虚?”
  2. nodejs+vue美食分享网站express
  3. 小而美 | Mac上鲜为人知,但极大提升效率的小工具
  4. hamachi联机_hamachi怎么进行联机_hamachi联机流程详解
  5. 数据挖掘小白系列!SVM与混淆矩阵
  6. 软件项目管理系统-应用范围
  7. 菜鸟先飞之初识Linux操作系统
  8. 独孤思维:想要赚钱,请先打破。。
  9. 迅为iTOP-2K1000开发板龙芯中科国产64位Loognix系统工业核心主板
  10. PCIE总线理解笔记