第一个Java项目——图书管理系统初学者必备!!!

GitHub链接:https://github.com/uphe/booksystem

源码链接:https://pan.baidu.com/s/1MuL91jInCIQk_TU_X_Pb7g
提取码:pukw

下载之后直接导入即可查看源代码,里面牵扯到有数据库的内容,故须博友们自己创建数据库,完成此项目用的是JDK8版本,数据库是MySQL,编译器用的是eclipse

刚开始学习Java,把Java基础学完之后,用这个项目练练手,我以图书为例,该图书管理系统,实现了图书的增删改查,以及对用户的注册删除功能,功能较简单,很适合初学者,下面给大家介绍一下我的思路

目录

一、程序整体框架

二、建立数据库

三、util包下的连接数据库

四、util包下的字符串判断

五、model包下的图书类

六、dao包下图书的增删改查

七、implement包下的具体功能实现:

八,view包下的主界面:


一、程序整体框架

首先看看我的整体框架吧:

这是我整个程序中的包,其中com.book.dao是用来实现增删改查功能的,下面是以图书的增删该查为例做以介绍,其次是com.book.model包,该包下主要是各个实体的属性,里面主要是成员变量,构造方法,成员方法,下面主要以图书来介绍,com.function.implement包,该包主要是实现功能界面的,com.java.view包主要是实现主界面,util包就是工具包了,用来实现数据库的连接以及判断字符串是否为空

首先看看我的主界面吧,界面很简单:

这是我的注册界面:

登录成功的话,就能看见功能界面了:

功能界面里,以添加图书为例:

这就是大致的界面了,下面给大家讲解一下各个界面以及程序的实现。

二、建立数据库

在写这个项目的时候,我首先是建立的数据库,我的图书信息主要有图书号,图书名,图书的出版社,和图书的作者。

如果说你还不会安装Mysql,你可以参考这个博客https://blog.csdn.net/HeZhiYing_/article/details/91128340

这里面的图书是我为了演示效果随便添加的。

三、util包下的连接数据库

当我把数据库建好之后,就开始写代码了,写代码时首先是连接数据库,连接数据库我用的是JDBC

我们安装好mysql之后,我们的应用程序eclipse是不能直接操纵数据库的,必须先安装数据库驱动,也就是一个jar包

可以通过该网址下载https://dev.mysql.com/downloads/connector/

然后下载就行了

然后你在eclipse里新建一个项目,然后右键该项目Bulid Path -> AddExternal,然后把你下载的jar包导入即可

导入jar包之后就可以进行数据库的连接了

import java.sql.DriverManager;
 
import com.mysql.jdbc.Connection;
 
public class DbUtil {
	private String dbUrl = "jdbc:mysql://localhost:3306/work?useSSL=false";
	private String dbUserName = "root";
	private String dbPassword = "123456";
	private String jdbcName = "com.mysql.jdbc.Driver";
 
	/*
	 * 数据库连接
	 */
	public Connection getCon() throws Exception {
		Class.forName(jdbcName);
		Connection con = (Connection) DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
		return con;
	}
	
	
	//这里可以测试数据库是否连接成功
//	public static void main(String[] args) {
//		DbUtil dbUtil = new DbUtil();
//		try {
//			dbUtil.getCon();
//			System.out.println("数据库连接成功");
//		} catch (Exception e) {
//			e.printStackTrace();
//			System.out.println("数据库连接失败");
//		}
//	}
}

四、util包下的字符串判断

当你把数据库连接好之后,来看一看字符串的判断这个工具包吧,该包就是判断一下字符串是否为空。

package util;

public class StringUtil {
	/*
	 * 判断字符串是否为空
	 */
	public static boolean isEmpty(String str) {
		if (str == null || "".equals(str.trim())) {// trim() 函数移除字符串两侧的空白字符或其他预定义字符
			return true;
		} else {
			return false;
		}
	}

	public static boolean isNotEmpty(String str) {
		if (str != null && !"".equals(str.trim())) {
			return true;
		} else {
			return false;
		}
	}
}

五、model包下的图书类

图书类里面主要包括了图书号,图书名,图书的出版社,和图书的作者。

package com.book.model;

