Github的仓库主页链接地址:https://github.com/cy0325/CulClation.git
一、实验要求
软件基本功能要求如下:
- 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符是3-4个。
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
- 当程序接收的参数为4时,以下为输出文件示例。
软件附加功能要求如下:(请有余力的同学完成)
- 支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号必须大于2个,且不得超过运算符的个数。
- 扩展程序功能支持真分数的出题与运算,例如:1/6 + 1/8 + 2/3= 23/24。注意在实现本功能时,需支持运算时分数的自动化简,比如 1/2+1/6=2/3,而非4/6。
二、需求分析
- 本实验要求随机生成四则运算,并给出答案。为了简化程序的复杂性,随机生成整型数组,然后把四个符号存入到数组,随机取下标,调用JavaScript函数库计算结果即可。之后将四则运算和学号姓名保存到TXT文档中。
三、功能实现
1、实现了随机生成5位数的随机运算。
2、每个数字在0-100之间。
3、完成了基本的运算。
4、运用输出流将学号姓名和四则运算及其结果保存到result.txt中。
四、设计实现
在main函数中先调用随机函数生成有五位数的随机数组,将四则运算符存放到数组中,调用随机函数生成四个对应的数组下标,将整型数组中的数个四则运算符随机匹配,调用JavaScript函数库,计算所得结果,输出即可。
五、测试运行
六、核心代码
1 ScriptEngine javascript = new ScriptEngineManager().getEngineByName("JavaScript"); 2 PrintStream ps = null; 3 String exp="";//表达式 4 double result = 0; //结果 5 char[] c={‘+‘,‘-‘,‘*‘,‘/‘}; 6 //文件操作 7 try { 8 File file =new File("./result.txt"); 9 ps = new PrintStream(new FileOutputStream(file)); 10 } catch (FileNotFoundException e) { 11 e.printStackTrace(); 12 } 13 //输入 14 Scanner sc=new Scanner(System.in); 15 System.out.println("请输入你要产生几个表达式:"); 16 int number=sc.nextInt(); 17 ps.println("201571030101 曹阳"); 18 for(int j=0;j<number;j++) 19 { 20 //产生随机数数组 21 int[] array = new int[5]; 22 Random r = new Random(); 23 for (int i = 0, n = array.length; i < n; i++) 24 { 25 array[i] = r.nextInt(100); 26 } 27 // System.out.println(Arrays.toString(array)); 28 Random ran = new Random(); 29 int index=ran.nextInt(c.length); 30 int index1=ran.nextInt(c.length); 31 int index2=ran.nextInt(c.length); 32 int index3=ran.nextInt(c.length); 33 exp = String.valueOf(""+array[0]+c[index]+array[1]+c[index1]+array[2]+c[index2]+array[3]+c[index3]+array[4]); 34 try { 35 result = Double.parseDouble(String.valueOf(javascript.eval(exp))); 36 } catch (ScriptException e) { 37 e.printStackTrace(); 38 } 39 if(Math.floor(result)==result&&result>0&&result<99999) { 40 System.out.println(exp + "=" + (int) result); 41 ps.println(exp + "=" + (int) result); 42 } 43 else j--; 44 45 } 46 47
七、总结
本次实验,我明白了软件工程的庞大性,以及设计一个程序所花费的时间并不是想象中那么少的,虽然这个实验完成了,但是还是有部分设计不太符合题目要求,希望老师指正批评。
八、展示PSP
PSP2.1 |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
40 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
30 |
30 |
Development |
开发 |
200 |
300 |
Analysis |
需求分析 (包括学习新技术) |
15 |
30 |
Design Spec |
生成设计文档 |
10 |
20 |
Design Review |
设计复审 (和同事审核设计文档) |
10 |
20 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
10 |
Design |
具体设计 |
30 |
30 |
Coding |
具体编码 |
100 |
120 |
Code Review |
代码复审 |
10 |
20 |
est |
测试(自我测试,修改代码,提交修改) |
10 |
20 |
Reporting |
报告 |
30 |
60 |
Test Report |
测试报告 |
25 |
30 |
Size Measurement |
计算工作量 |
2 |
3 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
3 |
10 |
原文地址:https://www.cnblogs.com/mmzq/p/8613175.html
时间: 2024-11-06 03:38:41