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上發佈軟件項目的操做方法。 做業連接地址
課程學習目標:學會團對合做,提升自身編程能力。 熟悉軟件開發總體流程,提高自身能力
本次做業在哪一個具體方面幫助咱們實現目標:本次做業能夠幫助咱們如何與同伴合做開發一個項目,也可讓咱們在與同伴相處的過程當中互相學習對方的長處和優勢 第一次體驗一個完整的工程
相關文章
相關標籤/搜索