java随机点名系统 用swing 多线程 点名册包括三十个学生 由学号和姓名组成 窗口标题设置为123456
时间: 2023-02-12 10:53:19 浏览: 272
这是一个关于使用 Java 的 Swing 用多线程构建随机点名系统的问题。点名册包括 30 个学生,每个学生由学号和姓名组成。你希望将窗口的标题设置为 123456。
要创建这个随机点名系统,你需要使用 Swing 创建图形用户界面 (GUI),包括窗口、按钮、文本框和其他控件。你还需要使用多线程来并行地执行点名操作,以使点名过程更加高效。
为了实现这个点名系统,你需要首先创建一个存储学生信息的数据结构,可以使用数组或者 ArrayList 等。然后,你需要创建一个多线程的类来进行点名,这个类需要实现 Runnable 接口并重写 run() 方法。在 run() 方法中,你需要使用随机数生成器来随机选择一个学生进行点名。你还可以使用 Swing 的 JLabel 组件将学生的学号和姓名显示在界面上。
最后,你可以使用 setTitle() 方法将窗口的标题设置为 123456。
以下是一个简单的示例代码:
```
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class RandomRollCall extends JFrame implements Runnable {
private static final long serialVersionUID = 1L;
// 存储学生信息的数
相关问题
java随机点名,显示学生姓名、学号、年龄的代码
以下是一个简单的Java代码示例,用于随机点名并显示学生的姓名、学号和年龄:
```
import java.util.ArrayList;
import java.util.Random;
public class Student {
private String name;
private int id;
private int age;
public Student(String name, int id, int age) {
this.name = name;
this.id = id;
this.age = age;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
public int getAge() {
return age;
}
}
public class RandomNamePicker {
private ArrayList<Student> students;
public RandomNamePicker(ArrayList<Student> students) {
this.students = students;
}
public Student pickRandomName() {
Random random = new Random();
return students.get(random.nextInt(students.size()));
}
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("Alice", 1001, 20));
students.add(new Student("Bob", 1002, 21));
students.add(new Student("Charlie", 1003, 19));
RandomNamePicker picker = new RandomNamePicker(students);
Student randomStudent = picker.pickRandomName();
System.out.println("Name: " + randomStudent.getName());
System.out.println("ID: " + randomStudent.getId());
System.out.println("Age: " + randomStudent.getAge());
}
}
```
这个例子中,我们定义了一个Student类,它有三个属性:name,id和age。然后,在RandomNamePicker类中,我们创建了一个ArrayList来存储学生信息,并定义了一个方法pickRandomName(),该方法使用Random类从学生列表中随机选择一个学生。最后,在main()方法中,我们创建了一个RandomNamePicker对象,并使用它从学生列表中随机选择一个学生。然后,我们打印出选中学生的姓名、学号和年龄。
写一个java的swing点名程序,教师端:配置服务端端口号,发送给学生,开始进行电子点名,等待学生端发送个人信息,将收到的学生信息显示在界面中,点名结束后关闭服务端服务。同时还有随机点名功能,输入点名数量,在数据库中随机抽取相应数量的学生,对应学生端显示需要显示点名界面。学生信息显示学号,姓名,ip,每行表示一个学生。实现将本次点名数据保存至数据库。
好的,下面是一个简单的Java Swing点名程序的示例代码:
教师端:
```java
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class TeacherFrame extends JFrame {
private static final long serialVersionUID = 1L;
private JTextArea messageArea;
private JButton startButton;
private JButton randomButton;
private ServerSocket serverSocket;
private List<Student> students;
public TeacherFrame() {
setTitle("教师端");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 400);
messageArea = new JTextArea();
add(new JScrollPane(messageArea), BorderLayout.CENTER);
JPanel buttonPanel = new JPanel();
startButton = new JButton("开始点名");
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
startAttendance();
}
});
buttonPanel.add(startButton);
randomButton = new JButton("随机点名");
randomButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
randomAttendance();
}
});
buttonPanel.add(randomButton);
add(buttonPanel, BorderLayout.SOUTH);
}
private void startAttendance() {
try {
messageArea.append("等待学生加入...\n");
serverSocket = new ServerSocket(8888);
new Thread() {
public void run() {
students = new ArrayList<Student>();
try {
while (true) {
Socket socket = serverSocket.accept();
Student student = new Student(socket);
students.add(student);
student.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
startButton.setEnabled(false);
randomButton.setEnabled(false);
} catch (IOException e) {
e.printStackTrace();
}
}
private void randomAttendance() {
int count = Integer.parseInt(messageArea.getText().trim());
List<Student> selectedStudents = new ArrayList<Student>();
Random random = new Random();
for (int i = 0; i < count; i++) {
int index = random.nextInt(students.size());
selectedStudents.add(students.get(index));
}
for (Student student : selectedStudents) {
student.showAttendancePage();
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
TeacherFrame frame = new TeacherFrame();
frame.setVisible(true);
}
});
}
class Student extends Thread {
private Socket socket;
private String name;
private String ip;
public Student(Socket socket) {
this.socket = socket;
this.ip = socket.getInetAddress().getHostAddress();
}
public void run() {
try {
AttendancePage attendancePage = new AttendancePage(this);
attendancePage.setVisible(true);
while (true) {
byte[] buffer = new byte[1024];
int len = socket.getInputStream().read(buffer);
String message = new String(buffer, 0, len);
if (message.startsWith("name:")) {
name = message.substring(5);
messageArea.append(name + "加入点名\n");
} else if (message.equals("attendance")) {
attendancePage.setAttendance(true);
messageArea.append(name + "已到\n");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void showAttendancePage() {
AttendancePage attendancePage = new AttendancePage(this);
attendancePage.setVisible(true);
}
public String getIp() {
return ip;
}
public String getName() {
return name;
}
}
}
```
学生端:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class StudentFrame extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField nameField;
private JButton joinButton;
private JButton attendanceButton;
private Socket socket;
public StudentFrame() {
setTitle("学生端");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
nameField = new JTextField();
nameField.setPreferredSize(new Dimension(200, 30));
add(nameField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
joinButton = new JButton("加入点名");
joinButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
joinAttendance();
}
});
buttonPanel.add(joinButton);
attendanceButton = new JButton("已到");
attendanceButton.setEnabled(false);
attendanceButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sendAttendance();
}
});
buttonPanel.add(attendanceButton);
add(buttonPanel, BorderLayout.SOUTH);
}
private void joinAttendance() {
try {
socket = new Socket("localhost", 8888);
socket.getOutputStream().write(("name:" + nameField.getText()).getBytes());
socket.getOutputStream().flush();
joinButton.setEnabled(false);
attendanceButton.setEnabled(true);
} catch (IOException e) {
e.printStackTrace();
}
}
private void sendAttendance() {
try {
socket.getOutputStream().write("attendance".getBytes());
socket.getOutputStream().flush();
attendanceButton.setEnabled(false);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
StudentFrame frame = new StudentFrame();
frame.setVisible(true);
}
});
}
}
```
注意:以上代码仅为示例,可能存在一些不足之处,请根据具体需求进行修改和完善。另外,本示例未包含将点名数据保存至数据库的功能,需要自行添加。
阅读全文