public class Book {
	private String bookId;// 图书id
	private String bookName;// 图书名
	private String press;// 图书出版社
	private String author;// 图书作者

	public String getBookId() {
		return bookId;
	}

	public void setBookId(String bookId) {
		this.bookId = bookId;
	}

	public String getBookName() {
		return bookName;
	}

	public void setBookName(String bookName) {
		this.bookName = bookName;
	}

	public String getPress() {
		return press;
	}

	public void setPress(String press) {
		this.press = press;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

}

六、dao包下图书的增删改查

该包实现了与数据库之间的关系,能够实现你在程序中的操作传到数据库中,最后达到与数据库一体化。

package com.book.dao;

import java.awt.BorderLayout;
import java.sql.ResultSet;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;

import com.book.model.Book;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

import util.StringUtil;

/*
 * 图书Dao类
 */
public class BookDao {
	
	/*
	 * 图书添加
	 */
	public int insert(Connection con, Book book) throws Exception {
		String sql = "insert into book values(?,?,?,?)";
		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);
		pstmt.setString(1, book.getBookId());
		pstmt.setString(2, book.getBookName());
		pstmt.setString(3, book.getPress());
		pstmt.setString(4, book.getAuthor());
		return pstmt.executeUpdate();
	}

	/*
	 * 图书查询
	 */
	public boolean select(Connection con, Book b) throws Exception {
		String sql = "select * from book where book.bookId=book.bookId";
		StringBuffer sb = new StringBuffer(sql);
		if (StringUtil.isNotEmpty(b.getBookId())) {
			sb.append(" and book.bookId like '%" + b.getBookId() + "%'");
		}
		if (StringUtil.isNotEmpty(b.getBookName())) {
			sb.append(" and book.bookName like '%" + b.getBookName() + "%'");
		}
		if (StringUtil.isNotEmpty(b.getAuthor())) {
			sb.append(" and book.Author like '%" + b.getAuthor() + "%'");
		}
		if (StringUtil.isNotEmpty(b.getPress())) {
			sb.append(" and book.Press like '%" + b.getPress() + "%'");
		}
		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sb.toString());
		ResultSet resultSet = pstmt.executeQuery();
		int t=0;
		String[][] rowData = new String[110][110];
		while(resultSet.next()) {
			String bookId=resultSet.getString("bookId"); 
			String bookName=resultSet.getString("bookName"); 
			String press=resultSet.getString("press"); 
			String author=resultSet.getString("author"); 
			
			// 表格所有行数据
			//Book b = new Book();
			rowData[t][0] = bookId;
			rowData[t][1] = bookName;
			rowData[t][2] = author;
			rowData[t][3] = press;
			
			t++;
			//System.out.println("书号:"+bookId+" 书名:"+bookName+" 作者:"+author+" 出版社:"+press);
		}
		if(t>0) {
			JFrame frame = new JFrame("测试窗口");
			//frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			// 创建内容面板,使用边界布局
	        JPanel panel = new JPanel(new BorderLayout());
			// 表头(列名)
			Object[] columnNames = { "书号", "书名", "作者", "出版社" };
			
			// 创建一个表格,指定 所有行数据 和 表头
			JTable table = new JTable(rowData, columnNames);
			
			// 把 表头 添加到容器顶部(使用普通的中间容器添加表格时,表头 和 内容 需要分开添加) 
			 panel.add(table.getTableHeader(), BorderLayout.NORTH);
			// 把 表格内容 添加到容器中心 
			 panel.add(table, BorderLayout.CENTER);
		
			
			// frame.add(panel);
			frame.setContentPane(panel);
			frame.pack();
			frame.setLocationRelativeTo(null);
			frame.setVisible(true);
		}
		return pstmt.executeQuery().next();
	}

	/*
	 * 图书删除
	 */
	public int delete(Connection con, String id) throws Exception {
		String sql = "delete from book where bookId=?";
		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 bookName=?,press=?,author=?where id=?";
		PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql);

		pstmt.setString(1, book.getBookName());
		pstmt.setString(2, book.getPress());
		pstmt.setString(3, book.getAuthor());
		pstmt.setString(4, book.getBookId());
		return pstmt.executeUpdate();
	}
}

