diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.form b/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.form index dd7e6b7..7764273 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.form +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.form @@ -28,7 +28,7 @@ - + @@ -63,6 +63,7 @@ + diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.java b/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.java index 763a3b6..5cd6494 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/Attend.java @@ -31,7 +31,7 @@ public class Attend { private static final JFrame frame = new JFrame("考勤情况"); private JPanel rootPanel; private JTabbedPane tabbedPane1; - private final Object[] t1_columnTitle = {"学号", "姓名", "签到时间"}; + private final Object[] t1_columnTitle = {"考勤号","学号", "姓名", "签到时间","签到状态"}; private final Object[] t2_columnTitle = {"考勤号", "学号", "姓名", "签到状态"}; private JTable table_already; private JTable table_undo; @@ -50,25 +50,67 @@ public class Attend { teacherNet.setOnReceiveListener(new ReceiveListener() { @Override public void onReceive(MessageObject messageObject) { - //判断该信息类型是否为签到并且签到状态是否为已签 - if (messageObject.getMessageType() == MessageType.CheckIn && messageObject.getAttStatus() == AttStatus.signed) { - try { - //将学生签到状态修改进数据表中 - DatabaseHelper.updateAttendance(messageObject.getStuNo(), messageObject.getAttStatus(),messageObject.getLocalDateTime()); - } catch (NoConfigException e) { - JOptionPane.showMessageDialog(null, "没有数据库配置文件", "警告", JOptionPane.ERROR_MESSAGE); - LOGGER.error("No configuration", e); - } catch (SQLException e) { - JOptionPane.showMessageDialog(null, "数据库出错", "警告", JOptionPane.ERROR_MESSAGE); - LOGGER.error("SQLException", e); - } catch (DependenciesNotFoundException e) { - LOGGER.error("DependenciesNotFoundException", e); + if(messageObject.getStuNo()!=null){ + //判断该信息类型是否为签到并且签到状态是否为已签 + if (messageObject.getMessageType() == MessageType.CheckIn && messageObject.getAttStatus() == AttStatus.signed) { + try { + //将学生签到状态修改进数据表中 + DatabaseHelper.updateAttendance(messageObject.getStuNo(), messageObject.getAttStatus(),messageObject.getLocalDateTime()); + } catch (NoConfigException e) { + JOptionPane.showMessageDialog(null, "没有数据库配置文件", "警告", JOptionPane.ERROR_MESSAGE); + LOGGER.error("No configuration", e); + } catch (SQLException e) { + JOptionPane.showMessageDialog(null, "数据库出错", "警告", JOptionPane.ERROR_MESSAGE); + LOGGER.error("SQLException", e); + } catch (DependenciesNotFoundException e) { + LOGGER.error("DependenciesNotFoundException", e); + } + //刷新表格 + bt_refresh.doClick(); } } } }); } + //已签表格的鼠标点击事件 + table_already.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + //获取鼠标所点击的行和列 + int row = table_already.getSelectedRow(); + int col = table_already.getSelectedColumn(); + //修改学生签到状态 + if (col == 4) { + Object[] options = {AttStatus.absence, AttStatus.signed, AttStatus.leave_early, AttStatus.late, AttStatus.personal_leave, AttStatus.public_holiday, AttStatus.sick_leave, AttStatus.not_signed}; + AttStatus attStatus = (AttStatus) JOptionPane.showInputDialog(null, "选择您所要修改的签到状态", "提示", + JOptionPane.PLAIN_MESSAGE, null, options, options[0]); + + if (attStatus != null) { + String modifyStat = String.valueOf(attStatus); + //将修改后的状态显示出来 + table_already.getModel().setValueAt(modifyStat, row, col); + //将修改在数据库中更改 + try { + DatabaseHelper.updateAttendance(String.valueOf(table_already.getModel().getValueAt(row, 0)), attStatus, null); + } catch (NoConfigException ex) { + JOptionPane.showMessageDialog(null, "没有数据库配置文件", "警告", JOptionPane.ERROR_MESSAGE); + LOGGER.error("No configuration", e); + } catch (SQLException ex) { + JOptionPane.showMessageDialog(null, "数据库出错", "警告", JOptionPane.ERROR_MESSAGE); + LOGGER.error("SQLException", e); + } catch (DependenciesNotFoundException ex) { + JOptionPane.showMessageDialog(null, "未查询到该数据", "错误", JOptionPane.ERROR_MESSAGE); + LOGGER.error("DependenciesNotFoundException", e); + } + //刷新表格 + bt_refresh.doClick(); + } + } + } + }); + + //未签表格的鼠标点击事件 table_undo.addMouseListener(new MouseAdapter() { @Override @@ -100,7 +142,11 @@ public class Attend { JOptionPane.showMessageDialog(null, "未查询到该数据", "错误", JOptionPane.ERROR_MESSAGE); LOGGER.error("DependenciesNotFoundException", e); } - bt_refresh.doClick(); + //如果修改为已签则刷新表格 + if(attStatus==AttStatus.signed){ + bt_refresh.doClick(); + } + } } } @@ -141,11 +187,13 @@ public class Attend { }; if (alreadyList != null) { for (Attendance attendance : alreadyList) { + String attID = attendance.getAttID(); String stuID = String.valueOf(attendance.getStudent().getStuID()); String stuName = String.valueOf(attendance.getStudent().getStuName()); LocalDateTime attTime = attendance.getAttTime(); + AttStatus attStatus = attendance.getAttStatus(); String attTime1 = attTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - Object row[] = {stuID, stuName, attTime1}; + Object row[] = {attID,stuID, stuName, attTime1,String.valueOf(attStatus)}; alreadyTableModel.addRow(row); } } @@ -201,7 +249,7 @@ public class Attend { if (attendance.getAttStatus() == AttStatus.signed) { //筛选出已签到的考勤列表 alreadyList.add(attendance); } else { - undoList.add(attendance); + undoList.add(attendance); //筛选出未签到成功的列表 } } LOGGER.debug("alreadyList:" + alreadyList); @@ -222,41 +270,56 @@ public class Attend { }; if (alreadyList != null) { for (Attendance attendance : alreadyList) { + String attID = attendance.getAttID(); String stuID = String.valueOf(attendance.getStudent().getStuID()); String stuName = String.valueOf(attendance.getStudent().getStuName()); LocalDateTime attTime = attendance.getAttTime(); + AttStatus attStatus = attendance.getAttStatus(); String attTime1 = attTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - Object row[] = {stuID, stuName, attTime1}; + Object row[] = {attID,stuID, stuName, attTime1,String.valueOf(attStatus)}; alreadyTableModel.addRow(row); } } attend.table_already.setModel(alreadyTableModel); + TableColumn tableColumn1 = attend.table_already.getColumnModel().getColumn(0); + tableColumn1.setWidth(0); + tableColumn1.setMinWidth(0); + tableColumn1.setPreferredWidth(0); + tableColumn1.setMaxWidth(0); + attend.table_already.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0); + attend.table_already.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0); + attend.table_already.setCellSelectionEnabled(true); //未签考勤表格 - undoTableModel = new DefaultTableModel(t2_columnTitle, 0){ - @Override - public boolean isCellEditable(int row, int column) { - return false; + if(undoList!=null){ //判断该课程是否有学生名单 + undoTableModel = new DefaultTableModel(t2_columnTitle, 0){ + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }; + for (Attendance attendance : undoList) { //遍历插入数据 + String attID = attendance.getAttID(); + String stuID = String.valueOf(attendance.getStudent().getStuID()); + String stuName = String.valueOf(attendance.getStudent().getStuName()); + AttStatus attStatus = attendance.getAttStatus(); + Object row[] = {attID, stuID, stuName, String.valueOf(attStatus)}; + undoTableModel.addRow(row); } - }; - for (Attendance attendance : undoList) { - String attID = attendance.getAttID(); - String stuID = String.valueOf(attendance.getStudent().getStuID()); - String stuName = String.valueOf(attendance.getStudent().getStuName()); - AttStatus attStatus = attendance.getAttStatus(); - Object row[] = {attID, stuID, stuName, String.valueOf(attStatus)}; - undoTableModel.addRow(row); + attend.table_undo.setModel(undoTableModel); + //设置未签表格的第一列考勤号隐藏 + TableColumn tableColumn2 = attend.table_undo.getColumnModel().getColumn(0); + tableColumn2.setWidth(0); + tableColumn2.setMinWidth(0); + tableColumn2.setPreferredWidth(0); + tableColumn2.setMaxWidth(0); + attend.table_undo.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0); + attend.table_undo.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0); + attend.table_undo.setCellSelectionEnabled(true); + }else { + JOptionPane.showMessageDialog(null,"该课程学生名单未导入","提醒!",JOptionPane.INFORMATION_MESSAGE); } - attend.table_undo.setModel(undoTableModel); - //设置第一列隐藏 - TableColumn tableColumn = attend.table_undo.getColumnModel().getColumn(0); - tableColumn.setWidth(0); - tableColumn.setMinWidth(0); - tableColumn.setPreferredWidth(0); - tableColumn.setMaxWidth(0); - attend.table_undo.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0); - attend.table_undo.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0); - attend.table_undo.setCellSelectionEnabled(true); + frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/CheckIn.java b/Teacher/src/main/java/com/cfive/classroom/teacher/CheckIn.java index 4f2e564..fa16087 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/CheckIn.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/CheckIn.java @@ -75,10 +75,10 @@ public class CheckIn { bt_confim.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - number = n1 + n2 + n3 + n4; + //获取签到码广播出去 + number = textField1.getText() + textField2.getText() + textField3.getText() + textField4.getText(); if (number != null) { - LOGGER.info(number); - teacherNet.sendAllMessage(new MessageObject(null, null, number, null, null, null,null,MessageType.CheckIn)); + teacherNet.sendAllMessage(new MessageObject(null, null, number, null, null, null, null, MessageType.CheckIn)); JOptionPane.showMessageDialog(null, "签到码发布成功", "消息", JOptionPane.INFORMATION_MESSAGE); frame.dispose(); } else { diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.java b/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.java index dfdf494..7baf2e2 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.java @@ -34,6 +34,7 @@ public class ClassList { subName = select.substring(select.indexOf(" ") + 1); LOGGER.debug(courseID + " " + subName); Main.start(workerNo, courseID, subName); + frame.dispose(); } else { JOptionPane.showMessageDialog(null, "请选择您想要进入的课程", "温馨提示!", JOptionPane.WARNING_MESSAGE); } diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java b/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java index 0f55b00..8b1a0d0 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java @@ -156,14 +156,17 @@ public class Main { teacherNet.setOnReceiveListener(new ReceiveListener() { @Override public void onReceive(MessageObject messageObject) { - //学生端举手监听 - if (messageObject.getMessageType() == MessageType.RaiseHand) { - JOptionPane.showMessageDialog(null, messageObject.getStuName() + " 举手了", "温馨提示!", JOptionPane.INFORMATION_MESSAGE); - } - //学生留言监听 - if (messageObject.getMessageType() == MessageType.Chat) { - JOptionPane.showMessageDialog(null, messageObject.getMessage(), "学生 " + messageObject.getStuName() + " 向您留言", JOptionPane.INFORMATION_MESSAGE); + if(messageObject.getStuNo()!=null){ + //学生端举手监听 + if (messageObject.getMessageType() == MessageType.RaiseHand) { + JOptionPane.showMessageDialog(null, "学生 "+messageObject.getStuName() + " 向您举手", "温馨提示!", JOptionPane.INFORMATION_MESSAGE); + } + //学生留言监听 + if (messageObject.getMessageType() == MessageType.Chat) { + JOptionPane.showMessageDialog(null, messageObject.getMessage(), "学生 " + messageObject.getStuName() + " 向您留言", JOptionPane.INFORMATION_MESSAGE); + } } + } }); } diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java b/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java index 45b46c8..b3ba21d 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java @@ -29,12 +29,12 @@ public class SendMessage { teacherNet.setOnReceiveListener(new ReceiveListener() { @Override public void onReceive(MessageObject messageObject) { - if(messageObject.getMessageType()==MessageType.Chat){ - LocalDateTime sendTime = LocalDateTime.now(); - messageShow.append("学生 "+messageObject.getStuName()+": "+sendTime.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"))+'\n'+messageObject.getMessage()); - System.out.println(); + if(messageObject.getStuNo()!=null){ + if(messageObject.getMessageType()==MessageType.Chat){ + LocalDateTime sendTime = LocalDateTime.now(); + messageShow.append("学生 "+messageObject.getStuName()+": "+sendTime.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"))+'\n'+messageObject.getMessage()+'\n'); + } } - } }); } diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/SignIn.java b/Teacher/src/main/java/com/cfive/classroom/teacher/SignIn.java index bcb6db1..e2f124c 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/SignIn.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/SignIn.java @@ -50,6 +50,7 @@ public class SignIn { frame.setVisible(false); } else { JOptionPane.showMessageDialog(null, "密码错误,请重新输入", "错误!!", JOptionPane.ERROR_MESSAGE); + sigIn.password_input.setText(""); //清空输入框内容 } isConnectedToDatabase = true; } catch (NoConfigException ex) {