软工16作业3

软件工程 作业三

Task1.项目地址

Task2.PSP表格

PSP2.1 结对开发流程 预估耗费时间(分钟) 实际耗费时间(分钟)
Planning 计划 10 5
· Estimate 明确需求和其他相关因素,估计每个阶段的时间成本 5 0
Development 开发 150 200
· Analysis 需求分析 (包括学习新技术) 10 15
· Design Spec 生成设计文档 10 0
· Design Review 设计复审 10 5
· Coding Standard 代码规范 0 0
· Design 具体设计 10 20
· Coding 具体编码 100 120
· Code Review 代码复审 10 5
· Test 测试(自我测试,修改代码,提交修改) 10 25
Reporting 报告 10 6
· 测试报告 5 2
· 计算工作量 5 2
· 并提出过程改进计划 0 0

Task3.题目解析

第一步,增加新功能

  • 词组统计:能统计文件夹中指定长度的词组的词频
  • 自定义输出:能输出用户指定的前n多的单词与其数量

思路:自定义输出的话题目与上次前十频率单词相仿所以改for循环次数即可
词组统计的话根据输入长度用+字符串拼接,然后统计词频和单词和自定义输出方法相仿

 for(int y=0;y<k;y++){
			if(y==0)
			group=group+text2.get(h);
			else
			group=group+" "+text2.get(h+y);
		}

第二步,增加GUI

在此用NetBeans进行页面设计,在关键代码中展示

Task4.关键代码

GUI关键函数


public static  String fileChooser() throws FileNotFoundException, UnsupportedEncodingException, IOException {
		JFileChooser chooser = new JFileChooser();
                 List<String> list = new ArrayList<String>();
                   String line = null;
	    FileNameExtensionFilter filter = new FileNameExtensionFilter(
	        "JPG & GIF Images", "jpg", "gif","txt");
	    //设置文件类型
	    chooser.setFileFilter(filter);
	    //打开选择器面板
	    int returnVal = chooser.showOpenDialog(new JPanel());  
                      //保存文件从这里入手,输出的是文件名
	    if(returnVal == JFileChooser.APPROVE_OPTION) {
	       System.out.println("你打开的文件是: " +
	            chooser.getSelectedFile().getName()+chooser.getSelectedFile());
                
                 if (chooser.getSelectedFile() == null || !chooser.getSelectedFile().exists()) {
              return null;
        }
       
        String encoding = "UTF-8";
        InputStreamReader read = new InputStreamReader(new FileInputStream(chooser.getSelectedFile()),
                encoding);
        BufferedReader br = new BufferedReader(read);
       line =chooser.getSelectedFile().toString();
       
        br.close();
        read.close();
       return line;
	    }
        return line;
              
	}

词频单词构造


for(int h=0;h<text2.size()-k+1;h++){
		String group ="";
		for(int y=0;y<k;y++){
			if(y==0)
			group=group+text2.get(h);
			else
			group=group+" "+text2.get(h+y);//长度循环拼接
		}
			
		text3.add(group);
	}
	  Map<String, Integer> map = new TreeMap<String, Integer>();
		for(String word:text3)
		 {if(map.get(word) != null){ 
            map.put(word,map.get(word) + 1);  //相同放入map并计数
        }else{  
            map.put(word,1);  
        }  

		 }

Task5.运行结果

Task6.回归测试

 @Test
    public void testWordnumber() {
        assertEquals(0, jiekou.wordnumber("C:/Users/Administrator/Desktop/c1.txt"));//空文件
        assertEquals(14, jiekou.wordnumber("C:/Users/Administrator/Desktop/c2.txt"));//14个单词的纯英文
        assertEquals(160, jiekou.wordnumber("C:/Users/Administrator/Desktop/c3.txt"));//160个单词的英文数字混合
    }

	@Test
	public void testbytenumber() {
		
		assertEquals(0, jiekou.bytenumber("C:/Users/Administrator/Desktop/c1.txt"));
		assertEquals(136, jiekou.bytenumber("C:/Users/Administrator/Desktop/c2.txt"));
		assertEquals(1505, jiekou.bytenumber("C:/Users/Administrator/Desktop/c3.txt"));
		
	}
	@Test
	public void testout() {
		
		
		Map<String, Integer> map2 = new HashMap<String, Integer>();
		Map<String, Integer> map3 = new HashMap<String, Integer>();
		map2.put("xmkczui84",5);
        map2.put("agisckxvn",4);
        map3.put("puma",9);
        map3.put("from",4);
        List<Map.Entry<String, Integer>> map = new ArrayList<Map.Entry<String, Integer>>(  
	             map2.entrySet());  
        List<Map.Entry<String, Integer>> map1 =  new ArrayList<Map.Entry<String, Integer>>(  
	             map3.entrySet());  
		assertEquals(map, jiekou.out("C:/Users/Administrator/Desktop/c2.txt", 2));
		assertEquals(map1, jiekou.out("C:/Users/Administrator/Desktop/c3.txt", 2));
		
	}
	@Test
	public void testoutg() {
		
		
		
		Map<String, Integer> map3 = new TreeMap<String, Integer>();
		Map<String, Integer> map2 = new TreeMap<String, Integer>();
        map3.put("accumulate experts from felt obliged",1);
        map2.put("america when reports came into",1);
      
        List<Map.Entry<String, Integer>> map1 =  new ArrayList<Map.Entry<String, Integer>>(  
	             map3.entrySet());  
	
		assertEquals(map3, "{"+jiekou.outg("C:/Users/Administrator/Desktop/c3.txt", 5).get(0)+"}");
		assertEquals(map2, "{"+jiekou.outg("C:/Users/Administrator/Desktop/c3.txt", 5).get(1)+"}");
		
	}

Task7.码云提交

Task8.实验心得
此次实验熟悉了一些java的新语法,并且领会到合作开发项目的必要性,互相提问题互相对代码提出质疑对开发项目好处良多。

posted on 2018-10-08 19:40  骚的一批  阅读(141)  评论(1编辑  收藏  举报

导航