七、implement包下的具体功能实现:

这个是添加功能:

package com.function.implement;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.book.dao.BookDao;
import com.book.model.Book;

import util.DbUtil;
import util.StringUtil;

public class BookInsert {
	public void bookInsert() {
		JFrame frame = new JFrame();

		frame.setTitle("添加界面");// 设置窗口标题
		frame.setBounds(250, 100, 825, 600);// 设置窗口位置和大小
		frame.setLayout(null);// 布局为空
		JPanel panelButton = new JPanel();
		Font font = new Font("宋体", Font.BOLD, 18);
		Dimension dim = new Dimension(200, 30);// 设置组件的宽和高

		JPanel panelTitle = new JPanel();
		JLabel labTitle = new JLabel("添 加 界 面");// 设置面板标题
		Font fontTitle = new Font("宋体", Font.BOLD, 50);// 设置字形,字体和字号
		labTitle.setFont(fontTitle);// 设置字体的大小
		panelTitle.add(labTitle);// 把该标题添加到面板中
		panelTitle.setBounds(260, 50, 300, 80);// 设置面板在窗口中的位置和大小
		frame.add(panelTitle);// 将该面板添加到窗口中

		/*
		 * 创建一个账号标签,并设置字体以及字体大小 创建一个文本框,并设置大小
		 */
		JPanel panelId = new JPanel();
		JLabel labId = new JLabel("书号  ");// 用标签来表示文本或图片
		labId.setFont(font);// 设置标签字体的大小
		panelId.add(labId);// 将lable标签添加到面板上

		JTextField textId = new JTextField();
		textId.setPreferredSize(dim);
		textId.setFont(font);
		panelId.add(textId);
		panelId.setBounds(250, 150, 300, 50);// 设置面板的位置和大小
		frame.add(panelId);// 添加面板到窗口中

		/*
		 * 创建一个账号标签,并设置字体以及字体大小 创建一个文本框,并设置大小
		 */
		JPanel panelName = new JPanel();
		JLabel labName = new JLabel("书名  ");// 用标签来表示文本或图片
		labName.setFont(font);// 设置标签字体的大小
		panelName.add(labName);// 将lable标签添加到面板上

		JTextField textName = new JTextField();
		textName.setPreferredSize(dim);
		textName.setFont(font);
		panelName.add(textName);
		panelName.setBounds(250, 200, 300, 50);// 设置面板的位置和大小
		frame.add(panelName);// 添加面板到窗口中
		
		/*
		 * 创建一个账号标签,并设置字体以及字体大小 创建一个文本框,并设置大小
		 */
		JPanel panelAuthor = new JPanel();
		JLabel labAuthor = new JLabel("作者  ");// 用标签来表示文本或图片
		labAuthor.setFont(font);// 设置标签字体的大小
		panelAuthor.add(labAuthor);// 将lable标签添加到面板上

		JTextField textAuthor = new JTextField();
		textAuthor.setPreferredSize(dim);
		textAuthor.setFont(font);
		panelAuthor.add(textAuthor);
		panelAuthor.setBounds(250, 250, 300, 50);// 设置面板的位置和大小
		frame.add(panelAuthor);// 添加面板到窗口中
		
		/*
		 * 创建一个账号标签,并设置字体以及字体大小 创建一个文本框,并设置大小
		 */
		JPanel panelPress = new JPanel();
		JLabel labPress = new JLabel("出版社 ");// 用标签来表示文本或图片
		labPress.setFont(font);// 设置标签字体的大小
		panelPress.add(labPress);// 将lable标签添加到面板上

		JTextField textPress = new JTextField();
		textPress.setPreferredSize(dim);
		textPress.setFont(font);
		panelPress.add(textPress);
		panelPress.setBounds(245, 300, 300, 50);// 设置面板的位置和大小
		frame.add(panelPress);// 添加面板到窗口中

		/*
		 * 设置一个提交按钮
		 */
		Dimension dim1 = new Dimension(80, 30);
		JButton button = new JButton("提交");
		button.setFont(font);
		button.setPreferredSize(dim1);
		panelButton.add(button);
		panelButton.setBounds(380, 350, 80, 50);
		frame.add(panelButton);
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
	
				String id = textId.getText();
				String name = textName.getText();
				String press = textPress.getText();
				String author = textAuthor.getText();
				if (StringUtil.isEmpty(id)) {
					JOptionPane.showMessageDialog(null, "账号不能为空");
					return;
				} else if (StringUtil.isEmpty(name)) {
					JOptionPane.showMessageDialog(null, "用户名不能为空");
					return;
				} else if (StringUtil.isEmpty(author)) {
					JOptionPane.showMessageDialog(null, "作者不能为空");
					return;
				} else if (StringUtil.isEmpty(press)) {
					JOptionPane.showMessageDialog(null, "出版社不能为空");
					return;
				} else {
					Book book = new Book();
					book.setBookId(id);
					book.setBookName(name);
					book.setPress(press);
					book.setAuthor(author);
					BookDao bd = new BookDao();
					DbUtil du = new DbUtil();
					try {
						if (bd.insert(du.getCon(), book) != 0) {
							JOptionPane.showMessageDialog(null, "添加成功");
							frame.dispose();
						} else {
							JOptionPane.showMessageDialog(null, "添加失败!");
						}

					} catch (Exception e1) {
						e1.printStackTrace();
						System.out.println("数据库连接失败");
					}

				}

			}
		});
		frame.setVisible(true);
	}
}

这个是删除:

package com.function.implement;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.book.dao.BookDao;

import util.DbUtil;

public class BookDelete {
	public void bookDelete() {
		JFrame frame = new JFrame();
		frame.setTitle("删除图书");// 设置窗口标题
		frame.setBounds(250, 100, 825, 600);// 设置窗口位置和大小
		frame.setLayout(null);// 布局为空

		Font font = new Font("宋体", Font.BOLD, 18);
		Dimension dim = new Dimension(200, 30);// 设置组件的宽和高
		
		/*
		 * 创建一个删除标签及文本框,并设置字体以及字体大小
		 */
		JPanel panelDelete = new JPanel();
		JLabel labId = new JLabel("书号  ");// 用标签来表示文本或图片
		labId.setFont(font);// 设置标签字体的大小
		panelDelete.add(labId);// 将lable标签添加到面板上
		JTextField textId = new JTextField();
		textId.setPreferredSize(dim);
		textId.setFont(font);
		panelDelete.add(textId);
		panelDelete.setBounds(250, 150, 300, 50);// 设置面板的位置和大小
		frame.add(panelDelete);// 添加面板到窗口中
		
		JPanel panelAffirm = new JPanel();
		Dimension dim1 = new Dimension(120, 30);
		JButton buttonAffirm = new JButton("确认删除");
		buttonAffirm.setFont(font);
		buttonAffirm.setPreferredSize(dim1);
		panelAffirm.add(buttonAffirm);
		panelAffirm.setBounds(325, 200, 200, 50);
		frame.add(panelAffirm);
		
		buttonAffirm.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BookDao bookDao = new BookDao();
				DbUtil dbutil = new DbUtil();
				try {
					
					String id= textId.getText().toString();
					if(bookDao.delete(dbutil.getCon(), id)!=0) {
					      JOptionPane.showMessageDialog(null, "删除成功");
					      //frame.dispose();
					     } else {
					      JOptionPane.showMessageDialog(null, "书号不存在!");
					}
					
				} catch (Exception e1) {
					e1.printStackTrace();
					System.out.println("数据库连接失败");
				}
			}
		});
		
		frame.setVisible(true);
	}
}

这个是修改功能:

package com.function.implement;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.book.dao.BookDao;
import com.book.model.Book;

import util.DbUtil;

