软件工程个人作业02
Posted 林.夕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程个人作业02相关的知识,希望对你有一定的参考价值。
软件工程个人作业02
组员:李锦
设计思想:每次的算法都会分很多种的情况,①将加减是否有正负(前面乘以-1) ②乘除是否有余数(先判断除法的余数是否为0,判断输出)③是否有无乘除法(在进行随机数产生的时候,先判断是否有乘除的运算,如果有,则在输出结果上有乘除法的输出,否则没有)④取值范围(在随机数的产生的时候先定义一个范围,对随机数的产生一定的范围影响。)⑤有无括号(进行有括号和无括号的分类的输出,有括号时进行静态数组的运算。)⑥可订制(在输出的时候,输入要输出的数量,在循环时使用这个循环。)
源代码:
package test2; import java.util.*; import java.util.ArrayList; public class math { static int simplify(int x,int y) { //求最大的公约数 int t,xx,yy,k=1; if(x>y){ t=x;x=y;y=t; } for(int i=x;i>=2;i--){ xx=x%i;yy=y%i; if(xx==0&&yy==0){ k=i; break; } } return k; } //程序的开始 public static void main(String[] args) { // TODO Auto-generated method stub int first1,first2, second1,second2,third1,third2,c,j,c2; String first3 = null,second3=null; //控制题目的个数 Scanner in = new Scanner(System.in); System.out.println("请输入要定制的个数:"); int number=in.nextInt(); System.out.println("请输入生成数 的取值范围,数值大于0:"); int range =in.nextInt(); System.out.println("请输入是否产生括号(是1,否0):"); int bracket =in.nextInt(); if(bracket==0){ System.out.println("是否有无负数(有1,没有0),请输入:"); int negative=in.nextInt(); System.out.println("请输入是否有乘除法,(有1,没有0),请输入:"); int num =in.nextInt(); if(num==1){ System.out.println("除法有无余数,(如果1,没有0),请输入:"); int remain =in.nextInt(); } else System.out.println("不用判断除法有无余数!"); for(int k=0;k<number;k++) { //随机数的生成 first1=(int)(Math.random()*range);//定义第一个真分数的分子 first2=(int)(Math.random()*(range-1)+1);//定义第一个真分数的分子,分母不能为零 second1=(int)(Math.random()*range);//定义第二个真分数的分子 second2=(int)(Math.random()*(range-1)+1);//定义第二个真分数的分母,分母不能为零 third1=(int)(Math.random()*range);//定义整数时的第一个整数 third2=(int)(Math.random()*range);//定义整数时的第一个整数 j=(int)(Math.random()*2);//定义计算时的整数加减法或是真分数的加减法 c=(int)(Math.random()*4);//定义加减乘除 c2=(int)(Math.random()*2);//定义只有加减法的时候 //将分数化简 int s1=simplify(first1,first2);//求最大公约数 if(first1/s1!=0&&first2/s1!=1) first3="("+first1/s1+"/"+first2/s1+")"; if(first1/s1==0||first2/s1==1) first3="("+first1/s1+")"; //化简 int s2=simplify(second1,second2);//求最大公约数 if(second1/s2!=0&&second2/s2!=1) second3="("+second1/s2+"/"+second2/s2+")"; if(second1/s2==0||second2/s2==1) second3="("+second1/s2+")";//化简 //计算 if(j==0&&num==1){ //有乘除的算法 if(negative==0){ if(c==0) System.out.println(first3+" "+"+"+" "+second3+"="); if(c==1) System.out.println(first3+" "+"-"+" "+second3+"="); } if(negative==1){ if(c==0) System.out.println("-"+first3+" "+"+"+" "+second3+"="); if(c==1) System.out.println("-"+first3+" "+"-"+" "+second3+"="); } if(c==2) System.out.println(first3+" "+"*"+" "+second3+"="); if(c==3) System.out.println(first3+" "+"/"+" "+second3+"="); } if(j==0&&num==0) {//没有乘除的算法 if(c2==0) System.out.println(first3+" "+"+"+" "+second3+"="); if(c2==1){ if((first1/s1/first2/s2)>=(second1/s2/second2/s2)) System.out.println(first3+" "+"-"+" "+second3+"="); else System.out.println(second3+" "+"-"+" "+first3+"="); } } if(j==1&&num==1){ //有乘除的算法 if(negative==0){ if(c==0) System.out.println(third1+" "+"+"+" "+third2+"="); if(c==1) System.out.println(third1+" "+"-"+" "+third2+"="); } if(negative==1){ if(c==0) System.out.println("-"+third1+" "+"+"+" "+third2+"="); if(c==1) System.out.println("-"+third1+" "+"-"+" "+third2+"="); } if(c==2) System.out.println(third1+" "+"*"+" "+third2+"="); if(c==3){ //判断有无余数 int remain=0; if(remain==0){ for(int a=0;;){ if(third2!=0){ if((third1)%(third2)!=0){ third1=(int)(Math.random()*range); third2=(int)(Math.random()*range); } else break; } else{ third2=(int)(Math.random()*range); } } } if(remain==1){ for(int b=0;;){ if(third2!=0){ if((third1)%(third2)==0){ third1=(int)(Math.random()*range); third2=(int)(Math.random()*range); } else break; } else third2=(int)(Math.random()*range); } } System.out.println(third1+" "+"/"+" "+third2+"="); } } if(j==1&&num==0) {//没有乘除的算法 if(negative==0){ if(c2==0) System.out.println(third1+" "+"+"+" "+third2+"="); if(c2==1) System.out.println(third1+" "+"-"+" "+third2+"="); } if(negative==1){ if(c2==0) System.out.println("-"+third1+" "+"+"+" "+third2+"="); if(c2==1) System.out.println("-"+third1+" "+"-"+" "+third2+"="); } } } } if(bracket==1){ int sjs,zfg; int s; System.out.println("请输入数字数组个数:"); int m=in.nextInt(); System.out.println("请输入字符数组个数:"); int t=in.nextInt(); int ssz[]=new int[m]; //数字数组 char operate[]={‘+‘,‘-‘,‘*‘,‘/‘}; char f[]=new char[t]; //字符数组 for(int p=0;p<number;p++){ sjs=(int)(Math.random()*10+3);//随机生成数字的个数(3-10) zfg=sjs-1;//字符个数等于随机数减一 for( s=0;s<sjs;s++){ ssz[s]=(int)(Math.random()*range);//随机生成数 } for(s=0;s<zfg;s++){ int nu=(int)(Math.random()*3); //产生0-3的随机数来判断字符的+,-,*,/ f[s]=operate[nu]; } f[zfg]=‘=‘; if(zfg%2==0){ //字符个数为偶数,从第二个数开始输出括号 System.out.print(ssz[0]); System.out.print(f[0]); for(s=1;s<zfg;s++){ System.out.print("("); System.out.print(ssz[s]); System.out.print(f[s]); System.out.print(ssz[s+1]); System.out.print(")"); System.out.print(f[s+1]); s=s+1; }System.out.println(); } else{ for(s=0;s<zfg;s++){ System.out.print("("); System.out.print(ssz[s]); System.out.print(f[s]); System.out.print(ssz[s+1]); System.out.print(")"); System.out.print(f[s+1]); s=s+1; }System.out.println(); } } } } }
截图
周活动总结表
姓名:苏月 日期 2016/3/18
|
听课 |
编写代码 |
阅读课本 |
准备考试 |
|
|
日总计 |
周日 |
|
|
|
|
|
|
|
周一 |
100分钟 |
0行 |
0 |
|
|
|
100 |
周二 |
|
57行 |
10 |
|
|
|
67 |
周三 |
|
10行 |
10 |
|
|
|
20 |
周四 |
|
60行 |
30 |
|
|
|
90 |
周五 |
|
90行 |
0 |
|
|
|
90 |
周六 |
|
0行 |
0 |
|
|
|
0 |
周总计 |
100分钟 |
217行 |
40 |
|
|
|
357 |
时间记录日志
学生:苏月 日期:2016/3/18
教师:王建民 课程:软件工程
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
3/14 |
8:00 |
9:50 |
10 |
100 |
上课 |
课间 |
|
|
3/15 |
16:00 |
18:00 |
30 |
90 |
编程序 |
吃饭 |
|
|
3/16 |
15:20 |
17:00 |
30 |
70 |
编程序 |
聊程序 |
|
|
3/17 |
21:00 |
23:30 |
30+10 |
110 |
写程序写进度条 |
吃饭,休息 |
|
|
3/18 |
16:30 |
18:00 |
0 |
90 |
编程序,写进度条,写总结 |
吃饭,看电视,聊天 |
|
|
20:00 |
23:30 |
50 |
160 |
|||||
3/19 |
8:37 |
11:00 |
40 |
117 |
写总结 |
聊天,洗脸 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
缺陷记录日志
学生:苏月 日期:2016/3/18
教员:王建民 程序号:四则运算2
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3/14 |
1 |
|
讨论 |
实现 |
1小时 |
|
描述:在讨论中不知道怎样实现重复的内容和加括号的部分。 |
||||||
3/15 |
2 |
|
编程 |
编译 |
30分钟 |
|
描述:输出不了同个数的算法 |
||||||
3/17 |
3 |
|
设计 |
编译 |
1小时 |
|
描述:在除法的时候漏掉了分母为0的问题 |
||||||
3/18 |
4 |
|
编程 |
编译 |
50分钟 |
|
描述:出现了数组越界的现象 |
个人总结:
在每次的写代码中,①都应该学会一定的分块(就是讲一个特别大项目的按着一定的功能将代码分为好几块来写)否则的话,就会像这次一样,出现很大的混乱情况②而且在每一步的实现中,都应该有很清楚的整理思路③在改错的过程中,我们应该明确错误在那。为什么会错误,这样改错才不会手忙脚乱。③一定要锻炼自己的耐心,这样才能够更加有耐心的去写代码
以上是关于软件工程个人作业02的主要内容,如果未能解决你的问题,请参考以下文章