目录
教师模块功能的实现
创建一个 Teacher 实体类
创建 添加老师界面 AddTeacherFrm 注意创建成 JInternalFrame 类型
页面的制作
给添加按钮绑定事件
提供一个重置表单功能
回到 MainFrm 添加教师管理的按钮
给添加教师按钮绑定事件
测试添加教师功能
创建教师信息管理页面 ManageTeacherFrm 注意创建成:JInternalFrame类型
制作 ManageTeacherFrm 页面
再制作其他组件 效果如下
注意:记得把 两个单选按钮添加到按钮组,怎么添加,参照之前的
回到MainFrm 给教师列表按钮添加事件
测试一下
回到 ManageTeacherFrm
当页面一打开,查询所有教师,给表格填充数据
首先在TeacherDao中提供查询教师的方法
在 ManageTeacherFrm 定义填充数据的方法
在 ManageTeacherFrm 构造方法中调用 setTable()方法
测试
给查询按钮绑定事件
给表格的每一行添加事件
给确认修改按钮绑定事件
首选在 TeacherDao中提供修改方法
给删除按钮添加事件
启动测试一下删除功能
回到 LoginFrm 判断如果是教师登录
首先在 TeacherDao 中提供登录的方法
在 LoginFrm 中进行判断
再回到 EditPwdFrm 页面 进行教师身份的判断
在构造方法中判断
在 TeacherDao 中提供修改密码的方法
在 EditPwdFrm 中修改submitEdit()方法
启动测试
教师模块功能的实现
创建一个 Teacher 实体类
public class Teacher { private int id; private String name; private String sex; private String title; private int age; private String password; //get set 方法,自己补上 }
创建 添加老师界面 AddTeacherFrm 注意创建成 JInternalFrame 类型
页面的制作
给组件起个名字
teacherNameTextField; teacherTitleTextField; teacherAgeTextField; teacherSexManRadioButton; teacherSexFemalRadioButton; teacherPasswordField;
给添加按钮绑定事件
//添加按钮绑定事件 addTeacherButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addTeacherAct(e); } });
//添加教师功能 protected void addTeacherAct(ActionEvent ae) { // TODO Auto-generated method stub String teacherName = teacherNameTextField.getText().toString(); String teacherSex = teacherSexManRadioButton.isSelected() ? teacherSexManRadioButton.getText().toString() : teacherSexFemalRadioButton.getText().toString(); String teacherTitle = teacherTitleTextField.getText().toString(); String teacherPassword = teacherPasswordField.getText().toString(); int teacherAge = 0; try { teacherAge = Integer.parseInt(teacherAgeTextField.getText().toString()); } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog(this, "年龄只允许输入数字!"); return; } if (StringUtil.isEmpty(teacherName)) { JOptionPane.showMessageDialog(this, "教师姓名必须填写!"); return; } if (StringUtil.isEmpty(teacherTitle)) { JOptionPane.showMessageDialog(this, "教师职称必须填写!"); return; } if (teacherAge == 0 || teacherAge < 0) { JOptionPane.showMessageDialog(this, "教师年龄必须大于0!"); return; } if (StringUtil.isEmpty(teacherPassword)) { JOptionPane.showMessageDialog(this, "教师登录密码必须填写!"); return; } Teacher teacher = new Teacher(); teacher.setName(teacherName); teacher.setSex(teacherSex); teacher.setTitle(teacherTitle); teacher.setAge(teacherAge); teacher.setPassword(teacherPassword); TeacherDao teacherDao = new TeacherDao(); if (teacherDao.addTeacher(teacher)) { JOptionPane.showMessageDialog(this, "教师添加成功!"); } else { JOptionPane.showMessageDialog(this, "教师添加失败!"); } //添加完重一下表单 resetValue(ae); }
提供一个重置表单功能
// 重置表单 protected void resetValue(ActionEvent ae) { // TODO Auto-generated method stub teacherNameTextField.setText(""); teacherTitleTextField.setText(""); teacherAgeTextField.setText(""); teacherSexManRadioButton.setSelected(true); teacherPasswordField.setText(""); }
回到 MainFrm 添加教师管理的按钮
给添加教师按钮绑定事件
//添加教师按钮事件 mntmNewMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //打开添加教师页面 openAddTeacherFrm(e); } });
//打开添加教师页面 protected void openAddTeacherFrm(ActionEvent e) { // TODO Auto-generated method stub AddTeacherFrm addTeacherFrm = new AddTeacherFrm(); addTeacherFrm.setVisible(true); desktopPane.add(addTeacherFrm); }
测试添加教师功能
创建教师信息管理页面 ManageTeacherFrm 注意创建成:JInternalFrame类型
制作 ManageTeacherFrm 页面
再制作其他组件 效果如下
给组件起名字
private JTable teacherListTable; private JTextField searchTeacherNameTextField; private JTextField editTeacherNameTextField; private JTextField editTeacherTitleTextField; private JTextField editTeacherAgeTextField; private JPasswordField editTeacherPasswordField; private JRadioButton editTeacherSexManRadioButton; private JRadioButton editTeacherSexFemalRadioButton; private JButton deleteTeacherButton;
注意:记得把 两个单选按钮添加到按钮组,怎么添加,参照之前的
回到MainFrm 给教师列表按钮添加事件
//教师列表按钮,事件绑定 menuItem_7.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { openManageTeacherFrm(e); } });
//打开教师列表页面 protected void openManageTeacherFrm(ActionEvent e) { ManageTeacherFrm manageTeacherFrm = new ManageTeacherFrm(); manageTeacherFrm.setVisible(true); desktopPane.add(manageTeacherFrm); }
测试一下
回到 ManageTeacherFrm
当页面一打开,查询所有教师,给表格填充数据
首先在TeacherDao中提供查询教师的方法
//查询教师 public List<Teacher> getTeacherList(Teacher teacher) { // TODO Auto-generated method stub List<Teacher> retList = new ArrayList<Teacher>(); StringBuffer sqlString = new StringBuffer("select * from s_teacher"); if(!StringUtil.isEmpty(teacher.getName())){ sqlString.append(" where name like '%"+teacher.getName()+"%'"); } try { Connection con = JDBCUtils.getConnection(); PreparedStatement preparedStatement = con.prepareStatement(sqlString.toString()); ResultSet executeQuery = preparedStatement.executeQuery(); while(executeQuery.next()){ Teacher t = new Teacher(); t.setId(executeQuery.getInt("id")); t.setName(executeQuery.getString("name")); t.setSex(executeQuery.getString("sex")); t.setTitle(executeQuery.getString("title")); t.setAge(executeQuery.getInt("age")); t.setPassword(executeQuery.getString("password")); retList.add(t); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return retList; }
在 ManageTeacherFrm 定义填充数据的方法
// 填充表格数据 private void setTable(Teacher teacher) { if ("教师".equals(MainFrm.userType.getName())) { Teacher tLogined = (Teacher) MainFrm.userObject; teacher.setName(tLogined.getName()); searchTeacherNameTextField.setText(teacher.getName()); } DefaultTableModel dft = (DefaultTableModel) teacherListTable.getModel(); dft.setRowCount(0); TeacherDao teacherDao = new TeacherDao(); List<Teacher> teacherList = teacherDao.getTeacherList(teacher); for (Teacher t : teacherList) { Vector v = new Vector(); v.add(t.getId()); v.add(t.getName()); v.add(t.getSex()); v.add(t.getTitle()); v.add(t.getAge()); v.add(t.getPassword()); dft.addRow(v); } }
在 ManageTeacherFrm 构造方法中调用 setTable()方法
//调用填充表格数据的方法 setTable(new Teacher());
测试
给查询按钮绑定事件
//查询按钮,绑定事件 button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { searchTeacher(e); } });
//条件查询 protected void searchTeacher(ActionEvent e) { // TODO Auto-generated method stub String teacherNameString = searchTeacherNameTextField.getText().toString(); Teacher teacher = new Teacher(); teacher.setName(teacherNameString); setTable(teacher); }
自己启动测试一下
给表格的每一行添加事件
//给表格的每一行添加事件 teacherListTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //点击表格没一行时,把这行的旧数据展示在编辑框里面 selectedTableRow(e); } });
// 点击表格每一行,展示旧数据 protected void selectedTableRow(MouseEvent e) { DefaultTableModel dft = (DefaultTableModel) teacherListTable.getModel(); editTeacherNameTextField.setText(dft.getValueAt(teacherListTable.getSelectedRow(), 1).toString()); editTeacherTitleTextField.setText(dft.getValueAt(teacherListTable.getSelectedRow(), 3).toString()); editTeacherAgeTextField.setText(dft.getValueAt(teacherListTable.getSelectedRow(), 4).toString()); editTeacherPasswordField.setText(dft.getValueAt(teacherListTable.getSelectedRow(), 5).toString()); String sex = dft.getValueAt(teacherListTable.getSelectedRow(), 2).toString(); if (sex.equals(editTeacherSexManRadioButton.getText())) { editTeacherSexManRadioButton.setSelected(true); } if (sex.equals(editTeacherSexFemalRadioButton.getText())) { editTeacherSexFemalRadioButton.setSelected(true); } }
测试
给确认修改按钮绑定事件
首选在 TeacherDao中提供修改方法
public boolean update(Teacher teacher){ String sql = "update s_teacher set name=?, sex=?,title=?,age=?,password=? where id=?"; try { Connection con = JDBCUtils.getConnection(); PreparedStatement preparedStatement = con.prepareStatement(sql); preparedStatement.setString(1, teacher.getName()); preparedStatement.setString(2, teacher.getSex()); preparedStatement.setString(3, teacher.getTitle()); preparedStatement.setInt(4, teacher.getAge()); preparedStatement.setString(5, teacher.getPassword()); preparedStatement.setInt(6, teacher.getId()); if(preparedStatement.executeUpdate() > 0){ return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; }
//确认修改按钮,事件绑定 updateTeacherButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { editTeacherAct(e); } });
//修改教师 protected void editTeacherAct(ActionEvent e) { int row = teacherListTable.getSelectedRow(); if(row == -1){ JOptionPane.showMessageDialog(this, "请选择要修改的数据!"); return; } String teacherName = editTeacherNameTextField.getText().toString(); String teacherSex = editTeacherSexManRadioButton.isSelected() ? editTeacherSexManRadioButton.getText().toString() : editTeacherSexFemalRadioButton.getText().toString(); String teacherTitle = editTeacherTitleTextField.getText().toString(); int teacherAge = 0; try { teacherAge = Integer.parseInt(editTeacherAgeTextField.getText().toString()); } catch (Exception ex) { // TODO: handle exception JOptionPane.showMessageDialog(this, "年龄只允许输入数字!"); return; } String teacherPassword = editTeacherPasswordField.getText().toString(); if(StringUtil.isEmpty(teacherName)){ JOptionPane.showMessageDialog(this, "教师姓名必须填写!"); return; } if(StringUtil.isEmpty(teacherTitle)){ JOptionPane.showMessageDialog(this, "教师职称必须填写!"); return; } if(teacherAge == 0 || teacherAge < 0){ JOptionPane.showMessageDialog(this, "教师年龄必须大于0!"); return; } if(StringUtil.isEmpty(teacherPassword)){ JOptionPane.showMessageDialog(this, "教师登录密码必须填写!"); return; } Teacher teacher = new Teacher(); teacher.setId(Integer.parseInt(teacherListTable.getValueAt(row, 0).toString())); teacher.setName(teacherName); teacher.setSex(teacherSex); teacher.setTitle(teacherTitle); teacher.setAge(teacherAge); teacher.setPassword(teacherPassword); TeacherDao teacherDao = new TeacherDao(); if(teacherDao.update(teacher)){ JOptionPane.showMessageDialog(this, "修改成功!"); }else{ JOptionPane.showMessageDialog(this, "修改失败!"); } //修改完成填充表格数据 setTable(new Teacher()); }
启动测试一下
给删除按钮添加事件
//删除按钮绑定事件 deleteTeacherButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { deleteTeacher(e); } });
// 删除教师 protected void deleteTeacher(ActionEvent e) { int row = teacherListTable.getSelectedRow(); if (row == -1) { JOptionPane.showMessageDialog(this, "请选择要删除的数据!"); return; } if (JOptionPane.showConfirmDialog(this, "确定要删除么?") != JOptionPane.OK_OPTION) return; int id = Integer.parseInt(teacherListTable.getValueAt(row, 0).toString()); TeacherDao teacherDao = new TeacherDao(); if (teacherDao.delete(id)) { JOptionPane.showMessageDialog(this, "删除成功!"); } else { JOptionPane.showMessageDialog(this, "删除失败!"); } // 删除完填充数据 setTable(new Teacher()); }
启动测试一下删除功能
回到 LoginFrm 判断如果是教师登录
首先在 TeacherDao 中提供登录的方法
public Teacher login(Teacher teacher){ String sql = "select * from s_teacher where name=? and password=?"; Teacher teacherRst = null; try { Connection con = JDBCUtils.getConnection(); PreparedStatement prst = con.prepareStatement(sql);// prst.setString(1, teacher.getName()); prst.setString(2, teacher.getPassword()); ResultSet executeQuery = prst.executeQuery(); if(executeQuery.next()){ teacherRst = new Teacher(); teacherRst.setId(executeQuery.getInt("id")); teacherRst.setName(executeQuery.getString("name")); teacherRst.setPassword(executeQuery.getString("password")); teacherRst.setSex(executeQuery.getString("sex")); teacherRst.setAge(executeQuery.getInt("Age")); teacherRst.setTitle(executeQuery.getString("title")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return teacherRst; }
在 LoginFrm 中进行判断
// 点击登录按钮进行处理 protected void userLogin(ActionEvent e) throws SQLException { // 获取用户输入的用户名和密码,以及登录类型 按快捷键 ctrl+1 会补全返回值 String username = usernameTextField.getText().toString().trim(); String password = passwordTextField.getText().toString().trim(); // 获取用户的下拉选择 UserType selectedItem = (UserType) userTypeComboBox.getSelectedItem(); // 判断用户名和密码是否为空 if (StringUtil.isEmpty(username)) { // 弹出一个提示框进行提示 JOptionPane.showMessageDialog(this, "用户名不能为空!"); return; // 注意return掉 } if (StringUtil.isEmpty(password)) { JOptionPane.showMessageDialog(this, "密码不能为空!"); return; // 注意return掉 } // 根据不同的身份进行不同的登录操作 Admin admin = null; if ("管理员".equals(selectedItem.getName())) { //代码略... } else if ("教师".equals(selectedItem.getName())) { //教师登录 Teacher teacher = null; TeacherDao teacherDao = new TeacherDao(); Teacher teacherTmp = new Teacher(); teacherTmp.setName(username); teacherTmp.setPassword(password); teacher = teacherDao.login(teacherTmp); if(teacher == null){ JOptionPane.showMessageDialog(this, "用户名或密码错误!"); return; } JOptionPane.showMessageDialog(this, "欢迎【"+selectedItem.getName()+"】:"+teacher.getName()+"登录本系统!"); this.dispose(); new MainFrm(selectedItem, teacher).setVisible(true); } else { //学生登录..代码略 } }
再回到 EditPwdFrm 页面 进行教师身份的判断
在构造方法中判断
// 根据不同的身份在,修改密码页面展示用户名 if ("管理员".equals(MainFrm.userType.getName())) { Admin admin = (Admin) MainFrm.userObject; cureentUser.setText("【系统管理员】" + admin.getName()); }else if("学生".equals(MainFrm.userType.getName())){ Student student = (Student)MainFrm.userObject; cureentUser.setText("【学生】" + student.getName()); }else{ //教师 Teacher teacher = (Teacher)MainFrm.userObject; cureentUser.setText("【教师】" + teacher.getName()); }
在 TeacherDao 中提供修改密码的方法
public String editPassword(Teacher teacher,String newPassword){ String sql = "select * from s_teacher where id=? and password=?"; PreparedStatement prst = null; int id = 0; try { Connection con = JDBCUtils.getConnection(); prst = con.prepareStatement(sql); prst.setInt(1, teacher.getId()); prst.setString(2, teacher.getPassword()); ResultSet executeQuery = prst.executeQuery(); if(!executeQuery.next()){ String retString = "旧密码错误"; return retString; } id = executeQuery.getInt("id"); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String retString = "修改失败"; String sqlString = "update s_teacher set password = ? where id = ?"; try { Connection con = JDBCUtils.getConnection(); prst = con.prepareStatement(sqlString); prst.setString(1, newPassword); prst.setInt(2, id); int rst = prst.executeUpdate(); if(rst > 0){ retString = "密码修改成功"; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return retString; }
在 EditPwdFrm 中修改submitEdit()方法
// 确认修改 protected void submitEdit(ActionEvent e) { // 获取输入框的输入内容 String oldPassword = oldPwdTextField.getText().toString().trim(); String newPassword = newPwdTextField.getText().toString().trim(); String conformPassword = okNewPwdTextField.getText().toString().trim(); if (StringUtil.isEmpty(oldPassword)) { JOptionPane.showMessageDialog(this, "请填写旧密码!"); return; } if (StringUtil.isEmpty(newPassword)) { JOptionPane.showMessageDialog(this, "请填写新密码!"); return; } if (StringUtil.isEmpty(conformPassword)) { JOptionPane.showMessageDialog(this, "请确认新密码!"); return; } if (!newPassword.equals(conformPassword)) { JOptionPane.showMessageDialog(this, "两次密码输入不一致!"); return; } if ("管理员".equals(MainFrm.userType.getName())) { //代码略... } if ("学生".equals(MainFrm.userType.getName())) { //代码略... } if("教师".equals(MainFrm.userType.getName())){ TeacherDao teacherDao = new TeacherDao(); Teacher teacherTmp = new Teacher(); Teacher teacher = (Teacher)MainFrm.userObject; teacherTmp.setName(teacher.getName()); teacherTmp.setPassword(oldPassword); teacherTmp.setId(teacher.getId()); JOptionPane.showMessageDialog(this, teacherDao.editPassword(teacherTmp, newPassword)); return; } }