201271050130-滕江南 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12521474.html
我的课程学习目标 (1)熟练Github相关操作(2)整改代码BUG(3)协作分工完善系统功能
这个作业在哪些方面帮助我实现学习目标 (1)结对伙伴通过远程指导,处理了在Github操作问题 (2)掌握了数据库EXCEL导入导出功能(3)提升团队协作能力
结对方学号-姓名 201771010102-常惠琢
结对方本次博客作业链接 https://www.cnblogs.com/hongyanohongyan/p/12585173.html
本项目Github的仓库链接地址 https://github.com/banmianzhuang02/test3

任务一

概念 理解 页码
代码风格规范 主要是文字方面的规定,原则是:简明,易读,无二义性 P70
代码设计规范 主要是程序设计、模块之间的关系、设计模式 P75
代码复审 代码是否在代码规范的框架内正确解决问题 P79
结对编程 一对程序员肩并肩、平等地、互补地开发工作 P85

任务二

1、评论见结对方博客(https://www.cnblogs.com/hongyanohongyan/p/12400887.html#4532046)

2、复审结对方项目代码截图

3、代码核查表

核查项目 情况分析
概要部分 代码符合设计需求和规格,功能未能完全实现,可读性和安全性有待提高。建议统一代码的格式规范,优化功能性和安全性。
设计规范部分 能遵从设计模式,存在无用代码。建议:尽可能实现系统功能,删除无用代码。
代码规范部分 修改部分符合代码规范和风格。
具体代码部分 代码的错误均已处理,但数据库的安全性有待提高。建议:改善程序与数据库的连接方式,提高安全性能。
效能 代码能正常编译,无超时情况
可读性 代码可读性较强,但是注释不清晰。建议:增加代码的功能注释,统一格式。
可测试性 建议:代码可增添新的单元测试。

4、日志数据

任务三

1、需求分析

  2019 年 12 月,武汉发生新型冠状病毒(2019-nCoV)疫情,为阻止疫情进一步蔓延,中国政府于2020 年 1 月 23 日对武汉采取了隔离措施,包括北京、上海等 31个省市也相继实施了严格的防控措施。
                                      
  当前,疫情防控工作到了最吃劲的关键阶段。为准确高 效采集和统计全校师生员工新冠肺炎疫情防控相关信息,进一步夯实疫情防控工作基础,坚决打赢校园疫情防控阻击战,学校组织力量开发了师生健康打卡系统。
                                    ----引用自《关于试运行西北师范大学师生健康打卡系统的通知》

  学校教职工、学生分布范围较广,使得采集的疫情数据复杂,难度较大。通过系统构建的上报平台,将数据整合,然后进行统计分析,为进一步掌握学校疫情情况提供科学依据。数据是平台的血液,动态的数据现时更新才能体现平台的生命力。用户通过系统客户端界面填写相关信息,与此同时后台数据库同步更新,并将其存储起来,进行统计分析。后台通过数据整合,可进行筛选排查,生成相应图表,优化疫情数据的可视性。

功能需求:

(1)可采集全校各类师生员工疫情信息;

(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;

(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;

(4)人机交互界面要求GUI界面;

2、软件设计说明

Gui界面生成类 后台数据的增删改查类 图表生成类 实体类
作用 根据需求生成相对应的GUI界面 实现对数据库中的数据根据需要进行处理 根据后台的数据生成对应的柱状图 见github

3、设计分析

核心功能 设计分析
关系 GUI界面根据用户的需求对后台数据的增删改查类进行显示  图表生成类,根据后台的数据类查询的数据进行柱状图的显示
CommFrame类内的重要方法 CommFrame类中的actionPerformed方法将数据再GUI界面进行显示
类内的重要方法 JPanel有一个继承的方法add将指定的约束对象将组件添加到此容器的布局中                        Execute_*方法完成对后台数据的增删改查                                  Query.getAllInfo()方法完成对后台数据的查询并生成对应的柱状图

4、核心代码及功能界面

` package Test3;
import java.awt.Font;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;

public class JFreeChartTest2 extends ApplicationFrame
{
    public JFreeChartTest2(String title,int num1,int num2,int num3,int num4,int num5)
    {
        super(title);
        this.setContentPane(createPanel(num1,num2,num3,num4,num5)); //构造函数中自动创建Java的panel面板
    }

    public static CategoryDataset createDataset(int num1,int num2,int num3,int num4,int num5) {//创建柱状图数据集
        DefaultCategoryDataset dataset=new DefaultCategoryDataset();
        dataset.setValue(num1,"密切接触","密切接触");
        dataset.setValue(num2,"在武汉","在武汉");
        dataset.setValue(num3,"在湖北","在湖北");
        dataset.setValue(num4,"疑似","疑似");
        dataset.setValue(num5,"确诊","确诊");
    
        return dataset;
    }

    public static JFreeChart createChart(CategoryDataset dataset) //用数据集创建一个图表
    {
        JFreeChart chart=ChartFactory.createBarChart("hi", "人员分布", 
                "人员数量", dataset, PlotOrientation.VERTICAL, true, true, false); //创建一个JFreeChart
        chart.setTitle(new TextTitle("疫情状况",new Font("宋体",Font.BOLD+Font.ITALIC,20)));//可以重新设置标题,替换“hi”标题
        CategoryPlot plot=(CategoryPlot)chart.getPlot();//获得图标中间部分,即plot
        CategoryAxis categoryAxis=plot.getDomainAxis();//获得横坐标
        categoryAxis.setLabelFont(new Font("微软雅黑",Font.BOLD,12));//设置横坐标字体
        return chart;
    }

    public static JPanel createPanel(int num1,int num2,int num3,int num4,int num5)
    {
        JFreeChart chart =createChart(createDataset(num1,num2,num3,num4,num5));
        return new ChartPanel(chart); //将chart对象放入Panel面板中去,ChartPanel类已继承Jpanel
    }

    public static void picture(int num1,int num2,int num3,int num4,int num5)
    {
        JFreeChartTest2 chart=new JFreeChartTest2("疫情柱状图",num1,num2,num3,num4,num5);
        chart.pack();//以合适的大小显示
        chart.setVisible(true);
    
    }
}`

登陆成功

未填报信息

已填报信息

通过学号查询

通过姓名查询

柱状图的生成

5、QQ截图

6、PSP

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

7、小结感受:

  先来一片面包, 做好铺垫, 例如可以从双方的共同点, 团队共同的愿景讲起, 让对方觉得处于一个安全的环境。
  再把肉放上,这时就可以把 建设性的意见 (constructive feedback) 油炸好, 加上生菜, 佐料等。怎么准备这块肉也有讲究:
  我们常说 [feedback], 但是在提供反馈时, 不宜完全沉溺于过去的陈年谷子烂芝麻,给别人做评价, 下结论。这样会造成一种 [你就是做得不好, 我恨你] 的情绪。我们可以调整一个角度, 把 [feedback], 变成 [feedforward], 强调 [过去你做得不够, 但是我们以后可以做得更好]在技术团队里, 我们的反馈还是要着重于 [行为和后果] 这一层面, 不要贸然深入到 [习惯和动机], [本质]. 除非情况非常严峻, 需要触动别人内心深处, 让别人悬崖勒马。
  然后再来一片面包, 盖上。 这时候可以呼应开头, 鼓励对方把工作做好。    ----引用自《构建之法——现代软件工程》邹欣

  俗话说“三个臭皮匠,顶个诸葛亮”,我十分认可两个合作能够带来1+1>2的效果。在上周的作业中,助教给我指出Github程序代码上传存在问题,课后我就重新上传代码,但是在过程中老是出现问题无法实现。在结对后, 我第一个时间就向小伙伴寻求帮助,重新上传代码才进行下一步的实验。小伙伴远程指导帮我解决了在系统使用上的问题,虽然花了两个晚上的时间导致进度慢了一点,但是我学会了Git Bash的操作,也算是多学习了一门技术操作。与其说和小伙伴结对,倒不如说她是我的小老师,帮我解决在软件操作、代码编程等问题。两个人结对更有计划性,提前制定好安排,每天晚上六点向对方汇报任务情况有问题的地方再一起解决,当然主要是解决我的问题。两个人结对更有鞭策性,因为你不是一个人,两个人有商有量,哪里做的不好可以改进,哪里可以更好提出建议。由于我们在前期使用的软件程序上版本不同,这次的实验主要是按照要求在常惠琢做的第二次实验上进行改进完善。虽然在编程代码上能出的力比较少,但是在过程中学习了数据库连接、GUI界面,收获很大。同时在使用汉堡包法实施项目结对中两个人的沟通,增进了彼此的信任,能够互相理解互相鼓励。两个人之间只有有效沟通才能更有效的完成工作。本次结对我认为非常愉快!

posted @ 2020-03-27 19:18  滕江南  阅读(203)  评论(1编辑  收藏  举报