软工3
1.在文章开头给出博客作业要求地址,码云项目地址。
2.给出结对小伙伴的学号、博客地址,结对项目的码云地址
陈晓菲 201621123031 http://www.cnblogs.com/cxf1404445126/p/9750858.html
韩烨 201621044079 http://www.cnblogs.com/HYSOUL/p/9751062.html
2.给出个人的PSP表格。
PSP2.1 | 个人开发流程 | 预估耗费时间(分钟) | 实际耗费时间(分钟) |
---|---|---|---|
Planning | 计划 | 5 | 3 |
· Estimate | 明确需求和其他相关因素,估计每个阶段的时间成本 | 5 | 3 |
Development | 开发 | 274 | 308 |
· Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
· Design Spec | 生成设计文档 | 5 | 2 |
· Design Review | 设计复审 | 4 | 2 |
· Coding Standard | 代码规范 | 5 | 5 |
· Design | 具体设计 | 10 | 20 |
· Coding | 具体编码 | 120 | 180 |
· Code Review | 代码复审 | 10 | 9 |
· Test | 测试(自我测试,修改代码,提交修改) | 60 | 30 |
Reporting | 报告 | 40 | 65 |
· | 测试报告 | 30 | 60 |
· | 计算工作量 | 5 | 2 |
· | 并提出过程改进计划 | 3 | 3 |
3.解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。
我主要是写从命令行得到输入并且判断输入里的要求,调用相应的函数,写的是scdeal文件,之前是只有一个输入所以直接调用数组args[0],后面百度发现命令行输入空格就是每个数组直接隔开,相当于-m 4 -i D:\1.txt放入数组是[-m],[4],[-i],[D:\1.txt],四个数,每次读取判断是-i还是-n还是-m,然后调用不同的处理函数,还需要储存读取到的数组是第几个,他的后一个是需要限制的个数。不过我写完这个函数后才发现实现命令行没用,因为和GUI界面完全不搭嘎,界面不需要这么难看的晦涩难懂的命令,所以这个题目就很有问题。
4.设计实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?单元测试是怎么设计的?
ScDeal是一个处理输入的类
-
初始化函数scDeal()
-
判断输入函数judge()
-
ideal()是-i的处理函数
-
mdeal()是-m的处理函数
-
ndeal()是-n的处理函数
-
odeal()输出到文件函数
judge()判断各自输入然后调用不同的处理函数
5.代码说明。展示出项目关键代码,并解释思路与注释说明。
这段代码是处理输入类ScDeal:
package wCount;
import java.util.List;
import java.util.Map;
import wCount.FileDeal;
import wCount.WordDeal;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class ScDeal {
String[] args; //储存输入的数组
int nexit,mnum; //nexit表示-n设定的输出的单词数量,mnum表示统计的词组长度
int nhappen=0,mexit=0; //nhappen表示-n有触发,mexit表示-m有触发
public String w = ""; //储存输出
public ScDeal(String[] args) { //初始化
this.args=args;
}
public void judge() throws IOException { //判断输入的是-i,-n,-m
for (int i = 0; i < args.length; i++) {
switch(args[i]) {
case "-i":ideal(i);i++;
break;
case "-m":mdeal(i);i++;
break;
case "-n":ndeal(i);i++;
break;
case "-o":odeal(i);i++;
break;
default:
System.out.println("输入错误代码");
break;
}
}
}
public void ideal(int num) throws IOException { //-i主要是读取文件
String file = args[num+1];
FileDeal fd = new FileDeal();
String[] wFreq,WGFreq;
List sortMap,sortGroup;
String text = fd.FileToString(file);
WordDeal wd = new WordDeal(text);
int charNum = wd.getCharCount();
int wordCount = wd.getWordCount();
int ValidLine = wd.getLineCount();
Map<String, Integer> wordFreq = wd.getWordFreq();
Map<String, Integer> wordGroupFreq = wd.getWordGroupFreq(mnum);
sortMap = wd.sortMap(wordFreq);
sortGroup = wd.sortMap(wordGroupFreq);
wFreq = wd.ListToArray(sortMap);
WGFreq = wd.ListToArray(sortGroup);
if(nhappen==1) { //判断是否有-n出现,限定输出
for (int i = 0; i < nexit; i++) {
w = w + wFreq[i] + "\r\n";
}
System.out.println(w);
}else if(mexit==1) { //判断是否有-m出现,限定输出
w = charNum + "\r\n" + wordCount + "\r\n" + ValidLine + "\r\n";
for (int i = 0; i < WGFreq.length; i++) {
w = w + WGFreq[i] + "\r\n";
}
System.out.println(w);
}else { //都没有限制直接全部输出
w = charNum + "\r\n" + wordCount + "\r\n" + ValidLine + "\r\n";
for (int i = 0; i < wFreq.length; i++) {
w = w + wFreq[i] + "\r\n";
}
System.out.println(w);
}
}
public void mdeal(int i) { //判断-m是否出现储存后面的数字
mnum=Integer.parseInt(args[i+1]);
mexit=1;
}
public void ndeal(int i) { //判断-n是否出现储存后面的数字
nexit=Integer.parseInt(args[i+1]);
nhappen=1;
}
public void odeal(int i) throws IOException { //-o的话直接把w里的储存到txt文档里
String file = args[i+1];
File writename = new File(file);
writename.createNewFile();
BufferedWriter out = new BufferedWriter(new FileWriter(writename));
out.write(w);
out.flush();
out.close();
}
}
6.结合在构建之法中学习到的相关内容与结对项目的实践经历,描述结对的感受,是否1+1>2?
我觉得还是要看哪些部分,有些部分我们有不同的见解就会导致争吵,互相想要的东西不一样,做出来的东西就不一样,这个时候1+1<2,但是像这个项目别人做完之后我就会发现噢原来我们两个在做的是不一样的东西,其实完全可以不用互相联系,我写不写完她都能继续写,而且也能完成,其实成果是1+1>2