public class BookUpdate {
	public void bookUpdate() {
		JFrame frame = new JFrame();
		frame.setTitle("修改界面");// 设置窗口标题
		frame.setBounds(250, 100, 825, 600);// 设置窗口位置和大小
		frame.setLayout(null);// 布局为空

		Font font = new Font("宋体", Font.BOLD, 18);
		Dimension dim = new Dimension(200, 30);// 设置组件的宽和高
		Dimension dim1 = new Dimension(120, 30);
		/*
		 * 修改图书
		 */
		JPanel panelSelect = new JPanel();
		JLabel labId = new JLabel("书号  ");// 用标签来表示文本或图片
		labId.setFont(font);// 设置标签字体的大小
		panelSelect.add(labId);// 将lable标签添加到面板上
		JTextField textId = new JTextField();
		textId.setPreferredSize(dim);
		textId.setFont(font);
		panelSelect.add(textId);
		panelSelect.setBounds(250, 150, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelect);// 添加面板到窗口中

		JPanel panelSelectName = new JPanel();
		JLabel labName = new JLabel("书名  ");// 用标签来表示文本或图片
		labName.setFont(font);// 设置标签字体的大小
		panelSelectName.add(labName);// 将lable标签添加到面板上
		JTextField textName = new JTextField();
		textName.setPreferredSize(dim);
		textName.setFont(font);
		panelSelectName.add(textName);
		panelSelectName.setBounds(250, 200, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelectName);// 添加面板到窗口中

		JPanel panelSelectAuthor = new JPanel();
		JLabel labAuthor = new JLabel("作者  ");// 用标签来表示文本或图片
		labAuthor.setFont(font);// 设置标签字体的大小
		panelSelectAuthor.add(labAuthor);// 将lable标签添加到面板上
		JTextField textAuthor = new JTextField();
		textAuthor.setPreferredSize(dim);
		textAuthor.setFont(font);
		panelSelectAuthor.add(textAuthor);
		panelSelectAuthor.setBounds(250, 250, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelectAuthor);// 添加面板到窗口中

		JPanel panelSelectPress = new JPanel();
		JLabel labPress = new JLabel("出版社");// 用标签来表示文本或图片
		labPress.setFont(font);// 设置标签字体的大小
		panelSelectPress.add(labPress);// 将lable标签添加到面板上
		JTextField textPress = new JTextField();
		textPress.setPreferredSize(dim);
		textPress.setFont(font);
		panelSelectPress.add(textPress);
		panelSelectPress.setBounds(250, 300, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelectPress);// 添加面板到窗口中

		JPanel panelSelete = new JPanel();
		JButton buttonSelete = new JButton("确认修改");
		buttonSelete.setFont(font);
		buttonSelete.setPreferredSize(dim1);
		panelSelete.add(buttonSelete);
		panelSelete.setBounds(325, 350, 200, 50);
		frame.add(panelSelete);

		buttonSelete.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BookDao bookDao = new BookDao();
				DbUtil dbutil = new DbUtil();
				try {
					String bookId = textId.getText().toString();
					String bookName = textName.getText().toString();
					String bookAuthor = textAuthor.getText().toString();
					String bookPress = textPress.getText().toString();
					
					//System.out.println(bookId+bookName+bookAuthor+bookPress);
					
					Book book = new Book();

					book.setBookId(bookId);
					book.setAuthor(bookAuthor);
					book.setBookName(bookName);
					book.setPress(bookPress);

					if (bookDao.update(dbutil.getCon(), book) > 0) {
						JOptionPane.showMessageDialog(null, "修改成功");
						// frame.dispose();
					} else {
						JOptionPane.showMessageDialog(null, "该书不存在!");
					}

				} catch (Exception e1) {
					e1.printStackTrace();
					System.out.println("数据库连接失败");
				}
			}
		});
		frame.setVisible(true);
	}
}

这个是查询功能:

package com.function.implement;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.book.dao.BookDao;
import com.book.model.Book;

import util.DbUtil;

