标签:依赖 就是 i++ 除了 csdn 扩展 ade 博客 编码
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
? Estimate | ? 估计这个任务需要多少时间 | 600 | 900 |
Development | 开发 | ||
? Analysis | ? 需求分析(包括学习新技术) | 20 | 30 |
? Design Spec | ? 生成设计文档 | 20 | 30 |
? Design Review | ? 设计复审 | 20 | 30 |
? Coding Standard | ? 代码规范 (为目前的开发制定合适的规范) | 20 | 40 |
? Design | ? 具体设计 | 30 | 40 |
? Coding | ? 具体编码 | 400 | 600 |
? Code Review | ? 代码复审 | 30 | 40 |
? Test | ? 测试(自我测试,修改代码,提交修改) | 20 | 30 |
Reporting | 报告 | ||
? Test Repor | ? 测试报告 | 10 | 20 |
? Size Measurement | ? 计算工作量 | 10 | 10 |
? Postmortem & Process Improvement Plan | ? 事后总结, 并提出过程改进计划 | 20 | 30 |
合计 | 600 | 900 |
需求分析步骤:
由于上课时老师讲了SOLID原则,让我们灵机一动,发现第一阶段的代码不适合扩展,于是便重新构思了一下。
import java.util.Locale;
import java.util.ResourceBundle;
public abstract class Language {
public abstract void Print(String s);
}
public class Chinese extends Language{
public Chinese(){}
public void Print(String s){
Locale locale1 = new Locale("zh","CN");
ResourceBundle res1 = ResourceBundle.getBundle("zh_CN",locale1);
System.out.print(res1.getString(s));
}
}
public class English extends Language{
public English(){}
public void Print(String s) {
Locale locale2 = new Locale("en", "US");
ResourceBundle res2 = ResourceBundle.getBundle("en_US", locale2);
System.out.print(res2.getString(s));
}
}
public class TChinese extends Language {
public TChinese(){}
public void Print(String s){
Locale locale3 = new Locale("zh","TW");
ResourceBundle res3 = ResourceBundle.getBundle("zh_TW",locale3);
System.out.print(res3.getString(s));
}
}
注:此处代码是为了实现程序的多语言切换(国际化),软件实现国际化,需具备以下两个特征:
1、对于程序中固定使用的文本元素,例如菜单栏、导航条等中使用的文本元素、或错误提示信息,状态信息等,需要根据来访者的地区和国家,选择不同语言的文本为之服务。
2、对于程序动态产生的数据,例如(日期,货币等),软件应能根据当前所在的国家或地区的文化习惯进行显示。
public void Question2(int n,int stage,int grade,String Lan) { //产生真分数
String k = "";
String r = "";
for(int i=1;i<=n;i++) {
if(Lan.equals("中文"))
language.中文("c");
else if(Lan.equals("英文"))
language.英文("c");
else
language.繁体("c");
System.out.println(i+":");
int choice = op.RandomNum(3) + 1; //随机产生运算符号的个数
int count = 0;
String fraction = "";
for (int j = 1; j <= choice + 1; j++) { //产生题目,一共应该2*choice+1个元素
int a = num.RandomNum(10) + 1;
int b = num.RandomNum(10) + 1;
int gcd = GCD(a, b);
if (gcd == a) fraction = "1"; //分子分母相同
else {
if (gcd != 1) { //可约分
a = a / gcd;
b = b / gcd;
}
if (a < b) fraction = a + "/" + b;
else fraction = b + "/" + a;
}
s = s + fraction; //产生十以内的个数字
if (count < choice) {
s = s + " " + op.RandomChar(4) + " "; //在原基础上再产生字符
count++;
}
}
s = op.RandomBranket(s,choice);
k = Key.Key1(s);
while(k.equals("")){
choice = op.RandomNum(3) + 1; //随机产生运算符号的个数
count = 0;
fraction = "";
for (int j = 1; j <= choice + 1; j++) { //产生题目,一共应该2*choice+1个元素
int a = num.RandomNum(10) + 1;
int b = num.RandomNum(10) + 1;
int gcd = GCD(a, b);
if (gcd == a) fraction = "1"; //分子分母相同
else {
if (gcd != 1) { //可约分
a = a / gcd;
b = b / gcd;
}
if (a < b) fraction = a + "/" + b;
else fraction = b + "/" + a;
}
s = s + fraction; //产生十以内的个数字
if (count < choice) {
s = s + " " + op.RandomChar(4) + " "; //在原基础上再产生字符
count++;
}
}
s = op.RandomBranket(s,choice);
k = Key.Key1(s);
}
注:这里是产生真分数,真分数的难点是在约分,那么约分就要求分子分母的最大公因子,下面是求最大公因子的代码。
public static int GCD(int a,int b){
int m = a;
int n = b;
while (m != n) {
if (m > n)
m -= n;
else
n -= m;
}
return m;
}
我的小伙伴实在是太给力了!!!她的思想不断更新,一直在完善着我们的程序,让我们的程序一步步的接近实用阶段,虽然我们经过了一波好几折,但在这个过程中,我只是负责帮她梳理一下思路,给她一些建议和我的想法,然后她便能很快的将我们的想法构思出来,佩服!佩服!
在本次结对过程中,由于我的小伙伴很给力,以至于我们这次的程序比较顺利的完成了,而且也完成的比较好,这样的一个程序一个人是无法写出来的,即使写出来也会漏洞百出,这就让我看到了结对学习的重要性,两个人的思想要比一个人的宽泛很多。下面来总结一下在这个过程中我学到的知识:
标签:依赖 就是 i++ 除了 csdn 扩展 ade 博客 编码
原文地址:https://www.cnblogs.com/wjs123456/p/10697335.html