项目 | 内容 |
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
我的课程学习目标 | (1)独立开发项目(2)掌握github的使用方法 |
这个作业在哪些方面帮助我实现学习目标 | 软件开发技能方面和github的使用方面 |
项目github的链接仓库地址 | https://github.com/JAVAWY/System |
- 2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。 值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。 为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
-
任务1:陈述学生疫情每日上报子系统使用体验
对于学校工作人员开发的“学生疫情每日上报子系统”,我的体验如下:首先一开始系统不是很稳定,可能是由于系统刚开发出来,加上使用人数过多的原因,但是过了几天基本解决了这个问题;其次是界面很整洁,没有其他花里胡哨的东西,填写起来比较方便;个人体验而言,刚开始希望增加一个每日提醒功能。 因为一开始经常会忘记,但是后面班长每天提醒大家填写,这个功能也就不再需要了;此外是后面每天填写时候,自动显示了最近几天的情况,是一个很人性化的功能,不用再每天重复填写;总体而言,学校的老师在很短的时间内可以开发出这款疫情上报子系统,已经是很不容易了。我们应该向老师们学习,在以后有需要的时候,可以贡献出自己的一-份力量。
-
任务2:开发学生疫情上报子系统
我选择第一类开发要求,要求如下:
有一个数据文件,保存了100天 2000 个教职工/学生的所有防疫信息,请设计一个命令行程序, 支持查询某人在某一天的疫情情况, 查询某种数据的周/月的疫统计情况,并用柱状图显示统计结果。
- 1.需求分析
随着2019年12月末新型冠状病毒感染的肺炎疫情不断蔓延,放假在家的学生健康状况变成了老师们关心的大问题。为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。本系统采用java语言进行设计,从Excel中获取数据,从而显示当前统计情况;此外可以从控制台录入信息,并进行查询以及删除。
- 2.功能设计
基础功能为:可以从Excel中读取存入的数据信息;支持查询某人某一天的状况,用柱状图显示相关数据;
扩展功能为:可以进行信息的提交,提交信息为学校疫情上报系统的部分信息,并且可以对信息进行删除、修改
- 3.设计实现
一开始的计划是用java和mysql实现,刚开始也是可以正常使用数据库。但在项目进行过程中,出现mysql和eclipse无法连接的情况下,找出问题所在用了挺长时间,但是还没有成功,应该需要重新安装……怕项目来不及完成就换成了在excel文件中存放数据,使用eclipse读取excel文件并在控制台显示数据。本项目由ExcelOperater和New两个类构成,其中Exceloeprater类用于读取excel文件数据并绘制柱状图,New类用于录入信息并进行修改和删除。由于数据库出了Bug,因此使用javaSE完成,因此用到的类也较少。
- 4.测试运行
主界面如下:
1.添加信息
2.查询信息
3.修改信息
如将学号为2034的学生所在地改为荆门市
修改后查询学号为2034学生的信息:
4.删除信息
5.从excel读入数据显示到控制台
6.柱状图显示:
- 关键代码:从excel读取数据
-
try { //构建Workbook对象, 只读Workbook对象 //直接从本地文件创建Workbook InputStream instream = new FileInputStream("E:/zhanhj/studysrc/jxl/getExcleinfo.xls"); readwb = Workbook.getWorkbook(instream); //Sheet的下标是从0开始 //获取第一张Sheet表 Sheet readsheet = readwb.getSheet(0); //获取Sheet表中所包含的总列数 int rsColumns = readsheet.getColumns(); //获取Sheet表中所包含的总行数 int rsRows = readsheet.getRows(); //获取指定单元格的对象引用 for (int i = 0; i < rsRows; i++) { for (int j = 0; j < rsColumns; j++) { Cell cell = readsheet.getCell(j, i); System.out.print(cell.getContents() + " "); } System.out.println(); } //利用已经创建的Excel工作薄,创建新的可写入的Excel工作薄 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File( "E:/zhanhj/studysrc/jxl/getExcleinfo.xls"), readwb); //读取第一张工作表 jxl.write.WritableSheet ws = wwb.getSheet(0); //获得第一个单元格对象 jxl.write.WritableCell wc = ws.getWritableCell(0, 0); //判断单元格的类型, 做出相应的转化 if (wc.getType() == CellType.LABEL) { Label l = (Label) wc; l.setString(" "+"学 生 疫 情 统 计 信 息 "); } //写入Excel对象 wwb.write(); wwb.close(); } catch (Exception e) { e.printStackTrace(); } finally { readwb.close(); }
- 6.小结
在实现项目的过程中,前期使用数据库进行,“模块化”方面,我认为除了一些必要的模块之外,应该尽量减少各个模块之间的依赖,这样有某个模块进行修改时不会大范围引起别的模块产生问题。像我第一次写的代码模块之间的依赖性太强,修改一个数据库中的数据就会经常造成所有数据都无法加载的情况;而在java代码的编写中,我也尽量实现分类编写的原则,相比写在一个模块中好修改一些。此外页面不美观,功能也没有完全实现。本来计划使用数据库可能结果会好一点,但是无奈数据库出了bug。目前只实现了可以查询某个同学一天的信息,没有实现根据日期查询数据。柱状图的显示也是另外一个表的数据,没有实现从原有excel读取数据并显示其柱状图……
- 7.PSP展示
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
30 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
30 |
30 |
Development |
开发 |
1000 |
1200 |
Analysis |
需求分析 (包括学习新技术) |
100 |
200 |
Design Spec |
生成设计文档 |
30 |
35 |
Design Review |
设计复审 (和同事审核设计文档) |
/ |
/ |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
200 |
220 |
Design |
具体设计 |
30 |
25 |
Coding |
具体编码 |
800 |
880 |
Code Review |
代码复审 |
50 |
40 |
Test |
测试(自我测试,修改代码,提交修改) |
30 |
40 |
Reporting |
报告 |
30 |
30 |
Test Report |
测试报告 |
10 |
10 |
Size Measurement |
计算工作量 |
20 |
20 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
25 |
25 |
总结反思:
对于本次项目,实现的功能有些简单,不够完善。一开始计划的是使用eclipse连接mysql读取数据,将读取到的数据绘制成柱状图显示,但设计好数据库后,和eclipse连接之后出现了问题,又在查找出数据库的问题上花费了很长时间。最后还是没有成功,可能我需要重新装一个mysql,甚至重装系统。因此为了能交上作业,我选择了比较简单的使用纯java做进行信息录入和删除以及修改,通过读取excel文件获得数据进行统计得到柱状图。整个过程中,对于之前java代码中的很多问题都不太记得,算是复习了一遍。此外,本次项目是第一次使用PSP模型,一开始可能觉得这个规划无关紧要,但在整个作业完成后,才发现它的作用之大。虽然项目可以运行。但还不完整,课后,我会重新使用mysql按照原来的方法试着开发,继续完成这个作业!
- 任务三:完成任务2项目开发,将项目源码的完整工程文件提交到本人注册Github账号的项目仓库中。