⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 openserver.java

📁 自己用java编写的基于B/S的在线考试系统
💻 JAVA
字号:

import java.awt.HeadlessException;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
public class OpenServer extends JFrame implements ActionListener {

	ServerSocket server = null;

	boolean pauseServer = true;

	private JScrollPane jScrollPane1;

	private JSeparator jSeparator2;

	private JLabel jLabel2;

	private JLabel jLabel1;

	private JButton jButton2;

	private JTextArea jTextArea2;

	private JTextArea jTextArea1;

	private JScrollPane jScrollPane2;

	private JButton jButton1;

	private JSeparator jSeparator1;

	private StringBuffer studentMessage = new StringBuffer();
	private Server_Connection server_connection = null;
	public OpenServer() throws HeadlessException {
		this.setTitle("服务器");
		this.setLayout(null);
		this.setResizable(false);

		{
			jButton1 = new JButton();
			getContentPane().add(jButton1);
			jButton1.setText("\u5f00\u542f\u670d\u52a1");
			jButton1.setBounds(26, 201, 86, 27);
			jButton1.addActionListener(this);
		}
		{
			jButton2 = new JButton();
			getContentPane().add(jButton2);
			jButton2.setText("\u9690\u85cf\u7a97\u4f53");
			jButton2.setBounds(182, 201, 97, 26);
			jButton2.addActionListener(this);
		}
		{
			jLabel1 = new JLabel();
			getContentPane().add(jLabel1);
			jLabel1.setText("\u670d\u52a1\u7aef\u4fe1\u606f");
			jLabel1.setBounds(12, 3, 86, 15);
		}
		{
			jLabel2 = new JLabel();
			getContentPane().add(jLabel2);
			jLabel2.setText("\u5ba2\u6237\u7aef\u4fe1\u606f");
			jLabel2.setBounds(12, 112, 86, 15);
		}
		{
			jSeparator2 = new JSeparator();
			getContentPane().add(jSeparator2);
			jSeparator2.setBounds(-1, 195, 306, 10);
		}
		{
			jScrollPane1 = new JScrollPane();
			getContentPane().add(jScrollPane1);
			jScrollPane1.setBounds(12, 24, 280, 76);
			{
				jTextArea1 = new JTextArea();
				//jTextArea1.setEditable(false);
				jTextArea1.setEnabled(false);
				jScrollPane1.setViewportView(jTextArea1);
				jTextArea1.setBounds(12, 24, 280, 76);
			}
		}
		{
			jScrollPane2 = new JScrollPane();
			getContentPane().add(jScrollPane2);
			jScrollPane2.setBounds(5, 133, 287, 56);
			{
				jTextArea2 = new JTextArea();
				jTextArea2.setEnabled(false);
				jScrollPane2.setViewportView(jTextArea2);
				jTextArea2.setBounds(5, 133, 287, 56);
			}
		}
		{
			jSeparator1 = new JSeparator();
			getContentPane().add(jSeparator1);
			jSeparator1.setBounds(2, 107, 302, 10);
		}
		this.setSize(312, 263);
		this.setLocation(250, 190);
		this.setVisible(true);
		validate();
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				Window w = e.getWindow();
				w.setVisible(false);
				w.dispose();
			}
		});
	}

	public void Connection() {

		try {
			server = new ServerSocket(1988);
		} catch (IOException e1) {
			this.jTextArea1.setText("正在监听....");
		}
		server_connection = new Server_Connection(server);
		server_connection.start();
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == jButton1) {
			if(jButton1.getText().equals("开启服务")){
				Connection();
				this.jButton1.setText("暂停服务");
			}
			else{
				if(server!=null){
					try {
						server_connection.stop();
						server.close();
						server = null;
						jTextArea1.setText("服务器已关闭...");
					} catch (IOException e1) {
						e1.printStackTrace();
					}
				}
				this.jButton1.setText("开启服务");
			}
		}
		if(e.getSource()==jButton2){
			this.hide();
		}
	}

	class Server_Connection extends Thread {
		ServerSocket ss = null;

		Socket s = null;

		boolean flag = true;

		public Server_Connection(ServerSocket ss) {
			this.ss = ss;
		}

		public void run() {
			while (flag) {
				if (ss != null) {
					try {
						jTextArea1.setText("等待连接");
						s = ss.accept();
						InetAddress address = s.getInetAddress();
						studentMessage.append("客户端的IP:" + address + "\n");
						jTextArea2.setText(studentMessage.toString());
						if (s != null) {
							new Server_thread(s).start();
						} else {
							continue;
						}
					} catch (IOException e) {
						e.printStackTrace();
						flag = false;
						break;
					}
				} else {
					jTextArea1.setText("服务器未开启");
				}
			}
		}
	}
}

