10.19

一. 多选题(共6题,46.1分)

  1. (多选题)以下数据Java字节流操作的基础类是:
    A. Writer
    B. OutputStream
    C. InputStream
    D. Reader
    我的答案: BC:OutputStream; InputStream;正确答案: BC:OutputStream; InputStream;
    7.6分
  2. (多选题)表驱动编程中,表象查询的方法包括:
    A. 直接访问
    B. 阶梯访问
    C. 索引访问
    D. 表项的内容
    我的答案: ABC:直接访问; 阶梯访问; 索引访问;正确答案: ABC:直接访问; 阶梯访问; 索引访问;
    7.7分
  3. (多选题)影响应用程序选择数据的存储、管理和处理方式的因素包括:
    A. 数据的持久性和使用频次
    B. 数据的量及管理
    C. 共享与传输
    D. 数据的操作方式
    我的答案: ABCD:数据的持久性和使用频次; 数据的量及管理; 共享与传输; 数据的操作方式;正确答案: ABCD:数据的持久性和使用频次; 数据的量及管理; 共享与传输; 数据的操作方式;
    7.7分
  4. (多选题)软件中的数据包括:
    A. 外部数据
    B. 缓存数据
    C. 内部数据
    D. 网络数据
    我的答案: AC:外部数据; 内部数据;正确答案: AC:外部数据; 内部数据;
    7.7分
  5. (多选题)以下数据Java字符流操作的基础类是:
    A. OutputStream
    B. Writer
    C. Reader
    D. InputStream
    我的答案: BC:Writer; Reader;正确答案: BC:Writer; Reader;
    7.7分
  6. (多选题)断言分为如下几类:
    A. 前置断言
    B. 固定断言
    C.
    后置断言

D. 不变断言
我的答案: ACD:前置断言; 后置断言; 不变断言;正确答案: ACD:前置断言; 后置断言; 不变断言;
7.7分
二. 单选题(共2题,15.4分)
7. (单选题)CSV以纯文本形式存储数字和文本数据,以( )间隔多条记录。
A. 换行符
B. tab
C. 分号
D. 逗号
我的答案: A:换行符;正确答案: A:换行符;
7.7分
8. (单选题)软件实现数据持久性的最基本的途径是:
A. 文件和数据库
B. 变量
C. 网络数据
D. 缓存
我的答案: A:文件和数据库;正确答案: A:文件和数据库;
7.7分
三. 填空题(共4题,30.8分)
9. (填空题)一次性生成所有程序中需要的数据表的方法为()。
我的答案:
0分
(1) 数据库迁移
正确答案:
(1) 算式基
10. (填空题)()采用一定的模式可用来查找、显示或修改输入序列中出现的某个模式。
我的答案:
7.7分
(1) 正则表达式
正确答案:
(1) 正则表达式;Regular Expressions;RE
11. (填空题)根据算式基的设计使程序在表中通过选择条件得到算式及其运算结果的方法称()。
我的答案:
0分
(1) 表驱动法
正确答案:
(1) 表驱动编程
12. (填空题)()是让程序在运行过程中自我检查的代码
我的答案:
7.7分
(1) 断言
正确答案:
(1) 断言
四. 简答题(共1题,7.7分)
13. (简答题)编写代码完成将生成的算式及习题长期保存下来,采用CSV、XML、JSON三种形式进行存储并读取。提交相关代码及运行截图。
我的答案:7.7分

import java.io.;
import java.util.
;
import org.json.JSONObject;
import org.w3c.dom.;
import javax.xml.parsers.
;
import javax.xml.transform.;
import javax.xml.transform.dom.
;
import javax.xml.transform.stream.*;

// 抽象操作类
abstract class Operation {
public abstract int execute(int num1, int num2);
}

// 加法操作类
class AddOperation extends Operation {
@Override
public int execute(int num1, int num2) {
return num1 + num2;
}
}

// 减法操作类
class SubtractOperation extends Operation {
@Override
public int execute(int num1, int num2) {
return num1 – num2;
}
}

// 数据存储接口
interface DataStorage {
void save(String equation, boolean correct, String filePath) throws Exception;
List read(String filePath) throws Exception;
}

// CSV存储类
class CSVStorage implements DataStorage {
@Override
public void save(String equation, boolean correct, String filePath) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(filePath, true));
writer.write(equation + “,” + (correct ? “正确” : “错误”) + “\n”);
writer.close();
}

@Override
public List read(String filePath) throws IOException {
List records = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(filePath));
String line;
while ((line = reader.readLine()) != null) {
records.add(line);
}
reader.close();
return records;
}
}

