WordCount结对项目
合作者:201631062124,201631062423
代码地址:https://gitee.com/yryx/WordCount
作业地址:https://edu.cnblogs.com/campus/xnsy/2018Systemanalysisanddesign/homework/2188
代码互审:
关于代码互审有一点需要说明,在之前实现wordcount的基本功能时我使用的是c++语言实现,而周欣则是使用的是java语言实现,所以在进行结对项目的时候我们商量了关于使用那种语言实现接下来的功能,最后我们确定使用java语言进行接下来的功能实现,所以在后面的实现过程中周欣主要负责实现代码,我则是在一旁进行相关的帮助,包括代码问题的解决,功能实现问题的解决以及代码测试。不过在开始扩展功能的实现之前我们还是对周欣之前实现的基本功能的代码进行了简单的审查。
代码审查 | 相关问题 | 想法和解决方案 |
代码的编码格式,语法,逻辑等相关部分 | 编码格式是否符合规范,语法是否正确,代码逻辑是否正确, | 根据代码规范来检查完成的所有代码是否存在问题 |
程序的整体结构,包括类之间的关系 | 类的定义是否符合规范,整体结构是否紧凑完整 | 在进行类的定义之前先参考代码规范和程序流程图 |
文件处理部分的处理 | 由于文件的访问存在资源的使用,是否有资源泄漏的问题 | 对所有涉及了文件访问的地方重点检查资源的开闭,是否有资源泄漏的问题 |
结对psp表格:
PSP阶段 | 预计耗时(分钟) | 实际耗时(分钟) |
计划 | 10 | 10 |
.估计任务所需时间 | 10 | 10 |
开发 | 475 | 553 |
.需求分析 | 5 | 5 |
.生成设计文档 | 10 | 17 |
.设计复审 | 10 | 14 |
.代码规范 | 30 | 46 |
.具体设计 | 60 | 42 |
.具体编码 | 180 | 248 |
.代码复审 | 90 | 66 |
.测试 | 90 | 115 |
报告 | 50 | 59 |
.测试报告 | 10 | 13 |
.计算工作量 | 10 | 10 |
.事后总结 | 30 | 36 |
合计 | 535 | 622 |
设计过程:
整个程序一共设计了三个类,分别为test,FileChooser,Execute-Char,其中test类作为主函数所在类,负责整个程序的启动和运行,其中的逻辑负责分析输入的命令,然后再根据命令调用另外两个类中的方法实现对应的功能。FileChooser类中定义了三个方法:rePath(),用于返回输入的文件路径;FileChooser()为该类的构造方法,用于绘制进行文件选择的窗口;actionPerformed(ActionEvent e),用于进行文件的选择。该类的作用就是绘制一个窗口实现文件的选择,然后给出查询结果。Execute-Char类就是所有功能实现的类,其中定义了9个方法,实现了查询总字符数,总单词数,总行数,某个单词出现次数,读取文件,读取总的空行,代码行和注释行,停词表。这些具体的实现方法会在test类中得到调用,从而实现相应功能。
代码说明:
FileChooser类中实现文件选择的代码:
//定义一个文件选择类,用于实现窗口文件选择 public class FileChooser extends JFrame implements ActionListener{ JButton open=null; String path;//绘制文件选择框public FileChooser(){ open=new JButton("open"); this.add(open); this.setBounds(400, 200, 100, 100); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); open.addActionListener(this); } @Override //重写actionPerformed()方法,用于实现文件选择public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JFileChooser jfc=new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES ); jfc.showDialog(new JLabel(), "选择"); File file=jfc.getSelectedFile(); path=file.getAbsolutePath(); }//返回文件路径public String rePath(){return path;}}
查询代码行,空行,注释行:
try {BufferedReader bufferedReader = new BufferedReader(new FileReader(file));String coun = null;while ((coun = bufferedReader.readLine()) != null) {line++;if (coun.trim().length() == 0 || coun.trim().length() == 1) {nuline++;} else {for (int i = 0; i < coun.length() - 2; i++) {temp = coun.substring(i, i + 1);if (temp.equals("/")&& coun.substring(i + 1, i + 2).equals("/")) {annoline++;}}}}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}codeline = line - nuline - annoline;System.out.println("代码行:" + codeline + "\n" + "空行:" + nuline + "\n"+ "注释行:" + annoline);
停词表:
int ReStopList(File file) {String str = null;int stopword = 0;int k = 0;String reg1 = "\\s+|,+";try {BufferedReader bufferedReader = new BufferedReader(new FileReader(file));while ((str = bufferedReader.readLine()) != null) {String strc[] = str.split(reg1);for (String s : strc) {k = count_word(s);stopword += k;}}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}return stopword;}
由于在上一次的博客中已经实现了查询总字符数,单词数,总行数,所以在这里就不再展示代码,具体的可以参考:https://www.cnblogs.com/zhouxin523/p/9733271.html。
总结与感受:
关于结对编程开发:以前进行程序开发的时候要么是自己进行程序开发,要么都是组成了多人的团队进行程序开发,从来没有体会过两人进行结对编程,在这次课程中得以体会了一次结对编程,首先来说结对编程有一点好处就是多了一双眼看代码,多了一个脑子想问题,多了张嘴讲建议,所以在进行编程的时候可以注意到许多一个人进行编程时发现不了的问题,并且两个人都在对一个问题进行思考,使得解决问题的思路得到了更多的拓展,并且在交流的过程中还会产生新的想法, 我觉得这是很棒的。其次,在代码完成速度上感觉也有了明显的不同,在进行编程之前如果进行了明确分工,在合理的代码规范前提下两人分工完成各自的任务,使得完成的时间得到了很大程度的减少,并且代码完成的质量在合成一份程序之后就可以得到验证,而不必反复在编程的各个阶段进行代码测试,减少了很多时间的浪费。
关于在构建之法的一些体会:在构建之法这本书中我感觉自己确实是学到了很多知识,首先是系统的软件工程的知识,在接触这本书之前虽然已经学习了不少软件工程的相关知识,但是一种感觉都是零散的,独立的知识片段,但是在学习了构建之法后感觉这些知识都到了一定程度的整合,慢慢开始形成一个整体,并且感觉脑子里的思路也清晰起来。然后构建之法中在每一章的结尾都给出了大量的知识链接,这些知识链接可以丰富我的阅读,拓宽视野,并且加深我自己对于课堂知识的理解, 对于我来说是起到了极大的帮助的,我相信就算在这门课结束之后我还是会经常把这本书拿出来阅读,感觉还可以收获更多的东西。
转载于:https://www.cnblogs.com/lonely-z/p/9801089.html
WordCount结对项目相关推荐
- 软件工程基础-结对项目-WordCount(单词计数)
结对项目要求 Github项目地址 https://github.com/richardevan/wordcount PSP表格 PSP2.1 Personal Software Process St ...
- 系统分析与设计结对项目———Wordcount
系统分析与设计结对项目---Wordcount 合作者:201631062513.201631062511 本次作业要求链接地址:https://edu.cnblogs.com/campus/xnsy ...
- WordCount结对拓展
WordCount结对编程 合作者:201631021308 201631054301 码云地址:https://gitee.com/ZK154/pair_programming 作业链接:h ...
- 软工结对项目之词频统计update
队友 胡展瑞 031602215 作业页面 GitHub 具体分工 111500206 赵畅:负责WordCount的升级,添加新的命令行参数支持(自定义输入输出文件,权重词频统计,词组统计等所有新功 ...
- 201671030123叶虹《英文文本统计分析》结对项目报告
项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 作业链接地址 课程学习目标 熟悉软件开发整体流程,提升自身能力 本次作业在哪个具体方面帮助我们实现目标 第一次体验一个完整的工程 任务 ...
- 201671030127赵津莹 《英文文本统计分析》结对项目报告
博文简要信息表 项目 内容 作业所属课程 软件工程 作业要求 实验四 软件项目结对 课程学习目标 熟悉软件开发整体流程,提升自身能力 帮助实现目标 第一次体验一个完整的工程 任务一 1.点评的博客地址 ...
- 201671010447杨露露 实验四软件工程结对项目
一:作业点评 点评内容: 评价博文链接:https://www.cnblogs.com/runju/p/10558809.html 1.缺点:博文结构不太清晰,排版可以在美化一些,博文的内容中对程序功 ...
- 软件工程导论结对项目
小学四则运算结对项目 一.项目地址 https://git.coding.net/chenxin1998/Arithmetic.git 结对成员:马乐平,地址:https://git.coding.n ...
- 201671030129 周婷 《英文文本统计分析》结对项目报告
项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 软件工程结对项目 课程学习目标 熟悉软件开发整体流程及结对编程,提升自身能力 本次作业在哪个具体方面帮助我们实现目标 体验组队编程,体 ...
最新文章
- jQuery中的closest()和parents()的差别
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1061:求整数的和与均值
- android 4.4.2截屏方法,android4.4.2 使用 uiautoviewer 截屏报错
- linux系统键盘记录器,可截获到 QQ 密码 键盘记录器源码
- webapp入门到实战_web前端入门到实战:前端高手在CSS 开发效率的必备片段
- SpringBoot2.x整合quartz定时任务 快速入门
- 网易云课堂解析_使用SQL分析网易云课堂职场提升类课程
- python是一种代表简单主义思想的语言_setuptools-36.6.0
- SendMessageTimeOut函数使用方法
- window 下 go lang 环境变量一键批处理设置
- 虚拟仿真实验项目所需服务器,工程结构虚拟仿真实验室
- qt.qpa.plugin: Could not find the Qt platform plugin “xcb“ i
- Maya2018插件安装
- 如何在云服务器上自动运行.py文件
- React Native布局实践:开发京东客户端首页(四)——首页功能按钮及控件封装
- 微信小程序前后端授权登陆
- Python——文件操作(day11)
- 碉堡了!最大 18 禁网站用 AI 和 ML 来做视频分类加标签
- Bootstrap的基本使用方法介绍
- 2022年第七届数维杯大学生数学建模挑战赛报名通知
热门文章
- Mac 技术篇-设置Finder文件管理显示文件路径
- 模拟电路技术之基础知识(一)
- [YTU]_2477( C++习题 抽象基类)
- [YTU]_2434 ( C++习题 商品销售)
- 一维数组和二位数组作为函数参数进行传递的方式
- 图像的灰度化以及二值图函数
- android 9.x 实现应用内更新安装
- vue工程本地代码请求http发生跨域提示错误解决方法
- (转载)The shortest, fastest, and easiest way to compare two tables in SQL Server: UNION
- 分支结构,循环结构,for循环,九九乘法表