zoukankan      html  css  js  c++  java
  • 201671030126赵佳平《英文文本统计分析》结对项目报告

    信息表

    项目 内容
    次作业所属课程 软件工程
    作业要求 作业要求内容
    课程学习目标 熟悉软件开发整体流程,提升自身能力
    本次作业在哪个具体方面帮助我们实现目标 第一次体验一个完整的工程

    任务一

    • 博客地址
    • 点评内容:整体博文的结构很好,但是一些图片的布局有一点不好,另外在菜单中要将具体实现的功能体现出来,不然不知道功能是否实现或者不清楚菜单的选择;最后应该要注意博文中的错别字。表格和代码的插入值得学习,使得整体界面更加美观。
    • 点评心得:阅读完这位同学的博文之后,让我意识到我的博文整体还不是很美观,应该更少地使用截图的形式。

    任务二

    • 源码地址
    • 1.需求分析
      (1)实验2要求的功能;
      (2)单词频数可视化柱状图
      (3)统计该文本行数及字符数;
      (4)各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
      (5)可处理任意用户导入的任意英文文本;
      (6)人机交互界面要求GUI界面(WEB页面、APP页面都可);
      (7)附加分功能:统计文本中除冠词、代词、介词之外的高频词;
      (8)附加分功能:统计前10个两个单词组成的词组频率。
    • 2.软件设计
      项目主要有3个包,2个登陆界面的类(loginFrame.java,loginPane.java),1个主函数Main,3个功能实现类(可视化柱状图类chart.java、统计文本中除冠词、代词、介词之外的高频词类Highword.java、其他要求功能类function.java),2个主运行界面的类(firstFrame.java,firstPanel.java)
    • 3.核心代码
      读入文件并排序
            String path = firstPanel.textField.getText();
    		try {
    			FileInputStream fis = new FileInputStream(path);
    			BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    			String temp="";
    			long startTime=System.currentTimeMillis();
    			startTime1=System.currentTimeMillis();
    			while((temp = br.readLine())!=null)
    			{
    				stmplength1+=temp.length();
    				String[] str = temp.split("([^a-zA-Z])"); //过滤出只含有字母的
    				
    				stmplength++;
    				
    				for(int i=0;i<str.length;i++)
    				{
    					String word = str[i].trim();
    					if(word.length()!=0)    //去除长度为0的行
    						staff.put(word, staff.getOrDefault(word, 0)+1);
    				}
    			}
    			br.close();
    			endTime1=System.currentTimeMillis();
    			
    	        //System.out.println("Total time is:"+ (endTime-startTime) );
    			rank();//按值排序
    			long endTime=System.currentTimeMillis();
    			//System.out.println("文件读入成功!请继续...");
    			JOptionPane.showMessageDialog(null, "文件读入成功! 
     耗时:"+(endTime-startTime)+"ms");//提示登录成功
    		}catch(Exception e) {
    			//System.out.println("文件不存在!!!请重新确认!");
    			JOptionPane.showMessageDialog(null, "文件读入出错!");
    		}
    

    按值排序

    public static void rank()//按值排序
    	{
    		Set<Entry<String,Integer>> mapEntries = staff.entrySet();
    		
    		aList = new ArrayList<Entry<String,Integer>>(mapEntries);
    		
    		Collections.sort(aList, new Comparator<Entry<String,Integer>>() {
    			 
                @Override
                public int compare(Entry<String, Integer> ele1,
                        Entry<String, Integer> ele2) {
     
                    return ele2.getValue().compareTo(ele1.getValue());
                }
            });
     
           /* for(Entry<String,Integer> entry: aList) {
            	System.out.println(entry.getKey() + " : " + entry.getValue());
            } */
    	}
    

    统计文本中除冠词、代词、介词之外的高频词

    for(int i=0;i<k;i++)//10
    				{
    					boolean ok=false;
    					if(flag)
    						textArea.append(function.aList.get(i).getKey()+"	"+function.aList.get(i).getValue()+"
    ");
    					else
    					{
    						for(int j=0;j<function.stop.size();j++)
    						{
    							if(function.aList.get(i).getKey().toLowerCase().equals(function.stop.get(j)))
    							{
    								k++;
    								ok=true;
    								break;
    							}
    						}
    						if(!ok)
    							textArea.append(function.aList.get(i).getKey()+"	"+function.aList.get(i).getValue()+"
    ");
    					}
    				}
    
    • 4.运行程序
      登陆(nwnu,2019)

      读入文件


      主运行界面

      指定单词词频统计及柱状图


      前k个高频词汇统计

      统计文本中除冠词、代词、介词之外的高频词

      输出到文件


      统计行数及字符数

    • 5.结对编程

    • 6.PSP

      |任务内容|计划完成时间(min)|实际完成时间(min)|
      |:--|:--|:--|
      |计划|10|8|
      | 估计这个任务需要多长时间,并规划大致工作步骤|5|6|
      |开发|110|130|
      | 需求分析(包括学习新技术)|8|6|
      |生成设计文档|5|8|
      |设计复审(和同事审核设计文档)|5|4|
      |代码规范(为当前的开发制定合适的规范)|4|3|
      |具体设计|15|10|
      |具体编码|150|200|
      |代码复审|5|6|
      |测试(自我测试、修改代码、提交修改)|15|12|
      |报告|9|5|
      |测试报告|5|3|
      |计算工作量|3|2|
      |事后总结,并提出工程改进计划|5|3|

    • 7.小结感受
      通过此次的结对项目编程,让我感受到了合作的利与弊,诚然,合作编程能提升整个过程的效率,但如果没有好的交流共通,加上对彼此代码风格的不适应,反而会降低团队的效率。

  • 相关阅读:
    Android开发 使用 adb logcat 显示 Android 日志
    【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
    C语言 结构体相关 函数 指针 数组
    C语言 命令行参数 函数指针 gdb调试
    C语言 指针数组 多维数组
    Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
    C语言 内存分配 地址 指针 数组 参数 实例解析
    CRT 环境变量注意事项
    hadoop 输出文件 key val 分隔符
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections
  • 原文地址:https://www.cnblogs.com/qiuwuji/p/10645902.html
Copyright © 2011-2022 走看看