J2SE图形化学生管理系统

学生信息管理

使用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("测试");
	}
}

环境信息

  1. JDK1.8 数据库链接驱动 mysql-connector-java-8.0.13.jar
  2. 增加了 检查列表 功能。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值