源码链接: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
这里面的图书是我为了演示效果随便添加的。
当我把数据库建好之后,就开始写代码了,写代码时首先是连接数据库,连接数据库我用的是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("数据库连接失败");
// }
// }
}
当你把数据库连接好之后,来看一看字符串的判断这个工具包吧,该包就是判断一下字符串是否为空。
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;
}
}
}
图书类里面主要包括了图书号,图书名,图书的出版社,和图书的作者。
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;
}
}
该包实现了与数据库之间的关系,能够实现你在程序中的操作传到数据库中,最后达到与数据库一体化。
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();
}
}
这个是添加功能:
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);
}
}
界面的话就不必细说了,以登录界面为例:
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);// 显示窗口
}
}