软工个人项目———WC.exe(Java实现)
一、github地址
https://github.com/hhw-15521301615/hello-world
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 45 |
· Estimate | · 估计这个任务需要多少时间 | 40 | 45 |
Development | 开发 | 760 | 640 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 150 |
· Design Spec | · 生成设计文档 | 20 | 35 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 35 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 40 |
· Design | · 具体设计 | 120 | 90 |
· Coding | · 具体编码 | 240 | 180 |
· Code Review | · 代码复审 | 60 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 70 |
Reporting | 报告 | 120 | 100 |
· Test Report | · 测试报告 | 60 | 40 |
· Size Measurement | · 计算工作量 | 30 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 920 |
785 |
三、解题思路
看到题目的要求,发现这个项目的要求是对程序设计语言源文件的一些操作。在Java课程设计中已经做过类似的设计,但是应题目的要求先进行了对《构建之法》
的阅读,了解了个人软件开发流程,开始了自己的设计
1.对于此题目中的文件类,联想到了Java中的I/O流来读取文件,复习学习过的I/O流来设计读取文件
2.取文件之后,理所应当根据用户的需求进行操作,因此先需写一个函数来调取用户的输入命令,即操作函数
3.根据所需要统计的内容,设计所需要的函数,包括文件导入函数、字符数统计函数,词数统计函数,行数统计函数以及特殊行统计函数
4.功能函数设计好之后,设计主函数来为用户输入与输出使用,为用户提供必要的操作帮助并请求用户输入命令
四、设计实现过程
1.各函数设计:
(1)文件导入函数:对于文件读取,用流来读取会简单很多,之后调用操作函数执行指令的相应函数
(2)字符统计函数:用readLine函数来读取文件每一行的内容,循环遍历,统计字符数
(3) 词数统计函数: 对于文件的每一行内容,根据单词的特性,以空格为分割,再统计单词数
(4)行数统计函数:循环读取文件的行数
(5)特殊行统计函数:循环读取文件的每一行内容,判断是否为特殊行,并做统计
(6) 主函数:为用户输入与输出使用,为用户提供必要的操作帮助并请求用户输入命令
2.组织代码:
在此项目中设计一个类,一个主函数和所需的其他函数,主函数来为用户输入输出,提交用户的命令,调用其他函数
3. 各函数之间的关系:
五、测试
1.测试文件
wc1为随笔文件,wc2为标准c语言源程序代码,wc3为空文档。
2.进行测试
六、总结
这次项目中感受了个人软件开发流程(PSP),复习了大二时学习的Java程序设计。但由于自己大二学习时不认真,所制作的软件也
不是特别的完善,只完成了最基本的功能,充分认识到自己程序设计能力的不足。这使我学到很多东西,体会到了应该在今后的日子里
加紧时间学习。在这次项目中自己分析,设计,编码,开发,测试等流程中让我明白软件设计并不是一件简单的事。此外,这次作业的
提交还让我提升了自己书写博客和利用GitHub的能力,提升了自己的实践能力。
最新文章
- 【原】tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig的解决
- Hadoop 之 MapReduce 框架演变详解
- prototype 原型
- wifi 破解
- web 打开子窗口提交数据或其他操作后 关闭子窗口且刷新父窗口实现
- Spark Streaming资源动态申请和动态控制消费速率剖析
- JavaScript 位运算总结&;拾遗
- “Invalid maximum heap size” when running Maven
- Linux下Mysql数据库备份
- tarjan缩点
- JAVA FILE or I/O学习 - Desktop本地程序学习
- php等号(==)与全等(===)
- jquery-validate的用法
- TOGAF架构开发方法(ADM)之需求管理阶段
- WebStorm里启动electron项目
- click和blur事件冲突解决方案
- UVA-624 CD---01背包+输出路径
- python: 列表的方法
- mui上拉刷新+下拉加载
- demo:复制粘贴功能
热门文章
- postgre查询一段时间内的数据
- 谈谈RPC——golang中jsonrpc和grpc的使用
- “无法启动IIS Express Web服务器”的解决办法
- 【转】Notepad++如何设置行高
- 批量删除sql语句
- [转]解决 gem install 安装失败
- [转]How to Install Oracle Java 11 in Ubuntu 18.04/18.10
- Intellij IDEA 启动出现“前言中不允许有内容”
- python数据分析3之标签化
- 腾讯物联网操作系统正式开源,最小体积仅1.8 KB