image.png
    改前:

    1. public TestPaper getTestPaper(String excelFileName,int amount) {
    2. boolean b =setExcel(excelFileName); //设置用户存放试题的电子表格
    3. if(b) {
    4. try {
    5. randomGiveProblem(amount);//随机给出amount道试题,见类后面的randomGiveProblem方法
    6. }
    7. catch(ArrayIndexOutOfBoundsException e){
    8. System.out.println("试题必须有类型,请检查题库");
    9. System.exit(0);
    10. }
    11. testPaper.setProblem(problem);//试卷上设置的一套试题是problem
    12. return testPaper;//返回试卷
    13. }
    14. else {
    15. JOptionPane.showMessageDialog
    16. (null,"没有预备题库","消息对话框",JOptionPane.WARNING_MESSAGE);
    17. return null;
    18. }
    19. }

    改后:

    1. public TestPaper getTestPaper(String excelFileName,int amount){
    2. wb = SetExcel.setExcel(excelFileName,testPaper,fileExcel,problem,in,wb,sheet);//设置用户存放试题的电子表格
    3. if(wb!=null){
    4. try {
    5. randomGiveProblem(amount);//随机给出amount道试题,见类后面的randomGiveProblem方法
    6. }
    7. catch(ArrayIndexOutOfBoundsException e){//用非法索引访问数组时抛出的异常。
    8. System.out.println("试题必须有类型,请检查题库");
    9. System.exit(0);//exit(int status)终止当前正在运行的 Java 虚拟机。
    10. }
    11. testPaper.setProblem(problem);//试卷上设置的一套试题是problem
    12. return testPaper;//返回试卷
    13. }
    14. else {
    15. JOptionPane.showMessageDialog
    16. (null,"没有预备题库","消息对话框",JOptionPane.WARNING_MESSAGE);
    17. return null;
    18. }
    19. }

    重复代码单独

    1. package data;
    2. import jxl.Sheet;
    3. import jxl.Workbook;
    4. import javax.swing.*;
    5. import java.io.File;
    6. import java.io.FileInputStream;
    7. import java.io.IOException;
    8. import java.io.InputStream;
    9. /*
    10. 设置用户存放试题的电子表格,并且读取
    11. */
    12. public class SetExcel {
    13. public static Workbook setExcel
    14. (String excelFileName,TestPaper testPaper, File fileExcel, Problem[] problem, InputStream in, Workbook wb, Sheet sheet){//判断题库 Excel是否存在
    15. try {
    16. //File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
    17. fileExcel =new File(excelFileName);
    18. //FileInputStream:从文件系统中的某个文件中获得输入字节
    19. in =new FileInputStream(fileExcel);
    20. //getAbsolutePath()返回此抽象路径名的绝对路径名字符串。
    21. testPaper.setProblemSource(fileExcel.getAbsolutePath());//试卷设置题库来源
    22. }
    23. catch(IOException exp){
    24. JOptionPane.showMessageDialog
    25. (null,"没有预备题库Excel","消息对话框",JOptionPane.WARNING_MESSAGE);
    26. }
    27. try {
    28. //getWorkbook:接收一个excel文件并读入内容
    29. wb=Workbook.getWorkbook(in);
    30. //close()关闭此输入流并释放与该流关联的所有系统资源。
    31. in.close();
    32. }
    33. catch(Exception exp){
    34. System.out.println(exp);
    35. }
    36. return wb;
    37. }
    38. }

    image.png


    image.png
    image.png


    image.png
    删除_GiveTestPaper_mysql接口_,_GiveTestPaper接口_增加两个抽象方法
    1.public TestPaper getTestPaper(int amount)
    2.public int getShiTi();_//返回试题来源_
    image.png


    image.png

    1. Microsoft Windows [版本 10.0.19042.1348]
    2. (c) Microsoft Corporation。保留所有权利。
    3. E:\java_study\软件发布_04_mysql>
    4. E:\java_study\软件发布_04_mysql>java -jar kechensheji.jar
    5. java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
    6. at java.net.URLClassLoader.findClass(Unknown Source)
    7. at java.lang.ClassLoader.loadClass(Unknown Source)
    8. at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    9. at java.lang.ClassLoader.loadClass(Unknown Source)
    10. at java.lang.Class.forName0(Native Method)
    11. at java.lang.Class.forName(Unknown Source)
    12. at mysql.SetExcel_mysql.connectDB(SetExcel_mysql.java:15)
    13. at mysql.SetExcel_mysql.<init>(SetExcel_mysql.java:25)
    14. at mysql.OrderTestPaper_mysql.getTestPaper(OrderTestPaper_mysql.java:20)
    15. at gui.AppWindow_test.main(AppWindow_test.java:22)
    16. E:\java_study\软件发布_04_mysql>java -jar kechensheji.jar

    之前导入的jar包为 **mysql-connector-java-5.1.37-bin** 不适配 **MySQL Server 8.0**
    image.png

    IDEA打包jar包含第三方jar包(自测正确步骤) https://blog.csdn.net/xiaokui9/article/details/105244775

    image.png