/** 学生:直接删除 任课老师,直接删除 */
  private void deleteStudent(int row) {
    AdminBLService ad = new AdminController();
    UserVo stu = new UserVo((String) table.getValueAt(row, 0), "", "", "", "", "", "", "", 0, "");

    String result = ad.deleteUser(stu);
    Methods.showTip(result);
  }
  /** 删除教务处老师或院系教务老师: 若还有其他该角色的老师则直接删除, 否则要求用户添加一名新的老师,若不添加则不能删除 */
  private void deleteJW(final int row, String role) {
    AdminBLService ad = new AdminController();
    ArrayList<UserVo> user = ad.getUser(role);

    if (user.size() > 1) {
      String result =
          ad.deleteUser(
              new UserVo((String) table.getValueAt(row, 0), role, "", "", "", "", "", "", 0, ""));
      Methods.showTip(result);
    } else {
      JDialog tip = new JDialog();
      tip.getContentPane().setLayout(null);
      tip.setTitle("~~~");
      tip.setSize(350, 200);
      tip.setLocationRelativeTo(null);

      JTextArea area = new JTextArea("请先添加一名新的用户来接管该" + Methods.eToC(role) + "的\r\n工作再执行删除");
      area.setBounds(42, 44, 260, 60);
      tip.getContentPane().add(area);

      tip.setVisible(true);
    }
  }
  /** Initialize the contents of the frame. */
  @SuppressWarnings({"unchecked", "rawtypes"})
  private void initialize() {
    setOpaque(false);
    setLayout(null);

    JPanel panel_1 = new JPanel();
    panel_1.setBounds(529, 32, 246, 65);
    panel_1.setOpaque(false);
    panel_1.setBorder(
        new TitledBorder(null, "得到用户", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    add(panel_1);
    panel_1.setLayout(null);

    JLabel lblId = new JLabel("用户ID");
    lblId.setBounds(6, 28, 66, 15);
    panel_1.add(lblId);

    txtid = new JTextField();
    txtid.setBounds(72, 24, 89, 21);
    txtid.setText("");
    panel_1.add(txtid);
    txtid.setColumns(10);

    JButton button_1 = new JButton("");
    button_1.setBounds(173, 12, 50, 50);
    button_1.setIcon(new ImageIcon(UserManage.class.getResource("/image/ok.png")));
    button_1.setBorderPainted(false);
    button_1.setContentAreaFilled(false);
    button_1.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            String id = txtid.getText();
            if (id.equals("") || id == null) Methods.showTip("请输入用户账号");
            else {
              AdminBLService ad = new AdminController();
              UserVo v = ad.getUserById(id);

              if (v == null) {
                Methods.showTip("该用户不存在");
              } else {
                tableUser.setRowCount(0);
                tableUser.addRow(
                    new Object[] {
                      v.getID(),
                      Methods.eToC(v.getRole()),
                      v.getPassword(),
                      v.getName(),
                      v.getGender(),
                      v.getBirthday(),
                      v.getIc(),
                      v.getDepartment(),
                      v.getRegisterYear(),
                      v.getContact()
                    });
              }
            }

            txtid.setText("");
          }
        });
    panel_1.add(button_1);

    JPanel panel_2 = new JPanel();
    panel_2.setBounds(529, 249, 246, 283);
    panel_2.setOpaque(false);
    panel_2.setBorder(
        new TitledBorder(null, "用户信息", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    add(panel_2);
    panel_2.setLayout(null);

    JLabel lblid = new JLabel("用户ID");
    lblid.setBounds(11, 29, 53, 16);
    panel_2.add(lblid);

    txtid_1 = new JTextField();
    txtid_1.setEditable(false);
    txtid_1.setBounds(63, 27, 134, 22);
    panel_2.add(txtid_1);
    txtid_1.setColumns(10);

    JLabel label_1 = new JLabel("身份");
    label_1.setBounds(11, 65, 38, 16);
    panel_2.add(label_1);

    comboBox_2 = new JComboBox();
    comboBox_2.setBounds(63, 60, 134, 27);
    comboBox_2.setModel(
        new DefaultComboBoxModel(new String[] {"【请选择】", "教务处老师", "院系教务老师", "任课老师", "学生"}));
    comboBox_2.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            String role = (String) comboBox_2.getSelectedItem();

            // 根据用户角色初始化需填的信息
            if (role.equals("教务处老师")) {
              textField_1.setEditable(false);
            }
            if (role.equals("院系教务老师") || role.equals("任课老师")) {
              textField_1.setEditable(true);
            }
            if (role.equals("学生")) {
              textField_1.setEditable(true);
            }
          }
        });
    panel_2.add(comboBox_2);

    JLabel label_2 = new JLabel("姓名");
    label_2.setBounds(11, 100, 38, 16);
    panel_2.add(label_2);

    txtnamestring = new JTextField();
    txtnamestring.setEditable(false);
    txtnamestring.setBounds(63, 97, 134, 23);
    panel_2.add(txtnamestring);
    txtnamestring.setColumns(10);

    JLabel label_3 = new JLabel("密码");
    label_3.setBounds(11, 133, 34, 16);
    panel_2.add(label_3);

    textField = new JTextField();
    textField.setEditable(false);
    textField.setBounds(64, 130, 134, 23);
    panel_2.add(textField);
    textField.setColumns(10);

    JLabel lblNewLabel = new JLabel("院系");
    lblNewLabel.setBounds(11, 166, 34, 15);
    panel_2.add(lblNewLabel);

    textField_1 = new JTextField();
    textField_1.setEditable(false);
    textField_1.setBounds(64, 163, 134, 21);
    panel_2.add(textField_1);
    textField_1.setColumns(10);

    final JButton btns = new JButton("");
    btns.setIcon(new ImageIcon(UserManage.class.getResource("/image/publish.png")));
    btns.setToolTipText("点击提交");
    btns.setBorderPainted(false);
    btns.setBounds(99, 205, 50, 50);
    btns.setEnabled(false);
    btns.setContentAreaFilled(false);
    btns.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            String id = txtid_1.getText();

            if (((String) comboBox_2.getSelectedItem()).equals("【请选择】")) {
              Methods.showTip("请选择用户身份");
              return;
            }
            String role = Methods.cToE((String) comboBox_2.getSelectedItem());
            String name = txtnamestring.getText();
            String pass = textField.getText();
            String de = textField_1.getText();

            if (id.length() == 0 || pass.length() == 0) {
              Methods.showTip("请输入完整信息");
              return;
            }

            String result;
            AdminBLService ad = new AdminController();
            switch (type) {
              case 0:
                modiUser.setRole(role);
                modiUser.setDepartment(de);
                result = ad.modifyUser(modiUser);
                break;
              case 1:
                /*
                 * 根据用户的身份判断管理员信息是否添加完整
                 */
                if ((!role.equals("JW")) && de.length() == 0) {
                  Methods.showTip("请输入完整信息");
                  return;
                }
                UserVo adUser = new UserVo(id, role, pass, name, "", "", "", de, 0, "");
                result = ad.addUser(adUser);
                break;
              default:
                result = "";
            }
            btns.setEnabled(false);
            if (result.equals("") || result == null) ;
            else {
              Methods.showTip(result);
            }

            // 清空提交过的用户信息并恢复文本框为不可编辑
            txtid_1.setText("");
            txtid_1.setEditable(false);
            comboBox_2.setSelectedIndex(0);
            txtnamestring.setText("");
            txtnamestring.setEditable(false);
            textField.setText("");
            textField.setEditable(false);
            textField_1.setEditable(false);
            textField_1.setText("");
          }
        });
    panel_2.add(btns);

    JPanel panel_3 = new JPanel();
    panel_3.setBounds(529, 127, 246, 96);
    panel_3.setOpaque(false);
    panel_3.setBorder(
        new TitledBorder(null, "操作", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    add(panel_3);
    panel_3.setLayout(null);

    JButton btna = new JButton("");
    btna.setBounds(19, 23, 66, 62);
    panel_3.add(btna);
    btna.setToolTipText("点击添加用户");
    btna.setIcon(new ImageIcon(UserManage.class.getResource("/image/add.png")));
    btna.setBorderPainted(false);

    JButton btnm = new JButton("");
    btnm.setBounds(90, 23, 66, 62);
    panel_3.add(btnm);
    btnm.setIcon(new ImageIcon(UserManage.class.getResource("/image/fill.png")));
    btnm.setToolTipText("点击修改用户");
    btnm.setBorderPainted(false);
    btnm.setContentAreaFilled(false);
    btnm.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            int row = table.getSelectedRow();

            /*
             * 得到用户原始的各项信息,存于modiUser对象中
             */
            String id = (String) table.getValueAt(row, 0);
            String role = (String) table.getValueAt(row, 1);
            String password = (String) table.getValueAt(row, 2);
            String name = (String) table.getValueAt(row, 3);
            String gender = (String) table.getValueAt(row, 4);
            String birth = (String) table.getValueAt(row, 5);
            String ic = (String) table.getValueAt(row, 6);
            String de = (String) table.getValueAt(row, 7);
            int grade = (Integer) table.getValueAt(row, 8);

            txtid_1.setText(id);
            comboBox_2.setSelectedItem(role);
            txtnamestring.setText(name);
            textField.setText(password);
            textField_1.setText(de);
            modiUser = new UserVo(id, role, password, name, gender, birth, ic, de, grade, "");

            type = 0;
            btns.setEnabled(true);

            /*
             * 用户的ID、姓名、密码、年级(即注册年份)不允许更改
             */
            txtid_1.setEditable(false);
            textField.setEditable(false);
            txtnamestring.setEditable(false);

            textField_1.setEditable(true);
          }
        });

    JButton btnd = new JButton("");
    btnd.setBounds(161, 23, 66, 62);

    btnd.setBorderPainted(false);
    btnd.setIcon(new ImageIcon(UserManage.class.getResource("/image/delete.png")));
    btnd.setToolTipText("点击删除用户");
    btnd.setContentAreaFilled(false);
    btnd.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            int row = table.getSelectedRow();

            /*
             * 根据要删除的用户角色执行不同的操作
             */
            String role = Methods.cToE((String) table.getValueAt(row, 1));
            if (role.equals("Student") || role.equals("Teacher")) {
              deleteStudent(row);
            }
            /*if (role.equals("Teacher")) {
            	deleteTeacher(row);
            }*/
            if (role.equals("YXJW") || role.equals("JW")) {
              deleteJW(row, role);
            }
          }
        });
    panel_3.add(btnd);

    btna.setContentAreaFilled(false);
    btna.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            type = 1;

            // 清空原有信息
            txtid_1.setText("");
            comboBox_2.setSelectedIndex(0);
            txtnamestring.setText("");
            textField.setText("");
            textField_1.setText("");

            btns.setEnabled(true);
            txtid_1.setEditable(true);
            textField.setEditable(true);
            txtnamestring.setEditable(true);
            textField_1.setEditable(true);
          }
        });
    btna.setContentAreaFilled(false);

    JPanel panel_5 = new JPanel();
    panel_5.setBounds(6, 32, 515, 500);
    panel_5.setOpaque(false);
    panel_5.setBorder(
        new TitledBorder(null, "用户列表", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    add(panel_5);
    panel_5.setLayout(null);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(10, 70, 489, 424);
    panel_5.add(scrollPane);

    table = new JTable();
    table.setModel(tableUser);
    table.getColumnModel().getColumn(1).setPreferredWidth(90);
    table.getColumnModel().getColumn(6).setPreferredWidth(120);
    table.getColumnModel().getColumn(7).setPreferredWidth(100);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    scrollPane.setViewportView(table);

    comboBox = new JComboBox();
    comboBox.setBounds(10, 30, 153, 27);
    panel_5.add(comboBox);
    comboBox.setModel(
        new DefaultComboBoxModel(new String[] {"身份【全部】", "教务处老师", "院系教务老师", "任课老师", "学生"}));

    comboBox_1 = new JComboBox();
    comboBox_1.setBounds(192, 30, 147, 27);
    panel_5.add(comboBox_1);

    /*
     * 初始化院系选项
     */
    AdminBLService ad = new AdminController();
    ArrayList<String> de = ad.getDepartment();
    String[] department = new String[de.size() + 1];
    department[0] = "院系【全部】";
    for (int i = 0; i < de.size(); i++) {
      department[i + 1] = de.get(i);
    }

    comboBox_1.setModel(new DefaultComboBoxModel(department));

    ImageIcon i = new ImageIcon(UserManage.class.getResource("/image/ok.png"));
    JButton button1 = new JButton(i);
    button1.setBounds(376, 12, 50, 50);
    button1.setToolTipText("点击获取筛选结果");
    button1.setOpaque(false);
    button1.setBorderPainted(false);
    button1.setContentAreaFilled(false);
    panel_5.add(button1);
    button1.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            int rowcount = tableUser.getRowCount();
            while (rowcount != 0) {
              tableUser.removeRow(--rowcount);
            }
            String identity = (String) comboBox.getSelectedItem();
            String department = (String) comboBox_1.getSelectedItem();
            AdminBLService ad = new AdminController();
            ArrayList<UserVo> list;
            if (identity.equals("身份【全部】") && department.equals("院系【全部】")) {
              list = ad.getUser();
            } else if (identity.equals("身份【全部】")) list = ad.getDeUser(department);
            else if (department.equals("院系【全部】")) list = ad.getUser(Methods.cToE(identity));
            else list = ad.getDeUser(department, Methods.cToE(identity));

            if (list != null && list.size() != 0) {
              for (int i = 0; i < list.size(); i++) {
                UserVo v = list.get(i);
                tableUser.addRow(
                    new Object[] {
                      v.getID(),
                      Methods.eToC(v.getRole()),
                      v.getPassword(),
                      v.getName(),
                      v.getGender(),
                      v.getBirthday(),
                      v.getIc(),
                      v.getDepartment(),
                      v.getRegisterYear(),
                      v.getContact()
                    });
              }
            }
          }
        });
  }