项目 | 内容 |
---|---|
课程班级博客连接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
这个做业要求连接 | http://www.javashuo.com/article/p-zkvgqdwq-mk.html |
个人课程学习目标 | (1)体验软件项目开发中的两人合做,练习结对编程(Pair programming); (2)掌握Github协做开发程序的操做方法。 |
这个做业在哪些方面帮助我实现课程目标 | 汉堡包法的沟通方式让咱们更准确地了解到对方的观点和理由,让结对编程过程更加有趣。 |
结对方学号-姓名 | 王之泰-201771010131 |
结对方本次博客做业连接 | http://www.javashuo.com/article/p-yajscchd-ns.html |
本项目Github的仓库连接地址 | https://github.com/YHwzt/Query-system-web |
概要部分
(1)代码符合需求和规格说明么?
答:符合需求与规格。
(2)代码设计是否有周全考虑?
答:周全。
(3)代码可读性如何?
答:易读,备注很详细。
(4)代码容易维护么?
答:容易。
(5)代码的每一行都执行并检查过了吗?
答:检查部分。
设计规范部分
(1)设计是否听从已知的设计模式或项目中经常使用的模式?
答:是。
(2)有没有硬编码或字符串/数字等存在?
答:有。
(3)代码有没有依赖于某一平台,是否会影响未来的移植(如Win32到Win64)
答:没有依赖,不会影响。
(4)开发者新写的代码可否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在相似的功能能够调用而不用所有从新实现?
答:能够实现,不存在。
(5)有没有无用的代码能够清除?
答:基本没有。
代码规范部分
(1)修改的部分符合代码标准和风格么?
答:符合。
具体代码部分
(1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
答:查阅资料并讨论之后处理完成,检查并处理了。
(2)参数传递有无错误,字符串的长度是字节的长度仍是字符的长度,是以0开始计数仍是以1开始计数?
答:没有错误,字符串的长度是字节的长度,是以0开始计数。
(3)有没有可能出现死循环?
答:没有出现死循环。
(4)有没有使用断言(Assert)来保证咱们认为不变的条件真的知足?
答:没有使用。
(5)对资源的利用,是在哪里申请,在哪里释放的?有没有可能致使资源泄露?
答:资源是在网上找到的,不会致使资源泄漏。
(6)数据结构中是否有无用的元素?
答:没有无用的元素。
效能
(1)代码的效能(Performance)如何?最坏的状况是怎样的?
答:代码简洁易懂,程序运行正常,功能齐全。
(2)代码中,特别是循环中是否有明显可优化的部分?
答:代码在以前基础上已经作过优化处理,目前没有明显可优化部分。
(3)对于系统和网络调用是否会超时?如何处理?
答:不会。
可读性
代码可读性如何?有没有足够的注释?
答:代码注释详细,可读性强。
可测试性
代码是否须要更新或建立新的单元测试?
答:目前不须要。html
-- 核查表模板引用自《构建之法-现代软件工程》git
要求设计开发一款符合我校疫情防控工做需求的信息系统,使之具备如下功能:github
(1)可采集全校各种师生员工疫情信息;web
(2)各二级部门疫情防控工做负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;数据库
(3)学校防控办指定负责人登陆《西北师范大学疫情防控信息统计》子系统,可浏览全部人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展现各学院已填报和未填报学生统计状况和关键疫情数据统计状况,可【导出】查询列表的EXCEL文件;编程
(4)人机交互界面要求GUI界面(WEB页面、APP页面均可);windows
(5)附加分功能:定时填报提醒。设计模式
咱们团队认为,需求分析就是剖析客户棱模两可的需求,将其细致化,可实行化。据整体需求来看,咱们发现该项目要求有三类人,第一类人只具备填报功能,第二类人可以进行各自范围的查看汇总,而第三类人则至关因而一个“全能”的人。因此在数据库中咱们将各种角色设计为一张表,将疫情信息设计为一张表,一共两张表。微信
第一个功能,要求能采集全校学生/教职工的疫情信息。咱们将其抽象为第一类人,具体应该为设计能填写包含一些我的疫情相关信息的表单并将其提交给后台。除此以外应该不具备查看修改(除了本身填写的信息)等功能。网络
第二个功能,要求各二级部门疫情防控工做负责人可查看本部门人员疫情汇总,并可以进行多属性组合查询和可视化统计功能。这个需求的角色也就是咱们抽象化的第二类人,该类角色不可以进行增删改等功能,即只能查看汇总和数据可视化,就现实生活来看该类角色至关于一个汇总人员,考虑到数据真实性等因素,该类角色没有删除增长的权限。
第三个功能,要求学校负责人登陆子系统,可浏览全部人员填报汇总数据清单,可进行数据组合筛选查询,以图形化方式展现各学院已填报和未填报学生统计状况和关键疫情数据统计状况,可【导出】查询列表的EXCEL文件。这个角色也就是第三类人,该角色除了可以进行增删查改等功能外,还能导出表格,以及对数据进行可视化分析。
第四个功能,人机交互界面要求采用GUI,这个不难实现,可采用app和web等多种多样的页面实现
附加功能,这个功能,我和同伴讨论了好些时间,由于形式多种多样,他以为这个功能没有必要,由于若是足够重视这件事的话,忘记的可能性实际上是很小的,并且基本每一个人都有手机,手机上最基础的一个功能就是闹铃,本身设置个闹钟,方便了开发者也能够提醒本身。而我认为这个功能仍是有必要的,好比本身没有设置闹钟,在忙其余事情的时候忘记了填写时间,因此咱们最终仍是决定选择一种形式提醒一下填报人员。咱们构思了不少种方法,例如:经过用微信公众号作一个天天的定时提醒填报等等,但最后咱们选择的是采用邮件提醒的方式,定时给用户发送一个填报提醒。
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采起了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工做;在全国范围内调配口罩、防御服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其余省份调集物资保障武汉市民平常生活。
值得一提的是,中国互联网企业在这次疫情防控中发挥了社会治理方面的重要做用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减小发热病人之间的相互交叉感染具备重要的做用,患者在家经过互联网向在线医生问诊,减小了病毒传播或感染的风险;谣言粉碎对于公众采起理性态度看待疫情的发展具备重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具备重要做用。此外,还有新型肺炎确诊患者同行程查询工具,用户只须要输入本身所乘坐交通工具的时间和班次,就能够确认是否与被确诊感染者同行,提早作好自我隔离和就诊工做。在疫情防控中,中国互联网企业不只发展壮大,在承担社会责任方面也愈来愈成熟。
为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各种人员基本状况、所在区域及活动轨迹及健康情况的信息收集。师生经过我校企业微信服务大厅访问该系统进行远程信息填报。
(1)设计三级注册登陆功能,并对每一个级别用户作出功能使用的限制。 (2)系统主要有注册模块,登陆模块,填报模块,查询模块,导出模块,提醒模块六大块构成。 (3)接口设计 1)外部接口 用户界面: 在界面设计上,采用简单明了,易于操做的原则,突出的显示重要信息。 软件与硬件接口: 本系统设有GUI界面,考虑到操做简单, 易于管理方面,主要硬件接口设备为PC,鼠标,键盘。而软件接口主要以 windows 平台为基本平台。 2)内部各模块之间相互独立又彼此关联,主要经过方法调用实现各部分的链接。 (4)数据结构设计 设计两张结构表:用户信息表和疫情信息表。
(1)可采集疫情信息;
(2)各二级角色可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)三级角色,可浏览全部人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展现各学院已填报和未填报学生统计状况和关键疫情数据统计状况,可【导出】查询列表的EXCEL文件;
(4)人机交互界面要求GUI界面(WEB页面、APP页面均可);
(5)定时填报提醒功能。
定义用户类(User),声明私有变量private的序号(id),姓名(username),密码(Password),用户类型(type),和封装各自属性的方法:set(),get(),由于属性私有,不可直接访问,例如id在外边不可直接设置,可经过setId方法来设置id的值,getId获取id的值。
定义信息类(virus),声明私有变量学院(college),班级(myclass),填报日期(startdate),姓名(username),联系电话(tel),省(province),市(city),区(areas),留学生(ischinesestudent),武汉学生(iswuhanstudent),湖北学生(ishubeistudent),14天接触(is14contact),在武汉(isinwuhan),在湖北(isinhubei),今天返校(istodayformother),疑似(islikevirus),确诊(isconfirmvirus)。
beans类为Javabean类,config配置类,mapper为dao类,service服务类,每类只负责一项职责,每一个方法完成一个计算,程序逻辑简单,对类有较高的可读性。设计接口时,给每个接口按必定比例设计分配方法,减小代码冗余。且高层模块不依赖低层模块。
/** * 将数据写入到excel中 */ public static void makeExcel(List<List<String>> result,String[] tittle) { try { // 建立一个workbook对应一个excel文件 HSSFWorkbook workbook = new HSSFWorkbook(); // 在workbook中建立一个sheet对应excel中的sheet HSSFSheet sheet = workbook.createSheet("病例日期表"); // 在sheet表中添加表头第0行,旧版本poi对sheet的行列有限制 HSSFRow row = sheet.createRow(0); // 建立单元格,设置表头 HSSFCell cell = null; for (int i = 0; i < tittle.length; i++) { cell = row.createCell(i); cell.setCellValue(tittle[i]); } // 写入数据 for (int i = 0; i < result.size(); i++) { List<String> oneData = result.get(i); HSSFRow row1 = sheet.createRow(i + 1); //建立单元格设值 for (int j = 0; j < oneData.size(); j++) { row1.createCell(j).setCellValue(oneData.get(j)); } } //将文件保存到指定的位置 FileOutputStream fos = new FileOutputStream("D:\\result.xls"); workbook.write(fos); System.out.println("写入成功"); fos.close(); } catch (Exception e) { e.printStackTrace(); } }
基本功能
(4)人机交互界面要求GUI界面
WEB页面
附加功能
PSP2.1 | 内容 | 计划完成须要的时间(min) | 实际完成须要的时间(min) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
Estimate | 估计这个任务须要多少时间,并规划大体工做步骤 | 30 | 40 |
Development | 开发 | 1100 | 1330 |
Analysis | 需求分析 (包括学习新技术) | 60 | 180 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 (和同事审核设计文档) | 60 | 50 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 40 |
Design | 具体设计 | 240 | 200 |
Coding | 具体编码 | 500 | 600 |
Code Review | 代码复审 | 60 | 50 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 180 |
Reporting | 报告 | 120 | 180 |
Test Report | 测试报告 | 40 | 60 |
Size Measurement | 计算工做量 | 40 | 30 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 40 | 90 |
这是我第二次以结对编程的形式来完成项目,相比于第一次结对编程带给个人新鲜感,此次结对编程给我带来了不少收获,不只学会了如何更好地和同伴去沟通交流,还学会了不少新知识。我本身的编程能力和知识储备都比较差,在结对编程中,我发现个人同伴不只对基础知识掌握牢固,并且动手能力强,不少时候都是在他的引导下,项目一步步实现,他身上有不少值得我学习的地方。 对于“两人合做是否真的可以带来1+1>2的效果”这个问题,我经过本次的结对编程认为:两我的合做完成一个项目,要比起本身单独去完成效果好不少,不只会减轻双方的工做量,并且每一个人对于同一个事物都会有不一样的想法,在沟通和交流以后,每每最后呈现的是两我的好的想法的集合体。而且每一个人擅长的地方不同,在合做中,能够最大化发挥本身的优势,同时也能够从对方身上学到不少本身不擅长的技术。