软件工程个人作业02
2016-03-19 15:58
381 查看
四则运算2
设计思想:
1.通过用户输入是否需要分数运算,是否需要乘除法,是否需要加减法负数,以及除法是否有余数。
2.根据用户的选择使用不同的函数。用户可以选择题目道数和数值范围。
3.通过产生随机数决定哪一种运算。
4.是否有余数通过循环,根据用户选择,比如用户需要余数就不做限制,如果不需要余数就在输出前进行计算。
5.是否有负数需要用户输入的数值范围允许,否则程序结束。
6.未实现括号,检验重复以及输出方式。
程序代码:
运行截图:
分数有乘除:
分数无乘除:
整数有乘除:
整数无乘除:
用户输入范围和有无负数冲突:
项目计划日志:
时间记录日志:
缺陷记录日志:
仍然存在的问题:未实现括号,检验重复以及输出方式。
设计思想:
1.通过用户输入是否需要分数运算,是否需要乘除法,是否需要加减法负数,以及除法是否有余数。
2.根据用户的选择使用不同的函数。用户可以选择题目道数和数值范围。
3.通过产生随机数决定哪一种运算。
4.是否有余数通过循环,根据用户选择,比如用户需要余数就不做限制,如果不需要余数就在输出前进行计算。
5.是否有负数需要用户输入的数值范围允许,否则程序结束。
6.未实现括号,检验重复以及输出方式。
程序代码:
package arithmetic; import java.util.Random; import javax.swing.*; public class Arithmetic { static void add(int limit1,int limit2,int boolminus/*int boolremainder,int boolmultiply*/) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(boolminus==0) { if(limit1<0||limit2<0) { System.out.println("您输入的范围有误"); } else { System.out.println(number1+"+"+number2+"="); } } else { System.out.println(number1+"+"+number2+"="); } } static void subtract(int limit1,int limit2,int boolminus) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(boolminus==0) { while(true) { if(number1<number2) { number1=new Random().nextInt(limit2-limit1+1)+limit1; number2=new Random().nextInt(limit2-limit1+1)+limit1; } else { break; } } if(limit1<0||limit2<0) { System.out.println("您输入的范围有误"); } else if(limit1>=0||limit2>=0||number1>=number2) { System.out.println(number1+"-"+number2+"="); } } else { System.out.println(number1+"-"+number2+"="); } } static void multiply(int limit1,int limit2/*int boolremainder,*/) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; System.out.println(number1+"*"+number2+"="); } static void divide(int limit1,int limit2,int boolremainder) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(boolremainder==0) { while(true) { if(number1%number2!=0) { number1=new Random().nextInt(limit2-limit1+1)+limit1; number2=new Random().nextInt(limit2-limit1+1)+limit1; } else { break; } } } else { System.out.println(number1+"/"+number2+"="); } } static void fraction(int limit1,int limit2,int numbers,int boolmultiply) { int i,j,k; if(boolmultiply==0) { for(int o=numbers;o>0;o--) {
int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(number1<number2) i=number1; else i=number2; int number3=new Random().nextInt(limit2-limit1+1)+limit1; int number4=new Random().nextInt(limit2-limit1+1)+limit1; if(number3<number4) j=number3; else j=number4; for(;i>=0;i--) { if(number1%i==0&&number2%i==0) { number1=number1/i; number2=number2/i; break; } } for(;j>=0;j--) { if(number3%j==0&&number4%j==0) { number3=number3/j; number4=number4/j; break; } }
k=new Random().nextInt(2); if(k==0) { System.out.println(number1+"/"+number2+"+"+number3+"/"+number4+"="); } else if(k==1) { System.out.println(number1+"/"+number2+"-"+number3+"/"+number4+"="); } } } else { for(int o=numbers;o>0;o--) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(number1<number2) i=number1; else i=number2; int number3=new Random().nextInt(limit2-limit1+1)+limit1; int number4=new Random().nextInt(limit2-limit1+1)+limit1; if(number3<number4) j=number3; else j=number4; for(;i>=0;i--) { if(number1%i==0&&number2%i==0) { number1=number1/i; number2=number2/i; break; } } for(;j>=0;j--) { if(number3%j==0&&number4%j==0) { number3=number3/j; number4=number4/j; break; } } k=new Random().nextInt(4); if(k==0) { System.out.println(number1+"/"+number2+"+"+number3+"/"+number4+"="); } else if(k==1) { System.out.println(number1+"/"+number2+"-"+number3+"/"+number4+"="); } else if(k==2) { System.out.println(number1+"/"+number2+"*"+number3+"/"+number4+"="); } else { System.out.println(number1+"/"+number2+"/"+number3+"/"+number4+"="); } } } } public static void main(String[] args) { String choice0=JOptionPane.showInputDialog("是否有分数运算(有输入1,无输入0)"); String choice1=JOptionPane.showInputDialog("是否有乘除法(有输入1,无输入0)"); String choice2=JOptionPane.showInputDialog("请输入数值范围下限"); String choice21=JOptionPane.showInputDialog("请输入数值范围上限"); String choice5=JOptionPane.showInputDialog("需要多少道题"); int choice00=Integer.parseInt(choice0); int choice11=Integer.parseInt(choice1); int limit1=Integer.parseInt(choice2); int limit2=Integer.parseInt(choice21); int i=Integer.parseInt(choice5); if(choice00==0) { String choice3=JOptionPane.showInputDialog("加法有无负数(有输入1,无输入0)"); int choice33=Integer.parseInt(choice3); if(choice11==0) { for(;i>0;i--) { int j=new Random().nextInt(2); if(j==0) add(limit1,limit2,choice33); else subtract(limit1,limit2,choice33); } } else if(choice11==1) { String choice4=JOptionPane.showInputDialog("除法有无余数(有输入1,无输入0)"); int choice44=Integer.parseInt(choice4); for(;i>0;i--) { int j=new Random().nextInt(4); if(j==0) add(limit1,limit2,choice33); else if(j==1) subtract(limit1,limit2,choice33); else if(j==2) multiply(limit1,limit2); else if(j==3) divide(limit1,limit2,choice44); } } } else { fraction(limit1,limit2,i,choice11); } } }
运行截图:
分数有乘除:
分数无乘除:
整数有乘除:
整数无乘除:
用户输入范围和有无负数冲突:
项目计划日志:
日期 | 课堂 | 编程 | 读书 | 博客 | 日总结 |
3.14 | 120min | 100min | 220min | ||
3.15 | 30min | 100min | 130min | ||
3.16 | 60min | 60min | |||
3.19 | 40min | 50min | 90min | ||
周总结 | 120min | 130min | 200min | 50min | 500min |
日期 | 开始 | 结束 | 静时间 | 活动 | 备注 |
3.14 | 8:00,19:00 | 10:00,21:00 | 220min | 上课,阅读 | |
3.15 | 15:00,19:00 | 15:30,21:00 | 130min | 编程,阅读 | |
3.16 | 15:00 | 16:00 | 60min | 编程 | |
3.19 | 14:00 | 15:30 | 90min | 编程,博客 |
日期 | 编号 | 类型 | 引入 | 排除 | 修复时间 | 修复 |
3.16 | 1 | 分数产生时没有随机产生 | 10min | 随机数产生在循环内的位置不对 | ||
3.19 | 2 | 提示用户输入选择重复提示 | 5min | 提示重复 |
相关文章推荐
- 苹果终端的自动补全和git自动补全
- Gephi丰富的插件一瞥
- SICP学习笔记(4)
- tomcat部署war文件之后无法启动项目
- AndroidStudio如何从SVN检出旧版本的工程
- 巧妙获取二进制数的奇数序列和偶数序列
- 01字串---二进制输出(结合网友大神方法和自己的思路)
- Linux Mint安装jdk1.8
- 在 Windows 上安装 SVN Subversion 服务端
- PHP生成各种验证码和Ajax验证
- vs2013的安装以及单元测试
- 软件工程个人作业02
- Java线程池的测试和分析
- 善良比聪明更重要 (we are our choices)
- 《字节流与字符流的区别详解》 重要,一定要看
- CentOS下使用crontab命令来定时执行任务
- 自定义AlertDialog主题
- Android网络编程使用HttpClient访问web站点
- Android之Dialog详解
- Web前端性能优化——如何提高页面加载速度