diff --git a/Student/src/main/java/com/cfive/classroom/student/Center.java b/Student/src/main/java/com/cfive/classroom/student/Center.java index 7f9e0bb..918ddd4 100644 --- a/Student/src/main/java/com/cfive/classroom/student/Center.java +++ b/Student/src/main/java/com/cfive/classroom/student/Center.java @@ -4,6 +4,7 @@ import com.cfive.classroom.library.database.DatabaseHelper; import com.cfive.classroom.library.database.util.NoConfigException; import com.cfive.classroom.library.net.StudentNet; 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; @@ -84,7 +85,7 @@ public class Center { studentNet.setOnReceiveListener(new ReceiveListener() { @Override public void onReceive(MessageObject messageObject) { - if (messageObject.getCode().equals(signInCode)) { + if (messageObject.getMessageType()==MessageType.CheckIn&&messageObject.getCode().equals(signInCode)) { JOptionPane.showMessageDialog(null, "签到成功"); } else { JOptionPane.showMessageDialog(null,"签到失败"); @@ -98,7 +99,7 @@ public class Center { raiseHandButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - messageObject = new MessageObject(stuNo, stuName, null, null, null,true); + messageObject = new MessageObject(stuNo, stuName, null, null, null, MessageType.RaiseHand); studentNet.sendMessageThread(messageObject); JOptionPane.showMessageDialog(null,"你已经向老师举手"); } @@ -107,7 +108,7 @@ public class Center { studentNet.setOnReceiveListener(new ReceiveListener() { @Override public void onReceive(MessageObject messageObject) { - if (messageObject.isState()) { + if (messageObject.getMessageType()==MessageType.Select) { JOptionPane.showMessageDialog(null,"恭喜以下同学被选中:\n\t\n"+messageObject.getCount()); } } diff --git a/Student/src/main/java/com/cfive/classroom/student/Chat.java b/Student/src/main/java/com/cfive/classroom/student/Chat.java index b6e66ea..57f1d17 100644 --- a/Student/src/main/java/com/cfive/classroom/student/Chat.java +++ b/Student/src/main/java/com/cfive/classroom/student/Chat.java @@ -3,6 +3,7 @@ package com.cfive.classroom.student; import com.cfive.classroom.library.net.ReceiveThread; import com.cfive.classroom.library.net.StudentNet; 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 javax.swing.*; @@ -28,10 +29,10 @@ public class Chat { @Override public void actionPerformed(ActionEvent e) { if(String.valueOf(sendText.getText())!=null) { - studentNet.sendMessageThread(new MessageObject(stuNo, stuName, null, String.valueOf(sendText.getText()), null, false)); + studentNet.sendMessageThread(new MessageObject(stuNo, stuName, null, String.valueOf(sendText.getText()), null, MessageType.Chat)); } else{ - JOptionPane.showMessageDialog(null,"无发送内容"); + JOptionPane.showMessageDialog(null,"无发送内容","错误!",JOptionPane.ERROR_MESSAGE); } } }); @@ -39,7 +40,9 @@ public class Chat { studentNet.setOnReceiveListener(new ReceiveListener() { @Override public void onReceive(MessageObject messageObject) { - receiveText.setText("教师:\n"+messageObject.getMessage()); + if(messageObject.getMessageType()==MessageType.ChatToAll){ + receiveText.setText("教师:\n"+messageObject.getMessage()); + } } }); } diff --git a/Teacher/src/main/connect.properties b/Teacher/src/main/connect.properties new file mode 100644 index 0000000..049ad58 --- /dev/null +++ b/Teacher/src/main/connect.properties @@ -0,0 +1,3 @@ +# +#Sat Jun 11 00:33:50 CST 2022 +port=8888 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 bed1af1..9dea2ad 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/Attendance.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/Attendance.java @@ -1,5 +1,6 @@ package com.cfive.classroom.teacher; +import com.cfive.classroom.library.net.TeacherNet; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -22,6 +23,7 @@ public class Attendance { private JTable table_already; private JTable table_undo; private JLabel test; + private TeacherNet teacherNet; private static final Logger LOGGER= LogManager.getLogger(); public Attendance() { @@ -52,11 +54,12 @@ public class Attendance { frame.setVisible(false); } - public void start(){ + public void start(TeacherNet teacherNet1){ frame.setContentPane(attendance.rootPanel); frame.setSize(600,400); frame.setLocationRelativeTo(null); frame.setResizable(false); + attendance.teacherNet=teacherNet1; DefaultTableModel alreadyTableModel=new DefaultTableModel(data,t1_columnTitle); alreadyTableModel.setColumnCount(3); attendance.table_already.setModel(alreadyTableModel); diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.form b/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.form index c43be88..a334c60 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.form +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.form @@ -114,7 +114,7 @@ - + @@ -122,7 +122,7 @@ - + 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 6ef0f8e..4b1a961 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/ChangePassword.java @@ -1,23 +1,48 @@ package com.cfive.classroom.teacher; +import com.cfive.classroom.library.database.DatabaseHelper; +import com.cfive.classroom.library.database.util.DependenciesNotFoundException; +import com.cfive.classroom.library.database.util.NoConfigException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import javax.swing.*; +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.sql.SQLException; public class ChangePassword { private static final ChangePassword changePassword=new ChangePassword(); + private static JFrame frame = new JFrame("修改密码"); private JPanel rootPanel; private JTextField workNo_input; private JButton cancel; private JButton confirm; - private JPasswordField passwordField1; - private JPasswordField passwordField2; + private JPasswordField newPw_ok; + private JPasswordField newPassword; private String workNo,password1,password2; + private static final Logger LOGGER = LogManager.getLogger(); - static JFrame frame = new JFrame("ChangePassword"); public ChangePassword() { confirm.addActionListener(e -> { if(check()){ //将修改后的密码在数据表修改 + try { + DatabaseHelper.changePasswdInTeacher(Long.valueOf(workNo_input.getText()),newPw_ok.getPassword().toString()); + } 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) { + LOGGER.error("DependenciesNotFoundException",e); + } catch (NoSuchAlgorithmException ex) { + LOGGER.error("NoSuchAlgorithmException",e); + } catch (InvalidKeySpecException ex) { + LOGGER.error("InvalidKeySpecException",e); + } frame.dispose(); } }); @@ -45,8 +70,8 @@ public class ChangePassword { } private boolean check() { - password1 = String.valueOf(changePassword.passwordField1.getPassword()); - password2 = String.valueOf(changePassword.passwordField2.getPassword()); + password1 = String.valueOf(changePassword.newPw_ok.getPassword()); + password2 = String.valueOf(changePassword.newPassword.getPassword()); if(String.valueOf(changePassword.workNo_input.getText()).equals(workNo)) { if (password1.length()==0 || password2.length()==0) { 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 f8eb064..700692b 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/CheckIn.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/CheckIn.java @@ -1,5 +1,8 @@ package com.cfive.classroom.teacher; +import com.cfive.classroom.library.net.TeacherNet; +import com.cfive.classroom.library.net.util.MessageObject; +import com.cfive.classroom.library.net.util.MessageType; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -20,16 +23,18 @@ public class CheckIn { private JButton bt_confim; private JButton bt_cancel; private String n1,n2,n3,n4,number; + private TeacherNet teacherNet; private static final Logger LOGGER= LogManager.getLogger(); public CheckIn() { - //限制签到码的长度 + //取消按钮的监听 bt_cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - frame.setVisible(false); + frame.dispose(); } }); + //限制签到码的长度 textField1.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { @@ -70,7 +75,15 @@ public class CheckIn { @Override public void actionPerformed(ActionEvent e) { number=n1+n2+n3+n4; - LOGGER.info(number); + if(number!=null){ + LOGGER.info(number); + teacherNet.sendAllMessage(new MessageObject(null,null,number,null,null, MessageType.CheckIn)); + JOptionPane.showMessageDialog(null,"签到码发布成功","消息",JOptionPane.INFORMATION_MESSAGE); + frame.dispose(); + }else { + JOptionPane.showMessageDialog(null,"签到码不能为空","错误",JOptionPane.ERROR_MESSAGE); + } + } }); } @@ -81,11 +94,12 @@ public class CheckIn { frame.pack(); frame.setVisible(false); } - public void start(){ + public void start(TeacherNet teacherNet1){ frame.setContentPane(checkIn.rootPanel); frame.setSize(600,400); frame.setLocationRelativeTo(null); frame.setResizable(false); + checkIn.teacherNet=teacherNet1; frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); } diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.form b/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.form index 249e911..7f74851 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.form +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.form @@ -67,7 +67,7 @@ - + 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 18e8c7d..e571ef0 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/ClassList.java @@ -4,87 +4,72 @@ import com.cfive.classroom.library.database.DatabaseHelper; import com.cfive.classroom.library.database.bean.Course; import com.cfive.classroom.library.database.util.DependenciesNotFoundException; import com.cfive.classroom.library.database.util.NoConfigException; -import com.cfive.classroom.library.net.TeacherNet; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; import java.sql.SQLException; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; +import java.util.*; public class ClassList { - private static final ClassList classlist=new ClassList(); + private static final ClassList classList = new ClassList(); private static JFrame frame = new JFrame("课堂互动通-教师端"); private JPanel rootPanel1; - private JButton Button1; + private JButton bt_enter; private JComboBox comboBox; private JPanel selectPanel; - private String workerNo, subName; - private List courseList; + private String workerNo,courseID,subName; + private final List courseList = new ArrayList<>(); private static final Logger LOGGER = LogManager.getLogger(); - private TeacherNet teacherNet; + public ClassList() { - Button1.addActionListener(new ActionListener() { + bt_enter.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - subName =(String) classlist.comboBox.getSelectedItem(); - //从配置文件中读取端口号并传参到主界面 - Properties properties = new Properties(); - try { - properties.load(new BufferedReader(new FileReader("Teacher/src/main/connect.properties"))); - } catch (IOException ex) { - throw new RuntimeException(ex); + if (!Objects.equals(classList.comboBox.getSelectedItem(), "--请选择--")) { //判断是否有选择内容 + String select = classList.comboBox.getSelectedItem().toString(); + courseID = select.substring(0, select.indexOf(" ")); + subName=select.substring(select.indexOf(" ")+1); + LOGGER.debug(courseID+" "+subName); + Main.start(workerNo,courseID,subName); + } else { + JOptionPane.showMessageDialog(null, "请选择您想要进入的课程", "温馨提示!", JOptionPane.WARNING_MESSAGE); } - LOGGER.info(properties.getProperty("port")); - try { - teacherNet = new TeacherNet(Integer.valueOf(properties.getProperty("port"))); - } catch (IOException ex) { - throw new RuntimeException(ex); - } - if(subName!=null){ - Main.start(classlist.workerNo,classlist.subName,teacherNet); - } - frame.setVisible(false); } }); } public static void main(String[] args) { - frame.setContentPane(classlist.rootPanel1); + frame.setContentPane(classList.rootPanel1); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(false); } - public void start(String workerNo){ - frame.setContentPane(classlist.rootPanel1); - frame.setSize(600,400); + + public void start(String workerNo) { + frame.setContentPane(classList.rootPanel1); + frame.setSize(600, 400); frame.setLocationRelativeTo(null); frame.setResizable(false); - classlist.workerNo=workerNo; - //添加下拉列表的内容:该教师所教的科目名 + classList.workerNo = workerNo; + //添加下拉列表的内容:该教师所教的科目名以及其课程编号 try { - courseList=DatabaseHelper.queryCourses(Long.valueOf(classlist.workerNo)); - if(courseList!=null){ - Iterator iterator = courseList.iterator(); //使用迭代器进行遍历 - while(iterator.hasNext()){ - String subName = iterator.next().getSubject().getSubName(); - classlist.comboBox.addItem(subName); - } + classList.comboBox.addItem("--请选择--"); + courseList.addAll(DatabaseHelper.queryCourses(Long.parseLong(classList.workerNo))); + for (Course course : courseList) { + classList.comboBox.addItem(course.getCourID()+" "+course.getSubject().getSubName()); } } catch (NoConfigException e) { - throw new RuntimeException(e); + JOptionPane.showMessageDialog(null, "没有数据库配置文件", "警告", JOptionPane.ERROR_MESSAGE); + LOGGER.error("No configuration", e); } catch (SQLException e) { - throw new RuntimeException(e); + JOptionPane.showMessageDialog(null, "数据库出错", "警告", JOptionPane.ERROR_MESSAGE); + LOGGER.error("SQLException", e); } catch (DependenciesNotFoundException e) { - throw new RuntimeException(e); + LOGGER.error("DependenciesNotFoundException", e); } frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); 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 f695c62..b60ce6d 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/Main.java @@ -1,11 +1,14 @@ package com.cfive.classroom.teacher; import com.cfive.classroom.library.database.DatabaseHelper; +import com.cfive.classroom.library.database.bean.Course; import com.cfive.classroom.library.database.bean.Student; +import com.cfive.classroom.library.database.bean.Subject; 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; @@ -13,14 +16,16 @@ import org.apache.logging.log4j.Logger; import javax.swing.*; 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; public class Main { - private static final Main main=new Main(); - private static JFrame frame = new JFrame("课堂互动通"); + private static final Main main = new Main(); + private static JFrame frame = new JFrame("课堂互动通"); private JPanel rootPanel; private JButton bt_checkIn; private JButton bt_attendance; @@ -30,108 +35,137 @@ public class Main { private JButton changePasswordButton; private JTextField workNo_show; private JTextField subName_show; - private String workNo,subName; + private String workNo,courseID; private List studentList; private String[] student; - private static final Logger LOGGER = LogManager.getLogger(); private TeacherNet teacherNet; + private final Logger LOGGER = LogManager.getLogger(); public Main() { + + //从配置文件中读取端口号并传参到主界面 + Properties properties = new Properties(); + try { + properties.load(new FileReader("Teacher/src/main/connect.properties")); + } catch (IOException ex) { + LOGGER.error("IOException", ex); + } + LOGGER.debug(properties.getProperty("port")); + try { + if (!properties.getProperty("port").isEmpty()) { + teacherNet = new TeacherNet(Integer.valueOf(properties.getProperty("port"))); + } + } catch (IOException ex) { + LOGGER.error("IOException", ex); + } + //发送消息按钮的监听 bt_sendMessage.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - SendMessage sendMessage=new SendMessage(); + SendMessage sendMessage = new SendMessage(); sendMessage.start(teacherNet); } }); + //发布签到按钮的监听 bt_checkIn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - CheckIn checkIn=new CheckIn(); - checkIn.start(); + CheckIn checkIn = new CheckIn(); + checkIn.start(teacherNet); } }); - ////考勤情况按钮的监听 + + // 考勤情况按钮的监听 bt_attendance.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - Attendance attendance=new Attendance(); - attendance.start(); + Attendance attendance = new Attendance(); + attendance.start(teacherNet); } }); - ////随机选人按钮的监听 + + //随机选人按钮的监听 bt_select.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int person; - String count; + String count=""; Object[] dropList = {"提问1个同学", "提问2个同学", "提问3个同学", "提问4个同学", "提问5个同学", "提问6个同学", "提问7个同学"}; Object selectedValue = JOptionPane.showInputDialog(null, "选择提问同学个数", "随机选人,持续工作中...", JOptionPane.INFORMATION_MESSAGE, null, dropList, dropList[0]); //下拉列表的内容:选择提问的人数 - while (true) { - count = ""; - String substring = selectedValue.toString().substring(2, 3); //获取所选择的人数转化成int类型 - int i = Integer.parseInt(substring); - String[] arr = new String[i]; //new一个该数长度的String数组 + String substring = selectedValue.toString().substring(2, 3); //获取所选择的人数转化成int类型 + int i = Integer.parseInt(substring); + String[] arr = new String[i]; //new一个该数长度的String数组 - try { - studentList = DatabaseHelper.selectStudentsFromCourse(DatabaseHelper.selectFromSubject(subName).getSubID()); - if(studentList!=null){ - for (int j = 0; j < i; ) { - //随机得到的数值 - person = (int) (Math.random() * studentList.size()); - //将该数组转化为列表,并看该列表是否包含该随机数,没有则添加进去 - if (!Arrays.asList(arr).contains(String.valueOf(person))) { - arr[j] = String.valueOf(person); - j++; - } + try { + studentList = DatabaseHelper.selectStudentsFromCourse(Long.parseLong(courseID)); + if (!studentList.isEmpty()) { //判断是否获取到学生名单 + LOGGER.info("学生列表" + studentList); + for (int j = 0; j < i; ) { + //随机得到的数值 + person = (int) (Math.random() * studentList.size()); + LOGGER.info("随机值:" + person); + //将该数组转化为列表,并看该列表是否包含该随机数,没有则添加进去(确保随机数不重复) + if (!Arrays.asList(arr).contains(String.valueOf(person))) { + arr[j] = String.valueOf(person); + j++; } - Iterator iterator = studentList.iterator(); - while (iterator.hasNext()){ - student=new String[studentList.size()]; - for(int k=0;k< studentList.size();k++){ - student[k]=iterator.next().getStuName(); - } - - } - for (int s = 0; s < arr.length; s++) { //遍历该数组并把每一个随机数所对应的人放到count中 - person = Integer.parseInt(arr[s]); - count +=student[person]; - } - JOptionPane.showMessageDialog(null, "恭喜以下同学被选中:\n\t\n" + count); - //将选人结果群发出去 - teacherNet.sendAllMessage(new MessageObject(null,null,null,null,count,true)); } - break; - } catch (DependenciesNotFoundException ex) { - throw new RuntimeException(ex); - } catch (NoConfigException ex) { - throw new RuntimeException(ex); - } catch (SQLException ex) { - throw new RuntimeException(ex); + Iterator iterator = studentList.iterator(); + while (iterator.hasNext()) { + student = new String[studentList.size()]; + for (int k = 0; k < studentList.size(); k++) { + student[k] = iterator.next().getStuName(); + } + + } + for (int s = 0; s < arr.length; s++) { //遍历该数组并把每一个随机数所对应的人放到count中 + person = Integer.parseInt(arr[s]); + count += student[person]; + count+=" "; + } + JOptionPane.showMessageDialog(null, "恭喜以下同学被选中:\n\t\n" + count); + //将选人结果群发出去 + teacherNet.sendAllMessage(new MessageObject(null, null, null, null, count, MessageType.Select)); + }else { + JOptionPane.showMessageDialog(null, "学生名单未导入", "错误", JOptionPane.ERROR_MESSAGE); } + } catch (DependenciesNotFoundException ex) { + LOGGER.error("DependenciesNotFoundException", e); + } 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); } + } }); + //修改密码按钮的监听 changePasswordButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - ChangePassword changePassword=new ChangePassword(); + ChangePassword changePassword = new ChangePassword(); changePassword.start(main.workNo); } }); - //学生端举手监听 + //主界面线程监听 teacherNet.setOnReceiveListener(new ReceiveListener() { @Override public void onReceive(MessageObject messageObject) { - if (messageObject.isState()) { - JOptionPane.showMessageDialog(null,messageObject.getStuName()+" 举手了","温馨提示!",JOptionPane.INFORMATION_MESSAGE); - messageObject.setState(false); + //学生端举手监听 + 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); } } }); @@ -144,17 +178,17 @@ public class Main { frame.setVisible(false); } - public static void start(String workerNo, String subName, TeacherNet teacherNet1){ + public static void start(String workerNo,String courseID,String subName) { frame.setContentPane(main.rootPanel); - frame.setSize(600,400); + frame.setSize(600, 400); frame.setLocationRelativeTo(null); frame.setResizable(false); - main.workNo=workerNo; - main.subName=subName; - main.teacherNet = teacherNet1; + main.workNo = workerNo; + main.courseID = courseID; //开启主界面即读取端口号 main.workNo_show.setText(workerNo); main.subName_show.setText(subName); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } diff --git a/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.form b/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.form index a1c747d..c8285d2 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.form +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.form @@ -9,7 +9,7 @@ - + @@ -36,14 +36,14 @@ - + - + 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 5fa7423..9ea458a 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/SendMessage.java @@ -1,8 +1,15 @@ package com.cfive.classroom.teacher; 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 javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ComponentAdapter; +import java.text.SimpleDateFormat; public class SendMessage { private static final SendMessage sendMessage=new SendMessage(); @@ -10,10 +17,46 @@ public class SendMessage { private static JFrame frame = new JFrame("SendMessage"); private JPanel rootPanel; private JTextArea messageInput; - private JButton bt_send; + private JButton bt_sendMessage; private JTextArea messageShow; private TeacherNet teacherNet; + public SendMessage() { + //接收学生发过来的留言 + if(teacherNet!=null){ + teacherNet.setOnReceiveListener(new ReceiveListener() { + @Override + public void onReceive(MessageObject messageObject) { + if(messageObject.getMessageType()==MessageType.Chat){ + SimpleDateFormat sendTime = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); + messageShow.append("学生 "+messageObject.getStuName()+": "+sendTime.format(System.currentTimeMillis())+'\n'+messageObject.getMessage()); + System.out.println(); + } + + } + }); + } + + + //发送按钮的监听 + bt_sendMessage.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + String messageToAll = messageInput.getText(); + 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); + teacherNet.sendAllMessage(messageObject); + messageInput.setText(""); + }else { + JOptionPane.showMessageDialog(null,"无发送内容","错误!",JOptionPane.ERROR_MESSAGE); + } + + } + }); + } + public static void main(String[] args) { frame.setContentPane(sendMessage.rootPanel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 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 51fc7c7..f2f621c 100644 --- a/Teacher/src/main/java/com/cfive/classroom/teacher/SignIn.java +++ b/Teacher/src/main/java/com/cfive/classroom/teacher/SignIn.java @@ -40,28 +40,28 @@ public class SignIn { if(sigIn.workerNo.length()==0||sigIn.password.length()==0){ //判断用户名和密码是否为空 JOptionPane.showMessageDialog(null,"用户名和密码不能为空","提示!!",JOptionPane.ERROR_MESSAGE); }else{ + //根据输入的工号和密码利用加盐位进行判断 try { if(DatabaseHelper.checkPasswdInTeacher(Long.valueOf(sigIn.workerNo), sigIn.password)){ ClassList classList = new ClassList(); - String test=sigIn.workerNo_input.getText().toString(); - classList.start(test); + classList.start(sigIn.workerNo); //将工号传参到下一个界面 frame.setVisible(false); }else { JOptionPane.showMessageDialog(null,"密码错误,请重新输入","错误!!",JOptionPane.ERROR_MESSAGE); } } catch (NoConfigException ex) { - throw new RuntimeException(ex); + JOptionPane.showMessageDialog(null,"没有数据库配置文件","警告",JOptionPane.ERROR_MESSAGE); + LOGGER.error("No configuration", e); } catch (SQLException ex) { - throw new RuntimeException(ex); + JOptionPane.showMessageDialog(null,"数据库出错","警告",JOptionPane.ERROR_MESSAGE); + LOGGER.error("SQLException",e); } catch (DependenciesNotFoundException ex) { - throw new RuntimeException(ex); + LOGGER.error("DependenciesNotFoundException",e); } catch (NoSuchAlgorithmException ex) { - throw new RuntimeException(ex); + LOGGER.error("NoSuchAlgorithmException",e); } catch (InvalidKeySpecException ex) { - throw new RuntimeException(ex); + LOGGER.error("InvalidKeySpecException",e); } - - } }