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

📄 serverthread.java

📁 这是我最得意的一件小作品。它是一个基于C/S模式的网络考试系统
💻 JAVA
字号:
package testsystem;

import java.io.*;
import java.net.*;
import java.util.*;

public class ServerThread extends Thread
{
    private Socket connectToClient;
    private DataOutputStream outToClient;
    private DataInputStream  inFromClient;
    private ReadTest readTest;
    private String selectedAnswer="";

    public ServerThread(Socket socket)
    {
        connectToClient=socket;
        try {
            readTest=new ReadTest();
            inFromClient=new DataInputStream(connectToClient.getInputStream());
            outToClient=new DataOutputStream(connectToClient.getOutputStream());
        } catch (Exception ex) {

        }
        start();
    }

    private void socketClosing()
    {
        try
        {
            inFromClient.close();
            outToClient.close();
            connectToClient.close();
        }
        catch(Exception e)
        {
            System.out.println("关闭socket异常!");
        }
    }

    public void run()
    {
        String inStr="";
        String outStr="";
        while(true)
        {

           try {
               inStr=inFromClient.readUTF();
               System.out.println(inStr);
               if(inStr.startsWith("开始考试"))
               {
                   int  time=readTest.getTestTime();
                   System.out.println(time);
                   outToClient.writeUTF("考试时间@"+time);
                   outStr=readTest.getTestQuestion();
                   outToClient.writeUTF("下一题@"+outStr);
                   System.out.println(inStr);

               }
               if(inStr.startsWith("下一题"))
               {
                 outStr=readTest.getTestQuestion();
                 outToClient.writeUTF("下一题@"+outStr);

               }
               else if (inStr.startsWith("提交答案"))
               {
                   inStr=inStr.substring(inStr.indexOf("@")+1);
                   selectedAnswer+=inStr;
               }
               else if (inStr.startsWith("成绩"))
               {
                   int  score=getTestScore();
                   if (score>=60)
                       outStr="成绩:"+ score+"\n祝贺你通过考试!";
                   else outStr="成绩:"+score+"\n你没有通过考试!";
                   outToClient.writeUTF(outStr);
                   saveTestScore("testscore.txt","成绩\t"+score);
                   System.out.println(outStr);

               }

           }catch (IOException ex)
           {
               socketClosing();
               System.out.println("与客户的连接中断");
               break;
           }
           catch(NullPointerException e)
           {

           }



        }
    }

    private int getTestScore()
    {
        String correctAnswer=readTest.getCorrectAnswer();
        int n=0,testScore=0;
        int length1=correctAnswer.length();
        int length2=selectedAnswer.length();
        int min=Math.min(length1,length2);
        for(int i=0;i<min;i++)
        {
            if(selectedAnswer.charAt(i)==correctAnswer.charAt(i))
                n++;
        }
        testScore=(int)(100.0*n/length1);
        return testScore;

    }

    private void saveTestScore(String file, String score)
    {
        try {
            BufferedWriter  scoreFile=new BufferedWriter(new FileWriter(file,true));
            String name=connectToClient.getInetAddress().toString();
            scoreFile.write(score);
            scoreFile.newLine();
            scoreFile.flush();
            scoreFile.close();

        } catch (Exception ex) {
            System.out.println("写成绩到文件到文件发生异常!");
        }
    }

}

⌨️ 快捷键说明

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