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

📄 server_readscore.java

📁 学生网上考试系统(JAVA) 1:管理员登录
💻 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 + -