?? server_readscore.java
字號:
/*
創建日期 2006-4-18
* 作者:褚廷軍
* 項目名稱:學生考試系統;
* 項目要求:畢業設計;
* 模塊名稱:成績評判模塊
* 模塊功能:接收用戶答案與數據庫中正確答案作比較
* 得出分數。返回到用戶端,并將分數存入數據庫
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package tserver;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
// import java.sql.Connection;
// import java.sql.DriverManager;
// import java.sql.PreparedStatement;
// import java.sql.ResultSet;
// import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.StringTokenizer;
import tools.ConnectBean;
// 定義一個接收用戶答案的類,判斷對錯,將分數返回到用戶端,并將成績存入數據庫
public class Server_readScore extends Thread {
Socket socket;
DataOutputStream out = null;
DataInputStream in = null;
String[] userAnswer = new String[50], crreAnswer = new String[50];
/**
* @param socket
*/
public Server_readScore(Socket socket) {
// ----------------------創建網絡連接----------------------------------//
this.socket = socket;
try {
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
// ------------------------- 接收用戶提交的答案---------------------------//
String str1 = "";// 接收用戶名
String str2 = "";// 接收考試科目
String str3 = "";// 接收用戶答案
String str4 = "";// 接收題目個數
int count = 0;
int uno = 0;
String dbk = ""; // 正確答案
String readkey = ""; // 用戶答案
try {
readkey = in.readUTF();
System.out.println(readkey);
} catch (IOException e1) {
e1.printStackTrace();
}
StringTokenizer stc = new StringTokenizer(readkey, ",");
if (stc.hasMoreTokens()) {
// 客戶傳來答案的第一個字符為用戶名,第二個字符為考試科目
str1 = stc.nextToken().trim();
System.out.println("用戶為:" + str1);
uno = Integer.parseInt(str1);
}
if (stc.hasMoreTokens()) {
//第二個字符為考試科目
str2 = stc.nextToken().trim();
System.out.println("試題類型為:" + str2);
}
if (stc.hasMoreTokens()) {
str3 = null;
// 第三個為用戶答案
str3 = stc.nextToken().trim();
System.out.println("用戶答案為:" + str3);
int a = 0;
StringTokenizer rk = new StringTokenizer(str3, "@");
while (true) {
if (rk.hasMoreTokens()) {
userAnswer[a] = rk.nextToken();
System.out.println(userAnswer[a]);
++a;
} else
break;
}
if (stc.hasMoreTokens()) {
str4 = stc.nextToken().trim();
System.out.println("題目個數為:" + Integer.parseInt(str4));
}
}
// ------------------------------在數據庫獲取正確答案-------------------------//
try {
ConnectBean cb = new ConnectBean();
if (!cb.openConnection()) {
System.out.println("連接數據失敗");
System.exit(1);
return;
}
String sql = "select tkey from exam where eid='" + str2 + "'";
cb.createPreparedStatement(sql, false);
ResultSet rs = cb.executeQuery();
while (rs.next()) {
dbk += rs.getString("tkey") + "*";
}
cb.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("正確答案為:" + dbk);
int k = 0;
StringTokenizer rk = new StringTokenizer(dbk, "*");
while (true) {
if (rk.hasMoreTokens()) {
crreAnswer[k] = rk.nextToken();
System.out.println(crreAnswer[k]);
++k;
} else
break;
}
// ------------------------判斷分數---------------------------------//
for (int i = 0; i <Integer.parseInt(str4); i++) {
if (userAnswer[i].equals(crreAnswer[i])) {
count += 10;
}
}
System.out.println("用戶:" + str1 + ",你的得分為:" + count);
// 將分數返回到客戶端
try {
out.writeUTF(Integer.toString(count));
System.out.println("將分數返回到客戶端");
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
// ------------------------將分數存到數據庫------------------------------//
try {
ConnectBean cb = new ConnectBean();
if (!cb.openConnection()) {
System.out.println("連接數據失敗");
System.exit(1);
return;
}
String sql1 = "update stuinfo set escore = ? where sno= ?";
String sql2 = "update stuinfo set mscore = ? where sno= ?";
String subject = "";
if (str2.equals("e")) {
subject = sql1;
} else {
subject = sql2;
}
PreparedStatement ps = cb.createPreparedStatement(subject);
ps.setInt(1, count);
ps.setInt(2, uno);
ps.executeUpdate();
System.out.println("更新成功");
cb.commit();
cb.close();
} catch (SQLException e) {
// TODO 自動生成 catch 塊
System.out.println("寫入數據發生錯誤!!!/n" + e);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -