引自免费微信小程序:皆我百晓生
针对您的需求,我将为您设计一个基于Java Socket编程的签到系统,包括教师端服务程序和学生端客户端程序。同时,我会提供相应的界面设计方案,但实际图形界面绘制需您结合所选UI库(如Java Swing、JavaFX等)自行实现。
教师端服务程序设计
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
public class TeacherServer {
private static final int PORT = 50000; // 服务器监听端口
private Map<String, String> attendanceRecords; // 存储签到记录的Map
public TeacherServer() {
attendanceRecords = new HashMap<>();
}
public void startServer() {
try (ServerSocket serverSocket = new ServerSocket(PORT)) {
System.out.println("教师端签到服务已启动,正在监听端口:" + PORT);
while (true) {
Socket socket = serverSocket.accept();
handleClientConnection(socket);
}
} catch (IOException e) {
System.err.println("服务器异常:" + e.getMessage());
}
}
private void handleClientConnection(Socket socket) {
new Thread(() -> {
try (BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true)) {
String studentID = in.readLine(); // 接收学生ID
System.out.println(studentID + "尝试签到");
// 创新设计:通过特定字符串回应,实现签到成功后的特殊效果
if (attendanceRecords.putIfAbsent(studentID, "已签到") == null) {
out.println("签到成功! 特别效果:获得神秘奖励");
System.out.println(studentID + "签到成功");
} else {
out.println("签到失败:已签到过");
System.out.println(studentID + "尝试重复签到");
}
} catch (IOException e) {
System.err.println("处理客户端连接时发生异常:" + e.getMessage());
}
}).start();
}
// 可以添加方法用于保存签到记录到文件或数据库
}
学生端客户端程序设计
import java.io.*;
import java.net.Socket;
public class StudentClient {
private static final String SERVER_HOST = "10.50.195.198"; // 教师端服务器IP
private static final int SERVER_PORT = 50000; // 教师端服务器端口
public static void main(String[] args) {
String studentID = "2000"; // 示例学生ID,实际可从输入或其他方式获取
try (Socket socket = new Socket(SERVER_HOST, SERVER_PORT);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
out.println(studentID); // 发送学生ID进行签到
String response = in.readLine(); // 接收服务器响应
System.out.println("签到结果:" + response);
} catch (IOException e) {
System.err.println("客户端连接或通信异常:" + e.getMessage());
}
}
}
界面设计方案
图1 - 聊天室服务器界面
- 标题栏:显示“聊天室服务器 - 董相志设计”
- 中央区域:
- 输入框:用于输入服务器启动参数(主机名、端口)
- 启动按钮:点击后启动服务器,并在下方输出框显示启动信息
- 输出区域:实时显示服务器启动状态、客户端连接及签到情况等信息
图2 - 客户端界面
- 左侧列表:
- 功能区:
- 语音聊天、视频聊天、文件传输、远程桌面按钮:仅作示意,具体功能需进一步开发
- 中央区域:
- 会话消息窗口:显示签到成功/失败的消息及其他通信内容
- 底部输入区域:
- 发言窗口:用于输入签到请求或其他通信内容
- 发送按钮:点击后发送发言窗口中的内容至服务器
以上代码及界面设计方案为示例性质,实际开发时请根据具体需求进行调整和完善。