一、项目源码
GitHub的链接地址:https://github.com/13993013291/Shiyan3.git
二、项目报告
1、需求分析
(1)程序能够从题库随机选择20道混合运算,用户输入答案,程序检查答案是否正确,每道题正确计5分,测试结束后给出总分;
(2)题库文件生成采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:
(3)程序提供三种练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;
(4)程序允许进行多轮测试,并用柱状图显示多轮测试分数;示例如下:
(5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;
(6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间;
(7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。
2、软件设计
程序设计类图如下:
3、程序核心代码
public static void One() throws IOException { hehe=9; for (int i = 0; realCount < number; i++) {// 当已产生的题目个数<共需要的题目个数 if (realCount == 0) {// 题目数=0时 One[0][0] = new Random().nextInt(range);// 产生第一个元素 twoPlus(remainmember);// 执行后,产生一个运算符和一个元素 used[realCount]=(remainmember*2-1); realCount++;// 题目数+1 File file = new File("Exercises.txt"); FileWriter fw = new FileWriter(file, true); PrintWriter pw = new PrintWriter(fw); pw.print( realCount + "." + One[realCount - 1][0] + (char) One[realCount - 1][1] + One[realCount - 1][2]); pw.println(); pw.close(); } else { temp[0] = new Random().nextInt(range); tempPlus(remainmember);// 用数组temp[]存放一个"待查重的题目" if (!compare2()) { One[realCount][0] = temp[0];// 将temp[]里的题目放入“已查重数组 One[]” twoWithTemp(remainmember);// 将temp[]里的题目放入“已查重数组 One[]” used[realCount]=(remainmember*2-1);//2-3 3-5 4-7 5-9 realCount++;// 题目个数+1 File file = new File("Exercises.txt"); FileWriter fw = new FileWriter(file, true); PrintWriter pw = new PrintWriter(fw); pw.print(realCount + "." + One[realCount - 1][0] + (char) One[realCount - 1][1] + One[realCount - 1][2]); pw.println(); pw.close(); } } if (i == 2) { remainmember++; oneMore(number - realCount); } } File file = new File("Exercises.txt"); readFile(file); } // 产生多个运算符的题目 public static void oneMore(int remainNumber) throws IOException { int index = 1; if (realCount == number) return; else { count = 0; for (int i = 0; count < remainNumber; i++) { if (i == 0) { One[realCount][0] = new Random().nextInt(range); twoPlus(remainmember); count++; used[realCount]=(remainmember*2-1); realCount++; File file = new File("Exercises.txt"); FileWriter fw = new FileWriter(file, true); PrintWriter pw = new PrintWriter(fw); pw.print(realCount + "." + One[realCount - 1][0]); for (int i3 = 0; i3 < remainmember - 1; i3++) { pw.print((char) One[realCount - 1][index]); pw.print(One[realCount - 1][index + 1]); index += 2; } pw.println(); pw.close(); index = 1; } else { temp[0] = new Random().nextInt(range); tempPlus(remainmember); if (!compare2()) { One[realCount][0] = temp[0]; twoWithTemp(remainmember); count++; used[realCount]=(remainmember*2-1); realCount++; File file = new File("Exercises.txt"); FileWriter fw = new FileWriter(file, true); PrintWriter pw = new PrintWriter(fw); pw.print(realCount + "." + One[realCount - 1][0]); for (int i3 = 0; i3 < remainmember - 1; i3++) { pw.print((char) One[realCount - 1][index]); pw.print(One[realCount - 1][index + 1]); index += 2; } pw.println(); pw.close(); index = 1; } } if (i == 3) { remainmember++; oneMore(number - realCount); break; } } } }