📄 editstudent.java
字号:
package StudentManagement;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.*;
public class EditStudent extends JFrame implements ActionListener {
// 声明部分
JPanel panel1, panel2, panel3, panel4;
JLabel lblNumber, lblName, lblSex, lblAge, lblDepartment;
JTextField txtNumber, txtName, txtSex, txtAge, txtDepartment;
JButton btnTop, btnPrevious, btnNext, btnBottom, btnExit, btnEdit, btnOK,
btnCancel;
Connection conn;
Statement stmt;
ResultSet rs;
int recCount,curRecord; //总记录数,当前记录号
long curNumber; //当前学号
// 构造方法
public EditStudent(String title) {
super(title);
initialize();
}
private void initialize() {
// 创建组件
panel1 = new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
panel4 = new JPanel();
lblNumber = new JLabel("学号:");
lblName = new JLabel("姓名:");
lblSex = new JLabel("性别:");
lblAge = new JLabel("年龄:");
lblDepartment = new JLabel("系名:");
txtNumber = new JTextField("", 10);
txtName = new JTextField("", 10);
txtSex = new JTextField("", 5);
txtAge = new JTextField("", 5);
txtDepartment = new JTextField("", 15);
btnTop = new JButton("第一条[T]");
btnPrevious = new JButton("上一条[P]");
btnNext = new JButton("下一条[N]");
btnBottom = new JButton("最后一条[B]");
btnExit = new JButton("退出[X]");
btnEdit = new JButton("编辑[E]");
btnOK = new JButton("确定[O]");
btnCancel = new JButton("取消[C]");
// 添加组件
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(panel1, "Center");
this.getContentPane().add(panel2, "South");
panel1.setLayout(new GridLayout(5, 2));
panel1.add(lblNumber);
panel1.add(txtNumber);
panel1.add(lblName);
panel1.add(txtName);
panel1.add(lblSex);
panel1.add(txtSex);
panel1.add(lblAge);
panel1.add(txtAge);
panel1.add(lblDepartment);
panel1.add(txtDepartment);
panel2.setLayout(new GridLayout(2, 1));
panel2.add(panel3);
panel2.add(panel4);
panel3.add(btnTop);
panel3.add(btnPrevious);
panel3.add(btnNext);
panel3.add(btnBottom);
panel3.add(btnExit);
panel4.add(btnEdit);
panel4.add(btnOK);
panel4.add(btnCancel);
// 设置属性
this.setResizable(false);
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
txtNumber.setEditable(false);
txtName.setEditable(false);
txtSex.setEditable(false);
txtAge.setEditable(false);
txtDepartment.setEditable(false);
btnTop.setMnemonic(KeyEvent.VK_T);
btnPrevious.setMnemonic(KeyEvent.VK_P);
btnNext.setMnemonic(KeyEvent.VK_N);
btnBottom.setMnemonic(KeyEvent.VK_B);
btnExit.setMnemonic(KeyEvent.VK_X);
btnEdit.setMnemonic(KeyEvent.VK_E);
btnOK.setMnemonic(KeyEvent.VK_O);
btnCancel.setMnemonic(KeyEvent.VK_C);
btnOK.setEnabled(false);
btnCancel.setEnabled(false);
try {
// 安装驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// 连接数据库
conn = DriverManager.getConnection("jdbc:odbc:student");
// 创建SQL语句
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
// 执行SQL语句获取结果集
rs = stmt.executeQuery("select * from studentbase");
// 计算总记录数
rs.last();
recCount=rs.getRow();
// 显示第一条记录
rs.first();
this.setTitle("编辑学生表记录" + " 当前记录:" + rs.getRow());
txtNumber.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtAge.setText(rs.getString("年龄"));
txtDepartment.setText(rs.getString("系名"));
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "编辑学生表记录",
JOptionPane.ERROR_MESSAGE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "表中没有记录!", "编辑学生表记录",
JOptionPane.ERROR_MESSAGE);
btnTop.setEnabled(false);
btnPrevious.setEnabled(false);
btnNext.setEnabled(false);
btnBottom.setEnabled(false);
btnEdit.setEnabled(false);
}
// 注册监听器
btnTop.addActionListener(this);
btnPrevious.addActionListener(this);
btnNext.addActionListener(this);
btnBottom.addActionListener(this);
btnExit.addActionListener(this);
btnEdit.addActionListener(this);
btnOK.addActionListener(this);
btnCancel.addActionListener(this);
}
// 编写事件处理代码
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnTop) {
try {
rs.first();
this.setTitle("编辑学生表记录" + " 当前记录:" + rs.getRow());
txtNumber.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtAge.setText(rs.getString("年龄"));
txtDepartment.setText(rs.getString("系名"));
} catch (SQLException e1) {
}
} else if (e.getSource() == btnPrevious) {
try {
if(rs.getRow()>1){
rs.previous();
}else{
JOptionPane.showMessageDialog(null, "已到第一条记录!", "编辑学生表记录",
JOptionPane.WARNING_MESSAGE);
}
this.setTitle("编辑学生表记录" + " 当前记录:" + rs.getRow());
txtNumber.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtAge.setText(rs.getString("年龄"));
txtDepartment.setText(rs.getString("系名"));
} catch (SQLException e1) {
//不做错误处理
}
} else if (e.getSource() == btnNext) {
try {
if(rs.getRow()<recCount){
rs.next();
}else{
JOptionPane.showMessageDialog(null, "已到最后一条记录!", "编辑学生表记录",
JOptionPane.WARNING_MESSAGE);
}
this.setTitle("编辑学生表记录" + " 当前记录:" + rs.getRow());
txtNumber.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtAge.setText(rs.getString("年龄"));
txtDepartment.setText(rs.getString("系名"));
} catch (SQLException e1) {
//不做错误处理
}
} else if (e.getSource() == btnBottom) {
try {
rs.last();
this.setTitle("编辑学生表记录" + " 当前记录:" + rs.getRow());
txtNumber.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtAge.setText(rs.getString("年龄"));
txtDepartment.setText(rs.getString("系名"));
} catch (SQLException e1) {
}
} else if (e.getSource() == btnExit) {
this.dispose();
} else if (e.getSource() == btnEdit) {
txtNumber.setEditable(true);
txtName.setEditable(true);
txtSex.setEditable(true);
txtAge.setEditable(true);
txtDepartment.setEditable(true);
btnOK.setEnabled(true);
btnCancel.setEnabled(true);
btnEdit.setEnabled(false);
try {
curRecord=rs.getRow();
curNumber=Long.parseLong(txtNumber.getText().trim());
} catch (SQLException e1) {
}
} else if (e.getSource() == btnOK) {
//判断学号文本框里输入的是否全是数字
if(!isNumber(txtNumber.getText().trim())){
JOptionPane.showMessageDialog(null, "注意:学号全由数字构成!", "增加学生记录",
JOptionPane.WARNING_MESSAGE);
txtNumber.setText("");
txtNumber.requestFocus();
}else{
//判断年龄文本框里输入的是否全是数字
if(!isNumber(txtAge.getText().trim())){
JOptionPane.showMessageDialog(null, "注意:年龄全由数字构成!", "增加学生记录",
JOptionPane.WARNING_MESSAGE);
txtAge.setText("");
txtAge.requestFocus();
}else{
String strSQL = "update studentbase set 学号="
+ Long.parseLong(txtNumber.getText().trim()) + ", 姓名='"
+ txtName.getText().trim() + "', 年龄="
+ Integer.parseInt(txtAge.getText().trim()) + ", 性别='"
+ txtSex.getText().trim() + "', 系名='"
+ txtDepartment.getText().trim() + "' where 学号=" + curNumber;
try {
stmt.execute(strSQL);
rs = stmt.executeQuery("select * from studentbase");
rs.absolute(curRecord);
txtNumber.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtAge.setText(rs.getString("年龄"));
txtDepartment.setText(rs.getString("系名"));
JOptionPane.showMessageDialog(null, "记录修改成功!", "编辑学生表记录",
JOptionPane.INFORMATION_MESSAGE);
btnOK.setEnabled(false);
btnCancel.setEnabled(false);
btnEdit.setEnabled(true);
txtNumber.setEditable(false);
txtName.setEditable(false);
txtSex.setEditable(false);
txtAge.setEditable(false);
txtDepartment.setEditable(false);
} catch (SQLException e1) {
}
}
}
} else if (e.getSource() == btnCancel) {
btnOK.setEnabled(false);
btnCancel.setEnabled(false);
btnEdit.setEnabled(true);
txtNumber.setEditable(false);
txtName.setEditable(false);
txtSex.setEditable(false);
txtAge.setEditable(false);
txtDepartment.setEditable(false);
// 恢复文本框修改前的值
try {
rs.absolute(curRecord);
txtNumber.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtAge.setText(rs.getString("年龄"));
txtDepartment.setText(rs.getString("系名"));
} catch (SQLException e1) {
}
}
}
//判断一个字符串是否全是数字
boolean isNumber(String str){
for(int i=0;i<str.length();i++){
if(str.charAt(i)<'0' || str.charAt(i)>'9'){
return false;
}
}
return true;
}
//主方法
public static void main(String[] args) {
new EditStudent("编辑学生记录");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -