201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
作业要求 https://www.cnblogs.com/nwnu-daizh/p/12521474.html
课程学习目标 体验两人合作编程,完成结对编程项目
我的学习目标 掌握结对编程流程,熟悉使用Github协作开发程序的操作
结对方姓名 学号 范铂真 201771030105
结对方实验二博客链接 https://www.cnblogs.com/Februaryy/p/12504038.html
结对方实验二Github链接 https://github.com/Fan-bozhen/Expriment
结对方实验三博客链接 https://www.cnblogs.com/Februaryy/p/12574344.html
实验三Github的仓库链接 https://github.com/Wang-yuanz/--1

任务2: 两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价

2.1博客评论

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

2.2代码核查表

1.概要部分

根据《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码规范,代码符合需求和规格说明,代码设计考虑比较周全,代码的可读性很好,对类,方法还有变量都做了相关注释,经过对代码的每一行都执行并检查,我觉得代码比较容易维护。

2.设计规范部分

设计遵从已知的设计模式或项目中常用的模式,存在硬编码或字符,代码没有依赖于某一平台,不会影响将来的移植,没有无用的代码。

3.代码规范部分

修改的部分符合代码标准和风格

4.具体代码部分

有对错误进行处理,对于调用的外部函数,检查了返回值,参数传递无错误,字符串的长度是字节的长度,是以0开始计数,代码中没有发现Default,经测试代码不会出现死循环,没有使用断言(Assert),对资源都有一定的控制,不会导致资源泄露,数据结构中没有无用的元素。

5.效能

经检查,代码正确,并且功能基本都实现了,没有错误,系统和网络调用不会超时。

5.可读性

代码可读性较好,对类,方法和变量都进行了清晰的注释。

5.可测试性

代码不需要更新,可以用大量数据对代码进行测试。

2.3依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改

1.Fork对方仓库到自己的仓库

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

2.Clone对方仓库

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

3.Pull request

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

任务三:采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:

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

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

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

(4)人机交互界面要求GUI界面(WEB页面、APP页面都可);

(5)附加分功能:定时填报提醒

3.1需求分析

2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。

值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。

为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。在此基础上提供了高级查询,相对的可视化功能,定时功能以及导出到excel表中的功能。

我们小组内对于需求分析进行了研究,主要可以展示为以下几点:

1.疫情信息的收集则为疫情的上传,教职工和学生为一类用户,可以使用该系统进行疫情上传。

2.二级部门工作人员作为类似于管理员的角色,可以查看、汇总各类信息。

3.采用JSP进行页面设计

3.2软件设计说明

基本功能

1.用户注册

2.用户登录后进行疫情信息填报

3.工作人员可对用户信息和疫情上报信息进行查看,并支持高级查询,同时还有饼状图显示功能和根据搜索结果导出查询数据到EXCEL文件

系统功能

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

主要的类

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

设计说明

1.为了使得学生和工作人员功能分为两个不同的子系统,在数据库建库时,将权限分开。

2.工作人员可以查看学生信息,增删改查学生信息。查看疫情信息,增删查疫情信息。按照学院信息查看,并绘制饼状图。

3.学生登陆系统进行疫情上报。未注册学生登陆疫情统计系统则需要注册,首先申请疫情登陆权限,默认为学生,初始密码为111111进行注册,学生登录后可自行修改密码。

3.3 软件实现

1.数据存储

(1)用户信息表

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

(2)疫情统计表

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

2.主要代码

/**
 * 后台管理员类的方法
 *
 */
@Controller
@RequestMapping("/login")
public class AdminController {
	
	
	@Autowired
	AdminService adminService;
	
	@Autowired
	AdminMapper adminMapper;
	
    private Logger log = Logger.getLogger(AdminController.class);
   
    /**
     * 用户后台登录页面跳转
     * @return
     */
    @RequestMapping(value = "")
    public String loginindex(){
    	 log.info("进入首界面");
        return "login";
    }
    /**
     * 登录验证方法
     * @param request
     * @param session
     * @return
     */
    @RequestMapping(value = "/tologin")
    @ResponseBody
    public void tologin(HttpServletRequest request,HttpServletResponse response, String username,String password) throws IOException{
        log.info("开始登陆了");
        // 新建返回值对象
        @SuppressWarnings("unused")
		ModelAndView mv = new ModelAndView();
        response.setContentType("text/text;charset=utf-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter pw = response.getWriter();
        HttpSession session=request.getSession(true);
        // 组装对象
        Admin admin = new Admin();
        admin.setAdminuname(username);
        admin.setAdminpwd(password);

        // 查询
        Admin returnAdmin = adminService.getModelByUsernameAndPassword(admin);
        // 判断
        if(returnAdmin==null){
        	pw.write("0");
        }else{
        	session.setAttribute("admin",returnAdmin);
        	session.setAttribute("adminName", returnAdmin.getAdminuname());
        	pw.write(JSONUtil.bean2json(returnAdmin));
        }
        pw.close();
    }
    /**
     * 登陆成功后跳转
     * @return
     */
    @RequestMapping(value = "/main", method = RequestMethod.GET)
    @ResponseBody
    public ModelAndView loginMain(HttpServletRequest request){
    	 
         ModelAndView mv = new ModelAndView();
         Admin admin = SessionUtil.getAdmin();
         Integer adminrole = admin.getAdminrole();
        // 新建返回值对象
        mv.addObject("adminrole", adminrole);
//        mv.addObject("userId", userId);
        mv.addObject("userName", admin.getAdminuname());
        mv.setViewName("index");
        return mv;
    }

3.运行测试

登录界面

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

用户注册

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

用户可修改初始密码

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

用户上报疫情

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

工作人员管理

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

查找用户

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

修改用户信息

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

删除用户

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

添加用户

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

根据学院查找

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

导出excel

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

柱状图展示

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

3.4 结对交流及代码交互

通过微信聊天和语音来交流

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

代码交互

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

201771030126-王元宗 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告

3.5 PSP展示

PSP2.1 任务内容 计划需要完成的时间(hour) 实际需要完成的时间(hour)
Planning 计划 0.5 0.5
·Estimate 估计这个任务需要多少时间,并规划大致工作步骤 0.5 0.5
Development 开发 24.6 24.1
·Analysis 需求分析 (包括学习新技术) 0.8 0.5
·Design Spec 生成设计文档 0.5 1
·Design Review 设计复审 (和同事审核设计文档) 0.5 0.8
·Coding Standard 代码规范 (为目前的开发制定合适的规范) 0.3 0.3
·Design 具体设计 1 0.7
·Coding 具体编码 20 20
·Code Review 代码复审 1 0.7
·Test 测试(自我测试,修改代码,提交修改) 0.5 0.5
Reporting 报告 2 2
·Test Report 测试报告 1 0.8
·Size Measurement 计算工作量 0.5 0.6
· Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 0.5 0.6

3.6 项目总结

在这次项目实现中我们熟悉并掌握了结对编程的方法,对于问题“两人合作真的能够带来1+1>2的效果吗?”,我觉得这是肯定的,在我们遇到困难的时候,可以互相鼓励,不容易沮丧,在日常编程中,我们可以互相监督,不容易偷懒,还可以互相学习编程技巧,这样可以尽可能的减少错误的发生,但是也有一些小问题,比如:就某一问题发生分歧,但是利大于弊,我们可以及时交流,这样也就提高了项目的质量和开发效率,这是一次很有意义的开发经历,让我受益匪浅。