一.设计思路
1.输入一个整数m,用于控制题目数量
2.随机生成一个整数m1,用于控制是加减法还是加减乘除法
3.输入一个整数m2,用于控制生成随机数值的范围
4.随机生成一个2-9之间的数m4,用来控制参数个数
5.随机生成一个0或1的数,1代表是正数,0代表是负数
6.随机生成一个a,b或a,b,c,d之间的一个字母ch,a代表+,b代表-,c代表*,d代表÷
7.随机产生两个0-m2之间的整数x,y
8.计算这两个随机数的余数n是否是整数
9.如果输出的是0并且n==0,则输出-x/y+ch
10.如果输出的是0但n!=0输出-x+”/”+y+ch
11.如果输出的是1并且n==0,则输出x/y+ch
12.如果输出的是1但n!=0输出x+”/”+y+ch
13.重复步骤4-11,直到循环次m4
14.再随机生成一个0或1的数,1代表是正数,0代表是负数
15.再随机产生两个0-m2之间的整数篇,p,q
16.计算这两个随机数的余数w是否是整数
17.如果输出的是0并且w==0,则输出-p/q=
18.如果输出的是0但w!=0输出-p+”/”+q=
19.如果输出的是1并且w==0,则输出p/q=
20.如果输出的是1但w!=0输出p+”/”+q=
21.在参数之前随机产生前括号,在3*n+2后加后括号,1<n<7
22.for循环,用于排查题目重复
二.源程序代码
package sizeyunsuan; import java.util.*; public class sizeyunsuan { @SuppressWarnings("resource") public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); System.out.print("输入一个整数m,用于控制题目个数:"); int m=in.nextInt(); Scanner input=new Scanner(System.in); System.out.print("输入一个整数m1(2或4),用于控制是否只有加减乘除:"); int m1=input.nextInt(); System.out.print("输入一个整数m2,用于控制随机数值的范围:"); int m2=in.nextInt(); for(int i=0;i<m;i++) { Random rand1=new Random(); int randNum1=rand1.nextInt(7)+2; for(int l=1;l<randNum1;randNum1++) { Random rand2=new Random(); int randNum2=rand2.nextInt(2); if(randNum2==0) System.out.print("("+"-"); if(randNum2!=0) System.out.print("("); Random rand3=new Random(); int randNum3=rand3.nextInt(m2); Random rand4=new Random(); int randNum4=rand4.nextInt(m2-1)+1; int t=randNum3%randNum4; if(t==0) { System.out.print(randNum2/randNum3); } if(t!=0) { System.out.print(randNum2+"/"+randNum3); } char ch=(char)((int)(Math.random()*m1)+97); if(ch=='a') { System.out.print("+"); } if(ch=='b') { System.out.print("-"); } if(ch=='c') { System.out.print("*"); } if(ch=='d') { System.out.print("÷"); } Random rand7=new Random(); int randNum7=rand7.nextInt(2); if(randNum7==0) System.out.print("-"); if(randNum7!=0) System.out.print(""); Random rand5=new Random(); int randNum5=rand5.nextInt(m2); Random rand6=new Random(); int randNum6=rand6.nextInt(m2-1)+1; int p=randNum5%randNum6; if(p==0) System.out.print(randNum5/randNum6); else System.out.print(randNum5+"/"+randNum6); for(int h=0;h<randNum1;h++) { System.out.print(")"); } System.out.println("="); } } } }
三.运行结果截图
四.按照PSP0级的要求记录开发过程中的项目计划日志、时间记录日志、缺陷记录日志
项目计划总结 |
估计程序开发所需时间,包括开始和结束时间,要求“尽可能精确”。 |
整体计划时间 阶段计划时间 |
记录程序开发各个阶段的实际完成时间,并汇总整体时间,确保时间记录日志的准确性,及时发现和维修不准确的时间记录。 |
整体计划时间 阶段计划时间 |
|
按阶段记录所有缺陷,及时发现并补充遗漏缺陷记录 |
注入缺陷数量 排除缺陷数量 |
周活动总结表
姓名:牛俊燕 日期:2016.3.17
日期任务 |
听课 |
编写程序 |
阅读课本 |
日总计 |
周日 |
||||
周一 |
100分钟 |
120分钟 |
90分钟 |
310分钟 |
周二 |
240分钟 |
240分钟 |
||
周三 |
180分钟 |
180分钟 |
||
周四 |
150分钟 |
120分钟 |
270分钟 |
|
周五 |
||||
周六 |
180分钟 |
180分钟 |
||
周总计 |
100分钟 |
870分钟 |
210分钟 |
1180分钟 |
时间记录日志 |
记录开发任务的开始和结束开始时间,中断时间及净时间。并说明中断的原因 |
项目任务 所处阶段 开始时间 结束时间 中断时间 净时间 备注(说明中断原因) |
学生:牛俊燕 日期:3/17/2016
教师:王建民 课程:软件工程概论
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3/14 |
8:00 |
9:50 |
10分钟 |
100分钟 |
听课 |
上课 |
14:00 |
16:00 |
120分钟 |
编程序 |
作业2 |
||
17:30 |
19:00 |
90分钟 |
看书 |
有关PHP |
||
3/15 |
16:00 |
17:00 |
60分钟 |
讨论 |
作业2 |
|
18:00 |
21:00 |
180分钟 |
编程序 |
作业2 |
||
3/16 |
15:20 |
18:30 |
10分钟 |
180分钟 |
编程序 |
作业2 |
3/17 |
16:30 |
19:00 |
150分钟 |
编程序 |
作业2 |
|
19:20 |
21:30 |
10分钟 |
120分钟 |
看书 |
构建之法 |
|
3/19 |
8:00 |
11:30 |
30分钟 |
180分钟 |
写总结 |
精读,进度条等 |
缺陷记录日志示例
学生:牛俊燕 日期:3/18/2016
教员:王建民老师 程序号:2
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3/14 |
1 |
19 |
编码 |
编译 |
20min |
|
描述:随机生成数的范围有错误 |
||||||
2 |
29 |
编码 |
编译 |
5min |
||
描述:随机生成数的类型强制转换有错误 |
||||||
3/15 |
3 |
31 |
编码 |
编译 |
10min |
|
描述:if语句中不能用随机生成数 |
||||||
3/16 |
4 |
84 |
编码 |
编译 |
30min |
|
描述:控制一个计算式的参数个数的for循环语句的第二个花括号的位置错误 |
||||||
3/17 |
5 |
32 |
编码 |
编译 |
10min |
|
描述:随机生成括号,括号匹配有错误 |
||||||
6 |
110 |
设计 |
编译 |
90min |
||
描述:题目的查重的思路有问题 |
||||||
3/19 |
7 |
110 |
编码 |
编译 |
120min |
|
描述:题目的查重的代码有问题,实现不了查重 |