diff --git a/Library/src/main/java/com/cfive/classroom/library/net/util/MessageObject.java b/Library/src/main/java/com/cfive/classroom/library/net/util/MessageObject.java index 9edac76..5427223 100644 --- a/Library/src/main/java/com/cfive/classroom/library/net/util/MessageObject.java +++ b/Library/src/main/java/com/cfive/classroom/library/net/util/MessageObject.java @@ -1,5 +1,7 @@ package com.cfive.classroom.library.net.util; +import com.cfive.classroom.library.database.bean.AttStatus; + import java.io.Serializable; public class MessageObject implements Serializable { @@ -8,14 +10,16 @@ public class MessageObject implements Serializable { private String code; private String count; private String message; + private AttStatus attStatus; private MessageType messageType; - public MessageObject(String stuNo, String name, String code, String message,String count,MessageType messageType) { + public MessageObject(String stuNo, String name, String code, String message,String count,AttStatus attStatus,MessageType messageType) { this.stuNo = stuNo; this.stuName = name; this.code = code; this.message = message; this.count = count; + this.attStatus=attStatus; this.messageType=messageType; } @@ -51,6 +55,14 @@ public class MessageObject implements Serializable { this.count = count; } + public AttStatus getAttStatus() { + return attStatus; + } + + public void setAttStatus(AttStatus attStatus) { + this.attStatus = attStatus; + } + public String getMessage() { return message; } diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/Attendance.java b/Teacher/src/main/java/com/cfive/classroom/teacher/Attendance.java index 9dea2ad..0d5f361 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/Attendance.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/Attendance.java @@ -1,6 +1,15 @@ package com.cfive.classroom.teacher; +import com.cfive.classroom.library.database.DatabaseHelper; +import com.cfive.classroom.library.database.bean.AttStatus; +import com.cfive.classroom.library.database.bean.Course; +import com.cfive.classroom.library.database.bean.Student; +import com.cfive.classroom.library.database.util.DependenciesNotFoundException; +import com.cfive.classroom.library.database.util.NoConfigException; import com.cfive.classroom.library.net.TeacherNet; +import com.cfive.classroom.library.net.util.MessageObject; +import com.cfive.classroom.library.net.util.MessageType; +import com.cfive.classroom.library.net.util.ReceiveListener; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -11,6 +20,9 @@ import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.*; import java.awt.event.ComponentAdapter; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; public class Attendance { private static final Attendance attendance=new Attendance(); @@ -24,9 +36,32 @@ public class Attendance { private JTable table_undo; private JLabel test; private TeacherNet teacherNet; + private String courseID; + private final List studentList = new ArrayList<>(); private static final Logger LOGGER= LogManager.getLogger(); public Attendance() { + //学生签到信息监听 + 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()); + } 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); + } + } + } + }); table_undo.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @@ -37,10 +72,6 @@ public class Attendance { String newString=table_undo.getValueAt(row,2).toString(); attendance.test.setText(newString); LOGGER.info(newString); - - - - } }); } @@ -54,15 +85,27 @@ public class Attendance { frame.setVisible(false); } - public void start(TeacherNet teacherNet1){ + public void start(TeacherNet teacherNet1,String courseID){ frame.setContentPane(attendance.rootPanel); frame.setSize(600,400); frame.setLocationRelativeTo(null); frame.setResizable(false); attendance.teacherNet=teacherNet1; + attendance.courseID=courseID; + try { + studentList.addAll(DatabaseHelper.selectStudentsFromCourse(Long.parseLong(courseID))); //导入该课程学生名单 + } catch (DependenciesNotFoundException e) { + throw new RuntimeException(e); + } catch (NoConfigException e) { + throw new RuntimeException(e); + } catch (SQLException e) { + throw new RuntimeException(e); + } + //已签考勤表格 DefaultTableModel alreadyTableModel=new DefaultTableModel(data,t1_columnTitle); alreadyTableModel.setColumnCount(3); attendance.table_already.setModel(alreadyTableModel); + //未签考勤表格 DefaultTableModel undoTableModel=new DefaultTableModel(data,t2_columnTitle); undoTableModel.setColumnCount(3); attendance.table_undo.setModel(undoTableModel); diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.java b/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.java index 4b1a961..90f52bd 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.java @@ -29,7 +29,8 @@ public class ChangePassword { if(check()){ //将修改后的密码在数据表修改 try { - DatabaseHelper.changePasswdInTeacher(Long.valueOf(workNo_input.getText()),newPw_ok.getPassword().toString()); + DatabaseHelper.changePasswdInTeacher(Long.valueOf(workNo_input.getText()),String.valueOf(newPw_ok.getPassword())); + LOGGER.debug(String.valueOf(newPw_ok.getPassword())); } catch (NoConfigException ex) { JOptionPane.showMessageDialog(null,"没有数据库配置文件","警告",JOptionPane.ERROR_MESSAGE); LOGGER.error("No configuration", e); 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 b60ce6d..9bc75c9 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java @@ -18,10 +18,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.sql.SQLException; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; +import java.util.*; public class Main { private static final Main main = new Main(); @@ -36,7 +33,7 @@ public class Main { private JTextField workNo_show; private JTextField subName_show; private String workNo,courseID; - private List studentList; + private final List studentList = new ArrayList<>();; private String[] student; private TeacherNet teacherNet; private final Logger LOGGER = LogManager.getLogger(); @@ -82,7 +79,7 @@ public class Main { @Override public void actionPerformed(ActionEvent e) { Attendance attendance = new Attendance(); - attendance.start(teacherNet); + attendance.start(teacherNet,courseID); } }); @@ -100,7 +97,7 @@ public class Main { String[] arr = new String[i]; //new一个该数长度的String数组 try { - studentList = DatabaseHelper.selectStudentsFromCourse(Long.parseLong(courseID)); + studentList.addAll(DatabaseHelper.selectStudentsFromCourse(Long.parseLong(courseID))); if (!studentList.isEmpty()) { //判断是否获取到学生名单 LOGGER.info("学生列表" + studentList); for (int j = 0; j < i; ) { @@ -128,7 +125,7 @@ public class Main { } JOptionPane.showMessageDialog(null, "恭喜以下同学被选中:\n\t\n" + count); //将选人结果群发出去 - teacherNet.sendAllMessage(new MessageObject(null, null, null, null, count, MessageType.Select)); + teacherNet.sendAllMessage(new MessageObject(null, null, null, null, count, null,MessageType.Select)); }else { JOptionPane.showMessageDialog(null, "学生名单未导入", "错误", JOptionPane.ERROR_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 9ea458a..e92fb18 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java @@ -46,7 +46,7 @@ public class SendMessage { if(messageToAll!=null){ SimpleDateFormat sendTime = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); messageShow.append("@所有人: "+sendTime.format(System.currentTimeMillis())+'\n'+messageToAll+'\n'); - MessageObject messageObject = new MessageObject(null,null,null,"@所有人:"+messageToAll,null, MessageType.ChatToAll); + MessageObject messageObject = new MessageObject(null,null,null,"@所有人:"+messageToAll,null,null,MessageType.ChatToAll); teacherNet.sendAllMessage(messageObject); messageInput.setText(""); }else {