• 软件工程作业3


    1、要求地址

    2.PSP表格

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

    3.基本思路:

    根据题目的要求,首先需要在对已经建好或导入的文档进行读取,这里就需要有文件读取类,对文件中的所有进行读取。

    文件读取之后,将相应的字符、单词、行数等进行计数,并在判断是否为单词后,利用Map实现对单词的词频统计,根据题目中要求进行计算。

    对统计出来的数据输出。

    4.设计实现过程。

    代码组织:

    1.WordCount类:对字符数、单词数、行数等进行统计。

    • countChar();统计字符数
    • countWords();统计单词数
    • countLine();统计行数
    • WordFre();实现单词词频统计并出现次数从高到低排列

    2.FileRead类:导入需要WordCount的文件,进行文件读取等操作

    • FileOutput();文件读取
    • FileInput();文件写入

    3.Main类:实现数据的输出和文件路径的输入,并将WordCount类和FileInput类调用,实现功能。:

    5、主要函数

    • countChar() : 统计字符数量
    public static int countChar(String str) { //统计字符数量
    		char s;
    		int CharSum=0;
    		for (int i = 0; i < str.length(); i++) {
    			s=str.charAt(i);
    			if (s>=32 && s<=126 || s=='
    ' || s=='
    ' || s=='	') {
    				CharSum++;
    				
    			}
    		}
    		return CharSum;
    	}
    
    • countWords():统计单词数量
    	public  int countWords(String[] str) { //统计单词数量
    		String str1=text;
    		int WordsSum=0;
    		String[] words=str1.split("\s*[^0-9a-zA-Z]"); //调用正则表达式中spilt()方法来切分字段,将字符串中的单词提取出来
    		for(String s:words) {
    			if(s.matches("[a-zA-Z{4,}[z-zA-Z0-0]*")) { //调用matchs方法来判断这个字符串是否在给定的正则表达式匹配
    				WordsSum++;
    				
    		}
    		}
    		return WordsSum;
    		
    		
    	}
    	
    
    • countLine :统计行数
    	public  static int countLine(String[] str) { //统计行数
    		int LineSum=0;
    		for (int i = 0; i < str.length; i++) {
    			while(str[i]!=null) {
    				if(str[i].trim().length()==0 || str[i].trim().equals("")) {
    					continue;   //调用trim()方法将头尾空格去掉,来判断行数
    				}
    				LineSum++;
    			}
    		}
    		return LineSum;
    	}
    
    • WordFre :计算全文的单词词频:
    	public List<Entry<String, Integer>> WordFre()
    	{
    		WordFre= new HashMap<String, Integer>();
    		String t = text;
    	
    		String[] words = t.split("\s"); // 将字符串进行分割
    		
    		for (int i = 0; i < words.length; i++) {
    				if (isWord(words[i])) { // 判断是否为单词,调用isWord函数
    					
    					words[i] = words[i].trim().toLowerCase();//将大写字母变成小写字母
    					
    					
    					if (WordFre.get(words[i]) == null) { // 判断之前Map中是否出现过该字符串
    						
    						
    						WordFre.put(words[i], 1);// 如果为新单词,放入map中作为key值,value设为1
    						
    					} else
    						
    						WordFre.put(words[i], WordFre.get(words[i]) + 1);//如果出现过的单词则将value值+1
    				}
    		}
    
    • 将词频排序用list储存:
    List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(WordFre.entrySet());//用list列表储存键值
    		
    		list.sort(new Comparator<Map.Entry<String, Integer>>() {//对list排序
    			
    			@Override
    			
    			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {	
    				
    				if (o1.getValue() == o2.getValue()) {//判断词频是否相等
    					
    					return o1.getKey().compareTo(o2.getKey());//字典序排列
    				}
    				return o2.getValue() - o1.getValue();//降序排列
    			}
    
    		});
    		
    		return list;
    

    5、单元测试

    6、效能分析




    7、结合在构建之法中学习到的相关内容与结对项目的实践经历,描述结对的感受,是否1+1>2?

    • 实验感受:在这次实验中,由于有上一次的饰演的基础,对原来的代码有了优化,但对于GUI界面的实现,还没有能过够很好的实现,对于这方面的知识还不能很好的实现,这是这次实验中遇到的较大的困难,我会在后面将其补上,在之前所想要实现的功能和自己的能力相悖,所以导致后面界面不能够完全实现,但我一定会克服这一困难。
    • 在这次的结对编程中,由于在之前的结对经验不足,在这次实验中并能很好的分配其中的任务,让这次试验一开始出现了较大的困难,沟通方面出现了一些歧义,不够在后来的实验中慢慢的能够克服,让实验走向正轨,这次实验并没有完成的很好,实际上只能达到1+1=0.9的程度,我们会在后面的实验中做到>2的!
  • 相关阅读:
    Spring 3.0 发布候选版 3 已经可用!
    NetBeans IDE 6.8 正式版发布!
    250g铜版纸 打印扑克?
    一键安装python
    京东商城副总裁李曦:大数据和电子商务_行业信息化_IT商业新闻网
    9.29的北京-》杭州的票怎么现在网上还没有可以预订呢。。。
    运动服火鸟2代三叶草运动服SWIM CLUB 1976款游泳秋装男款海马淘宝网
    无锡巨人网络科技有限公司简介20120411
    李国庆送的国旗太小了,没动力买东西
    虽然不信god,但是技术上还是算是有信yan的人吧
  • 原文地址:https://www.cnblogs.com/helloLV/p/9751659.html
Copyright © 2020-2023  润新知