package newexam;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
/**
* @author 该类将把考试题库的所有题目汇总,结果放到第一套题中
*/
public class CollectAll {
static String fileName = "d:/cf/015山东轻工业学院_XP_13考场.crp";
static int NUM = 10;
static Connection con = null;
// 类静态方法,完成对数据库连接等初始化工作
static {
if (fileName.endsWith(".crp")) {
File srcFile = new File(fileName);
String newfile = fileName + ".mdb";
JOptionPane.showMessageDialog(null, fileName
+ "不是Access文件,系统将自动解密,解密后的文件名为:" + newfile);
File desFile = new File(newfile);
try {
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(srcFile));
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(desFile));
int ch;
while ((ch = in.read()) != -1) {
ch ^= 9;
out.write(ch);
}
in.close();
out.close();
fileName = newfile;
} catch (FileNotFoundException e) {
System.out.println("找不到文件!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("文件操作失败!");
e.printStackTrace();
}
}
try {
Class.forName("com.hxtt.sql.access.AccessDriver");
String url = "jdbc:access:///" + fileName;
con = DriverManager.getConnection(url);
} catch (ClassNotFoundException e) {
System.out.println("ACCESS_JDBC加载失败");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("数据库连接或创建语句失败");
e.printStackTrace();
}
}
/**
* 以第一套题为模板,将其他的题汇总进来
*/
public static void allInOne() throws Exception {
int opt = JOptionPane.showConfirmDialog(null,
"数据将汇总在第一套题中,汇总前请先备份该数据库,开始汇总吗?", "数据汇总",
JOptionPane.YES_NO_OPTION);
if (opt == JOptionPane.NO_OPTION)
return;
Statement stat = con.createStatement();
String sql;
// 从第二套开始,所有内容汇总到第一套题中
for (int i = 2; i <= NUM; i++) {
System.out.println("正在汇总 Judge" + i + "到Judge1");
sql = "INSERT INTO Judge1 SELECT * FROM Judge" + i;
stat.execute(sql);
System.out.println("正在汇总MultiSelect" + i + "到MultiSelect1");
sql = "INSERT INTO MultiSelect1 SELECT * FROM MultiSelect" + i;
stat.execute(sql);
System.out.println("正在汇总SingleSelect" + i + "到SingleSelect1");
sql = "INSERT INTO SingleSelect1 SELECT * FROM SingleSelect" + i;
stat.execute(sql);
System.out.println("正在汇总WindowsOperation" + i
+ "到WindowsOperation1");
sql = "INSERT INTO WindowsOperation1 SELECT * FROM WindowsOperation"
+ i;
stat.execute(sql);
System.out.println("正在汇总ExcelFile" + i + "到ExcelFile1");
sql = "INSERT INTO ExcelFile1 SELECT * FROM ExcelFile" + i;
stat.execute(sql);
System.out.println("正在汇总ExcelOperation" + i + "到ExcelOperation1");
sql = "INSERT INTO ExcelOperation1 SELECT * FROM ExcelOperation"
+ i;
stat.execute(sql);
System.out.println("正在汇总WordFile" + i + "到WordFile1");
sql = "INSERT INTO WordFile1 SELECT * FROM WordFile" + i;
stat.execute(sql);
System.out.println("正在汇总WordOperation" + i + "到WordOperation1");
sql = "INSERT INTO WordOperation1 SELECT * FROM WordOperation" + i;
stat.execute(sql);
System.out.println("正在汇总PowerPointFile" + i + "到PowerPointFile1");
sql = "INSERT INTO PowerPointFile1 SELECT * FROM PowerPointFile"
+ i;
stat.execute(sql);
System.out.println("正在汇总PowerPointOperation" + i
+ "到PowerPointOperation1");
sql = "INSERT INTO PowerPointOperation1 SELECT * FROM PowerPointOperation"
+ i;
stat.execute(sql);
System.out.println("正在汇总FrontPageFile" + i + "到FrontPageFile1");
sql = "INSERT INTO FrontPageFile1 SELECT * FROM FrontPageFile" + i;
stat.execute(sql);
System.out.println("正在汇总FrontPageOperation" + i
+ "到FrontPageOperation1");
sql = "INSERT INTO FrontPageOperation1 SELECT * FROM FrontPageOperation"
+ i;
stat.execute(sql);
}
System.out.println("汇总成功,请检查表!");
}
/**
* 删除汇总数据库中所有表,只保留汇总表,汇总数据在第一套题中
*/
public static void deleteAll() throws Exception {
int opt = JOptionPane.showConfirmDialog(null, "删除表之前,请先确认已经汇总.确认删除吗?",
"删除数据表", JOptionPane.YES_NO_OPTION);
if (opt == JOptionPane.NO_OPTION)
return;
Statement stat = con.createStatement();
String sql = "";
// 删除所有表
int m;
for (m = 2; m <= NUM; m++) {
sql = "drop table PowerPointFile" + m;
stat.execute(sql);
sql = "drop table powerpointOperation" + m;
stat.execute(sql);
sql = "drop table WordFile" + m;
stat.execute(sql);
sql = "drop table WordOperation" + m;
stat.execute(sql);
sql = "drop table ExcelFile" + m;
stat.execute(sql);
sql = "drop table ExcelOperation" + m;
stat.execute(sql);
sql = "drop table FrontPageFile" + m;
stat.execute(sql);
sql = "drop table FrontPageOperation" + m;
stat.execute(sql);
sql = "drop table WindowsOperation" + m;
stat.execute(sql);
sql = "drop table Blanks" + m;
stat.execute(sql);
sql = "drop table SingleSelect" + m;
stat.execute(sql);
sql = "drop table MultiSelect" + m;
stat.execute(sql);
sql = "drop table Judge" + m;
stat.execute(sql);
}
stat.close();
System.out.println("删除成功,请检查!");
}
public static void main(String args[]) throws Exception {
allInOne();
deleteAll();
}
}