// XML存储类
class XMLStorage implements DataStorage {
@Override
public void save(String equation, boolean correct, String filePath) throws Exception {
File xmlFile = new File(filePath);
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc;

   if (xmlFile.exists()) {
       doc = docBuilder.parse(xmlFile);
   } else {
       doc = docBuilder.newDocument();
       Element rootElement = doc.createElement("Calculations");
       doc.appendChild(rootElement);
   }

   Element calcElement = doc.createElement("Calculation");
   calcElement.setAttribute("equation", equation);
   calcElement.setAttribute("result", correct ? "正确" : "错误");
   doc.getDocumentElement().appendChild(calcElement);

   TransformerFactory transformerFactory = TransformerFactory.newInstance();
   Transformer transformer = transformerFactory.newTransformer();
   DOMSource source = new DOMSource(doc);
   StreamResult resultFile = new StreamResult(xmlFile);
   transformer.transform(source, resultFile);

}

@Override
public List read(String filePath) throws Exception {
List records = new ArrayList<>();
File xmlFile = new File(filePath);
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xmlFile);

   NodeList nodeList = doc.getElementsByTagName("Calculation");
   for (int i = 0; i < nodeList.getLength(); i++) {
       Element element = (Element) nodeList.item(i);
       String equation = element.getAttribute("equation");
       String result = element.getAttribute("result");
       records.add(equation + " = " + result);
   }
   return records;

}
}

// JSON存储类
class JSONStorage implements DataStorage {
@Override
public void save(String equation, boolean correct, String filePath) throws IOException {
File file = new File(filePath);
JSONObject jsonObject = new JSONObject();
jsonObject.put(“equation”, equation);
jsonObject.put(“result”, correct ? “正确” : “错误”);

   BufferedWriter writer = new BufferedWriter(new FileWriter(file, true));
   writer.write(jsonObject.toString() + "\n");
   writer.close();

}

@Override
public List read(String filePath) throws IOException {
List records = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(filePath));
String line;
while ((line = reader.readLine()) != null) {
records.add(line);
}
reader.close();
return records;
}
}

// 练习器类
class Practice {
private DataStorage storage;
private Scanner scanner = new Scanner(System.in);

public Practice(DataStorage storage) {
this.storage = storage;
}

public void start() throws Exception {
System.out.println(“开始加减法练习,按 ‘q’ 退出。”);
Random random = new Random();

   while (true) {

       int num1=0,num2=0;
       while (num1 <= num2) {
           num1 = random.nextInt(100);
           num2 = random.nextInt(100);
       }
       boolean isAddition = random.nextBoolean();

       Operation operation = isAddition ? new AddOperation() : new SubtractOperation();
       String equation = num1 + (isAddition ? " + " : " - ") + num2;
       int correctAnswer = operation.execute(num1, num2);

       System.out.print("计算 " + equation + " = ");
       String userInput = scanner.nextLine();

       if (userInput.equalsIgnoreCase("q")) {
           System.out.println("退出练习。请选择保存类型 (1. CSV, 2. XML, 3. JSON):");
           int choice = scanner.nextInt();
           scanner.nextLine(); // 清除换行符
           String filePath = "calculations.";
           switch (choice) {
               case 1:
                   filePath += "csv";
                   storage = new CSVStorage();
                   break;
               case 2:
                   filePath += "xml";
                   storage = new XMLStorage();
                   break;
               case 3:
                   filePath += "json";
                   storage = new JSONStorage();
                   break;
               default:
                   System.out.println("无效选择,默认保存为 CSV 格式。");
                   filePath += "csv";
                   storage = new CSVStorage();
                   break;
           }
           break;
       }

       int userAnswer;
       try {
           userAnswer = Integer.parseInt(userInput);
       } catch (NumberFormatException e) {
           System.out.println("无效输入,请输入数字。");
           continue;
       }

       boolean correct = userAnswer == correctAnswer;
       System.out.println(correct ? "答案正确!" : "答案错误。正确答案是 " + correctAnswer);
       storage.save(equation + " = " + userAnswer, correct, "calculations.csv");
   }

}

public void viewResults() throws Exception {
System.out.println(“选择要查看的文件类型 (1. CSV, 2. XML, 3. JSON):”);
int choice = scanner.nextInt();
scanner.nextLine(); // 清除换行符

   String filePath = "calculations.";
   switch (choice) {
       case 1:
           filePath += "csv";
           storage = new CSVStorage();
           break;
       case 2:
           filePath += "xml";
           storage = new XMLStorage();
           break;
       case 3:
           filePath += "json";
           storage = new JSONStorage();
           break;
       default:
           System.out.println("无效选择。");
           return;
   }

   List<String> results = storage.read(filePath);
   System.out.println("保存的练习结果:");
   for (String record : results) {
       System.out.println(record);
   }

}
}

// 使用示例
public class Main {
public static void main(String[] args) throws Exception {
Practice practice = new Practice(new CSVStorage());
practice.start();
practice.viewResults();
}
}

正确答案:

请登录后发表评论

    没有回复内容