具体实现步骤
1、把jar文件复制进项目
2、用navicat建立数据库db_studentinfo,建立表student
3、新建项目Java,在str中建立包Second
4、建立类
Window.java
Add.java
Ask.java
Change.java
Delete.java
Look.java
(1、把jar文件复制进项目)
界面实现如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
window窗口的实现
window.java
这里的图片路径得改成自己的,自己下载个图片在桌面上,复制一下路径就好了
package Second;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Window extends JFrame{
ImageIcon background;
JPanel myPanel;
JLabel label;
public static void main(String[] args) {
// TODO Auto-generated method stub
new Window();
}
Window()
{
JButton button1 = new JButton("!添加学生信息");
JButton button2 = new JButton("!修改学生信息");
JButton button3 = new JButton("!查询学生信息");
JButton button4 = new JButton("!删除学生信息");
JButton button5 = new JButton("!浏览");
FlowLayout flow = new FlowLayout(FlowLayout.LEFT,10,10);
JPanel panel = new JPanel(flow);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
panel.add(button5);
background = new ImageIcon("C:/Users/Pictures/校园3.jpg"); //图片路径 创建一个背景图片
label = new JLabel(background); //把背景图片添加到标签里
label.setBounds(0, 0, background.getIconWidth(), background.getIconHeight()); //把标签设置为和图片等高等宽
myPanel = (JPanel)this.getContentPane(); //把我的面板设置为内容面板
myPanel.setOpaque(false); //把我的面板设置为不可视
myPanel.setLayout(new FlowLayout()); //把我的面板设置为流动布局
this.getLayeredPane().setLayout(null); //把分层面板的布局置空
myPanel.add(panel); //把按钮添加到我的面板里
this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); //把标签添加到分层面板的最底层
//设置界面属性
this.setTitle("肇庆学院学生管理系统!!");
this.setBounds(400, 400, background.getIconWidth(), background.getIconHeight());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Add add = new Add();
}
});
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Change change = new Change();
}
});
button3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Ask ask = new Ask();
}
});
button4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Delete delete = new Delete();
}
});
button5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Look look = new Look();
}
});
}
}
add.java
添加界面/窗口的实现
package Second;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import First.Window;
public class Add extends JFrame{
JLabel jlnumber = new JLabel("学号:");
JLabel jlname = new JLabel("姓名:");
JLabel jlsex = new JLabel("性别:");
JLabel jlbirthday = new JLabel("出生日期:");
JLabel jldepartment = new JLabel("学院:");
JTextField jtnumber = new JTextField("",20);
JTextField jtname = new JTextField("",20);
JTextField jtsex = new JTextField("",20);
JTextField jtbirthday = new JTextField("",20);
JTextField jtdepartment = new JTextField("",20);
JButton buttonadd = new JButton("添加");
JButton buttontable = new JButton("更新");
private ButtonGroup group = new ButtonGroup();//用于逻辑上单选按钮成组。
private JPanel jp_top= new JPanel();//顶部面板
private JPanel jp_center= new JPanel(); //中间面板
private JPanel jp_floor= new JPanel();//底部面板
//用指定行数组和列名数组去构造一个表格
JTable table = null;
//为JTable增加垂直滚动条
JScrollPane scrollPane =null;
public Add() {
super("!添加学生信息");
init();
}
public void init() {
setSize(480,480);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new BorderLayout());
//GridLayout下标签占满一个网格,默认左对齐,改为右对齐
jlnumber.setHorizontalAlignment(SwingConstants.RIGHT);
jlname.setHorizontalAlignment(SwingConstants.RIGHT);
jlsex.setHorizontalAlignment(SwingConstants.RIGHT);
jlbirthday.setHorizontalAlignment(SwingConstants.RIGHT);
jldepartment.setHorizontalAlignment(SwingConstants.RIGHT);
jp_floor.setLayout(new GridLayout(6,2));
jp_floor.add(jlnumber);
jp_floor.add(jtnumber);
jp_floor.add(jlname);
jp_floor.add(jtname);
jp_floor.add(jlsex);
jp_floor.add(jtsex);
jp_floor.add(jlbirthday);
jp_floor.add(jtbirthday);
jp_floor.add(jldepartment);
jp_floor.add(jtdepartment);
jp_floor.add(buttonadd);
jp_floor.add(buttontable);
//面板边框设置
jp_floor.setBorder(BorderFactory.createTitledBorder("请输入要添加的学生信息"));
jp_top.add(new JLabel("欢迎进入学生管理系统!!"));
Vector columnNames = new Vector();
Vector rowData = new Vector();
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("性别");
columnNames.add("出生日期");
columnNames.add("学院");
Connection conn = null;
PreparedStatement ps = null;
ResultSet res = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_studentinfo","root","123456");
ps = conn.prepareStatement("SELECT * FROM student");
res = ps.executeQuery();
while (res.next())
{
Vector hang = new Vector();
hang.add(res.getString(1));
hang.add(res.getString(2));
hang.add(res.getString(3));
hang.add(res.getString(4));
hang.add(res.getString(5));
rowData.add(hang);
}
System.out.println("load ok!");
}catch (Exception q){
q.printStackTrace();
System.out.println("go die");
}finally{
try{
res.close();
ps.close();
conn.close();
System.out.println("close ok");
}catch (SQLException o){
o.printStackTrace();
System.out.println("go die 2");
}
}
//用指定行数组和列名数组去构造一个表格
JTable table = new JTable(rowData, columnNames);
//为JTable增加垂直滚动条
JScrollPane scrollPane = new JScrollPane(table);
//设置表头字体
table.getTableHeader().setFont(new Font("宋体",Font.BOLD,14));
//设置表格字体
table.setFont(new Font("宋体",Font.PLAIN,14));
//设置表格行高
table.setRowHeight(20);
//实现单击列名排序功能
TableRowSorter sorter = new TableRowSorter(table.getModel());
table.setRowSorter(sorter);
table.setFillsViewportHeight(true);
//设置JTable行选择模型为一次只能选择一行。
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//设置指定列的宽度
int[] ia={
80,100,40,100,150};
for(int i=0;i<table.getColumnCount();i++){
table.getColumnModel().getColumn(i).setPreferredWidth(ia[i]);
table.getColumnModel().getColumn(i).setMaxWidth(ia[i]);
table.getColumnModel().getColumn(i).setMinWidth(ia[i]);
}
buttontable.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 当点击按钮重新设置表格数据,即刷新最新的表格数据
// 新表格的内容
Connection conn = null;
PreparedStatement ps = null;
ResultSet res = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_studentinfo","root","123456");
ps = conn.prepareStatement("SELECT * FROM student");
res = ps.executeQuery();
while (res.next())
{
Vector hang = new Vector();
hang.add(res.getString(1));
hang.add(res.getString(2));
hang.add(res.getString(3));
hang.add(res.getString(4));
hang.add(res.getString(5));
rowData.add(hang);
}
System.out.println("load ok!");
}catch (Exception q){
q.printStackTrace