项目 | 内容 |
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
课程学习目标 | 掌握软件项目个人开发流程、熟悉Github发布软件项目的操作方法 |
这个作业在哪些方面帮助我实现学习目标 | 通过学习个人项目开发流程,体会到学习软件工程的意义 |
项目Github的仓库链接地址 | https://github.com/RM-xx/ReportingSystem |
实验内容
任务一 陈述学生疫情每日上报子系统使用体验
刚开始使用疫情上报系统的时候,每天都需重新填写所有内容,并且经常会出现进不去的情况。经过不断的系统升级之后,现在的疫情上报系统拥有了记忆功能,使用起来很方便也不会再出现以前的情况,没有特殊情况的时候只需要提交就可以了。
任务二 开发一款你自己心目中的西北师范大学学生疫情每日填报系统
项目开发要求:
有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
需求分析:
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。
值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。
为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
功能设计:
- 存储100天2000个教职工/学生的防疫信息;
- 显示所有人员信息;
- 查询某人某天的疫情情况;
- 查询某种数据的周/月疫情情况;
- 柱状图显示统计结果。
设计实现:
数据库用于存储数据的表:(1)person:存储所有人员的基础信息;(2)ill:存储每个人填报的疫情信息
定义了三个类:
- MainActivity类 打印主菜单,控制项目运行;
- JDBCTest类 连接数据库;
- operate类 包含显示所有人员信息、根据id和日期查询疫情信息、根据月份显示统计结果三个函数。
测试运行:
显示所有人员信息
查询某人某天疫情信息
统计疫情情况并用柱状图显示统计结果
代码展示:
1 //查询具体人员某天疫情信息 2 public void query(int id,String date) { 3 System.out.println(" 学号 姓名 是否接触患者 是否疑似 是否确诊 填写日期"); 4 String sql = "select * from ill where id ='" + id + "' and DATE_FORMAT(date,'%Y%m%d') = "+date; 5 Connection conn = JDBCTest.getConn(); 6 Statement state = null; 7 ResultSet rs = null; 8 9 try { 10 state = conn.createStatement(); 11 rs = state.executeQuery(sql); 12 while (rs.next()) { 13 String name = rs.getString("name"); //获取姓名 14 String contact = rs.getString("contact"); //获取是否接触患者 15 String doubt = rs.getString("doubt"); //获取是否 16 String confirm = rs.getString("confirm"); //获取是否确诊 17 18 System.out.println(id + " " + name + " " + contact + " " + doubt + " " + confirm + " " + date); 19 } 20 } catch (Exception e) { 21 e.printStackTrace(); 22 } finally { 23 JDBCTest.close(rs, state, conn); 24 } 25 }
展示PSP:
PSP2.1 | 任务内容 |
计划共完成需要的时间 (min) |
实际完成需要的时间 (min) |
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 710 | 790 |
Analysis | 需求分析(包括学习新技术) | 20 | 10 |
Design Spec | 生成设计文档 | 20 | 30 |
Ddsign Review | 设计复审(和同事审核设计文档) | 10 | 10 |
Coding Standard | 代码规范(为目前的开发指定合适的范围) | 30 | 20 |
Design | 具体设计 | 30 | 60 |
Coding | 具体编程 | 540 | 600 |
Code Review | 代码复审 | 30 | 40 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 20 |
Reporting | 报告 | 80 | 70 |
Test Report | 测试报告 | 30 | 20 |
Size Measurmen | 计算工作量 | 30 | 10 |
Postmortem & Process Improvement Plan |
事后总结,并提出过程改进计划 | 20 | 40 |
总结:
通过本次的项目设计,我认识到下定决心去做远没有想象中的复杂与困难。在看到实验要求的时候,没有思路没有想法,感觉这次的作业有很多的技术和知识都没有接触学习过,超出了我的能力范围很多。虽然设计过程与我而言仍是很艰辛,但是在这个过程中我也收获匪浅。
由于需要存储的数据过多,数据库中的数据不可能一一输入,是通过Excel导入的;连接数据库的代码是借鉴网上的,但由于安装的是最新的mysql,加密方式有所改变总是出错,也是费了好一番功法才得以解决的;对于时间类型的处理等……所有,在开发的过程中,遇到问题再去解决问题,而不能止步于开始前自己给自己的压力。
任务三 将项目源码的完整工程文件提交到Github的项目仓库中
上传成功,但第一次上传将整个项目上传了,由于对操作不够熟练导致上传了一些多余的文件。