学生管理系统JAVA GUI+MYSQL
目录
扫描二维码关注公众号,回复:
5113340 查看本文章
需求:学生信息的增加删除修改,查询学生信息和成绩
开发环境:elipse+MYSQL5.7
数据库表的设计:
students信息表
grades成绩表:
实现:
数据库连接类
package com.database;
import java.sql.*;
/**
* 数据库连接类
* @author Administrator
*
*/
public class DBConnection {
private static Connection con = null;
private static String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8&useSSL=false";
private static String user = "root";
private static String password = "root";
public static Connection getCon() {
//加载数据库驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("加载数据库驱动失败!");
e.printStackTrace();
}
//获取数据库连接
try {
con = DriverManager.getConnection(url, user, password);
if(con !=null) {
System.out.println("数据库连接成功!");
}
} catch (SQLException e) {
System.out.println("数据库连接失败!");
e.printStackTrace();
}
//返回Connection对象
return con;
}
}
student实体类
package com.login;
public class Students {
private Integer id;
private String name;
private String sex;
private String birthday;
private String classes;
private String academy;
private float math;
private float chniese;
public Students() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
public String getAcademy() {
return academy;
}
public void setAcademy(String academy) {
this.academy = academy;
}
public float getMath() {
return math;
}
public void setMath(float math) {
this.math = math;
}
public float getChniese() {
return chniese;
}
public void setChniese(float chniese) {
this.chniese = chniese;
}
@Override
public String toString() {
return id+" "+name+" "+sex;
}
}
登录
package com.login;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import com.database.*;
import com.management.StudentManagement;
import javax.swing.*;
/**
* 登录
* @author Administrator
*
*/
public class Login extends Frame implements ActionListener{
private static final long serialVersionUID = 1L;
//记录登录次数
private int flag = 0;
//创建标签、文本框、密码框对象
JPanel panel = new JPanel();
JLabel JLUserName = new JLabel("用户名:");
JLabel JLUserPaw = new JLabel("密 码:");
JTextField JTUserName = new JTextField();
JPasswordField JTUserPaw = new JPasswordField();
//创建按钮对象
JButton login = new JButton("登录");
JButton cancle = new JButton("取消");
JLabel identity = new JLabel("身 份:");
//创建下拉列表框对象
JComboBox<String> JC = new JComboBox<String>();
public Login() {
this.setTitle("管理系统示例1.0(增删改查)");
this.setLayout(null);
this.setResizable(false); //禁止改变窗口大小
//姓名
JLUserName.setBounds(100, 50, 60, 20);
JTUserName.setBounds(200, 50, 100, 20);
this.add(JLUserName);
this.add(JTUserName);
//密码
JLUserPaw.setBounds(100, 100, 60, 20);
JTUserPaw.setBounds(200, 100, 100, 20);
this.add(JLUserPaw);
this.add(JTUserPaw);
//身份
identity.setBounds(100, 150, 60, 20);
JC.setBounds(200, 150, 100, 20);
JC.addItem(new String("学生"));
JC.addItem(new String("教师"));
this.add(identity);
this.add(JC);
//登录、取消
login.setBounds(100, 200, 60, 20);
cancle.setBounds(240, 200, 60, 20);
login.addActionListener(this);
cancle.addActionListener(this);
this.add(login);
this.add(cancle);
this.setVisible(true);
this.setSize(400, 250); //设置窗口的大小
this.setLocationRelativeTo(null);//窗体居中显示
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
//身份验证
private boolean logindb(String password, String sql) {
//查询数据库
ResultSet rs = null;
//验证用户名是否存在
try {
rs = DBConnection.getCon().createStatement().executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
//验证密码是否存在
try {
if(rs.next()&&rs.getString(1).equals(password)) {
rs.close();
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
@Override
public void actionPerformed(ActionEvent e) {
//处理登录事件
if(e.getSource() == login) {
//将文本框中包含的文本传给字符串name
String name = JTUserName.getText();
String password = new String(JTUserPaw.getPassword());
//将当前所选项传给字符串box
String box = (String)JC.getSelectedItem();
String loginsql = null;
if(box.equals("学生")) {
loginsql ="select password from students where name ='"+name+"'";
//登录成功后进入,否则返回提示信息
if(logindb(password,loginsql)) {
this.setVisible(false);
new StudentManagement();
System.out.println("学生登录成功!");
}else {
flag++;
if(flag >= 3) {
JOptionPane.showMessageDialog(this, "输入三次错误,退出登录!","提示信息",JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
JOptionPane.showMessageDialog(this, "输入有误,请重新输入!","提示信息",JOptionPane.WARNING_MESSAGE);
}
}
else if(box.equals("教师"))
{
loginsql ="select password from students where name ='"+name+"'";
if(logindb(password,loginsql))
System.out.println("教师登录成功!");
}
}
//处理取消事件
if(e.getSource() == cancle) {
System.out.println("退出成功!");
System.exit(0);
}
}
public static void main(String[] args) {
//new Login();
new StudentManagement();
}
}
功能界面
package com.management;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class StudentManagement extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
JMenuBar menubar = new JMenuBar(); //创建菜单栏对象
//一级菜单
JMenu informationMenu = new JMenu("信息");
JMenu searchMenu = new JMenu("查询");
JMenu otherMenu = new JMenu("其他");
JMenuItem addMenu = new JMenuItem("增加信息");
JMenuItem deleteMenu = new JMenuItem("删除信息");
JMenuItem alterMenu = new JMenuItem("修改信息");
JMenuItem searchInforMenu = new JMenuItem("信息查询");
JMenuItem searchGradeMenu = new JMenuItem("成绩查询");
JMenuItem quitMenu = new JMenuItem("退出");
JLabel label = new JLabel();
public StudentManagement() {
this.setTitle("学生基本信息");
this.setLayout(new CardLayout());
this.setJMenuBar(menubar); //将菜单栏组件添加到容器
this.setResizable(false); //设置窗口大小不可变
//this.setUndecorated(true); //设置frame边框不可见
//一级菜单添加到菜单栏及事件监听
menubar.add(informationMenu);
menubar.add(searchMenu);
menubar.add(otherMenu);
informationMenu.addActionListener(this);
searchMenu.addActionListener(this);
otherMenu.addActionListener(this);
//二级菜单添加及事件监听
informationMenu.add(addMenu);
informationMenu.add(deleteMenu);
informationMenu.add(alterMenu);
addMenu.addActionListener(this);
deleteMenu.addActionListener(this);
alterMenu.addActionListener(this);
searchMenu.add(searchInforMenu);
searchMenu.add(searchGradeMenu);
searchInforMenu.addActionListener(this);
searchGradeMenu.addActionListener(this);
otherMenu.add(quitMenu);
quitMenu.addActionListener(this);
label.setIcon(new ImageIcon("images/主界面.jpg"));
this.add(label);
this.setVisible(true);
this.setSize(580, 400); //设置窗口的大小
this.setLocationRelativeTo(null);//窗体居中显示
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
@Override
/**
* 事件监听
*/
public void actionPerformed(ActionEvent e) {
//增加信息
if(e.getSource() == addMenu) {
new AddManagement();
}
//删除信息
if(e.getSource() == deleteMenu) {
new DeleteManagement();
}
//修改信息
if(e.getSource() == alterMenu) {
new AlterManagement();
}
//查询基本信息
if(e.getSource() == searchInforMenu) {
new SearchManagement();
}
//查询成绩
if(e.getSource() == searchGradeMenu) {
new SearchGrade();
}
//退出
if(e.getSource() == quitMenu) {
System.exit(0);
//new UsingExit().setVisible(true);
}
}
}
学生管理:
添加信息
package com.management;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
import com.database.DBConnection;
/**
* 添加信息
* @author Administrator
*
*/
public class AddManagement extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JLabel label = new JLabel("添加信息",JLabel.CENTER);
JLabel JLNumber = new JLabel("学号");
JTextField JTNumber = new JTextField();
JLabel JLName = new JLabel("姓名");
JTextField JTName = new JTextField();
JLabel JLBirth = new JLabel("生日");
JTextField JTBirth = new JTextField();
JLabel JLClass = new JLabel("班级");
JTextField JTClass = new JTextField();
JLabel JLSex = new JLabel("性别");
//创建按钮组,把两个按钮添加到按钮组中
ButtonGroup btnGroup = new ButtonGroup();
//创建两个单选按钮
JRadioButton radioBtn01 = new JRadioButton("男");
JRadioButton radioBtn02 = new JRadioButton("女");
JLabel JLAcademy = new JLabel("学院");
JTextField JTAcademy = new JTextField();
JButton addBtn = new JButton("添加");
JButton readdBtn = new JButton("重置");
JButton cancelBtn = new JButton("取消");
public AddManagement() {
this.setTitle("添加信息");
this.setLayout(null);
label.setBackground(Color.red); //label前景色为红色
label.setFont(new Font("宋体", Font.HANGING_BASELINE, 19));
label.setBounds(170, 20, 100, 20);
this.add(label);
//学号
JLNumber.setBounds(120, 60, 30, 25);
JTNumber.setBounds(150, 60, 120, 25);
this.add(JLNumber);
this.add(JTNumber);
//姓名
JLName.setBounds(120, 100, 30, 20);
JTName.setBounds(150, 100, 120, 25);
this.add(JLName);
this.add(JTName);
//性别
JLSex.setBounds(120,140,30,20);
radioBtn01.setBounds(150, 140, 60, 20);
radioBtn02.setBounds(210, 140, 60, 20);
btnGroup.add(radioBtn01);
btnGroup.add(radioBtn02);
this.add(JLSex);
this.add(radioBtn01);
this.add(radioBtn02);
//生日
JLBirth.setBounds(120, 180, 30, 20);
JTBirth.setBounds(150, 180, 120, 25);
this.add(JLBirth);
this.add(JTBirth);
//班级
JLClass.setBounds(120, 220, 30, 20);
JTClass.setBounds(150, 220, 120, 25);
this.add(JLClass);
this.add(JTClass);
//学院
JLAcademy.setBounds(120, 260, 30, 20);
JTAcademy.setBounds(150, 260, 120, 25);
this.add(JLAcademy);
this.add(JTAcademy);
addBtn.setBounds(100, 320, 60, 25);
readdBtn.setBounds(170, 320, 60, 25);
cancelBtn.setBounds(240, 320, 60, 25);
//添加监听
addBtn.addActionListener(this);
readdBtn.addActionListener(this);
cancelBtn.addActionListener(this);
this.add(addBtn);
this.add(readdBtn);
this.add(cancelBtn);
this.setVisible(true);
this.setSize(400, 400); //设置窗口的大小
this.setLocationRelativeTo(null);//窗体居中显示
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == addBtn) {
Integer snumber = Integer.parseInt(JTNumber.getText());
String sname = JTName.getText();
String ssex = "女";
String sbirth = JTBirth.getText();
String sclass = JTClass.getText();
String sacademy = JTAcademy.getText();
if(radioBtn01.isSelected()) {
ssex = "男";
}
//检索学生
String sql = "select * from students where id='"+snumber+"'";
//打开数据库连接并创建Statement对象
try {
Statement stm = DBConnection.getCon().createStatement();
ResultSet rs = stm.executeQuery(sql);
if(rs.next()) {
JOptionPane.showMessageDialog(null, "该账号已存在!", "提示信息", JOptionPane.WARNING_MESSAGE);
}
else {
//插入一条记录
sql = "insert into students values('"+snumber+"','"+sname+"','"+ssex+"','"+sbirth+"','"+sclass+"','"+sacademy+"','"+snumber+"')";
int i = stm.executeUpdate(sql);
if(i>0) {
JOptionPane.showMessageDialog(null, "添加成功!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
}else {
JOptionPane.showMessageDialog(null, "添加失败!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
}
}
stm.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
if(e.getSource() == readdBtn) {
JTNumber.setText(null);
JTName .setText(null);
JTClass.setText(null);
JTAcademy.setText(null);
JTBirth.setText(null);
}
if(e.getSource() == cancelBtn) {
setVisible(false);
}
}
}
删除信息
package com.management;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import com.database.DBConnection;
/**
* 删除信息
* @author Administrator
*
*/
public class DeleteManagement extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JLabel label = new JLabel("删除信息",JLabel.CENTER);
JLabel JLNumber = new JLabel("学号");
JTextField JTNumber = new JTextField();
JLabel JLName = new JLabel("姓名");
JTextField JTName = new JTextField();
JButton ensureBtn = new JButton("确定");
JButton nextBtn = new JButton("重置");
JButton cancelBtn = new JButton("取消");
public DeleteManagement() {
this.setTitle("删除信息");
this.setLayout(null);
label.setBackground(Color.red); //label前景色为红色
label.setFont(new Font("宋体", Font.HANGING_BASELINE, 19));
label.setBounds(170, 20, 100, 20);
this.add(label);
//学号
JLNumber.setBounds(120, 60, 30, 25);
JTNumber.setBounds(150, 60, 120, 25);
this.add(JLNumber);
this.add(JTNumber);
//姓名
JLName.setBounds(120, 100, 30, 20);
JTName.setBounds(150, 100, 120, 25);
this.add(JLName);
this.add(JTName);
ensureBtn.setBounds(100, 320, 60, 25);
nextBtn.setBounds(170, 320, 60, 25);
cancelBtn.setBounds(240, 320, 60, 25);
//添加事件监听
ensureBtn.addActionListener(this);
nextBtn.addActionListener(this);
cancelBtn.addActionListener(this);
this.add(ensureBtn);
this.add(nextBtn);
this.add(cancelBtn);
this.setVisible(true);
this.setSize(400, 400); //设置窗口的大小
this.setLocationRelativeTo(null);//窗体居中显示
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == ensureBtn) {
Integer snumber = Integer.parseInt(JTNumber.getText());
//检索学生
String sql = "select * from students where id='"+snumber+"'";
//打开数据库连接并创建Statement对象
try {
Statement stm = DBConnection.getCon().createStatement();
ResultSet rs = stm.executeQuery(sql);
if(rs.next()) {
//删除一条记录
sql = "delete from students where id ='"+snumber+"'";
int i = stm.executeUpdate(sql);
if(i>0) {
JOptionPane.showMessageDialog(null, "删除成功!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
}else {
JOptionPane.showMessageDialog(null, "删除失败!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
}
}
else {
JOptionPane.showMessageDialog(null, "该账号不存在!", "提示信息", JOptionPane.WARNING_MESSAGE);
}
stm.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
if(e.getSource() == nextBtn) {
JTNumber.setText(null);
JTName .setText(null);
}
if(e.getSource() == cancelBtn) {
setVisible(false);
}
}
}
修改信息
package com.management;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import com.database.DBConnection;
/**
* 修改信息
* @author Administrator
*
*/
public class AlterManagement extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JLabel label = new JLabel("修改信息",JLabel.CENTER);
JLabel JLNumber = new JLabel("学号");
JTextField JTNumber = new JTextField();
JLabel JLName = new JLabel("姓名");
JTextField JTName = new JTextField();
JLabel JLBirth = new JLabel("生日");
JTextField JTBirth = new JTextField();
JLabel JLClass = new JLabel("班级");
JTextField JTClass = new JTextField();
JLabel JLSex = new JLabel("性别");
//创建按钮组,把两个按钮添加到按钮组中
ButtonGroup btnGroup = new ButtonGroup();
//创建两个单选按钮
JRadioButton radioBtn01 = new JRadioButton("男");
JRadioButton radioBtn02 = new JRadioButton("女");
JLabel JLAcademy = new JLabel("学院");
JTextField JTAcademy = new JTextField();
JButton ensureBtn = new JButton("确定");
JButton readdBtn = new JButton("重置");
JButton cancelBtn = new JButton("取消");
public AlterManagement() {
this.setTitle("修改信息");
this.setLayout(null);
label.setBackground(Color.red); //label前景色为红色
label.setFont(new Font("宋体", Font.HANGING_BASELINE, 19));
label.setBounds(170, 20, 100, 20);
this.add(label);
//学号
JLNumber.setBounds(120, 60, 30, 25);
JTNumber.setBounds(150, 60, 120, 25);
this.add(JLNumber);
this.add(JTNumber);
//姓名
JLName.setBounds(120, 100, 30, 20);
JTName.setBounds(150, 100, 120, 25);
this.add(JLName);
this.add(JTName);
//性别
JLSex.setBounds(120,140,30,20);
radioBtn01.setBounds(150, 140, 60, 20);
radioBtn02.setBounds(210, 140, 60, 20);
btnGroup.add(radioBtn01);
btnGroup.add(radioBtn02);
this.add(JLSex);
this.add(radioBtn01);
this.add(radioBtn02);
//生日
JLBirth.setBounds(120, 180, 30, 20);
JTBirth.setBounds(150, 180, 120, 25);
this.add(JLBirth);
this.add(JTBirth);
//班级
JLClass.setBounds(120, 220, 30, 20);
JTClass.setBounds(150, 220, 120, 25);
this.add(JLClass);
this.add(JTClass);
//学院
JLAcademy.setBounds(120, 260, 30, 20);
JTAcademy.setBounds(150, 260, 120, 25);
this.add(JLAcademy);
this.add(JTAcademy);
ensureBtn.setBounds(100, 320, 60, 25);
readdBtn.setBounds(170, 320, 60, 25);
cancelBtn.setBounds(240, 320, 60, 25);
//添加监听
ensureBtn.addActionListener(this);
readdBtn.addActionListener(this);
cancelBtn.addActionListener(this);
this.add(ensureBtn);
this.add(readdBtn);
this.add(cancelBtn);
this.setVisible(true);
this.setSize(400, 400); //设置窗口的大小
this.setLocationRelativeTo(null);//窗体居中显示
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == ensureBtn) {
Integer snumber = Integer.parseInt(JTNumber.getText());
String sname = JTName.getText();
String ssex = "女";
String sbirth = JTBirth.getText();
String sclass = JTClass.getText();
String sacademy = JTAcademy.getText();
if(radioBtn01.isSelected()) {
ssex = "男";
}
//检索学生
String sql = "select * from students where id='"+snumber+"'";
//打开数据库连接并创建Statement对象
try {
Statement stm = DBConnection.getCon().createStatement();
ResultSet rs = stm.executeQuery(sql);
if(rs.next()) {
//更新一条记录
sql = "update students set name ='"+sname+"',sex='"+ssex+"',birthday='"+sbirth+"',class='"+sclass+"',academy='"+sacademy+"'where id="+snumber;
int i = stm.executeUpdate(sql);
if(i>0) {
JOptionPane.showMessageDialog(null, "修改成功!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
}else {
JOptionPane.showMessageDialog(null, "修改失败!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
}
}
else {
JOptionPane.showMessageDialog(null, "该账号不存在!", "提示信息", JOptionPane.WARNING_MESSAGE);
}
stm.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
if(e.getSource() == readdBtn) {
JTNumber.setText(null);
JTName .setText(null);
JTClass.setText(null);
JTAcademy.setText(null);
JTBirth.setText(null);
}
if(e.getSource() == cancelBtn) {
setVisible(false);
}
}
}
信息查询
package com.management;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import com.database.DBConnection;
import com.login.Students;
public class SearchManagement extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private Object [][]rowData;
private Object []column = {"学号","姓名","性别","生日","班级","学院"}; //表头
JPanel epanel = new JPanel();
JPanel spanel = new JPanel();
JPanel wpanel = new JPanel();
JLabel JLNumber = new JLabel("学号");
JTextField JTNumber = new JTextField(16);
JButton searchBtn = new JButton("查询个人");
JButton searchAllBtn = new JButton("查询全部");
JButton nextBtn = new JButton("重置");
JButton cancelBtn = new JButton("取消");
public SearchManagement() {
this.setTitle("查询信息");
this.setLayout(new BorderLayout());
//标签和输入框
wpanel.add(searchAllBtn);
wpanel.add(JLNumber);
wpanel.add(JTNumber);
//三个按钮添加事件
searchAllBtn.addActionListener(this);
searchBtn.addActionListener(this);
nextBtn.addActionListener(this);
cancelBtn.addActionListener(this);
epanel.add(searchBtn);
epanel.add(nextBtn);
epanel.add(cancelBtn);
this.add(epanel, BorderLayout.EAST);
this.add(wpanel, BorderLayout.WEST);
this.pack();
this.setLocationRelativeTo(null);//窗体居中显示
this.setVisible(true);
}
/**
* 设置表格的样式
* @param num
*/
public void setTable(int num) {
this.setVisible(false);
JFrame jf =new JFrame("查询结果");
jf.setLocationRelativeTo(null);
JPanel panel = new JPanel();
//表格所有行
Object [][]rowData = queryData(num);
JTable table = new JTable(rowData,column);
//设置表格内容颜色
table.setForeground(Color.BLACK); //字体颜色
table.setFont(new Font(null, Font.PLAIN, 14)); //字体样式
table.setSelectionBackground(Color.DARK_GRAY); //选中后字体背景
table.setSelectionForeground(Color.LIGHT_GRAY); //选中后字体颜色
table.setGridColor(Color.GRAY); //网格颜色
//设置表头
//设置表头字体样式
table.getTableHeader().setFont(new Font(null, Font.BOLD, 14));
//表头名称字体颜色
table.getTableHeader().setForeground(Color.RED);
//不允许手动改变列宽
table.getTableHeader().setResizingAllowed(false);
//不允许拖动重新排列各列
table.getTableHeader().setReorderingAllowed(false);
//设置行高30
table.setRowHeight(30);
//列宽设置为100
table.getColumnModel().getColumn(0).setPreferredWidth(80);
table.getColumnModel().getColumn(5).setPreferredWidth(180);
//设置滚动面板视口大小
table.setPreferredScrollableViewportSize(new Dimension(550,400));
//把表格放到滚动面板中(自动添加到顶部)
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane);
jf.add(panel);
jf.pack();
jf.setContentPane(panel);
jf.setVisible(true);
}
/**
* 查询所有用户数据
* @return 查找到的数据生成的list集合
*/
public List<Students> queryAllUser(){
Connection conn=null;
//预编译语句
PreparedStatement ps=null;
//结果集
ResultSet rs=null;
String sql="select * from students";
List<Students> list=new ArrayList<Students>();
try {
conn=DBConnection.getCon();
//获取结果集
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Students student=new Students();
student.setId(rs.getInt(1));
student.setName(rs.getString(2));
student.setSex(rs.getString(3));
student.setBirthday(rs.getString(4));
student.setClasses(rs.getString(5));
student.setAcademy(rs.getString(6));
list.add(student);
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
/**
* 查询一个用户数据(用户id)
* @return 查找到的用户数据返回
*/
public Students queryUser(Integer id){
Connection conn=null;
//预编译语句
PreparedStatement ps=null;
//结果集
ResultSet rs=null;
Students student = new Students();
String sql="select * from students where id="+id;
try {
conn=DBConnection.getCon();
//获取结果集
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()){
student.setId(rs.getInt(1));
student.setName(rs.getString(2));
student.setSex(rs.getString(3));
student.setBirthday(rs.getString(4));
student.setClasses(rs.getString(5));
student.setAcademy(rs.getString(6));
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(student.toString());
return student;
}
/**
* 生成表格数据
* @return 表格数据二维数组
*/
public Object[][] queryData(int num){
if(num == 0) {
List<Students> list=queryAllUser();
rowData=new Object[list.size()][column.length];
System.out.println("查询全部信息");
for(int i=0;i<list.size();i++){
for(int j=0;j<column.length;j++) {
rowData[i][0]=list.get(i).getId();
rowData[i][1]=list.get(i).getName();
rowData[i][2]=list.get(i).getSex();
rowData[i][3]=list.get(i).getBirthday();
rowData[i][4]=list.get(i).getClasses();
rowData[i][5]=list.get(i).getAcademy();
System.out.print(rowData[i][j]+" ");
}
System.out.println();
}
}else {
Students student = new Students();
student = queryUser(num);
//行设置为1,防止数组越界
rowData=new Object[1][column.length];
rowData[0][0]=student.getId();
rowData[0][1]=student.getName();
rowData[0][2]=student.getSex();
rowData[0][3]=student.getBirthday();
rowData[0][4]=student.getClasses();
rowData[0][5]=student.getAcademy();
}
return rowData;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == searchBtn) {
int num = Integer.parseInt(JTNumber.getText());
if(num >0)
setTable(num);
else
JOptionPane.showMessageDialog(null, "输入数据错误!");
}
if(e.getSource() == searchAllBtn) {
JTNumber.setText("0");
setTable(0);
}
if(e.getSource() == nextBtn) {
JTNumber.setText(null);
}
if(e.getSource() == cancelBtn) {
this.setVisible(false);
}
}
}
成绩查询
package com.management;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import com.database.DBConnection;
import com.login.Students;
public class SearchGrade extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private Object [][]rowData;
private Object []column = {"学号","姓名","语文","数学","班级","学院"}; //表头
JLabel JLNumber = new JLabel("学号");
JTextField JTNumber = new JTextField(16);
JPanel epanel = new JPanel();
JPanel wpanel = new JPanel();
JButton searchBtn = new JButton("查询个人");
JButton searchAllBtn = new JButton("查询全部");
JButton nextBtn = new JButton("重置");
JButton cancelBtn = new JButton("取消");
public SearchGrade() {
this.setTitle("查询成绩");
this.setLayout(new BorderLayout());
this.setLocation(400, 400);
//标签和输入框
wpanel.add(searchAllBtn);
wpanel.add(JLNumber);
wpanel.add(JTNumber);
//三个按钮添加事件
searchAllBtn.addActionListener(this);
searchBtn.addActionListener(this);
nextBtn.addActionListener(this);
cancelBtn.addActionListener(this);
epanel.add(searchBtn);
epanel.add(nextBtn);
epanel.add(cancelBtn);
this.add(epanel, BorderLayout.EAST);
this.add(wpanel, BorderLayout.WEST);
this.pack();
this.setLocationRelativeTo(null);//窗体居中显示
this.setVisible(true);
}
/**
* 设置表格的样式
* @param num
*/
public void setTable(int num) {
this.setVisible(false);
JFrame jf =new JFrame("查询结果");
jf.setLocationRelativeTo(null);
JPanel panel = new JPanel();
//表格所有行
Object [][]rowData = queryData(num);
JTable table = new JTable(rowData,column);
//设置表格内容颜色
table.setForeground(Color.BLACK); //字体颜色
table.setFont(new Font(null, Font.PLAIN, 14)); //字体样式
table.setSelectionBackground(Color.DARK_GRAY); //选中后字体背景
table.setSelectionForeground(Color.LIGHT_GRAY); //选中后字体颜色
table.setGridColor(Color.GRAY); //网格颜色
//设置表头
//设置表头字体样式
table.getTableHeader().setFont(new Font(null, Font.BOLD, 14));
//表头名称字体颜色
table.getTableHeader().setForeground(Color.RED);
//不允许手动改变列宽
table.getTableHeader().setResizingAllowed(false);
//不允许拖动重新排列各列
table.getTableHeader().setReorderingAllowed(false);
//设置行高30
table.setRowHeight(30);
//列宽设置为100
table.getColumnModel().getColumn(1).setPreferredWidth(80);
//设置滚动面板视口大小
table.setPreferredScrollableViewportSize(new Dimension(550,400));
//把表格放到滚动面板中(自动添加到顶部)
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane);
jf.add(panel);
jf.pack();
jf.setContentPane(panel);
jf.setVisible(true);
}
/**
* 查询所有用户数据
* @return 查找到的数据生成的list集合
*/
public List<Students> queryAllUser(){
String sql="select * from students,grades where grades.sid="+"students.id";
List<Students> list=new ArrayList<Students>();
try {
Connection conn=DBConnection.getCon();
//获取结果集
PreparedStatement ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
Students student=new Students();
//跨表列号相加
student.setId(rs.getInt(1));
student.setName(rs.getString(2));
student.setSex(rs.getString(3));
student.setClasses(rs.getString(5));
student.setAcademy(rs.getString(6));
student.setMath(rs.getFloat(9));
student.setChniese(rs.getFloat(10));
list.add(student);
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
/**
* 查询一个用户数据(用户id)
* @return 查找到的用户数据返回
*/
public Students queryUser(Integer snumber){
Students student = new Students();
//关联两张表查询
String sql="select * from students,grades where grades.sid="+"students.id and students.id="+snumber;
try {
Statement stm = DBConnection.getCon().createStatement();
//结果集
ResultSet rs=stm.executeQuery(sql);
if(rs.next()){
//跨表列号相加
student.setId(rs.getInt(1));
student.setName(rs.getString(2));
student.setSex(rs.getString(3));
student.setClasses(rs.getString(5));
student.setAcademy(rs.getString(6));
student.setMath(rs.getFloat(9));
student.setChniese(rs.getFloat(10));
}
stm.close();
} catch (SQLException e) {
e.printStackTrace();
}
return student;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == searchBtn) {
int num = Integer.parseInt(JTNumber.getText());
if(num >0)
setTable(num);
else
JOptionPane.showMessageDialog(null, "输入数据错误!");
}
if(e.getSource() == searchAllBtn) {
setTable(0);
}
if(e.getSource() == nextBtn) {
JTNumber.setText(null);
}
if(e.getSource() == cancelBtn) {
this.setVisible(false);
}
}
/**
* 生成表格数据
* @return 表格数据二维数组
*/
public Object[][] queryData(int num){
if(!(queryUser(num)==null)) {
Students student = new Students();
student = queryUser(num);
//行设置为1,防止数组越界 "学号","姓名","班级","学院","语文","数学"
rowData=new Object[1][column.length];
rowData[0][0]=student.getId();
rowData[0][1]=student.getName();
rowData[0][2]=student.getChniese();
rowData[0][3]=student.getMath();
rowData[0][4]=student.getClasses();
rowData[0][5]=student.getAcademy();
}
if(num == 0) {
List<Students> list=queryAllUser();
rowData=new Object[list.size()][column.length];
System.out.println("查询全部信息");
for(int i=0;i<list.size();i++){
for(int j=0;j<column.length;j++) {
rowData[i][0]=list.get(i).getId();
rowData[i][1]=list.get(i).getName();
rowData[i][2]=list.get(i).getChniese();
rowData[i][3]=list.get(i).getMath();
rowData[i][4]=list.get(i).getClasses();
rowData[i][5]=list.get(i).getAcademy();
System.out.print(rowData[i][j]+" ");
}
System.out.println();
}
}
return rowData;
}
}
运行结果
登录
主界面
添加信息
修改信息
删除信息
查询信息
查询成绩
总结:总体实现MYSQL数据库增删改查功能,界面方面没有仔细制作,功能实现还存在一些BUG,逻辑方面还存在一些问题,总体实现没有问题,细节请忽略。