Java+Mysql+学生信息管理系统的实现
2019-06-01 20:58
681 查看
开发语言:java; 开发环境:Mysql, java; 开发工具:eclipse
基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查。
1.Student类(学生的基本信息)
package com.zhang.Student; public class Student { public String num;//学号 public String name;//姓名 public String grade;//成绩 public Student(String num,String name,String grade ) { this.num = num; this.name = name; this.grade = grade; } }
2.StudentJFrame类(简单的图形界面–真丑)
package com.zhang.Student; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class StudentJFrame { public void setJFrame(){ /* * 设置窗口基本样式 */ JFrame jframe = new JFrame("学生管理系统"); jframe.setSize(500, 382); jframe.setLocation(100, 100); jframe.setLayout(null); /* * 创建容器增加按钮 */ Container c = jframe.getContentPane(); JButton b =new JButton("增加"); JButton b1 =new JButton("删除"); JButton b2 =new JButton("修改"); JButton b3 =new JButton("查看"); ImageIcon image = new ImageIcon("images/school.jpg"); final JLabel l = new JLabel(); l.setIcon(image); l.setBounds(0,0,image.getIconWidth(),image.getIconHeight()); JLabel l1 = new JLabel("欢迎来到学生管理系统"); l1.setBounds(100, 0, 400, 180); Font font = new Font("楷体",Font.BOLD,30); l1.setFont(font); b.setBounds(120, 250, 60, 30); b1.setBounds(190, 250, 60, 30); b2.setBounds(260, 250, 60, 30); b3.setBounds(330, 250, 60, 30); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new StudentJDialogAdd(jframe).setVisible(true);; } }); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new StudentJDialogDelete(jframe).setVisible(true); } }); b2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new StudentJDialogUpdate(jframe).setVisible(true); } }); b3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new StudentJDialogSelect(jframe).setVisible(true); } }); c.add(b); c.add(b1); c.add(b2); c.add(b3); c.add(l1); c.add(l); /* * 设置窗口可见与关闭方式 */ jframe.setVisible(true); jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE); } public static void main(String[] args) { StudentJFrame f =new StudentJFrame(); f.setJFrame(); } }
3.StudentDAO接口(实现JDBC对数据库进行增删改查)
package com.zhang.Student; public interface StudentDAO { public void add(Student student); public void delete(Student student); public void update(Student student); public void select(Student student); }
4.StudentJDBC类(连接数据库对学生信息进行增删改查)
package com.zhang.Student; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class StudentJDBC implements StudentDAO{ public StudentJDBC() { try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("驱动加载成功"); } catch (ClassNotFoundException e) { // TODO: handle exception e.printStackTrace(); } } public Connection getConnection() throws SQLException { System.out.println("数据库连接成功"); return DriverManager.getConnection("jdbc:mysql://localhost/student","root","123456"); } public void add(Student student) { String sql = "insert into student values(?,?,?)"; try(Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql)) { ps.setString(1, student.num); ps.setString(2, student.name); ps.setString(3, student.grade); ps.execute(); System.out.println("数据添加成功"); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } } @Override public void delete(Student student) { } @Override public void update(Student student) { // TODO Auto-generated method stub } @Override public void select(Student student) { } }
5.数据库信息
6.StudentJDialogAdd类(连接数据库增加学生信息)
package com.zhang.Student; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; public class StudentJDialogAdd extends JDialog{ public static int rowCount=0; public int columnCount = 3;;//设置初始行与列 String num[] = new String[100]; String name[] = new String[100]; String grade[] = new String[100]; public String[][] newtableValues = new String[100][3]; public StudentJDialogAdd(JFrame jframe) { /* * 设置简单的窗口格式 */ super(jframe,"增加",true); setBounds(200, 200, 400, 400); Container c =getContentPane(); c.setLayout(null); /* * 设置表格内容 */ String columnNames[] = new String[]{"学号","姓名","成绩"}; String tableValues[][] = new String[0][3]; DefaultTableModel tablemodel = new DefaultTableModel(tableValues,columnNames); JTable table = new JTable(tablemodel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JButton b= new JButton("增加"); JButton b1= new JButton("删除"); JButton b2= new JButton("保存"); b.setBounds(100, 200, 60, 30); b1.setBounds(170, 200, 60, 30); b2.setBounds(240, 200, 60, 30); c.add(b); c.add(b1); c.add(b2); JScrollPane js = new JScrollPane(table); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { js.setVisible(true); String []newdata = {""}; tablemodel.addRow(newdata); rowCount++; } }); b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int selectedRow = table.getSelectedRow(); if(selectedRow!=-1) { tablemodel.removeRow(selectedRow); rowCount--; } } }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String newtableValues[][] = new String[rowCount][3]; for(int i=0; i<table.getRowCount(); i++) { for(int j=0; j<table.getColumnCount();j++) { /* * 解决JTable保存时最后输入的一个单元格(cell)数据丢失问题的方法 * table.getCellEditor(rowCount-1, 1).stopCellEditing(); */ table.getCellEditor(rowCount, 1).stopCellEditing(); if(j == 0) { num[i] = (String)table.getValueAt(i, j); } if(j == 1) { name[i] = (String)table.getValueAt(i, j); 4000 } if(j == 2) { grade[i] = (String)table.getValueAt(i, j); } newtableValues[i][j] = (String)table.getValueAt(i, j); } } for(int k=0 ;k<rowCount; k++) { StudentJDBC s = new StudentJDBC(); Student student = new Student(num[k],name[k],grade[k]); s.add(student); } } }); js.setVisible(true); c.add(js); js.setBounds(0, 0, 400, 400); jframe.setVisible(true); jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE); } public int getRowCount() { return rowCount; } }
7.StudentJDialogDelete类(连接数据库删除学生信息)
package com.zhang.Student; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; public class StudentJDialogDelete extends JDialog{ int i=0,j=0; int count=0; int selectedRow; String selected; public StudentJDialogDelete(JFrame jframe) { super(jframe,"删除",true); setBounds(200, 200, 400, 400); Container c =getContentPane(); c.setLayout(null); String columnNames[] = new String[]{"学号","姓名","成绩"}; String tableValues[][] =new String[100][3]; try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("驱动加载成功"); } catch (ClassNotFoundException e) { // TODO: handle exception e.printStackTrace(); } try(Connection connection= DriverManager.getConnection("jdbc:mysql://localhost/student","root","123456"); Statement s = connection.createStatement(); ) { String sql = "select num from student"; String sql1 = "select name from student"; String sql2 = "select grade from student"; String sql3 = "select count(num) from student"; ResultSet rs =s.executeQuery(sql); while(rs.next()) { tableValues[i][0] = rs.getString("num"); i++; } i=0; ResultSet rs1 =s.executeQuery(sql1); while(rs1.next()) { tableValues[i][1] = rs1.getString("name"); i++; } i=0; ResultSet rs2 =s.executeQuery(sql2); while(rs2.next()) { tableValues[i][2] = rs2.getString("grade"); i++; } ResultSet rs3=s.executeQuery(sql3); while(rs3.next()) { count = rs3.getInt("count(num)"); } } catch (SQLException e) { // TODO: handle exception } String newtableValues[][] = new String[count+1][3]; for(i=0 ;i<count+1 ;i++) { for(j=0; j<3 ;j++) { newtableValues[i][j] = tableValues[i][j]; } } DefaultTableModel tablemodel = new DefaultTableModel(newtableValues,columnNames); JTable table = new JTable(tablemodel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane js = new JScrollPane(table); JButton b1= new JButton("删除"); JButton b2= new JButton("保存"); b1.setBounds(110, 200, 60, 30); b2.setBounds(180, 200, 60, 30); c.add(b1); c.add(b2); b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { selectedRow = table.getSelectedRow(); if(selectedRow!=-1) { selected = (String) table.getValueAt(selectedRow, 0); tablemodel.removeRow(selectedRow); } } }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String sql4 = "delete from student where num=?"; try { Connection c1 = DriverManager.getConnection("jdbc:mysql://localhost/student","root","123456"); PreparedStatement ps = c1.prepareStatement(sql4); ps.setString(1, selected); ps.execute(); System.out.println("删除数据成功"); } catch (SQLException e2) { // TODO: handle exception e2.printStackTrace(); } } }); js.setVisible(true); c.add(js); js.setBounds(0, 0, 400, 400); jframe.setVisible(true); jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE); } }
8.StudentJDialogUpdate(连接数据库修改学生信息)
package com.zhang.Student; import java.awt.Container; 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 javax.swing.JButton; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; public class StudentJDialogUpdate extends JDialog{ int i=0,j=0; int count=0; int selectedRow; int selectColumn; String selected; String selectednum; public StudentJDialogUpdate(JFrame jframe){ super(jframe,"修改",true); setBounds(200, 200, 400, 400); Container c =getContentPane(); c.setLayout(null); String columnNames[] = new String[]{"学号","姓名","成绩"}; String tableValues[][] =new String[100][3]; try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("驱动加载成功"); } catch (ClassNotFoundException e) { // TODO: handle exception e.printStackTrace(); } try(Connection connection= DriverManager.getConnection("jdbc:mysql://localhost/student","root","123456"); Statement s = connection.createStatement(); ) { String sql = "select num from student"; String sql1 = "select name from student"; String sql2 = "select grade from student"; String sql3 = "select count(num) from student"; ResultSet rs =s.executeQuery(sql); while(rs.next()) { tableValues[i][0] = rs.getString("num"); i++; } i=0; ResultSet rs1 =s.executeQuery(sql1); while(rs1.next()) { tableValues[i][1] = rs1.getString("name"); i++; } i=0; ResultSet rs2 =s.executeQuery(sql2); while(rs2.next()) { tableValues[i][2] = rs2.getString("grade"); i++; } ResultSet rs3=s.executeQuery(sql3); while(rs3.next()) { count = rs3.getInt("count(num)"); } } catch (SQLException e) { // TODO: handle exception } String newtableValues[][] = new String[count+1][3]; for(i=0 ;i<count+1 ;i++) { for(j=0; j<3 ;j++) { newtableValues[i][j] = tableValues[i][j]; } } DefaultTableModel tablemodel = new DefaultTableModel(newtableValues,columnNames); JTable table = new JTable(tablemodel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane js = new JScrollPane(table); JButton b = new JButton("保存"); b.setBounds(150, 200, 60, 30); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { selectedRow = table.getSelectedRow(); selectColumn = table.getSelectedColumn(); table.getCellEditor(selectedRow,selectColumn).stopCellEditing(); selected = (String)table.getValueAt(selectedRow, selectColumn); selectednum = (String)table.getValueAt(selectedRow, 0); System.out.println(selected); System.out.println(selectednum); String sql1 = "update student set num='"+selected+"' where num ='"+selectednum+"'"; String sql2 = "update student set name='"+selected+"' where num ='"+selectednum+"'"; String sql3 = "update student set grade='"+selected+"' where num ='"+selectednum+"'"; try { Connection c1 = DriverManager.getConnection("jdbc:mysql://localhost/student","root","123456"); if(selectColumn==0) { //System.out.println("123"); PreparedStatement ps = c1.prepareStatement(sql1); ps.execute(); } if(selectColumn==1) { //System.out.println("456"); PreparedStatement ps = c1.prepareStatement(sql2); ps.execute(); } if(selectColumn==2) { //System.out.println("789"); PreparedStatement ps = c1.prepareStatement(sql3); ps.execute(); } System.out.println("修改数据成功"); } catch (SQLException e2) { // TODO: handle exception e2.printStackTrace(); } } }); c.add(b); js.setVisible(true); c.add(js); js.setBounds(0, 0, 400, 400); jframe.setVisible(true); jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE); } }
9.StudentJDialogSelect(连接数据库查看学生信息)
package com.zhang.Student; import java.awt.Container; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; public class StudentJDialogSelect extends JDialog{ int i=0,j=0; int count=0; int selectedRow; String selected; public StudentJDialogSelect(JFrame jframe){ super(jframe,"查看",true); setBounds(200, 200, 400, 400); Container c =getContentPane(); c.setLayout(null); String columnNames[] = new String[]{"学号","姓名","成绩"}; String tableValues[][] =new String[100][3]; try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("驱动加载成功"); } catch (ClassNotFoundException e) { // TODO: handle exception e.printStackTrace(); } try(Connection connection= DriverManager.getConnection("jdbc:mysql://localhost/student","root","123456"); Statement s = connection.createStatement(); ) { String sql = "select num from student"; String sql1 = "select name from student"; String sql2 = "select grade from student"; String sql3 = "select count(num) from student"; ResultSet rs =s.executeQuery(sql); while(rs.next()) { tableValues[i][0] = rs.getString("num"); i++; } i=0; ResultSet rs1 =s.executeQuery(sql1); while(rs1.next()) { tableValues[i][1] = rs1.getString("name"); i++; } i=0; ResultSet rs2 =s.executeQuery(sql2); while(rs2.next()) { tableValues[i][2] = rs2.getString("grade"); i++; } ResultSet rs3=s.executeQuery(sql3); while(rs3.next()) { count = rs3.getInt("count(num)"); } } catch (SQLException e) { // TODO: handle exception } String newtableValues[][] = new String[count+1][3]; for(i=0 ;i<count+1 ;i++) { for(j=0; j<3 ;j++) { newtableValues[i][j] = tableValues[i][j]; } } DefaultTableModel tablemodel = new DefaultTableModel(newtableValues,columnNames); JTable table = new JTable(tablemodel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane js = new JScrollPane(table); js.setVisible(true); c.add(js); js.setBounds(0, 0, 400, 400); jframe.setVisible(true); jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE); } }
历时一周写完–(外加自闭一天)
相关文章推荐
- 学生信息管理系统--(Java+MySQL实现)
- java swing mysql实现的学生信息管理系统v1.0附带视频指导教程
- Java+MySQL实现学生信息管理系统源码
- java(swing)+mysql实现学生信息管理系统
- java.swing和Java.awt实现学生信息管理系统
- Java swing mysql实现的学生学院班级信息管理系统V1.1附带视频运行指导教程
- Java swing mysql实现的学生学院班级信息管理系统V1.1附带视频运行指导教程
- Java 实现学生信息管理系统
- JavaSwing+Hibernate实现简单的学生信息管理系统
- Java60行代码实现swing+mysql学生信息管理系统
- java学生信息管理系统设计与实现
- java实现简单的学生信息管理系统
- 学生信息管理系统--(Java+MySQL实现)
- java(swing)+ mysql实现学生信息管理系统源码
- java swing mysql实现的学生信息管理系统v1.0附带视频指导教程
- Java实现学生信息管理系统并与MySQL数据库进行交互
- c语言实现的学生信息管理系统
- c++ stl list实现简单的学生信息管理系统
- ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
- 学生信息管理系统简单模拟(C语言实现)