項目 | 內容 |
---|---|
做業所屬課程 | http://www.cnblogs.com/nwnu-daizh/ |
做業要求 | http://www.javashuo.com/article/p-bjcswxqf-ma.html |
課程學習目標 | 體驗軟件項目開發中的兩人合做,練習結對編程(Pair programming)。掌握Github上增量發佈軟件的操做方法。 |
在哪一個具體方面幫助咱們實現目標 | 可以在同窗之間更好的進行合做與交流 |
本次項目源代碼 | https://github.com/Lxiaoxue/Work |
項目 | 內容 |
---|---|
點評做業的博客 | http://www.javashuo.com/article/p-thsjdlbp-gx.html |
github連接地址 | https://github.com/SHL0/Word-Count |
博文評論內容: | 總體來講寫的挺好,功能方面也都基本實現了。在按字典排序寫入result.txt文件功能實現的不錯,寫入的很整齊。可是在查詢單詞這個功上還能夠進行優化,連續輸入不一樣的單詞一次性查詢。還有就是能夠學習一下在博文中如何使用表格。繼續努力! 在代碼方面,代碼寫的很規範,能容易理解,每一個類和函數都有註釋,是值得學習的地方。但願繼續努力。 |
點評心得: | 在看了她的博文以後,相比與本身在有些方面仍是頗有學習的地方,好比在寫入result文件中,寫入的很整齊。應該學習。 在看了她的代碼以後,相比與本身 還有學習的地方,有些代碼寫註釋很重要,方便之後的學習。 |
結對項目源代碼html
(1)實驗2要求的功能;git
(2)單詞頻數可視化柱狀圖要求是如下樣式:github
(3)統計該文本行數及字符數;編程
(4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);dom
(5)可處理任意用戶導入的任意英文文本;函數
(6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);工具
(7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;學習
1.首先輸入任意正確的文件名。進入功能選擇,點擊每一個功能進行測試。 2.本次項目須要用到圖形用戶界面。在Mianclass類中編寫,設置面板,動做監聽。 3.在柱狀圖和排序編寫到不一樣的類中進行調用。
界面按鈕監聽及輸入文件名進行獲取時間。測試
surebt.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(event.getSource()==surebt){ JOptionPane.showConfirmDialog(null, "是否退出程序?","查找結果",JOptionPane.DEFAULT_OPTION); frame1.dispose();//銷燬當前界面 } } }); 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); } } });
柱狀圖字體
public class Graph extends Wordcount{ ChartPanel frame1; public Graph(Map<String, Integer> Map1,String s1){ DefaultCategoryDataset dataset = getDataSet(Map1,s1); JFreeChart chart = ChartFactory.createBarChart3D( "單詞頻數", // 圖表標題 " ", // 目錄軸的顯示標籤 // "數量", // 數值軸的顯示標籤 "單詞表", dataset, // 數據集 PlotOrientation.VERTICAL, // 圖表方向:水平、垂直 true, // 是否顯示圖例(對於簡單的柱狀圖必須是false) false, // 是否生成工具 false // 是否生成URL連接 ); //從這裏開始 CategoryPlot plot=chart.getCategoryPlot();//獲取圖表區域對象 CategoryAxis domainAxis=plot.getDomainAxis(); //水平底部列表 domainAxis.setTickLabelFont(new Font("宋體",Font.BOLD,12)); //垂直標題 ValueAxis rangeAxis=plot.getRangeAxis();//獲取柱狀 rangeAxis.setLabelFont(new Font("黑體",Font.BOLD,15)); chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15)); chart.getTitle().setFont(new Font("宋體",Font.BOLD,20));//設置標題字體 frame1=new ChartPanel(chart,true); //這裏也能夠用chartFrame,能夠直接生成一個獨立的Frame } } public DefaultCategoryDataset getDataSet(Map<String, Integer> Map,String s) { Map<String,Integer> Map2 = new TreeMap<String, Integer>(); String[] word= s.split(","); for(int i=0; i<word.length; i++) { for(Entry<String,Integer> entry : Map.entrySet()) { if(word[i].equals(entry.getKey())) { Map2.put(entry.getKey(), entry.getValue()); break; } } } DefaultCategoryDataset dataset = new DefaultCategoryDataset(); Set<Entry<String,Integer>> mapEntrySet = Map2.entrySet(); for(Entry<String,Integer> entry : Map2.entrySet()) { Integer value=entry.getValue(); dataset.setValue((Number)value,entry.getKey(),entry.getKey()); } return dataset; } public ChartPanel getChartPanel(){ return frame1; } }
(若輸入的文件名不正確)
(輸入正確的文件名)
在一塊兒合做的時候也會有不少分歧,須要討論和嘗試不少次話費許多的時間。在遇到困難時咱們會首先進行查閱書籍,而後一塊兒討論解決方法。嘗試各自的方法,選擇最好的方法。
任務內容 | 計劃完成須要的時間(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 |
本次項目的重難點就是圖形用戶界面,在功能部分咱們實現的還算是順利。可是到了作界面的時候就遇到了很大的困難,雖然以前學習過,大部分方法都忘記了,在編寫代碼的過程當中查閱了書籍。此次項目是結對完成的完成的還能夠,在兩我的的合做中也體會到了交流的重要性,咱們合做的很順利。但願能夠在編程方面更進一步。