java 随机选题系统01

您所在的位置:网站首页 java随机抽题 java 随机选题系统01

java 随机选题系统01

2024-07-14 21:45| 来源: 网络整理| 查看: 265

CompreT.java为原代码 程序运行时,需要将整个formssi文件夹拷贝到D盘的根目录     //选择题文件所在位置     private static final String selectFiles = "D:/formssi/java/test/select/title" ;     //选择题答案位置     private static final String AselectFiles = "D:/formssi/java/test/select/answer" ;     //填空题文件所在位置     private static final String vacantFiles = "D:/formssi/java/test/vacant/title" ;     //填空题答案位置     private static final String AvacantFiles = "D:/formssi/java/test/vacant/answer" ;     //程序题文件所在位置     private static final String programFiles = "D:/formssi/java/test/program/title" ;     //程序题答案位置     private static final String AprogramFiles = "D:/formssi/java/test/program/answer" ;     //试卷位置     private static final String testFile = "D:/formssi/java/test/testFile.txt" ;     //试卷答案位置     private static final String AtestFile = "D:/formssi/java/test/AtestFile.txt" ; 该出题系统支持扩展题源

package com.formssi.test3;

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.HashSet; import java.util.Scanner; import java.util.Set; /*  * 随机生成题目  */ public class CompreT {     //选择题文件所在位置     private static final String selectFiles = "D:/formssi/java/test/select/title" ;     //选择题答案位置     private static final String AselectFiles = "D:/formssi/java/test/select/answer" ;     //填空题文件所在位置     private static final String vacantFiles = "D:/formssi/java/test/vacant/title" ;     //填空题答案位置     private static final String AvacantFiles = "D:/formssi/java/test/vacant/answer" ;     //程序题文件所在位置     private static final String programFiles = "D:/formssi/java/test/program/title" ;     //程序题答案位置     private static final String AprogramFiles = "D:/formssi/java/test/program/answer" ;     //试卷位置     private static final String testFile = "D:/formssi/java/test/testFile.txt" ;     //试卷答案位置     private static final String AtestFile = "D:/formssi/java/test/AtestFile.txt" ;     //          //读取文件数     public static int readFilesNum(String files) {              File file = new File(files);         if (file.exists() && file.isDirectory() ) {             return file.list().length;         }else {             throw new RuntimeException("找不到文件"+files);         }              }          //生成一组不同的随机数     /*      * num 生成数量      * max 取值范围      */     public static int[] mainRs(int num,int max) {         //Set中不允许有重复值         Set sIntegers = new HashSet();         while (sIntegers.size() < num){             sIntegers.add((int) ((Math.random()*max+1)));         }         int[] n = new int[num];         int i=0;         for(Integer it:sIntegers){             n[i++] = it;         }         return n;     }                        public static void main(String[] args) {                  //检测环境         //删除原有的试卷和答案         deleteFile(testFile);         deleteFile(AtestFile);                  //生成选择题         buildTitle("一,选择题:", selectFiles, AselectFiles);         //生成填空题         buildTitle("二,填空题:", vacantFiles, AvacantFiles);         //生成程序题         buildTitle("三,程序题:", programFiles, AprogramFiles);              }               /*      * 删除文件      */     public static void deleteFile(String fileName) {         File file = new File(fileName);         if (file.exists() && file.isFile()) {             file.delete();         }     }          /*      * 生成题目试卷与答案      */     public static void buildTitle(String title,String srcFiles,             String AsrcFiles) {         buildTitle(title, srcFiles, testFile, AsrcFiles, AtestFile);     }               /*      * 生成题目试卷与答案      * title 那种类型的题目      * srcFiles 题目源      * desFile 题目目标文件所在      * AsrcFiles 答案源      * AdesFile  答案目标文件      */     public static void buildTitle(String title,String srcFiles,String desFile,             String AsrcFiles,String AdesFile) {         Scanner scanner = new Scanner(System.in);                 //1.接收该生成的题数目         int max = readFilesNum(srcFiles);         System.out.println("请输入"+title+"数目,但不大于"+max);         int num = scanner.nextInt();         while (num > max ) {             System.out.println("请重新输入");             num = scanner.nextInt();         }         //2.应该生成的题目数量         int[] ints = mainRs(num, max);         //3.通过生成的题目读取文件并写入试卷         try {             //写入之前先写入大题目与答案题目             writeLine(title, AdesFile);             writeLine(title, desFile);             //生成试卷和答案             writeFile(ints, srcFiles, desFile);             writeFile(ints, AsrcFiles, AdesFile);         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     }     /*      * 写入一行信息      */     public static void writeLine(String title,String desFile) throws IOException {         BufferedWriter writer = new BufferedWriter(new FileWriter(desFile,true));         writer.write(title);         writer.newLine();         writer.flush();         writer.close();     }               /*      * 将多个文件输出到一个文件中      * ints 文件具体名      * srcFiles 源文件夹      * desFile 目标文件      */     public static void writeFile(int[] ints,String srcFiles,String desFile) throws IOException {         FileInputStream fis = null;         InputStreamReader isr = null;         BufferedReader br = null;         FileOutputStream fos  = null;         PrintWriter pw = null;         int t = 1;    //文件内容名         for(int i : ints){         try {              File file = new File(srcFiles+"/"+i+".txt");//文件路径(包括文件名称)             //将文件读入输入流             fis = new FileInputStream(file);             isr = new InputStreamReader(fis);             br = new BufferedReader(isr);             //文件输出流             fos = new FileOutputStream(desFile,true);             pw = new PrintWriter(fos,true);        //true代表不是覆盖操作             //首先写进内容名             pw.write(""+(t++)+".");             pw.flush(); //刷新;             String str;             while((str = br.readLine()) != null)             {                 pw.write(str);                 pw.println(); //换行;                 pw.flush(); //刷新;             }         } catch (Exception e) {             // TODO: handle exception             e.printStackTrace();         }finally {             //不要忘记关闭             if (pw != null) {                 pw.close();             }             if (fos != null) {                 fos.close();             }             if (br != null) {                 br.close();             }             if (isr != null) {                 isr.close();             }             if (fis != null) {                 fis.close();             }         }        }     }      }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3