201671030117孙欢灵《英文文本统计分析》结对项目报告

任务1

博文评价

博文连接html

评论要点 点评内容
博文结构 博文的整个结构清楚,阅读起来流畅清晰。
博文内容 每一个部分的内容都比较完善,不足的就是应该区分需求分析与功能设计,再是在粘贴主要代码时应该选择本身的关键代码或是区别于他人的代码
博文结构与PSP中“任务内容”列的关系 总的来讲整个博文结构与PSP内容列中的内容都比较符合,但在PSP中的编码时间较大的区别于其余阶段的时间,但在博文中对这个阶段的问题没有过多的介绍。
PSP中“计划共完成须要的时间”与“实际完成须要的时间”两列数据的差别化分析与缘由探究 从表中能够看出致使项目计划共完成须要的时间与实际完成须要的时间有出入主要是由于对以前学习的知识没有常常练习,时间一长就生疏了。再是编写代码的能力应该更进一步的提升。

点评心得:通过阅读同伴的博文,我发现每一个人的博文都有其出彩的地方。在从此的学习中我应该多加学习别人的长处,弥补本身的不足。git

软件评价

代码连接github

评论要点 点评内容
软件结构 软件结构比较清楚,函数之间的耦合度低。
代码规范 代码的规范性好,可以让读者一目了然。
功能实现 功能实现的部分略有瑕疵。基本的功能也都实现了,但在柱状图的部分没有用可视化界面显示,比较大的是我就是在词频统计的时候没有辨别出字母和符号的区别,因此在词频统计时会将符号错当单词统计。
人机交互 这部分的功能还有待改进。但愿可以进一步改进代码,更好的实现人机交互。

点评心得:经过和同伴代码的比较,我发现本身的代码还有不少的缺点,例如模块的划分不够清楚,代码的规范程度也不够好,从此应该多家改进。编程

任务2

a.  需求分析 
           -实验2要求的功能
           -单词频数可视化柱状图
          -统计该文本行数及字符数
          -各类统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
          -可处理任意用户导入的任意英文文本
          -人机交互界面要求GUI界面(WEB页面、APP页面均可)
          -附加分功能:统计文本中除冠词、代词、介词以外的高频词
          -附加分功能:统计前10个两个单词组成的词组频率。

      b.  软件设计:使用类图

c.  核心功能代码展现 :展现核心功能代码
              /*查找并读取文本*/    
``
     okbt.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              if(e.getSource()==okbt) {
                  String src = t1.getText();
                  File file =new File(src);
                  FileReader reader = null;
                try {
                    reader = new FileReader(src);
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                  if(!file.exists())
                    {
                      JOptionPane.showConfirmDialog(null, "请输入正确的文件名","查找结果",JOptionPane.DEFAULT_OPTION);
                    }
                  BufferedReader br = new BufferedReader(reader);
                  String readline = null;
                    int row=0;
                    int wordnumber=0;
                    long startTime = System.currentTimeMillis();    //获取开始时间    
                    ArrayList<String> lists = new ArrayList<String>(); 
                    try {
                        while ((readline = br.readLine()) != null)
                        {
                            String[] wordsArray=readline.split("[^a-zA-Z]");
                            for(String word :wordsArray) 
                            {
                                if(word.length() != 0)
                                {  
                                    word=word.toLowerCase();
                                    lists.add(word);  
                                }
                            }
                            row++;  
                        }
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                      System.out.println(row); 
                    try {
                        br.close();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }

                    wordMap=new HashMap<String,Integer>();
                          for (String l : lists) 
                          {  
                            if(wordMap.get(l) != null)
                            {  
                                wordMap.put(l,wordMap.get(l) + 1);  
                            }else
                            {  
                                wordMap.put(l,1);  
                            }  
                            wordnumber++;
                        }
                          long endTime = System.currentTimeMillis();    //获取结束时间  
                          JOptionPane.showConfirmDialog(t1, "文本统计完成!"+"\n 文本统计所消耗时间:"+ (endTime - startTime)+"\n 文本行数有:"+row+" 单词数:"+wordnumber,"结果",JOptionPane.DEFAULT_OPTION);
              }
          }
      });
          lab1.addMouseListener(new MouseListener(){
        public void mouseClicked(MouseEvent e) {
            // 处理鼠标点击
            JFrame outframe=new JFrame();
            outframe.setBounds(50, 50, 500, 400);
            JPanel outp=new JPanel();
            outp.setBounds(50, 50,100,100);
            outframe.setLayout(new GridLayout(3,5));
            JTextField inputField = new JTextField(10);
            JLabel inputLab=new JLabel ("请输入要查询的单词: ");
            //inputLab.setBounds(20, 80, 150, 50);
            //inputField.setBounds(20, 80, 150, 50);
            JButton insertButton = new JButton("肯定");
            outp.add(inputLab);
            outp.add(inputField);   
            outp.add(insertButton);
            outframe.add(outp);
            JTextArea textArea= new JTextArea(TEXTAREA_ROWS,TEXTAREA_COLUMNS);
            JPanel southPanel=new JPanel();
            southPanel.setBounds(50, 50,200,200);
            southPanel.add(textArea);
            outframe.add(southPanel,BorderLayout.CENTER);
            outframe.setVisible(true);
            insertButton.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      if(e.getSource()==insertButton) {
                         Wordcount wc = new Wordcount();
                         String s= new String(inputField.getText());
                         wc.count(wordMap,s,outp,outframe,textArea);
                      }
                  }
              });
        }


      d.   程序运行:程序运行时每一个功能界面截图
                         首页面:

读取任意文件(包括统计文本行数,字符数,文本统计时间):

查找单词词频:

查看高频单词词频:

查看单词柱状图:

按序存储单词到result.txt

####附加功能:统计文本中除冠词、代词、介词以外的高频词

退出程序:

e.   描述结对的过程,提供两人在讨论、细化和编程时的结对照片(非摆拍)

f.  提供这次结对做业的PSP。
任务内容 计划完成须要的时间(min) 实际完成须要的时间(main)
计划 30 25
估计这个任务须要多少时间,并规划大体工做步骤 40 30
开发 240 300
需求分析 30 25
生成设计文档 60 50
设计复审 (和同窗审核设计文档) 20 25
代码规范 (为目前的开发制定合适的规范) 10 15
具体设计 30 30
具体编码 300 350
代码复审 20 25
测试(自我测试,修改代码,提交修改) 20 15
报告 30 45
测试报告 30 25
计算工做量 20 15
过后总结 ,并提出过程改进计划 60 45
g. 小结感觉:通过这次和同窗一块儿合做开发同一个软件,我发现两人合做真的可以带来1+1>2的效果,由于每一个人都有本身擅长的方面,因此经过合做可以实现互补,并且也可以学习到他人身上的优势和长处。目前的项目是两我的,但在之后的学习中不免会遇到须要更多人合做的项目。而这次合做也可以培养咱们和他人合做的能力。

任务3

项目 内容
软件工程 任课教师博客主页连接
(1)掌握软件项目我的开发流程。(2)掌握Github上发布软件项目的操做方法。 做业连接地址
课程学习目标:学会团对合做,提升自身编程能力。 熟悉软件开发总体流程,提高自身能力
本次做业在哪一个具体方面帮助咱们实现目标:本次做业能够帮助咱们如何与同伴合做开发一个项目,也可让咱们在与同伴相处的过程当中互相学习对方的长处和优势 第一次体验一个完整的工程
相关文章
相关标签/搜索