结对作业2

结对作业2-疫情可视化(编程实现)

这个作业属于 2020软工实践W班
这个作业要求在 作业要求
结对学号 221701333/221701340
作业目标 某次疫情可视化的实现
作业正文 如下
其他文献 <echarts教程,《构建之法》>
  • Notice:deline 2020-03-14 23:00

一. Git仓库仓库以及代码规范链接

Git仓库https://github.com/fzu-hhj/InfectStatisticWeb

代码规范:代码规范

二.成品展示

主要功能:

  • 显示疫情数据

    显示疫情数据

  • 显示全国地图

    中国地图

  • 悬浮显示省份数据

    悬浮显示

  • 全国疫情趋势图

    全国疫情趋势图

  • 点击查看省份具体数据

    具体省份数据

    具体省份趋势图

扩展功能:

  • 防疫热搜

    防疫热搜

  • 热搜谣言粉碎

    热搜谣言粉碎

  • 附近疫情场所

    附近疫情场所

二.结对过程描述

即刚开始拿到题目后,和队友怎么讨论,解决问题和查找资料的过程,并提供两人结对讨论的截图。。
刚拿到题目,我们思考的是通过什么工具实现原型的功能,选择有3个:纯前端(html与js),JAVAEE和php,最后考虑到前后端分离的优越性以及对JAVAEE有初步的理解,我们尝试使用JAVAEE来完成此次作业。
出现的第二个问题是git高级功能的使用,对此我们学习了Git的帮助手册
第三个问题是地图以及折线图的实现,考虑到老师给的建议echart,我们通过网络学习了echart创建地图和折线图。
最后是框架的搭建,我们参考了JAVAEE课老师给的示例程序,搭建了由领域对象层,DAO层,业务逻辑层,控制器层,表现层组成的JAVAEE架构。
中途我们还遇到了许多的小bug,通过互助都一一解决。



三.设计实现过程

给出功能结构图。

  • javaEE

四.代码说明

/确诊患者,疑似患者,治愈者,死亡者的父类/
public class PersonStatus {
public static String[] PROVINCE = {*****};

private String date;
private int[] num ;

public PersonStatus(String d , int[] n) {
date = d;
num = n ;
}

public String getDate() {
return date;
}
public int[] getNum() {
return num;
}
public void setDate(String date) {
this.date = date;
}
public void setNum(int[] n) {
this.num = n;
}

public int getNum(int i) {
return num[i];
}

public int getProNum(String name) {
for(int i = 0;i < PROVINCE.length;i++)
if(name.equals(PROVINCE[i]))
return i;
return -1;
}
//根据省名获得数据
public int getNum(String province) {
return num[getProNum(province)];
}
}

/DAO层获得数据库的数据/
public class IpDAOImpl implements IpDAO {

@Override
public List list(){
DBUtil dbUtil = new DBUtil();
List ips = new ArrayList();
try {
Connection conn = dbUtil.getConnection();
Statement stmt = conn.createStatement();
String sql = "select * from ip";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
int[] a = new int[35];
for(int i = 0;i < 35 ; i++) {
a[i] = rs.getInt(i+2);
}
Ip ip = new Ip(rs.getString("时间") , a);
ips.add(ip);
}
}catch (Exception e) {
e.printStackTrace();
}
return ips;
}

/折线图的Servlet,用DAO获得数据,传入请求的参数,然后将页面跳转到jsp/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
request.setCharacterEncoding("utf-8");
IpDAO ipDAO = new IpDAOImpl();
List ips = ipDAO.list();
SpDAO spDAO = new SpDAOImpl();
List sps = spDAO.list();
CureDAO cureDAO = new CureDAOImpl();
List cures = cureDAO.list();
DeadDAO deadDAO = new DeadDAOImpl();
List deads = deadDAO.list();
request.setAttribute("ips" , ips);
request.setAttribute("sps", sps);
request.setAttribute("cures", cures);
request.setAttribute("deads", deads);
request.setAttribute("province", getProvince());
request.getRequestDispatcher("LineChart.jsp").forward(request, response);
}

//负责显示各省数据的jsp页面
<%String province = (String)request.getAttribute("province");
Ip ip = (Ip)request.getAttribute("ip");
Sp sp = (Sp)request.getAttribute("sp");
Cure cure = (Cure)request.getAttribute("cure");
Dead dead = (Dead)request.getAttribute("dead");
%>





<!--下拉列表框--!>


<%=province %>



现有确诊


<%=ip.getNum(province)%>人



......
//别的标签





//制作地图的颜色深浅,悬浮高亮,点击跳转

//将数据库的数据以折线图显示

//将数据库的数据以折线图显示

五.心路历程与收获

+ 阅读心得
构建之法第四章中,对于合作开发,在本次作业中我们采用的前后端分离,我们在dev分支上进行开发,队友主要做后端的实现,
所以后端都有涉及,所以在代码之间还是经常有沟通,这次的合作开发使我门受益良多。
构建之法第五章讲的团队模式和开发流程,我相信在接下来的团队作业中,只要团队保持相同的目标,书中的理念将很好的体现出来。

+ 收获
这次作业一开始我是感觉题目太难了,挺多的东西之前都不太了解不能够在一周内完成,但是当我我想到一边学习使用新的工具,一边编程很可能是我就业初期的常态,
我就坚定了决心,结果发现虽然困难不少,但都能一一克服。由此我想我应该更加积极主动,在编程中尝试新的算法,工具,提高自己的学习能力;
在初步编程结束后,我在后继的完善中发现我们设计的不足,有很多的冗余的代码,部分的代码算法不够简洁精炼,类的设计不够完善,
一般类抽象为特殊类,继承,多态,这些对编程有好处的都较少使用。由此我想到我们应该在设计时花更多的功夫,设计好类的属性,方法,而不是走一步看一步

+ 对队友的评价
我的队友在这次工作中贡献更多,很认真负责。

posted @ 2020-03-14 20:52  古月淼  阅读(286)  评论(1)    收藏  举报