寒假作业(2/2)
这个作业属于哪个课程 | 2020软件工程w班 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 熟悉使用Github,提交疫情统计程序 |
作业正文 | .... |
其他参考文献 | csdn,github,《码出高效_阿里巴巴Java开发手册》,《W3CSchool Junit使用教程》 |
一.我的github地址
二.psp表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 60 |
Estimate | 估计这个任务需要多少时间 | 400 | 600 |
Development | 开发 | 400 | 800 |
Analysis | 需求分析 (包括学习新技术) | 60 | 80 |
Design Spec | 生成设计文档 | 60 | 80 |
Design Review | 设计复审 | 30 | 60 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 40 |
Design | 具体设计 | 80 | 120 |
Coding | 具体编码 | 300 | 450 |
Code Review | 代码复审 | 40 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 120 |
Reporting | 报告 | 60 | 80 |
Test Report | 测试报告 | 30 | 60 |
Size Measurement | 计算工作量 | 30 | 30 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 40 |
合计 | 1620 | 2680 |
三.解题思路
刚开始接触题目需求还是挺懵的,以前学习java大都是在eclipse里能运行出结果就行了,命令行传入还没有实践过。文本的匹配一开始也是没有头绪。这些困难都在后面自己百度看博客论坛解决了。搞懂了这两个对我来说的难点后,我就开始考虑数据结构的问题,本来想用hashmap的,但经验几乎没有,怕出bug驾驭不了,最后还是决定用整形二维数组存储各个省份和全国的相关人数情况。思考完这些就开始写代码,我是把这个程序分成4个类:
InfectStatistic//主类,作业功能的实现
state//状态类,主要是对文本行的类型 文本行体现的各省相关人数状态进行操作
fileoperate//文件操作类 读取文件 写入文件
commandline//命令行类 对命令行参数进行解析 判断 保存
首先先实现了fileoperate类,然后对需求进行分析,进一步实现了state类,最后看了几个论坛和博客,模仿写了commandline类
四.设计实现过程
- state类:
1.创建字符串数组provinces[]保存全国和各个省份名。
2.创建pattern字符串用于各个文本行类型的判断。
3.judgetxtline(Stringtextstr)方法传入readline读取的str,通过textstr与pattern的比较,返回一个整形的文本类型,用于conditions方法的switch分支。
4.conditions(String textstr,int conditions[][])方法,首先用split()方法,对readline读入的文本行切割,并用choice接受judgetextline()返回的文本行格式类型。switch分支,对各种类型的文本行进行各省的相关人数操作。 - fileoperate类
1.findFile(File dir,int conditions[][])方法,创建一个文件数组dirfiles[],将路径dir下的文件赋值给dirfiles[],然后便利dirfiles数组,对符合条件的文件,用字符流的方式每行读取文本,并调用state类中的conditions方法
2.writetoFile(File file,int conditions[][])方法,传入存储了所有数据的conditions[][],并以一定的格式输出到文本 - commandline类
1.analysisCommand(String args[])方法,分析并存储命令行传入的参数 - InfectStatistic类 实例化上述类,并实现程序功能
五.代码风格
六.心路历程与收获
这次项目还是收获很多的。首先思路里提到的两个主要的困难能够自主通过博客论坛百度解决,其实还好,主要是磨练了耐心和看代码学习的态度。刚开始觉得的困难,也许只是不懂某一个具体的方法或者某种类。
在具体的编程中,复习了java的基本语法和结构,也对面向对象的编程更加有经验与认识。在方法论上的收获的话,认识到了一开始不要着急写代码的必要,首先对需求进行细致的分析和了解,再对这个程序的大致结构进行勾画,预演编程中可能会遇到的困难。准备工作做好这些,在真正动手编程的时候,即便遇到困难也不会慌甚至放弃了。
七.作业一相关的github仓库
- 1.Keras
https://github.com/keras-team/keras
Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行。旨在完成深度学习的快速开发 - 2.Zulip
https://github.com/zulip/zulip
Zulip是一款功能强大的开源群聊应用程序,它结合了实时聊天的即时性和线程对话的生产力优势。Zulip作为一个开源项目,被许多世界500强企业,大型组织以及其他需要实时聊天系统的用户选择使用,该系统允许用户每天轻松处理数百或数千条消息。 - 3.Face Recognition
https://github.com/ageitgey/face_recognition
Face Recognition 是一个基于 Python 的人脸识别库,使用十分简便。这还提供了一个简单的face_recognition命令行工具,可以让您从命令行对图像文件夹进行人脸识别. - 4.Magenta
https://github.com/tensorflow/magenta
Magenta是一个探索机器学习在创造艺术和音乐过程中的作用的研究项目。这主要涉及开发新的深度学习和强化学习算法,用于生成歌曲,图像,绘图等。但它也是构建智能工具和界面的探索,它允许艺术家和音乐家使用这些模型。 - 5.Ansible
https://github.com/ansible/ansible
Ansible是一个极其简单的IT自动化系统。它可用于配置管理,应用程序部署,云配置,支持远程任务执行和多节点发布 - 包括通过负载平衡器轻松实现零停机滚动更新等操作.