201771030113-李志龙 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12521474.html
我的课程学习目标 练习并掌握两个人结对下的项目开发
这个作业在哪些方面帮助我实现学习目标 更好的了解并学习结对编程的优缺点
结对方学号-姓名 201771030114-马强
结对方本次博客作业链接 https://www.cnblogs.com/AlexCrizs/p/12587824.html
本项目github的仓库地址 https://github.com/lizhilong12/yiqing2.0

实验目的与要求

  • (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
  • (2)掌握Github协作开发程序的操作方法。

任务二:

符合要求的代码核查表

  • 概要部分
    • 代码符合需求和规格说明吗? 答:代码符合需求,但是在没有代码规范说明。
    • 代码设计是否考虑全面? 答:代码设计稍有欠缺,就是在数据统计这一块。
    • 代码可读性怎样? 答:代码的可读性较差,有些变量的命名没有做到见文知意的效果。
    • 代码容易维护吗? 答:代码量不大,较容易维护。
    • 代码的每一行都执行并检查过了吗? 答:是的,都检查过了。
  • 设计规范部分
    • 设计是否遵从已知的设计模式或项目中常用的模式? 答:是的,遵从
    • 有没有硬编码或字符串/数字等存在? 答:没有
    • 代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64) 答:没有依赖,没有影响
    • 开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? 答:可以实现,不存在
    • 有没有无用的代码可以清除?(很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件中有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码。) 答:有,已清除
  • 代码规范部分
    • 修改的部分符合代码标准和风格么(详细条文略)? 答:符合代码标准
  • 具体代码部分
    • 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? 答:有对错误进行处理,检查了返回值和异常。
    • 参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数? 答:参数传递没有错误,字符串的长度是字节的长度,以0开始计数。
    • 循环有没有可能出现死循环? 答:不会出现死循环
    • 有没有使用断言(Assert)来保证我们认为不变的条件真的满足? 答:没有使用
    • 数据结构中是否有无用的元素? 答:检查过之后,其中有部分存在无用元素,已做处理。
  • 效能
    • 代码的效能(Performance)如何?最坏的情况是怎样的?答:效能一般,最差情况是访问速度很慢
    • 代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)?答:有,不过能力不够,只能做到这一步。
    • 对于系统和网络调用是否会超时?如何处理? 答:应该是测试的次数不够,没有出现过超时现象。
  • 可读性
    • 代码可读性如何?有没有足够的注释? 答:代码的可读性还行,有部分注释。
  • 可测试性
    • 代码是否需要更新或创建新的单元测试?还可以有针对特定领域开发(如数据库、网页、多线程等)的核查表 答:不需要。
  • 依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
    克隆结对方的项目

    对对方的项目进行push,pull requests等操作

Merge pull request的操作

任务三:

  • 需求分析:

    • 2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施。
    • 在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。
    • 要求是实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
    • 本项目采用web页面实现对疫情的上报,并用MySQL数据库对数据进行统计。
  • 功能设计

    • 可采集全校各类师生员工疫情信息;
    • 各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
    • 学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
    • 附加分功能未实现。
  • 流程图

  • 设计实现

    • 登陆界面

    • 数据库文件

    • 登录成功之后填报界面

    • 查询界面

    • 统计柱状图界面

    • 导出excel表的截图

  • 核心代码部分:

public class BarChart2 {
   ChartPanel frame1;

   public BarChart2() {
   	CategoryDataset dataset = getDataSet();// 将获得的数据传递给CategoryDataset类的对象
   	JFreeChart chart1 = ChartFactory.createBarChart3D("当天疫情疑似症状的人数统计", // 图表标题
   			"分类", // 目录轴的显示标签
   			"人数", // 数值轴的显示标签
   			dataset, // 数据集
   			PlotOrientation.VERTICAL, // 图表方向:水平、垂直
   			true, // 是否显示图例(对于简单的柱状图必须是false)
   			false, // 是否生成工具
   			false // 是否生成URL链接
   			
   	);
   	chart1.setBackgroundPaint(new Color(10, 50, 100));
   	CategoryPlot plot = chart1.getCategoryPlot();// 获取图表区域对象
   	plot.setBackgroundPaint(new Color(10, 50, 100)); 		
   	CategoryAxis domainAxis = plot.getDomainAxis(); // 水平底部列表
   	domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 14)); // 水平底部标题
   	domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12)); // 垂直标题	
   	domainAxis.setLabelPaint(Color.white);
   	domainAxis.setTickLabelPaint(Color.white);	
   	ValueAxis rangeAxis = plot.getRangeAxis();// 获取柱状
   	rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 15));
   	rangeAxis.setLabelPaint(Color.white);// 设置颜色
   	chart1.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));
   	chart1.getTitle().setFont(new Font("宋体", Font.BOLD, 20));// 设置标题字体
   	chart1.getLegend().setBackgroundPaint(Color.white);
   	chart1.getTitle().setBackgroundPaint(Color.white);// 设置颜色	
   	frame1 = new ChartPanel(chart1, true); // 这里也可以用chartFrame,可以直接生成一个独立的Frame
   	frame1.setVisible(true);
   }
  • 两人合作所沟通的截图:



总结

本次实验的复杂程度要比上次实验难的多,但是通过两个人的结对,解决问题的手段更多了,同时也深刻地体会到了1+1>2的效果。较前一次项目,这次学到好多东西,尤其是软件工程这门课程的
知识。还有就是本次实验在GitHub上面的操作有点复杂,但是通过两个人的通力合作,也都解决掉了。总的来说这次实验的收获颇丰,希望以后能够保持这种节奏,努力做出更好的东西。

PSP

PSP 任务内容 计划共需的时间(min) 实际所需的时间(min)
planning 计划 30 20
Estimate 估计这个任务所需时间,并作规划 30 40
Development 开发 600 800
Analysis 需求分析 300 240
Design Spec 生成设计文档 30 30
Design Review 设计复审(和同事审核设计文档) 60 90
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 20
Design 具体设计 200 150
Coding 具体编码 400 450
Code Review 代码复审 150 200
Test 测试 50 100
Reporting 报告 50 65
Test Report 测试报告 30 35
Size Measurement 计算工作量 20 20
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 10 15
原文地址:https://www.cnblogs.com/zhilong12/p/12573950.html