20194658自动生成四则运算题第一版报告
一.需求分析
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /)
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
二.程序设计
主要流程图:
四则运算Calculator类:
三.功能设计
基本功能
(1)自动生成小学生的四则运算,需要用随机数生成数字
1.先实现随机数相加
r1[i]=(int)(number3+Math.random()*(number4-number3));
r2[i]=(int)(number3+Math.random()*(number4-number3));
S1[i]=(r1[i]+r2[i]);
2.然后生成随机运算符
建立了一个数组r3,将运算符存储在数组r3中
static String[] r3={"+","-","*","/"};
3.能够确保生成符号加减乘除计算
扩展功能
(1)自动生成100以内四则运算
(2)相关参数可以控制
(3)操作数数值范围可控制
是否包括负数
是否包括乘法或者除法
(4)生成的运算题存储到外部
四.代码片段
1.选择所需要的功能
while(true)
{
Scanner scan1=new Scanner(System.in);
System.out.println("请输入四则运算的选项:1:整数计算 2:退出");
//System.out.println("");
//使用choose来存储从键盘输入的数据
int choose=scan1.nextInt();
if(choose==1)
{
System.out.println("功能1:请输入定制数量:");
Scanner scan2=new Scanner(System.in);
int number=scan2.nextInt();
//是否有乘除法
System.out.println("功能2:是否有乘除:0.否 1.是");
int number2=scan2.nextInt();
//输入数值范围
System.out.println("功能3:输入数值范围:");
System.out.println("请输入上界:");
int number3=scan2.nextInt();
System.out.println("请输入下界:");
int number4=scan2.nextInt();
//加减有无负数
System.out.println("功能4:加减有无负数:0.否 1.是");
int number5=scan2.nextInt();
//除法有无余数
System.out.println("功能5:除法有无余数:0.否 1.是");
int number6=scan2.nextInt();
}
}
2.显示结果
System.out.println("是否输出定制结果?(1.输出 其他: 不输出)");
Scanner scan3=new Scanner(System.in);
int judge1=scan3.nextInt();
if(judge1==1)
{
for(int i=0;i<number;i++)
{
System.out.println("第"+(i+1)+"个算式的结果为:"+S1[i]);
}
}
3.退出答题系统
if(choose==2) { System.out.println("您已退出自动出题系统"); System.exit(0); }
4.将结果保存在result.txt文件中
PrintStream as=new PrintStream("d:/result.txt");
//设置并初始化流对象,设置将要输入的文件目录和文件格式
System.setOut(as);
//将流对象中数据输出文件中
五.总结
设计四则运算算法,在运行无误后,根据客户需求逐一增加代码功能,每增加一步进行测试,测试无误后,写下一个功能。
六.PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
10 |
20 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
10 |
20 |
Development |
开发 |
820 |
1020 |
·· Analysis |
需求分析 (包括学习新技术) |
60 |
120 |
· Design Spec |
· 生成设计文档 |
0 |
0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
10 |
· Design |
具体设计 |
10 |
10 |
· Coding |
具体编码 |
625 |
720 |
· Code Review |
· 代码复审 |
60 |
80 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
80 |
Reporting |
报告 |
20 |
120 |
·· Test Report |
· 测试报告 |
0 |
0 |
· Size Measurement |
计算工作量 |
0 |
0 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
20 |
120 |
七.分析
在本次实验中,主要在代码完成、调试中花了很多时间。我感觉一方面由于跨专业没有接触过编程语言,对于Java语法结构等知识方面都严重匮乏。另一方面还是对于软件工程这门课理解有偏差。不过在同学的帮助下以及自己查找资料下完成了作业。