一、Github项目地址:https://github.com/Leungdc/ENhomework

二、PSP:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

·Planning

·计划

40

60

· Estimate

· 估计这个任务需要多少时间

30

30

·Development

·开发

1500

1860

· Analysis

· 需求分析

30

70

· Design Spec

· 生成设计文档

30

30

· Design Review

· 设计复审

20

15

· Coding Standard

· 代码规范

60

40

· Design

· 具体设计

20

30

· Coding

· 具体编码

1440

1800

· Code Review

· 代码复审

30

120

· Test

· 测试(自我测试,修改代码,提交修改)

20

80

·Reporting

·报告

60

60

· Test Report

· 测试报告

60

40

· Size Measurement

· 计算工作量

20

20

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

30

30

合计

1700

2000

三、解题思路

架构:基于图形界面的wc.exe程序实现。

主窗体(WC.exe):运行程序  →  弹出窗体  →  用户在窗体内的文本域进行指令的输入  →  点击开始按钮  →  程序执行

副窗体(可用文件):在主窗体中的文本域输入“-x”  →  打开副窗体  →  用户点击按钮扫描系统中所有的.c文件  →  选中文件  →  点击开始按钮  →  程序执行

具体窗体图

        

问题一:这是一个什么窗体?

答:JFrame。

问题二:下方的文本域用的是什么组件?

答:JTextArea。

问题三:为什么不用JTextFiled而用JTextArea

答:JTextField中的文本域只有一行。

问题四:如何给JTextArea添加滚动条?

答:把JTextArea添加到JScrollPane中,当文本域中的文本宽或高超出文本域时,会自动显现上下滚动条或左右滚动条。

问题五:怎么接受到用户的输入,并将输出显示在文本域中呢?

答:JTextArea中的.getText方法和.setText方法可以分别得到和设置文本域中的内容,返回类型为String

四、设计过程实现

                 //由于在具体的实现中副窗体中的代码大多是主窗体代码的复用,所以下面只讨论主窗体的代码组织

在WCview类中有一个主类以及十三个方法,按照功能可以分为基本方法和指令方法,按照其使用的独立性可以分为独立方法和非独立方法。

非独立方法:WCview();initialize();Readfile();方法,其中,

WCview方法调用initialize方法,对设计的窗体进行初始化操作,如设置窗体的大小,窗体中按钮的事件监听器等;

而Readfile()方法则是对“开始”按钮的事件反应,当用户点击“开始”按钮时,就会自动调用Readfile()方法;该方法内容包括如下几点:

  1、textArea.getArea获取文本域中的指令。

  2、对于非法的指令,在文本域中设置报错信息(textArea.setTextArea)反映给用户。

  3、对于合法的指令,读取文本域中用户输入的文件路径,File f  =  new file(路径);创建文件对象,并使用switch方法对指令进行判断,如“-c”;,

独立方法:如wActionPerformed();refresh()方法等,根据程序的需要,设计了独立的代码,供其他类或方法使用。

按照功能分为的基本方法和指令方法

基本方法:1.readtoString方法;根据所所选文件的编码方式,返回字符串数据

2.print方法,递归查找全盘,或者所选根目录下符合要求的.c文件

3.getdirectory方法,递归查找全盘的.c文件

4.refresh方法,刷新一些重要的全局变量

指令方法:1.-cActionPerformed():  -c指令的实现①正则表达式匹配String内容。②对匹配内容计数,.setText方法输出到文本域中。

2.-wActionPerformed():  -w指令的实现①正则表达式匹配String内容。②对匹配内容计数,.setText方法输出到文本域中。

3.-aActionPerformed():  -a指令的实现①正则表达式匹配String内容。②对匹配内容计数,.setText方法输出到文本域中。

4.-lActionPerformed():  -l指令的实现①.setText输出文件内容到文本域。②.getlineCount对行数计数,.setText方法输出行数。

5.-sActionPerformed();

-s(+路径):递归处理全盘或者所加路径下所有的.c文件。

-s-c/w/l/a:    ①用print方法读取目录下的所有.c文件  ②用Readfile读取文件内容  ③ 按需求用.setText方法输出到文本域中。

6.-xActionPerformed();

①自动打开-x操作的窗体

②用户点击“扫描”按钮后扫描全盘下的.c文件,并输出到textArea

③用户选择要操作的目录,点击“开始”按钮输出相关信息。

             

最新文章

  1. Hibernate(1)——数据访问层的架构模式
  2. N个节点的二叉树有多少种形态
  3. I2C控制器的Verilog建模之三(完结版)
  4. 【ASP.NET Web API教程】6.4 模型验证
  5. 利用反射及jdbc元数据实现通用的查询方法
  6. 通过Eclipse创建SQLite数据库
  7. POJ-3678 Katu Puzzle 2sat
  8. MySQL用命令行复制表的方法
  9. 【结构型】Decorate模式
  10. HDU 1722 Cake
  11. 微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布
  12. SDN第5次上机作业
  13. 步步为营---- MuleEsb学习(一) 扫盲篇
  14. Spring的原理性总结
  15. JQPRINT-不错的jquery打印插件
  16. acm 2032
  17. GTP+SDI工程播出部分思路整理(3)
  18. Solr 访问 403 错误
  19. java项目运用server运行(eclipse、myeclipse通用)
  20. Reading and writing RData files

热门文章

  1. MySQL 部署分布式架构 MyCAT (二)
  2. SRDC - ORA-1628: Checklist of Evidence to Supply (Doc ID 1682729.1)
  3. MQL语句
  4. itest(爱测试) 4.2.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
  5. 7.5 高级数据源---Kafka
  6. RSTP基本配置
  7. 解决飞秋绑定TCP错误
  8. LeetCode 分治算法
  9. ubuntu 查看版本
  10. 物联网架构成长之路(45)-容器管理平台Rancher