读多选题

package newexam;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class AccessMulti {
	static String fileName = "d:/cf/015山东轻工业学院_XP_13考场.crp";
	static int NUM = 10;
	static File outDir = new File("d:/cf");
	static File absoluteDir = new File(outDir.getAbsolutePath());
	static Connection con = null;

	// 类静态方法,完成对数据库连接等初始化工作
	static {
		if (!absoluteDir.exists()) {
			System.out.println("正在创建文件夹");
			absoluteDir.mkdirs();
		}
	}

	/**
	 * 读取数据库中多选题,共10套,并给出答案。多选题表中第8个字段为答案,数字代表前几个为正确选项
	 */
	public static void getMulti() throws Exception {
		DAOAccess dao = new DAOAccess(fileName);
		con = dao.getConnection();
		Statement stat = con.createStatement();
		BufferedWriter out = new BufferedWriter(new FileWriter(new File(
				absoluteDir, "Multi.txt")));
		out.write("多选题答案为数字,表示前几项是正确的,如3,表示前三项是正确的。");
		out.newLine();
		int m;
		for (m = 1; m <= NUM; m++) {
			String sql = "select * from MultiSelect" + m
					+ " Group by TestID Order By TestID ";
			ResultSet res = stat.executeQuery(sql);
			out.newLine();
			out.write("*****************第" + m + "套题******************");
			out.newLine();
			int i = 1;
			while (res.next()) {
				int count = res.getInt(8);
				out.write("" + i + "." + res.getString(2));
				out.newLine();
				out.write("" + "A) " + res.getString(3));
				out.newLine();
				out.write("" + "B) " + res.getString(4));
				out.newLine();
				out.write("" + "C) " + res.getString(5));
				out.newLine();
				out.write("" + "D) " + res.getString(6));
				out.newLine();
				out.write("" + "E) " + res.getString(7));
				out.newLine();
				out.write("答案:" + count);
				out.newLine();
				out.newLine();
				i++;
			}
		}
		stat.close();
		out.close();
		dao.close();
		System.out.println("多选题创建成功,请检查!");
	}

	public static void main(String args[]) throws Exception {
		getMulti();
	}
}


好的!以下是一道基于select的多选题示例: 题目:以下哪些国家是欧洲国家? A. 美国 B. 法国 C. 日本 D. 印度 答案:B 参考代码: ``` #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> #define MAX_FD 2 int main() { fd_set rfds; struct timeval tv; int retval; char answer; while (1) { // 清空文件描述符集合 FD_ZERO(&rfds); // 添加标准输入到文件描述符集合中 FD_SET(STDIN_FILENO, &rfds); // 设置等待超时时间为5秒 tv.tv_sec = 5; tv.tv_usec = 0; // 等待标准输入的可事件 retval = select(MAX_FD, &rfds, NULL, NULL, &tv); if (retval == -1) { perror("select()"); exit(EXIT_FAILURE); } else if (retval) { // 标准输入可取用户输入的答案 scanf("%c", &answer); // 判断用户答案是否正确 if (answer == 'B') { printf("恭喜你,答案正确!\n"); break; } else { printf("很遗憾,答案错误!请继续尝试。\n"); } } else { // 超时未到输入,提示用户继续等待或者退出程序 printf("超时未到输入,请继续等待或者输入q退出程序。\n"); scanf("%c", &answer); if (answer == 'q') { printf("程序已退出。\n"); exit(EXIT_SUCCESS); } } } return 0; } ``` 该程序使用select监听标准输入(即键盘输入),等待用户输入答案。如果用户在5秒内输入了答案,则判断答案是否正确,如果正确则输出恭喜信息并退出程序,否则提示用户继续尝试。如果用户在5秒内未输入,则提示用户继续等待或者输入q退出程序。如果用户输入了q,则程序退出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值