201771010118-马昕璐 实验二 个人项目——《西北师范大学学生疫情上报系统》项目报告

实验二 软件工程个人项目

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
作业要求 https://www.cnblogs.com/nwnu-daizh/p/12416880.html
课程学习目标 学习掌握个人项目开发流程及GitHub发布软件的操作方法
这个作业在哪些方面帮助我实现学习目标 对个人项目开发流程的熟悉及了解
项目的Github仓库链接 https://github.com/Melody596/First-test

项目开发背景

  • 2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
    值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
    为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。

任务1:陈述学生疫情每日上报子系统使用体验;

  • 系统刚开发出来的时候,可能是因为时间紧张的原因在很多方面都存在多多少少的问题,比如最开始的几天系统不稳定,很容易因为堵塞崩溃,而且每天都需要重新输入信息数据,使用的时候很麻烦。后来经过改善之后崩溃的状态少了很多,而且有记忆功能,不需要每次都重新输入数据。但是界面还是略微简陋,而且没有提醒功能,很容易忘记打卡。

任务2:总结详细阅读《构建之法》第1-2章、结合第2章2.3节所述PSP流程,开发一款你自己心目中的西北师范大学学生疫情每日填报系统。

  • 功能设计
    • 第一类开发要求
      有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
    • 第二类开发要求
      1、系统可采集学生疫情有效信息;
         2、系统支持用户在线使用;
         3、每日只可填报一次,提交后无法修改,每日十点疫情信息填报截止;
         4、各学院指定负责人登录系统,可查看本学院学生填报的汇总数据,可点击查看学生联系方式、班主任联系方式,学院负责人核实本院所有学生数据后,将数据提交给学校防控办;
         5、学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有学生填报汇总数据清单,通过【导出】可获取疫情数据的EXCEL文件。

我选择了第一类开发

基本功能

  • 存储学校学生/教职工的基本信息
  • 查询某人的全部信息
  • 将查询数据用柱状图显示
  • 将全部数据存入.txt备份文件

    设计实现&测试运行

  • (1)主页面
  • (2)录入信息
  • (3)显示全部信息
  • (4)修改人员信息
  • (5)按条件查找
  • (6)按症状查询排序
  • (7)生成柱状图
  • (8)存入txt文件备份
  • 关键代码片段
try {
            InputStream is = new FileInputStream("C://Users//Administrator//Desktop//疫情数据.xls");
            Workbook rwb = Workbook.getWorkbook(is);
            Sheet rs = rwb.getSheet(0);
            rsRows = rs.getRows();
            rsCols = rs.getColumns();
            String[][] readfile = new String[rsCols][rsRows];
            for (int j = 0; j < rsRows; j++)
                for (int i = 0; i < rsCols; i++) {
                    jxl.Cell cell = rs.getCell(i, j);// (列,行)
                    String str = ((jxl.Cell) cell).getContents();
                    readfile[i][j] = str;
                }
            OutputStream os = new FileOutputStream("C://Users//Administrator//Desktop//疫情数据.xls");
            WritableWorkbook wwb = Workbook.createWorkbook(os);
            // 创建Excel工作表
            WritableSheet sheet = wwb.createSheet("testsheet", 0);
            // 原表格中数据重新写入
            for (int j = 0; j < rsRows; j++)
                for (int i = 0; i < rsCols; i++) {
                    sheet.addCell(new Label(i, j, readfile[i][j]));
                }

            for (int j = 0; j < rsRows; j++)
                if (ID.equals(readfile[1][j])) {
                    System.out.println(ID + "已存在,请问要覆盖信息吗?(Y/N)");
                    String answer = s.next();
                    if (answer.equalsIgnoreCase("N")) {
                        System.out.println("插入操作已取消,请重新输入操作符:");
                        // 写入Excel工作表
                        wwb.write();
                        // 关闭Excel工作薄对象
                        wwb.close();
                        return false;
                    }
                    if (answer.equalsIgnoreCase("Y"))
                        rsRows = j;
                }
            // 添加insert内容
            sheet.addCell(new Label(0, rsRows, name));
            sheet.addCell(new Label(1, rsRows, ID));
            sheet.addCell(new Label(2, rsRows, situation1));
            sheet.addCell(new Label(3, rsRows, situation2));
            sheet.addCell(new Label(4, rsRows, situation3));
            sheet.addCell(new Label(5, rsRows, situation4));
            // 写入Excel工作表
            wwb.write();
            // 关闭Excel工作薄对象
            wwb.close();
            // 写入.txt文件备份
            PrintWriter pw = new PrintWriter(new FileWriter(
                    "C://Users//Administrator//Desktop//疫情数据备份.txt"));
            for (int j = 0; j < rsRows; j++) {
                for (int i = 0; i < rsCols; i++)
                    pw.print(readfile[i][j] + "  ");
                pw.println();
            }
            pw.print(name + "  ");
            pw.print(ID + "  ");
            pw.print("是否发热" + "  ");
            pw.print("是否在武汉" + "  ");
            pw.print("是否与病患有密切接触" + "  ");
            pw.print("登记" + "  ");
            pw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("======完成======");
        return true;
    }
}

设计小结

在做项目的过程中遇到了很多问题,在功能实现方面还存在许多不足,某种数据的周/月统计情况没有实现,在数据录入上不够,因此在系统速度的测试上不准确,但是20000条数据我自己可能是实在弄不出来。好久没写Java了有些生疏,而且其中用到的很多东西是之前没有用过的,花费了很多时间和精力重新过了一遍。

PSP展示

PSP2.1 内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 30 60
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 30 60
Development 开发 600 1500
Analysis 需求分析 (包括学习新技术) 120 150
Design Spec 生成设计文档 30 30
Design Review 设计复审 (和同学审核设计文档) / /
Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 30
Design 具体设计 240 300
Coding 具体编码 480 900
Code Review 代码复审 30 20
Test 测试(自我测试,修改代码,提交修改) 120 120
Reporting 报告 120 170
Reporting 报告 60 90
Test Report 测试报告 20 30
Size Measurement 计算工作量 20 30
Postmortem & Process Improvement Plan 事后总结 ,并提出过程改进计划 20 20

任务三:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中。

  • 总结反思:在这次的项目设计中,项目存在的问题还是很多的,并且认识到自己能力的不足,了解了在项目工程中必须的步骤和过程。在以后的项目设计中还是应该勤动手,提高自己的实践能力,在过程中学习知识、掌握知识。

猜你喜欢

转载自www.cnblogs.com/maxinlu/p/12508005.html
今日推荐