?? serverthread.java~59~
字號:
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);
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 + -