学生信息管理
使用J2SE图形化页面简单实现学生信息管理系统中学生信息管理,包括学生信息查询、学生信息维护(添加、修改、删除)等,有需要朋友可以自行扩展
1、学生信息查询
2、学生信息添加
3、学生信息修改
4、学生信息删除
创建数据表
create table student_ei(
id BIGINT,
name varchar(50),
sex varchar(10),
age int,
tel varchar(20)
)
代码
数据库操作层
package com.student.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.student.vo.Student;
public class DBLink {
private final static String url = "jdbc:mysql://XXXXXXX:3310/eladmin?serverTimezone=GMT"; //设置连接路径
private final static String username = "root"; //数据库用户名
private final static String password = "123456"; //数据库连接密码
private Connection conn = null;
/**
* 获取数据库链接
* @return
*/
public Connection getCon() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("驱动加载成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url, username, password);
System.out.println("连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 查询
* @param jxf_id
* @return
* @throws SQLException
*/
public List<Student> query(Integer jxf_id) throws SQLException {
//获取连接对象
conn = getCon();
Statement state=conn.createStatement();//容器
String sql = "";
if(null != jxf_id){
sql="select * from student_ei where id= '"+jxf_id+"'";
}else{
sql="select * from student_ei "; //sql语句
}
ResultSet rs=state.executeQuery(sql); //将sql语句传至数据库,返回的值为一个字符集用一个变量接收
List<Student> lst_q = new ArrayList<Student>();
while(rs.next()){
Student student_q = new Student();
student_q.setId(rs.getInt("id"));
student_q.setName(rs.getString("name"));
student_q.setSex(rs.getString("sex"));
student_q.setAge(rs.getString("age"));
student_q.setTel(rs.getString("tel"));
lst_q.add(student_q);
}
conn.close();
return lst_q;
}
/**
* 新增
* @return
* @throws SQLException
*/
public String increase( String jxf_id_t, String jxf_name_t,String jxf_sex_t,String jxf_age_t,String jxf_tel_t) throws SQLException {
conn = getCon();
Statement state=conn.createStatement();//容器
int jxf_id_t_i=Integer.parseInt(jxf_id_t);
int jxf_age_t_i=Integer.parseInt(jxf_age_t);
String sql="insert into student_ei values ('"+jxf_id_t_i+"','"+jxf_name_t+"','"+jxf_sex_t+"','"+jxf_age_t_i+"','"+jxf_tel_t+"')";//sql语句
state.executeUpdate(sql);
System.out.print("添加完毕");
conn.close();
return "添加成功";
}
/**
* 更新
* @throws SQLException
*/
public void modify(String s_id ,String s_name,String s_sex, String s_age, String s_phone) throws SQLException{
conn = getCon();
Statement state=conn.createStatement();//容器
String sql="update student_ei set name = '"+s_name+"',sex = '"+s_sex+"',age = '"+s_age+"',tel = '"+s_phone+"' "
+ " where id = '"+s_id+"'";
state.executeUpdate(sql);
System.out.print("修改成功");
conn.close();
}
/**
* 删除
* @param s_id
* @throws SQLException
*/
public void del(String s_id) throws SQLException{
conn = getCon();
Statement state=conn.createStatement();//容器
String sql="delete from student_ei where id = '"+s_id+"'";
state.executeUpdate(sql);
System.out.print("删除成功");
conn.close();
}
}
VO层
package com.student.vo;
public class Student {
private Integer id;
private String name;
private String sex;
private String age;
private String tel;
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 getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
JFRAME层
package com.student.win;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import com.student.db.DBLink;
import com.student.vo.Student;
public class WinFrame implements ActionListener{
JFrame jfrm = new JFrame(); //主窗口
JPanel jp_total = new JPanel(new BorderLayout());//边界布局
JPanel jp_1 = new JPanel(); //放入
JPanel jp_2 = new JPanel();
JScrollPane jp_c =new JScrollPane();
JTextField jxf = new JTextField(10);//文本框长度为10
JButton jbtn_cz = new JButton("FIND");//查找按钮
JButton jbtn_tj = new JButton("INSERT");//查找添加
JButton jbtn_xg = new JButton("UPDATE");//查找修改
JButton jbtn_sc = new JButton("DELETE");//查找修改
//表格
JTable jtb=new JTable();
DefaultTableModel tableModel = (DefaultTableModel) jtb.getModel();
public WinFrame(){
}
public WinFrame(String name){
jfrm.setVisible(true);//窗体可见
jfrm.setTitle("学生信息管理系统");//窗口标题
jfrm.setSize(800,600);//设置了一个长为800,高为600的框图。
//jfrm.setBounds(1,2,20,10);//设置一个左上角顶点在(1,2),长为20,宽为10的窗体。
jfrm.setLocation(240,135);//设置一个左上角顶点在(240,135)的窗体。
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口的时候退出程序
jfrm.add(jp_total);
jp_1.add(jxf,BorderLayout.WEST);
jp_1.add(jbtn_cz);
jp_total.add(jp_1,BorderLayout.NORTH);
jp_2.add(jbtn_tj);
jp_2.add(jbtn_xg);
jp_2.add(jbtn_sc);
jp_total.add(jp_2,BorderLayout.SOUTH);
jbtn_cz.addActionListener(this);
jbtn_tj.addActionListener(this);
jbtn_xg.addActionListener(this);
jbtn_sc.addActionListener(this);
jp_c.setViewportView(jtb);
jp_total.add(jp_c,BorderLayout.CENTER);
//表格
tableModel.addColumn("学 号");
tableModel.addColumn("姓 名");
tableModel.addColumn("性 别");
tableModel.addColumn("年 龄");
tableModel.addColumn("电 话");
//允许点击JTable的表头进行升降排序
jtb.setAutoCreateRowSorter(true);
//表格
DBLink link = new DBLink();
List<Student> lst = null ;
try {
lst = link.query(null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < lst.size(); i++) {
Student student = (Student) lst.get(i);
tableModel.addRow(new Object[] { student.getId(), student.getName(), student.getSex(),
student.getAge(), student.getTel()});}
jp_c.setViewportView(jtb);
//居中显示
DefaultTableCellRenderer dc=new DefaultTableCellRenderer();
dc.setHorizontalAlignment(JLabel.CENTER);
jtb.setDefaultRenderer(Object.class, dc);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object eventSource = e.getSource();
if(eventSource == jbtn_cz)//查找
{
System.out.print("查找");
String jxf_id = jxf.getText();
Integer jxf_id_i = null;
if(!"".equals(jxf_id) && null != jxf_id){
jxf_id_i=Integer.parseInt(jxf_id);
}
tableModel.getDataVector().clear(); //清除表格数据
tableModel.fireTableDataChanged(); //通知模型更新
jtb.updateUI();//刷新表格
DBLink Link = new DBLink();
List<Student> lst_q = null;
try {
lst_q = Link.query(jxf_id_i);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for (int i = 0; i < lst_q.size(); i++) {
Student student = (Student) lst_q.get(i);
tableModel.addRow(new Object[] { student.getId(), student.getName(), student.getSex(),
student.getAge(), student.getTel()});}
jp_c.setViewportView(jtb);
//居中显示
DefaultTableCellRenderer dc=new DefaultTableCellRenderer();
dc.setHorizontalAlignment(JLabel.CENTER);
jtb.setDefaultRenderer(Object.class, dc);
}
else if(eventSource == jbtn_tj)//添加
{
System.out.print("添加\n");
JFrame jfrm_tj = new JFrame();
jfrm_tj.setVisible(true);//窗体可见
jfrm_tj.setTitle("学生信息管理系统_添加");//窗口标题
jfrm_tj.setSize(240,280);//设置了一个长为800,高为600的框图。
jfrm_tj.setLocation(900,400);//设置一个左上角顶点在(240,135)的窗体。
JPanel jp_tj = new JPanel();
JPanel jp_tj_id = new JPanel();
JPanel jp_tj_name = new JPanel();
JPanel jp_tj_sex = new JPanel();
JPanel jp_tj_age = new JPanel();
JPanel jp_tj_tel = new JPanel();
JPanel jp_tj_tj = new JPanel();
jfrm_tj.add(jp_tj);
jp_tj.add(jp_tj_id);
jp_tj.add(jp_tj_name);
jp_tj.add(jp_tj_sex);
jp_tj.add(jp_tj_age);
jp_tj.add(jp_tj_tel);
jp_tj.add(jp_tj_tj);
JLabel lab_id = new JLabel("学号:",JLabel.CENTER);
JLabel lab_name = new JLabel("姓名:",JLabel.CENTER);
JLabel lab_sex = new JLabel("性别:",JLabel.CENTER);
JLabel lab_age = new JLabel("年龄:",JLabel.CENTER);
JLabel lab_tel = new JLabel("电话:",JLabel.CENTER);
jp_tj_id.add(lab_id);
jp_tj_name.add(lab_name);
jp_tj_sex.add(lab_sex);
jp_tj_age.add(lab_age);
jp_tj_tel.add(lab_tel);
JTextField jxf_id = new JTextField(10);//文本框长度为10
JTextField jxf_name = new JTextField(10);//文本框长度为10
JTextField jxf_sex = new JTextField(10);//文本框长度为10
JTextField jxf_age = new JTextField(10);//文本框长度为10
JTextField jxf_tel = new JTextField(10);//文本框长度为10
jp_tj_id.add(jxf_id);
jp_tj_name.add(jxf_name);
jp_tj_sex.add(jxf_sex);
jp_tj_age.add(jxf_age);
jp_tj_tel.add(jxf_tel);
JButton jbtn_tj_tj = new JButton("添加");//查找添加
jp_tj_tj.add(jbtn_tj_tj);
jbtn_tj_tj.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jbtn_tj_tj) {
System.out.print("添加完毕123");
String jxf_id_t = jxf_id.getText();
String jxf_name_t = jxf_name.getText();
String jxf_sex_t = jxf_sex.getText();
String jxf_age_t = jxf_age.getText();
String jxf_tel_t = jxf_tel.getText();
DBLink Link = new DBLink();
String str = "";
try {
str = Link.increase(jxf_id_t, jxf_name_t, jxf_sex_t, jxf_age_t, jxf_tel_t);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JOptionPane.showMessageDialog(null, str);
jfrm_tj.dispose();
refresh();
}
}});
}
else if(eventSource == jbtn_xg)//修改
{
System.out.print("修改\n");
int row = jtb.getSelectedRow();
if (row == -1) {
JOptionPane.showMessageDialog(null, "请选中一条记录");
return;
}
String xhValue = tableModel.getValueAt(row, 0).toString();
String nameValue = tableModel.getValueAt(row, 1).toString();
String sexValue = tableModel.getValueAt(row, 2).toString();
String ageValue = tableModel.getValueAt(row, 3).toString();
String phoneValue = tableModel.getValueAt(row, 4).toString();
JFrame jfrm_xg = new JFrame();
jfrm_xg.setTitle("学生信息管理系统—修改");//窗口标题
JPanel jp_xg = new JPanel();
JPanel jp_xg_id = new JPanel();
JPanel jp_xg_name = new JPanel();
JPanel jp_xg_sex = new JPanel();
JPanel jp_xg_age = new JPanel();
JPanel jp_xg_phone = new JPanel();
JLabel lab_xg_id = new JLabel("学号:",JLabel.CENTER);
JLabel lab_xg_name = new JLabel("姓名:",JLabel.CENTER);
JLabel lab_xg_sex = new JLabel("性别:",JLabel.CENTER);
JLabel lab_xg_age = new JLabel("年龄:",JLabel.CENTER);
JLabel lab_xg_phone = new JLabel("电话:",JLabel.CENTER);
JTextField jxf_xg_id = new JTextField(10);//文本框长度为10
JTextField jxf_xg_name = new JTextField(10);//文本框长度为10
JTextField jxf_xg_sex = new JTextField(10);//文本框长度为10
JTextField jxf_xg_age = new JTextField(10);//文本框长度为10
JTextField jxf_xg_phone = new JTextField(10);//文本框长度为10
JButton jbtn_xg_xg = new JButton("修改");//查找添加
jfrm_xg.setVisible(true);//窗体可见
jfrm_xg.setTitle("学生信息管理系统_修改");//窗口标题
jfrm_xg.setSize(240,270);//设置了一个长为800,高为600的框图。
jfrm_xg.setLocation(900,400);//设置一个左上角顶点在(240,135)的窗体。
jfrm_xg.add(jp_xg);
jp_xg.add(jp_xg_id);
jp_xg.add(jp_xg_name);
jp_xg.add(jp_xg_sex);
jp_xg.add(jp_xg_age);
jp_xg.add(jp_xg_phone);
jp_xg_id.add(lab_xg_id);
jp_xg_name.add(lab_xg_name);
jp_xg_sex.add(lab_xg_sex);
jp_xg_age.add(lab_xg_age);
jp_xg_phone.add(lab_xg_phone);
jxf_xg_id.setText(xhValue);
jxf_xg_id.setEnabled(false);
jxf_xg_name.setText(nameValue);
jxf_xg_sex.setText(sexValue);
jxf_xg_age.setText(ageValue);
jxf_xg_phone.setText(phoneValue);
jp_xg_id.add(jxf_xg_id);
jp_xg_name.add(jxf_xg_name);
jp_xg_sex.add(jxf_xg_sex);
jp_xg_age.add(jxf_xg_age);
jp_xg_phone.add(jxf_xg_phone);
jp_xg.add(jbtn_xg_xg);
jbtn_xg_xg.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jbtn_xg_xg) {
System.out.print("修改");
String s_id = jxf_xg_id.getText();
String s_name = jxf_xg_name.getText();
String s_sex = jxf_xg_sex.getText();
String s_age = jxf_xg_age.getText();
String s_phone = jxf_xg_phone.getText();
DBLink Link = new DBLink();
try {
Link.modify(s_id,s_name,s_sex,s_age,s_phone);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JOptionPane.showMessageDialog(null, "修改成功");
jfrm_xg.dispose();
refresh();
}
}});
}else if(eventSource == jbtn_sc){ //删除
int i = jtb.getSelectedRow();
if (i == -1) {
JOptionPane.showMessageDialog(null, "请选中一条记录");
return;
}
String xhValue = tableModel.getValueAt(i, 0).toString();
int option = JOptionPane.showConfirmDialog(null, "是否确认删除学号:"+xhValue+"学生?",
"系统提示", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (option == JOptionPane.YES_OPTION){
DBLink Link = new DBLink();
try {
Link.del(xhValue);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JOptionPane.showMessageDialog(null, "删除成功");
tableModel.removeRow(i);
}
}
/*else if(eventSource == jbtn_sx)//刷新
{
refresh();
}*/
}
public void refresh(){
tableModel.getDataVector().clear(); //清除表格数据
tableModel.fireTableDataChanged(); //通知模型更新
jtb.updateUI();//刷新表格
DBLink Link = new DBLink();
List<Student> lst_q = null;
try {
lst_q = Link.query(null);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for (int i = 0; i < lst_q.size(); i++) {
Student student = (Student) lst_q.get(i);
tableModel.addRow(new Object[] { student.getId(), student.getName(), student.getSex(),
student.getAge(), student.getTel()});}
jp_c.setViewportView(jtb);
//居中显示
DefaultTableCellRenderer dc=new DefaultTableCellRenderer();
dc.setHorizontalAlignment(JLabel.CENTER);
jtb.setDefaultRenderer(Object.class, dc);
}
}
测试类
package com.student.main;
import com.student.win.WinFrame;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new WinFrame("测试");
}
}
环境信息
- JDK1.8 数据库链接驱动 mysql-connector-java-8.0.13.jar
- 增加了 检查列表 功能。