public class BookFind {
	public void bookFind() {
		JFrame frame = new JFrame();
		frame.setTitle("查找图书");// 设置窗口标题
		frame.setBounds(250, 100, 825, 600);// 设置窗口位置和大小
		frame.setLayout(null);// 布局为空

		Font font = new Font("宋体", Font.BOLD, 18);
		Dimension dim = new Dimension(200, 30);// 设置组件的宽和高
		Dimension dim1 = new Dimension(120, 30);
		/*
		 * 查询图书
		 */
		JPanel panelSelect = new JPanel();
		JLabel labId1 = new JLabel("书号  ");// 用标签来表示文本或图片
		labId1.setFont(font);// 设置标签字体的大小
		panelSelect.add(labId1);// 将lable标签添加到面板上
		JTextField textId1 = new JTextField();
		textId1.setPreferredSize(dim);
		textId1.setFont(font);
		panelSelect.add(textId1);
		panelSelect.setBounds(250, 150, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelect);// 添加面板到窗口中
		
		JPanel panelSelectName = new JPanel();
		JLabel labName = new JLabel("书名  ");// 用标签来表示文本或图片
		labName.setFont(font);// 设置标签字体的大小
		panelSelectName.add(labName);// 将lable标签添加到面板上
		JTextField textName = new JTextField();
		textName.setPreferredSize(dim);
		textName.setFont(font);
		panelSelectName.add(textName);
		panelSelectName.setBounds(250, 200, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelectName);// 添加面板到窗口中
		
		JPanel panelSelectAuthor = new JPanel();
		JLabel labAuthor = new JLabel("作者  ");// 用标签来表示文本或图片
		labAuthor.setFont(font);// 设置标签字体的大小
		panelSelectAuthor.add(labAuthor);// 将lable标签添加到面板上
		JTextField textAuthor = new JTextField();
		textAuthor.setPreferredSize(dim);
		textAuthor.setFont(font);
		panelSelectAuthor.add(textAuthor);
		panelSelectAuthor.setBounds(250, 250, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelectAuthor);// 添加面板到窗口中
		
		JPanel panelSelectPress = new JPanel();
		JLabel labPress = new JLabel("出版社 ");// 用标签来表示文本或图片
		labPress.setFont(font);// 设置标签字体的大小
		panelSelectPress.add(labPress);// 将lable标签添加到面板上
		JTextField textPress = new JTextField();
		textPress.setPreferredSize(dim);
		textPress.setFont(font);
		panelSelectPress.add(textPress);
		panelSelectPress.setBounds(245, 300, 300, 50);// 设置面板的位置和大小
		frame.add(panelSelectPress);// 添加面板到窗口中
		
		
		JPanel panelSelete = new JPanel();
		JButton buttonSelete = new JButton("查询图书");
		buttonSelete.setFont(font);
		buttonSelete.setPreferredSize(dim1);
		panelSelete.add(buttonSelete);
		panelSelete.setBounds(325, 350, 200, 50);
		frame.add(panelSelete );
		
		buttonSelete.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				BookDao bookDao = new BookDao();
				DbUtil dbutil = new DbUtil();
				try {
					String id = textId1.getText().toString();
					String name = textName.getText().toString();
					String author = textAuthor.getText().toString();
					String press = textPress.getText().toString();
					Book book = new Book();
					book.setBookId(id);
					book.setBookName(name);
					book.setAuthor(author);
					book.setPress(press);
					if(bookDao.select(dbutil.getCon(), book)) {
					      //JOptionPane.showMessageDialog(null, "查询成功");
					      //frame.dispose();
					     } else {
					      JOptionPane.showMessageDialog(null, "图书不存在!");
					}
					
					
				} catch (Exception e1) {
					e1.printStackTrace();
					System.out.println("数据库连接失败");
				}
			}
		});
		frame.setVisible(true);
	}
}

八,view包下的主界面:

界面的话就不必细说了,以登录界面为例:

package com.java.view;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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 com.book.dao.UserDao;
import com.book.model.User;

import util.DbUtil;
import util.StringUtil;

