项目 | 内容 |
---|---|
做业所属课程 | 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 |
本次项目的重难点就是图形用户界面,在功能部分咱们实现的还算是顺利。可是到了作界面的时候就遇到了很大的困难,虽然以前学习过,大部分方法都忘记了,在编写代码的过程当中查阅了书籍。此次项目是结对完成的完成的还能够,在两我的的合做中也体会到了交流的重要性,咱们合做的很顺利。但愿能够在编程方面更进一步。