1.导入jar包
- 鼠标右键点击项目,选择Properties。
![Java连接MySQL实现简易学生信息管理系统_第1张图片](http://img.e-com-net.com/image/info8/0a59fadd9e6c481c9923efa13bb0e28e.jpg)
- 进入Java Build Path选项。
![Java连接MySQL实现简易学生信息管理系统_第2张图片](http://img.e-com-net.com/image/info8/d9440104a22d4e008aa3cf65fcefe68d.jpg)
- .点击Add External JAR。导入Java连接数据库的jar包。如果没有请戳这里下载。
![Java连接MySQL实现简易学生信息管理系统_第3张图片](http://img.e-com-net.com/image/info8/395a025f9ea241718659310cf1d9bcc7.jpg)
2.创建数据库和表
- 如果没有MySQL基础的朋友强烈建议先去学一下MySQL。 戳这里。
- 建立数据库tb_student,命令行示例如下。
![Java连接MySQL实现简易学生信息管理系统_第4张图片](http://img.e-com-net.com/image/info8/0c6346d988f943cfbbb95eed655e3928.jpg)
- 建立学生表,命令行示例如下。
![Java连接MySQL实现简易学生信息管理系统_第5张图片](http://img.e-com-net.com/image/info8/fa2312aca881447f82b8e68da3abe5ce.jpg)
3.Java连接数据库实现需求
- 编写连接数据库的bean。代码如下。
package bean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author XinghaiLiao
*
*/
public class ConnectionBean {
/**
* 获取数据库连接
* @param con
* @return 已连接的connection实例
*/
public Connection getConnection(Connection con) {
try {
String user = "root";//这里改成你的用户名
String password = "password";//这里改成你的密码
Class.forName("com.mysql.cj.jdbc.Driver");
//localhost是本机的意思 你也可以改成你想要连接的主机的IP地址 这里用db_student数据库
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_student?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8", user, password);
System.out.println("连接数据库成功!");
} catch(ClassNotFoundException e1) {
System.out.println("驱动出错!");
} catch (SQLException e) {
System.out.println("连接失败!");
e.printStackTrace();
}
return con;
}
/**
* 关闭数据库连接
* @param con
*/
public void closeConnection(Connection con) {
if(con != null) {
try {
con.close();
System.out.println("关闭连接成功!");
} catch (SQLException e) {
System.out.println("关闭连接失败!");
}
}
}
}
- 编写工具类。代码如下。
package util;
import java.util.regex.Pattern;
/**
*
* @author XinghaiLiao
*
*/
public class Utils {
/**
* 判断一个字符串是否为纯数字
* @param str 待判断的字符串
* @return
*/
public static boolean isAllNumber(String str) {
return (Pattern.compile("[0-9]*")).matcher(str).matches();
}
}
- 编写主界面。我设计的主界面如下图,主界面布局使用BorderLayout。北边是一个JPanel,里面有个JLabel。西边是一个JPanel,里面有三个JButton,每个JButton设置相应事件,这个JLabel使用的布局是GridLayout。中间是一个JPanel,用于显示信息。代码如下。
![Java连接MySQL实现简易学生信息管理系统_第6张图片](http://img.e-com-net.com/image/info8/8d30c76b29764b36af2e9051e437d42f.jpg)
package main;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
*
* @author XinghaiLiao
*
*/
public class SIMSFrame extends JFrame {
private JButton btn_viewStuList;
private JButton btn_addStu;
private JButton btn_findStu;
private JPanel showPanel;
private JPanel btnsPanel;
private JPanel northPanel;
private JLabel label;
/**
*
*/
private static final long serialVersionUID = 1L;
public SIMSFrame() {
this.setTitle("简易学生信息管理系统");
this.setSize(new Dimension(600, 600));
this.setLocationByPlatform(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn_viewStuList = new JButton("学生列表");
btn_viewStuList.addActionListener(event -> {
showPanel.setVisible(false);
showPanel.removeAll();
showPanel.add(new StuListView(), "Center");
showPanel.setVisible(true);
});
btn_addStu = new JButton("添加学生");
btn_addStu.addActionListener(event -> {
showPanel.setVisible(false);
showPanel.removeAll();
showPanel.add(new AddStuView(), "Center");
showPanel.setVisible(true);
});
btn_findStu = new JButton("查找学生");
btn_findStu.addActionListener(event -> {
showPanel.setVisible(false);
showPanel.removeAll();
showPanel.add(new FindStuView(), "Center");
showPanel.setVisible(true);
});
Container c = this.getContentPane();
c.setLayout(new BorderLayout());
btnsPanel = new JPanel();
btnsPanel.setLayout(new GridLayout(5, 1));
btnsPanel.setBackground(Color.white);
btnsPanel.add(btn_viewStuList);
btnsPanel.add(btn_addStu);
btnsPanel.add(btn_findStu);
c.add(btnsPanel, "West");
northPanel = new JPanel();
label = new JLabel("学生信息管理系统");
label.setFont(new Font("华文行楷", 1, 30));
label.setBackground(Color.RED);
northPanel.add(label, JLabel.CENTER);
northPanel.setBackground(Color.DARK_GRAY);
showPanel = new JPanel();
c.add(showPanel, "Center");
c.add(northPanel, "North");
this.setVisible(true);
}
}
- 编写查看学生列表的界面,效果如下图。这个类继承自JPanel,里面用一个表格来显示学生信息。触发点击事件后直接把这个new一个加到主界面的信息展示窗口即可。代码如下。
![Java连接MySQL实现简易学生信息管理系统_第7张图片](http://img.e-com-net.com/image/info8/e6f3c4c163df442494efa18ff0f92a08.jpg)
package main;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import bean.ConnectionBean;
/**
1. 用来显示学生列表
2. @author XinghaiLiao
3. */
public class StuListView extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private Connection conn;
private Statement stmt;
private ResultSet rs;
private JTable stuList;
public StuListView() {
ConnectionBean connection = new ConnectionBean();
conn = connection.getConnection(conn);
try {
stmt = conn.createStatement();
String sql = "select * from tb_student";
rs = stmt.executeQuery(sql);
String[] title = {"学号", "姓名", "电话"};
rs.last();
int stuNum = rs.getRow();
if(stuNum == 0) {
JOptionPane.showMessageDialog(this, "你查询的表为空!", "系统提示", JOptionPane.WARNING_MESSAGE);
} else {
rs.beforeFirst();
String[][] ob = new String[stuNum][3];
for(int i = 0; i < stuNum && rs.next(); i++) {
ob[i][0] = rs.getString("id");
ob[i][1] = rs.getString("name");
ob[i][2] = rs.getString("phone");
}
stuList = new JTable(ob, title);
stuList.setSize(new Dimension(600, 600));
JScrollPane jsp = new JScrollPane(stuList);
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();
tcr.setHorizontalAlignment(JLabel.CENTER);
stuList.setDefaultRenderer(Object.class, tcr);
jsp.setPreferredSize(new Dimension(stuList.getWidth()-200, stuList.getHeight()-200));
this.setLayout(new BorderLayout());
this.add(jsp, "Center");
this.setVisible(true);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(conn!=null) {
connection.closeConnection(conn);
}
}
}
}
- 编写添加学生信息界面,效果如图。这个类和前面的类似,在此不再重复。代码如下。
![Java连接MySQL实现简易学生信息管理系统_第8张图片](http://img.e-com-net.com/image/info8/13055a3c8da64bc29ad7f3a56f92f327.jpg)
package main;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import bean.ConnectionBean;
import util.Utils;
/**
* 添加学生界面
* @author XinghaiLiao
*
*/
public class AddStuView extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private JTextField input_id;
private JTextField input_name;
private JTextField input_phone;
private JLabel id;
private JLabel name;
private JLabel phone;
private JButton btn_OK;
ConnectionBean connection;
Connection conn;
public AddStuView() {
id = new JLabel("学号:");
name = new JLabel("姓名:");
phone = new JLabel("电话:");
input_id = new JTextField(10);
input_name = new JTextField(15);
input_phone = new JTextField(11);
this.setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 2));
panel.add(id);
panel.add(input_id);
panel.add(name);
panel.add(input_name);
panel.add(phone);
panel.add(input_phone);
this.add(panel, "North");
btn_OK = new JButton("提交");
btn_OK.addActionListener(event -> {
String id = input_id.getText().trim();
String name = input_name.getText().trim();
String phone = input_phone.getText().trim();
if(!id.equals("") && !name.equals("") && !phone.equals("")) {
if(Utils.isAllNumber(id) && Utils.isAllNumber(phone)) {
conn = null;
connection = new ConnectionBean();
conn = connection.getConnection(conn);
String sql = "insert into tb_student(id, name, phone) values " + "(" + id + ", " + "\'" + name + "\'" + ", " + phone + ")";
try {
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
JOptionPane.showMessageDialog(AddStuView.this, "添加成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(conn != null) {
connection.closeConnection(conn);
}
}
} else {
JOptionPane.showMessageDialog(AddStuView.this, "学号或电话号码非法!", "错误", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(AddStuView.this, "请把信息填写完整!", "错误", JOptionPane.ERROR_MESSAGE);
}
});
this.add(btn_OK, "Center");
this.setVisible(true);
}
}
- 编写查找学生界面。这个界面比较简单,在此直接给出代码。
package main;
import java.awt.GridLayout;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import bean.ConnectionBean;
import util.Utils;
/**
* 查找学生
* @author XinghaiLiao
*
*/
public class FindStuView extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private JLabel id;
private JButton btn_OK;
private JTextField input_id;
ConnectionBean connection;
Connection conn;
public FindStuView() {
id = new JLabel("学号:");
btn_OK = new JButton("查找");
input_id = new JTextField(10);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 2));
panel.add(id);
panel.add(input_id);
this.setLayout(new GridLayout(2, 1));
this.add(panel);
this.add(btn_OK);
btn_OK.addActionListener(event -> {
String id = input_id.getText();
if(!id.equals("")) {
if(Utils.isAllNumber(id)) {
connection = new ConnectionBean();
conn = connection.getConnection(conn);
try {
Statement stmt = conn.createStatement();
String sql = "select * from tb_student where id = " + id;
ResultSet rs = stmt.executeQuery(sql);
rs.last();
int k = rs.getRow();
if(k == 0) {
JOptionPane.showMessageDialog(this, "没有学号为" + id + "的学生!", "系统提示", JOptionPane.WARNING_MESSAGE);
} else {
String name = rs.getString("name");
String phone = rs.getString("phone");
JOptionPane.showMessageDialog(this, "学号:" + id + "\n姓名:" + name + "\n电话:" + phone, "系统提示", JOptionPane.INFORMATION_MESSAGE);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(conn != null) {
connection.closeConnection(conn);
}
}
} else {
JOptionPane.showMessageDialog(this, "学号非法!", "系统提示", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(this, "学号不能为空!", "系统提示", JOptionPane.ERROR_MESSAGE);
}
});
}
}
- 编写启动类。代码如下。
package main;
public class SIMS {
public static void main(String[] args) {
new SIMSFrame();
}
}
4.总结
- 若有不正确的地方希望大家指出o(╥﹏╥)o。
- 学数据库时的课程设计做了这个(但是当初没有想过写),这里就给大家简单分享一下我的思路QuQ。
- 大家可以自己试着加更多的功能然后美化一下界面。