zoukankan      html  css  js  c++  java
  • 202103226-1 编程作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/homework/11880
    这个作业的目标 编程作业
    其他参考文献 《构建之法》

    1. gitee链接

    2. PSP表格(预计)

    PSP2.1 Personal Software Process Stages 预估耗时(分钟)
    Planning 计划 10
    Estimate 估计这个任务需要多少时间 30
    Development 开发 300
    Analysis 需求分析 (包括学习新技术) 30
    Design Spec 生成设计文档 40
    Design Review 设计复审 30
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 10
    Design 具体设计 200
    Coding 具体编码 300
    Code Review 代码复审 20
    Test 测试(自我测试,修改代码,提交修改) 30
    Reporting 报告 60
    Test Repor 测试报告 20
    Size Measurement 计算工作量 20
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30
    合计 1130

    3. 解题思路

    3.1. 需求分析

    1. 统计文件的字符数(对应输出第一行)
    2. 统计文件的单词总数(对应输出第二行)
    3. 统计文件的有效行数(对应输出第三行)
    4. 统计文件中各单词的出现次数(对应输出接下来10行)
    5. 输出结果

    3.2. 概要设计

    1. 文件的读写
      • 使用输入输出流对文件进行读写操作
    2. 计算行数、计算字符
      • 使用BufferedReader类中readline()方法进行行数的读取,同时计算行数
      • 使用InputStream中的方法available()得到文件的字符数
    3. 单词的处理与计数
      • 将整个文件读取出来后,进行规格化处理,将换行符和其他字符均设置为一个空格
      • 将整理后的字符串通过空格分割为一个字符串数组
      • 对数组中每一个字符串进行判断,是否符合题目规则
      • 将每一个符合规则的单词进行统计计数,从而得到单词的总数
    4. 单词频率统计
      • 使用Map集合以键值对的形式保存单词其出现的频率

    4. 代码规范

    codestyle.md

    5. 计算模块接口的设计与实现过程

    FileWordSplit()

    该方法读取文件,对文件的字符进行处理,分割出若干个单词

    // 将文件中的字符切割为字符数组
    	public static String[] FileWordSplit(String input) throws IOException {
    
    		InputStream in = new FileInputStream(input);
    		StringBuilder buffer = new StringBuilder();
    		
    		// 获取字符个数
    		int size = in.available();
    
    		for (int i = 0; i < size; i++) {
    			// 读取文件中每一个字符
    			char b = (char) in.read();
    
    			if (b == '
    ' || b == '
    ' || b >= '!' && b <= '/' || b >= ':' && b <= '@' || b >= '[' && b <= '`'
    					|| b >= '{') {
    				b = ' ';
    			}
    			buffer.append(b);
    		}
    		String[] word = buffer.toString().toLowerCase().split("\s+");
    		return word;
    
    	}
    

    WordFrequency()

    统计单词出现的频率,使用hashMap保存

    // 统计单词出现频率
    	public static ArrayList<Entry<String, Integer>> WordFrequency(String input) throws IOException {
    		Map<String, Integer> wordMap = new HashMap<String, Integer>();
    
    		String[] word = FileWordSplit(input);
    		for (String string : word) {
    			if (CheckWord(string)) {
    				if (wordMap.containsKey(string)) {
    					Integer num = wordMap.get(string) + 1;
    					wordMap.put(string, num);
    				} else {
    					wordMap.put(string, 1);
    
    				}
    			}
    		}
    		ArrayList<Entry<String, Integer>> list = SortMap(wordMap);
    
    		return list;
    	}
    

    SortMap()

    对使用键值对保存的单词和其出现频率的集合进行排序

    CountWord()

    统计单词的总个数

    CountLine()

    使用InputStreamreadLine()统计总行数

    CountChar()

    使用BufferedReaderavailable()统计总字符数

    OutputFileContent()

    使用OutputStream将数据写入文件中

    6、计算模块接口部分的性能改进

    暂时想不到改进的地方和方法

    7、单元测试和性能分析

    • 将文件中的字符切割为字符数组FileWordSplit()测试

    单词除去空格和特殊符号存入数组中

    • 整体测试

    8、异常处理说明

    当文件找不到时会跳出异常

    9、PSP表格(实际)

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 10 10
    Estimate 估计这个任务需要多少时间 30 30
    Development 开发 300 400
    Analysis 需求分析 (包括学习新技术) 30 30
    Design Spec 生成设计文档 40 60
    Design Review 设计复审 30 30
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 10 20
    Design 具体设计 200 200
    Coding 具体编码 300 400
    Code Review 代码复审 20 20
    Test 测试(自我测试,修改代码,提交修改) 30 30
    Reporting 报告 60 60
    Test Repor 测试报告 20 30
    Size Measurement 计算工作量 20 20
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 30
    合计 1130 1370

    10、心路历程与收获

    在实现项目的过程中发现了自身诸多的不足,许多东西曾经学过,而如今已然忘却,在光研究git便耗费了我3个小时的光景,至于编程语言也略有生疏。虽然本次作业的编程题目总体来说难度不大,但是对完成这一个整体的作业而言,相比较之下由于自身对于gitee和GitHub使用的并不多所花费的时间和精力更大,而且我对于测试也并不太熟悉,只是曾经略有了解过,还是存在较多的弱项,自身的学习任然需要进一步的加深。

  • 相关阅读:
    Laravel 静态资源管理及表单布局
    Laravel 中间件的使用(前置与后置)
    Laravel 中的模板中的url
    Laravel 基础语法和include的使用
    Laravel模板的继承
    Laravel的路由、控制器和模型
    用composer安装laravel
    vue cli3.0 给路径起别名 vue.config.js ;代码统一风格 .editorconfig
    github的使用
    Java学习的第十二天
  • 原文地址:https://www.cnblogs.com/lmcmha/p/14608795.html
Copyright © 2011-2022 走看看