软件工程实践第一次作业-CSDN社区
完成一个具有可视化界面的计算器
Java Swing界面设计UI(全)_swing ui_冰棍hfv的博客-CSDN博客
Heart1018/ruangongzuoye (github)
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
• Estimate | • 估计这个任务需要多少时间 | 15 | 10 |
Development | 开发 | 120 | 180 |
• Analysis | • 需求分析 (包括学习新技术) | 300 | 360 |
• Design Spec | • 生成设计文档 | 60 | 60 |
• Design Review | • 设计复审 | 15 | 20 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 15 |
• Design | • 具体设计 | 30 | 60 |
• Coding | • 具体编码 | 240 | 300 |
• Code Review | • 代码复审 | 60 | 90 |
• Test | • 测试(自我测试,修改代码,提交修改) | 60 | 120 |
Reporting | 报告 | 90 | 120 |
• Test Repor | • 测试报告 | 60 | 30 |
• Size Measurement | • 计算工作量 | 20 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 60 |
合计 | 1060 | 1465 |
1、通过Java的swing进行计算器的窗口可视化;
2、在每个按键上安装监听器ActionListener对鼠标的点击操作进行监听,并编写代码实现计算器对“事件”做出相应反应;
3、编写计算器代码。
public Double calulate(String str1_,String op,String str2_){Double result=0.0;if(op.equals("+")){Double num1=Double.valueOf(str1_);Double num2=Double.valueOf(str2_);result=num1+num2;}else if(op.equals("-")){Double num1=Double.valueOf(str1_);Double num2=Double.valueOf(str2_);result=num1-num2;}else if(op.equals("×")){Double num1=Double.valueOf(str1_);Double num2=Double.valueOf(str2_);result=num1*num2;}else if(op.equals("÷")){Double num1=Double.valueOf(str1_);Double num2=Double.valueOf(str2_);if(num2!=0)result=num1/num2;elseresult=null;}else if(op.equals("l")){String replace=str2_.replace("ln","");result=Math.log(Double.valueOf(replace));}else if(op.equals("s")){String replace=str2_.replace("sin","");result=Math.sin(Double.valueOf(replace));}else if(op.equals("c")){String replace=str2_.replace("cos","");results(Double.valueOf(replace));}else if(op.equals("t")){String replace=str2_.replace("tan","");result=Math.tan(Double.valueOf(replace));}else if(op.equals("!")){int index=str1_.indexOf(".");if(index==-1) {String replace = str1_.replace("!", "");Integer temp = Integer.valueOf(replace);Double res = 1.0;for (Integer i = temp; i > 0; i--) {res *= i;}result=res;}else{result=null;}}else if(op.equals("S")){String replace=str2_.replace("sqrt(","");result=Math.sqrt(Double.valueOf(replace));}else if(op.equals("^")){Double num1=Double.valueOf(str1_);Double num2=Double.valueOf(str2_);result=Math.pow(num1,num2);}return result;}
1、导入需要用到的库:
import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;NumberFormat;
2、使用JFrame初始化一个可视化窗口并命名为“计算器”;
3、private JPanel jPanel1=new JPanel();//创建上方控件,用于放置运算
private JTextField input=new JTextField();//输入区域
private JPanel jPanel2=new JPanel();//创建下方控件,用于放置数字和运算符
完成计算器可视化的基础构建;
4、将可视化窗口中填入按钮与数据,完成计算机的可视化;
5、对每个按钮安装监听器ActionListener,并完成actionPerformed函数实现对每个按钮点击时的计算器会做出反应;
6、编写函数calulate实现计算器的计算功能;
7、编写函数format保证输出数据的标准化;
8、运行计算器。
1、一开始构建可视化界面时,我将每个按键都用一个单独的变量进行定义,再挨个进行创建和排版,工程量大,实现不方便。也不便于后续对按钮监听器的安装;
2、起初是在actionPerformed函数对监听器触发的事件进行处理时实现函数calulate的计算功能的,后续将函数calulate进行单独分装后,大大增加了代码的可读性,便于后续进行测试与修改。
import static org.junit.Assert.*;public class MyCalulatorTest {@org.junit.Testpublic void calulate() {//测试加法MyCalulator test1=new MyCalulator();Double result1= test1.calulate("1","+","2");assertEquals(result1,(Double) 3.0);//测试减法MyCalulator test2=new MyCalulator();Double result2= test2.calulate("2","-","1");assertEquals(result2,(Double) 1.0);//测试乘法MyCalulator test3=new MyCalulator();Double result3= test3.calulate("2","×","3");assertEquals(result3,(Double) 6.0);//测试除法(除数不为零)MyCalulator test4=new MyCalulator();Double result4= test4.calulate("15","÷","3");assertEquals(result4,(Double) 5.0);//测试除法(除数为零)MyCalulator test5=new MyCalulator();Double result5= test5.calulate("15","÷","0");assertEquals(result5,null);//测试输入数字有小数点MyCalulator test6=new MyCalulator();Double result6= test6.calulate("1.2","+","1.4");assertEquals(result6,(Double) 2.6, 0.001);//测试sinMyCalulator test7=new MyCalulator();Double result7= test7.calulate("","s","1.7");assertEquals(result7,(Double) 0.9916648104524686);//测试阶乘MyCalulator test8=new MyCalulator();Double result8= test8.calulate("4","!","");assertEquals(result8,(Double) 24.0);//测试开根号MyCalulator test9=new MyCalulator();Double result9= test9.calulate("","S","9");assertEquals(result9,(Double) 3.0);//测试n次方MyCalulator test10=new MyCalulator();Double result10= test10.calulate("2","^","3");assertEquals(result10,(Double) 8.0);}
}
测试结果:
虽然这几天的学习过程充满艰辛,但还是收获颇丰。
这是我学习JAVA后编写的第一个程序,同时也是我编写的第一个可视化的程序,虽然花费的时间很多,可以实现的内容不多,也都相对简单,但我觉得这是我迈出的非常坚实且有意义的一步。
收到作业时我才刚刚自学了一周的JAVA的知识且从未接触过可视化的相关代码,所以萌生了使用JAVA完成此次作业的想法。在几天的学习其他优秀的博客与视频后我学习到了JAVA.swing的可视化知识,深入了解了JAVA可视化与监听功能的使用,对JAVA相关技能有了相对牢固的掌握。
在学习的过程中我也不断向身边优秀的同学请教,也学习和掌握了如何进行“单元测试”与进行项目开发前应如何进行合理的分析与时间规划。
本文发布于:2024-02-04 21:34:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170716945959819.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |