正文

JAVA C/S 考试模拟系统源代码(服务器端)2006-08-24 22:15:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/17869.html

分享到:

ServerThread.java package ServerPart;import java.io.*;import java.net.*;import java.util.*; public class ServerThread {  private Socket connectToClient; private DataOutputStream outToClient; private DataInputStream inFromClient; private ReadTestFile readTestFile; private String selectedAnswer = "";  public ServerThread(Socket socket){  connectToClient = socket;  try{   readTestFile = new ReadTestFile();   inFromClient = new DataInputStream(connectToClient.getInputStream());   outToClient = new DataOutputStream(connectToClient.getOutputStream());  }  catch(IOException e){     }  //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{    //sleep(10);//线程休眠10毫秒;    inStr = inFromClient.readUTF();    if(inStr.startsWith("开始考试")){     int time = readTestFile.getTestTime();     outToClient.writeUTF("考试时间@"+time);     System.out.println(inStr);    }    if(inStr.startsWith("下一题")){     outStr = readTestFile.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 e){    socketClosing();    System.out.println("与客户的连接中断");    break;   }  } }   private int getTestScore(){  String correctAnswer = readTestFile.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(name+"\t");   scoreFile.write(score);   scoreFile.newLine();   scoreFile.flush();   scoreFile.close();  }  catch(IOException e){   System.out.println("写成绩到文件发生异常!");  }   } public static void main(String[] args) {  // TODO Auto-generated method stub  } }   ReadTestFile.java package ServerPart;import java.io.*;public class ReadTestFile {  private BufferedReader bufReader; public int testTime; private String correctAnswer;  public ReadTestFile()throws IOException{  bufReader = new BufferedReader(new FileReader("test.txt"));  String s = bufReader.readLine();  int i1 = s.indexOf('@');  int i2 = s.indexOf("分钟");  s = s.substring(i1+1,i2);  testTime = Integer.parseInt(s)*60*1000;  s = bufReader.readLine().trim();  correctAnswer = s.substring(s.indexOf('@'+1)); } public int getTestTime(){  return testTime; } public String getCorrectAnswer(){  return correctAnswer; }  public String getTestQuestion(){  String testQuestion = "";  try{   StringBuffer temp = new StringBuffer();   String s = "";   if(bufReader!=null){    while((s=bufReader.readLine())!=null){     if(s.startsWith("*"))      break;     temp.append("\n"+s);     if(s.startsWith("试题结束"));      bufReader.close();    }   }   testQuestion = temp.toString();  }  catch(Exception e){   testQuestion = "试题结束";  }  return testQuestion; } public static void main(String args[]){   }}   MultiServer.java package ServerPart;import java.io.*;import java.net.*; public class MultiServer {  public static void main(String[] args)throws IOException {  System.out.println("建立并等待连接……");  ServerSocket serverSocket = new ServerSocket(5500);  Socket connectToClient = null;  while(true){   connectToClient = serverSocket.accept();   new ServerThread(connectToClient);  }  } }   test.txt 考试用时@1分钟标准答案@DB1.下面关于类的说法不正确的是( )。A)类是Java语言中的一种复合数据类型。B)类中包含数据变量和方法。C)类是对所有具有一定共性的对象的抽象。D)Java语言的类支持多继承。************试题结束

阅读(12482) | 评论(4)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册