class Server_thread extends Thread {
	int i = 0;

	Socket socket = null;

	File file = null;

	DataOutputStream out = null;

	DataInputStream in = null;

	ObjectOutputStream oos = null;

	ObjectInputStream ois = null;

	ReadQuestion readquestion = null;

	Question question = null;

	Server_thread(Socket t) {
		socket = t;
		try {
			in = new DataInputStream(socket.getInputStream());
			out = new DataOutputStream(socket.getOutputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			readquestion = new ReadQuestion();
			question = readquestion.getQuestion();
		} catch (Exception ee) {
			System.out.println("读取试题出错");
			System.exit(0);
		}
	}
	public int getSocre(String StandAnswer, String studentAnswer) {
		int score = 0;
		if (studentAnswer != null) {
			if(StandAnswer.length()<studentAnswer.length()){
				char[] sa = StandAnswer.toCharArray();
				char[] studentAs = studentAnswer.toCharArray();
				for (int i = 0; i < sa.length; i++) {
					if (sa[i]==studentAs[i]) {
						score++;
					}
				}
			}else{
				char[] sa = StandAnswer.toCharArray();
				char[] studentAs = studentAnswer.toCharArray();
				for (int i = 0; i < studentAs.length; i++) {
					if (sa[i]==studentAs[i]) {
						score++;
					}
				}
			}
		}
		return score;
	}

	public void run() {
		while (true) {
			String s = null;
			try {
				s = in.readUTF();
				if (s.startsWith("读取试题")) {
					String questions = question.getQuestion();
					out.writeUTF(questions);
				} else if (s.startsWith("提交答案:")) {
					StudentManager stm = new StudentManager();
					Student student = new Student();
					String idStr = s.substring(s.indexOf(":")+1,s.indexOf("#"));
					String answer = s.substring(s.indexOf("#") + 1);
					int score = getSocre(question.getAnswer(), answer);
					int id = Integer.parseInt(idStr);
					student.setId(id);
					student.setScore(score);
					stm.updateStudentScore(student);
					out.writeUTF(""+score);
				} else if (s.startsWith("查看得分:")) {
//					String answer = s.substring(s.indexOf(":") + 1);
//					System.out.println("daan:"+answer);
//					int score = getSocre(question.getAnswer(), answer);
//					System.out.println("score:"+score);
//					out.writeUTF(""+score);
				}else if(s.startsWith("登陆")){
					String str = s.substring(s.indexOf(":")+1);
					String idStr = str.substring(0,str.indexOf(":"));
					String name = str.substring(str.indexOf(":")+1);
					int id = Integer.parseInt(idStr);
					Student student = new Student();
					student.setId(id);
					student.setName(name);
					StudentManager stm = new StudentManager();
					if(stm.isLogin(student)){
						out.writeUTF("登陆成功");
					}else{
						out.writeUTF("登陆失败");
					}
				}
			} catch (IOException ee) {
				try {
					socket.close();
				} catch (Exception eee) {
				}
				System.out.println("客户离开了");
				break;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -