• 软工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] + "
    ";
    			}
    			System.out.println(w);
    			
    		}else if(mexit==1) {	//判断是否有-m出现,限定输出
    			w = charNum + "
    " + wordCount + "
    " + ValidLine + "
    ";
    			for (int i = 0; i < WGFreq.length; i++) {
    				w = w + WGFreq[i] + "
    ";
    			}
    			System.out.println(w);
    			
    		}else {					//都没有限制直接全部输出
    			w = charNum + "
    " + wordCount + "
    " + ValidLine + "
    ";
    			for (int i = 0; i < wFreq.length; i++) {
    				w = w + wFreq[i] + "
    ";
    			}
    			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

    7.设计单元测试,回归测试,GUI程序设计

    跳转到陈晓菲

  • 相关阅读:
    java读写文本文件
    django学习<二>:连接数据库
    【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象
    【MongoDB】C#中的Mongo数据类型转换
    【MongoDB】 基于C#官方驱动2.2版的封装类
    【Python】 属性的 get 与 set 方法
    【基础知识】UML基础
    【C#】 知乎用户网络爬虫
    【C#】MVC项目中搭建WebSocket服务器
    【MongoDB】 Windows 安装
  • 原文地址:https://www.cnblogs.com/nzlj/p/9750731.html
Copyright © 2020-2023  润新知