任务描述:基于模板的文档产生、基于复用的软件构造 (1) 生成Word格式的习题, 口算习题练习得分的可视化展示,给出java代码
时间: 2024-02-25 14:53:17 浏览: 20
以下是一个简单的Java示例代码,用于生成口算习题和计算得分,并将得分可视化展示:
```
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.apache.poi.xwpf.usermodel.*;
public class ExercisesGenerator {
public static void main(String[] args) {
// 生成习题
int maxNum = 100;
int numCount = 10;
String[] operators = {"+", "-", "*", "/"};
List<String> questions = new ArrayList<>();
List<Integer> answers = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < numCount; i++) {
int num1 = random.nextInt(maxNum) + 1;
int num2 = random.nextInt(maxNum) + 1;
String operator = operators[random.nextInt(4)];
int result = 0;
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
}
questions.add((i+1) + ". " + num1 + " " + operator + " " + num2 + " = ____");
answers.add(result);
}
// 生成Word文档
try {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph title = doc.createParagraph();
title.setAlignment(ParagraphAlignment.CENTER);
XWPFRun run = title.createRun();
run.setText("口算习题");
run.setBold(true);
run.setFontSize(16);
run.addBreak();
for (int i = 0; i < numCount; i++) {
XWPFParagraph para = doc.createParagraph();
para.setAlignment(ParagraphAlignment.LEFT);
XWPFRun qRun = para.createRun();
qRun.setText(questions.get(i));
qRun.setFontSize(12);
para.setSpacingAfter(150);
}
XWPFParagraph scorePara = doc.createParagraph();
scorePara.setAlignment(ParagraphAlignment.CENTER);
XWPFRun scoreRun = scorePara.createRun();
scoreRun.addBreak();
scoreRun.setText("得分:____ 分");
scoreRun.setFontSize(12);
// 计算得分
int score = 0;
for (int i = 0; i < numCount; i++) {
int answer = answers.get(i);
System.out.println("请输入第" + (i+1) + "题的答案:");
int userAnswer = new java.util.Scanner(System.in).nextInt();
if (userAnswer == answer) {
score++;
}
}
// 可视化展示得分
scoreRun.setText("得分:" + score + " 分");
scoreRun.setColor("FF0000");
FileOutputStream out = new FileOutputStream(new File("Exercises.docx"));
doc.write(out);
out.close();
System.out.println("习题已生成,得分为:" + score + " 分");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
以上代码使用了Apache POI库,生成了一个包含口算习题和得分的Word文档。具体实现过程包括:定义习题内容和参数,生成习题,创建Word文档,设置文本样式和排版,将习题内容插入文档,计算得分并可视化展示,保存文档到指定位置。