2020软件工程作业03

软件工程
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
作业要求
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
作业目标
编写程序,做单元测试
作业正文
https://www.cnblogs.com/lucky-6127/p/12590637.html
参考文献
www.baidu.com



1、Github项目地址

https://github.com/migu-6127/20177651



2、PSP表格

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



3、解题思路

  • 首先将它拆分为四个模块,命令行传参、读取文件、对数据进行操作、写入文件。
  • 在针对每个模块查阅相关资料(百度解决一切~)。
  • 在一步步实现每个模块。
  • 最后将四个模块组合到一起。(哎~说起来简单,但这两周...窝都快愁秃了)



4、实现过程

  1. 实现命令行传参这一模块,考虑到主函数中太多操作会比较混乱,所以我是设计了一个LoadArgs()实现命令行传参。具体实现是用到了Switch分支结构判断字符。

  2. 然后就是读取文件转换为二位数组进行操作了,读取文件我是参照了网上实现的,至今也没整明白字节流,字符流有是什么意思...

  3. 第三步就是对二维数组进行数独操作了,嗯...这部分我也卡了很久...本来是想定义两个标志数组对0的元素行和列不为0的数进行标记,在排除得出这个位置的值...但木有成功...最后还是参照了某位刘大佬的方法实现的。(基于我技术太差....只能实现三宫格的...)

  4. 最后就是将填完的二维数组写入到文件中。

单元测试



5、改进程序性能

下面这张图片对我来说简直就像是天书...再一看代码,满框的红,我实在不知道从何下手...o(╥﹏╥)o



6、关键代码

(实现数独部分的代码就不拿出来了,实在是太废柴了...丢人)

对于我来说,这次的关键代码应该是读取文件跟写入文件了...所以这里就拿出来献丑吧....

  /*
         * 读取文件
     */

    public static void readFile() throws Exception{
        /*
         * 相对路径
         * */
        File file=new File(inputpath);
        /*
         *字节流
         */
        FileInputStream fileInputStream = null;
        fileInputStream = new FileInputStream(file);
        /*
         * 读取文件内容
         * */
        Scanner sc = new Scanner(fileInputStream);
        for (int i = 0; i < m*n; i++) {
            for (int j = 0; j < m; j++) {
                /*
                取字符存入二维数组中
                 */
                arr[i][j] = sc.nextInt();
            }
        }
    }
    /*
     * 写入文件
     */

    public static void writeFile() throws Exception{
        File writername = new File(outputpath);
        /*
          *字符流
         */
        FileWriter writer = new FileWriter(writername);
        /*
        输出流对象
         */
        BufferedWriter out=new BufferedWriter(writer);
        for (int i = 0; i < m*n; i++) {
            for (int j = 0; j < m; j++) {
                out.append(arr[i][j]+" ");
            }
            /*
            txt中\r\n才是换行
             */
            out.write("\r\n");
            if((i-(m-1))%m==0) {
                out.write("\r\n");
            }
        }
        /*
        把缓冲区内容压入文件
         */
        out.flush();
        /*
        关闭文件
         */
        out.close();

    }

仅支持三宫格,命令行输入以及结果如下图



7、心里路程与收获

别问!问就是崩溃!满脸问号,我到底是个什么废柴...
构建之法?我看!我一定去看!
刚拿到题目,命令行输入是什么?数独怎么解?怎么读取文件?怎么写入文件?

百度~疯狂百度...
被百度到一个方法...奥...试试...完了不行没得用...继续百度...
无限循环...脑袋炸裂...最后把自己绕晕了...
刚不过...我承认我就是个辣鸡...我就实现三宫格还不行嘛
最后还是选择一步步慢慢来,结合之前百度到的知识点,一点点梳理,一点点尝试...
首先命令行输入...什么?jdk运行版本与编译版本不匹配无法运行?检查了环境配置以及修改了项目jdk之后....
什么?找不到或无法加载主类?百度百度百度...n个小时以后...原来必须要在包含.class文件的文件夹内运行...
然后读取文件...此处省略n个小时..
数独盘处理...我是谁?我在哪?我要干什么?我从哪开始?

春去秋来...年复一年...终于看到了希望...
最后代码规约检测..性能分析...单元测试...上传代码...

虽然这两周在无止境崩溃中...但不得不承认的是...也学到了不少知识
也深刻地认识到我就是个渣渣!



8、评分

posted @ 2020-03-29 02:05  咪咕~  阅读(317)  评论(2编辑  收藏  举报