public class LoginJFrame {
	/*
	 * 登录界面
	 */
	public void loginJFrame() {
		/*
		 * 对窗口的操作,包括创建,设置标题 设置大小以及位置 
		 * 首先把窗口的布局设置为空 
		 * 然后在里面加入面板,进行面板的操作
		 */
		JFrame frame = new JFrame();// 创建一个窗口
		frame.setTitle("图书管理系统");// 设置窗口标题
		frame.setBounds(250, 100, 825, 600);// 设置窗口位置和大小
		frame.setLayout(null);// 布局为空

		/*
		 * 创建一个面板JPanel,以达到良好的布局 
		 * 该面板实现图书管理系统的大标题 
		 * JPanel:面板组件,非顶层容器
		 */
		JPanel panelTitle = new JPanel();
		JLabel labTitle = new JLabel("图书管理系统");// 设置面板标题
		Font fontTitle = new Font("宋体", Font.BOLD, 50);// 设置字形,字体和字号
		labTitle.setFont(fontTitle);// 设置字体的大小
		panelTitle.add(labTitle);// 把该标题添加到面板中
		panelTitle.setBounds(260, 20, 300, 80);// 设置面板在窗口中的位置和大小
		frame.add(panelTitle);// 将该面板添加到窗口中

		/*
		 * 设置该面板中统一字体字形和大小,以及统一的组件宽和高
		 */
		Font font = new Font("宋体", Font.BOLD, 18);
		Dimension dim = new Dimension(200, 30);// 设置组件的宽和高

		/*
		 * 创建一个账号标签及文本框,并设置字体以及字体大小
		 */
		JPanel panelId = new JPanel();
		JLabel labId = new JLabel("账号  ");// 用标签来表示文本或图片
		labId.setFont(font);// 设置标签字体的大小
		panelId.add(labId);// 将lable标签添加到面板上
		JTextField textId = new JTextField();
		textId.setPreferredSize(dim);
		textId.setFont(font);
		panelId.add(textId);
		panelId.setBounds(250, 150, 300, 50);// 设置面板的位置和大小
		frame.add(panelId);// 添加面板到窗口中

		/*
		 * 创建一个密码标签,设置密码文本框
		 */
		JPanel panelPass = new JPanel();
		JLabel labPass = new JLabel("密码  ");
		labPass.setFont(font);
		panelPass.add(labPass);

		JPasswordField textPass = new JPasswordField();
		textPass.setPreferredSize(dim);
		textPass.setFont(font);

		panelPass.add(textPass);
		panelPass.setBounds(250, 200, 300, 50);
		frame.add(panelPass);
		/*
		 * 设置一个按登录钮
		 */
		JPanel panelLogin = new JPanel();
		Dimension dim1 = new Dimension(80, 30);
		JButton buttonLogin = new JButton("登录");
		buttonLogin.setFont(font);
		buttonLogin.setPreferredSize(dim1);
		panelLogin.add(buttonLogin);
		panelLogin.setBounds(325, 250, 80, 50);
		frame.add(panelLogin);
		
		/*
		 * 登录监听
		 */
		
		buttonLogin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e1) {

				String id=textId.getText();
				String pass=new String(textPass.getPassword());
				User user = new User();
				user.setUserId(id);
				user.setPassword(pass);
				
				if(StringUtil.isEmpty(id.toString())) {
					JOptionPane.showMessageDialog(null, "账号不能为空");
				    return;
				}
			    if(StringUtil.isEmpty(pass.toString())) {
			    	JOptionPane.showMessageDialog(null, "密码不能为空");
			    	return;
			    }
			    
				UserDao ud = new UserDao();
				DbUtil du = new DbUtil();
				try {
					if(ud.login(du.getCon(), user)) {
						FunctionJFrame ff = new FunctionJFrame();
						frame.dispose();
						ff.functionJFrame();
						//JOptionPane.showMessageDialog(null, "登录成功" ,"登录界面" ,JOptionPane.PLAIN_MESSAGE);
						} else {
						JOptionPane.showMessageDialog(null, "账号或密码错误!");
					}
					//System.out.println("数据库连接成功");
				} catch (Exception e) {
					e.printStackTrace();
					System.out.println("数据库连接失败");
				}
			}
		});

		/*
		 * 设置一个注册按钮
		 */
		JPanel panelRegister = new JPanel();
		JButton buttonRegister = new JButton("注册");
		buttonRegister.setFont(font);
		buttonRegister.setPreferredSize(dim1);
		panelRegister.add(buttonRegister);
		panelRegister.setBounds(445, 250, 80, 50);
		frame.add(panelRegister);

		/*
		 * 注册监听
		 */
		buttonRegister.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				RegisterJFrame.registerJFrame();
			}
		});
		frame.setVisible(true);// 显示窗口
	}
}

发布了350 篇原创文章 · 获赞 236 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/96700120