201671030110姜佳宇《英文文本统计分析》结对项目报告

软件工程结对项目实战
本文分享了西北师范大学软件工程课程中的结对项目经验,包括需求分析、软件设计、核心功能代码实现及运行测试等内容,强调了合作沟通的重要性。
项目内容
作业所属课程西北师范大学软件工程
作业的要求实验四软件工程结对项目
课程学习目标熟悉软件开发整体流程,提升自身能力
本次作业的意义第一次体验一个完整的工程

任务1.结对准备工作

  • 点评博客(点评链接),点评内容如下:

    你的博文结构整体思路很清晰,博文内容简单明了,博文结构中的整体思路和PSP中“任务内容”列的思路一致。从需求分析到测试总结,每个环节都用文字或者图标的形式给出了整个项目较为完整的思路。通过分析你的PSP,在PSP中“计划共完成需要的时间”与“实际完成需要的时间”还是有一定的差距。在生成文档等这样的任务中实际花费的时间就比计划花费的时间少,这说明你在编写文档的方面还是很有优势的,而在编码这样的任务中实际和计划的时间就相差有点大,这说明你的编码能力还有待提高。
    你的代码结构清楚,在实现题目要求的功能时有一个欠缺的地方是:当你输入一个该文本中没有的单词时,系统不会有任何提示而是继续显示菜单栏进行功能选择。除此之外,我发现我们在柱状图的实现上都有一定欠缺,我相信经过我们的结对合作一定可以改进这个问题的!

  • 点评心得:

    在结对之前通过阅读对方的博客内容以及运行对方项目的代码可以学习到很多东西。可以学习对方好的优秀的编码习惯,可以提升自身的编码能力。

任务2.结对项目仓库地址

  点击这里!

任务3.结对项目实施过程

3.1需求分析

a.实验二的功能
b.完善实验2中的统计图功能
c.统计该文本行数及字符数
d.各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
e.可处理任意用户导入的任意英文文本
f.人机交互界面要求GUI界面
g.统计文本中除冠词、代词、介词之外的高频词
h.统计前10个两个单词组成的词组频率

3.2软件设计

1616073-20190403034604184-386892854.png

3.3核心功能代码展示

a.统计图功能

public void paint(Graphics g)
    {
        int Width = getWidth();
        int Height = getHeight();
        int leftMargin = 20;//柱形图左边界
        int topMargin = 50;//柱形图上边界
        Graphics2D g2 = (Graphics2D) g;
        int ruler = Height-topMargin;
        int rulerStep = ruler/20;//将当前的高度平分为20个单位
        g2.setColor(Color.PINK);//绘制白色背景
        g2.fillRect(0, 0, Width, Height);//绘制矩形图
        g2.setColor(Color.BLACK);
        g.setColor(Color.gray);
        for(int i=0;i<=100;i+=5){//绘制灰色横线
            g2.drawLine(5, topMargin+rulerStep*i, Width, topMargin+rulerStep*i);//绘制灰色横线
        }
        for(int i=0;i<rulerStep;i++){
            g2.drawString((35000-2000*i)+"个", 8, topMargin+rulerStep*i);//绘制Y轴上的数据
        }
        g2.setColor(Color.black);
        int m=0;
        for (Entry<String, Integer> entry : map.entrySet()) 
        { 
            int value =entry.getValue();
            int step = (m+1)*40;//设置每隔柱形图的水平间隔为40
            g2.fillRoundRect(leftMargin+step*2,Height-value/50-5, 40, value, 40, 10);//绘制每个柱状条
            g2.drawString(entry.getKey(), leftMargin+step*2, Height-value/50-5);    //标识每个柱状条       
            m++;
         } 
         
    } 

b.统计文本行数及字符数功能

lineWordCount.addActionListener(new ActionListener()
        {
        public void actionPerformed(ActionEvent event)
        {
           if (event.getSource()==lineWordCount)
           {
               try 
               {
                FileName(map);
               } 
               catch (IOException e) 
               {
                // TODO Auto-generated catch block
                e.printStackTrace();
                }
               JOptionPane.showMessageDialog(null,"Lines:"+rowNumber+"\n"+"WordsNumber:"+wordNumber+"\n"+"Time:"+time+"ms","Result",JOptionPane.INFORMATION_MESSAGE);
           }
        }
     });

c.按字典顺序排列

 /**按字典顺序排序*/
    void Sort(Map<String, Integer> map) 
    {  
       Set<Entry<String,Integer>> m= map.entrySet();   
       LinkedList<Entry<String, Integer>> List = new LinkedList<Entry<String,Integer>>(m);
    
           Collections.sort(List, new Comparator<Entry<String,Integer>>() 
           {     
               public int compare(Entry<String, Integer> a,  Entry<String, Integer> b) 
               {  
                   return a.getKey().compareTo(b.getKey());  
              }     
           });  
       for (Entry<String,Integer> entry: List) 
       {  
           Map.put(entry.getKey(), entry.getValue());  
       }  
   } 

3.4程序运行

a.可视界面测试截图
1616073-20190403034823163-937508946.png
b.实验2功能测试截图
输出前N个高频词
1616073-20190403035013748-2056021803.png
统计高频词
1616073-20190403035112126-348848038.png
1616073-20190403035154430-2109435373.png
将结果写入文件
1616073-20190403035237690-1203974694.png
1616073-20190403035356884-1628420833.png
c.统计图测试截图
统计高频词
1616073-20190403035416615-1684809321.png
d.统计文本行数及字符数测试截图
1616073-20190403035444744-2135256429.png

3.5结对讨论过程

1616073-20190403035455491-708606267.png

  在开始结对编程项目之前,我们先一起学习了何为结对编程,以便双方能够在此次结对项目中把握好自己的角色。在这之后,我们阅读了对方的代码,并对对方的编码习惯和编码能力进行了一定的了解。经过双方讨论,我们约定了一定的代码规范。结合我们自身的编码能力,我们对PSP的计划部分进行了认真的规划,但在实施过程中,我们解决问题的办法是一起讨论解决办法,并对某一功能分别担任设计、编码和测试和复审的角色。在这次结对项目的合作中我体会到了合作沟通的重要性,双方对于问题的解决要进行及时有效的沟通便能事半功倍!

3.6展示PSP

psp任务内容计划共完成需要的时间(min)实际完成需要的时间(min)
Planning计划2015
Estimate估计这个任务需要多少时间,并规划大致工作步骤2020
Development开发200230
Analysis需求分析1510
Design Spec生成设计文档3025
Design Review设计复审1010
Coding Standard代码规范2015
Design具体设计2015
Coding具体编码150200
Code Review代码复审2015
Test测试1015
Reporting报告3025
Size Measurement计算工作量53
Postmortem & Process Improvement Plan事后总结 ,并提出过程改进计划101

转载于:https://www.cnblogs.com/SeattleCarrot/p/10639702.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值